Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
1376fb7b
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看板
提交
1376fb7b
编写于
4月 29, 2010
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[apply] Use a context object to reduce number of parameters passed around
上级
173fde70
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
53 addition
and
44 deletion
+53
-44
src/hb-open-type-private.hh
src/hb-open-type-private.hh
+2
-3
src/hb-ot-layout-gpos-private.hh
src/hb-ot-layout-gpos-private.hh
+15
-11
src/hb-ot-layout-gsub-private.hh
src/hb-ot-layout-gsub-private.hh
+20
-17
src/hb-ot-layout-gsubgpos-private.hh
src/hb-ot-layout-gsubgpos-private.hh
+16
-13
未找到文件。
src/hb-open-type-private.hh
浏览文件 @
1376fb7b
...
@@ -138,15 +138,14 @@ ASSERT_STATIC (sizeof (Type) + 1 <= sizeof (_Null##Type))
...
@@ -138,15 +138,14 @@ ASSERT_STATIC (sizeof (Type) + 1 <= sizeof (_Null##Type))
context, \
context, \
(HB_DEBUG_SANITIZE ? sanitize_depth + 1 : 0)
(HB_DEBUG_SANITIZE ? sanitize_depth + 1 : 0)
struct
hb_sanitize_context_t
typedef
struct
_hb_sanitize_context_t
hb_sanitize_context_t
;
struct
_hb_sanitize_context_t
{
{
const
char
*
start
,
*
end
;
const
char
*
start
,
*
end
;
hb_bool_t
writable
;
hb_bool_t
writable
;
unsigned
int
edit_count
;
unsigned
int
edit_count
;
};
};
static
HB_GNUC_UNUSED
void
static
HB_GNUC_UNUSED
void
_hb_sanitize_init
(
hb_sanitize_context_t
*
context
,
_hb_sanitize_init
(
hb_sanitize_context_t
*
context
,
hb_blob_t
*
blob
)
hb_blob_t
*
blob
)
...
...
src/hb-ot-layout-gpos-private.hh
浏览文件 @
1376fb7b
...
@@ -566,7 +566,7 @@ struct PairPosFormat1
...
@@ -566,7 +566,7 @@ struct PairPosFormat1
return
false
;
return
false
;
unsigned
int
j
=
buffer
->
in_pos
+
1
;
unsigned
int
j
=
buffer
->
in_pos
+
1
;
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
IN_INFO
(
j
),
lookup_flag
,
NULL
))
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
IN_INFO
(
j
),
apply_context
->
lookup_flag
,
NULL
))
{
{
if
(
HB_UNLIKELY
(
j
==
end
))
if
(
HB_UNLIKELY
(
j
==
end
))
return
false
;
return
false
;
...
@@ -658,7 +658,7 @@ struct PairPosFormat2
...
@@ -658,7 +658,7 @@ struct PairPosFormat2
return
false
;
return
false
;
unsigned
int
j
=
buffer
->
in_pos
+
1
;
unsigned
int
j
=
buffer
->
in_pos
+
1
;
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
IN_INFO
(
j
),
lookup_flag
,
NULL
))
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
IN_INFO
(
j
),
apply_context
->
lookup_flag
,
NULL
))
{
{
if
(
HB_UNLIKELY
(
j
==
end
))
if
(
HB_UNLIKELY
(
j
==
end
))
return
false
;
return
false
;
...
@@ -913,7 +913,7 @@ struct CursivePosFormat1
...
@@ -913,7 +913,7 @@ struct CursivePosFormat1
gpi
->
last
=
HB_OT_LAYOUT_GPOS_NO_LAST
;
gpi
->
last
=
HB_OT_LAYOUT_GPOS_NO_LAST
;
/* We don't handle mark glyphs here. */
/* We don't handle mark glyphs here. */
if
(
property
==
HB_OT_LAYOUT_GLYPH_CLASS_MARK
)
if
(
apply_context
->
property
==
HB_OT_LAYOUT_GLYPH_CLASS_MARK
)
return
false
;
return
false
;
unsigned
int
index
=
(
this
+
coverage
)
(
IN_CURGLYPH
());
unsigned
int
index
=
(
this
+
coverage
)
(
IN_CURGLYPH
());
...
@@ -941,7 +941,7 @@ struct CursivePosFormat1
...
@@ -941,7 +941,7 @@ struct CursivePosFormat1
POSITION
(
last_pos
)
->
x_advance
=
gpi
->
anchor_x
-
entry_x
;
POSITION
(
last_pos
)
->
x_advance
=
gpi
->
anchor_x
-
entry_x
;
}
}
if
(
lookup_flag
&
LookupFlag
::
RightToLeft
)
if
(
apply_context
->
lookup_flag
&
LookupFlag
::
RightToLeft
)
{
{
POSITION
(
last_pos
)
->
cursive_chain
=
last_pos
-
buffer
->
in_pos
;
POSITION
(
last_pos
)
->
cursive_chain
=
last_pos
-
buffer
->
in_pos
;
POSITION
(
last_pos
)
->
y_offset
=
entry_y
-
gpi
->
anchor_y
;
POSITION
(
last_pos
)
->
y_offset
=
entry_y
-
gpi
->
anchor_y
;
...
@@ -1028,6 +1028,7 @@ struct MarkBasePosFormat1
...
@@ -1028,6 +1028,7 @@ struct MarkBasePosFormat1
return
false
;
return
false
;
/* now we search backwards for a non-mark glyph */
/* now we search backwards for a non-mark glyph */
unsigned
int
property
;
unsigned
int
j
=
buffer
->
in_pos
;
unsigned
int
j
=
buffer
->
in_pos
;
do
do
{
{
...
@@ -1127,6 +1128,7 @@ struct MarkLigPosFormat1
...
@@ -1127,6 +1128,7 @@ struct MarkLigPosFormat1
return
false
;
return
false
;
/* now we search backwards for a non-mark glyph */
/* now we search backwards for a non-mark glyph */
unsigned
int
property
;
unsigned
int
j
=
buffer
->
in_pos
;
unsigned
int
j
=
buffer
->
in_pos
;
do
do
{
{
...
@@ -1243,13 +1245,14 @@ struct MarkMarkPosFormat1
...
@@ -1243,13 +1245,14 @@ struct MarkMarkPosFormat1
return
false
;
return
false
;
/* now we search backwards for a suitable mark glyph until a non-mark glyph */
/* now we search backwards for a suitable mark glyph until a non-mark glyph */
unsigned
int
property
;
unsigned
int
j
=
buffer
->
in_pos
;
unsigned
int
j
=
buffer
->
in_pos
;
do
do
{
{
if
(
HB_UNLIKELY
(
!
j
))
if
(
HB_UNLIKELY
(
!
j
))
return
false
;
return
false
;
j
--
;
j
--
;
}
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
IN_INFO
(
j
),
lookup_flag
,
&
property
));
}
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
IN_INFO
(
j
),
apply_context
->
lookup_flag
,
&
property
));
if
(
!
(
property
&
HB_OT_LAYOUT_GLYPH_CLASS_MARK
))
if
(
!
(
property
&
HB_OT_LAYOUT_GLYPH_CLASS_MARK
))
return
false
;
return
false
;
...
@@ -1454,10 +1457,12 @@ struct PosLookup : Lookup
...
@@ -1454,10 +1457,12 @@ struct PosLookup : Lookup
unsigned
int
apply_depth
)
const
unsigned
int
apply_depth
)
const
{
{
unsigned
int
lookup_type
=
get_type
();
unsigned
int
lookup_type
=
get_type
();
unsigned
int
lookup_flag
=
get_flag
();
hb_apply_context_t
apply_context
[
1
];
unsigned
int
property
;
apply_context
->
nesting_level_left
=
nesting_level_left
;
apply_context
->
lookup_flag
=
get_flag
();
if
(
!
_hb_ot_layout_check_glyph_property
(
context
->
face
,
IN_CURINFO
(),
lookup_flag
,
&
property
))
if
(
!
_hb_ot_layout_check_glyph_property
(
context
->
face
,
IN_CURINFO
(),
apply_context
->
lookup_flag
,
&
apply_context
->
property
))
return
false
;
return
false
;
for
(
unsigned
int
i
=
0
;
i
<
get_subtable_count
();
i
++
)
for
(
unsigned
int
i
=
0
;
i
<
get_subtable_count
();
i
++
)
...
@@ -1562,14 +1567,13 @@ static inline bool position_lookup (APPLY_ARG_DEF, unsigned int lookup_index)
...
@@ -1562,14 +1567,13 @@ static inline bool position_lookup (APPLY_ARG_DEF, unsigned int lookup_index)
const
GPOS
&
gpos
=
*
(
context
->
face
->
ot_layout
.
gpos
);
const
GPOS
&
gpos
=
*
(
context
->
face
->
ot_layout
.
gpos
);
const
PosLookup
&
l
=
gpos
.
get_lookup
(
lookup_index
);
const
PosLookup
&
l
=
gpos
.
get_lookup
(
lookup_index
);
if
(
HB_UNLIKELY
(
nesting_level_left
==
0
))
if
(
HB_UNLIKELY
(
apply_context
->
nesting_level_left
==
0
))
return
false
;
return
false
;
nesting_level_left
--
;
if
(
HB_UNLIKELY
(
context_length
<
1
))
if
(
HB_UNLIKELY
(
context_length
<
1
))
return
false
;
return
false
;
return
l
.
apply_once
(
context
,
buffer
,
context_length
,
nesting_level_left
,
apply_depth
);
return
l
.
apply_once
(
context
,
buffer
,
context_length
,
apply_context
->
nesting_level_left
-
1
,
apply_depth
+
1
);
}
}
...
...
src/hb-ot-layout-gsub-private.hh
浏览文件 @
1376fb7b
...
@@ -49,7 +49,7 @@ struct SingleSubstFormat1
...
@@ -49,7 +49,7 @@ struct SingleSubstFormat1
/* We inherit the old glyph class to the substituted glyph */
/* We inherit the old glyph class to the substituted glyph */
if
(
_hb_ot_layout_has_new_glyph_classes
(
context
->
face
))
if
(
_hb_ot_layout_has_new_glyph_classes
(
context
->
face
))
_hb_ot_layout_set_glyph_property
(
context
->
face
,
glyph_id
,
property
);
_hb_ot_layout_set_glyph_property
(
context
->
face
,
glyph_id
,
apply_context
->
property
);
return
true
;
return
true
;
}
}
...
@@ -91,7 +91,7 @@ struct SingleSubstFormat2
...
@@ -91,7 +91,7 @@ struct SingleSubstFormat2
/* We inherit the old glyph class to the substituted glyph */
/* We inherit the old glyph class to the substituted glyph */
if
(
_hb_ot_layout_has_new_glyph_classes
(
context
->
face
))
if
(
_hb_ot_layout_has_new_glyph_classes
(
context
->
face
))
_hb_ot_layout_set_glyph_property
(
context
->
face
,
glyph_id
,
property
);
_hb_ot_layout_set_glyph_property
(
context
->
face
,
glyph_id
,
apply_context
->
property
);
return
true
;
return
true
;
}
}
...
@@ -165,6 +165,7 @@ struct Sequence
...
@@ -165,6 +165,7 @@ struct Sequence
/* This is a guess only ... */
/* This is a guess only ... */
if
(
_hb_ot_layout_has_new_glyph_classes
(
context
->
face
))
if
(
_hb_ot_layout_has_new_glyph_classes
(
context
->
face
))
{
{
unsigned
int
property
=
apply_context
->
property
;
if
(
property
==
HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE
)
if
(
property
==
HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE
)
property
=
HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH
;
property
=
HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH
;
...
@@ -295,7 +296,7 @@ struct AlternateSubstFormat1
...
@@ -295,7 +296,7 @@ struct AlternateSubstFormat1
/* We inherit the old glyph class to the substituted glyph */
/* We inherit the old glyph class to the substituted glyph */
if
(
_hb_ot_layout_has_new_glyph_classes
(
context
->
face
))
if
(
_hb_ot_layout_has_new_glyph_classes
(
context
->
face
))
_hb_ot_layout_set_glyph_property
(
context
->
face
,
glyph_id
,
property
);
_hb_ot_layout_set_glyph_property
(
context
->
face
,
glyph_id
,
apply_context
->
property
);
return
true
;
return
true
;
}
}
...
@@ -364,7 +365,8 @@ struct Ligature
...
@@ -364,7 +365,8 @@ struct Ligature
for
(
i
=
1
,
j
=
buffer
->
in_pos
+
1
;
i
<
count
;
i
++
,
j
++
)
for
(
i
=
1
,
j
=
buffer
->
in_pos
+
1
;
i
<
count
;
i
++
,
j
++
)
{
{
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
IN_INFO
(
j
),
lookup_flag
,
&
property
))
unsigned
int
property
;
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
IN_INFO
(
j
),
apply_context
->
lookup_flag
,
&
property
))
{
{
if
(
HB_UNLIKELY
(
j
+
count
-
i
==
end
))
if
(
HB_UNLIKELY
(
j
+
count
-
i
==
end
))
return
false
;
return
false
;
...
@@ -405,7 +407,7 @@ struct Ligature
...
@@ -405,7 +407,7 @@ struct Ligature
for
(
i
=
1
;
i
<
count
;
i
++
)
for
(
i
=
1
;
i
<
count
;
i
++
)
{
{
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
IN_CURINFO
(),
lookup_flag
,
NULL
))
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
IN_CURINFO
(),
apply_context
->
lookup_flag
,
NULL
))
_hb_buffer_add_output_glyph
(
buffer
,
IN_CURGLYPH
(),
i
,
lig_id
);
_hb_buffer_add_output_glyph
(
buffer
,
IN_CURGLYPH
(),
i
,
lig_id
);
(
buffer
->
in_pos
)
++
;
(
buffer
->
in_pos
)
++
;
...
@@ -472,7 +474,7 @@ struct LigatureSubstFormat1
...
@@ -472,7 +474,7 @@ struct LigatureSubstFormat1
TRACE_APPLY
();
TRACE_APPLY
();
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
=
!!
(
apply_context
->
property
&
HB_OT_LAYOUT_GLYPH_CLASS_MARK
);
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
))
...
@@ -757,17 +759,19 @@ struct SubstLookup : Lookup
...
@@ -757,17 +759,19 @@ struct SubstLookup : Lookup
}
}
inline
bool
apply_once
(
hb_ot_layout_context_t
*
context
,
inline
bool
apply_once
(
hb_ot_layout_context_t
*
context
,
hb_buffer_t
*
buffer
,
hb_buffer_t
*
buffer
,
unsigned
int
context_length
,
unsigned
int
context_length
,
unsigned
int
nesting_level_left
,
unsigned
int
nesting_level_left
,
unsigned
int
apply_depth
)
const
unsigned
int
apply_depth
)
const
{
{
unsigned
int
lookup_type
=
get_type
();
unsigned
int
lookup_type
=
get_type
();
unsigned
int
lookup_flag
=
get_flag
();
hb_apply_context_t
apply_context
[
1
];
unsigned
int
property
;
if
(
!
_hb_ot_layout_check_glyph_property
(
context
->
face
,
IN_CURINFO
(),
lookup_flag
,
&
property
))
apply_context
->
nesting_level_left
=
nesting_level_left
;
apply_context
->
lookup_flag
=
get_flag
();
if
(
!
_hb_ot_layout_check_glyph_property
(
context
->
face
,
IN_CURINFO
(),
apply_context
->
lookup_flag
,
&
apply_context
->
property
))
return
false
;
return
false
;
if
(
HB_UNLIKELY
(
lookup_type
==
SubstLookupSubTable
::
Extension
))
if
(
HB_UNLIKELY
(
lookup_type
==
SubstLookupSubTable
::
Extension
))
...
@@ -906,14 +910,13 @@ static inline bool substitute_lookup (APPLY_ARG_DEF, unsigned int lookup_index)
...
@@ -906,14 +910,13 @@ static inline bool substitute_lookup (APPLY_ARG_DEF, unsigned int lookup_index)
const
GSUB
&
gsub
=
*
(
context
->
face
->
ot_layout
.
gsub
);
const
GSUB
&
gsub
=
*
(
context
->
face
->
ot_layout
.
gsub
);
const
SubstLookup
&
l
=
gsub
.
get_lookup
(
lookup_index
);
const
SubstLookup
&
l
=
gsub
.
get_lookup
(
lookup_index
);
if
(
HB_UNLIKELY
(
nesting_level_left
==
0
))
if
(
HB_UNLIKELY
(
apply_context
->
nesting_level_left
==
0
))
return
false
;
return
false
;
nesting_level_left
--
;
if
(
HB_UNLIKELY
(
context_length
<
1
))
if
(
HB_UNLIKELY
(
context_length
<
1
))
return
false
;
return
false
;
return
l
.
apply_once
(
context
,
buffer
,
context_length
,
nesting_level_left
,
apply_depth
);
return
l
.
apply_once
(
context
,
buffer
,
context_length
,
apply_context
->
nesting_level_left
-
1
,
apply_depth
+
1
);
}
}
...
...
src/hb-ot-layout-gsubgpos-private.hh
浏览文件 @
1376fb7b
...
@@ -43,22 +43,25 @@
...
@@ -43,22 +43,25 @@
#define APPLY_ARG_DEF \
#define APPLY_ARG_DEF \
hb_apply_context_t *apply_context, \
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 apply_depth HB_GNUC_UNUSED
unsigned int lookup_flag HB_GNUC_UNUSED, \
unsigned int property HB_GNUC_UNUSED,
/* propety of first glyph */
\
unsigned int apply_depth HB_GNUC_UNUSED
#define APPLY_ARG \
#define APPLY_ARG \
apply_context, \
context, \
context, \
buffer, \
buffer, \
context_length, \
context_length, \
nesting_level_left, \
lookup_flag, \
property, \
(HB_DEBUG_APPLY ? apply_depth + 1 : 0)
(HB_DEBUG_APPLY ? apply_depth + 1 : 0)
struct
hb_apply_context_t
{
unsigned
int
nesting_level_left
;
unsigned
int
lookup_flag
;
unsigned
int
property
;
/* propety of first glyph (TODO remove) */
};
typedef
bool
(
*
match_func_t
)
(
hb_codepoint_t
glyph_id
,
const
USHORT
&
value
,
const
char
*
data
);
typedef
bool
(
*
match_func_t
)
(
hb_codepoint_t
glyph_id
,
const
USHORT
&
value
,
const
char
*
data
);
typedef
bool
(
*
apply_lookup_func_t
)
(
APPLY_ARG_DEF
,
unsigned
int
lookup_index
);
typedef
bool
(
*
apply_lookup_func_t
)
(
APPLY_ARG_DEF
,
unsigned
int
lookup_index
);
...
@@ -102,7 +105,7 @@ static inline bool match_input (APPLY_ARG_DEF,
...
@@ -102,7 +105,7 @@ static inline bool match_input (APPLY_ARG_DEF,
for
(
i
=
1
,
j
=
buffer
->
in_pos
+
1
;
i
<
count
;
i
++
,
j
++
)
for
(
i
=
1
,
j
=
buffer
->
in_pos
+
1
;
i
<
count
;
i
++
,
j
++
)
{
{
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
IN_INFO
(
j
),
lookup_flag
,
NULL
))
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
IN_INFO
(
j
),
apply_context
->
lookup_flag
,
NULL
))
{
{
if
(
HB_UNLIKELY
(
j
+
count
-
i
==
end
))
if
(
HB_UNLIKELY
(
j
+
count
-
i
==
end
))
return
false
;
return
false
;
...
@@ -129,7 +132,7 @@ static inline bool match_backtrack (APPLY_ARG_DEF,
...
@@ -129,7 +132,7 @@ static inline bool match_backtrack (APPLY_ARG_DEF,
for
(
unsigned
int
i
=
0
,
j
=
buffer
->
out_pos
-
1
;
i
<
count
;
i
++
,
j
--
)
for
(
unsigned
int
i
=
0
,
j
=
buffer
->
out_pos
-
1
;
i
<
count
;
i
++
,
j
--
)
{
{
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
OUT_INFO
(
j
),
lookup_flag
,
NULL
))
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
OUT_INFO
(
j
),
apply_context
->
lookup_flag
,
NULL
))
{
{
if
(
HB_UNLIKELY
(
j
+
1
==
count
-
i
))
if
(
HB_UNLIKELY
(
j
+
1
==
count
-
i
))
return
false
;
return
false
;
...
@@ -157,7 +160,7 @@ static inline bool match_lookahead (APPLY_ARG_DEF,
...
@@ -157,7 +160,7 @@ static inline bool match_lookahead (APPLY_ARG_DEF,
for
(
i
=
0
,
j
=
buffer
->
in_pos
+
offset
;
i
<
count
;
i
++
,
j
++
)
for
(
i
=
0
,
j
=
buffer
->
in_pos
+
offset
;
i
<
count
;
i
++
,
j
++
)
{
{
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
OUT_INFO
(
j
),
lookup_flag
,
NULL
))
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
OUT_INFO
(
j
),
apply_context
->
lookup_flag
,
NULL
))
{
{
if
(
HB_UNLIKELY
(
j
+
count
-
i
==
end
))
if
(
HB_UNLIKELY
(
j
+
count
-
i
==
end
))
return
false
;
return
false
;
...
@@ -207,7 +210,7 @@ static inline bool apply_lookup (APPLY_ARG_DEF,
...
@@ -207,7 +210,7 @@ static inline bool apply_lookup (APPLY_ARG_DEF,
*/
*/
for
(
unsigned
int
i
=
0
;
i
<
count
;
/* NOP */
)
for
(
unsigned
int
i
=
0
;
i
<
count
;
/* NOP */
)
{
{
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
IN_CURINFO
(),
lookup_flag
,
NULL
))
while
(
_hb_ot_layout_skip_mark
(
context
->
face
,
IN_CURINFO
(),
apply_context
->
lookup_flag
,
NULL
))
{
{
if
(
HB_UNLIKELY
(
buffer
->
in_pos
==
end
))
if
(
HB_UNLIKELY
(
buffer
->
in_pos
==
end
))
return
true
;
return
true
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录