Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
38a7a8a8
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看板
提交
38a7a8a8
编写于
10月 10, 2018
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Allow HB_OPTIONS=aat to prefer AAT tables over OT
Fixes
https://github.com/harfbuzz/harfbuzz/issues/322
上级
44f09afd
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
41 addition
and
13 deletion
+41
-13
src/hb-common.cc
src/hb-common.cc
+21
-2
src/hb-debug.hh
src/hb-debug.hh
+4
-3
src/hb-ot-shape.cc
src/hb-ot-shape.cc
+16
-8
未找到文件。
src/hb-common.cc
浏览文件 @
38a7a8a8
...
@@ -47,8 +47,27 @@ _hb_options_init (void)
...
@@ -47,8 +47,27 @@ _hb_options_init (void)
u
.
i
=
0
;
u
.
i
=
0
;
u
.
opts
.
initialized
=
1
;
u
.
opts
.
initialized
=
1
;
char
*
c
=
getenv
(
"HB_OPTIONS"
);
const
char
*
c
=
getenv
(
"HB_OPTIONS"
);
u
.
opts
.
uniscribe_bug_compatible
=
c
&&
strstr
(
c
,
"uniscribe-bug-compatible"
);
if
(
c
)
{
while
(
*
c
)
{
const
char
*
p
=
strchr
(
c
,
':'
);
if
(
!
p
)
p
=
c
+
strlen
(
c
);
#define OPTION(name, symbol) \
if (0 == strncmp (c, name, p - c)) u.opts.symbol = true;
OPTION
(
"uniscribe-bug-compatible"
,
uniscribe_bug_compatible
);
OPTION
(
"aat"
,
aat
);
#undef OPTION
c
=
*
p
?
p
+
1
:
p
;
}
}
/* This is idempotent and threadsafe. */
/* This is idempotent and threadsafe. */
_hb_options
.
set_relaxed
(
u
.
i
);
_hb_options
.
set_relaxed
(
u
.
i
);
...
...
src/hb-debug.hh
浏览文件 @
38a7a8a8
...
@@ -43,9 +43,10 @@
...
@@ -43,9 +43,10 @@
struct
hb_options_t
struct
hb_options_t
{
{
unsigned
int
unused
:
1
;
/* In-case sign bit is here. */
bool
unused
:
1
;
/* In-case sign bit is here. */
unsigned
int
initialized
:
1
;
bool
initialized
:
1
;
unsigned
int
uniscribe_bug_compatible
:
1
;
bool
uniscribe_bug_compatible
:
1
;
bool
aat
:
1
;
};
};
union
hb_options_union_t
{
union
hb_options_union_t
{
...
...
src/hb-ot-shape.cc
浏览文件 @
38a7a8a8
...
@@ -42,6 +42,17 @@
...
@@ -42,6 +42,17 @@
#include "hb-aat-layout.hh"
#include "hb-aat-layout.hh"
static
bool
_hb_apply_morx
(
hb_face_t
*
face
)
{
if
(
hb_options
().
aat
&&
hb_aat_layout_has_substitution
(
face
))
return
true
;
return
!
hb_ot_layout_has_substitution
(
face
)
&&
hb_aat_layout_has_substitution
(
face
);
}
void
void
hb_ot_shape_planner_t
::
compile
(
hb_ot_shape_plan_t
&
plan
,
hb_ot_shape_planner_t
::
compile
(
hb_ot_shape_plan_t
&
plan
,
const
int
*
coords
,
const
int
*
coords
,
...
@@ -76,17 +87,15 @@ hb_ot_shape_planner_t::compile (hb_ot_shape_plan_t &plan,
...
@@ -76,17 +87,15 @@ hb_ot_shape_planner_t::compile (hb_ot_shape_plan_t &plan,
* Decide who does substitutions. GSUB, morx, or fallback.
* Decide who does substitutions. GSUB, morx, or fallback.
*/
*/
if
(
!
hb_ot_layout_has_substitution
(
face
))
plan
.
apply_morx
=
_hb_apply_morx
(
face
);
{
/* No GSUB. */
if
(
hb_aat_layout_has_substitution
(
face
))
plan
.
apply_morx
=
true
;
}
/*
/*
* Decide who does positioning. GPOS, kerx, kern, or fallback.
* Decide who does positioning. GPOS, kerx, kern, or fallback.
*/
*/
if
(
!
disable_gpos
&&
hb_ot_layout_has_positioning
(
face
))
if
(
hb_options
().
aat
&&
hb_aat_layout_has_positioning
(
face
))
plan
.
apply_kerx
=
true
;
else
if
(
!
disable_gpos
&&
hb_ot_layout_has_positioning
(
face
))
plan
.
apply_gpos
=
true
;
plan
.
apply_gpos
=
true
;
else
if
(
hb_aat_layout_has_positioning
(
face
))
else
if
(
hb_aat_layout_has_positioning
(
face
))
plan
.
apply_kerx
=
true
;
plan
.
apply_kerx
=
true
;
...
@@ -263,8 +272,7 @@ _hb_ot_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan,
...
@@ -263,8 +272,7 @@ _hb_ot_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan,
/* Ugly that we have to do this here...
/* Ugly that we have to do this here...
* If we are going to apply morx, choose default shaper. */
* If we are going to apply morx, choose default shaper. */
if
(
!
hb_ot_layout_has_substitution
(
planner
.
face
)
&&
if
(
_hb_apply_morx
(
planner
.
face
))
hb_aat_layout_has_substitution
(
planner
.
face
))
planner
.
shaper
=
&
_hb_ot_complex_shaper_default
;
planner
.
shaper
=
&
_hb_ot_complex_shaper_default
;
else
else
planner
.
shaper
=
hb_ot_shape_complex_categorize
(
&
planner
);
planner
.
shaper
=
hb_ot_shape_complex_categorize
(
&
planner
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录