Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
00bec2c9
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看板
提交
00bec2c9
编写于
4月 15, 2011
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Move enum types to hb-common.h
上级
5dd4609f
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
576 addition
and
572 deletion
+576
-572
src/hb-common.c
src/hb-common.c
+406
-0
src/hb-common.h
src/hb-common.h
+170
-0
src/hb-unicode.c
src/hb-unicode.c
+0
-406
src/hb-unicode.h
src/hb-unicode.h
+0
-166
未找到文件。
src/hb-common.c
浏览文件 @
00bec2c9
...
...
@@ -141,4 +141,410 @@ hb_language_to_string (hb_language_t language)
}
/* hb_script_t */
static
const
hb_tag_t
script_to_iso15924_tag
[]
=
{
HB_TAG
(
'Z'
,
'y'
,
'y'
,
'y'
),
/* HB_SCRIPT_COMMON */
HB_TAG
(
'Q'
,
'a'
,
'a'
,
'i'
),
/* HB_SCRIPT_INHERITED */
HB_TAG
(
'A'
,
'r'
,
'a'
,
'b'
),
/* HB_SCRIPT_ARABIC */
HB_TAG
(
'A'
,
'r'
,
'm'
,
'n'
),
/* HB_SCRIPT_ARMENIAN */
HB_TAG
(
'B'
,
'e'
,
'n'
,
'g'
),
/* HB_SCRIPT_BENGALI */
HB_TAG
(
'B'
,
'o'
,
'p'
,
'o'
),
/* HB_SCRIPT_BOPOMOFO */
HB_TAG
(
'C'
,
'h'
,
'e'
,
'r'
),
/* HB_SCRIPT_CHEROKEE */
HB_TAG
(
'Q'
,
'a'
,
'a'
,
'c'
),
/* HB_SCRIPT_COPTIC */
HB_TAG
(
'C'
,
'y'
,
'r'
,
'l'
),
/* HB_SCRIPT_CYRILLIC */
HB_TAG
(
'D'
,
's'
,
'r'
,
't'
),
/* HB_SCRIPT_DESERET */
HB_TAG
(
'D'
,
'e'
,
'v'
,
'a'
),
/* HB_SCRIPT_DEVANAGARI */
HB_TAG
(
'E'
,
't'
,
'h'
,
'i'
),
/* HB_SCRIPT_ETHIOPIC */
HB_TAG
(
'G'
,
'e'
,
'o'
,
'r'
),
/* HB_SCRIPT_GEORGIAN */
HB_TAG
(
'G'
,
'o'
,
't'
,
'h'
),
/* HB_SCRIPT_GOTHIC */
HB_TAG
(
'G'
,
'r'
,
'e'
,
'k'
),
/* HB_SCRIPT_GREEK */
HB_TAG
(
'G'
,
'u'
,
'j'
,
'r'
),
/* HB_SCRIPT_GUJARATI */
HB_TAG
(
'G'
,
'u'
,
'r'
,
'u'
),
/* HB_SCRIPT_GURMUKHI */
HB_TAG
(
'H'
,
'a'
,
'n'
,
'i'
),
/* HB_SCRIPT_HAN */
HB_TAG
(
'H'
,
'a'
,
'n'
,
'g'
),
/* HB_SCRIPT_HANGUL */
HB_TAG
(
'H'
,
'e'
,
'b'
,
'r'
),
/* HB_SCRIPT_HEBREW */
HB_TAG
(
'H'
,
'i'
,
'r'
,
'a'
),
/* HB_SCRIPT_HIRAGANA */
HB_TAG
(
'K'
,
'n'
,
'd'
,
'a'
),
/* HB_SCRIPT_KANNADA */
HB_TAG
(
'K'
,
'a'
,
'n'
,
'a'
),
/* HB_SCRIPT_KATAKANA */
HB_TAG
(
'K'
,
'h'
,
'm'
,
'r'
),
/* HB_SCRIPT_KHMER */
HB_TAG
(
'L'
,
'a'
,
'o'
,
'o'
),
/* HB_SCRIPT_LAO */
HB_TAG
(
'L'
,
'a'
,
't'
,
'n'
),
/* HB_SCRIPT_LATIN */
HB_TAG
(
'M'
,
'l'
,
'y'
,
'm'
),
/* HB_SCRIPT_MALAYALAM */
HB_TAG
(
'M'
,
'o'
,
'n'
,
'g'
),
/* HB_SCRIPT_MONGOLIAN */
HB_TAG
(
'M'
,
'y'
,
'm'
,
'r'
),
/* HB_SCRIPT_MYANMAR */
HB_TAG
(
'O'
,
'g'
,
'a'
,
'm'
),
/* HB_SCRIPT_OGHAM */
HB_TAG
(
'I'
,
't'
,
'a'
,
'l'
),
/* HB_SCRIPT_OLD_ITALIC */
HB_TAG
(
'O'
,
'r'
,
'y'
,
'a'
),
/* HB_SCRIPT_ORIYA */
HB_TAG
(
'R'
,
'u'
,
'n'
,
'r'
),
/* HB_SCRIPT_RUNIC */
HB_TAG
(
'S'
,
'i'
,
'n'
,
'h'
),
/* HB_SCRIPT_SINHALA */
HB_TAG
(
'S'
,
'y'
,
'r'
,
'c'
),
/* HB_SCRIPT_SYRIAC */
HB_TAG
(
'T'
,
'a'
,
'm'
,
'l'
),
/* HB_SCRIPT_TAMIL */
HB_TAG
(
'T'
,
'e'
,
'l'
,
'u'
),
/* HB_SCRIPT_TELUGU */
HB_TAG
(
'T'
,
'h'
,
'a'
,
'a'
),
/* HB_SCRIPT_THAANA */
HB_TAG
(
'T'
,
'h'
,
'a'
,
'i'
),
/* HB_SCRIPT_THAI */
HB_TAG
(
'T'
,
'i'
,
'b'
,
't'
),
/* HB_SCRIPT_TIBETAN */
HB_TAG
(
'C'
,
'a'
,
'n'
,
's'
),
/* HB_SCRIPT_CANADIAN_ABORIGINAL */
HB_TAG
(
'Y'
,
'i'
,
'i'
,
'i'
),
/* HB_SCRIPT_YI */
HB_TAG
(
'T'
,
'g'
,
'l'
,
'g'
),
/* HB_SCRIPT_TAGALOG */
HB_TAG
(
'H'
,
'a'
,
'n'
,
'o'
),
/* HB_SCRIPT_HANUNOO */
HB_TAG
(
'B'
,
'u'
,
'h'
,
'd'
),
/* HB_SCRIPT_BUHID */
HB_TAG
(
'T'
,
'a'
,
'g'
,
'b'
),
/* HB_SCRIPT_TAGBANWA */
/* Unicode-4.0 additions */
HB_TAG
(
'B'
,
'r'
,
'a'
,
'i'
),
/* HB_SCRIPT_BRAILLE */
HB_TAG
(
'C'
,
'p'
,
'r'
,
't'
),
/* HB_SCRIPT_CYPRIOT */
HB_TAG
(
'L'
,
'i'
,
'm'
,
'b'
),
/* HB_SCRIPT_LIMBU */
HB_TAG
(
'O'
,
's'
,
'm'
,
'a'
),
/* HB_SCRIPT_OSMANYA */
HB_TAG
(
'S'
,
'h'
,
'a'
,
'w'
),
/* HB_SCRIPT_SHAVIAN */
HB_TAG
(
'L'
,
'i'
,
'n'
,
'b'
),
/* HB_SCRIPT_LINEAR_B */
HB_TAG
(
'T'
,
'a'
,
'l'
,
'e'
),
/* HB_SCRIPT_TAI_LE */
HB_TAG
(
'U'
,
'g'
,
'a'
,
'r'
),
/* HB_SCRIPT_UGARITIC */
/* Unicode-4.1 additions */
HB_TAG
(
'T'
,
'a'
,
'l'
,
'u'
),
/* HB_SCRIPT_NEW_TAI_LUE */
HB_TAG
(
'B'
,
'u'
,
'g'
,
'i'
),
/* HB_SCRIPT_BUGINESE */
HB_TAG
(
'G'
,
'l'
,
'a'
,
'g'
),
/* HB_SCRIPT_GLAGOLITIC */
HB_TAG
(
'T'
,
'f'
,
'n'
,
'g'
),
/* HB_SCRIPT_TIFINAGH */
HB_TAG
(
'S'
,
'y'
,
'l'
,
'o'
),
/* HB_SCRIPT_SYLOTI_NAGRI */
HB_TAG
(
'X'
,
'p'
,
'e'
,
'o'
),
/* HB_SCRIPT_OLD_PERSIAN */
HB_TAG
(
'K'
,
'h'
,
'a'
,
'r'
),
/* HB_SCRIPT_KHAROSHTHI */
/* Unicode-5.0 additions */
HB_TAG
(
'Z'
,
'z'
,
'z'
,
'z'
),
/* HB_SCRIPT_UNKNOWN */
HB_TAG
(
'B'
,
'a'
,
'l'
,
'i'
),
/* HB_SCRIPT_BALINESE */
HB_TAG
(
'X'
,
's'
,
'u'
,
'x'
),
/* HB_SCRIPT_CUNEIFORM */
HB_TAG
(
'P'
,
'h'
,
'n'
,
'x'
),
/* HB_SCRIPT_PHOENICIAN */
HB_TAG
(
'P'
,
'h'
,
'a'
,
'g'
),
/* HB_SCRIPT_PHAGS_PA */
HB_TAG
(
'N'
,
'k'
,
'o'
,
'o'
),
/* HB_SCRIPT_NKO */
/* Unicode-5.1 additions */
HB_TAG
(
'K'
,
'a'
,
'l'
,
'i'
),
/* HB_SCRIPT_KAYAH_LI */
HB_TAG
(
'L'
,
'e'
,
'p'
,
'c'
),
/* HB_SCRIPT_LEPCHA */
HB_TAG
(
'R'
,
'j'
,
'n'
,
'g'
),
/* HB_SCRIPT_REJANG */
HB_TAG
(
'S'
,
'u'
,
'n'
,
'd'
),
/* HB_SCRIPT_SUNDANESE */
HB_TAG
(
'S'
,
'a'
,
'u'
,
'r'
),
/* HB_SCRIPT_SAURASHTRA */
HB_TAG
(
'C'
,
'h'
,
'a'
,
'm'
),
/* HB_SCRIPT_CHAM */
HB_TAG
(
'O'
,
'l'
,
'c'
,
'k'
),
/* HB_SCRIPT_OL_CHIKI */
HB_TAG
(
'V'
,
'a'
,
'i'
,
'i'
),
/* HB_SCRIPT_VAI */
HB_TAG
(
'C'
,
'a'
,
'r'
,
'i'
),
/* HB_SCRIPT_CARIAN */
HB_TAG
(
'L'
,
'y'
,
'c'
,
'i'
),
/* HB_SCRIPT_LYCIAN */
HB_TAG
(
'L'
,
'y'
,
'd'
,
'i'
),
/* HB_SCRIPT_LYDIAN */
/* Unicode-5.2 additions */
HB_TAG
(
'A'
,
'v'
,
's'
,
't'
),
/* HB_SCRIPT_AVESTAN */
HB_TAG
(
'B'
,
'a'
,
'm'
,
'u'
),
/* HB_SCRIPT_BAMUM */
HB_TAG
(
'E'
,
'g'
,
'y'
,
'p'
),
/* HB_SCRIPT_EGYPTIAN_HIEROGLYPHS */
HB_TAG
(
'A'
,
'r'
,
'm'
,
'i'
),
/* HB_SCRIPT_IMPERIAL_ARAMAIC */
HB_TAG
(
'P'
,
'h'
,
'l'
,
'i'
),
/* HB_SCRIPT_INSCRIPTIONAL_PAHLAVI */
HB_TAG
(
'P'
,
'r'
,
't'
,
'i'
),
/* HB_SCRIPT_INSCRIPTIONAL_PARTHIAN */
HB_TAG
(
'J'
,
'a'
,
'v'
,
'a'
),
/* HB_SCRIPT_JAVANESE */
HB_TAG
(
'K'
,
't'
,
'h'
,
'i'
),
/* HB_SCRIPT_KAITHI */
HB_TAG
(
'L'
,
'i'
,
's'
,
'u'
),
/* HB_SCRIPT_LISU */
HB_TAG
(
'M'
,
't'
,
'e'
,
'i'
),
/* HB_SCRIPT_MEETEI_MAYEK */
HB_TAG
(
'S'
,
'a'
,
'r'
,
'b'
),
/* HB_SCRIPT_OLD_SOUTH_ARABIAN */
HB_TAG
(
'O'
,
'r'
,
'k'
,
'h'
),
/* HB_SCRIPT_OLD_TURKIC */
HB_TAG
(
'S'
,
'a'
,
'm'
,
'r'
),
/* HB_SCRIPT_SAMARITAN */
HB_TAG
(
'L'
,
'a'
,
'n'
,
'a'
),
/* HB_SCRIPT_TAI_THAM */
HB_TAG
(
'T'
,
'a'
,
'v'
,
't'
),
/* HB_SCRIPT_TAI_VIET */
/* Unicode-6.0 additions */
HB_TAG
(
'B'
,
'a'
,
't'
,
'k'
),
/* HB_SCRIPT_BATAK */
HB_TAG
(
'B'
,
'r'
,
'a'
,
'h'
),
/* HB_SCRIPT_BRAHMI */
HB_TAG
(
'M'
,
'a'
,
'n'
,
'd'
)
/* HB_SCRIPT_MANDAIC */
};
struct
tag_script_pair
{
hb_tag_t
tag
;
hb_script_t
script
;
};
static
const
struct
tag_script_pair
script_from_iso15924_tag
[]
=
{
{
HB_TAG
(
'A'
,
'r'
,
'a'
,
'b'
),
HB_SCRIPT_ARABIC
},
{
HB_TAG
(
'A'
,
'r'
,
'm'
,
'i'
),
HB_SCRIPT_IMPERIAL_ARAMAIC
},
{
HB_TAG
(
'A'
,
'r'
,
'm'
,
'n'
),
HB_SCRIPT_ARMENIAN
},
{
HB_TAG
(
'A'
,
'v'
,
's'
,
't'
),
HB_SCRIPT_AVESTAN
},
{
HB_TAG
(
'B'
,
'a'
,
'l'
,
'i'
),
HB_SCRIPT_BALINESE
},
{
HB_TAG
(
'B'
,
'a'
,
'm'
,
'u'
),
HB_SCRIPT_BAMUM
},
{
HB_TAG
(
'B'
,
'a'
,
't'
,
'k'
),
HB_SCRIPT_BATAK
},
{
HB_TAG
(
'B'
,
'e'
,
'n'
,
'g'
),
HB_SCRIPT_BENGALI
},
{
HB_TAG
(
'B'
,
'o'
,
'p'
,
'o'
),
HB_SCRIPT_BOPOMOFO
},
{
HB_TAG
(
'B'
,
'r'
,
'a'
,
'h'
),
HB_SCRIPT_BRAHMI
},
{
HB_TAG
(
'B'
,
'r'
,
'a'
,
'i'
),
HB_SCRIPT_BRAILLE
},
{
HB_TAG
(
'B'
,
'u'
,
'g'
,
'i'
),
HB_SCRIPT_BUGINESE
},
{
HB_TAG
(
'B'
,
'u'
,
'h'
,
'd'
),
HB_SCRIPT_BUHID
},
{
HB_TAG
(
'C'
,
'a'
,
'n'
,
's'
),
HB_SCRIPT_CANADIAN_ABORIGINAL
},
{
HB_TAG
(
'C'
,
'a'
,
'r'
,
'i'
),
HB_SCRIPT_CARIAN
},
{
HB_TAG
(
'C'
,
'h'
,
'a'
,
'm'
),
HB_SCRIPT_CHAM
},
{
HB_TAG
(
'C'
,
'h'
,
'e'
,
'r'
),
HB_SCRIPT_CHEROKEE
},
{
HB_TAG
(
'C'
,
'p'
,
'r'
,
't'
),
HB_SCRIPT_CYPRIOT
},
{
HB_TAG
(
'C'
,
'y'
,
'r'
,
'l'
),
HB_SCRIPT_CYRILLIC
},
{
HB_TAG
(
'C'
,
'y'
,
'r'
,
's'
),
HB_SCRIPT_CYRILLIC
},
{
HB_TAG
(
'D'
,
'e'
,
'v'
,
'a'
),
HB_SCRIPT_DEVANAGARI
},
{
HB_TAG
(
'D'
,
's'
,
'r'
,
't'
),
HB_SCRIPT_DESERET
},
{
HB_TAG
(
'E'
,
'g'
,
'y'
,
'p'
),
HB_SCRIPT_EGYPTIAN_HIEROGLYPHS
},
{
HB_TAG
(
'E'
,
't'
,
'h'
,
'i'
),
HB_SCRIPT_ETHIOPIC
},
{
HB_TAG
(
'G'
,
'e'
,
'o'
,
'a'
),
HB_SCRIPT_GEORGIAN
},
{
HB_TAG
(
'G'
,
'e'
,
'o'
,
'n'
),
HB_SCRIPT_GEORGIAN
},
{
HB_TAG
(
'G'
,
'e'
,
'o'
,
'r'
),
HB_SCRIPT_GEORGIAN
},
{
HB_TAG
(
'G'
,
'l'
,
'a'
,
'g'
),
HB_SCRIPT_GLAGOLITIC
},
{
HB_TAG
(
'G'
,
'o'
,
't'
,
'h'
),
HB_SCRIPT_GOTHIC
},
{
HB_TAG
(
'G'
,
'r'
,
'e'
,
'k'
),
HB_SCRIPT_GREEK
},
{
HB_TAG
(
'G'
,
'u'
,
'j'
,
'r'
),
HB_SCRIPT_GUJARATI
},
{
HB_TAG
(
'G'
,
'u'
,
'r'
,
'u'
),
HB_SCRIPT_GURMUKHI
},
{
HB_TAG
(
'H'
,
'a'
,
'n'
,
'g'
),
HB_SCRIPT_HANGUL
},
{
HB_TAG
(
'H'
,
'a'
,
'n'
,
'i'
),
HB_SCRIPT_HAN
},
{
HB_TAG
(
'H'
,
'a'
,
'n'
,
'o'
),
HB_SCRIPT_HANUNOO
},
{
HB_TAG
(
'H'
,
'e'
,
'b'
,
'r'
),
HB_SCRIPT_HEBREW
},
{
HB_TAG
(
'H'
,
'i'
,
'r'
,
'a'
),
HB_SCRIPT_HIRAGANA
},
{
HB_TAG
(
'I'
,
't'
,
'a'
,
'l'
),
HB_SCRIPT_OLD_ITALIC
},
{
HB_TAG
(
'J'
,
'a'
,
'v'
,
'a'
),
HB_SCRIPT_JAVANESE
},
{
HB_TAG
(
'K'
,
'a'
,
'l'
,
'i'
),
HB_SCRIPT_KAYAH_LI
},
{
HB_TAG
(
'K'
,
'a'
,
'n'
,
'a'
),
HB_SCRIPT_KATAKANA
},
{
HB_TAG
(
'K'
,
'h'
,
'a'
,
'r'
),
HB_SCRIPT_KHAROSHTHI
},
{
HB_TAG
(
'K'
,
'h'
,
'm'
,
'r'
),
HB_SCRIPT_KHMER
},
{
HB_TAG
(
'K'
,
'n'
,
'd'
,
'a'
),
HB_SCRIPT_KANNADA
},
{
HB_TAG
(
'K'
,
't'
,
'h'
,
'i'
),
HB_SCRIPT_KAITHI
},
{
HB_TAG
(
'L'
,
'a'
,
'n'
,
'a'
),
HB_SCRIPT_TAI_THAM
},
{
HB_TAG
(
'L'
,
'a'
,
'o'
,
'o'
),
HB_SCRIPT_LAO
},
{
HB_TAG
(
'L'
,
'a'
,
't'
,
'f'
),
HB_SCRIPT_LATIN
},
{
HB_TAG
(
'L'
,
'a'
,
't'
,
'g'
),
HB_SCRIPT_LATIN
},
{
HB_TAG
(
'L'
,
'a'
,
't'
,
'n'
),
HB_SCRIPT_LATIN
},
{
HB_TAG
(
'L'
,
'e'
,
'p'
,
'c'
),
HB_SCRIPT_LEPCHA
},
{
HB_TAG
(
'L'
,
'i'
,
'm'
,
'b'
),
HB_SCRIPT_LIMBU
},
{
HB_TAG
(
'L'
,
'i'
,
'n'
,
'b'
),
HB_SCRIPT_LINEAR_B
},
{
HB_TAG
(
'L'
,
'i'
,
's'
,
'u'
),
HB_SCRIPT_LISU
},
{
HB_TAG
(
'L'
,
'y'
,
'c'
,
'i'
),
HB_SCRIPT_LYCIAN
},
{
HB_TAG
(
'L'
,
'y'
,
'd'
,
'i'
),
HB_SCRIPT_LYDIAN
},
{
HB_TAG
(
'M'
,
'a'
,
'n'
,
'd'
),
HB_SCRIPT_MANDAIC
},
{
HB_TAG
(
'M'
,
'l'
,
'y'
,
'm'
),
HB_SCRIPT_MALAYALAM
},
{
HB_TAG
(
'M'
,
'o'
,
'n'
,
'g'
),
HB_SCRIPT_MONGOLIAN
},
{
HB_TAG
(
'M'
,
't'
,
'e'
,
'i'
),
HB_SCRIPT_MEETEI_MAYEK
},
{
HB_TAG
(
'M'
,
'y'
,
'm'
,
'r'
),
HB_SCRIPT_MYANMAR
},
{
HB_TAG
(
'N'
,
'k'
,
'o'
,
'o'
),
HB_SCRIPT_NKO
},
{
HB_TAG
(
'O'
,
'g'
,
'a'
,
'm'
),
HB_SCRIPT_OGHAM
},
{
HB_TAG
(
'O'
,
'l'
,
'c'
,
'k'
),
HB_SCRIPT_OL_CHIKI
},
{
HB_TAG
(
'O'
,
'r'
,
'k'
,
'h'
),
HB_SCRIPT_OLD_TURKIC
},
{
HB_TAG
(
'O'
,
'r'
,
'y'
,
'a'
),
HB_SCRIPT_ORIYA
},
{
HB_TAG
(
'O'
,
's'
,
'm'
,
'a'
),
HB_SCRIPT_OSMANYA
},
{
HB_TAG
(
'P'
,
'h'
,
'a'
,
'g'
),
HB_SCRIPT_PHAGS_PA
},
{
HB_TAG
(
'P'
,
'h'
,
'l'
,
'i'
),
HB_SCRIPT_INSCRIPTIONAL_PAHLAVI
},
{
HB_TAG
(
'P'
,
'h'
,
'n'
,
'x'
),
HB_SCRIPT_PHOENICIAN
},
{
HB_TAG
(
'P'
,
'r'
,
't'
,
'i'
),
HB_SCRIPT_INSCRIPTIONAL_PARTHIAN
},
{
HB_TAG
(
'Q'
,
'a'
,
'a'
,
'c'
),
HB_SCRIPT_COPTIC
},
{
HB_TAG
(
'Q'
,
'a'
,
'a'
,
'i'
),
HB_SCRIPT_INHERITED
},
{
HB_TAG
(
'R'
,
'j'
,
'n'
,
'g'
),
HB_SCRIPT_REJANG
},
{
HB_TAG
(
'R'
,
'u'
,
'n'
,
'r'
),
HB_SCRIPT_RUNIC
},
{
HB_TAG
(
'S'
,
'a'
,
'm'
,
'r'
),
HB_SCRIPT_SAMARITAN
},
{
HB_TAG
(
'S'
,
'a'
,
'r'
,
'b'
),
HB_SCRIPT_OLD_SOUTH_ARABIAN
},
{
HB_TAG
(
'S'
,
'a'
,
'u'
,
'r'
),
HB_SCRIPT_SAURASHTRA
},
{
HB_TAG
(
'S'
,
'h'
,
'a'
,
'w'
),
HB_SCRIPT_SHAVIAN
},
{
HB_TAG
(
'S'
,
'i'
,
'n'
,
'h'
),
HB_SCRIPT_SINHALA
},
{
HB_TAG
(
'S'
,
'u'
,
'n'
,
'd'
),
HB_SCRIPT_SUNDANESE
},
{
HB_TAG
(
'S'
,
'y'
,
'l'
,
'o'
),
HB_SCRIPT_SYLOTI_NAGRI
},
{
HB_TAG
(
'S'
,
'y'
,
'r'
,
'c'
),
HB_SCRIPT_SYRIAC
},
{
HB_TAG
(
'S'
,
'y'
,
'r'
,
'e'
),
HB_SCRIPT_SYRIAC
},
{
HB_TAG
(
'S'
,
'y'
,
'r'
,
'n'
),
HB_SCRIPT_SYRIAC
},
{
HB_TAG
(
'T'
,
'a'
,
'g'
,
'b'
),
HB_SCRIPT_TAGBANWA
},
{
HB_TAG
(
'T'
,
'a'
,
'l'
,
'e'
),
HB_SCRIPT_TAI_LE
},
{
HB_TAG
(
'T'
,
'a'
,
'l'
,
'u'
),
HB_SCRIPT_NEW_TAI_LUE
},
{
HB_TAG
(
'T'
,
'a'
,
'm'
,
'l'
),
HB_SCRIPT_TAMIL
},
{
HB_TAG
(
'T'
,
'a'
,
'v'
,
't'
),
HB_SCRIPT_TAI_VIET
},
{
HB_TAG
(
'T'
,
'e'
,
'l'
,
'u'
),
HB_SCRIPT_TELUGU
},
{
HB_TAG
(
'T'
,
'f'
,
'n'
,
'g'
),
HB_SCRIPT_TIFINAGH
},
{
HB_TAG
(
'T'
,
'g'
,
'l'
,
'g'
),
HB_SCRIPT_TAGALOG
},
{
HB_TAG
(
'T'
,
'h'
,
'a'
,
'a'
),
HB_SCRIPT_THAANA
},
{
HB_TAG
(
'T'
,
'h'
,
'a'
,
'i'
),
HB_SCRIPT_THAI
},
{
HB_TAG
(
'T'
,
'i'
,
'b'
,
't'
),
HB_SCRIPT_TIBETAN
},
{
HB_TAG
(
'U'
,
'g'
,
'a'
,
'r'
),
HB_SCRIPT_UGARITIC
},
{
HB_TAG
(
'V'
,
'a'
,
'i'
,
'i'
),
HB_SCRIPT_VAI
},
{
HB_TAG
(
'X'
,
'p'
,
'e'
,
'o'
),
HB_SCRIPT_OLD_PERSIAN
},
{
HB_TAG
(
'X'
,
's'
,
'u'
,
'x'
),
HB_SCRIPT_CUNEIFORM
},
{
HB_TAG
(
'Y'
,
'i'
,
'i'
,
'i'
),
HB_SCRIPT_YI
},
{
HB_TAG
(
'Z'
,
'y'
,
'y'
,
'y'
),
HB_SCRIPT_COMMON
},
{
HB_TAG
(
'Z'
,
'z'
,
'z'
,
'z'
),
HB_SCRIPT_UNKNOWN
}
};
static
int
_tag_cmp
(
hb_tag_t
*
pa
,
hb_tag_t
*
pb
)
{
hb_tag_t
a
=
*
pa
,
b
=
*
pb
;
return
a
<
b
?
-
1
:
a
==
b
?
0
:
+
1
;
}
hb_script_t
hb_script_from_iso15924_tag
(
hb_tag_t
tag
)
{
const
struct
tag_script_pair
*
pair
;
/* Be lenient, adjust case (one capital letter followed by three small letters) */
tag
=
(
tag
&
0xDFDFDFDF
)
|
0x00202020
;
pair
=
(
const
struct
tag_script_pair
*
)
bsearch
(
&
tag
,
script_from_iso15924_tag
,
ARRAY_LENGTH
(
script_from_iso15924_tag
),
sizeof
(
script_from_iso15924_tag
[
0
]),
(
hb_compare_func_t
)
_tag_cmp
);
if
(
pair
)
return
pair
->
script
;
/* If it looks right, just use the tag as a script */
if
(((
uint32_t
)
tag
&
0xE0E0E0E0
)
==
0x40606060
)
return
(
hb_script_t
)
tag
;
/* Otherwise, return unknown */
return
HB_SCRIPT_UNKNOWN
;
}
hb_script_t
hb_script_from_string
(
const
char
*
s
)
{
return
hb_script_from_iso15924_tag
(
hb_tag_from_string
(
s
));
}
hb_tag_t
hb_script_to_iso15924_tag
(
hb_script_t
script
)
{
if
(
likely
((
unsigned
int
)
script
<
ARRAY_LENGTH
(
script_to_iso15924_tag
)))
return
script_to_iso15924_tag
[
script
];
/* if script is of the right shape (one capital letter followed by three small letters),
* return as is. */
if
(((
uint32_t
)
script
&
0xE0E0E0E0
)
==
0x40606060
)
return
(
hb_tag_t
)
script
;
/* Otherwise, we don't know what that is */
return
script_to_iso15924_tag
[
HB_SCRIPT_UNKNOWN
];
}
#define LTR HB_DIRECTION_LTR
#define RTL HB_DIRECTION_RTL
const
hb_direction_t
horiz_dir
[]
=
{
LTR
,
/* Zyyy */
LTR
,
/* Qaai */
RTL
,
/* Arab */
LTR
,
/* Armn */
LTR
,
/* Beng */
LTR
,
/* Bopo */
LTR
,
/* Cher */
LTR
,
/* Qaac */
LTR
,
/* Cyrl (Cyrs) */
LTR
,
/* Dsrt */
LTR
,
/* Deva */
LTR
,
/* Ethi */
LTR
,
/* Geor (Geon, Geoa) */
LTR
,
/* Goth */
LTR
,
/* Grek */
LTR
,
/* Gujr */
LTR
,
/* Guru */
LTR
,
/* Hani */
LTR
,
/* Hang */
RTL
,
/* Hebr */
LTR
,
/* Hira */
LTR
,
/* Knda */
LTR
,
/* Kana */
LTR
,
/* Khmr */
LTR
,
/* Laoo */
LTR
,
/* Latn (Latf, Latg) */
LTR
,
/* Mlym */
LTR
,
/* Mong */
LTR
,
/* Mymr */
LTR
,
/* Ogam */
LTR
,
/* Ital */
LTR
,
/* Orya */
LTR
,
/* Runr */
LTR
,
/* Sinh */
RTL
,
/* Syrc (Syrj, Syrn, Syre) */
LTR
,
/* Taml */
LTR
,
/* Telu */
RTL
,
/* Thaa */
LTR
,
/* Thai */
LTR
,
/* Tibt */
LTR
,
/* Cans */
LTR
,
/* Yiii */
LTR
,
/* Tglg */
LTR
,
/* Hano */
LTR
,
/* Buhd */
LTR
,
/* Tagb */
/* Unicode-4.0 additions */
LTR
,
/* Brai */
RTL
,
/* Cprt */
LTR
,
/* Limb */
LTR
,
/* Osma */
LTR
,
/* Shaw */
LTR
,
/* Linb */
LTR
,
/* Tale */
LTR
,
/* Ugar */
/* Unicode-4.1 additions */
LTR
,
/* Talu */
LTR
,
/* Bugi */
LTR
,
/* Glag */
LTR
,
/* Tfng */
LTR
,
/* Sylo */
LTR
,
/* Xpeo */
LTR
,
/* Khar */
/* Unicode-5.0 additions */
LTR
,
/* Zzzz */
LTR
,
/* Bali */
LTR
,
/* Xsux */
RTL
,
/* Phnx */
LTR
,
/* Phag */
RTL
,
/* Nkoo */
/* Unicode-5.1 additions */
LTR
,
/* Kali */
LTR
,
/* Lepc */
LTR
,
/* Rjng */
LTR
,
/* Sund */
LTR
,
/* Saur */
LTR
,
/* Cham */
LTR
,
/* Olck */
LTR
,
/* Vaii */
LTR
,
/* Cari */
LTR
,
/* Lyci */
LTR
,
/* Lydi */
/* Unicode-5.2 additions */
RTL
,
/* Avst */
LTR
,
/* Bamu */
LTR
,
/* Egyp */
RTL
,
/* Armi */
RTL
,
/* Phli */
RTL
,
/* Prti */
LTR
,
/* Java */
LTR
,
/* Kthi */
LTR
,
/* Lisu */
LTR
,
/* Mtei */
RTL
,
/* Sarb */
RTL
,
/* Orkh */
RTL
,
/* Samr */
LTR
,
/* Lana */
LTR
,
/* Tavt */
/* Unicode-6.0 additions */
LTR
,
/* Batk */
LTR
,
/* Brah */
RTL
/* Mand */
};
#undef LTR
#undef RTL
hb_direction_t
hb_script_get_horizontal_direction
(
hb_script_t
script
)
{
if
(
unlikely
((
unsigned
int
)
script
>=
ARRAY_LENGTH
(
horiz_dir
)))
return
HB_DIRECTION_LTR
;
return
horiz_dir
[
script
];
}
HB_END_DECLS
src/hb-common.h
浏览文件 @
00bec2c9
...
...
@@ -108,6 +108,176 @@ const char *
hb_language_to_string
(
hb_language_t
language
);
/* hb_unicode_general_category_t */
typedef
enum
{
HB_UNICODE_GENERAL_CATEGORY_CONTROL
,
/* Cc */
HB_UNICODE_GENERAL_CATEGORY_FORMAT
,
/* Cf */
HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED
,
/* Cn */
HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE
,
/* Co */
HB_UNICODE_GENERAL_CATEGORY_SURROGATE
,
/* Cs */
HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER
,
/* Ll */
HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER
,
/* Lm */
HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER
,
/* Lo */
HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER
,
/* Lt */
HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER
,
/* Lu */
HB_UNICODE_GENERAL_CATEGORY_COMBINING_MARK
,
/* Mc */
HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK
,
/* Me */
HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK
,
/* Mn */
HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER
,
/* Nd */
HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER
,
/* Nl */
HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER
,
/* No */
HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION
,
/* Pc */
HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION
,
/* Pd */
HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION
,
/* Pe */
HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION
,
/* Pf */
HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION
,
/* Pi */
HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION
,
/* Po */
HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION
,
/* Ps */
HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL
,
/* Sc */
HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL
,
/* Sk */
HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL
,
/* Sm */
HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL
,
/* So */
HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR
,
/* Zl */
HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR
,
/* Zp */
HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR
/* Zs */
}
hb_unicode_general_category_t
;
/* hb_script_t */
typedef
enum
{
/* ISO 15924 code */
HB_SCRIPT_INVALID
=
-
1
,
HB_SCRIPT_COMMON
=
0
,
/* Zyyy */
HB_SCRIPT_INHERITED
,
/* Qaai */
HB_SCRIPT_ARABIC
,
/* Arab */
HB_SCRIPT_ARMENIAN
,
/* Armn */
HB_SCRIPT_BENGALI
,
/* Beng */
HB_SCRIPT_BOPOMOFO
,
/* Bopo */
HB_SCRIPT_CHEROKEE
,
/* Cher */
HB_SCRIPT_COPTIC
,
/* Qaac */
HB_SCRIPT_CYRILLIC
,
/* Cyrl (Cyrs) */
HB_SCRIPT_DESERET
,
/* Dsrt */
HB_SCRIPT_DEVANAGARI
,
/* Deva */
HB_SCRIPT_ETHIOPIC
,
/* Ethi */
HB_SCRIPT_GEORGIAN
,
/* Geor (Geon, Geoa) */
HB_SCRIPT_GOTHIC
,
/* Goth */
HB_SCRIPT_GREEK
,
/* Grek */
HB_SCRIPT_GUJARATI
,
/* Gujr */
HB_SCRIPT_GURMUKHI
,
/* Guru */
HB_SCRIPT_HAN
,
/* Hani */
HB_SCRIPT_HANGUL
,
/* Hang */
HB_SCRIPT_HEBREW
,
/* Hebr */
HB_SCRIPT_HIRAGANA
,
/* Hira */
HB_SCRIPT_KANNADA
,
/* Knda */
HB_SCRIPT_KATAKANA
,
/* Kana */
HB_SCRIPT_KHMER
,
/* Khmr */
HB_SCRIPT_LAO
,
/* Laoo */
HB_SCRIPT_LATIN
,
/* Latn (Latf, Latg) */
HB_SCRIPT_MALAYALAM
,
/* Mlym */
HB_SCRIPT_MONGOLIAN
,
/* Mong */
HB_SCRIPT_MYANMAR
,
/* Mymr */
HB_SCRIPT_OGHAM
,
/* Ogam */
HB_SCRIPT_OLD_ITALIC
,
/* Ital */
HB_SCRIPT_ORIYA
,
/* Orya */
HB_SCRIPT_RUNIC
,
/* Runr */
HB_SCRIPT_SINHALA
,
/* Sinh */
HB_SCRIPT_SYRIAC
,
/* Syrc (Syrj, Syrn, Syre) */
HB_SCRIPT_TAMIL
,
/* Taml */
HB_SCRIPT_TELUGU
,
/* Telu */
HB_SCRIPT_THAANA
,
/* Thaa */
HB_SCRIPT_THAI
,
/* Thai */
HB_SCRIPT_TIBETAN
,
/* Tibt */
HB_SCRIPT_CANADIAN_ABORIGINAL
,
/* Cans */
HB_SCRIPT_YI
,
/* Yiii */
HB_SCRIPT_TAGALOG
,
/* Tglg */
HB_SCRIPT_HANUNOO
,
/* Hano */
HB_SCRIPT_BUHID
,
/* Buhd */
HB_SCRIPT_TAGBANWA
,
/* Tagb */
/* Unicode-4.0 additions */
HB_SCRIPT_BRAILLE
,
/* Brai */
HB_SCRIPT_CYPRIOT
,
/* Cprt */
HB_SCRIPT_LIMBU
,
/* Limb */
HB_SCRIPT_OSMANYA
,
/* Osma */
HB_SCRIPT_SHAVIAN
,
/* Shaw */
HB_SCRIPT_LINEAR_B
,
/* Linb */
HB_SCRIPT_TAI_LE
,
/* Tale */
HB_SCRIPT_UGARITIC
,
/* Ugar */
/* Unicode-4.1 additions */
HB_SCRIPT_NEW_TAI_LUE
,
/* Talu */
HB_SCRIPT_BUGINESE
,
/* Bugi */
HB_SCRIPT_GLAGOLITIC
,
/* Glag */
HB_SCRIPT_TIFINAGH
,
/* Tfng */
HB_SCRIPT_SYLOTI_NAGRI
,
/* Sylo */
HB_SCRIPT_OLD_PERSIAN
,
/* Xpeo */
HB_SCRIPT_KHAROSHTHI
,
/* Khar */
/* Unicode-5.0 additions */
HB_SCRIPT_UNKNOWN
,
/* Zzzz */
HB_SCRIPT_BALINESE
,
/* Bali */
HB_SCRIPT_CUNEIFORM
,
/* Xsux */
HB_SCRIPT_PHOENICIAN
,
/* Phnx */
HB_SCRIPT_PHAGS_PA
,
/* Phag */
HB_SCRIPT_NKO
,
/* Nkoo */
/* Unicode-5.1 additions */
HB_SCRIPT_KAYAH_LI
,
/* Kali */
HB_SCRIPT_LEPCHA
,
/* Lepc */
HB_SCRIPT_REJANG
,
/* Rjng */
HB_SCRIPT_SUNDANESE
,
/* Sund */
HB_SCRIPT_SAURASHTRA
,
/* Saur */
HB_SCRIPT_CHAM
,
/* Cham */
HB_SCRIPT_OL_CHIKI
,
/* Olck */
HB_SCRIPT_VAI
,
/* Vaii */
HB_SCRIPT_CARIAN
,
/* Cari */
HB_SCRIPT_LYCIAN
,
/* Lyci */
HB_SCRIPT_LYDIAN
,
/* Lydi */
/* Unicode-5.2 additions */
HB_SCRIPT_AVESTAN
,
/* Avst */
HB_SCRIPT_BAMUM
,
/* Bamu */
HB_SCRIPT_EGYPTIAN_HIEROGLYPHS
,
/* Egyp */
HB_SCRIPT_IMPERIAL_ARAMAIC
,
/* Armi */
HB_SCRIPT_INSCRIPTIONAL_PAHLAVI
,
/* Phli */
HB_SCRIPT_INSCRIPTIONAL_PARTHIAN
,
/* Prti */
HB_SCRIPT_JAVANESE
,
/* Java */
HB_SCRIPT_KAITHI
,
/* Kthi */
HB_SCRIPT_LISU
,
/* Lisu */
HB_SCRIPT_MEETEI_MAYEK
,
/* Mtei */
HB_SCRIPT_OLD_SOUTH_ARABIAN
,
/* Sarb */
HB_SCRIPT_OLD_TURKIC
,
/* Orkh */
HB_SCRIPT_SAMARITAN
,
/* Samr */
HB_SCRIPT_TAI_THAM
,
/* Lana */
HB_SCRIPT_TAI_VIET
,
/* Tavt */
/* Unicode-6.0 additions */
HB_SCRIPT_BATAK
,
/* Batk */
HB_SCRIPT_BRAHMI
,
/* Brah */
HB_SCRIPT_MANDAIC
/* Mand */
}
hb_script_t
;
/* Script functions */
hb_script_t
hb_script_from_iso15924_tag
(
hb_tag_t
tag
);
/* suger for tag_from_string() then script_from_iso15924_tag */
hb_script_t
hb_script_from_string
(
const
char
*
s
);
hb_tag_t
hb_script_to_iso15924_tag
(
hb_script_t
script
);
hb_direction_t
hb_script_get_horizontal_direction
(
hb_script_t
script
);
HB_END_DECLS
#endif
/* HB_COMMON_H */
src/hb-unicode.c
浏览文件 @
00bec2c9
...
...
@@ -234,410 +234,4 @@ hb_unicode_get_eastasian_width (hb_unicode_funcs_t *ufuncs,
}
/* hb_script_t */
static
const
hb_tag_t
script_to_iso15924_tag
[]
=
{
HB_TAG
(
'Z'
,
'y'
,
'y'
,
'y'
),
/* HB_SCRIPT_COMMON */
HB_TAG
(
'Q'
,
'a'
,
'a'
,
'i'
),
/* HB_SCRIPT_INHERITED */
HB_TAG
(
'A'
,
'r'
,
'a'
,
'b'
),
/* HB_SCRIPT_ARABIC */
HB_TAG
(
'A'
,
'r'
,
'm'
,
'n'
),
/* HB_SCRIPT_ARMENIAN */
HB_TAG
(
'B'
,
'e'
,
'n'
,
'g'
),
/* HB_SCRIPT_BENGALI */
HB_TAG
(
'B'
,
'o'
,
'p'
,
'o'
),
/* HB_SCRIPT_BOPOMOFO */
HB_TAG
(
'C'
,
'h'
,
'e'
,
'r'
),
/* HB_SCRIPT_CHEROKEE */
HB_TAG
(
'Q'
,
'a'
,
'a'
,
'c'
),
/* HB_SCRIPT_COPTIC */
HB_TAG
(
'C'
,
'y'
,
'r'
,
'l'
),
/* HB_SCRIPT_CYRILLIC */
HB_TAG
(
'D'
,
's'
,
'r'
,
't'
),
/* HB_SCRIPT_DESERET */
HB_TAG
(
'D'
,
'e'
,
'v'
,
'a'
),
/* HB_SCRIPT_DEVANAGARI */
HB_TAG
(
'E'
,
't'
,
'h'
,
'i'
),
/* HB_SCRIPT_ETHIOPIC */
HB_TAG
(
'G'
,
'e'
,
'o'
,
'r'
),
/* HB_SCRIPT_GEORGIAN */
HB_TAG
(
'G'
,
'o'
,
't'
,
'h'
),
/* HB_SCRIPT_GOTHIC */
HB_TAG
(
'G'
,
'r'
,
'e'
,
'k'
),
/* HB_SCRIPT_GREEK */
HB_TAG
(
'G'
,
'u'
,
'j'
,
'r'
),
/* HB_SCRIPT_GUJARATI */
HB_TAG
(
'G'
,
'u'
,
'r'
,
'u'
),
/* HB_SCRIPT_GURMUKHI */
HB_TAG
(
'H'
,
'a'
,
'n'
,
'i'
),
/* HB_SCRIPT_HAN */
HB_TAG
(
'H'
,
'a'
,
'n'
,
'g'
),
/* HB_SCRIPT_HANGUL */
HB_TAG
(
'H'
,
'e'
,
'b'
,
'r'
),
/* HB_SCRIPT_HEBREW */
HB_TAG
(
'H'
,
'i'
,
'r'
,
'a'
),
/* HB_SCRIPT_HIRAGANA */
HB_TAG
(
'K'
,
'n'
,
'd'
,
'a'
),
/* HB_SCRIPT_KANNADA */
HB_TAG
(
'K'
,
'a'
,
'n'
,
'a'
),
/* HB_SCRIPT_KATAKANA */
HB_TAG
(
'K'
,
'h'
,
'm'
,
'r'
),
/* HB_SCRIPT_KHMER */
HB_TAG
(
'L'
,
'a'
,
'o'
,
'o'
),
/* HB_SCRIPT_LAO */
HB_TAG
(
'L'
,
'a'
,
't'
,
'n'
),
/* HB_SCRIPT_LATIN */
HB_TAG
(
'M'
,
'l'
,
'y'
,
'm'
),
/* HB_SCRIPT_MALAYALAM */
HB_TAG
(
'M'
,
'o'
,
'n'
,
'g'
),
/* HB_SCRIPT_MONGOLIAN */
HB_TAG
(
'M'
,
'y'
,
'm'
,
'r'
),
/* HB_SCRIPT_MYANMAR */
HB_TAG
(
'O'
,
'g'
,
'a'
,
'm'
),
/* HB_SCRIPT_OGHAM */
HB_TAG
(
'I'
,
't'
,
'a'
,
'l'
),
/* HB_SCRIPT_OLD_ITALIC */
HB_TAG
(
'O'
,
'r'
,
'y'
,
'a'
),
/* HB_SCRIPT_ORIYA */
HB_TAG
(
'R'
,
'u'
,
'n'
,
'r'
),
/* HB_SCRIPT_RUNIC */
HB_TAG
(
'S'
,
'i'
,
'n'
,
'h'
),
/* HB_SCRIPT_SINHALA */
HB_TAG
(
'S'
,
'y'
,
'r'
,
'c'
),
/* HB_SCRIPT_SYRIAC */
HB_TAG
(
'T'
,
'a'
,
'm'
,
'l'
),
/* HB_SCRIPT_TAMIL */
HB_TAG
(
'T'
,
'e'
,
'l'
,
'u'
),
/* HB_SCRIPT_TELUGU */
HB_TAG
(
'T'
,
'h'
,
'a'
,
'a'
),
/* HB_SCRIPT_THAANA */
HB_TAG
(
'T'
,
'h'
,
'a'
,
'i'
),
/* HB_SCRIPT_THAI */
HB_TAG
(
'T'
,
'i'
,
'b'
,
't'
),
/* HB_SCRIPT_TIBETAN */
HB_TAG
(
'C'
,
'a'
,
'n'
,
's'
),
/* HB_SCRIPT_CANADIAN_ABORIGINAL */
HB_TAG
(
'Y'
,
'i'
,
'i'
,
'i'
),
/* HB_SCRIPT_YI */
HB_TAG
(
'T'
,
'g'
,
'l'
,
'g'
),
/* HB_SCRIPT_TAGALOG */
HB_TAG
(
'H'
,
'a'
,
'n'
,
'o'
),
/* HB_SCRIPT_HANUNOO */
HB_TAG
(
'B'
,
'u'
,
'h'
,
'd'
),
/* HB_SCRIPT_BUHID */
HB_TAG
(
'T'
,
'a'
,
'g'
,
'b'
),
/* HB_SCRIPT_TAGBANWA */
/* Unicode-4.0 additions */
HB_TAG
(
'B'
,
'r'
,
'a'
,
'i'
),
/* HB_SCRIPT_BRAILLE */
HB_TAG
(
'C'
,
'p'
,
'r'
,
't'
),
/* HB_SCRIPT_CYPRIOT */
HB_TAG
(
'L'
,
'i'
,
'm'
,
'b'
),
/* HB_SCRIPT_LIMBU */
HB_TAG
(
'O'
,
's'
,
'm'
,
'a'
),
/* HB_SCRIPT_OSMANYA */
HB_TAG
(
'S'
,
'h'
,
'a'
,
'w'
),
/* HB_SCRIPT_SHAVIAN */
HB_TAG
(
'L'
,
'i'
,
'n'
,
'b'
),
/* HB_SCRIPT_LINEAR_B */
HB_TAG
(
'T'
,
'a'
,
'l'
,
'e'
),
/* HB_SCRIPT_TAI_LE */
HB_TAG
(
'U'
,
'g'
,
'a'
,
'r'
),
/* HB_SCRIPT_UGARITIC */
/* Unicode-4.1 additions */
HB_TAG
(
'T'
,
'a'
,
'l'
,
'u'
),
/* HB_SCRIPT_NEW_TAI_LUE */
HB_TAG
(
'B'
,
'u'
,
'g'
,
'i'
),
/* HB_SCRIPT_BUGINESE */
HB_TAG
(
'G'
,
'l'
,
'a'
,
'g'
),
/* HB_SCRIPT_GLAGOLITIC */
HB_TAG
(
'T'
,
'f'
,
'n'
,
'g'
),
/* HB_SCRIPT_TIFINAGH */
HB_TAG
(
'S'
,
'y'
,
'l'
,
'o'
),
/* HB_SCRIPT_SYLOTI_NAGRI */
HB_TAG
(
'X'
,
'p'
,
'e'
,
'o'
),
/* HB_SCRIPT_OLD_PERSIAN */
HB_TAG
(
'K'
,
'h'
,
'a'
,
'r'
),
/* HB_SCRIPT_KHAROSHTHI */
/* Unicode-5.0 additions */
HB_TAG
(
'Z'
,
'z'
,
'z'
,
'z'
),
/* HB_SCRIPT_UNKNOWN */
HB_TAG
(
'B'
,
'a'
,
'l'
,
'i'
),
/* HB_SCRIPT_BALINESE */
HB_TAG
(
'X'
,
's'
,
'u'
,
'x'
),
/* HB_SCRIPT_CUNEIFORM */
HB_TAG
(
'P'
,
'h'
,
'n'
,
'x'
),
/* HB_SCRIPT_PHOENICIAN */
HB_TAG
(
'P'
,
'h'
,
'a'
,
'g'
),
/* HB_SCRIPT_PHAGS_PA */
HB_TAG
(
'N'
,
'k'
,
'o'
,
'o'
),
/* HB_SCRIPT_NKO */
/* Unicode-5.1 additions */
HB_TAG
(
'K'
,
'a'
,
'l'
,
'i'
),
/* HB_SCRIPT_KAYAH_LI */
HB_TAG
(
'L'
,
'e'
,
'p'
,
'c'
),
/* HB_SCRIPT_LEPCHA */
HB_TAG
(
'R'
,
'j'
,
'n'
,
'g'
),
/* HB_SCRIPT_REJANG */
HB_TAG
(
'S'
,
'u'
,
'n'
,
'd'
),
/* HB_SCRIPT_SUNDANESE */
HB_TAG
(
'S'
,
'a'
,
'u'
,
'r'
),
/* HB_SCRIPT_SAURASHTRA */
HB_TAG
(
'C'
,
'h'
,
'a'
,
'm'
),
/* HB_SCRIPT_CHAM */
HB_TAG
(
'O'
,
'l'
,
'c'
,
'k'
),
/* HB_SCRIPT_OL_CHIKI */
HB_TAG
(
'V'
,
'a'
,
'i'
,
'i'
),
/* HB_SCRIPT_VAI */
HB_TAG
(
'C'
,
'a'
,
'r'
,
'i'
),
/* HB_SCRIPT_CARIAN */
HB_TAG
(
'L'
,
'y'
,
'c'
,
'i'
),
/* HB_SCRIPT_LYCIAN */
HB_TAG
(
'L'
,
'y'
,
'd'
,
'i'
),
/* HB_SCRIPT_LYDIAN */
/* Unicode-5.2 additions */
HB_TAG
(
'A'
,
'v'
,
's'
,
't'
),
/* HB_SCRIPT_AVESTAN */
HB_TAG
(
'B'
,
'a'
,
'm'
,
'u'
),
/* HB_SCRIPT_BAMUM */
HB_TAG
(
'E'
,
'g'
,
'y'
,
'p'
),
/* HB_SCRIPT_EGYPTIAN_HIEROGLYPHS */
HB_TAG
(
'A'
,
'r'
,
'm'
,
'i'
),
/* HB_SCRIPT_IMPERIAL_ARAMAIC */
HB_TAG
(
'P'
,
'h'
,
'l'
,
'i'
),
/* HB_SCRIPT_INSCRIPTIONAL_PAHLAVI */
HB_TAG
(
'P'
,
'r'
,
't'
,
'i'
),
/* HB_SCRIPT_INSCRIPTIONAL_PARTHIAN */
HB_TAG
(
'J'
,
'a'
,
'v'
,
'a'
),
/* HB_SCRIPT_JAVANESE */
HB_TAG
(
'K'
,
't'
,
'h'
,
'i'
),
/* HB_SCRIPT_KAITHI */
HB_TAG
(
'L'
,
'i'
,
's'
,
'u'
),
/* HB_SCRIPT_LISU */
HB_TAG
(
'M'
,
't'
,
'e'
,
'i'
),
/* HB_SCRIPT_MEETEI_MAYEK */
HB_TAG
(
'S'
,
'a'
,
'r'
,
'b'
),
/* HB_SCRIPT_OLD_SOUTH_ARABIAN */
HB_TAG
(
'O'
,
'r'
,
'k'
,
'h'
),
/* HB_SCRIPT_OLD_TURKIC */
HB_TAG
(
'S'
,
'a'
,
'm'
,
'r'
),
/* HB_SCRIPT_SAMARITAN */
HB_TAG
(
'L'
,
'a'
,
'n'
,
'a'
),
/* HB_SCRIPT_TAI_THAM */
HB_TAG
(
'T'
,
'a'
,
'v'
,
't'
),
/* HB_SCRIPT_TAI_VIET */
/* Unicode-6.0 additions */
HB_TAG
(
'B'
,
'a'
,
't'
,
'k'
),
/* HB_SCRIPT_BATAK */
HB_TAG
(
'B'
,
'r'
,
'a'
,
'h'
),
/* HB_SCRIPT_BRAHMI */
HB_TAG
(
'M'
,
'a'
,
'n'
,
'd'
)
/* HB_SCRIPT_MANDAIC */
};
struct
tag_script_pair
{
hb_tag_t
tag
;
hb_script_t
script
;
};
static
const
struct
tag_script_pair
script_from_iso15924_tag
[]
=
{
{
HB_TAG
(
'A'
,
'r'
,
'a'
,
'b'
),
HB_SCRIPT_ARABIC
},
{
HB_TAG
(
'A'
,
'r'
,
'm'
,
'i'
),
HB_SCRIPT_IMPERIAL_ARAMAIC
},
{
HB_TAG
(
'A'
,
'r'
,
'm'
,
'n'
),
HB_SCRIPT_ARMENIAN
},
{
HB_TAG
(
'A'
,
'v'
,
's'
,
't'
),
HB_SCRIPT_AVESTAN
},
{
HB_TAG
(
'B'
,
'a'
,
'l'
,
'i'
),
HB_SCRIPT_BALINESE
},
{
HB_TAG
(
'B'
,
'a'
,
'm'
,
'u'
),
HB_SCRIPT_BAMUM
},
{
HB_TAG
(
'B'
,
'a'
,
't'
,
'k'
),
HB_SCRIPT_BATAK
},
{
HB_TAG
(
'B'
,
'e'
,
'n'
,
'g'
),
HB_SCRIPT_BENGALI
},
{
HB_TAG
(
'B'
,
'o'
,
'p'
,
'o'
),
HB_SCRIPT_BOPOMOFO
},
{
HB_TAG
(
'B'
,
'r'
,
'a'
,
'h'
),
HB_SCRIPT_BRAHMI
},
{
HB_TAG
(
'B'
,
'r'
,
'a'
,
'i'
),
HB_SCRIPT_BRAILLE
},
{
HB_TAG
(
'B'
,
'u'
,
'g'
,
'i'
),
HB_SCRIPT_BUGINESE
},
{
HB_TAG
(
'B'
,
'u'
,
'h'
,
'd'
),
HB_SCRIPT_BUHID
},
{
HB_TAG
(
'C'
,
'a'
,
'n'
,
's'
),
HB_SCRIPT_CANADIAN_ABORIGINAL
},
{
HB_TAG
(
'C'
,
'a'
,
'r'
,
'i'
),
HB_SCRIPT_CARIAN
},
{
HB_TAG
(
'C'
,
'h'
,
'a'
,
'm'
),
HB_SCRIPT_CHAM
},
{
HB_TAG
(
'C'
,
'h'
,
'e'
,
'r'
),
HB_SCRIPT_CHEROKEE
},
{
HB_TAG
(
'C'
,
'p'
,
'r'
,
't'
),
HB_SCRIPT_CYPRIOT
},
{
HB_TAG
(
'C'
,
'y'
,
'r'
,
'l'
),
HB_SCRIPT_CYRILLIC
},
{
HB_TAG
(
'C'
,
'y'
,
'r'
,
's'
),
HB_SCRIPT_CYRILLIC
},
{
HB_TAG
(
'D'
,
'e'
,
'v'
,
'a'
),
HB_SCRIPT_DEVANAGARI
},
{
HB_TAG
(
'D'
,
's'
,
'r'
,
't'
),
HB_SCRIPT_DESERET
},
{
HB_TAG
(
'E'
,
'g'
,
'y'
,
'p'
),
HB_SCRIPT_EGYPTIAN_HIEROGLYPHS
},
{
HB_TAG
(
'E'
,
't'
,
'h'
,
'i'
),
HB_SCRIPT_ETHIOPIC
},
{
HB_TAG
(
'G'
,
'e'
,
'o'
,
'a'
),
HB_SCRIPT_GEORGIAN
},
{
HB_TAG
(
'G'
,
'e'
,
'o'
,
'n'
),
HB_SCRIPT_GEORGIAN
},
{
HB_TAG
(
'G'
,
'e'
,
'o'
,
'r'
),
HB_SCRIPT_GEORGIAN
},
{
HB_TAG
(
'G'
,
'l'
,
'a'
,
'g'
),
HB_SCRIPT_GLAGOLITIC
},
{
HB_TAG
(
'G'
,
'o'
,
't'
,
'h'
),
HB_SCRIPT_GOTHIC
},
{
HB_TAG
(
'G'
,
'r'
,
'e'
,
'k'
),
HB_SCRIPT_GREEK
},
{
HB_TAG
(
'G'
,
'u'
,
'j'
,
'r'
),
HB_SCRIPT_GUJARATI
},
{
HB_TAG
(
'G'
,
'u'
,
'r'
,
'u'
),
HB_SCRIPT_GURMUKHI
},
{
HB_TAG
(
'H'
,
'a'
,
'n'
,
'g'
),
HB_SCRIPT_HANGUL
},
{
HB_TAG
(
'H'
,
'a'
,
'n'
,
'i'
),
HB_SCRIPT_HAN
},
{
HB_TAG
(
'H'
,
'a'
,
'n'
,
'o'
),
HB_SCRIPT_HANUNOO
},
{
HB_TAG
(
'H'
,
'e'
,
'b'
,
'r'
),
HB_SCRIPT_HEBREW
},
{
HB_TAG
(
'H'
,
'i'
,
'r'
,
'a'
),
HB_SCRIPT_HIRAGANA
},
{
HB_TAG
(
'I'
,
't'
,
'a'
,
'l'
),
HB_SCRIPT_OLD_ITALIC
},
{
HB_TAG
(
'J'
,
'a'
,
'v'
,
'a'
),
HB_SCRIPT_JAVANESE
},
{
HB_TAG
(
'K'
,
'a'
,
'l'
,
'i'
),
HB_SCRIPT_KAYAH_LI
},
{
HB_TAG
(
'K'
,
'a'
,
'n'
,
'a'
),
HB_SCRIPT_KATAKANA
},
{
HB_TAG
(
'K'
,
'h'
,
'a'
,
'r'
),
HB_SCRIPT_KHAROSHTHI
},
{
HB_TAG
(
'K'
,
'h'
,
'm'
,
'r'
),
HB_SCRIPT_KHMER
},
{
HB_TAG
(
'K'
,
'n'
,
'd'
,
'a'
),
HB_SCRIPT_KANNADA
},
{
HB_TAG
(
'K'
,
't'
,
'h'
,
'i'
),
HB_SCRIPT_KAITHI
},
{
HB_TAG
(
'L'
,
'a'
,
'n'
,
'a'
),
HB_SCRIPT_TAI_THAM
},
{
HB_TAG
(
'L'
,
'a'
,
'o'
,
'o'
),
HB_SCRIPT_LAO
},
{
HB_TAG
(
'L'
,
'a'
,
't'
,
'f'
),
HB_SCRIPT_LATIN
},
{
HB_TAG
(
'L'
,
'a'
,
't'
,
'g'
),
HB_SCRIPT_LATIN
},
{
HB_TAG
(
'L'
,
'a'
,
't'
,
'n'
),
HB_SCRIPT_LATIN
},
{
HB_TAG
(
'L'
,
'e'
,
'p'
,
'c'
),
HB_SCRIPT_LEPCHA
},
{
HB_TAG
(
'L'
,
'i'
,
'm'
,
'b'
),
HB_SCRIPT_LIMBU
},
{
HB_TAG
(
'L'
,
'i'
,
'n'
,
'b'
),
HB_SCRIPT_LINEAR_B
},
{
HB_TAG
(
'L'
,
'i'
,
's'
,
'u'
),
HB_SCRIPT_LISU
},
{
HB_TAG
(
'L'
,
'y'
,
'c'
,
'i'
),
HB_SCRIPT_LYCIAN
},
{
HB_TAG
(
'L'
,
'y'
,
'd'
,
'i'
),
HB_SCRIPT_LYDIAN
},
{
HB_TAG
(
'M'
,
'a'
,
'n'
,
'd'
),
HB_SCRIPT_MANDAIC
},
{
HB_TAG
(
'M'
,
'l'
,
'y'
,
'm'
),
HB_SCRIPT_MALAYALAM
},
{
HB_TAG
(
'M'
,
'o'
,
'n'
,
'g'
),
HB_SCRIPT_MONGOLIAN
},
{
HB_TAG
(
'M'
,
't'
,
'e'
,
'i'
),
HB_SCRIPT_MEETEI_MAYEK
},
{
HB_TAG
(
'M'
,
'y'
,
'm'
,
'r'
),
HB_SCRIPT_MYANMAR
},
{
HB_TAG
(
'N'
,
'k'
,
'o'
,
'o'
),
HB_SCRIPT_NKO
},
{
HB_TAG
(
'O'
,
'g'
,
'a'
,
'm'
),
HB_SCRIPT_OGHAM
},
{
HB_TAG
(
'O'
,
'l'
,
'c'
,
'k'
),
HB_SCRIPT_OL_CHIKI
},
{
HB_TAG
(
'O'
,
'r'
,
'k'
,
'h'
),
HB_SCRIPT_OLD_TURKIC
},
{
HB_TAG
(
'O'
,
'r'
,
'y'
,
'a'
),
HB_SCRIPT_ORIYA
},
{
HB_TAG
(
'O'
,
's'
,
'm'
,
'a'
),
HB_SCRIPT_OSMANYA
},
{
HB_TAG
(
'P'
,
'h'
,
'a'
,
'g'
),
HB_SCRIPT_PHAGS_PA
},
{
HB_TAG
(
'P'
,
'h'
,
'l'
,
'i'
),
HB_SCRIPT_INSCRIPTIONAL_PAHLAVI
},
{
HB_TAG
(
'P'
,
'h'
,
'n'
,
'x'
),
HB_SCRIPT_PHOENICIAN
},
{
HB_TAG
(
'P'
,
'r'
,
't'
,
'i'
),
HB_SCRIPT_INSCRIPTIONAL_PARTHIAN
},
{
HB_TAG
(
'Q'
,
'a'
,
'a'
,
'c'
),
HB_SCRIPT_COPTIC
},
{
HB_TAG
(
'Q'
,
'a'
,
'a'
,
'i'
),
HB_SCRIPT_INHERITED
},
{
HB_TAG
(
'R'
,
'j'
,
'n'
,
'g'
),
HB_SCRIPT_REJANG
},
{
HB_TAG
(
'R'
,
'u'
,
'n'
,
'r'
),
HB_SCRIPT_RUNIC
},
{
HB_TAG
(
'S'
,
'a'
,
'm'
,
'r'
),
HB_SCRIPT_SAMARITAN
},
{
HB_TAG
(
'S'
,
'a'
,
'r'
,
'b'
),
HB_SCRIPT_OLD_SOUTH_ARABIAN
},
{
HB_TAG
(
'S'
,
'a'
,
'u'
,
'r'
),
HB_SCRIPT_SAURASHTRA
},
{
HB_TAG
(
'S'
,
'h'
,
'a'
,
'w'
),
HB_SCRIPT_SHAVIAN
},
{
HB_TAG
(
'S'
,
'i'
,
'n'
,
'h'
),
HB_SCRIPT_SINHALA
},
{
HB_TAG
(
'S'
,
'u'
,
'n'
,
'd'
),
HB_SCRIPT_SUNDANESE
},
{
HB_TAG
(
'S'
,
'y'
,
'l'
,
'o'
),
HB_SCRIPT_SYLOTI_NAGRI
},
{
HB_TAG
(
'S'
,
'y'
,
'r'
,
'c'
),
HB_SCRIPT_SYRIAC
},
{
HB_TAG
(
'S'
,
'y'
,
'r'
,
'e'
),
HB_SCRIPT_SYRIAC
},
{
HB_TAG
(
'S'
,
'y'
,
'r'
,
'n'
),
HB_SCRIPT_SYRIAC
},
{
HB_TAG
(
'T'
,
'a'
,
'g'
,
'b'
),
HB_SCRIPT_TAGBANWA
},
{
HB_TAG
(
'T'
,
'a'
,
'l'
,
'e'
),
HB_SCRIPT_TAI_LE
},
{
HB_TAG
(
'T'
,
'a'
,
'l'
,
'u'
),
HB_SCRIPT_NEW_TAI_LUE
},
{
HB_TAG
(
'T'
,
'a'
,
'm'
,
'l'
),
HB_SCRIPT_TAMIL
},
{
HB_TAG
(
'T'
,
'a'
,
'v'
,
't'
),
HB_SCRIPT_TAI_VIET
},
{
HB_TAG
(
'T'
,
'e'
,
'l'
,
'u'
),
HB_SCRIPT_TELUGU
},
{
HB_TAG
(
'T'
,
'f'
,
'n'
,
'g'
),
HB_SCRIPT_TIFINAGH
},
{
HB_TAG
(
'T'
,
'g'
,
'l'
,
'g'
),
HB_SCRIPT_TAGALOG
},
{
HB_TAG
(
'T'
,
'h'
,
'a'
,
'a'
),
HB_SCRIPT_THAANA
},
{
HB_TAG
(
'T'
,
'h'
,
'a'
,
'i'
),
HB_SCRIPT_THAI
},
{
HB_TAG
(
'T'
,
'i'
,
'b'
,
't'
),
HB_SCRIPT_TIBETAN
},
{
HB_TAG
(
'U'
,
'g'
,
'a'
,
'r'
),
HB_SCRIPT_UGARITIC
},
{
HB_TAG
(
'V'
,
'a'
,
'i'
,
'i'
),
HB_SCRIPT_VAI
},
{
HB_TAG
(
'X'
,
'p'
,
'e'
,
'o'
),
HB_SCRIPT_OLD_PERSIAN
},
{
HB_TAG
(
'X'
,
's'
,
'u'
,
'x'
),
HB_SCRIPT_CUNEIFORM
},
{
HB_TAG
(
'Y'
,
'i'
,
'i'
,
'i'
),
HB_SCRIPT_YI
},
{
HB_TAG
(
'Z'
,
'y'
,
'y'
,
'y'
),
HB_SCRIPT_COMMON
},
{
HB_TAG
(
'Z'
,
'z'
,
'z'
,
'z'
),
HB_SCRIPT_UNKNOWN
}
};
static
int
_tag_cmp
(
hb_tag_t
*
pa
,
hb_tag_t
*
pb
)
{
hb_tag_t
a
=
*
pa
,
b
=
*
pb
;
return
a
<
b
?
-
1
:
a
==
b
?
0
:
+
1
;
}
hb_script_t
hb_script_from_iso15924_tag
(
hb_tag_t
tag
)
{
const
struct
tag_script_pair
*
pair
;
/* Be lenient, adjust case (one capital letter followed by three small letters) */
tag
=
(
tag
&
0xDFDFDFDF
)
|
0x00202020
;
pair
=
(
const
struct
tag_script_pair
*
)
bsearch
(
&
tag
,
script_from_iso15924_tag
,
ARRAY_LENGTH
(
script_from_iso15924_tag
),
sizeof
(
script_from_iso15924_tag
[
0
]),
(
hb_compare_func_t
)
_tag_cmp
);
if
(
pair
)
return
pair
->
script
;
/* If it looks right, just use the tag as a script */
if
(((
uint32_t
)
tag
&
0xE0E0E0E0
)
==
0x40606060
)
return
(
hb_script_t
)
tag
;
/* Otherwise, return unknown */
return
HB_SCRIPT_UNKNOWN
;
}
hb_script_t
hb_script_from_string
(
const
char
*
s
)
{
return
hb_script_from_iso15924_tag
(
hb_tag_from_string
(
s
));
}
hb_tag_t
hb_script_to_iso15924_tag
(
hb_script_t
script
)
{
if
(
likely
((
unsigned
int
)
script
<
ARRAY_LENGTH
(
script_to_iso15924_tag
)))
return
script_to_iso15924_tag
[
script
];
/* if script is of the right shape (one capital letter followed by three small letters),
* return as is. */
if
(((
uint32_t
)
script
&
0xE0E0E0E0
)
==
0x40606060
)
return
(
hb_tag_t
)
script
;
/* Otherwise, we don't know what that is */
return
script_to_iso15924_tag
[
HB_SCRIPT_UNKNOWN
];
}
#define LTR HB_DIRECTION_LTR
#define RTL HB_DIRECTION_RTL
const
hb_direction_t
horiz_dir
[]
=
{
LTR
,
/* Zyyy */
LTR
,
/* Qaai */
RTL
,
/* Arab */
LTR
,
/* Armn */
LTR
,
/* Beng */
LTR
,
/* Bopo */
LTR
,
/* Cher */
LTR
,
/* Qaac */
LTR
,
/* Cyrl (Cyrs) */
LTR
,
/* Dsrt */
LTR
,
/* Deva */
LTR
,
/* Ethi */
LTR
,
/* Geor (Geon, Geoa) */
LTR
,
/* Goth */
LTR
,
/* Grek */
LTR
,
/* Gujr */
LTR
,
/* Guru */
LTR
,
/* Hani */
LTR
,
/* Hang */
RTL
,
/* Hebr */
LTR
,
/* Hira */
LTR
,
/* Knda */
LTR
,
/* Kana */
LTR
,
/* Khmr */
LTR
,
/* Laoo */
LTR
,
/* Latn (Latf, Latg) */
LTR
,
/* Mlym */
LTR
,
/* Mong */
LTR
,
/* Mymr */
LTR
,
/* Ogam */
LTR
,
/* Ital */
LTR
,
/* Orya */
LTR
,
/* Runr */
LTR
,
/* Sinh */
RTL
,
/* Syrc (Syrj, Syrn, Syre) */
LTR
,
/* Taml */
LTR
,
/* Telu */
RTL
,
/* Thaa */
LTR
,
/* Thai */
LTR
,
/* Tibt */
LTR
,
/* Cans */
LTR
,
/* Yiii */
LTR
,
/* Tglg */
LTR
,
/* Hano */
LTR
,
/* Buhd */
LTR
,
/* Tagb */
/* Unicode-4.0 additions */
LTR
,
/* Brai */
RTL
,
/* Cprt */
LTR
,
/* Limb */
LTR
,
/* Osma */
LTR
,
/* Shaw */
LTR
,
/* Linb */
LTR
,
/* Tale */
LTR
,
/* Ugar */
/* Unicode-4.1 additions */
LTR
,
/* Talu */
LTR
,
/* Bugi */
LTR
,
/* Glag */
LTR
,
/* Tfng */
LTR
,
/* Sylo */
LTR
,
/* Xpeo */
LTR
,
/* Khar */
/* Unicode-5.0 additions */
LTR
,
/* Zzzz */
LTR
,
/* Bali */
LTR
,
/* Xsux */
RTL
,
/* Phnx */
LTR
,
/* Phag */
RTL
,
/* Nkoo */
/* Unicode-5.1 additions */
LTR
,
/* Kali */
LTR
,
/* Lepc */
LTR
,
/* Rjng */
LTR
,
/* Sund */
LTR
,
/* Saur */
LTR
,
/* Cham */
LTR
,
/* Olck */
LTR
,
/* Vaii */
LTR
,
/* Cari */
LTR
,
/* Lyci */
LTR
,
/* Lydi */
/* Unicode-5.2 additions */
RTL
,
/* Avst */
LTR
,
/* Bamu */
LTR
,
/* Egyp */
RTL
,
/* Armi */
RTL
,
/* Phli */
RTL
,
/* Prti */
LTR
,
/* Java */
LTR
,
/* Kthi */
LTR
,
/* Lisu */
LTR
,
/* Mtei */
RTL
,
/* Sarb */
RTL
,
/* Orkh */
RTL
,
/* Samr */
LTR
,
/* Lana */
LTR
,
/* Tavt */
/* Unicode-6.0 additions */
LTR
,
/* Batk */
LTR
,
/* Brah */
RTL
/* Mand */
};
#undef LTR
#undef RTL
hb_direction_t
hb_script_get_horizontal_direction
(
hb_script_t
script
)
{
if
(
unlikely
((
unsigned
int
)
script
>=
ARRAY_LENGTH
(
horiz_dir
)))
return
HB_DIRECTION_LTR
;
return
horiz_dir
[
script
];
}
HB_END_DECLS
src/hb-unicode.h
浏览文件 @
00bec2c9
...
...
@@ -32,157 +32,6 @@
HB_BEGIN_DECLS
/* Unicode General Category property */
typedef
enum
{
HB_UNICODE_GENERAL_CATEGORY_CONTROL
,
/* Cc */
HB_UNICODE_GENERAL_CATEGORY_FORMAT
,
/* Cf */
HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED
,
/* Cn */
HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE
,
/* Co */
HB_UNICODE_GENERAL_CATEGORY_SURROGATE
,
/* Cs */
HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER
,
/* Ll */
HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER
,
/* Lm */
HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER
,
/* Lo */
HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER
,
/* Lt */
HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER
,
/* Lu */
HB_UNICODE_GENERAL_CATEGORY_COMBINING_MARK
,
/* Mc */
HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK
,
/* Me */
HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK
,
/* Mn */
HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER
,
/* Nd */
HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER
,
/* Nl */
HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER
,
/* No */
HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION
,
/* Pc */
HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION
,
/* Pd */
HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION
,
/* Pe */
HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION
,
/* Pf */
HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION
,
/* Pi */
HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION
,
/* Po */
HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION
,
/* Ps */
HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL
,
/* Sc */
HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL
,
/* Sk */
HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL
,
/* Sm */
HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL
,
/* So */
HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR
,
/* Zl */
HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR
,
/* Zp */
HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR
/* Zs */
}
hb_unicode_general_category_t
;
/* Unicode Script property */
typedef
enum
{
/* ISO 15924 code */
HB_SCRIPT_INVALID
=
-
1
,
HB_SCRIPT_COMMON
=
0
,
/* Zyyy */
HB_SCRIPT_INHERITED
,
/* Qaai */
HB_SCRIPT_ARABIC
,
/* Arab */
HB_SCRIPT_ARMENIAN
,
/* Armn */
HB_SCRIPT_BENGALI
,
/* Beng */
HB_SCRIPT_BOPOMOFO
,
/* Bopo */
HB_SCRIPT_CHEROKEE
,
/* Cher */
HB_SCRIPT_COPTIC
,
/* Qaac */
HB_SCRIPT_CYRILLIC
,
/* Cyrl (Cyrs) */
HB_SCRIPT_DESERET
,
/* Dsrt */
HB_SCRIPT_DEVANAGARI
,
/* Deva */
HB_SCRIPT_ETHIOPIC
,
/* Ethi */
HB_SCRIPT_GEORGIAN
,
/* Geor (Geon, Geoa) */
HB_SCRIPT_GOTHIC
,
/* Goth */
HB_SCRIPT_GREEK
,
/* Grek */
HB_SCRIPT_GUJARATI
,
/* Gujr */
HB_SCRIPT_GURMUKHI
,
/* Guru */
HB_SCRIPT_HAN
,
/* Hani */
HB_SCRIPT_HANGUL
,
/* Hang */
HB_SCRIPT_HEBREW
,
/* Hebr */
HB_SCRIPT_HIRAGANA
,
/* Hira */
HB_SCRIPT_KANNADA
,
/* Knda */
HB_SCRIPT_KATAKANA
,
/* Kana */
HB_SCRIPT_KHMER
,
/* Khmr */
HB_SCRIPT_LAO
,
/* Laoo */
HB_SCRIPT_LATIN
,
/* Latn (Latf, Latg) */
HB_SCRIPT_MALAYALAM
,
/* Mlym */
HB_SCRIPT_MONGOLIAN
,
/* Mong */
HB_SCRIPT_MYANMAR
,
/* Mymr */
HB_SCRIPT_OGHAM
,
/* Ogam */
HB_SCRIPT_OLD_ITALIC
,
/* Ital */
HB_SCRIPT_ORIYA
,
/* Orya */
HB_SCRIPT_RUNIC
,
/* Runr */
HB_SCRIPT_SINHALA
,
/* Sinh */
HB_SCRIPT_SYRIAC
,
/* Syrc (Syrj, Syrn, Syre) */
HB_SCRIPT_TAMIL
,
/* Taml */
HB_SCRIPT_TELUGU
,
/* Telu */
HB_SCRIPT_THAANA
,
/* Thaa */
HB_SCRIPT_THAI
,
/* Thai */
HB_SCRIPT_TIBETAN
,
/* Tibt */
HB_SCRIPT_CANADIAN_ABORIGINAL
,
/* Cans */
HB_SCRIPT_YI
,
/* Yiii */
HB_SCRIPT_TAGALOG
,
/* Tglg */
HB_SCRIPT_HANUNOO
,
/* Hano */
HB_SCRIPT_BUHID
,
/* Buhd */
HB_SCRIPT_TAGBANWA
,
/* Tagb */
/* Unicode-4.0 additions */
HB_SCRIPT_BRAILLE
,
/* Brai */
HB_SCRIPT_CYPRIOT
,
/* Cprt */
HB_SCRIPT_LIMBU
,
/* Limb */
HB_SCRIPT_OSMANYA
,
/* Osma */
HB_SCRIPT_SHAVIAN
,
/* Shaw */
HB_SCRIPT_LINEAR_B
,
/* Linb */
HB_SCRIPT_TAI_LE
,
/* Tale */
HB_SCRIPT_UGARITIC
,
/* Ugar */
/* Unicode-4.1 additions */
HB_SCRIPT_NEW_TAI_LUE
,
/* Talu */
HB_SCRIPT_BUGINESE
,
/* Bugi */
HB_SCRIPT_GLAGOLITIC
,
/* Glag */
HB_SCRIPT_TIFINAGH
,
/* Tfng */
HB_SCRIPT_SYLOTI_NAGRI
,
/* Sylo */
HB_SCRIPT_OLD_PERSIAN
,
/* Xpeo */
HB_SCRIPT_KHAROSHTHI
,
/* Khar */
/* Unicode-5.0 additions */
HB_SCRIPT_UNKNOWN
,
/* Zzzz */
HB_SCRIPT_BALINESE
,
/* Bali */
HB_SCRIPT_CUNEIFORM
,
/* Xsux */
HB_SCRIPT_PHOENICIAN
,
/* Phnx */
HB_SCRIPT_PHAGS_PA
,
/* Phag */
HB_SCRIPT_NKO
,
/* Nkoo */
/* Unicode-5.1 additions */
HB_SCRIPT_KAYAH_LI
,
/* Kali */
HB_SCRIPT_LEPCHA
,
/* Lepc */
HB_SCRIPT_REJANG
,
/* Rjng */
HB_SCRIPT_SUNDANESE
,
/* Sund */
HB_SCRIPT_SAURASHTRA
,
/* Saur */
HB_SCRIPT_CHAM
,
/* Cham */
HB_SCRIPT_OL_CHIKI
,
/* Olck */
HB_SCRIPT_VAI
,
/* Vaii */
HB_SCRIPT_CARIAN
,
/* Cari */
HB_SCRIPT_LYCIAN
,
/* Lyci */
HB_SCRIPT_LYDIAN
,
/* Lydi */
/* Unicode-5.2 additions */
HB_SCRIPT_AVESTAN
,
/* Avst */
HB_SCRIPT_BAMUM
,
/* Bamu */
HB_SCRIPT_EGYPTIAN_HIEROGLYPHS
,
/* Egyp */
HB_SCRIPT_IMPERIAL_ARAMAIC
,
/* Armi */
HB_SCRIPT_INSCRIPTIONAL_PAHLAVI
,
/* Phli */
HB_SCRIPT_INSCRIPTIONAL_PARTHIAN
,
/* Prti */
HB_SCRIPT_JAVANESE
,
/* Java */
HB_SCRIPT_KAITHI
,
/* Kthi */
HB_SCRIPT_LISU
,
/* Lisu */
HB_SCRIPT_MEETEI_MAYEK
,
/* Mtei */
HB_SCRIPT_OLD_SOUTH_ARABIAN
,
/* Sarb */
HB_SCRIPT_OLD_TURKIC
,
/* Orkh */
HB_SCRIPT_SAMARITAN
,
/* Samr */
HB_SCRIPT_TAI_THAM
,
/* Lana */
HB_SCRIPT_TAI_VIET
,
/* Tavt */
/* Unicode-6.0 additions */
HB_SCRIPT_BATAK
,
/* Batk */
HB_SCRIPT_BRAHMI
,
/* Brah */
HB_SCRIPT_MANDAIC
/* Mand */
}
hb_script_t
;
/*
* hb_unicode_funcs_t
*/
...
...
@@ -290,21 +139,6 @@ hb_unicode_get_eastasian_width (hb_unicode_funcs_t *ufuncs,
hb_codepoint_t
unicode
);
/* Script functions */
hb_script_t
hb_script_from_iso15924_tag
(
hb_tag_t
tag
);
/* suger for tag_from_string() then script_from_iso15924_tag */
hb_script_t
hb_script_from_string
(
const
char
*
s
);
hb_tag_t
hb_script_to_iso15924_tag
(
hb_script_t
script
);
hb_direction_t
hb_script_get_horizontal_direction
(
hb_script_t
script
);
HB_END_DECLS
#endif
/* HB_UNICODE_H */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录