dwrite: Support for Armenian, Hebrew and complete Arabic ranges.

This commit is contained in:
Nikolay Sivov 2012-10-31 10:44:49 -04:00 committed by Alexandre Julliard
parent 602807c2a5
commit 368bc8aa50
2 changed files with 35 additions and 2 deletions

View File

@ -29,10 +29,12 @@ WINE_DEFAULT_DEBUG_CHANNEL(dwrite);
enum scriptcode {
Script_Arabic = 0,
Script_Armenian = 1,
Script_C1Controls = 12,
Script_Coptic = 13,
Script_Cyrillic = 16,
Script_Greek = 23,
Script_Hebrew = 29,
Script_Latin = 38,
Script_Symbol = 77,
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
that doesn't define some Abkhaz and Azerbaijani letters, we support Unicode 6.0 range here */
{ Script_Cyrillic, 0x400, 0x52f },
/* Armenian: U+0530U+058F */
{ Script_Armenian, 0x530, 0x58f },
/* Hebrew: U+0590U+05FF */
{ Script_Hebrew, 0x590, 0x5ff },
/* Arabic: U+0600U+06FF */
{ Script_Arabic, 0x600, 0x6ef },
{ Script_Arabic, 0x600, 0x6ff },
/* unsupported range */
{ Script_Unknown }
};

View File

@ -391,17 +391,19 @@ static IDWriteTextAnalysisSourceVtbl analysissourcevtbl = {
static IDWriteTextAnalysisSource analysissource = { &analysissourcevtbl };
struct sa_test {
const WCHAR string[20];
const WCHAR string[50];
int item_count;
struct script_analysis sa[10];
};
enum scriptcode {
Script_Arabic = 0,
Script_Armenian = 1,
Script_C1Controls = 12,
Script_Coptic = 13,
Script_Cyrillic = 16,
Script_Greek = 23,
Script_Hebrew = 29,
Script_Latin = 38,
Script_Symbol = 77
};
@ -434,6 +436,14 @@ static struct sa_test sa_tests[] = {
{0x064a,0x064f,0x0633,0x0627,0x0648,0x0650,0x064a,0}, 1,
{ { 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 */
{'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,
{ { 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 */
{ {0} }
};