diff --git a/dlls/dwrite/analyzer.c b/dlls/dwrite/analyzer.c index 0a0642a52bc..6794c10a9f8 100644 --- a/dlls/dwrite/analyzer.c +++ b/dlls/dwrite/analyzer.c @@ -30,12 +30,21 @@ WINE_DEFAULT_DEBUG_CHANNEL(dwrite); enum scriptcode { Script_Arabic = 0, Script_Armenian = 1, + Script_Bengali = 3, Script_C1Controls = 12, Script_Coptic = 13, Script_Cyrillic = 16, + Script_Devanagari = 18, Script_Greek = 23, + Script_Gujarati = 24, + Script_Gurmukhi = 25, Script_Hebrew = 29, Script_Latin = 38, + Script_NKo = 48, + Script_Oriya = 53, + Script_Syriac = 64, + Script_Tamil = 68, + Script_Thaana = 70, Script_Symbol = 77, Script_Unknown = (UINT16)-1 }; @@ -87,6 +96,26 @@ static const struct script_range script_ranges[] = { { Script_Hebrew, 0x590, 0x5ff }, /* Arabic: U+0600–U+06FF */ { Script_Arabic, 0x600, 0x6ff }, + /* Syriac: U+0600–U+06FF */ + { Script_Syriac, 0x700, 0x74f }, + /* Arabic Supplement: U+0750–U+077F */ + { Script_Arabic, 0x750, 0x77f }, + /* Thaana: U+0780–U+07BF */ + { Script_Thaana, 0x780, 0x7bf }, + /* N'Ko: U+07C0–U+07FF */ + { Script_NKo, 0x7c0, 0x7ff }, + /* Devanagari: U+0900–U+097F */ + { Script_Devanagari, 0x900, 0x97f }, + /* Bengali: U+0980–U+09FF */ + { Script_Bengali, 0x980, 0x9ff }, + /* Gurmukhi: U+0A00–U+0A7F */ + { Script_Gurmukhi, 0xa00, 0xa7f }, + /* Gujarati: U+0A80–U+0AFF */ + { Script_Gujarati, 0xa80, 0xaff }, + /* Oriya: U+0B00–U+0B7F */ + { Script_Oriya, 0xb00, 0xb7f }, + /* Tamil: U+0B80–U+0BFF */ + { Script_Tamil, 0xb80, 0xbff }, /* unsupported range */ { Script_Unknown } }; diff --git a/dlls/dwrite/tests/analyzer.c b/dlls/dwrite/tests/analyzer.c index 648759f45a5..dbd030712f3 100644 --- a/dlls/dwrite/tests/analyzer.c +++ b/dlls/dwrite/tests/analyzer.c @@ -399,12 +399,21 @@ struct sa_test { enum scriptcode { Script_Arabic = 0, Script_Armenian = 1, + Script_Bengali = 3, Script_C1Controls = 12, Script_Coptic = 13, Script_Cyrillic = 16, + Script_Devanagari = 18, Script_Greek = 23, + Script_Gujarati = 24, + Script_Gurmukhi = 25, Script_Hebrew = 29, Script_Latin = 38, + Script_NKo = 48, + Script_Oriya = 53, + Script_Syriac = 64, + Script_Tamil = 68, + Script_Thaana = 70, Script_Symbol = 77 }; @@ -532,6 +541,61 @@ static struct sa_test sa_tests[] = { { 9, 10, { Script_Hebrew, DWRITE_SCRIPT_SHAPES_DEFAULT } }, { 19, 10, { Script_Latin, DWRITE_SCRIPT_SHAPES_DEFAULT } }} }, + { + /* Syriac */ + {0x710,0x712,0x712,0x714,'.',0}, 1, + { { 0, 5, { Script_Syriac, DWRITE_SCRIPT_SHAPES_DEFAULT } }} + }, + { + /* Arabic Supplement */ + {0x750,0x760,0x76d,'.',0}, 1, + { { 0, 4, { Script_Arabic, DWRITE_SCRIPT_SHAPES_DEFAULT } }} + }, + { + /* Thaana */ + {0x780,0x78e,0x798,0x7a6,0x7b0,'.',0}, 1, + { { 0, 6, { Script_Thaana, DWRITE_SCRIPT_SHAPES_DEFAULT } }} + }, + { + /* N'Ko */ + {0x7c0,0x7ca,0x7e8,0x7eb,0x7f6,'.',0}, 1, + { { 0, 6, { Script_NKo, DWRITE_SCRIPT_SHAPES_DEFAULT } }} + }, + { + /* Thaana */ + {0x780,0x798,0x7a5,0x7a6,0x7b0,'.',0}, 1, + { { 0, 6, { Script_Thaana, DWRITE_SCRIPT_SHAPES_DEFAULT } }} + }, + { + /* Devanagari */ + {0x926,0x947,0x935,0x928,0x93e,0x917,0x930,0x940,'.',0}, 1, + { { 0, 9, { Script_Devanagari, DWRITE_SCRIPT_SHAPES_DEFAULT } }} + }, + { + /* Bengali */ + {0x9ac,0x9be,0x982,0x9b2,0x9be,'.',0}, 1, + { { 0, 6, { Script_Bengali, DWRITE_SCRIPT_SHAPES_DEFAULT } }} + }, + { + /* Gurmukhi */ + {0xa17,0xa41,0xa30,0xa2e,0xa41,0xa16,0xa40,'.',0}, 1, + { { 0, 8, { Script_Gurmukhi, DWRITE_SCRIPT_SHAPES_DEFAULT } }} + }, + { + /* Gujarati */ + {0xa97,0xac1,0xa9c,0xab0,0xabe,0xaa4,0xac0,'.',0}, 1, + { { 0, 8, { Script_Gujarati, DWRITE_SCRIPT_SHAPES_DEFAULT } }} + }, + { + /* Oriya */ + {0xb13,0xb21,0xb3c,0xb3f,0xb06,'.',0}, 1, + { { 0, 6, { Script_Oriya, DWRITE_SCRIPT_SHAPES_DEFAULT } }} + }, + { + /* Tamil */ + {0xba4,0xbae,0xbbf,0xbb4,0xbcd,'.',0}, 1, + { { 0, 6, { Script_Tamil, DWRITE_SCRIPT_SHAPES_DEFAULT } }} + }, /* keep this as end marker */ { {0} } };