Module: wine Branch: master Commit: b5184df5df0fb10e9fab94d747aac0815b81c8d1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b5184df5df0fb10e9fab94d747...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Sun Jun 15 22:38:14 2014 +0400
dwrite: Recognize more Unicode ranges in script analyzer.
---
dlls/dwrite/analyzer.c | 43 ++++++++++++++++++++++++++++++++ dlls/dwrite/tests/analyzer.c | 56 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 97 insertions(+), 2 deletions(-)
diff --git a/dlls/dwrite/analyzer.c b/dlls/dwrite/analyzer.c index 5c692d1..2b7056e 100644 --- a/dlls/dwrite/analyzer.c +++ b/dlls/dwrite/analyzer.c @@ -41,6 +41,7 @@ enum scriptcode { Script_Devanagari = 18, Script_Ethiopic = 19, Script_Georgian = 20, + Script_Glagolitic = 22, Script_Greek = 23, Script_Gujarati = 24, Script_Gurmukhi = 25, @@ -70,6 +71,7 @@ enum scriptcode { Script_Thaana = 70, Script_Thai = 71, Script_Tibetan = 72, + Script_Tifinagh = 73, Script_Symbol = 77, Script_Unknown = (UINT16)-1 }; @@ -204,6 +206,47 @@ static const struct script_range script_ranges[] = { { Script_Devanagari, 0x1cd0, 0x1cff }, /* Phonetic Extensions: U+1D00–U+1DBF */ { Script_Latin, 0x1d00, 0x1dbf }, + /* Combining Diacritical Marks Supplement: U+1DC0–U+1DFF */ + { Script_Symbol, 0x1dc0, 0x1dff }, + /* Latin Extended Additional: U+1E00–U+1EFF */ + { Script_Latin, 0x1e00, 0x1eff }, + /* Greek Extended: U+1F00–U+1F00 */ + { Script_Greek, 0x1f00, 0x1fff }, + /* General Punctuation: U+2000–U+206f */ + /* Superscripts and Subscripts: U+2070–U+209f */ + /* Currency Symbols: U+20A0–U+20CF */ + /* Combining Diacritical Marks for Symbols: U+20D0–U+20FF */ + /* Letterlike Symbols: U+2100–U+214F */ + /* Number Forms: U+2150–U+218F */ + /* Arrows: U+2190–U+21FF */ + /* Mathematical Operators: U+2200–U+22FF */ + /* Miscellaneous Technical: U+2300–U+23FF */ + /* Control Pictures: U+2400–U+243F */ + /* Optical Character Recognition: U+2440–U+245F */ + /* Enclosed Alphanumerics: U+2460–U+24FF */ + /* Box Drawing: U+2500–U+25FF */ + /* Block Elements: U+2580–U+259F */ + /* Geometric Shapes: U+25A0–U+25FF */ + /* Miscellaneous Symbols: U+2600–U+26FF */ + /* Dingbats: U+2700–U+27BF */ + /* Miscellaneous Mathematical Symbols-A: U+27C0–U+27EF */ + /* Supplemental Arrows-A: U+27F0–U+27FF */ + /* Braille Patterns: U+2800–U+28FF */ + /* Supplemental Arrows-B: U+2900–U+297F */ + /* Miscellaneous Mathematical Symbols-B: U+2980–U+29FF */ + /* Supplemental Mathematical Operators: U+2A00–U+2AFF */ + /* Miscellaneous Symbols and Arrows: U+2B00–U+2BFF */ + { Script_Symbol, 0x2000, 0x2bff }, + /* Glagolitic: U+2C00–U+2C5F */ + { Script_Glagolitic, 0x2c00, 0x2c5f }, + /* Latin Extended-C: U+2C60–U+2C7F */ + { Script_Latin, 0x2c60, 0x2c7f }, + /* Coptic: U+2C80–U+2CFF */ + { Script_Coptic, 0x2c80, 0x2cff }, + /* Georgian Supplement: U+2D00–U+2D2F */ + { Script_Georgian, 0x2d00, 0x2d2f }, + /* Tifinagh: U+2D30–U+2D7F */ + { Script_Tifinagh, 0x2d30, 0x2d7f }, /* unsupported range */ { Script_Unknown } }; diff --git a/dlls/dwrite/tests/analyzer.c b/dlls/dwrite/tests/analyzer.c index 7ff6e56..e504a22 100644 --- a/dlls/dwrite/tests/analyzer.c +++ b/dlls/dwrite/tests/analyzer.c @@ -621,8 +621,8 @@ static struct sa_test sa_tests[] = { }, { /* Georgian */ - {0x10a0,0x10d0,0x10da,0x10f1,0x10fb,'.',0}, 1, - { { 0, 6, DWRITE_SCRIPT_SHAPES_DEFAULT }} + {0x10a0,0x10d0,0x10da,0x10f1,0x10fb,0x2d00,'.',0}, 1, + { { 0, 7, DWRITE_SCRIPT_SHAPES_DEFAULT }} }, { /* Hangul */ @@ -724,6 +724,58 @@ static struct sa_test sa_tests[] = { {0x1d00,0x1d40,0x1d70,0}, 1, { { 0, 3, DWRITE_SCRIPT_SHAPES_DEFAULT }} }, + { + /* Combining diacritical marks */ + {0x1dc0,0x300,0x1ddf,0}, 1, + { { 0, 3, DWRITE_SCRIPT_SHAPES_DEFAULT }} + }, + { + /* Latin Extended Additional, Extended-C */ + {0x1e00,0x1d00,0x2c60,0}, 1, + { { 0, 3, DWRITE_SCRIPT_SHAPES_DEFAULT }} + }, + { + /* Greek Extended */ + {0x3f0,0x1f00,0}, 1, + { { 0, 2, DWRITE_SCRIPT_SHAPES_DEFAULT }} + }, + { + /* General Punctuation */ + {0x1dc0,0x2000,0}, 1, + { { 0, 2, DWRITE_SCRIPT_SHAPES_DEFAULT }} + }, + { + /* Superscripts and Subscripts */ + {0x2070,0x2086,0x2000,0}, 1, + { { 0, 3, DWRITE_SCRIPT_SHAPES_DEFAULT }} + }, + { + /* Currency, Combining Diacritical Marks for Symbols. Letterlike Symbols.. */ + {0x20a0,0x20b8,0x2000,0x20d0,0x2100,0x2150,0x2190,0x2200,0x2300,0x2400,0x2440,0x2460,0x2500,0x2580,0x25a0,0x2600, + 0x2700,0x27c0,0x27f0,0x2900,0x2980,0x2a00,0x2b00,0}, 1, + { { 0, 23, DWRITE_SCRIPT_SHAPES_DEFAULT }} + }, + { + /* Braille */ + {0x2800,0x2070,0x2000,0}, 1, + { { 0, 3, DWRITE_SCRIPT_SHAPES_DEFAULT }} + }, + { + /* Glagolitic */ + {0x2c00,0x2c12,0}, 1, + { { 0, 2, DWRITE_SCRIPT_SHAPES_DEFAULT }} + }, + { + /* Coptic */ + {0x2c80,0x3e2,0x1f00,0}, 2, + { { 0, 2, DWRITE_SCRIPT_SHAPES_DEFAULT }, + { 2, 1, DWRITE_SCRIPT_SHAPES_DEFAULT } } + }, + { + /* Tifinagh */ + {0x2d30,0x2d4a,0}, 1, + { { 0, 2, DWRITE_SCRIPT_SHAPES_DEFAULT }} + }, /* keep this as end marker */ { {0} } };