Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
7cd9269f
T
Third Party Harfbuzz
项目概览
OpenHarmony
/
Third Party Harfbuzz
1 年多 前同步成功
通知
0
Star
18
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Harfbuzz
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
7cd9269f
编写于
5月 06, 2016
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update tables to Unicode 9.0.0 beta
Fixes
https://github.com/behdad/harfbuzz/issues/251
上级
f718fe37
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
196 addition
and
83 deletion
+196
-83
src/hb-ot-shape-complex-arabic-table.hh
src/hb-ot-shape-complex-arabic-table.hh
+34
-22
src/hb-ot-shape-complex-indic-table.cc
src/hb-ot-shape-complex-indic-table.cc
+99
-38
src/hb-ot-shape-complex-use-table.cc
src/hb-ot-shape-complex-use-table.cc
+63
-23
未找到文件。
src/hb-ot-shape-complex-arabic-table.hh
浏览文件 @
7cd9269f
...
...
@@ -6,10 +6,10 @@
*
* on files with these headers:
*
* # ArabicShaping-
8
.0.0.txt
* # Date: 201
5-02-17, 23:33
:00 GMT [RP]
* # Blocks-
8
.0.0.txt
* # Date: 201
4-11-10, 23:04
:00 GMT [KW]
* # ArabicShaping-
9
.0.0.txt
* # Date: 201
6-02-24, 22:25
:00 GMT [RP]
* # Blocks-
9
.0.0.txt
* # Date: 201
6-02-05, 23:48
:00 GMT [KW]
* UnicodeData.txt does not have a header.
*/
...
...
@@ -19,6 +19,7 @@
#define X JOINING_TYPE_X
#define R JOINING_TYPE_R
#define T JOINING_TYPE_T
#define U JOINING_TYPE_U
#define A JOINING_GROUP_ALAPH
#define DR JOINING_GROUP_DALATH_RISH
...
...
@@ -76,9 +77,11 @@ static const uint8_t joining_table[] =
/* Arabic Extended-A */
/* 08A0 */
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
R
,
R
,
R
,
U
,
R
,
D
,
D
,
R
,
R
,
D
,
D
,
/* 08A0 */
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
R
,
R
,
R
,
U
,
R
,
D
,
D
,
R
,
R
,
D
,
D
,
X
,
D
,
D
,
D
,
R
,
D
,
D
,
D
,
D
,
X
,
X
,
/* 08C0 */
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
/* 08E0 */
X
,
X
,
U
,
#define joining_offset_0x1806u
693
#define joining_offset_0x1806u
739
/* Mongolian */
...
...
@@ -86,43 +89,48 @@ static const uint8_t joining_table[] =
/* 1820 */
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
/* 1840 */
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
/* 1860 */
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
/* 1880 */
U
,
U
,
U
,
U
,
U
,
U
,
U
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
/* 1880 */
U
,
U
,
U
,
U
,
U
,
T
,
T
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
/* 18A0 */
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
X
,
D
,
#define joining_offset_0x200cu
858
#define joining_offset_0x200cu
904
/* General Punctuation */
/* 2000 */
U
,
C
,
/* 2000 */
U
,
C
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
/* 2020 */
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
U
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
/* 2040 */
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
/* 2060 */
X
,
X
,
X
,
X
,
X
,
X
,
U
,
U
,
U
,
U
,
#define joining_offset_0x2066u 860
/* General Punctuation */
/* 2060 */
U
,
U
,
U
,
U
,
#define joining_offset_0xa840u 864
#define joining_offset_0xa840u 998
/* Phags-pa */
/* A840 */
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
/* A860 */
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
L
,
U
,
#define joining_offset_0x10ac0u
916
#define joining_offset_0x10ac0u
1050
/* Manichaean */
/* 10AC0 */
D
,
D
,
D
,
D
,
D
,
R
,
U
,
R
,
U
,
R
,
R
,
U
,
U
,
L
,
R
,
R
,
R
,
R
,
R
,
D
,
D
,
D
,
D
,
L
,
D
,
D
,
D
,
D
,
D
,
R
,
D
,
D
,
/* 10AE0 */
D
,
R
,
U
,
U
,
R
,
X
,
X
,
X
,
X
,
X
,
X
,
D
,
D
,
D
,
D
,
R
,
#define joining_offset_0x10b80u
964
#define joining_offset_0x10b80u
1098
/* Psalter Pahlavi */
/* 10B80 */
D
,
R
,
D
,
R
,
R
,
R
,
D
,
D
,
D
,
R
,
D
,
D
,
R
,
D
,
R
,
R
,
D
,
R
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
/* 10BA0 */
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
X
,
R
,
R
,
R
,
R
,
D
,
D
,
U
,
};
/* Table items: 1012; occupancy: 57% */
#define joining_offset_0x1e900u 1146
/* Adlam */
/* 1E900 */
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
/* 1E920 */
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
D
,
/* 1E940 */
D
,
D
,
D
,
D
,
};
/* Table items: 1214; occupancy: 54% */
static
unsigned
int
...
...
@@ -131,7 +139,7 @@ joining_type (hb_codepoint_t u)
switch
(
u
>>
12
)
{
case
0x0u
:
if
(
hb_in_range
(
u
,
0x0600u
,
0x08
B4
u
))
return
joining_table
[
u
-
0x0600u
+
joining_offset_0x0600u
];
if
(
hb_in_range
(
u
,
0x0600u
,
0x08
E2
u
))
return
joining_table
[
u
-
0x0600u
+
joining_offset_0x0600u
];
break
;
case
0x1u
:
...
...
@@ -139,8 +147,7 @@ joining_type (hb_codepoint_t u)
break
;
case
0x2u
:
if
(
hb_in_range
(
u
,
0x200Cu
,
0x200Du
))
return
joining_table
[
u
-
0x200Cu
+
joining_offset_0x200cu
];
if
(
hb_in_range
(
u
,
0x2066u
,
0x2069u
))
return
joining_table
[
u
-
0x2066u
+
joining_offset_0x2066u
];
if
(
hb_in_range
(
u
,
0x200Cu
,
0x2069u
))
return
joining_table
[
u
-
0x200Cu
+
joining_offset_0x200cu
];
break
;
case
0xAu
:
...
...
@@ -152,6 +159,10 @@ joining_type (hb_codepoint_t u)
if
(
hb_in_range
(
u
,
0x10B80u
,
0x10BAFu
))
return
joining_table
[
u
-
0x10B80u
+
joining_offset_0x10b80u
];
break
;
case
0x1Eu
:
if
(
hb_in_range
(
u
,
0x1E900u
,
0x1E943u
))
return
joining_table
[
u
-
0x1E900u
+
joining_offset_0x1e900u
];
break
;
default:
break
;
}
...
...
@@ -160,6 +171,7 @@ joining_type (hb_codepoint_t u)
#undef X
#undef R
#undef T
#undef U
#undef A
#undef DR
...
...
src/hb-ot-shape-complex-indic-table.cc
浏览文件 @
7cd9269f
...
...
@@ -6,23 +6,23 @@
*
* on files with these headers:
*
* # IndicSyllabicCategory-
8
.0.0.txt
* # Date: 201
5-05-12, 10:00:00 GMT [RP, KW, LI
]
* # IndicPositionalCategory-
8
.0.0.txt
* # Date: 201
5-05-12, 10:00:00 GMT [RP, KW, LI
]
* # Blocks-
8
.0.0.txt
* # Date: 201
4-11-10, 23:04
:00 GMT [KW]
* # IndicSyllabicCategory-
9
.0.0.txt
* # Date: 201
6-02-25, 00:48:00 GMT [RP
]
* # IndicPositionalCategory-
9
.0.0.txt
* # Date: 201
6-02-25, 00:48:00 GMT [RP
]
* # Blocks-
9
.0.0.txt
* # Date: 201
6-02-05, 23:48
:00 GMT [KW]
*/
#include "hb-ot-shape-complex-indic-private.hh"
#define ISC_A INDIC_SYLLABIC_CATEGORY_AVAGRAHA
/* 1
3
chars; Avagraha */
#define ISC_Bi INDIC_SYLLABIC_CATEGORY_BINDU
/* 6
0
chars; Bindu */
#define ISC_A INDIC_SYLLABIC_CATEGORY_AVAGRAHA
/* 1
5
chars; Avagraha */
#define ISC_Bi INDIC_SYLLABIC_CATEGORY_BINDU
/* 6
7
chars; Bindu */
#define ISC_BJN INDIC_SYLLABIC_CATEGORY_BRAHMI_JOINING_NUMBER
/* 20 chars; Brahmi_Joining_Number */
#define ISC_Ca INDIC_SYLLABIC_CATEGORY_CANTILLATION_MARK
/* 5
2
chars; Cantillation_Mark */
#define ISC_C INDIC_SYLLABIC_CATEGORY_CONSONANT
/* 1
805
chars; Consonant */
#define ISC_CD INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD
/*
7
chars; Consonant_Dead */
#define ISC_Ca INDIC_SYLLABIC_CATEGORY_CANTILLATION_MARK
/* 5
3
chars; Cantillation_Mark */
#define ISC_C INDIC_SYLLABIC_CATEGORY_CONSONANT
/* 1
907
chars; Consonant */
#define ISC_CD INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD
/*
10
chars; Consonant_Dead */
#define ISC_CF INDIC_SYLLABIC_CATEGORY_CONSONANT_FINAL
/* 62 chars; Consonant_Final */
#define ISC_CHL INDIC_SYLLABIC_CATEGORY_CONSONANT_HEAD_LETTER
/* 5 chars; Consonant_Head_Letter */
#define ISC_CK INDIC_SYLLABIC_CATEGORY_CONSONANT_KILLER
/* 2 chars; Consonant_Killer */
...
...
@@ -30,7 +30,7 @@
#define ISC_CP INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER
/* 13 chars; Consonant_Placeholder */
#define ISC_CPR INDIC_SYLLABIC_CATEGORY_CONSONANT_PRECEDING_REPHA
/* 1 chars; Consonant_Preceding_Repha */
#define ISC_CPrf INDIC_SYLLABIC_CATEGORY_CONSONANT_PREFIXED
/* 2 chars; Consonant_Prefixed */
#define ISC_CS INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED
/*
61
chars; Consonant_Subjoined */
#define ISC_CS INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED
/*
90
chars; Consonant_Subjoined */
#define ISC_CSR INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA
/* 4 chars; Consonant_Succeeding_Repha */
#define ISC_CWS INDIC_SYLLABIC_CATEGORY_CONSONANT_WITH_STACKER
/* 4 chars; Consonant_With_Stacker */
#define ISC_GM INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK
/* 2 chars; Gemination_Mark */
...
...
@@ -38,29 +38,29 @@
#define ISC_ZWJ INDIC_SYLLABIC_CATEGORY_JOINER
/* 1 chars; Joiner */
#define ISC_ML INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER
/* 1 chars; Modifying_Letter */
#define ISC_ZWNJ INDIC_SYLLABIC_CATEGORY_NON_JOINER
/* 1 chars; Non_Joiner */
#define ISC_N INDIC_SYLLABIC_CATEGORY_NUKTA
/* 2
3
chars; Nukta */
#define ISC_Nd INDIC_SYLLABIC_CATEGORY_NUMBER
/* 4
20
chars; Number */
#define ISC_N INDIC_SYLLABIC_CATEGORY_NUKTA
/* 2
4
chars; Nukta */
#define ISC_Nd INDIC_SYLLABIC_CATEGORY_NUMBER
/* 4
59
chars; Number */
#define ISC_NJ INDIC_SYLLABIC_CATEGORY_NUMBER_JOINER
/* 1 chars; Number_Joiner */
#define ISC_x INDIC_SYLLABIC_CATEGORY_OTHER
/* 1 chars; Other */
#define ISC_PK INDIC_SYLLABIC_CATEGORY_PURE_KILLER
/* 16 chars; Pure_Killer */
#define ISC_RS INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER
/* 2 chars; Register_Shifter */
#define ISC_SM INDIC_SYLLABIC_CATEGORY_SYLLABLE_MODIFIER
/* 2
0
chars; Syllable_Modifier */
#define ISC_SM INDIC_SYLLABIC_CATEGORY_SYLLABLE_MODIFIER
/* 2
1
chars; Syllable_Modifier */
#define ISC_TL INDIC_SYLLABIC_CATEGORY_TONE_LETTER
/* 7 chars; Tone_Letter */
#define ISC_TM INDIC_SYLLABIC_CATEGORY_TONE_MARK
/* 42 chars; Tone_Mark */
#define ISC_V INDIC_SYLLABIC_CATEGORY_VIRAMA
/* 2
2
chars; Virama */
#define ISC_Vs INDIC_SYLLABIC_CATEGORY_VISARGA
/*
29
chars; Visarga */
#define ISC_V INDIC_SYLLABIC_CATEGORY_VIRAMA
/* 2
4
chars; Virama */
#define ISC_Vs INDIC_SYLLABIC_CATEGORY_VISARGA
/*
31
chars; Visarga */
#define ISC_Vo INDIC_SYLLABIC_CATEGORY_VOWEL
/* 30 chars; Vowel */
#define ISC_M INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT
/*
57
2 chars; Vowel_Dependent */
#define ISC_VI INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT
/* 4
04
chars; Vowel_Independent */
#define ISC_M INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT
/*
60
2 chars; Vowel_Dependent */
#define ISC_VI INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT
/* 4
31
chars; Vowel_Independent */
#define IMC_B INDIC_MATRA_CATEGORY_BOTTOM
/*
256
chars; Bottom */
#define IMC_B INDIC_MATRA_CATEGORY_BOTTOM
/*
300
chars; Bottom */
#define IMC_BR INDIC_MATRA_CATEGORY_BOTTOM_AND_RIGHT
/* 2 chars; Bottom_And_Right */
#define IMC_L INDIC_MATRA_CATEGORY_LEFT
/* 5
5
chars; Left */
#define IMC_L INDIC_MATRA_CATEGORY_LEFT
/* 5
7
chars; Left */
#define IMC_LR INDIC_MATRA_CATEGORY_LEFT_AND_RIGHT
/* 21 chars; Left_And_Right */
#define IMC_x INDIC_MATRA_CATEGORY_NOT_APPLICABLE
/* 1 chars; Not_Applicable */
#define IMC_O INDIC_MATRA_CATEGORY_OVERSTRUCK
/* 10 chars; Overstruck */
#define IMC_R INDIC_MATRA_CATEGORY_RIGHT
/* 2
49
chars; Right */
#define IMC_T INDIC_MATRA_CATEGORY_TOP
/* 3
24
chars; Top */
#define IMC_R INDIC_MATRA_CATEGORY_RIGHT
/* 2
58
chars; Right */
#define IMC_T INDIC_MATRA_CATEGORY_TOP
/* 3
42
chars; Top */
#define IMC_TB INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM
/* 10 chars; Top_And_Bottom */
#define IMC_TBR INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM_AND_RIGHT
/* 1 chars; Top_And_Bottom_And_Right */
#define IMC_TL INDIC_MATRA_CATEGORY_TOP_AND_LEFT
/* 6 chars; Top_And_Left */
...
...
@@ -261,7 +261,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 0D38 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
A
,
x
),
_
(
M
,
R
),
_
(
M
,
R
),
/* 0D40 */
_
(
M
,
R
),
_
(
M
,
R
),
_
(
M
,
R
),
_
(
M
,
B
),
_
(
M
,
B
),
_
(
x
,
x
),
_
(
M
,
L
),
_
(
M
,
L
),
/* 0D48 */
_
(
M
,
L
),
_
(
x
,
x
),
_
(
M
,
LR
),
_
(
M
,
LR
),
_
(
M
,
LR
),
_
(
V
,
T
),
_
(
CPR
,
x
),
_
(
x
,
x
),
/* 0D50 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
M
,
R
),
/* 0D50 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
CD
,
x
),
_
(
CD
,
x
),
_
(
CD
,
x
),
_
(
M
,
R
),
/* 0D58 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
VI
,
x
),
/* 0D60 */
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
M
,
B
),
_
(
M
,
B
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
/* 0D68 */
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
...
...
@@ -499,7 +499,14 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 1CF0 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
Vs
,
x
),
_
(
Vs
,
x
),
_
(
Ca
,
T
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
/* 1CF8 */
_
(
Ca
,
x
),
_
(
Ca
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
#define indic_offset_0x2008u 2536
#define indic_offset_0x1df8u 2536
/* Combining Diacritical Marks Supplement */
/* 1DF8 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
SM
,
T
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
#define indic_offset_0x2008u 2544
/* General Punctuation */
...
...
@@ -507,7 +514,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 2008 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
ZWNJ
,
x
),
_
(
ZWJ
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
/* 2010 */
_
(
CP
,
x
),
_
(
CP
,
x
),
_
(
CP
,
x
),
_
(
CP
,
x
),
_
(
CP
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
#define indic_offset_0x2070u 25
52
#define indic_offset_0x2070u 25
60
/* Superscripts and Subscripts */
...
...
@@ -516,7 +523,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 2078 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
/* 2080 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
SM
,
x
),
_
(
SM
,
x
),
_
(
SM
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
#define indic_offset_0xa800u 25
76
#define indic_offset_0xa800u 25
84
/* Syloti Nagri */
...
...
@@ -551,7 +558,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* A8A8 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
/* A8B0 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
CF
,
R
),
_
(
M
,
R
),
_
(
M
,
R
),
_
(
M
,
R
),
/* A8B8 */
_
(
M
,
R
),
_
(
M
,
R
),
_
(
M
,
R
),
_
(
M
,
R
),
_
(
M
,
R
),
_
(
M
,
R
),
_
(
M
,
R
),
_
(
M
,
R
),
/* A8C0 */
_
(
M
,
R
),
_
(
M
,
R
),
_
(
M
,
R
),
_
(
M
,
R
),
_
(
V
,
B
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
/* A8C0 */
_
(
M
,
R
),
_
(
M
,
R
),
_
(
M
,
R
),
_
(
M
,
R
),
_
(
V
,
B
),
_
(
Bi
,
T
),
_
(
x
,
x
),
_
(
x
,
x
),
/* A8C8 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
/* A8D0 */
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
/* A8D8 */
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
...
...
@@ -650,7 +657,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* AAE8 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
M
,
L
),
_
(
M
,
B
),
_
(
M
,
T
),
_
(
M
,
L
),
_
(
M
,
R
),
/* AAF0 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
Vs
,
R
),
_
(
IS
,
x
),
_
(
x
,
x
),
#define indic_offset_0xabc0u 33
36
#define indic_offset_0xabc0u 33
44
/* Meetei Mayek */
...
...
@@ -664,7 +671,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* ABF0 */
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
/* ABF8 */
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
#define indic_offset_0x10a00u 340
0
#define indic_offset_0x10a00u 340
8
/* Kharoshthi */
...
...
@@ -679,7 +686,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 10A38 */
_
(
N
,
T
),
_
(
N
,
B
),
_
(
N
,
B
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
IS
,
x
),
/* 10A40 */
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
#define indic_offset_0x11000u 34
72
#define indic_offset_0x11000u 34
80
/* Brahmi */
...
...
@@ -712,7 +719,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 110B0 */
_
(
M
,
R
),
_
(
M
,
L
),
_
(
M
,
R
),
_
(
M
,
B
),
_
(
M
,
B
),
_
(
M
,
T
),
_
(
M
,
T
),
_
(
M
,
R
),
/* 110B8 */
_
(
M
,
R
),
_
(
V
,
B
),
_
(
N
,
B
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
#define indic_offset_0x11100u 36
64
#define indic_offset_0x11100u 36
72
/* Chakma */
...
...
@@ -768,8 +775,9 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 11220 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
/* 11228 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
M
,
R
),
_
(
M
,
R
),
_
(
M
,
R
),
_
(
M
,
B
),
/* 11230 */
_
(
M
,
T
),
_
(
M
,
T
),
_
(
M
,
TR
),
_
(
M
,
TR
),
_
(
Bi
,
T
),
_
(
V
,
R
),
_
(
N
,
T
),
_
(
GM
,
T
),
/* 11238 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
Ca
,
T
),
_
(
x
,
x
),
#define indic_offset_0x11280u 39
76
#define indic_offset_0x11280u 39
92
/* Multani */
...
...
@@ -812,8 +820,27 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 11368 */
_
(
Ca
,
T
),
_
(
Ca
,
T
),
_
(
Ca
,
T
),
_
(
Ca
,
T
),
_
(
Ca
,
T
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
/* 11370 */
_
(
Ca
,
T
),
_
(
Ca
,
T
),
_
(
Ca
,
T
),
_
(
Ca
,
T
),
_
(
Ca
,
T
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
#define indic_offset_0x11480u 4224
#define indic_offset_0x11400u 4240
/* Newa */
/* 11400 */
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
/* 11408 */
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
/* 11410 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
/* 11418 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
/* 11420 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
/* 11428 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
/* 11430 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
M
,
R
),
_
(
M
,
L
),
_
(
M
,
R
),
/* 11438 */
_
(
M
,
B
),
_
(
M
,
B
),
_
(
M
,
B
),
_
(
M
,
B
),
_
(
M
,
B
),
_
(
M
,
B
),
_
(
M
,
T
),
_
(
M
,
T
),
/* 11440 */
_
(
M
,
R
),
_
(
M
,
R
),
_
(
V
,
B
),
_
(
Bi
,
T
),
_
(
Bi
,
T
),
_
(
Vs
,
R
),
_
(
N
,
B
),
_
(
A
,
x
),
/* 11448 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
/* 11450 */
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
/* 11458 */
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
/* 11460 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
/* 11468 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
/* 11470 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
/* 11478 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
/* Tirhuta */
...
...
@@ -830,7 +857,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 114D0 */
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
/* 114D8 */
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
#define indic_offset_0x11580u 4
320
#define indic_offset_0x11580u 4
464
/* Siddham */
...
...
@@ -901,7 +928,39 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 11730 */
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
/* 11738 */
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
};
/* Table items: 4768; occupancy: 72% */
#define indic_offset_0x11c00u 4912
/* Bhaiksuki */
/* 11C00 */
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
/* 11C08 */
_
(
VI
,
x
),
_
(
x
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
VI
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
/* 11C10 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
/* 11C18 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
/* 11C20 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
/* 11C28 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
M
,
R
),
/* 11C30 */
_
(
M
,
T
),
_
(
M
,
T
),
_
(
M
,
B
),
_
(
M
,
B
),
_
(
M
,
B
),
_
(
M
,
B
),
_
(
M
,
B
),
_
(
x
,
x
),
/* 11C38 */
_
(
M
,
T
),
_
(
M
,
T
),
_
(
M
,
T
),
_
(
M
,
T
),
_
(
Bi
,
T
),
_
(
Bi
,
T
),
_
(
Vs
,
R
),
_
(
V
,
B
),
/* 11C40 */
_
(
A
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
/* 11C48 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
/* 11C50 */
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
/* 11C58 */
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
/* 11C60 */
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
/* 11C68 */
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
Nd
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
_
(
x
,
x
),
/* Marchen */
/* 11C70 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
/* 11C78 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
/* 11C80 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
/* 11C88 */
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
_
(
C
,
x
),
/* 11C90 */
_
(
x
,
x
),
_
(
x
,
x
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
/* 11C98 */
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
/* 11CA0 */
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
/* 11CA8 */
_
(
x
,
x
),
_
(
CS
,
R
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
_
(
CS
,
B
),
/* 11CB0 */
_
(
M
,
B
),
_
(
M
,
L
),
_
(
M
,
B
),
_
(
M
,
T
),
_
(
M
,
R
),
_
(
Bi
,
T
),
_
(
Bi
,
T
),
_
(
x
,
x
),
};
/* Table items: 5096; occupancy: 72% */
INDIC_TABLE_ELEMENT_TYPE
hb_indic_get_categories
(
hb_codepoint_t
u
)
...
...
@@ -921,6 +980,7 @@ hb_indic_get_categories (hb_codepoint_t u)
if
(
hb_in_range
(
u
,
0x1900u
,
0x1A9Fu
))
return
indic_table
[
u
-
0x1900u
+
indic_offset_0x1900u
];
if
(
hb_in_range
(
u
,
0x1B00u
,
0x1C4Fu
))
return
indic_table
[
u
-
0x1B00u
+
indic_offset_0x1b00u
];
if
(
hb_in_range
(
u
,
0x1CD0u
,
0x1CFFu
))
return
indic_table
[
u
-
0x1CD0u
+
indic_offset_0x1cd0u
];
if
(
hb_in_range
(
u
,
0x1DF8u
,
0x1DFFu
))
return
indic_table
[
u
-
0x1DF8u
+
indic_offset_0x1df8u
];
break
;
case
0x2u
:
...
...
@@ -940,10 +1000,11 @@ hb_indic_get_categories (hb_codepoint_t u)
case
0x11u
:
if
(
hb_in_range
(
u
,
0x11000u
,
0x110BFu
))
return
indic_table
[
u
-
0x11000u
+
indic_offset_0x11000u
];
if
(
hb_in_range
(
u
,
0x11100u
,
0x1123
7
u
))
return
indic_table
[
u
-
0x11100u
+
indic_offset_0x11100u
];
if
(
hb_in_range
(
u
,
0x11100u
,
0x1123
F
u
))
return
indic_table
[
u
-
0x11100u
+
indic_offset_0x11100u
];
if
(
hb_in_range
(
u
,
0x11280u
,
0x11377u
))
return
indic_table
[
u
-
0x11280u
+
indic_offset_0x11280u
];
if
(
hb_in_range
(
u
,
0x114
80u
,
0x114DFu
))
return
indic_table
[
u
-
0x11480u
+
indic_offset_0x1148
0u
];
if
(
hb_in_range
(
u
,
0x114
00u
,
0x114DFu
))
return
indic_table
[
u
-
0x11400u
+
indic_offset_0x1140
0u
];
if
(
hb_in_range
(
u
,
0x11580u
,
0x1173Fu
))
return
indic_table
[
u
-
0x11580u
+
indic_offset_0x11580u
];
if
(
hb_in_range
(
u
,
0x11C00u
,
0x11CB7u
))
return
indic_table
[
u
-
0x11C00u
+
indic_offset_0x11c00u
];
break
;
default:
...
...
src/hb-ot-shape-complex-use-table.cc
浏览文件 @
7cd9269f
...
...
@@ -6,12 +6,12 @@
*
* on files with these headers:
*
* # IndicSyllabicCategory-
8
.0.0.txt
* # Date: 201
5-05-12, 10:00:00 GMT [RP, KW, LI
]
* # IndicPositionalCategory-
8
.0.0.txt
* # Date: 201
5-05-12, 10:00:00 GMT [RP, KW, LI
]
* # Blocks-
8
.0.0.txt
* # Date: 201
4-11-10, 23:04
:00 GMT [KW]
* # IndicSyllabicCategory-
9
.0.0.txt
* # Date: 201
6-02-25, 00:48:00 GMT [RP
]
* # IndicPositionalCategory-
9
.0.0.txt
* # Date: 201
6-02-25, 00:48:00 GMT [RP
]
* # Blocks-
9
.0.0.txt
* # Date: 201
6-02-05, 23:48
:00 GMT [KW]
* UnicodeData.txt does not have a header.
*/
...
...
@@ -173,7 +173,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 0D20 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
/* 0D30 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
O
,
O
,
B
,
VPst
,
VPst
,
/* 0D40 */
VPst
,
VPst
,
VPst
,
VBlw
,
VBlw
,
O
,
VPre
,
VPre
,
VPre
,
O
,
VPre
,
VPre
,
VPre
,
H
,
R
,
O
,
/* 0D50 */
O
,
O
,
O
,
O
,
O
,
O
,
O
,
VPst
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
IV
,
/* 0D50 */
O
,
O
,
O
,
O
,
IND
,
IND
,
IND
,
VPst
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
IV
,
/* 0D60 */
IV
,
IV
,
VBlw
,
VBlw
,
O
,
O
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
/* 0D70 */
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
IND
,
IND
,
IND
,
IND
,
IND
,
IND
,
...
...
@@ -326,14 +326,20 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 1CE0 */
VMAbv
,
VMPst
,
VMBlw
,
VMBlw
,
VMBlw
,
VMBlw
,
VMBlw
,
VMBlw
,
VMBlw
,
O
,
O
,
O
,
O
,
VMBlw
,
O
,
O
,
/* 1CF0 */
O
,
O
,
VMPst
,
VMPst
,
VMAbv
,
O
,
O
,
O
,
VMAbv
,
VMAbv
,
O
,
O
,
O
,
O
,
O
,
O
,
#define use_offset_0x2008u 2552
#define use_offset_0x1df8u 2552
/* Combining Diacritical Marks Supplement */
O
,
O
,
O
,
FM
,
O
,
O
,
O
,
O
,
#define use_offset_0x2008u 2560
/* General Punctuation */
O
,
O
,
O
,
O
,
ZWNJ
,
ZWJ
,
O
,
O
,
/* 2010 */
GB
,
GB
,
GB
,
GB
,
GB
,
O
,
O
,
O
,
#define use_offset_0x2060u 25
68
#define use_offset_0x2060u 25
76
/* 2060 */
WJ
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
...
...
@@ -342,7 +348,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 2070 */
O
,
O
,
O
,
O
,
FM
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
/* 2080 */
O
,
O
,
FM
,
FM
,
FM
,
O
,
O
,
O
,
#define use_offset_0xa800u 26
08
#define use_offset_0xa800u 26
16
/* Syloti Nagri */
...
...
@@ -365,7 +371,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* A890 */
IV
,
IV
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
/* A8A0 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
/* A8B0 */
B
,
B
,
B
,
B
,
FPst
,
VPst
,
VPst
,
VPst
,
VPst
,
VPst
,
VPst
,
VPst
,
VPst
,
VPst
,
VPst
,
VPst
,
/* A8C0 */
VPst
,
VPst
,
VPst
,
VPst
,
H
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
/* A8C0 */
VPst
,
VPst
,
VPst
,
VPst
,
H
,
VMAbv
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
/* A8D0 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
O
,
O
,
O
,
O
,
O
,
O
,
/* Devanagari Extended */
...
...
@@ -429,7 +435,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* AAE0 */
IV
,
IV
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
VPre
,
VBlw
,
VAbv
,
VPre
,
VPst
,
/* AAF0 */
O
,
O
,
O
,
O
,
O
,
VMPst
,
H
,
O
,
#define use_offset_0xabc0u 33
68
#define use_offset_0xabc0u 33
76
/* Meetei Mayek */
...
...
@@ -439,14 +445,14 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* ABE0 */
B
,
B
,
B
,
VPst
,
VPst
,
VAbv
,
VPst
,
VPst
,
VBlw
,
VPst
,
VPst
,
O
,
VMPst
,
VBlw
,
O
,
O
,
/* ABF0 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
O
,
O
,
O
,
O
,
O
,
O
,
#define use_offset_0xfe00u 34
32
#define use_offset_0xfe00u 34
40
/* Variation Selectors */
/* FE00 */
VS
,
VS
,
VS
,
VS
,
VS
,
VS
,
VS
,
VS
,
VS
,
VS
,
VS
,
VS
,
VS
,
VS
,
VS
,
VS
,
#define use_offset_0x10a00u 34
48
#define use_offset_0x10a00u 34
56
/* Kharoshthi */
...
...
@@ -457,7 +463,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 10A30 */
B
,
B
,
B
,
B
,
O
,
O
,
O
,
O
,
CMAbv
,
CMBlw
,
CMBlw
,
O
,
O
,
O
,
O
,
H
,
/* 10A40 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
#define use_offset_0x11000u 352
0
#define use_offset_0x11000u 352
8
/* Brahmi */
...
...
@@ -478,7 +484,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 110A0 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
/* 110B0 */
VPst
,
VPre
,
VPst
,
VBlw
,
VBlw
,
VAbv
,
VAbv
,
VPst
,
VPst
,
H
,
CMBlw
,
O
,
O
,
O
,
O
,
O
,
#define use_offset_0x11100u 37
12
#define use_offset_0x11100u 37
20
/* Chakma */
...
...
@@ -514,9 +520,9 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 11200 */
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
/* 11210 */
B
,
B
,
O
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
/* 11220 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
VPst
,
VPst
,
VPst
,
VBlw
,
/* 11230 */
VAbv
,
VAbv
,
VAbv
,
VAbv
,
VMAbv
,
H
,
CMAbv
,
CMAbv
,
/* 11230 */
VAbv
,
VAbv
,
VAbv
,
VAbv
,
VMAbv
,
H
,
CMAbv
,
CMAbv
,
O
,
O
,
O
,
O
,
O
,
O
,
VMAbv
,
O
,
#define use_offset_0x11280u 40
24
#define use_offset_0x11280u 40
40
/* Multani */
...
...
@@ -544,9 +550,20 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 11360 */
IV
,
IV
,
VPst
,
VPst
,
O
,
O
,
VMAbv
,
VMAbv
,
VMAbv
,
VMAbv
,
VMAbv
,
VMAbv
,
VMAbv
,
O
,
O
,
O
,
/* 11370 */
VMAbv
,
VMAbv
,
VMAbv
,
VMAbv
,
VMAbv
,
O
,
O
,
O
,
#define use_offset_0x114
80u 4272
#define use_offset_0x114
00u 4288
/* Newa */
/* 11400 */
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
B
,
B
,
/* 11410 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
/* 11420 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
/* 11430 */
B
,
B
,
B
,
B
,
B
,
VPst
,
VPre
,
VPst
,
VBlw
,
VBlw
,
VBlw
,
VBlw
,
VBlw
,
VBlw
,
VAbv
,
VAbv
,
/* 11440 */
VPst
,
VPst
,
H
,
VMAbv
,
VMAbv
,
VMPst
,
CMBlw
,
B
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
/* 11450 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
O
,
O
,
O
,
O
,
O
,
O
,
/* 11460 */
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
/* 11470 */
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
/* Tirhuta */
/* 11480 */
O
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
B
,
...
...
@@ -556,7 +573,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 114C0 */
VMAbv
,
VMPst
,
H
,
CMBlw
,
B
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
/* 114D0 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
O
,
O
,
O
,
O
,
O
,
O
,
#define use_offset_0x11580u 4
368
#define use_offset_0x11580u 4
512
/* Siddham */
...
...
@@ -599,7 +616,28 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 11720 */
VPst
,
VPst
,
VAbv
,
VAbv
,
VBlw
,
VBlw
,
VPre
,
VAbv
,
VBlw
,
VAbv
,
VAbv
,
VAbv
,
O
,
O
,
O
,
O
,
/* 11730 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
O
,
O
,
O
,
O
,
};
/* Table items: 4816; occupancy: 72% */
#define use_offset_0x11c00u 4960
/* Bhaiksuki */
/* 11C00 */
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
IV
,
O
,
IV
,
IV
,
IV
,
IV
,
B
,
B
,
/* 11C10 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
/* 11C20 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
VPst
,
/* 11C30 */
VAbv
,
VAbv
,
VBlw
,
VBlw
,
VBlw
,
VBlw
,
VBlw
,
O
,
VAbv
,
VAbv
,
VAbv
,
VAbv
,
VMAbv
,
VMAbv
,
VMPst
,
H
,
/* 11C40 */
B
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
O
,
/* 11C50 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
/* 11C60 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
O
,
O
,
O
,
/* Marchen */
/* 11C70 */
O
,
O
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
/* 11C80 */
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
B
,
/* 11C90 */
O
,
O
,
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
/* 11CA0 */
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
O
,
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
SUB
,
/* 11CB0 */
VBlw
,
VPre
,
VBlw
,
VAbv
,
VPst
,
VMAbv
,
VMAbv
,
O
,
};
/* Table items: 5144; occupancy: 72% */
USE_TABLE_ELEMENT_TYPE
hb_use_get_categories
(
hb_codepoint_t
u
)
...
...
@@ -619,6 +657,7 @@ hb_use_get_categories (hb_codepoint_t u)
if
(
hb_in_range
(
u
,
0x1900u
,
0x1A9Fu
))
return
use_table
[
u
-
0x1900u
+
use_offset_0x1900u
];
if
(
hb_in_range
(
u
,
0x1B00u
,
0x1C4Fu
))
return
use_table
[
u
-
0x1B00u
+
use_offset_0x1b00u
];
if
(
hb_in_range
(
u
,
0x1CD0u
,
0x1CFFu
))
return
use_table
[
u
-
0x1CD0u
+
use_offset_0x1cd0u
];
if
(
hb_in_range
(
u
,
0x1DF8u
,
0x1DFFu
))
return
use_table
[
u
-
0x1DF8u
+
use_offset_0x1df8u
];
break
;
case
0x2u
:
...
...
@@ -642,10 +681,11 @@ hb_use_get_categories (hb_codepoint_t u)
case
0x11u
:
if
(
hb_in_range
(
u
,
0x11000u
,
0x110BFu
))
return
use_table
[
u
-
0x11000u
+
use_offset_0x11000u
];
if
(
hb_in_range
(
u
,
0x11100u
,
0x1123
7
u
))
return
use_table
[
u
-
0x11100u
+
use_offset_0x11100u
];
if
(
hb_in_range
(
u
,
0x11100u
,
0x1123
F
u
))
return
use_table
[
u
-
0x11100u
+
use_offset_0x11100u
];
if
(
hb_in_range
(
u
,
0x11280u
,
0x11377u
))
return
use_table
[
u
-
0x11280u
+
use_offset_0x11280u
];
if
(
hb_in_range
(
u
,
0x114
80u
,
0x114DFu
))
return
use_table
[
u
-
0x11480u
+
use_offset_0x1148
0u
];
if
(
hb_in_range
(
u
,
0x114
00u
,
0x114DFu
))
return
use_table
[
u
-
0x11400u
+
use_offset_0x1140
0u
];
if
(
hb_in_range
(
u
,
0x11580u
,
0x1173Fu
))
return
use_table
[
u
-
0x11580u
+
use_offset_0x11580u
];
if
(
hb_in_range
(
u
,
0x11C00u
,
0x11CB7u
))
return
use_table
[
u
-
0x11C00u
+
use_offset_0x11c00u
];
if
(
unlikely
(
u
==
0x1107Fu
))
return
HN
;
break
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录