Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sxychenjing
engine
提交
afd2e6b8
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,发现更多精彩内容 >>
提交
afd2e6b8
编写于
8月 29, 2017
作者:
J
Jason Simmons
提交者:
GitHub
8月 29, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Re-enable Unicode ZWJ handling code that had been disabled pending an ICU update (#4035)
上级
3efd3560
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
16 addition
and
16 deletion
+16
-16
third_party/txt/src/minikin/GraphemeBreak.cpp
third_party/txt/src/minikin/GraphemeBreak.cpp
+16
-16
未找到文件。
third_party/txt/src/minikin/GraphemeBreak.cpp
浏览文件 @
afd2e6b8
...
...
@@ -112,8 +112,7 @@ bool GraphemeBreak::isGraphemeBreak(const float* advances,
return
false
;
}
// 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
)
{
return
false
;
}
...
...
@@ -157,25 +156,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)
// 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
// #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
// and we also require the character before the ZWJ to also be an emoji. if
// (p1 == U_GCB_ZWJ && isEmoji(c2) && offset_back > start) {
// // look at character before ZWJ to see that both can participate in an
// emoji zwj sequence uint32_t c0 = 0; size_t offset_backback =
// offset_back; U16_PREV(buf, start, offset_backback, c0); if (c0 ==
// 0xFE0F && offset_backback > start) {
// // skip over emoji variation selector
// U16_PREV(buf, start, offset_backback, c0);
// }
// if (isEmoji(c0)) {
// return false;
// }
// }
// and we also require the character before the ZWJ to also be an emoji.
if
(
p1
==
U_GCB_ZWJ
&&
isEmoji
(
c2
)
&&
offset_back
>
start
)
{
// look at character before ZWJ to see that both can participate in an
// emoji zwj sequence
uint32_t
c0
=
0
;
size_t
offset_backback
=
offset_back
;
U16_PREV
(
buf
,
start
,
offset_backback
,
c0
);
if
(
c0
==
0xFE0F
&&
offset_backback
>
start
)
{
// skip over emoji variation selector
U16_PREV
(
buf
,
start
,
offset_backback
,
c0
);
}
if
(
isEmoji
(
c0
))
{
return
false
;
}
}
// Tailored version of Rule GB12 and Rule GB13 that look at even-odd cases.
// sot (RI RI)* RI x RI
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录