I'd like to put the attached change into pango-1.6.0. What it does is change a single Unicode character (U+3000, IDEOGRAPHIC SPACE) to go through the font selection code path for printing characters instead of for spaces. Chance of problems is pretty much zero, and it fixes a fairly serious problem with the display of East-Asian documents. (In quite a few circumstances, the ideographc space is displaying as a hex square.) Thanks, Owen
? pango/opentype/gsub-2.diff ? pango/opentype/gsub-3.diff ? pango/opentype/gsub-4.diff ? pango/opentype/gsub.patch Index: ChangeLog =================================================================== RCS file: /cvs/gnome/pango/ChangeLog,v retrieving revision 1.970 diff -u -p -r1.970 ChangeLog --- ChangeLog 13 Sep 2004 14:24:05 -0000 1.970 +++ ChangeLog 13 Sep 2004 14:24:49 -0000 @@ -1,3 +1,9 @@ +Mon Sep 13 10:18:51 2004 Owen Taylor <otaylor redhat com> + + * pango/pango-context.c (itemize_state_process_run): + Except ideographic spaces from the !g_unichar_isgraph() test. + (#145275, Federic Zhang) + Mon Aug 16 14:17:56 2004 Owen Taylor <otaylor redhat com> * examples/renderdemo.c (fc_substitute_func): Fix reversed Index: pango/pango-context.c =================================================================== RCS file: /cvs/gnome/pango/pango/pango-context.c,v retrieving revision 1.71 diff -u -p -r1.71 pango-context.c --- pango/pango-context.c 10 Jul 2004 21:41:37 -0000 1.71 +++ pango/pango-context.c 13 Sep 2004 14:24:49 -0000 @@ -1057,7 +1057,19 @@ itemize_state_process_run (ItemizeState PangoEngineShape *shape_engine; PangoFont *font; - if (!g_unichar_isgraph (wc)) + /* We don't want space characters to affect font selection; in general, + * it's always wrong to select a font just to render a space. + * To make this really work well, we'd need to emulate missing + * space characters, which we don't yet do, so we sometimes + * will get hex boxes. + * + * The exception of U+3000 (IDEOGRAPHIC SPACE) here is because we + * want to choose an ideographic space that matches ideographic text + * in cell width. Even if we were emulating missing spaces, an + * emulated ideographic space for the primary font wouldn't be the + * right size. + */ + if (!g_unichar_isgraph (wc) && wc != 0x3000) { shape_engine = NULL; font = NULL;
Attachment:
signature.asc
Description: This is a digitally signed message part