From e5ad5cd11acf8f15e3dd99a27aaebfdf98af8ff7 Mon Sep 17 00:00:00 2001 From: Aric Stewart Date: Wed, 14 Dec 2011 07:28:46 -0600 Subject: [PATCH] usp10: Add Tifinagh script. --- dlls/usp10/shape.c | 1 + dlls/usp10/tests/usp10.c | 10 ++++++++++ dlls/usp10/usp10.c | 9 ++++++++- dlls/usp10/usp10_internal.h | 1 + 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/dlls/usp10/shape.c b/dlls/usp10/shape.c index 02457cb0104..67397b45ab1 100644 --- a/dlls/usp10/shape.c +++ b/dlls/usp10/shape.c @@ -666,6 +666,7 @@ static const ScriptShapeData ShapingData[] = {{ ethiopic_features, 4}, NULL, "ethi", "", NULL, NULL}, {{ mongolian_features, 4}, NULL, "mong", "", ContextualShape_Mongolian, NULL}, {{ mongolian_features, 4}, NULL, "mong", "", ContextualShape_Mongolian, NULL}, + {{ no_features, 0}, NULL, "tfng", "", NULL, NULL}, }; static INT GSUB_is_glyph_covered(LPCVOID table , UINT glyph) diff --git a/dlls/usp10/tests/usp10.c b/dlls/usp10/tests/usp10.c index 43edc76401f..080cc4c5ccf 100644 --- a/dlls/usp10/tests/usp10.c +++ b/dlls/usp10/tests/usp10.c @@ -160,6 +160,7 @@ static inline void _test_items_ok(LPCWSTR string, DWORD cchString, #define yi_tag MS_MAKE_TAG('y','i',' ',' ') #define ethi_tag MS_MAKE_TAG('e','t','h','i') #define mong_tag MS_MAKE_TAG('m','o','n','g') +#define tfng_tag MS_MAKE_TAG('t','f','n','g') static void test_ScriptItemize( void ) { @@ -380,6 +381,11 @@ static void test_ScriptItemize( void ) static const int b351[2] = {2,2}; static const int b352[2] = {2,3}; + /* Tifinagh */ + static const WCHAR test36[] = {0x2d5c,0x2d49,0x2d3c,0x2d49,0x2d4f,0x2d30,0x2d56}; + static const itemTest t361[2] = {{{0,0,0,0,0},0,0,0,0,tfng_tag,TRUE,{-1,-1,-1,-1,latn_tag}},{{0,0,0,0,0},7,0,0,0,-1,FALSE}}; + static const itemTest t362[2] = {{{0,0,0,0,0},0,0,0,2,tfng_tag,TRUE,{-1,1,1,1,latn_tag}},{{0,0,0,0,0},7,0,0,0,-1,FALSE}}; + SCRIPT_ITEM items[15]; SCRIPT_CONTROL Control; SCRIPT_STATE State; @@ -448,6 +454,7 @@ static void test_ScriptItemize( void ) test_items_ok(test33,4,NULL,NULL,1,t331,FALSE,0); test_items_ok(test34,3,NULL,NULL,1,t341,FALSE,0); test_items_ok(test35,13,NULL,NULL,1,t351,FALSE,b351); + test_items_ok(test36,7,NULL,NULL,1,t361,FALSE,0); State.uBidiLevel = 0; test_items_ok(test1,4,&Control,&State,1,t11,FALSE,0); @@ -490,6 +497,7 @@ static void test_ScriptItemize( void ) test_items_ok(test33,4,&Control,&State,1,t331,FALSE,0); test_items_ok(test34,3,&Control,&State,1,t341,FALSE,0); test_items_ok(test35,13,&Control,&State,1,t351,FALSE,b351); + test_items_ok(test36,7,&Control,&State,1,t361,FALSE,0); State.uBidiLevel = 1; test_items_ok(test1,4,&Control,&State,1,t12,FALSE,0); @@ -532,6 +540,7 @@ static void test_ScriptItemize( void ) test_items_ok(test33,4,&Control,&State,1,t332,FALSE,0); test_items_ok(test34,3,&Control,&State,1,t342,FALSE,b342); test_items_ok(test35,13,&Control,&State,1,t352,FALSE,b352); + test_items_ok(test36,7,&Control,&State,1,t362,FALSE,0); State.uBidiLevel = 1; Control.fMergeNeutralItems = TRUE; @@ -575,6 +584,7 @@ static void test_ScriptItemize( void ) test_items_ok(test33,4,&Control,&State,1,t332,FALSE,0); test_items_ok(test34,3,&Control,&State,1,t342,FALSE,b342); test_items_ok(test35,13,&Control,&State,1,t352,FALSE,b352); + test_items_ok(test36,7,&Control,&State,1,t362,FALSE,0); } static inline void _test_shape_ok(int valid, HDC hdc, LPCWSTR string, diff --git a/dlls/usp10/usp10.c b/dlls/usp10/usp10.c index 5d7ba3326f5..ed482fea384 100644 --- a/dlls/usp10/usp10.c +++ b/dlls/usp10/usp10.c @@ -171,6 +171,8 @@ static const scriptRange scriptRanges[] = { { Script_Latin, 0x2c60, 0x2c7f, 0, 0}, /* Georgian: U+2D00–U+2D2F */ { Script_Georgian, 0x2d00, 0x2d2f, 0, 0}, + /* Tifinagh: U+2D30–U+2D7F */ + { Script_Tifinagh, 0x2d30, 0x2d7f, 0, 0}, /* Ethiopic Extensions: U+2D80–U+2DDF */ { Script_Ethiopic, 0x2d80, 0x2ddf, 0, 0}, /* Cyrillic Extended-A: U+2DE0–U+2DFF */ @@ -532,6 +534,10 @@ static const scriptData scriptInformation[] = { {LANG_MONGOLIAN, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, MS_MAKE_TAG('m','o','n','g'), {'M','o','n','g','o','l','i','a','n',' ','B','a','i','t','i'}}, + {{Script_Tifinagh, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, + {0, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + MS_MAKE_TAG('t','f','n','g'), + {'E','b','r','i','m','a'}}, }; static const SCRIPT_PROPERTIES *script_props[] = @@ -567,7 +573,8 @@ static const SCRIPT_PROPERTIES *script_props[] = &scriptInformation[56].props, &scriptInformation[57].props, &scriptInformation[58].props, &scriptInformation[59].props, &scriptInformation[60].props, &scriptInformation[61].props, - &scriptInformation[62].props, &scriptInformation[63].props + &scriptInformation[62].props, &scriptInformation[63].props, + &scriptInformation[64].props }; typedef struct { diff --git a/dlls/usp10/usp10_internal.h b/dlls/usp10/usp10_internal.h index 1b3f31cb854..d8e710d1ddc 100644 --- a/dlls/usp10/usp10_internal.h +++ b/dlls/usp10/usp10_internal.h @@ -95,6 +95,7 @@ #define Script_Ethiopic_Numeric 61 #define Script_Mongolian 62 #define Script_Mongolian_Numeric 63 +#define Script_Tifinagh 64 #define GLYPH_BLOCK_SHIFT 8 #define GLYPH_BLOCK_SIZE (1UL << GLYPH_BLOCK_SHIFT) -- 2.11.4.GIT