diff options
author | Owen Taylor <otaylor@redhat.com> | 2001-05-02 03:50:40 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2001-05-02 03:50:40 +0000 |
commit | 54dee9a070383e0e36db7f96b53620507d10e3a4 (patch) | |
tree | 94ed52c8772dbf3e33d18f25f09cbbd48a9a4fd3 /pango | |
parent | a7b79a56d380dd8179d3afab3258e25b4157aa63 (diff) | |
download | pango-54dee9a070383e0e36db7f96b53620507d10e3a4.tar.gz |
Fix numeric format in warning.
Tue May 1 23:30:53 2001 Owen Taylor <otaylor@redhat.com>
* modules/hangul/hangul-x.c (hangul_engine_shape): Fix numeric
format in warning.
* pango/pangox.c (get_font_metrics_from_string): Fix assorted
brokenness.
Diffstat (limited to 'pango')
-rw-r--r-- | pango/pangox.c | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/pango/pangox.c b/pango/pangox.c index 43c04cd9..85df8759 100644 --- a/pango/pangox.c +++ b/pango/pangox.c @@ -750,7 +750,10 @@ get_font_metrics_from_subfonts (PangoFont *font, } /* This is pretty darn bogus. */ - metrics->approximate_char_width = total_avg_widths / n_avg_widths; + if (n_avg_widths) + metrics->approximate_char_width = total_avg_widths / n_avg_widths; + else + metrics->approximate_char_width = 10 * PANGO_SCALE; } /* Get composite font metrics for all subfonts resulting from shaping @@ -775,6 +778,7 @@ get_font_metrics_from_string (PangoFont *font, guint8 *embedding_levels; PangoDirection base_dir = PANGO_DIRECTION_LTR; GSList *subfonts = NULL; + gboolean finished = FALSE; text_ucs4 = g_utf8_to_ucs4_fast (str, -1, &n_chars); if (!text_ucs4) @@ -790,19 +794,29 @@ get_font_metrics_from_string (PangoFont *font, i = 0; p = start = str; - while (*p) + while (*p || !finished) { - gunichar wc = g_utf8_get_char (p); - p = g_utf8_next_char (p); + gunichar wc; + + if (*p) + { + wc = g_utf8_get_char (p); + shaper = pango_font_find_shaper (font, lang, wc); + } + else + { + finished = TRUE; + shaper = NULL; + } - shaper = pango_font_find_shaper (font, lang, wc); - if (p > start && - (shaper != last_shaper || last_level != embedding_levels[i])) + if (p > start && + (finished || + (shaper != last_shaper || last_level != embedding_levels[i]))) { PangoAnalysis analysis; int j; - analysis.shape_engine = shaper; + analysis.shape_engine = last_shaper; analysis.lang_engine = NULL; analysis.font = font; analysis.level = last_level; @@ -819,6 +833,9 @@ get_font_metrics_from_string (PangoFont *font, start = p; } + if (!finished) + p = g_utf8_next_char (p); + last_shaper = shaper; last_level = embedding_levels[i]; i++; |