Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
25c6c9a3
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看板
提交
25c6c9a3
编写于
5月 08, 2009
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[GSUB] ContextSubst format 1
上级
f7022951
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
45 addition
and
7 deletion
+45
-7
src/hb-ot-layout-gsub-private.h
src/hb-ot-layout-gsub-private.h
+45
-7
未找到文件。
src/hb-ot-layout-gsub-private.h
浏览文件 @
25c6c9a3
...
...
@@ -568,9 +568,6 @@ DEFINE_NULL (LigatureSubst, 2);
struct
SubstLookupRecord
{
/* TODO */
private:
USHORT
sequenceIndex
;
/* Index into current glyph
* sequence--first glyph = 0 */
USHORT
lookupListIndex
;
/* Lookup to apply to that
...
...
@@ -584,7 +581,36 @@ struct SubRule {
private:
DEFINE_ARRAY_TYPE
(
GlyphID
,
input
,
(
glyphCount
?
glyphCount
-
1
:
0
));
/* XXX */
inline
bool
substitute
(
SUBTABLE_SUBSTITUTE_ARGS_DEF
)
const
{
unsigned
int
i
,
j
;
unsigned
int
property
;
unsigned
int
count
=
glyphCount
;
if
(
HB_UNLIKELY
(
buffer
->
in_pos
+
count
>
buffer
->
in_length
||
context_length
<
count
))
return
false
;
/* Not enough glyphs in input or context */
for
(
i
=
1
,
j
=
buffer
->
in_pos
+
1
;
i
<
count
;
i
++
,
j
++
)
{
while
(
!
_hb_ot_layout_check_glyph_property
(
layout
,
IN_ITEM
(
j
),
lookup_flag
,
&
property
))
{
if
(
HB_UNLIKELY
(
j
+
count
-
i
==
buffer
->
in_length
))
return
false
;
j
++
;
}
if
(
HB_LIKELY
(
IN_GLYPH
(
j
)
!=
(
*
this
)[
i
-
1
]))
return
false
;
}
/*
return Do_ContextSubst( gsub, sr[k].GlyphCount,
sr[k].SubstCount, sr[k].SubstLookupRecord,
buffer,
nesting_level );
*/
}
private:
USHORT
glyphCount
;
/* Total number of glyphs in input
...
...
@@ -600,11 +626,23 @@ DEFINE_NULL_ASSERT_SIZE (SubRule, 4);
struct
SubRuleSet
{
friend
struct
C
hain
SubstFormat1
;
friend
struct
C
ontext
SubstFormat1
;
private:
DEFINE_OFFSET_ARRAY_TYPE
(
SubRule
,
subRule
,
subRuleCount
);
inline
bool
substitute
(
SUBTABLE_SUBSTITUTE_ARGS_DEF
)
const
{
unsigned
int
num_rules
=
get_len
();
for
(
unsigned
int
i
=
0
;
i
<
num_rules
;
i
++
)
{
const
SubRule
&
rule
=
(
*
this
)[
i
];
if
(
rule
.
substitute
(
SUBTABLE_SUBSTITUTE_ARGS
))
return
true
;
}
return
false
;
}
private:
USHORT
subRuleCount
;
/* Number of SubRule tables */
Offset
subRule
[];
/* Array of offsets to SubRule
...
...
@@ -633,8 +671,8 @@ struct ContextSubstFormat1 {
unsigned
int
index
=
get_glyph_coverage
(
glyph_id
);
//const SubRuleSet &lig
_set = (*this)[index];
//return lig_set.substitute_ligature (SUBTABLE_SUBSTITUTE_ARGS, first_is_mark
);
const
SubRuleSet
&
rule
_set
=
(
*
this
)[
index
];
return
rule_set
.
substitute
(
SUBTABLE_SUBSTITUTE_ARGS
);
}
private:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录