Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
45fd9424
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
45fd9424
编写于
5月 02, 2013
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[OTLayout] Add hb_ot_layout_lookup_accelerator_t
上级
76ea5636
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
41 addition
and
23 deletion
+41
-23
src/hb-ot-layout-private.hh
src/hb-ot-layout-private.hh
+19
-2
src/hb-ot-layout.cc
src/hb-ot-layout.cc
+16
-17
src/hb-ot-shape-complex-arabic-fallback.hh
src/hb-ot-shape-complex-arabic-fallback.hh
+6
-4
未找到文件。
src/hb-ot-layout-private.hh
浏览文件 @
45fd9424
...
...
@@ -244,6 +244,23 @@ namespace OT {
struct
GPOS
;
}
struct
hb_ot_layout_lookup_accelerator_t
{
template
<
typename
TLookup
>
inline
void
init
(
const
TLookup
&
lookup
)
{
digest
.
init
();
lookup
.
add_coverage
(
&
digest
);
}
template
<
typename
TLookup
>
inline
void
fini
(
const
TLookup
&
lookup
)
{
}
hb_set_digest_t
digest
;
};
struct
hb_ot_layout_t
{
hb_blob_t
*
gdef_blob
;
...
...
@@ -257,8 +274,8 @@ struct hb_ot_layout_t
unsigned
int
gsub_lookup_count
;
unsigned
int
gpos_lookup_count
;
hb_
set_digest_t
*
gsub_digest
s
;
hb_
set_digest_t
*
gpos_digest
s
;
hb_
ot_layout_lookup_accelerator_t
*
gsub_accel
s
;
hb_
ot_layout_lookup_accelerator_t
*
gpos_accel
s
;
};
...
...
src/hb-ot-layout.cc
浏览文件 @
45fd9424
...
...
@@ -59,26 +59,20 @@ _hb_ot_layout_create (hb_face_t *face)
layout
->
gsub_lookup_count
=
layout
->
gsub
->
get_lookup_count
();
layout
->
gpos_lookup_count
=
layout
->
gpos
->
get_lookup_count
();
layout
->
gsub_
digests
=
(
hb_set_digest_t
*
)
calloc
(
layout
->
gsub
->
get_lookup_count
(),
sizeof
(
hb_set_digest
_t
));
layout
->
gpos_
digests
=
(
hb_set_digest_t
*
)
calloc
(
layout
->
gpos
->
get_lookup_count
(),
sizeof
(
hb_set_digest
_t
));
layout
->
gsub_
accels
=
(
hb_ot_layout_lookup_accelerator_t
*
)
calloc
(
layout
->
gsub
->
get_lookup_count
(),
sizeof
(
hb_ot_layout_lookup_accelerator
_t
));
layout
->
gpos_
accels
=
(
hb_ot_layout_lookup_accelerator_t
*
)
calloc
(
layout
->
gpos
->
get_lookup_count
(),
sizeof
(
hb_ot_layout_lookup_accelerator
_t
));
if
(
unlikely
((
layout
->
gsub_lookup_count
&&
!
layout
->
gsub_
digest
s
)
||
(
layout
->
gpos_lookup_count
&&
!
layout
->
gpos_
digest
s
)))
if
(
unlikely
((
layout
->
gsub_lookup_count
&&
!
layout
->
gsub_
accel
s
)
||
(
layout
->
gpos_lookup_count
&&
!
layout
->
gpos_
accel
s
)))
{
_hb_ot_layout_destroy
(
layout
);
return
NULL
;
}
for
(
unsigned
int
i
=
0
;
i
<
layout
->
gsub_lookup_count
;
i
++
)
{
layout
->
gsub_digests
[
i
].
init
();
layout
->
gsub
->
get_lookup
(
i
).
add_coverage
(
&
layout
->
gsub_digests
[
i
]);
}
layout
->
gsub_accels
[
i
].
init
(
layout
->
gsub
->
get_lookup
(
i
));
for
(
unsigned
int
i
=
0
;
i
<
layout
->
gpos_lookup_count
;
i
++
)
{
layout
->
gpos_digests
[
i
].
init
();
layout
->
gpos
->
get_lookup
(
i
).
add_coverage
(
&
layout
->
gpos_digests
[
i
]);
}
layout
->
gpos_accels
[
i
].
init
(
layout
->
gpos
->
get_lookup
(
i
));
return
layout
;
}
...
...
@@ -90,8 +84,13 @@ _hb_ot_layout_destroy (hb_ot_layout_t *layout)
hb_blob_destroy
(
layout
->
gsub_blob
);
hb_blob_destroy
(
layout
->
gpos_blob
);
free
(
layout
->
gsub_digests
);
free
(
layout
->
gpos_digests
);
for
(
unsigned
int
i
=
0
;
i
<
layout
->
gsub_lookup_count
;
i
++
)
layout
->
gsub_accels
[
i
].
fini
(
layout
->
gsub
->
get_lookup
(
i
));
for
(
unsigned
int
i
=
0
;
i
<
layout
->
gpos_lookup_count
;
i
++
)
layout
->
gpos_accels
[
i
].
fini
(
layout
->
gpos
->
get_lookup
(
i
));
free
(
layout
->
gsub_accels
);
free
(
layout
->
gpos_accels
);
free
(
layout
);
}
...
...
@@ -659,7 +658,7 @@ hb_ot_layout_lookup_would_substitute_fast (hb_face_t *face,
const
OT
::
SubstLookup
&
l
=
hb_ot_layout_from_face
(
face
)
->
gsub
->
get_lookup
(
lookup_index
);
return
l
.
would_apply
(
&
c
,
&
hb_ot_layout_from_face
(
face
)
->
gsub_
digests
[
lookup_index
]
);
return
l
.
would_apply
(
&
c
,
&
hb_ot_layout_from_face
(
face
)
->
gsub_
accels
[
lookup_index
].
digest
);
}
void
...
...
@@ -681,7 +680,7 @@ hb_ot_layout_substitute_lookup (hb_font_t *font,
const
OT
::
SubstLookup
&
l
=
hb_ot_layout_from_face
(
font
->
face
)
->
gsub
->
get_lookup
(
lookup_index
);
return
l
.
apply_string
(
&
c
,
&
hb_ot_layout_from_face
(
font
->
face
)
->
gsub_
digests
[
lookup_index
]
);
return
l
.
apply_string
(
&
c
,
&
hb_ot_layout_from_face
(
font
->
face
)
->
gsub_
accels
[
lookup_index
].
digest
);
}
void
...
...
@@ -731,7 +730,7 @@ hb_ot_layout_position_lookup (hb_font_t *font,
const
OT
::
PosLookup
&
l
=
hb_ot_layout_from_face
(
font
->
face
)
->
gpos
->
get_lookup
(
lookup_index
);
return
l
.
apply_string
(
&
c
,
&
hb_ot_layout_from_face
(
font
->
face
)
->
gpos_
digests
[
lookup_index
]
);
return
l
.
apply_string
(
&
c
,
&
hb_ot_layout_from_face
(
font
->
face
)
->
gpos_
accels
[
lookup_index
].
digest
);
}
void
...
...
src/hb-ot-shape-complex-arabic-fallback.hh
浏览文件 @
45fd9424
...
...
@@ -199,7 +199,7 @@ struct arabic_fallback_plan_t
hb_mask_t
mask_array
[
ARABIC_NUM_FALLBACK_FEATURES
];
OT
::
SubstLookup
*
lookup_array
[
ARABIC_NUM_FALLBACK_FEATURES
];
hb_
set_digest_t
digest
_array
[
ARABIC_NUM_FALLBACK_FEATURES
];
hb_
ot_layout_lookup_accelerator_t
accel
_array
[
ARABIC_NUM_FALLBACK_FEATURES
];
};
static
const
arabic_fallback_plan_t
arabic_fallback_plan_nil
=
{};
...
...
@@ -214,12 +214,11 @@ arabic_fallback_plan_create (const hb_ot_shape_plan_t *plan,
for
(
unsigned
int
i
=
0
;
i
<
ARABIC_NUM_FALLBACK_FEATURES
;
i
++
)
{
fallback_plan
->
digest_array
[
i
].
init
();
fallback_plan
->
mask_array
[
i
]
=
plan
->
map
.
get_1_mask
(
arabic_fallback_features
[
i
]);
if
(
fallback_plan
->
mask_array
[
i
])
{
fallback_plan
->
lookup_array
[
i
]
=
arabic_fallback_synthesize_lookup
(
plan
,
font
,
i
);
if
(
fallback_plan
->
lookup_array
[
i
])
fallback_plan
->
lookup_array
[
i
]
->
add_coverage
(
&
fallback_plan
->
digest
_array
[
i
]);
fallback_plan
->
accel_array
[
i
].
init
(
*
fallback_plan
->
lookup
_array
[
i
]);
}
}
...
...
@@ -234,7 +233,10 @@ arabic_fallback_plan_destroy (arabic_fallback_plan_t *fallback_plan)
for
(
unsigned
int
i
=
0
;
i
<
ARABIC_NUM_FALLBACK_FEATURES
;
i
++
)
if
(
fallback_plan
->
lookup_array
[
i
])
{
fallback_plan
->
accel_array
[
i
].
fini
(
fallback_plan
->
lookup_array
[
i
]);
free
(
fallback_plan
->
lookup_array
[
i
]);
}
free
(
fallback_plan
);
}
...
...
@@ -247,7 +249,7 @@ arabic_fallback_plan_shape (arabic_fallback_plan_t *fallback_plan,
for
(
unsigned
int
i
=
0
;
i
<
ARABIC_NUM_FALLBACK_FEATURES
;
i
++
)
if
(
fallback_plan
->
lookup_array
[
i
])
{
OT
::
hb_apply_context_t
c
(
0
,
font
,
buffer
,
fallback_plan
->
mask_array
[
i
],
true
/*auto_zwj*/
);
fallback_plan
->
lookup_array
[
i
]
->
apply_string
(
&
c
,
&
fallback_plan
->
digest_array
[
i
]
);
fallback_plan
->
lookup_array
[
i
]
->
apply_string
(
&
c
,
&
fallback_plan
->
accel_array
[
i
].
digest
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录