diff --git a/docs/harfbuzz-sections.txt b/docs/harfbuzz-sections.txt index f034a2143..3de0a09bd 100644 --- a/docs/harfbuzz-sections.txt +++ b/docs/harfbuzz-sections.txt @@ -361,6 +361,7 @@ hb_coretext_font_set_funcs
hb-directwrite hb_directwrite_face_create +hb_directwrite_face_create_from_file_or_fail hb_directwrite_face_create_from_blob_or_fail hb_directwrite_face_get_dw_font_face hb_directwrite_font_create diff --git a/src/hb-directwrite.cc b/src/hb-directwrite.cc index 710bee477..4683f651d 100644 --- a/src/hb-directwrite.cc +++ b/src/hb-directwrite.cc @@ -1026,6 +1026,33 @@ hb_directwrite_face_create (IDWriteFontFace *dw_face) _hb_directwrite_face_release); } +/** + * hb_directwrite_face_create_from_file_or_fail: + * @file_name: A font filename + * @index: The index of the face within the file + * + * Creates an #hb_face_t face object from the specified + * font file and face index. + * + * This is similar in functionality to hb_face_create_from_file_or_fail(), + * but uses the DirectWrite library for loading the font file. + * + * Return value: (transfer full): The new face object, or `NULL` if + * no face is found at the specified index or the file cannot be read. + * + * XSince: REPLACEME + */ +hb_face_t * +hb_directwrite_face_create_from_file_or_fail (const char *file_name, + unsigned int index) +{ + auto *blob = hb_blob_create_from_file_or_fail (file_name); + if (unlikely (!blob)) + return nullptr; + + return hb_directwrite_face_create_from_blob_or_fail (blob, index); +} + /** * hb_directwrite_face_create_from_blob_or_fail: * @blob: A blob containing the font data diff --git a/src/hb-directwrite.h b/src/hb-directwrite.h index 2e9c34582..a21116464 100644 --- a/src/hb-directwrite.h +++ b/src/hb-directwrite.h @@ -34,6 +34,10 @@ HB_BEGIN_DECLS HB_EXTERN hb_face_t * hb_directwrite_face_create (IDWriteFontFace *dw_face); +HB_EXTERN hb_face_t * +hb_directwrite_face_create_from_file_or_fail (const char *file_name, + unsigned int index); + HB_EXTERN hb_face_t * hb_directwrite_face_create_from_blob_or_fail (hb_blob_t *blob, unsigned int index); diff --git a/src/hb-face.cc b/src/hb-face.cc index 8c870cac8..6f593fdf4 100644 --- a/src/hb-face.cc +++ b/src/hb-face.cc @@ -357,7 +357,7 @@ static struct supported_face_loaders_t { #endif #ifdef HAVE_DIRECTWRITE {"directwrite", - nullptr, //hb_directwrite_face_create_from_file_or_fail, + hb_directwrite_face_create_from_file_or_fail, hb_directwrite_face_create_from_blob_or_fail }, #endif