Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
e2f50f2a
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看板
提交
e2f50f2a
编写于
2月 19, 2015
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[layout] Add apply_forward / apply_backward
上级
1d4a3284
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
46 addition
and
23 deletion
+46
-23
src/hb-ot-layout.cc
src/hb-ot-layout.cc
+46
-23
未找到文件。
src/hb-ot-layout.cc
浏览文件 @
e2f50f2a
...
...
@@ -829,6 +829,50 @@ struct GPOSProxy
};
template
<
typename
Obj
>
static
inline
bool
apply_forward
(
OT
::
hb_apply_context_t
*
c
,
const
Obj
&
obj
,
const
hb_ot_layout_lookup_accelerator_t
&
accel
)
{
bool
ret
=
false
;
hb_buffer_t
*
buffer
=
c
->
buffer
;
while
(
buffer
->
idx
<
buffer
->
len
)
{
if
(
accel
.
may_have
(
buffer
->
cur
().
codepoint
)
&&
(
buffer
->
cur
().
mask
&
c
->
lookup_mask
)
&&
c
->
check_glyph_property
(
&
c
->
buffer
->
cur
(),
c
->
lookup_props
)
&&
obj
.
apply
(
c
))
ret
=
true
;
else
buffer
->
next_glyph
();
}
return
ret
;
}
template
<
typename
Obj
>
static
inline
bool
apply_backward
(
OT
::
hb_apply_context_t
*
c
,
const
Obj
&
obj
,
const
hb_ot_layout_lookup_accelerator_t
&
accel
)
{
bool
ret
=
false
;
hb_buffer_t
*
buffer
=
c
->
buffer
;
do
{
if
(
accel
.
may_have
(
buffer
->
cur
().
codepoint
)
&&
(
buffer
->
cur
().
mask
&
c
->
lookup_mask
)
&&
c
->
check_glyph_property
(
&
c
->
buffer
->
cur
(),
c
->
lookup_props
)
&&
obj
.
apply
(
c
))
ret
=
true
;
/* The reverse lookup doesn't "advance" cursor (for good reason). */
buffer
->
idx
--
;
}
while
((
int
)
buffer
->
idx
>=
0
);
return
ret
;
}
template
<
typename
Proxy
>
static
inline
void
apply_string
(
OT
::
hb_apply_context_t
*
c
,
...
...
@@ -849,18 +893,7 @@ apply_string (OT::hb_apply_context_t *c,
buffer
->
clear_output
();
buffer
->
idx
=
0
;
bool
ret
=
false
;
while
(
buffer
->
idx
<
buffer
->
len
)
{
if
(
accel
.
may_have
(
buffer
->
cur
().
codepoint
)
&&
(
buffer
->
cur
().
mask
&
c
->
lookup_mask
)
&&
c
->
check_glyph_property
(
&
c
->
buffer
->
cur
(),
c
->
lookup_props
)
&&
lookup
.
apply
(
c
))
ret
=
true
;
else
buffer
->
next_glyph
();
}
if
(
ret
)
if
(
apply_forward
(
c
,
lookup
,
accel
))
{
if
(
!
Proxy
::
inplace
)
buffer
->
swap_buffers
();
...
...
@@ -874,18 +907,8 @@ apply_string (OT::hb_apply_context_t *c,
if
(
Proxy
::
table_index
==
0
)
buffer
->
remove_output
();
buffer
->
idx
=
buffer
->
len
-
1
;
do
{
if
(
accel
.
may_have
(
buffer
->
cur
().
codepoint
)
&&
(
buffer
->
cur
().
mask
&
c
->
lookup_mask
)
&&
c
->
check_glyph_property
(
&
c
->
buffer
->
cur
(),
c
->
lookup_props
)
&&
lookup
.
apply
(
c
))
/* nothing */
;
/* The reverse lookup doesn't "advance" cursor (for good reason). */
buffer
->
idx
--
;
}
while
((
int
)
buffer
->
idx
>=
0
);
apply_backward
(
c
,
lookup
,
accel
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录