Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
b2030502
T
Third Party Harfbuzz
项目概览
OpenHarmony
/
Third Party Harfbuzz
接近 2 年 前同步成功
通知
1
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看板
提交
b2030502
编写于
4月 26, 2016
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Do NOT ignore Mongolian Free Variation Selectors during matching
Fixes
https://github.com/behdad/harfbuzz/issues/234
上级
21ab5501
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
24 addition
and
4 deletion
+24
-4
src/hb-ot-layout-gsubgpos-private.hh
src/hb-ot-layout-gsubgpos-private.hh
+1
-1
src/hb-ot-layout-private.hh
src/hb-ot-layout-private.hh
+21
-2
src/hb-ot-shape-complex-arabic.cc
src/hb-ot-shape-complex-arabic.cc
+1
-1
test/shaping/fonts/sha1sum/a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttf
...onts/sha1sum/a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttf
+0
-0
test/shaping/tests/mongolian-variation-selector.tests
test/shaping/tests/mongolian-variation-selector.tests
+1
-0
未找到文件。
src/hb-ot-layout-gsubgpos-private.hh
浏览文件 @
b2030502
...
@@ -319,7 +319,7 @@ struct hb_apply_context_t :
...
@@ -319,7 +319,7 @@ struct hb_apply_context_t :
if
(
!
c
->
check_glyph_property
(
&
info
,
lookup_props
))
if
(
!
c
->
check_glyph_property
(
&
info
,
lookup_props
))
return
SKIP_YES
;
return
SKIP_YES
;
if
(
unlikely
(
_hb_glyph_info_is_default_ignorable
(
&
info
)
&&
if
(
unlikely
(
_hb_glyph_info_is_default_ignorable
_and_not_fvs
(
&
info
)
&&
(
ignore_zwnj
||
!
_hb_glyph_info_is_zwnj
(
&
info
))
&&
(
ignore_zwnj
||
!
_hb_glyph_info_is_zwnj
(
&
info
))
&&
(
ignore_zwj
||
!
_hb_glyph_info_is_zwj
(
&
info
))))
(
ignore_zwj
||
!
_hb_glyph_info_is_zwj
(
&
info
))))
return
SKIP_MAYBE
;
return
SKIP_MAYBE
;
...
...
src/hb-ot-layout-private.hh
浏览文件 @
b2030502
...
@@ -218,7 +218,8 @@ _next_syllable (hb_buffer_t *buffer, unsigned int start)
...
@@ -218,7 +218,8 @@ _next_syllable (hb_buffer_t *buffer, unsigned int start)
* - General_Category: 5 bits.
* - General_Category: 5 bits.
* - A bit each for:
* - A bit each for:
* * Is it Default_Ignorable(); we have a modified Default_Ignorable().
* * Is it Default_Ignorable(); we have a modified Default_Ignorable().
* * Two free bits right now.
* * Whether it's one of the three Mongolian Free Variation Selectors.
* * One free bit right now.
*
*
* The high-byte has different meanings, switched by the Gen-Cat:
* The high-byte has different meanings, switched by the Gen-Cat:
* - For Mn,Mc,Me: the modified Combining_Class.
* - For Mn,Mc,Me: the modified Combining_Class.
...
@@ -230,6 +231,7 @@ _next_syllable (hb_buffer_t *buffer, unsigned int start)
...
@@ -230,6 +231,7 @@ _next_syllable (hb_buffer_t *buffer, unsigned int start)
enum
hb_unicode_props_flags_t
{
enum
hb_unicode_props_flags_t
{
UPROPS_MASK_GEN_CAT
=
0x001Fu
,
UPROPS_MASK_GEN_CAT
=
0x001Fu
,
UPROPS_MASK_IGNORABLE
=
0x0020u
,
UPROPS_MASK_IGNORABLE
=
0x0020u
,
UPROPS_MASK_FVS
=
0x0040u
,
/* MONGOLIAN FREE VARIATION SELECTOR 1..3 */
/* If GEN_CAT=FORMAT, top byte masks: */
/* If GEN_CAT=FORMAT, top byte masks: */
UPROPS_MASK_Cf_ZWJ
=
0x0100u
,
UPROPS_MASK_Cf_ZWJ
=
0x0100u
,
...
@@ -254,6 +256,15 @@ _hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_buffer_t *buffer)
...
@@ -254,6 +256,15 @@ _hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_buffer_t *buffer)
props
|=
UPROPS_MASK_IGNORABLE
;
props
|=
UPROPS_MASK_IGNORABLE
;
if
(
u
==
0x200Cu
)
props
|=
UPROPS_MASK_Cf_ZWNJ
;
if
(
u
==
0x200Cu
)
props
|=
UPROPS_MASK_Cf_ZWNJ
;
if
(
u
==
0x200Du
)
props
|=
UPROPS_MASK_Cf_ZWJ
;
if
(
u
==
0x200Du
)
props
|=
UPROPS_MASK_Cf_ZWJ
;
/* Mongolian Free Variation Selectors need to be remembered
* because although we need to hide them like default-ignorables,
* they need to non-ignorable during shaping. This is similar to
* what we do for joiners in Indic-like shapers, but since the
* FVSes are GC=Mn, we have use a separate bit to remember them.
* Fixes:
* https://github.com/behdad/harfbuzz/issues/234
*/
if
(
unlikely
(
hb_in_range
(
u
,
0x180Bu
,
0x180Du
)))
props
|=
UPROPS_MASK_FVS
;
}
}
else
if
(
unlikely
(
HB_UNICODE_GENERAL_CATEGORY_IS_NON_ENCLOSING_MARK_OR_MODIFIER_SYMBOL
(
gen_cat
)))
else
if
(
unlikely
(
HB_UNICODE_GENERAL_CATEGORY_IS_NON_ENCLOSING_MARK_OR_MODIFIER_SYMBOL
(
gen_cat
)))
{
{
...
@@ -349,7 +360,15 @@ static inline bool _hb_glyph_info_ligated (const hb_glyph_info_t *info);
...
@@ -349,7 +360,15 @@ static inline bool _hb_glyph_info_ligated (const hb_glyph_info_t *info);
static
inline
hb_bool_t
static
inline
hb_bool_t
_hb_glyph_info_is_default_ignorable
(
const
hb_glyph_info_t
*
info
)
_hb_glyph_info_is_default_ignorable
(
const
hb_glyph_info_t
*
info
)
{
{
return
(
info
->
unicode_props
()
&
UPROPS_MASK_IGNORABLE
)
&&
!
_hb_glyph_info_ligated
(
info
);
return
(
info
->
unicode_props
()
&
UPROPS_MASK_IGNORABLE
)
&&
!
_hb_glyph_info_ligated
(
info
);
}
static
inline
hb_bool_t
_hb_glyph_info_is_default_ignorable_and_not_fvs
(
const
hb_glyph_info_t
*
info
)
{
return
((
info
->
unicode_props
()
&
(
UPROPS_MASK_IGNORABLE
|
UPROPS_MASK_FVS
))
==
UPROPS_MASK_IGNORABLE
)
&&
!
_hb_glyph_info_ligated
(
info
);
}
}
static
inline
bool
static
inline
bool
...
...
src/hb-ot-shape-complex-arabic.cc
浏览文件 @
b2030502
...
@@ -215,7 +215,7 @@ collect_features_arabic (hb_ot_shape_planner_t *plan)
...
@@ -215,7 +215,7 @@ collect_features_arabic (hb_ot_shape_planner_t *plan)
{
{
bool
has_fallback
=
plan
->
props
.
script
==
HB_SCRIPT_ARABIC
&&
!
FEATURE_IS_SYRIAC
(
arabic_features
[
i
]);
bool
has_fallback
=
plan
->
props
.
script
==
HB_SCRIPT_ARABIC
&&
!
FEATURE_IS_SYRIAC
(
arabic_features
[
i
]);
map
->
add_feature
(
arabic_features
[
i
],
1
,
has_fallback
?
F_HAS_FALLBACK
:
F_NONE
);
map
->
add_feature
(
arabic_features
[
i
],
1
,
has_fallback
?
F_HAS_FALLBACK
:
F_NONE
);
map
->
add_gsub_pause
(
NULL
);
//
map->add_gsub_pause (NULL);
}
}
map
->
add_feature
(
HB_TAG
(
'r'
,
'l'
,
'i'
,
'g'
),
1
,
F_GLOBAL
|
F_HAS_FALLBACK
);
map
->
add_feature
(
HB_TAG
(
'r'
,
'l'
,
'i'
,
'g'
),
1
,
F_GLOBAL
|
F_HAS_FALLBACK
);
...
...
test/shaping/fonts/sha1sum/a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttf
0 → 100644
浏览文件 @
b2030502
文件已添加
test/shaping/tests/mongolian-variation-selector.tests
浏览文件 @
b2030502
fonts/sha1sum/37033cc5cf37bb223d7355153016b6ccece93b28.ttf::U+1826,U+180B,U+1826:[uni1826.E85E_ue.init1=0+599|uni1826.E856_ue.fina=2+750]
fonts/sha1sum/37033cc5cf37bb223d7355153016b6ccece93b28.ttf::U+1826,U+180B,U+1826:[uni1826.E85E_ue.init1=0+599|uni1826.E856_ue.fina=2+750]
fonts/sha1sum/ef86fe710cfea877bbe0dbb6946a1f88d0661031.ttf::U+1820,U+180B:[uni1820.E821_a.isol1=0+1199]
fonts/sha1sum/ef86fe710cfea877bbe0dbb6946a1f88d0661031.ttf::U+1820,U+180B:[uni1820.E821_a.isol1=0+1199]
fonts/sha1sum/bb29ce50df2bdba2d10726427c6b7609bf460e04.ttf::U+183A,U+1823,U+182E,U+182B,U+1822,U+1826,U+180B,U+1832,U+180B,U+1827,U+1837,U+0020,U+182D,U+182D,U+180B,U+0020,U+182D,U+180C,U+0020,U+182D,U+180D,U+200D,U+0020,U+182D,U+200D,U+182D,U+180B,U+200D,U+0020,U+182D,U+180C,U+200D,U+0020,U+182D,U+180D,U+200D,U+0020,U+200D,U+182D,U+200D,U+200D,U+182D,U+180B,U+200D,U+0020,U+200D,U+182D,U+180C,U+200D,U+0020,U+200D,U+182D,U+180D,U+200D,U+0020,U+200D,U+182D,U+200D,U+182D,U+180B,U+0020,U+200D,U+182D,U+180C,U+0020,U+1820,U+200C,U+182D,U+1820,U+1837,U+0020,U+1830,U+1824,U+1837,U+200D,U+200D,U+182D,U+1820,U+200D,U+0020,U+200D,U+182D,U+1824,U+182F,U+1822,U+0020,U+182A,U+1820,U+1822,U+182D,U+180E,U+1820,U+202F,U+1836,U+1822,U+1828:[uni183A1823.E971_ko.init=0+950|uni182E.E904_m.medi=2+400|uni182B1822.E8A6_pi.medi=3+1150|uni1826.E854_ue.medi1=5+1100|uni1832.E916_t.medi1=7+1000|uni1827.E85C_ee.medi=9+750|uni1837.E931_r.fina=10+750|space=11+500|uni182D.E8E2_g.init=12+1000|uni182D.E8E8_g.fina1=13+1250|space=15+500|uni182D.EA1B_g.isol2=16+1000|space=18+500|uni182D.EA1E_g.init3=19+650|space=19+0|space=22+500|uni182D.E8E2_g.init=23+1000|space=23+0|uni182D.E8E5_g.medi1=25+800|space=25+0|space=28+500|uni182D.EA1D_g.init2=29+950|space=29+0|space=32+500|uni182D.EA1E_g.init3=33+650|space=33+0|space=36+500|space=36+0|uni182D.E8E4_g.medi=38+800|space=38+0|space=38+0|uni182D.E8E5_g.medi1=41+800|space=41+0|space=44+500|space=44+0|uni182D.E8E6_g.medi2=46+650|space=46+0|space=49+500|space=49+0|uni182D.E8E6_g.medi2=51+650|space=51+0|space=54+500|space=54+0|uni182D.E8E4_g.medi=56+800|space=56+0|uni182D.E8E8_g.fina1=58+1250|space=60+500|space=60+0|uni182D.E8E9_g.fina2=62+1050|space=64+500|uni1820.E820_a.isol=65+1550|space=65+0|uni182D.E8E2_g.init=67+1000|uni1820.E823_a.medi=68+400|uni1837.E931_r.fina=69+750|space=70+500|uni1830.E90B_s.init=71+850|uni1824.E844_u.medi=72+600|uni1837.E930_r.medi=73+600|space=73+0|space=73+0|uni182D.E8E5_g.medi1=76+800|uni1820.E823_a.medi=77+400|space=77+0|space=79+500|space=79+0|uni182D.E8E5_g.medi1=81+800|uni1824.E844_u.medi=82+600|uni182F.E908_l.medi=83+400|uni1822.E837_i.fina=84+600|space=85+500|uni182A1820.E875_ba.init=86+1000|uni1822.E836_i.medi2=88+1000|uni182D.E8E8_g.fina1=89+1250|space=90+0|uni1820.E827_a.fina2=91+600|uni202F.nobreak=92+500|uni1836.E92B_y.init1=93+500|uni1822.E834_i.medi=94+500|uni1828.E866_n.fina=95+850]
fonts/sha1sum/bb29ce50df2bdba2d10726427c6b7609bf460e04.ttf::U+183A,U+1823,U+182E,U+182B,U+1822,U+1826,U+180B,U+1832,U+180B,U+1827,U+1837,U+0020,U+182D,U+182D,U+180B,U+0020,U+182D,U+180C,U+0020,U+182D,U+180D,U+200D,U+0020,U+182D,U+200D,U+182D,U+180B,U+200D,U+0020,U+182D,U+180C,U+200D,U+0020,U+182D,U+180D,U+200D,U+0020,U+200D,U+182D,U+200D,U+200D,U+182D,U+180B,U+200D,U+0020,U+200D,U+182D,U+180C,U+200D,U+0020,U+200D,U+182D,U+180D,U+200D,U+0020,U+200D,U+182D,U+200D,U+182D,U+180B,U+0020,U+200D,U+182D,U+180C,U+0020,U+1820,U+200C,U+182D,U+1820,U+1837,U+0020,U+1830,U+1824,U+1837,U+200D,U+200D,U+182D,U+1820,U+200D,U+0020,U+200D,U+182D,U+1824,U+182F,U+1822,U+0020,U+182A,U+1820,U+1822,U+182D,U+180E,U+1820,U+202F,U+1836,U+1822,U+1828:[uni183A1823.E971_ko.init=0+950|uni182E.E904_m.medi=2+400|uni182B1822.E8A6_pi.medi=3+1150|uni1826.E854_ue.medi1=5+1100|uni1832.E916_t.medi1=7+1000|uni1827.E85C_ee.medi=9+750|uni1837.E931_r.fina=10+750|space=11+500|uni182D.E8E2_g.init=12+1000|uni182D.E8E8_g.fina1=13+1250|space=15+500|uni182D.EA1B_g.isol2=16+1000|space=18+500|uni182D.EA1E_g.init3=19+650|space=19+0|space=22+500|uni182D.E8E2_g.init=23+1000|space=23+0|uni182D.E8E5_g.medi1=25+800|space=25+0|space=28+500|uni182D.EA1D_g.init2=29+950|space=29+0|space=32+500|uni182D.EA1E_g.init3=33+650|space=33+0|space=36+500|space=36+0|uni182D.E8E4_g.medi=38+800|space=38+0|space=38+0|uni182D.E8E5_g.medi1=41+800|space=41+0|space=44+500|space=44+0|uni182D.E8E6_g.medi2=46+650|space=46+0|space=49+500|space=49+0|uni182D.E8E6_g.medi2=51+650|space=51+0|space=54+500|space=54+0|uni182D.E8E4_g.medi=56+800|space=56+0|uni182D.E8E8_g.fina1=58+1250|space=60+500|space=60+0|uni182D.E8E9_g.fina2=62+1050|space=64+500|uni1820.E820_a.isol=65+1550|space=65+0|uni182D.E8E2_g.init=67+1000|uni1820.E823_a.medi=68+400|uni1837.E931_r.fina=69+750|space=70+500|uni1830.E90B_s.init=71+850|uni1824.E844_u.medi=72+600|uni1837.E930_r.medi=73+600|space=73+0|space=73+0|uni182D.E8E5_g.medi1=76+800|uni1820.E823_a.medi=77+400|space=77+0|space=79+500|space=79+0|uni182D.E8E5_g.medi1=81+800|uni1824.E844_u.medi=82+600|uni182F.E908_l.medi=83+400|uni1822.E837_i.fina=84+600|space=85+500|uni182A1820.E875_ba.init=86+1000|uni1822.E836_i.medi2=88+1000|uni182D.E8E8_g.fina1=89+1250|space=90+0|uni1820.E827_a.fina2=91+600|uni202F.nobreak=92+500|uni1836.E92B_y.init1=93+500|uni1822.E834_i.medi=94+500|uni1828.E866_n.fina=95+850]
fonts/sha1sum/a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttf::U+180A,U+1868,U+180A,U+1868,U+180B,U+180A,U+1868,U+180C,U+180A,U+1868,U+180D,U+180A:[gid1=0+268|gid10=1+778|gid1=2+268|gid9=3+575|gid1=5+268|gid10=6+778|gid1=8+268|gid8=9+575|gid1=11+268]
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录