summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-05-24 16:25:03 +0000
committerMatthias Clasen <mclasen@redhat.com>2019-07-12 09:04:21 -0400
commitf5e3a25a863aa4411c5b57ac45d93585e253f6fb (patch)
tree9d2fa4689228e5631f68fb0a0d27df07da525672
parent1dd09dde6600600efc110fa8cc80c055394d3b99 (diff)
downloadpango-f5e3a25a863aa4411c5b57ac45d93585e253f6fb.tar.gz
fc: Use harfbuzz for glyph lookup
We don't need our own caching here.
-rw-r--r--pango/pangofc-font.c46
1 files changed, 4 insertions, 42 deletions
diff --git a/pango/pangofc-font.c b/pango/pangofc-font.c
index 698a0eef..8ecd7574 100644
--- a/pango/pangofc-font.c
+++ b/pango/pangofc-font.c
@@ -664,50 +664,12 @@ static guint
pango_fc_font_real_get_glyph (PangoFcFont *font,
gunichar wc)
{
- PangoFcFontPrivate *priv = font->priv;
- FT_Face face;
- FT_UInt index;
-
- guint idx;
- PangoFcCmapCacheEntry *entry;
-
-
- if (G_UNLIKELY (priv->cmap_cache == NULL))
- {
- PangoFcFontMap *fontmap = g_weak_ref_get ((GWeakRef *) &font->fontmap);
- if (G_UNLIKELY (!fontmap))
- return 0;
-
- priv->cmap_cache = _pango_fc_font_map_get_cmap_cache (fontmap, font);
-
- g_object_unref (fontmap);
+ hb_font_t *hb_font = pango_font_get_hb_font (PANGO_FONT (font));
+ hb_codepoint_t glyph = PANGO_GET_UNKNOWN_GLYPH (wc);
- if (G_UNLIKELY (!priv->cmap_cache))
- return 0;
- }
-
- idx = wc & CMAP_CACHE_MASK;
- entry = priv->cmap_cache->entries + idx;
-
- if (entry->ch != wc)
- {
- face = PANGO_FC_FONT_LOCK_FACE (font);
- if (G_LIKELY (face))
- {
- index = FcFreeTypeCharIndex (face, wc);
- if (index > (FT_UInt)face->num_glyphs)
- index = 0;
-
- PANGO_FC_FONT_UNLOCK_FACE (font);
- }
- else
- index = 0;
-
- entry->ch = wc;
- entry->glyph = index;
- }
+ hb_font_get_nominal_glyph (hb_font, wc, &glyph);
- return entry->glyph;
+ return glyph;
}
/**