dwrite: Support for Armenian, Hebrew and complete Arabic ranges.
This commit is contained in:
parent
602807c2a5
commit
368bc8aa50
|
@ -29,10 +29,12 @@ WINE_DEFAULT_DEBUG_CHANNEL(dwrite);
|
||||||
|
|
||||||
enum scriptcode {
|
enum scriptcode {
|
||||||
Script_Arabic = 0,
|
Script_Arabic = 0,
|
||||||
|
Script_Armenian = 1,
|
||||||
Script_C1Controls = 12,
|
Script_C1Controls = 12,
|
||||||
Script_Coptic = 13,
|
Script_Coptic = 13,
|
||||||
Script_Cyrillic = 16,
|
Script_Cyrillic = 16,
|
||||||
Script_Greek = 23,
|
Script_Greek = 23,
|
||||||
|
Script_Hebrew = 29,
|
||||||
Script_Latin = 38,
|
Script_Latin = 38,
|
||||||
Script_Symbol = 77,
|
Script_Symbol = 77,
|
||||||
Script_Unknown = (UINT16)-1
|
Script_Unknown = (UINT16)-1
|
||||||
|
@ -79,8 +81,12 @@ static const struct script_range script_ranges[] = {
|
||||||
/* Cyrillic Supplement range is incomplete cause it's based on Unicode 5.2
|
/* Cyrillic Supplement range is incomplete cause it's based on Unicode 5.2
|
||||||
that doesn't define some Abkhaz and Azerbaijani letters, we support Unicode 6.0 range here */
|
that doesn't define some Abkhaz and Azerbaijani letters, we support Unicode 6.0 range here */
|
||||||
{ Script_Cyrillic, 0x400, 0x52f },
|
{ Script_Cyrillic, 0x400, 0x52f },
|
||||||
|
/* Armenian: U+0530–U+058F */
|
||||||
|
{ Script_Armenian, 0x530, 0x58f },
|
||||||
|
/* Hebrew: U+0590–U+05FF */
|
||||||
|
{ Script_Hebrew, 0x590, 0x5ff },
|
||||||
/* Arabic: U+0600–U+06FF */
|
/* Arabic: U+0600–U+06FF */
|
||||||
{ Script_Arabic, 0x600, 0x6ef },
|
{ Script_Arabic, 0x600, 0x6ff },
|
||||||
/* unsupported range */
|
/* unsupported range */
|
||||||
{ Script_Unknown }
|
{ Script_Unknown }
|
||||||
};
|
};
|
||||||
|
|
|
@ -391,17 +391,19 @@ static IDWriteTextAnalysisSourceVtbl analysissourcevtbl = {
|
||||||
static IDWriteTextAnalysisSource analysissource = { &analysissourcevtbl };
|
static IDWriteTextAnalysisSource analysissource = { &analysissourcevtbl };
|
||||||
|
|
||||||
struct sa_test {
|
struct sa_test {
|
||||||
const WCHAR string[20];
|
const WCHAR string[50];
|
||||||
int item_count;
|
int item_count;
|
||||||
struct script_analysis sa[10];
|
struct script_analysis sa[10];
|
||||||
};
|
};
|
||||||
|
|
||||||
enum scriptcode {
|
enum scriptcode {
|
||||||
Script_Arabic = 0,
|
Script_Arabic = 0,
|
||||||
|
Script_Armenian = 1,
|
||||||
Script_C1Controls = 12,
|
Script_C1Controls = 12,
|
||||||
Script_Coptic = 13,
|
Script_Coptic = 13,
|
||||||
Script_Cyrillic = 16,
|
Script_Cyrillic = 16,
|
||||||
Script_Greek = 23,
|
Script_Greek = 23,
|
||||||
|
Script_Hebrew = 29,
|
||||||
Script_Latin = 38,
|
Script_Latin = 38,
|
||||||
Script_Symbol = 77
|
Script_Symbol = 77
|
||||||
};
|
};
|
||||||
|
@ -434,6 +436,14 @@ static struct sa_test sa_tests[] = {
|
||||||
{0x064a,0x064f,0x0633,0x0627,0x0648,0x0650,0x064a,0}, 1,
|
{0x064a,0x064f,0x0633,0x0627,0x0648,0x0650,0x064a,0}, 1,
|
||||||
{ { 0, 7, { Script_Arabic, DWRITE_SCRIPT_SHAPES_DEFAULT } }}
|
{ { 0, 7, { Script_Arabic, DWRITE_SCRIPT_SHAPES_DEFAULT } }}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
/* Arabic */
|
||||||
|
{0x0627,0x0644,0x0635,0x0651,0x0650,0x062d,0x0629,0x064f,' ',0x062a,0x064e,
|
||||||
|
0x0627,0x062c,0x064c,' ',0x0639,0x064e,0x0644,0x0649,' ',
|
||||||
|
0x0631,0x064f,0x0624,0x0648,0x0633,0x0650,' ',0x0627,0x0644,
|
||||||
|
0x0623,0x0635,0x0650,0x062d,0x0651,0x064e,0x0627,0x0621,0x0650,0x06f0,0x06f5,0}, 1,
|
||||||
|
{ { 0, 40, { Script_Arabic, DWRITE_SCRIPT_SHAPES_DEFAULT } }}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
/* Arabic, Latin */
|
/* Arabic, Latin */
|
||||||
{'1','2','3','-','5','2',0x064a,0x064f,0x0633,0x0627,0x0648,0x0650,0x064a,'7','1','.',0}, 1,
|
{'1','2','3','-','5','2',0x064a,0x064f,0x0633,0x0627,0x0648,0x0650,0x064a,'7','1','.',0}, 1,
|
||||||
|
@ -505,6 +515,23 @@ static struct sa_test sa_tests[] = {
|
||||||
{0x400,0x40f,0x410,0x44f,0x450,0x45f,0x460,0x481,0x48a,0x4f0,0x4fa,0x4ff,0x500,0x510,0x520,0}, 1,
|
{0x400,0x40f,0x410,0x44f,0x450,0x45f,0x460,0x481,0x48a,0x4f0,0x4fa,0x4ff,0x500,0x510,0x520,0}, 1,
|
||||||
{ { 0, 15, { Script_Cyrillic, DWRITE_SCRIPT_SHAPES_DEFAULT } }}
|
{ { 0, 15, { Script_Cyrillic, DWRITE_SCRIPT_SHAPES_DEFAULT } }}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
/* Armenian */
|
||||||
|
{0x531,0x540,0x559,0x55f,0x570,0x589,0x58a,0}, 1,
|
||||||
|
{ { 0, 7, { Script_Armenian, DWRITE_SCRIPT_SHAPES_DEFAULT } }}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* Hebrew */
|
||||||
|
{0x5e9,0x5dc,0x5d5,0x5dd,0}, 1,
|
||||||
|
{ { 0, 4, { Script_Hebrew, DWRITE_SCRIPT_SHAPES_DEFAULT } }}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* Hebrew */
|
||||||
|
{'p','a','r','t',' ','o','n','e',' ',0x5d7,0x5dc,0x5e7,' ',0x5e9,0x5ea,0x5d9,0x5d9,0x5dd,' ','p','a','r','t',' ','t','h','r','e','e',0}, 3,
|
||||||
|
{ { 0, 9, { Script_Latin, DWRITE_SCRIPT_SHAPES_DEFAULT } },
|
||||||
|
{ 9, 10, { Script_Hebrew, DWRITE_SCRIPT_SHAPES_DEFAULT } },
|
||||||
|
{ 19, 10, { Script_Latin, DWRITE_SCRIPT_SHAPES_DEFAULT } }}
|
||||||
|
},
|
||||||
/* keep this as end marker */
|
/* keep this as end marker */
|
||||||
{ {0} }
|
{ {0} }
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue