static hb_font_funcs_t * _get_font_funcs(void) { static hb_font_funcs_t* funcs = hb_font_funcs_create(); hb_font_funcs_set_glyph_func (funcs, _get_glyph, NULL, NULL); hb_font_funcs_set_glyph_h_advance_func (funcs, _get_glyph_h_advance, NULL, NULL); hb_font_funcs_set_glyph_v_advance_func (funcs, _get_glyph_v_advance, NULL, NULL); hb_font_funcs_set_glyph_h_origin_func (funcs, _get_glyph_h_origin, NULL, NULL); hb_font_funcs_set_glyph_v_origin_func (funcs, _get_glyph_v_origin, NULL, NULL); hb_font_funcs_set_glyph_h_kerning_func (funcs, _get_glyph_h_kerning, NULL, NULL); hb_font_funcs_set_glyph_v_kerning_func (funcs, _get_glyph_v_kerning, NULL, NULL); hb_font_funcs_set_glyph_extents_func (funcs, _get_glyph_extents, NULL, NULL); hb_font_funcs_set_glyph_contour_point_func (funcs, _get_glyph_contour_point, NULL, NULL); hb_font_funcs_set_glyph_name_func (funcs, _get_glyph_name, NULL, NULL); return funcs; }
static hb_font_funcs_t* harfBuzzSkiaGetFontFuncs() { static hb_font_funcs_t* harfBuzzSkiaFontFuncs = 0; // We don't set callback functions which we can't support. // HarfBuzz will use the fallback implementation if they aren't set. if (!harfBuzzSkiaFontFuncs) { harfBuzzSkiaFontFuncs = hb_font_funcs_create(); hb_font_funcs_set_glyph_func(harfBuzzSkiaFontFuncs, harfBuzzGetGlyph, 0, 0); hb_font_funcs_set_glyph_h_advance_func(harfBuzzSkiaFontFuncs, harfBuzzGetGlyphHorizontalAdvance, 0, 0); hb_font_funcs_set_glyph_h_kerning_func(harfBuzzSkiaFontFuncs, harfBuzzGetGlyphHorizontalKerning, 0, 0); hb_font_funcs_set_glyph_h_origin_func(harfBuzzSkiaFontFuncs, harfBuzzGetGlyphHorizontalOrigin, 0, 0); hb_font_funcs_set_glyph_v_kerning_func(harfBuzzSkiaFontFuncs, harfBuzzGetGlyphVerticalKerning, 0, 0); hb_font_funcs_set_glyph_extents_func(harfBuzzSkiaFontFuncs, harfBuzzGetGlyphExtents, 0, 0); hb_font_funcs_make_immutable(harfBuzzSkiaFontFuncs); } return harfBuzzSkiaFontFuncs; }