diff --git a/dlls/dwrite/analyzer.c b/dlls/dwrite/analyzer.c index 6fa8354c2d2..3e22f84118f 100644 --- a/dlls/dwrite/analyzer.c +++ b/dlls/dwrite/analyzer.c @@ -29,6 +29,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(dwrite); enum scriptcode { Script_Arabic = 0, + Script_C1Controls = 12, Script_Latin = 38, Script_Latin_Symb = 77, Script_Unknown = (UINT16)-1 @@ -54,6 +55,14 @@ static const struct script_range script_ranges[] = { { Script_Latin, 0x61, 0x7a }, /* ASCII punctuation and symbols, control char DEL: U+007B–U+007F */ { Script_Latin_Symb, 0x7b, 0x7f }, + /* C1 Controls: U+0080–U+009F */ + { Script_C1Controls, 0x80, 0x9f }, + /* Latin-1 Supplement: U+00A0–U+00FF */ + /* Latin Extended-A: U+0100–U+017F */ + /* Latin Extended-B: U+0180–U+024F */ + /* IPA Extensions: U+0250–U+02AF */ + /* Spacing Modifier Letters: U+02B0–U+02FF */ + { Script_Latin, 0xa0, 0x2ff }, /* Arabic: U+0600–U+06FF */ { Script_Arabic, 0x600, 0x6ef }, /* unsuppoted range */ diff --git a/dlls/dwrite/tests/analyzer.c b/dlls/dwrite/tests/analyzer.c index 70b3703d87a..d68cbcd6139 100644 --- a/dlls/dwrite/tests/analyzer.c +++ b/dlls/dwrite/tests/analyzer.c @@ -398,6 +398,7 @@ struct sa_test { enum scriptcode { Script_Arabic = 0, + Script_C1Controls = 12, Script_Latin = 38, Script_Latin_Symb = 77 }; @@ -433,7 +434,7 @@ static struct sa_test sa_tests[] = { { /* Arabic, Latin */ {'1','2','3','-','5','2',0x064a,0x064f,0x0633,0x0627,0x0648,0x0650,0x064a,'7','1','.',0}, 1, - { { 0, 16, { 0, DWRITE_SCRIPT_SHAPES_DEFAULT } }} + { { 0, 16, { Script_Arabic, DWRITE_SCRIPT_SHAPES_DEFAULT } }} }, { /* Arabic, English */ @@ -456,6 +457,33 @@ static struct sa_test sa_tests[] = { { 7, 4, { Script_Arabic, DWRITE_SCRIPT_SHAPES_DEFAULT } }, } }, + { + /* C1 Controls, Latin-1 Supplement */ + {0x80,0x90,0x9f,0xa0,0xc0,0xb8,0xbf,0xc0,0xff,0}, 2, + { { 0, 3, { Script_C1Controls, DWRITE_SCRIPT_SHAPES_DEFAULT } }, + { 3, 6, { Script_Latin, DWRITE_SCRIPT_SHAPES_DEFAULT } }, + } + }, + { + /* Latin Extended-A */ + {0x100,0x120,0x130,0x140,0x150,0x160,0x170,0x17f,0}, 1, + { { 0, 8, { Script_Latin, DWRITE_SCRIPT_SHAPES_DEFAULT } }} + }, + { + /* Latin Extended-B */ + {0x180,0x190,0x1bf,0x1c0,0x1c3,0x1c4,0x1cc,0x1dc,0x1ff,0x217,0x21b,0x24f,0}, 1, + { { 0, 12, { Script_Latin, DWRITE_SCRIPT_SHAPES_DEFAULT } }} + }, + { + /* IPA Extensions */ + {0x250,0x260,0x270,0x290,0x2af,0}, 1, + { { 0, 5, { Script_Latin, DWRITE_SCRIPT_SHAPES_DEFAULT } }} + }, + { + /* Spacing Modifier Letters */ + {0x2b0,0x2ba,0x2d7,0x2dd,0x2ef,0x2ff,0}, 1, + { { 0, 6, { Script_Latin, DWRITE_SCRIPT_SHAPES_DEFAULT } }} + }, /* keep this as end marker */ { {0} } };