diff options
author | Behdad Esfahbod <behdad@gnome.org> | 2006-02-02 10:52:49 +0000 |
---|---|---|
committer | Behdad Esfahbod <behdad@src.gnome.org> | 2006-02-02 10:52:49 +0000 |
commit | da58dbfdea113caa46448c0bb3bf945b4a18f502 (patch) | |
tree | bd04c2e6d5d4f74ee5eef9a3dd8a1c2bdaeb5f7e /pango/shape.c | |
parent | 93be594100f783b409cba98f6c9d58060c4ef433 (diff) | |
download | pango-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.c | 15 |
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); } } |