Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sxychenjing
engine
提交
503999ff
E
engine
项目概览
sxychenjing
/
engine
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
engine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
503999ff
编写于
12月 14, 2017
作者:
J
Jason Simmons
提交者:
GitHub
12月 14, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
libtxt: Restore code that had been disabled due to older versions of ICU and HarfBuzz (#4456)
上级
1e669f08
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
21 addition
and
22 deletion
+21
-22
third_party/txt/src/minikin/GraphemeBreak.cpp
third_party/txt/src/minikin/GraphemeBreak.cpp
+16
-16
third_party/txt/src/minikin/HbFontCache.cpp
third_party/txt/src/minikin/HbFontCache.cpp
+5
-6
未找到文件。
third_party/txt/src/minikin/GraphemeBreak.cpp
浏览文件 @
503999ff
...
@@ -113,8 +113,7 @@ bool GraphemeBreak::isGraphemeBreak(const float* advances,
...
@@ -113,8 +113,7 @@ bool GraphemeBreak::isGraphemeBreak(const float* advances,
return
false
;
return
false
;
}
}
// Rule GB9, x (Extend | ZWJ); Rule GB9a, x SpacingMark; Rule GB9b, Prepend x
// Rule GB9, x (Extend | ZWJ); Rule GB9a, x SpacingMark; Rule GB9b, Prepend x
// TODO(abarth): Add U_GCB_ZWJ once we update ICU.
if
(
p2
==
U_GCB_EXTEND
||
p2
==
U_GCB_ZWJ
||
p2
==
U_GCB_SPACING_MARK
||
if
(
p2
==
U_GCB_EXTEND
||
/* p2 == U_GCB_ZWJ || */
p2
==
U_GCB_SPACING_MARK
||
p1
==
U_GCB_PREPEND
)
{
p1
==
U_GCB_PREPEND
)
{
return
false
;
return
false
;
}
}
...
@@ -158,25 +157,26 @@ bool GraphemeBreak::isGraphemeBreak(const float* advances,
...
@@ -158,25 +157,26 @@ bool GraphemeBreak::isGraphemeBreak(const float* advances,
}
}
}
}
// TODO(abarth): Enablet his code once we update ICU.
// Tailored version of Rule GB11, ZWJ × (Glue_After_Zwj | EBG)
// Tailored version of Rule GB11, ZWJ × (Glue_After_Zwj | EBG)
// We try to make emoji sequences with ZWJ a single grapheme cluster, but only
// We try to make emoji sequences with ZWJ a single grapheme cluster, but only
// if they actually merge to one cluster. So we are more relaxed than the UAX
// if they actually merge to one cluster. So we are more relaxed than the UAX
// #29 rules in accepting any emoji character after the ZWJ, but are tighter
// #29 rules in accepting any emoji character after the ZWJ, but are tighter
// in that we only treat it as one cluster if a ligature is actually formed
// in that we only treat it as one cluster if a ligature is actually formed
// and we also require the character before the ZWJ to also be an emoji. if
// and we also require the character before the ZWJ to also be an emoji.
// (p1 == U_GCB_ZWJ && isEmoji(c2) && offset_back > start) {
if
(
p1
==
U_GCB_ZWJ
&&
isEmoji
(
c2
)
&&
offset_back
>
start
)
{
// // look at character before ZWJ to see that both can participate in an
// look at character before ZWJ to see that both can participate in an
// emoji zwj sequence uint32_t c0 = 0; size_t offset_backback =
// emoji zwj sequence
// offset_back; U16_PREV(buf, start, offset_backback, c0); if (c0 ==
uint32_t
c0
=
0
;
// 0xFE0F && offset_backback > start) {
size_t
offset_backback
=
offset_back
;
// // skip over emoji variation selector
U16_PREV
(
buf
,
start
,
offset_backback
,
c0
);
// U16_PREV(buf, start, offset_backback, c0);
if
(
c0
==
0xFE0F
&&
offset_backback
>
start
)
{
// }
// skip over emoji variation selector
// if (isEmoji(c0)) {
U16_PREV
(
buf
,
start
,
offset_backback
,
c0
);
// return false;
}
// }
if
(
isEmoji
(
c0
))
{
// }
return
false
;
}
}
// Tailored version of Rule GB12 and Rule GB13 that look at even-odd cases.
// Tailored version of Rule GB12 and Rule GB13 that look at even-odd cases.
// sot (RI RI)* RI x RI
// sot (RI RI)* RI x RI
...
...
third_party/txt/src/minikin/HbFontCache.cpp
浏览文件 @
503999ff
...
@@ -103,12 +103,11 @@ hb_font_t* getHbFontLocked(const MinikinFont* minikinFont) {
...
@@ -103,12 +103,11 @@ hb_font_t* getHbFontLocked(const MinikinFont* minikinFont) {
hb_font_set_scale
(
parent_font
,
upem
,
upem
);
hb_font_set_scale
(
parent_font
,
upem
,
upem
);
font
=
hb_font_create_sub_font
(
parent_font
);
font
=
hb_font_create_sub_font
(
parent_font
);
// TODO(abarth): Enable this code once we update harfbuzz.
std
::
vector
<
hb_variation_t
>
variations
;
// std::vector<hb_variation_t> variations;
for
(
const
FontVariation
&
variation
:
minikinFont
->
GetAxes
())
{
// for (const FontVariation& variation : minikinFont->GetAxes()) {
variations
.
push_back
({
variation
.
axisTag
,
variation
.
value
});
// variations.push_back({variation.axisTag, variation.value});
}
// }
hb_font_set_variations
(
font
,
variations
.
data
(),
variations
.
size
());
// hb_font_set_variations(font, variations.data(), variations.size());
hb_font_destroy
(
parent_font
);
hb_font_destroy
(
parent_font
);
hb_face_destroy
(
face
);
hb_face_destroy
(
face
);
fontCache
->
put
(
fontId
,
font
);
fontCache
->
put
(
fontId
,
font
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录