Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
07589536
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,发现更多精彩内容 >>
提交
07589536
编写于
1月 05, 2018
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[indic] Remove main Khmer stuff
上级
dcf4d95f
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
2 addition
and
71 deletion
+2
-71
src/hb-ot-shape-complex-indic.cc
src/hb-ot-shape-complex-indic.cc
+2
-71
未找到文件。
src/hb-ot-shape-complex-indic.cc
浏览文件 @
07589536
...
@@ -49,7 +49,6 @@
...
@@ -49,7 +49,6 @@
#define IS_KNDA(u) (IN_HALF_BLOCK (u, 0x0C80u))
#define IS_KNDA(u) (IN_HALF_BLOCK (u, 0x0C80u))
#define IS_MLYM(u) (IN_HALF_BLOCK (u, 0x0D00u))
#define IS_MLYM(u) (IN_HALF_BLOCK (u, 0x0D00u))
#define IS_SINH(u) (IN_HALF_BLOCK (u, 0x0D80u))
#define IS_SINH(u) (IN_HALF_BLOCK (u, 0x0D80u))
#define IS_KHMR(u) (IN_HALF_BLOCK (u, 0x1780u))
#define MATRA_POS_LEFT(u) POS_PRE_M
#define MATRA_POS_LEFT(u) POS_PRE_M
...
@@ -64,7 +63,6 @@
...
@@ -64,7 +63,6 @@
IS_KNDA(u) ? (u < 0x0CC3u || u > 0xCD6u ? POS_BEFORE_SUB : POS_AFTER_SUB) : \
IS_KNDA(u) ? (u < 0x0CC3u || u > 0xCD6u ? POS_BEFORE_SUB : POS_AFTER_SUB) : \
IS_MLYM(u) ? POS_AFTER_POST : \
IS_MLYM(u) ? POS_AFTER_POST : \
IS_SINH(u) ? POS_AFTER_SUB : \
IS_SINH(u) ? POS_AFTER_SUB : \
IS_KHMR(u) ? POS_AFTER_POST : \
/*default*/
POS_AFTER_SUB \
/*default*/
POS_AFTER_SUB \
)
)
#define MATRA_POS_TOP(u) (
/* BENG and MLYM don't have top matras. */
\
#define MATRA_POS_TOP(u) (
/* BENG and MLYM don't have top matras. */
\
...
@@ -76,7 +74,6 @@
...
@@ -76,7 +74,6 @@
IS_TELU(u) ? POS_BEFORE_SUB : \
IS_TELU(u) ? POS_BEFORE_SUB : \
IS_KNDA(u) ? POS_BEFORE_SUB : \
IS_KNDA(u) ? POS_BEFORE_SUB : \
IS_SINH(u) ? POS_AFTER_SUB : \
IS_SINH(u) ? POS_AFTER_SUB : \
IS_KHMR(u) ? POS_AFTER_POST : \
/*default*/
POS_AFTER_SUB \
/*default*/
POS_AFTER_SUB \
)
)
#define MATRA_POS_BOTTOM(u) ( \
#define MATRA_POS_BOTTOM(u) ( \
...
@@ -90,7 +87,6 @@
...
@@ -90,7 +87,6 @@
IS_KNDA(u) ? POS_BEFORE_SUB : \
IS_KNDA(u) ? POS_BEFORE_SUB : \
IS_MLYM(u) ? POS_AFTER_POST : \
IS_MLYM(u) ? POS_AFTER_POST : \
IS_SINH(u) ? POS_AFTER_SUB : \
IS_SINH(u) ? POS_AFTER_SUB : \
IS_KHMR(u) ? POS_AFTER_POST : \
/*default*/
POS_AFTER_SUB \
/*default*/
POS_AFTER_SUB \
)
)
...
@@ -124,8 +120,6 @@ static const hb_codepoint_t ra_chars[] = {
...
@@ -124,8 +120,6 @@ static const hb_codepoint_t ra_chars[] = {
0x0D30u
,
/* Malayalam */
/* No Reph, Logical Repha */
0x0D30u
,
/* Malayalam */
/* No Reph, Logical Repha */
0x0DBBu
,
/* Sinhala */
/* Reph formed only with ZWJ */
0x0DBBu
,
/* Sinhala */
/* Reph formed only with ZWJ */
0x179Au
,
/* Khmer */
/* No Reph, Visual Repha */
};
};
static
inline
bool
static
inline
bool
...
@@ -200,14 +194,6 @@ set_indic_properties (hb_glyph_info_t &info)
...
@@ -200,14 +194,6 @@ set_indic_properties (hb_glyph_info_t &info)
cat
=
OT_Symbol
;
cat
=
OT_Symbol
;
static_assert
(((
int
)
INDIC_SYLLABIC_CATEGORY_AVAGRAHA
==
OT_Symbol
),
""
);
static_assert
(((
int
)
INDIC_SYLLABIC_CATEGORY_AVAGRAHA
==
OT_Symbol
),
""
);
}
}
else
if
(
unlikely
(
hb_in_range
<
hb_codepoint_t
>
(
u
,
0x17CDu
,
0x17D1u
)
||
u
==
0x17CBu
||
u
==
0x17D3u
||
u
==
0x17DDu
))
/* Khmer Various signs */
{
/* These can occur mid-syllable (eg. before matras), even though Unicode marks them as Syllable_Modifier.
* https://github.com/roozbehp/unicode-data/issues/5 */
cat
=
OT_M
;
pos
=
POS_ABOVE_C
;
}
else
if
(
unlikely
(
u
==
0x0A51u
))
else
if
(
unlikely
(
u
==
0x0A51u
))
{
{
/* https://github.com/harfbuzz/harfbuzz/issues/524 */
/* https://github.com/harfbuzz/harfbuzz/issues/524 */
...
@@ -224,7 +210,6 @@ set_indic_properties (hb_glyph_info_t &info)
...
@@ -224,7 +210,6 @@ set_indic_properties (hb_glyph_info_t &info)
else
if
(
unlikely
(
u
==
0x0980u
))
cat
=
OT_PLACEHOLDER
;
/* https://github.com/harfbuzz/harfbuzz/issues/538 */
else
if
(
unlikely
(
u
==
0x0980u
))
cat
=
OT_PLACEHOLDER
;
/* https://github.com/harfbuzz/harfbuzz/issues/538 */
else
if
(
unlikely
(
u
==
0x0C80u
))
cat
=
OT_PLACEHOLDER
;
/* https://github.com/harfbuzz/harfbuzz/pull/623 */
else
if
(
unlikely
(
u
==
0x0C80u
))
cat
=
OT_PLACEHOLDER
;
/* https://github.com/harfbuzz/harfbuzz/pull/623 */
else
if
(
unlikely
(
u
==
0x17C6u
))
cat
=
OT_N
;
/* Khmer Bindu doesn't like to be repositioned. */
else
if
(
unlikely
(
hb_in_range
<
hb_codepoint_t
>
(
u
,
0x2010u
,
0x2011u
)))
else
if
(
unlikely
(
hb_in_range
<
hb_codepoint_t
>
(
u
,
0x2010u
,
0x2011u
)))
cat
=
OT_PLACEHOLDER
;
cat
=
OT_PLACEHOLDER
;
else
if
(
unlikely
(
u
==
0x25CCu
))
cat
=
OT_DOTTEDCIRCLE
;
else
if
(
unlikely
(
u
==
0x25CCu
))
cat
=
OT_DOTTEDCIRCLE
;
...
@@ -271,7 +256,6 @@ set_indic_properties (hb_glyph_info_t &info)
...
@@ -271,7 +256,6 @@ set_indic_properties (hb_glyph_info_t &info)
*/
*/
enum
base_position_t
{
enum
base_position_t
{
BASE_POS_FIRST
,
BASE_POS_LAST_SINHALA
,
BASE_POS_LAST_SINHALA
,
BASE_POS_LAST
BASE_POS_LAST
};
};
...
@@ -280,13 +264,11 @@ enum reph_position_t {
...
@@ -280,13 +264,11 @@ enum reph_position_t {
REPH_POS_BEFORE_SUB
=
POS_BEFORE_SUB
,
REPH_POS_BEFORE_SUB
=
POS_BEFORE_SUB
,
REPH_POS_AFTER_SUB
=
POS_AFTER_SUB
,
REPH_POS_AFTER_SUB
=
POS_AFTER_SUB
,
REPH_POS_BEFORE_POST
=
POS_BEFORE_POST
,
REPH_POS_BEFORE_POST
=
POS_BEFORE_POST
,
REPH_POS_AFTER_POST
=
POS_AFTER_POST
,
REPH_POS_AFTER_POST
=
POS_AFTER_POST
REPH_POS_DONT_CARE
=
POS_RA_TO_BECOME_REPH
};
};
enum
reph_mode_t
{
enum
reph_mode_t
{
REPH_MODE_IMPLICIT
,
/* Reph formed out of initial Ra,H sequence. */
REPH_MODE_IMPLICIT
,
/* Reph formed out of initial Ra,H sequence. */
REPH_MODE_EXPLICIT
,
/* Reph formed out of initial Ra,H,ZWJ sequence. */
REPH_MODE_EXPLICIT
,
/* Reph formed out of initial Ra,H,ZWJ sequence. */
REPH_MODE_VIS_REPHA
,
/* Encoded Repha character, no reordering needed. */
REPH_MODE_LOG_REPHA
/* Encoded Repha character, needs reordering. */
REPH_MODE_LOG_REPHA
/* Encoded Repha character, needs reordering. */
};
};
enum
blwf_mode_t
{
enum
blwf_mode_t
{
...
@@ -319,7 +301,6 @@ static const indic_config_t indic_configs[] =
...
@@ -319,7 +301,6 @@ static const indic_config_t indic_configs[] =
{
HB_SCRIPT_MALAYALAM
,
true
,
0x0D4Du
,
BASE_POS_LAST
,
REPH_POS_AFTER_MAIN
,
REPH_MODE_LOG_REPHA
,
BLWF_MODE_PRE_AND_POST
},
{
HB_SCRIPT_MALAYALAM
,
true
,
0x0D4Du
,
BASE_POS_LAST
,
REPH_POS_AFTER_MAIN
,
REPH_MODE_LOG_REPHA
,
BLWF_MODE_PRE_AND_POST
},
{
HB_SCRIPT_SINHALA
,
false
,
0x0DCAu
,
BASE_POS_LAST_SINHALA
,
{
HB_SCRIPT_SINHALA
,
false
,
0x0DCAu
,
BASE_POS_LAST_SINHALA
,
REPH_POS_AFTER_MAIN
,
REPH_MODE_EXPLICIT
,
BLWF_MODE_PRE_AND_POST
},
REPH_POS_AFTER_MAIN
,
REPH_MODE_EXPLICIT
,
BLWF_MODE_PRE_AND_POST
},
{
HB_SCRIPT_KHMER
,
false
,
0x17D2u
,
BASE_POS_FIRST
,
REPH_POS_DONT_CARE
,
REPH_MODE_VIS_REPHA
,
BLWF_MODE_PRE_AND_POST
},
};
};
...
@@ -351,7 +332,6 @@ indic_features[] =
...
@@ -351,7 +332,6 @@ indic_features[] =
{
HB_TAG
(
'p'
,
's'
,
't'
,
'f'
),
F_NONE
},
{
HB_TAG
(
'p'
,
's'
,
't'
,
'f'
),
F_NONE
},
{
HB_TAG
(
'v'
,
'a'
,
't'
,
'u'
),
F_GLOBAL
},
{
HB_TAG
(
'v'
,
'a'
,
't'
,
'u'
),
F_GLOBAL
},
{
HB_TAG
(
'c'
,
'j'
,
'c'
,
't'
),
F_GLOBAL
},
{
HB_TAG
(
'c'
,
'j'
,
'c'
,
't'
),
F_GLOBAL
},
{
HB_TAG
(
'c'
,
'f'
,
'a'
,
'r'
),
F_NONE
},
/*
/*
* Other features.
* Other features.
* These features are applied all at once, after final_reordering.
* These features are applied all at once, after final_reordering.
...
@@ -385,7 +365,6 @@ enum {
...
@@ -385,7 +365,6 @@ enum {
PSTF
,
PSTF
,
_VATU
,
_VATU
,
_CJCT
,
_CJCT
,
CFAR
,
INIT
,
INIT
,
_PRES
,
_PRES
,
...
@@ -452,17 +431,6 @@ collect_features_indic (hb_ot_shape_planner_t *plan)
...
@@ -452,17 +431,6 @@ collect_features_indic (hb_ot_shape_planner_t *plan)
static
void
static
void
override_features_indic
(
hb_ot_shape_planner_t
*
plan
)
override_features_indic
(
hb_ot_shape_planner_t
*
plan
)
{
{
/* Uniscribe does not apply 'kern' in Khmer. */
if
(
hb_options
().
uniscribe_bug_compatible
)
{
switch
((
hb_tag_t
)
plan
->
props
.
script
)
{
case
HB_SCRIPT_KHMER
:
plan
->
map
.
add_feature
(
HB_TAG
(
'k'
,
'e'
,
'r'
,
'n'
),
0
,
F_GLOBAL
);
break
;
}
}
plan
->
map
.
add_feature
(
HB_TAG
(
'l'
,
'i'
,
'g'
,
'a'
),
0
,
F_GLOBAL
);
plan
->
map
.
add_feature
(
HB_TAG
(
'l'
,
'i'
,
'g'
,
'a'
),
0
,
F_GLOBAL
);
}
}
...
@@ -730,8 +698,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
...
@@ -730,8 +698,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
* and has more than one consonant, Ra is excluded from candidates for
* and has more than one consonant, Ra is excluded from candidates for
* base consonants. */
* base consonants. */
unsigned
int
limit
=
start
;
unsigned
int
limit
=
start
;
if
(
indic_plan
->
config
->
reph_pos
!=
REPH_POS_DONT_CARE
&&
if
(
indic_plan
->
mask_array
[
RPHF
]
&&
indic_plan
->
mask_array
[
RPHF
]
&&
start
+
3
<=
end
&&
start
+
3
<=
end
&&
(
(
(
indic_plan
->
config
->
reph_mode
==
REPH_MODE_IMPLICIT
&&
!
is_joiner
(
info
[
start
+
2
]))
||
(
indic_plan
->
config
->
reph_mode
==
REPH_MODE_IMPLICIT
&&
!
is_joiner
(
info
[
start
+
2
]))
||
...
@@ -840,22 +807,6 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
...
@@ -840,22 +807,6 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
info
[
i
].
indic_position
()
=
POS_BELOW_C
;
info
[
i
].
indic_position
()
=
POS_BELOW_C
;
}
}
break
;
break
;
case
BASE_POS_FIRST
:
{
/* The first consonant is always the base. */
assert
(
indic_plan
->
config
->
reph_mode
==
REPH_MODE_VIS_REPHA
);
assert
(
!
has_reph
);
base
=
start
;
/* Mark all subsequent consonants as below. */
for
(
unsigned
int
i
=
base
+
1
;
i
<
end
;
i
++
)
if
(
is_consonant
(
info
[
i
]))
info
[
i
].
indic_position
()
=
POS_BELOW_C
;
}
break
;
}
}
/* -> If the syllable starts with Ra + Halant (in a script that has Reph)
/* -> If the syllable starts with Ra + Halant (in a script that has Reph)
...
@@ -1133,17 +1084,6 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
...
@@ -1133,17 +1084,6 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
{
{
for
(
unsigned
int
j
=
0
;
j
<
pref_len
;
j
++
)
for
(
unsigned
int
j
=
0
;
j
<
pref_len
;
j
++
)
info
[
i
++
].
mask
|=
indic_plan
->
mask_array
[
PREF
];
info
[
i
++
].
mask
|=
indic_plan
->
mask_array
[
PREF
];
/* Mark the subsequent stuff with 'cfar'. Used in Khmer.
* Read the feature spec.
* This allows distinguishing the following cases with MS Khmer fonts:
* U+1784,U+17D2,U+179A,U+17D2,U+1782
* U+1784,U+17D2,U+1782,U+17D2,U+179A
*/
if
(
indic_plan
->
mask_array
[
CFAR
])
for
(;
i
<
end
;
i
++
)
info
[
i
].
mask
|=
indic_plan
->
mask_array
[
CFAR
];
break
;
break
;
}
}
}
}
...
@@ -1481,8 +1421,6 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
...
@@ -1481,8 +1421,6 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
unsigned
int
new_reph_pos
;
unsigned
int
new_reph_pos
;
reph_position_t
reph_pos
=
indic_plan
->
config
->
reph_pos
;
reph_position_t
reph_pos
=
indic_plan
->
config
->
reph_pos
;
assert
(
reph_pos
!=
REPH_POS_DONT_CARE
);
/* 1. If reph should be positioned after post-base consonant forms,
/* 1. If reph should be positioned after post-base consonant forms,
* proceed to step 5.
* proceed to step 5.
*/
*/
...
@@ -1766,13 +1704,6 @@ decompose_indic (const hb_ot_shape_normalize_context_t *c,
...
@@ -1766,13 +1704,6 @@ decompose_indic (const hb_ot_shape_normalize_context_t *c,
* Decompose split matras that don't have Unicode decompositions.
* Decompose split matras that don't have Unicode decompositions.
*/
*/
/* Khmer */
case
0x17BEu
:
*
a
=
0x17C1u
;
*
b
=
0x17BEu
;
return
true
;
case
0x17BFu
:
*
a
=
0x17C1u
;
*
b
=
0x17BFu
;
return
true
;
case
0x17C0u
:
*
a
=
0x17C1u
;
*
b
=
0x17C0u
;
return
true
;
case
0x17C4u
:
*
a
=
0x17C1u
;
*
b
=
0x17C4u
;
return
true
;
case
0x17C5u
:
*
a
=
0x17C1u
;
*
b
=
0x17C5u
;
return
true
;
#if 0
#if 0
/* Gujarati */
/* Gujarati */
/* This one has no decomposition in Unicode, but needs no decomposition either. */
/* This one has no decomposition in Unicode, but needs no decomposition either. */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录