30#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
39ft_hb_ft_reference_table (hb_face_t *face, hb_tag_t tag,
void *user_data)
41 AF_FaceGlobals globals = (AF_FaceGlobals) user_data;
43 FT_Face ft_face = globals->face;
52 error = FT_Load_Sfnt_Table (ft_face, tag, 0, NULL, &length);
56 buffer = (FT_Byte *) ft_smalloc (length);
60 error = FT_Load_Sfnt_Table (ft_face, tag, 0, buffer, &length);
67 return hb(blob_create) ((
const char *) buffer, length,
68 HB_MEMORY_MODE_WRITABLE,
73ft_hb_ft_face_create (AF_FaceGlobals globals)
75 FT_Face ft_face = globals->face;
79 if (!ft_face->stream->read) {
82 blob = hb(blob_create) ((
const char *) ft_face->stream->base,
83 (
unsigned int) ft_face->stream->size,
84 HB_MEMORY_MODE_READONLY,
86 face = hb(face_create) (blob, ft_face->face_index);
87 hb(blob_destroy) (blob);
89 face = hb(face_create_for_tables) (ft_hb_ft_reference_table, globals, NULL);
92 hb(face_set_index) (face, ft_face->face_index);
93 hb(face_set_upem) (face, ft_face->units_per_EM);
98FT_LOCAL_DEF(hb_font_t *)
99ft_hb_ft_font_create (AF_FaceGlobals globals)
104 face = ft_hb_ft_face_create (globals);
105 font = hb(font_create) (face);
106 hb(face_destroy) (face);
113typedef int ft_hb_ft_dummy_;