Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
0809aadd
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0809aadd
编写于
4月 20, 2011
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[glib] Add two-way script conversion functions
Also optimizes the common-direction script lookup to be an array lookup.
上级
5c8c1b68
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
148 addition
and
130 deletion
+148
-130
src/hb-glib.cc
src/hb-glib.cc
+140
-130
src/hb-glib.h
src/hb-glib.h
+8
-0
未找到文件。
src/hb-glib.cc
浏览文件 @
0809aadd
...
...
@@ -34,6 +34,145 @@
HB_BEGIN_DECLS
static
const
hb_script_t
glib_script_to_script
[]
=
{
HB_SCRIPT_COMMON
,
HB_SCRIPT_INHERITED
,
HB_SCRIPT_ARABIC
,
HB_SCRIPT_ARMENIAN
,
HB_SCRIPT_BENGALI
,
HB_SCRIPT_BOPOMOFO
,
HB_SCRIPT_CHEROKEE
,
HB_SCRIPT_COPTIC
,
HB_SCRIPT_CYRILLIC
,
HB_SCRIPT_DESERET
,
HB_SCRIPT_DEVANAGARI
,
HB_SCRIPT_ETHIOPIC
,
HB_SCRIPT_GEORGIAN
,
HB_SCRIPT_GOTHIC
,
HB_SCRIPT_GREEK
,
HB_SCRIPT_GUJARATI
,
HB_SCRIPT_GURMUKHI
,
HB_SCRIPT_HAN
,
HB_SCRIPT_HANGUL
,
HB_SCRIPT_HEBREW
,
HB_SCRIPT_HIRAGANA
,
HB_SCRIPT_KANNADA
,
HB_SCRIPT_KATAKANA
,
HB_SCRIPT_KHMER
,
HB_SCRIPT_LAO
,
HB_SCRIPT_LATIN
,
HB_SCRIPT_MALAYALAM
,
HB_SCRIPT_MONGOLIAN
,
HB_SCRIPT_MYANMAR
,
HB_SCRIPT_OGHAM
,
HB_SCRIPT_OLD_ITALIC
,
HB_SCRIPT_ORIYA
,
HB_SCRIPT_RUNIC
,
HB_SCRIPT_SINHALA
,
HB_SCRIPT_SYRIAC
,
HB_SCRIPT_TAMIL
,
HB_SCRIPT_TELUGU
,
HB_SCRIPT_THAANA
,
HB_SCRIPT_THAI
,
HB_SCRIPT_TIBETAN
,
HB_SCRIPT_CANADIAN_ABORIGINAL
,
HB_SCRIPT_YI
,
HB_SCRIPT_TAGALOG
,
HB_SCRIPT_HANUNOO
,
HB_SCRIPT_BUHID
,
HB_SCRIPT_TAGBANWA
,
/* Unicode-4.0 additions */
HB_SCRIPT_BRAILLE
,
HB_SCRIPT_CYPRIOT
,
HB_SCRIPT_LIMBU
,
HB_SCRIPT_OSMANYA
,
HB_SCRIPT_SHAVIAN
,
HB_SCRIPT_LINEAR_B
,
HB_SCRIPT_TAI_LE
,
HB_SCRIPT_UGARITIC
,
/* Unicode-4.1 additions */
HB_SCRIPT_NEW_TAI_LUE
,
HB_SCRIPT_BUGINESE
,
HB_SCRIPT_GLAGOLITIC
,
HB_SCRIPT_TIFINAGH
,
HB_SCRIPT_SYLOTI_NAGRI
,
HB_SCRIPT_OLD_PERSIAN
,
HB_SCRIPT_KHAROSHTHI
,
/* Unicode-5.0 additions */
HB_SCRIPT_UNKNOWN
,
HB_SCRIPT_BALINESE
,
HB_SCRIPT_CUNEIFORM
,
HB_SCRIPT_PHOENICIAN
,
HB_SCRIPT_PHAGS_PA
,
HB_SCRIPT_NKO
,
/* Unicode-5.1 additions */
HB_SCRIPT_KAYAH_LI
,
HB_SCRIPT_LEPCHA
,
HB_SCRIPT_REJANG
,
HB_SCRIPT_SUNDANESE
,
HB_SCRIPT_SAURASHTRA
,
HB_SCRIPT_CHAM
,
HB_SCRIPT_OL_CHIKI
,
HB_SCRIPT_VAI
,
HB_SCRIPT_CARIAN
,
HB_SCRIPT_LYCIAN
,
HB_SCRIPT_LYDIAN
,
/* Unicode-5.2 additions */
HB_SCRIPT_AVESTAN
,
HB_SCRIPT_BAMUM
,
HB_SCRIPT_EGYPTIAN_HIEROGLYPHS
,
HB_SCRIPT_IMPERIAL_ARAMAIC
,
HB_SCRIPT_INSCRIPTIONAL_PAHLAVI
,
HB_SCRIPT_INSCRIPTIONAL_PARTHIAN
,
HB_SCRIPT_JAVANESE
,
HB_SCRIPT_KAITHI
,
HB_SCRIPT_TAI_THAM
,
HB_SCRIPT_LISU
,
HB_SCRIPT_MEETEI_MAYEK
,
HB_SCRIPT_OLD_SOUTH_ARABIAN
,
HB_SCRIPT_OLD_TURKIC
,
HB_SCRIPT_SAMARITAN
,
HB_SCRIPT_TAI_VIET
,
/* Unicode-6.0 additions */
HB_SCRIPT_BATAK
,
HB_SCRIPT_BRAHMI
,
HB_SCRIPT_MANDAIC
};
hb_script_t
hb_glib_script_to_script
(
GUnicodeScript
script
)
{
if
(
likely
((
unsigned
int
)
script
<
ARRAY_LENGTH
(
glib_script_to_script
)))
return
glib_script_to_script
[
script
];
if
(
unlikely
(
script
==
G_UNICODE_SCRIPT_INVALID_CODE
))
return
HB_SCRIPT_INVALID
;
return
HB_SCRIPT_UNKNOWN
;
}
GUnicodeScript
hb_glib_script_from_script
(
hb_script_t
script
)
{
unsigned
int
count
=
ARRAY_LENGTH
(
glib_script_to_script
);
for
(
unsigned
int
i
=
0
;
i
<
count
;
i
++
)
if
(
glib_script_to_script
[
i
]
==
script
)
return
(
GUnicodeScript
)
i
;
if
(
unlikely
(
script
==
HB_SCRIPT_INVALID
))
return
G_UNICODE_SCRIPT_INVALID_CODE
;
return
G_UNICODE_SCRIPT_UNKNOWN
;
}
static
unsigned
int
hb_glib_get_combining_class
(
hb_unicode_funcs_t
*
ufuncs
,
...
...
@@ -76,136 +215,7 @@ hb_glib_get_script (hb_unicode_funcs_t *ufuncs,
hb_codepoint_t
unicode
,
void
*
user_data
)
{
GUnicodeScript
script
=
g_unichar_get_script
(
unicode
);
switch
(
script
)
{
#define MATCH_SCRIPT(C) case G_UNICODE_SCRIPT_##C: return HB_SCRIPT_##C
#define MATCH_SCRIPT2(C1, C2) case G_UNICODE_SCRIPT_##C1: return HB_SCRIPT_##C2
MATCH_SCRIPT2
(
INVALID_CODE
,
INVALID
);
MATCH_SCRIPT
(
COMMON
);
MATCH_SCRIPT
(
INHERITED
);
MATCH_SCRIPT
(
ARABIC
);
MATCH_SCRIPT
(
ARMENIAN
);
MATCH_SCRIPT
(
BENGALI
);
MATCH_SCRIPT
(
BOPOMOFO
);
MATCH_SCRIPT
(
CHEROKEE
);
MATCH_SCRIPT
(
COPTIC
);
MATCH_SCRIPT
(
CYRILLIC
);
MATCH_SCRIPT
(
DESERET
);
MATCH_SCRIPT
(
DEVANAGARI
);
MATCH_SCRIPT
(
ETHIOPIC
);
MATCH_SCRIPT
(
GEORGIAN
);
MATCH_SCRIPT
(
GOTHIC
);
MATCH_SCRIPT
(
GREEK
);
MATCH_SCRIPT
(
GUJARATI
);
MATCH_SCRIPT
(
GURMUKHI
);
MATCH_SCRIPT
(
HAN
);
MATCH_SCRIPT
(
HANGUL
);
MATCH_SCRIPT
(
HEBREW
);
MATCH_SCRIPT
(
HIRAGANA
);
MATCH_SCRIPT
(
KANNADA
);
MATCH_SCRIPT
(
KATAKANA
);
MATCH_SCRIPT
(
KHMER
);
MATCH_SCRIPT
(
LAO
);
MATCH_SCRIPT
(
LATIN
);
MATCH_SCRIPT
(
MALAYALAM
);
MATCH_SCRIPT
(
MONGOLIAN
);
MATCH_SCRIPT
(
MYANMAR
);
MATCH_SCRIPT
(
OGHAM
);
MATCH_SCRIPT
(
OLD_ITALIC
);
MATCH_SCRIPT
(
ORIYA
);
MATCH_SCRIPT
(
RUNIC
);
MATCH_SCRIPT
(
SINHALA
);
MATCH_SCRIPT
(
SYRIAC
);
MATCH_SCRIPT
(
TAMIL
);
MATCH_SCRIPT
(
TELUGU
);
MATCH_SCRIPT
(
THAANA
);
MATCH_SCRIPT
(
THAI
);
MATCH_SCRIPT
(
TIBETAN
);
MATCH_SCRIPT
(
CANADIAN_ABORIGINAL
);
MATCH_SCRIPT
(
YI
);
MATCH_SCRIPT
(
TAGALOG
);
MATCH_SCRIPT
(
HANUNOO
);
MATCH_SCRIPT
(
BUHID
);
MATCH_SCRIPT
(
TAGBANWA
);
/* Unicode-4.0 additions */
MATCH_SCRIPT
(
BRAILLE
);
MATCH_SCRIPT
(
CYPRIOT
);
MATCH_SCRIPT
(
LIMBU
);
MATCH_SCRIPT
(
OSMANYA
);
MATCH_SCRIPT
(
SHAVIAN
);
MATCH_SCRIPT
(
LINEAR_B
);
MATCH_SCRIPT
(
TAI_LE
);
MATCH_SCRIPT
(
UGARITIC
);
/* Unicode-4.1 additions */
MATCH_SCRIPT
(
NEW_TAI_LUE
);
MATCH_SCRIPT
(
BUGINESE
);
MATCH_SCRIPT
(
GLAGOLITIC
);
MATCH_SCRIPT
(
TIFINAGH
);
MATCH_SCRIPT
(
SYLOTI_NAGRI
);
MATCH_SCRIPT
(
OLD_PERSIAN
);
MATCH_SCRIPT
(
KHAROSHTHI
);
/* Unicode-5.0 additions */
MATCH_SCRIPT
(
UNKNOWN
);
MATCH_SCRIPT
(
BALINESE
);
MATCH_SCRIPT
(
CUNEIFORM
);
MATCH_SCRIPT
(
PHOENICIAN
);
MATCH_SCRIPT
(
PHAGS_PA
);
MATCH_SCRIPT
(
NKO
);
/* Unicode-5.1 additions */
MATCH_SCRIPT
(
KAYAH_LI
);
MATCH_SCRIPT
(
LEPCHA
);
MATCH_SCRIPT
(
REJANG
);
MATCH_SCRIPT
(
SUNDANESE
);
MATCH_SCRIPT
(
SAURASHTRA
);
MATCH_SCRIPT
(
CHAM
);
MATCH_SCRIPT
(
OL_CHIKI
);
MATCH_SCRIPT
(
VAI
);
MATCH_SCRIPT
(
CARIAN
);
MATCH_SCRIPT
(
LYCIAN
);
MATCH_SCRIPT
(
LYDIAN
);
/* Unicode-5.2 additions */
#if GLIB_CHECK_VERSION(2,26,0)
MATCH_SCRIPT
(
AVESTAN
);
MATCH_SCRIPT
(
BAMUM
);
MATCH_SCRIPT
(
EGYPTIAN_HIEROGLYPHS
);
MATCH_SCRIPT
(
IMPERIAL_ARAMAIC
);
MATCH_SCRIPT
(
INSCRIPTIONAL_PAHLAVI
);
MATCH_SCRIPT
(
INSCRIPTIONAL_PARTHIAN
);
MATCH_SCRIPT
(
JAVANESE
);
MATCH_SCRIPT
(
KAITHI
);
MATCH_SCRIPT
(
TAI_THAM
);
MATCH_SCRIPT
(
LISU
);
MATCH_SCRIPT
(
MEETEI_MAYEK
);
MATCH_SCRIPT
(
OLD_SOUTH_ARABIAN
);
#if GLIB_CHECK_VERSION(2,27,92)
MATCH_SCRIPT
(
OLD_TURKIC
);
#else
MATCH_SCRIPT2
(
OLD_TURKISH
,
OLD_TURKIC
);
#endif
MATCH_SCRIPT
(
SAMARITAN
);
MATCH_SCRIPT
(
TAI_VIET
);
#endif
/* Unicode-6.0 additions */
#if GLIB_CHECK_VERSION(2,28,0)
MATCH_SCRIPT
(
BATAK
);
MATCH_SCRIPT
(
BRAHMI
);
MATCH_SCRIPT
(
MANDAIC
);
#endif
#undef MATCH_SCRIPT
#undef MATCH_SCRIPT2
}
return
HB_SCRIPT_UNKNOWN
;
return
hb_glib_script_to_script
(
g_unichar_get_script
(
unicode
));
}
static
hb_unicode_funcs_t
glib_ufuncs
=
{
...
...
src/hb-glib.h
浏览文件 @
0809aadd
...
...
@@ -28,10 +28,18 @@
#define HB_GLIB_H
#include "hb.h"
#include <glib.h>
HB_BEGIN_DECLS
hb_script_t
hb_glib_script_to_script
(
GUnicodeScript
script
);
GUnicodeScript
hb_glib_script_from_script
(
hb_script_t
script
);
hb_unicode_funcs_t
*
hb_glib_get_unicode_funcs
(
void
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录