Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
0535b50f
T
Third Party Harfbuzz
项目概览
OpenHarmony
/
Third Party Harfbuzz
10 个月 前同步成功
通知
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看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
0535b50f
编写于
8月 28, 2009
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[HB] Add GSUB/GPOS tracing
上级
95e20240
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
98 addition
and
8 deletion
+98
-8
src/hb-ot-layout-gpos-private.hh
src/hb-ot-layout-gpos-private.hh
+26
-3
src/hb-ot-layout-gsub-private.hh
src/hb-ot-layout-gsub-private.hh
+25
-3
src/hb-ot-layout-gsubgpos-private.hh
src/hb-ot-layout-gsubgpos-private.hh
+47
-2
未找到文件。
src/hb-ot-layout-gpos-private.hh
浏览文件 @
0535b50f
...
@@ -317,6 +317,7 @@ struct MarkArray
...
@@ -317,6 +317,7 @@ struct MarkArray
const
AnchorMatrix
&
anchors
,
unsigned
int
class_count
,
const
AnchorMatrix
&
anchors
,
unsigned
int
class_count
,
unsigned
int
glyph_pos
)
const
unsigned
int
glyph_pos
)
const
{
{
APPLY_DEBUG
();
const
MarkRecord
&
record
=
markRecord
[
mark_index
];
const
MarkRecord
&
record
=
markRecord
[
mark_index
];
unsigned
int
mark_class
=
record
.
klass
;
unsigned
int
mark_class
=
record
.
klass
;
...
@@ -360,6 +361,7 @@ struct SinglePosFormat1
...
@@ -360,6 +361,7 @@ struct SinglePosFormat1
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
unsigned
int
index
=
(
this
+
coverage
)
(
IN_CURGLYPH
());
unsigned
int
index
=
(
this
+
coverage
)
(
IN_CURGLYPH
());
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
return
false
;
return
false
;
...
@@ -396,6 +398,7 @@ struct SinglePosFormat2
...
@@ -396,6 +398,7 @@ struct SinglePosFormat2
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
unsigned
int
index
=
(
this
+
coverage
)
(
IN_CURGLYPH
());
unsigned
int
index
=
(
this
+
coverage
)
(
IN_CURGLYPH
());
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
return
false
;
return
false
;
...
@@ -437,6 +440,7 @@ struct SinglePos
...
@@ -437,6 +440,7 @@ struct SinglePos
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
switch
(
u
.
format
)
{
switch
(
u
.
format
)
{
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
case
2
:
return
u
.
format2
->
apply
(
APPLY_ARG
);
case
2
:
return
u
.
format2
->
apply
(
APPLY_ARG
);
...
@@ -503,6 +507,7 @@ struct PairPosFormat1
...
@@ -503,6 +507,7 @@ struct PairPosFormat1
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
unsigned
int
end
=
MIN
(
buffer
->
in_length
,
buffer
->
in_pos
+
context_length
);
unsigned
int
end
=
MIN
(
buffer
->
in_length
,
buffer
->
in_pos
+
context_length
);
if
(
HB_UNLIKELY
(
buffer
->
in_pos
+
2
>
end
))
if
(
HB_UNLIKELY
(
buffer
->
in_pos
+
2
>
end
))
return
false
;
return
false
;
...
@@ -575,6 +580,7 @@ struct PairPosFormat2
...
@@ -575,6 +580,7 @@ struct PairPosFormat2
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
unsigned
int
end
=
MIN
(
buffer
->
in_length
,
buffer
->
in_pos
+
context_length
);
unsigned
int
end
=
MIN
(
buffer
->
in_length
,
buffer
->
in_pos
+
context_length
);
if
(
HB_UNLIKELY
(
buffer
->
in_pos
+
2
>
end
))
if
(
HB_UNLIKELY
(
buffer
->
in_pos
+
2
>
end
))
return
false
;
return
false
;
...
@@ -657,6 +663,7 @@ struct PairPos
...
@@ -657,6 +663,7 @@ struct PairPos
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
switch
(
u
.
format
)
{
switch
(
u
.
format
)
{
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
case
2
:
return
u
.
format2
->
apply
(
APPLY_ARG
);
case
2
:
return
u
.
format2
->
apply
(
APPLY_ARG
);
...
@@ -709,6 +716,7 @@ struct CursivePosFormat1
...
@@ -709,6 +716,7 @@ struct CursivePosFormat1
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
/* Now comes the messiest part of the whole OpenType
/* Now comes the messiest part of the whole OpenType
specification. At first glance, cursive connections seem easy
specification. At first glance, cursive connections seem easy
to understand, but there are pitfalls! The reason is that
to understand, but there are pitfalls! The reason is that
...
@@ -904,6 +912,7 @@ struct CursivePos
...
@@ -904,6 +912,7 @@ struct CursivePos
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
switch
(
u
.
format
)
{
switch
(
u
.
format
)
{
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
default:
return
false
;
default:
return
false
;
...
@@ -941,6 +950,7 @@ struct MarkBasePosFormat1
...
@@ -941,6 +950,7 @@ struct MarkBasePosFormat1
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
unsigned
int
mark_index
=
(
this
+
markCoverage
)
(
IN_CURGLYPH
());
unsigned
int
mark_index
=
(
this
+
markCoverage
)
(
IN_CURGLYPH
());
if
(
HB_LIKELY
(
mark_index
==
NOT_COVERED
))
if
(
HB_LIKELY
(
mark_index
==
NOT_COVERED
))
return
false
;
return
false
;
...
@@ -998,6 +1008,7 @@ struct MarkBasePos
...
@@ -998,6 +1008,7 @@ struct MarkBasePos
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
switch
(
u
.
format
)
{
switch
(
u
.
format
)
{
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
default:
return
false
;
default:
return
false
;
...
@@ -1041,6 +1052,7 @@ struct MarkLigPosFormat1
...
@@ -1041,6 +1052,7 @@ struct MarkLigPosFormat1
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
unsigned
int
mark_index
=
(
this
+
markCoverage
)
(
IN_CURGLYPH
());
unsigned
int
mark_index
=
(
this
+
markCoverage
)
(
IN_CURGLYPH
());
if
(
HB_LIKELY
(
mark_index
==
NOT_COVERED
))
if
(
HB_LIKELY
(
mark_index
==
NOT_COVERED
))
return
false
;
return
false
;
...
@@ -1121,6 +1133,7 @@ struct MarkLigPos
...
@@ -1121,6 +1133,7 @@ struct MarkLigPos
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
switch
(
u
.
format
)
{
switch
(
u
.
format
)
{
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
default:
return
false
;
default:
return
false
;
...
@@ -1158,6 +1171,7 @@ struct MarkMarkPosFormat1
...
@@ -1158,6 +1171,7 @@ struct MarkMarkPosFormat1
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
unsigned
int
mark1_index
=
(
this
+
mark1Coverage
)
(
IN_CURGLYPH
());
unsigned
int
mark1_index
=
(
this
+
mark1Coverage
)
(
IN_CURGLYPH
());
if
(
HB_LIKELY
(
mark1_index
==
NOT_COVERED
))
if
(
HB_LIKELY
(
mark1_index
==
NOT_COVERED
))
return
false
;
return
false
;
...
@@ -1220,6 +1234,7 @@ struct MarkMarkPos
...
@@ -1220,6 +1234,7 @@ struct MarkMarkPos
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
switch
(
u
.
format
)
{
switch
(
u
.
format
)
{
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
default:
return
false
;
default:
return
false
;
...
@@ -1252,7 +1267,10 @@ struct ContextPos : Context
...
@@ -1252,7 +1267,10 @@ struct ContextPos : Context
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
return
Context
::
apply
(
APPLY_ARG
,
position_lookup
);
}
{
APPLY_DEBUG
();
return
Context
::
apply
(
APPLY_ARG
,
position_lookup
);
}
};
};
ASSERT_SIZE
(
ContextPos
,
2
);
ASSERT_SIZE
(
ContextPos
,
2
);
...
@@ -1262,7 +1280,10 @@ struct ChainContextPos : ChainContext
...
@@ -1262,7 +1280,10 @@ struct ChainContextPos : ChainContext
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
return
ChainContext
::
apply
(
APPLY_ARG
,
position_lookup
);
}
{
APPLY_DEBUG
();
return
ChainContext
::
apply
(
APPLY_ARG
,
position_lookup
);
}
};
};
ASSERT_SIZE
(
ChainContextPos
,
2
);
ASSERT_SIZE
(
ChainContextPos
,
2
);
...
@@ -1306,6 +1327,7 @@ struct PosLookupSubTable
...
@@ -1306,6 +1327,7 @@ struct PosLookupSubTable
inline
bool
apply
(
APPLY_ARG_DEF
,
unsigned
int
lookup_type
)
const
inline
bool
apply
(
APPLY_ARG_DEF
,
unsigned
int
lookup_type
)
const
{
{
APPLY_DEBUG
();
switch
(
lookup_type
)
{
switch
(
lookup_type
)
{
case
Single
:
return
u
.
single
->
apply
(
APPLY_ARG
);
case
Single
:
return
u
.
single
->
apply
(
APPLY_ARG
);
case
Pair
:
return
u
.
pair
->
apply
(
APPLY_ARG
);
case
Pair
:
return
u
.
pair
->
apply
(
APPLY_ARG
);
...
@@ -1392,7 +1414,7 @@ struct PosLookup : Lookup
...
@@ -1392,7 +1414,7 @@ struct PosLookup : Lookup
return
false
;
return
false
;
for
(
unsigned
int
i
=
0
;
i
<
get_subtable_count
();
i
++
)
for
(
unsigned
int
i
=
0
;
i
<
get_subtable_count
();
i
++
)
if
(
get_subtable
(
i
).
apply
(
APPLY_ARG
,
lookup_type
))
if
(
get_subtable
(
i
).
apply
(
APPLY_ARG
_INIT
,
lookup_type
))
return
true
;
return
true
;
return
false
;
return
false
;
...
@@ -1479,6 +1501,7 @@ ASSERT_SIZE (GPOS, 10);
...
@@ -1479,6 +1501,7 @@ ASSERT_SIZE (GPOS, 10);
inline
bool
ExtensionPos
::
apply
(
APPLY_ARG_DEF
)
const
inline
bool
ExtensionPos
::
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
unsigned
int
lookup_type
=
get_type
();
unsigned
int
lookup_type
=
get_type
();
if
(
HB_UNLIKELY
(
lookup_type
==
PosLookupSubTable
::
Extension
))
if
(
HB_UNLIKELY
(
lookup_type
==
PosLookupSubTable
::
Extension
))
...
...
src/hb-ot-layout-gsub-private.hh
浏览文件 @
0535b50f
...
@@ -38,6 +38,7 @@ struct SingleSubstFormat1
...
@@ -38,6 +38,7 @@ struct SingleSubstFormat1
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
hb_codepoint_t
glyph_id
=
IN_CURGLYPH
();
hb_codepoint_t
glyph_id
=
IN_CURGLYPH
();
unsigned
int
index
=
(
this
+
coverage
)
(
glyph_id
);
unsigned
int
index
=
(
this
+
coverage
)
(
glyph_id
);
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
...
@@ -76,6 +77,7 @@ struct SingleSubstFormat2
...
@@ -76,6 +77,7 @@ struct SingleSubstFormat2
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
hb_codepoint_t
glyph_id
=
IN_CURGLYPH
();
hb_codepoint_t
glyph_id
=
IN_CURGLYPH
();
unsigned
int
index
=
(
this
+
coverage
)
(
glyph_id
);
unsigned
int
index
=
(
this
+
coverage
)
(
glyph_id
);
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
...
@@ -118,6 +120,7 @@ struct SingleSubst
...
@@ -118,6 +120,7 @@ struct SingleSubst
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
switch
(
u
.
format
)
{
switch
(
u
.
format
)
{
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
case
2
:
return
u
.
format2
->
apply
(
APPLY_ARG
);
case
2
:
return
u
.
format2
->
apply
(
APPLY_ARG
);
...
@@ -152,6 +155,7 @@ struct Sequence
...
@@ -152,6 +155,7 @@ struct Sequence
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
if
(
HB_UNLIKELY
(
!
substitute
.
len
))
if
(
HB_UNLIKELY
(
!
substitute
.
len
))
return
false
;
return
false
;
...
@@ -193,6 +197,7 @@ struct MultipleSubstFormat1
...
@@ -193,6 +197,7 @@ struct MultipleSubstFormat1
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
unsigned
int
index
=
(
this
+
coverage
)
(
IN_CURGLYPH
());
unsigned
int
index
=
(
this
+
coverage
)
(
IN_CURGLYPH
());
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
...
@@ -225,6 +230,7 @@ struct MultipleSubst
...
@@ -225,6 +230,7 @@ struct MultipleSubst
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
switch
(
u
.
format
)
{
switch
(
u
.
format
)
{
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
default:
return
false
;
default:
return
false
;
...
@@ -261,6 +267,7 @@ struct AlternateSubstFormat1
...
@@ -261,6 +267,7 @@ struct AlternateSubstFormat1
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
hb_codepoint_t
glyph_id
=
IN_CURGLYPH
();
hb_codepoint_t
glyph_id
=
IN_CURGLYPH
();
unsigned
int
index
=
(
this
+
coverage
)
(
glyph_id
);
unsigned
int
index
=
(
this
+
coverage
)
(
glyph_id
);
...
@@ -319,6 +326,7 @@ struct AlternateSubst
...
@@ -319,6 +326,7 @@ struct AlternateSubst
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
switch
(
u
.
format
)
{
switch
(
u
.
format
)
{
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
default:
return
false
;
default:
return
false
;
...
@@ -350,6 +358,7 @@ struct Ligature
...
@@ -350,6 +358,7 @@ struct Ligature
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
,
bool
is_mark
)
const
inline
bool
apply
(
APPLY_ARG_DEF
,
bool
is_mark
)
const
{
{
APPLY_DEBUG
();
unsigned
int
i
,
j
;
unsigned
int
i
,
j
;
unsigned
int
count
=
component
.
len
;
unsigned
int
count
=
component
.
len
;
unsigned
int
end
=
MIN
(
buffer
->
in_length
,
buffer
->
in_pos
+
context_length
);
unsigned
int
end
=
MIN
(
buffer
->
in_length
,
buffer
->
in_pos
+
context_length
);
...
@@ -435,6 +444,7 @@ struct LigatureSet
...
@@ -435,6 +444,7 @@ struct LigatureSet
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
,
bool
is_mark
)
const
inline
bool
apply
(
APPLY_ARG_DEF
,
bool
is_mark
)
const
{
{
APPLY_DEBUG
();
unsigned
int
num_ligs
=
ligature
.
len
;
unsigned
int
num_ligs
=
ligature
.
len
;
for
(
unsigned
int
i
=
0
;
i
<
num_ligs
;
i
++
)
for
(
unsigned
int
i
=
0
;
i
<
num_ligs
;
i
++
)
{
{
...
@@ -466,6 +476,7 @@ struct LigatureSubstFormat1
...
@@ -466,6 +476,7 @@ struct LigatureSubstFormat1
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
hb_codepoint_t
glyph_id
=
IN_CURGLYPH
();
hb_codepoint_t
glyph_id
=
IN_CURGLYPH
();
bool
first_is_mark
=
!!
(
property
&
HB_OT_LAYOUT_GLYPH_CLASS_MARK
);
bool
first_is_mark
=
!!
(
property
&
HB_OT_LAYOUT_GLYPH_CLASS_MARK
);
...
@@ -501,6 +512,7 @@ struct LigatureSubst
...
@@ -501,6 +512,7 @@ struct LigatureSubst
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
switch
(
u
.
format
)
{
switch
(
u
.
format
)
{
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
default:
return
false
;
default:
return
false
;
...
@@ -534,7 +546,10 @@ struct ContextSubst : Context
...
@@ -534,7 +546,10 @@ struct ContextSubst : Context
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
return
Context
::
apply
(
APPLY_ARG
,
substitute_lookup
);
}
{
APPLY_DEBUG
();
return
Context
::
apply
(
APPLY_ARG
,
substitute_lookup
);
}
};
};
ASSERT_SIZE
(
ContextSubst
,
2
);
ASSERT_SIZE
(
ContextSubst
,
2
);
...
@@ -544,7 +559,10 @@ struct ChainContextSubst : ChainContext
...
@@ -544,7 +559,10 @@ struct ChainContextSubst : ChainContext
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
return
ChainContext
::
apply
(
APPLY_ARG
,
substitute_lookup
);
}
{
APPLY_DEBUG
();
return
ChainContext
::
apply
(
APPLY_ARG
,
substitute_lookup
);
}
};
};
ASSERT_SIZE
(
ChainContextSubst
,
2
);
ASSERT_SIZE
(
ChainContextSubst
,
2
);
...
@@ -571,6 +589,7 @@ struct ReverseChainSingleSubstFormat1
...
@@ -571,6 +589,7 @@ struct ReverseChainSingleSubstFormat1
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
if
(
HB_UNLIKELY
(
context_length
!=
NO_CONTEXT
))
if
(
HB_UNLIKELY
(
context_length
!=
NO_CONTEXT
))
return
false
;
/* No chaining to this type */
return
false
;
/* No chaining to this type */
...
@@ -634,6 +653,7 @@ struct ReverseChainSingleSubst
...
@@ -634,6 +653,7 @@ struct ReverseChainSingleSubst
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
)
const
inline
bool
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
switch
(
u
.
format
)
{
switch
(
u
.
format
)
{
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
);
default:
return
false
;
default:
return
false
;
...
@@ -680,6 +700,7 @@ struct SubstLookupSubTable
...
@@ -680,6 +700,7 @@ struct SubstLookupSubTable
inline
bool
apply
(
APPLY_ARG_DEF
,
unsigned
int
lookup_type
)
const
inline
bool
apply
(
APPLY_ARG_DEF
,
unsigned
int
lookup_type
)
const
{
{
APPLY_DEBUG
();
switch
(
lookup_type
)
{
switch
(
lookup_type
)
{
case
Single
:
return
u
.
single
->
apply
(
APPLY_ARG
);
case
Single
:
return
u
.
single
->
apply
(
APPLY_ARG
);
case
Multiple
:
return
u
.
multiple
->
apply
(
APPLY_ARG
);
case
Multiple
:
return
u
.
multiple
->
apply
(
APPLY_ARG
);
...
@@ -767,7 +788,7 @@ struct SubstLookup : Lookup
...
@@ -767,7 +788,7 @@ struct SubstLookup : Lookup
unsigned
int
count
=
get_subtable_count
();
unsigned
int
count
=
get_subtable_count
();
for
(
unsigned
int
i
=
0
;
i
<
count
;
i
++
)
for
(
unsigned
int
i
=
0
;
i
<
count
;
i
++
)
if
(
get_subtable
(
i
).
apply
(
APPLY_ARG
,
lookup_type
))
if
(
get_subtable
(
i
).
apply
(
APPLY_ARG
_INIT
,
lookup_type
))
return
true
;
return
true
;
return
false
;
return
false
;
...
@@ -865,6 +886,7 @@ ASSERT_SIZE (GSUB, 10);
...
@@ -865,6 +886,7 @@ ASSERT_SIZE (GSUB, 10);
inline
bool
ExtensionSubst
::
apply
(
APPLY_ARG_DEF
)
const
inline
bool
ExtensionSubst
::
apply
(
APPLY_ARG_DEF
)
const
{
{
APPLY_DEBUG
();
unsigned
int
lookup_type
=
get_type
();
unsigned
int
lookup_type
=
get_type
();
if
(
HB_UNLIKELY
(
lookup_type
==
SubstLookupSubTable
::
Extension
))
if
(
HB_UNLIKELY
(
lookup_type
==
SubstLookupSubTable
::
Extension
))
...
...
src/hb-ot-layout-gsubgpos-private.hh
浏览文件 @
0535b50f
...
@@ -31,20 +31,53 @@
...
@@ -31,20 +31,53 @@
#include "hb-ot-layout-gdef-private.hh"
#include "hb-ot-layout-gdef-private.hh"
#ifndef HB_DEBUG_APPLY
#define HB_DEBUG_APPLY HB_DEBUG
#endif
#if HB_DEBUG_APPLY
#define APPLY_DEBUG_ARG_DEF , unsigned int apply_depth
#define APPLY_DEBUG_ARG , apply_depth + 1
#define APPLY_DEBUG_ARG_INIT , 1
#define APPLY_DEBUG() \
HB_STMT_START { \
if (apply_depth < HB_DEBUG_APPLY) \
fprintf (stderr, "APPLY(%p) %-*d-> %s\n", \
(CONST_CHARP (this) == NullPool) ? 0 : this, \
apply_depth, apply_depth, \
__PRETTY_FUNCTION__); \
} HB_STMT_END
#else
#define APPLY_DEBUG_ARG_DEF
#define APPLY_DEBUG_ARG
#define APPLY_DEBUG_ARG_INIT
#define APPLY_DEBUG() HB_STMT_START {} HB_STMT_END
#endif
#define APPLY_ARG_DEF \
#define APPLY_ARG_DEF \
hb_ot_layout_context_t *context, \
hb_ot_layout_context_t *context, \
hb_buffer_t *buffer, \
hb_buffer_t *buffer, \
unsigned int context_length HB_GNUC_UNUSED, \
unsigned int context_length HB_GNUC_UNUSED, \
unsigned int nesting_level_left HB_GNUC_UNUSED, \
unsigned int nesting_level_left HB_GNUC_UNUSED, \
unsigned int lookup_flag, \
unsigned int lookup_flag, \
unsigned int property HB_GNUC_UNUSED
/* propety of first glyph */
unsigned int property HB_GNUC_UNUSED
/* propety of first glyph */
\
APPLY_DEBUG_ARG_DEF
#define APPLY_ARG \
#define APPLY_ARG \
context, \
context, \
buffer, \
buffer, \
context_length, \
context_length, \
nesting_level_left, \
nesting_level_left, \
lookup_flag, \
lookup_flag, \
property
property \
APPLY_DEBUG_ARG
#define APPLY_ARG_INIT \
context, \
buffer, \
context_length, \
nesting_level_left, \
lookup_flag, \
property \
APPLY_DEBUG_ARG_INIT
typedef
bool
(
*
match_func_t
)
(
hb_codepoint_t
glyph_id
,
const
USHORT
&
value
,
char
*
data
);
typedef
bool
(
*
match_func_t
)
(
hb_codepoint_t
glyph_id
,
const
USHORT
&
value
,
char
*
data
);
...
@@ -257,6 +290,7 @@ struct Rule
...
@@ -257,6 +290,7 @@ struct Rule
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
,
ContextLookupContext
&
lookup_context
)
const
inline
bool
apply
(
APPLY_ARG_DEF
,
ContextLookupContext
&
lookup_context
)
const
{
{
APPLY_DEBUG
();
const
LookupRecord
*
lookupRecord
=
&
CONST_CAST
(
LookupRecord
,
input
,
sizeof
(
input
[
0
])
*
(
inputCount
?
inputCount
-
1
:
0
));
const
LookupRecord
*
lookupRecord
=
&
CONST_CAST
(
LookupRecord
,
input
,
sizeof
(
input
[
0
])
*
(
inputCount
?
inputCount
-
1
:
0
));
return
context_lookup
(
APPLY_ARG
,
return
context_lookup
(
APPLY_ARG
,
inputCount
,
input
,
inputCount
,
input
,
...
@@ -289,6 +323,7 @@ struct RuleSet
...
@@ -289,6 +323,7 @@ struct RuleSet
{
{
inline
bool
apply
(
APPLY_ARG_DEF
,
ContextLookupContext
&
lookup_context
)
const
inline
bool
apply
(
APPLY_ARG_DEF
,
ContextLookupContext
&
lookup_context
)
const
{
{
APPLY_DEBUG
();
unsigned
int
num_rules
=
rule
.
len
;
unsigned
int
num_rules
=
rule
.
len
;
for
(
unsigned
int
i
=
0
;
i
<
num_rules
;
i
++
)
for
(
unsigned
int
i
=
0
;
i
<
num_rules
;
i
++
)
{
{
...
@@ -318,6 +353,7 @@ struct ContextFormat1
...
@@ -318,6 +353,7 @@ struct ContextFormat1
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
,
apply_lookup_func_t
apply_func
)
const
inline
bool
apply
(
APPLY_ARG_DEF
,
apply_lookup_func_t
apply_func
)
const
{
{
APPLY_DEBUG
();
unsigned
int
index
=
(
this
+
coverage
)
(
IN_CURGLYPH
());
unsigned
int
index
=
(
this
+
coverage
)
(
IN_CURGLYPH
());
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
return
false
;
return
false
;
...
@@ -354,6 +390,7 @@ struct ContextFormat2
...
@@ -354,6 +390,7 @@ struct ContextFormat2
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
,
apply_lookup_func_t
apply_func
)
const
inline
bool
apply
(
APPLY_ARG_DEF
,
apply_lookup_func_t
apply_func
)
const
{
{
APPLY_DEBUG
();
unsigned
int
index
=
(
this
+
coverage
)
(
IN_CURGLYPH
());
unsigned
int
index
=
(
this
+
coverage
)
(
IN_CURGLYPH
());
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
return
false
;
return
false
;
...
@@ -398,6 +435,7 @@ struct ContextFormat3
...
@@ -398,6 +435,7 @@ struct ContextFormat3
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
,
apply_lookup_func_t
apply_func
)
const
inline
bool
apply
(
APPLY_ARG_DEF
,
apply_lookup_func_t
apply_func
)
const
{
{
APPLY_DEBUG
();
unsigned
int
index
=
(
this
+
coverage
[
0
])
(
IN_CURGLYPH
());
unsigned
int
index
=
(
this
+
coverage
[
0
])
(
IN_CURGLYPH
());
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
return
false
;
return
false
;
...
@@ -441,6 +479,7 @@ struct Context
...
@@ -441,6 +479,7 @@ struct Context
protected:
protected:
inline
bool
apply
(
APPLY_ARG_DEF
,
apply_lookup_func_t
apply_func
)
const
inline
bool
apply
(
APPLY_ARG_DEF
,
apply_lookup_func_t
apply_func
)
const
{
{
APPLY_DEBUG
();
switch
(
u
.
format
)
{
switch
(
u
.
format
)
{
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
,
apply_func
);
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
,
apply_func
);
case
2
:
return
u
.
format2
->
apply
(
APPLY_ARG
,
apply_func
);
case
2
:
return
u
.
format2
->
apply
(
APPLY_ARG
,
apply_func
);
...
@@ -522,6 +561,7 @@ struct ChainRule
...
@@ -522,6 +561,7 @@ struct ChainRule
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
,
ChainContextLookupContext
&
lookup_context
)
const
inline
bool
apply
(
APPLY_ARG_DEF
,
ChainContextLookupContext
&
lookup_context
)
const
{
{
APPLY_DEBUG
();
const
HeadlessArrayOf
<
USHORT
>
&
input
=
CONST_NEXT
(
HeadlessArrayOf
<
USHORT
>
,
backtrack
);
const
HeadlessArrayOf
<
USHORT
>
&
input
=
CONST_NEXT
(
HeadlessArrayOf
<
USHORT
>
,
backtrack
);
const
ArrayOf
<
USHORT
>
&
lookahead
=
CONST_NEXT
(
ArrayOf
<
USHORT
>
,
input
);
const
ArrayOf
<
USHORT
>
&
lookahead
=
CONST_NEXT
(
ArrayOf
<
USHORT
>
,
input
);
const
ArrayOf
<
LookupRecord
>
&
lookup
=
CONST_NEXT
(
ArrayOf
<
LookupRecord
>
,
lookahead
);
const
ArrayOf
<
LookupRecord
>
&
lookup
=
CONST_NEXT
(
ArrayOf
<
LookupRecord
>
,
lookahead
);
...
@@ -567,6 +607,7 @@ struct ChainRuleSet
...
@@ -567,6 +607,7 @@ struct ChainRuleSet
{
{
inline
bool
apply
(
APPLY_ARG_DEF
,
ChainContextLookupContext
&
lookup_context
)
const
inline
bool
apply
(
APPLY_ARG_DEF
,
ChainContextLookupContext
&
lookup_context
)
const
{
{
APPLY_DEBUG
();
unsigned
int
num_rules
=
rule
.
len
;
unsigned
int
num_rules
=
rule
.
len
;
for
(
unsigned
int
i
=
0
;
i
<
num_rules
;
i
++
)
for
(
unsigned
int
i
=
0
;
i
<
num_rules
;
i
++
)
{
{
...
@@ -596,6 +637,7 @@ struct ChainContextFormat1
...
@@ -596,6 +637,7 @@ struct ChainContextFormat1
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
,
apply_lookup_func_t
apply_func
)
const
inline
bool
apply
(
APPLY_ARG_DEF
,
apply_lookup_func_t
apply_func
)
const
{
{
APPLY_DEBUG
();
unsigned
int
index
=
(
this
+
coverage
)
(
IN_CURGLYPH
());
unsigned
int
index
=
(
this
+
coverage
)
(
IN_CURGLYPH
());
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
return
false
;
return
false
;
...
@@ -631,6 +673,7 @@ struct ChainContextFormat2
...
@@ -631,6 +673,7 @@ struct ChainContextFormat2
private:
private:
inline
bool
apply
(
APPLY_ARG_DEF
,
apply_lookup_func_t
apply_func
)
const
inline
bool
apply
(
APPLY_ARG_DEF
,
apply_lookup_func_t
apply_func
)
const
{
{
APPLY_DEBUG
();
unsigned
int
index
=
(
this
+
coverage
)
(
IN_CURGLYPH
());
unsigned
int
index
=
(
this
+
coverage
)
(
IN_CURGLYPH
());
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
if
(
HB_LIKELY
(
index
==
NOT_COVERED
))
return
false
;
return
false
;
...
@@ -691,6 +734,7 @@ struct ChainContextFormat3
...
@@ -691,6 +734,7 @@ struct ChainContextFormat3
inline
bool
apply
(
APPLY_ARG_DEF
,
apply_lookup_func_t
apply_func
)
const
inline
bool
apply
(
APPLY_ARG_DEF
,
apply_lookup_func_t
apply_func
)
const
{
{
APPLY_DEBUG
();
const
OffsetArrayOf
<
Coverage
>
&
input
=
CONST_NEXT
(
OffsetArrayOf
<
Coverage
>
,
backtrack
);
const
OffsetArrayOf
<
Coverage
>
&
input
=
CONST_NEXT
(
OffsetArrayOf
<
Coverage
>
,
backtrack
);
unsigned
int
index
=
(
this
+
input
[
0
])
(
IN_CURGLYPH
());
unsigned
int
index
=
(
this
+
input
[
0
])
(
IN_CURGLYPH
());
...
@@ -748,6 +792,7 @@ struct ChainContext
...
@@ -748,6 +792,7 @@ struct ChainContext
protected:
protected:
inline
bool
apply
(
APPLY_ARG_DEF
,
apply_lookup_func_t
apply_func
)
const
inline
bool
apply
(
APPLY_ARG_DEF
,
apply_lookup_func_t
apply_func
)
const
{
{
APPLY_DEBUG
();
switch
(
u
.
format
)
{
switch
(
u
.
format
)
{
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
,
apply_func
);
case
1
:
return
u
.
format1
->
apply
(
APPLY_ARG
,
apply_func
);
case
2
:
return
u
.
format2
->
apply
(
APPLY_ARG
,
apply_func
);
case
2
:
return
u
.
format2
->
apply
(
APPLY_ARG
,
apply_func
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录