summaryrefslogtreecommitdiff
path: root/pango/shape.c
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@gnome.org>2006-02-02 10:52:49 +0000
committerBehdad Esfahbod <behdad@src.gnome.org>2006-02-02 10:52:49 +0000
commitda58dbfdea113caa46448c0bb3bf945b4a18f502 (patch)
treebd04c2e6d5d4f74ee5eef9a3dd8a1c2bdaeb5f7e /pango/shape.c
parent93be594100f783b409cba98f6c9d58060c4ef433 (diff)
downloadpango-da58dbfdea113caa46448c0bb3bf945b4a18f502.tar.gz
Use PANGO_GLYPH_NULL for when no glyph should be drawn. Use
2006-02-02 Behdad Esfahbod <behdad@gnome.org> * modules/arabic/arabic-fc.c, modules/basic/basic-atsui.c, modules/basic/basic-fc.c, modules/basic/basic-win32.c, modules/basic/basic-x.c, modules/hangul/hangul-fc.c, modules/hebrew/hebrew-fc.c, modules/indic/indic-fc.c, modules/khmer/khmer-fc.c, modules/syriac/syriac-fc.c, modules/thai/thai-fc.c, modules/tibetan/tibetan-fc.c, pango/fonts.c, pango/pango-engine-private.h pango/pango-types.h, pango/pangocairo-fcfont.c, pango/pangocairo-font.c, pango/pangocairo-private.h, pango/pangocairo-render.c, pango/pangofc-decoder.c, pango/pangofc-font.c, pango/pangoft2-render.c, pango/pangoft2.c pango/pangowin32.c, pango/pangox.c, pango/pangoxft-font.c pango/pangoxft-private.h, pango/pangoxft-render.c, pango/shape.c: Use PANGO_GLYPH_NULL for when no glyph should be drawn. Use PANGO_GLYPH_UNKNOWN_FLAG for all backends to mark unknown flags. There's no need for pango_font_get_unknown_glyph() anymore, since all backends know how to handle PANGO_GLYPH_UNKNOWN_FLAG gracefully. We may add that in the future however. (fixes bug #73147, closes bug #329524)
Diffstat (limited to 'pango/shape.c')
-rw-r--r--pango/shape.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/pango/shape.c b/pango/shape.c
index 37fc34d2..2be23189 100644
--- a/pango/shape.c
+++ b/pango/shape.c
@@ -51,6 +51,7 @@ pango_shape (const gchar *text,
_pango_engine_shape_shape (analysis->shape_engine, analysis->font,
text, length, analysis, glyphs);
+ glyphs->num_glyphs = 0;
if (G_UNLIKELY (glyphs->num_glyphs == 0))
{
/* If a font has been correctly chosen, but no glyphs are output,
@@ -100,19 +101,27 @@ pango_shape (const gchar *text,
if (!glyphs->num_glyphs)
{
- /* If failed to get glyphs, put a whitespace glyph per character
+ /* If failed to get glyphs, put unknown glyphs for all characters
*/
+ const char *p = text;
pango_glyph_string_set_size (glyphs, g_utf8_strlen (text, length));
for (i = 0; i < glyphs->num_glyphs; i++)
{
- glyphs->glyphs[i].glyph = 0;
+ PangoRectangle logical_rect;
+ PangoGlyph glyph = g_utf8_get_char (p) | PANGO_GLYPH_UNKNOWN_FLAG;
+
+ pango_font_get_glyph_extents (analysis->font, glyph, NULL, &logical_rect);
+
+ glyphs->glyphs[i].glyph = glyph;
glyphs->glyphs[i].geometry.x_offset = 0;
glyphs->glyphs[i].geometry.y_offset = 0;
- glyphs->glyphs[i].geometry.width = 10 * PANGO_SCALE;
+ glyphs->glyphs[i].geometry.width = logical_rect.width;
glyphs->log_clusters[i] = i;
+
+ p = g_utf8_next_char (p);
}
}