diff options
Diffstat (limited to 'modules/basic/basic-ft2.c')
-rw-r--r-- | modules/basic/basic-ft2.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/modules/basic/basic-ft2.c b/modules/basic/basic-ft2.c index e16a5e29..ffff113f 100644 --- a/modules/basic/basic-ft2.c +++ b/modules/basic/basic-ft2.c @@ -29,6 +29,25 @@ #define SCRIPT_ENGINE_NAME "BasicScriptEngineFT2" + +/* Zero Width characters: + * + * 200B ZERO WIDTH SPACE + * 200C ZERO WIDTH NON-JOINER + * 200D ZERO WIDTH JOINER + * 200E LEFT-TO-RIGHT MARK + * 200F RIGHT-TO-LEFT MARK + * 202A LEFT-TO-RIGHT EMBEDDING + * 202B RIGHT-TO-LEFT EMBEDDING + * 202C POP DIRECTIONAL FORMATTING + * 202D LEFT-TO-RIGHT OVERRIDE + * 202E RIGHT-TO-LEFT OVERRIDE + */ + +#define ZERO_WIDTH_CHAR(wc)\ +(((wc) >= 0x200B && (wc) <= 0x200F) || ((wc) >= 0x202A && (wc) <= 0x202E)) + + static PangoEngineRange basic_ranges[] = { /* Basic Latin, Latin-1 Supplement, Latin Extended-A, Latin Extended-B, * IPA Extensions @@ -212,7 +231,7 @@ basic_engine_shape (PangoFont *font, if (pango_get_mirror_char (wc, &mirrored_ch)) wc = mirrored_ch; - if (wc == 0x200B || wc == 0x200E || wc == 0x200F) /* Zero-width characters */ + if (ZERO_WIDTH_CHAR (wc)) { set_glyph (font, glyphs, i, p - text, 0); } |