usp10: Add Ethiopic script.
This commit is contained in:
parent
fe7652d0af
commit
a65c818ca0
|
@ -573,6 +573,14 @@ static const char* required_khmer_features[] =
|
|||
static OPENTYPE_FEATURE_RECORD no_features[] =
|
||||
{ };
|
||||
|
||||
static OPENTYPE_FEATURE_RECORD ethiopic_features[] =
|
||||
{
|
||||
{ MS_MAKE_TAG('c','c','m','p'), 1},
|
||||
{ MS_MAKE_TAG('l','o','c','l'), 1},
|
||||
{ MS_MAKE_TAG('c','a','l','t'), 1},
|
||||
{ MS_MAKE_TAG('l','i','g','a'), 1},
|
||||
};
|
||||
|
||||
typedef struct ScriptShapeDataTag {
|
||||
TEXTRANGE_PROPERTIES defaultTextRange;
|
||||
const char** requiredFeatures;
|
||||
|
@ -645,6 +653,8 @@ static const ScriptShapeData ShapingData[] =
|
|||
{{ no_features, 0}, NULL, "kana", "", NULL, NULL},
|
||||
{{ no_features, 0}, NULL, "hang", "", NULL, NULL},
|
||||
{{ no_features, 0}, NULL, "yi ", "", NULL, NULL},
|
||||
{{ ethiopic_features, 4}, NULL, "ethi", "", NULL, NULL},
|
||||
{{ ethiopic_features, 4}, NULL, "ethi", "", NULL, NULL},
|
||||
};
|
||||
|
||||
static INT GSUB_is_glyph_covered(LPCVOID table , UINT glyph)
|
||||
|
|
|
@ -158,6 +158,7 @@ static inline void _test_items_ok(LPCWSTR string, DWORD cchString,
|
|||
#define kana_tag MS_MAKE_TAG('k','a','n','a')
|
||||
#define hang_tag MS_MAKE_TAG('h','a','n','g')
|
||||
#define yi_tag MS_MAKE_TAG('y','i',' ',' ')
|
||||
#define ethi_tag MS_MAKE_TAG('e','t','h','i')
|
||||
|
||||
static void test_ScriptItemize( void )
|
||||
{
|
||||
|
@ -357,6 +358,11 @@ static void test_ScriptItemize( void )
|
|||
static const itemTest t331[2] = {{{0,0,0,0,0},0,0,0,0,yi_tag,FALSE},{{0,0,0,0,0},4,0,0,0,-1,FALSE}};
|
||||
static const itemTest t332[2] = {{{0,0,0,0,0},0,0,0,2,yi_tag,FALSE},{{0,0,0,0,0},4,0,0,0,-1,FALSE}};
|
||||
|
||||
/* Ethiopic */
|
||||
static const WCHAR test34[] = {0x130d,0x12d5,0x12dd};
|
||||
static const itemTest t341[2] = {{{0,0,0,0,0},0,0,0,0,ethi_tag,FALSE},{{0,0,0,0,0},3,0,0,0,-1,FALSE}};
|
||||
static const itemTest t342[2] = {{{0,0,0,0,0},0,0,0,2,ethi_tag,FALSE},{{0,0,0,0,0},3,0,0,0,-1,FALSE}};
|
||||
|
||||
SCRIPT_ITEM items[15];
|
||||
SCRIPT_CONTROL Control;
|
||||
SCRIPT_STATE State;
|
||||
|
@ -423,6 +429,7 @@ static void test_ScriptItemize( void )
|
|||
test_items_ok(test31,8,NULL,NULL,1,t311,FALSE,2);
|
||||
test_items_ok(test32,3,NULL,NULL,1,t321,FALSE,0);
|
||||
test_items_ok(test33,4,NULL,NULL,1,t331,FALSE,0);
|
||||
test_items_ok(test34,3,NULL,NULL,1,t341,FALSE,0);
|
||||
|
||||
State.uBidiLevel = 0;
|
||||
test_items_ok(test1,4,&Control,&State,1,t11,FALSE,0);
|
||||
|
@ -463,6 +470,7 @@ static void test_ScriptItemize( void )
|
|||
test_items_ok(test31,8,&Control,&State,1,t311,FALSE,2);
|
||||
test_items_ok(test32,3,&Control,&State,1,t321,FALSE,0);
|
||||
test_items_ok(test33,4,&Control,&State,1,t331,FALSE,0);
|
||||
test_items_ok(test34,3,&Control,&State,1,t341,FALSE,0);
|
||||
|
||||
State.uBidiLevel = 1;
|
||||
test_items_ok(test1,4,&Control,&State,1,t12,FALSE,0);
|
||||
|
@ -503,6 +511,7 @@ static void test_ScriptItemize( void )
|
|||
test_items_ok(test31,8,&Control,&State,1,t312,FALSE,2);
|
||||
test_items_ok(test32,3,&Control,&State,1,t322,FALSE,0);
|
||||
test_items_ok(test33,4,&Control,&State,1,t332,FALSE,0);
|
||||
test_items_ok(test34,3,&Control,&State,1,t342,FALSE,2);
|
||||
|
||||
State.uBidiLevel = 1;
|
||||
Control.fMergeNeutralItems = TRUE;
|
||||
|
@ -544,6 +553,7 @@ static void test_ScriptItemize( void )
|
|||
test_items_ok(test31,8,&Control,&State,1,t312,FALSE,2);
|
||||
test_items_ok(test32,3,&Control,&State,1,t322,FALSE,0);
|
||||
test_items_ok(test33,4,&Control,&State,1,t332,FALSE,0);
|
||||
test_items_ok(test34,3,&Control,&State,1,t342,FALSE,2);
|
||||
}
|
||||
|
||||
static inline void _test_shape_ok(int valid, HDC hdc, LPCWSTR string,
|
||||
|
|
|
@ -113,6 +113,9 @@ static const scriptRange scriptRanges[] = {
|
|||
{ Script_Georgian, 0x10a0, 0x10ff, 0, 0},
|
||||
/* Hangul Jamo: U+1100–U+11FF */
|
||||
{ Script_Hangul, 0x1100, 0x11ff, 0, 0},
|
||||
/* Ethiopic: U+1200–U+137F */
|
||||
/* Ethiopic Extensions: U+1380–U+139F */
|
||||
{ Script_Ethiopic, 0x1200, 0x139f, 0, 0},
|
||||
/* Khmer: U+1780–U+17FF */
|
||||
{ Script_Khmer, 0x1780, 0x17ff, Script_Khmer_Numeric, 0},
|
||||
/* Tai Le: U+1950–U+197F */
|
||||
|
@ -166,6 +169,8 @@ static const scriptRange scriptRanges[] = {
|
|||
{ Script_Latin, 0x2c60, 0x2c7f, 0, 0},
|
||||
/* Georgian: U+2D00–U+2D2F */
|
||||
{ Script_Georgian, 0x2d00, 0x2d2f, 0, 0},
|
||||
/* Ethiopic Extensions: U+2D80–U+2DDF */
|
||||
{ Script_Ethiopic, 0x2d80, 0x2ddf, 0, 0},
|
||||
/* Cyrillic Extended-A: U+2DE0–U+2DFF */
|
||||
{ Script_Cyrillic, 0x2de0, 0x2dff, 0, 0},
|
||||
/* CJK Radicals Supplement: U+2E80–U+2EFF */
|
||||
|
@ -509,6 +514,14 @@ static const scriptData scriptInformation[] = {
|
|||
{LANG_ENGLISH, 0, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0},
|
||||
MS_MAKE_TAG('y','i',' ',' '),
|
||||
{'M','i','c','r','o','s','o','f','t',' ','Y','i',' ','B','a','i','t','i'}},
|
||||
{{Script_Ethiopic, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
|
||||
{0x5e, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||
MS_MAKE_TAG('e','t','h','i'),
|
||||
{'N','y','a','l','a'}},
|
||||
{{Script_Ethiopic_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
|
||||
{0x5e, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||
MS_MAKE_TAG('e','t','h','i'),
|
||||
{'N','y','a','l','a'}},
|
||||
};
|
||||
|
||||
static const SCRIPT_PROPERTIES *script_props[] =
|
||||
|
@ -542,7 +555,8 @@ static const SCRIPT_PROPERTIES *script_props[] =
|
|||
&scriptInformation[52].props, &scriptInformation[53].props,
|
||||
&scriptInformation[54].props, &scriptInformation[55].props,
|
||||
&scriptInformation[56].props, &scriptInformation[57].props,
|
||||
&scriptInformation[58].props, &scriptInformation[59].props
|
||||
&scriptInformation[58].props, &scriptInformation[59].props,
|
||||
&scriptInformation[60].props, &scriptInformation[61].props
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
|
|
|
@ -90,6 +90,9 @@
|
|||
#define Script_Kana 57
|
||||
#define Script_Hangul 58
|
||||
#define Script_Yi 59
|
||||
/* Unicode Chapter 13 */
|
||||
#define Script_Ethiopic 60
|
||||
#define Script_Ethiopic_Numeric 61
|
||||
|
||||
#define GLYPH_BLOCK_SHIFT 8
|
||||
#define GLYPH_BLOCK_SIZE (1UL << GLYPH_BLOCK_SHIFT)
|
||||
|
|
Loading…
Reference in New Issue