Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
c929ccfc
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看板
提交
c929ccfc
编写于
10月 29, 2018
作者:
E
Ebrahim Byagowi
提交者:
Behdad Esfahbod
10月 28, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[ot-color/png] Consider strike ppem on scaling
上级
a8c9facf
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
26 addition
and
10 deletion
+26
-10
src/hb-ot-color-cbdt-table.hh
src/hb-ot-color-cbdt-table.hh
+3
-2
src/hb-ot-color-sbix-table.hh
src/hb-ot-color-sbix-table.hh
+19
-4
src/hb-ot-color.cc
src/hb-ot-color.cc
+1
-1
src/hb-ot-font.cc
src/hb-ot-font.cc
+1
-1
test/api/test-ot-color.c
test/api/test-ot-color.c
+2
-2
未找到文件。
src/hb-ot-color-cbdt-table.hh
浏览文件 @
c929ccfc
...
...
@@ -402,9 +402,10 @@ struct CBDT
hb_blob_destroy
(
this
->
cbdt_blob
);
}
inline
bool
get_extents
(
hb_codepoint_t
glyph
,
hb_glyph_extents_t
*
extents
)
const
inline
bool
get_extents
(
hb_font_t
*
font
,
hb_codepoint_t
glyph
,
hb_glyph_extents_t
*
extents
)
const
{
unsigned
int
x_ppem
=
upem
,
y_ppem
=
upem
;
/* TODO Use font ppem if available. */
unsigned
int
x_ppem
=
font
->
x_ppem
,
y_ppem
=
font
->
y_ppem
;
if
(
!
cblc
)
return
false
;
// Not a color bitmap font.
...
...
src/hb-ot-color-sbix-table.hh
浏览文件 @
c929ccfc
...
...
@@ -74,7 +74,8 @@ struct SBIXStrike
hb_tag_t
file_type
,
int
*
x_offset
,
int
*
y_offset
,
unsigned
int
num_glyphs
)
const
unsigned
int
num_glyphs
,
unsigned
int
*
strike_ppem
)
const
{
if
(
unlikely
(
!
ppem
))
return
hb_blob_get_empty
();
/* To get Null() object out of the way. */
...
...
@@ -109,6 +110,7 @@ struct SBIXStrike
if
(
unlikely
(
file_type
!=
glyph
->
graphicType
))
return
hb_blob_get_empty
();
if
(
strike_ppem
)
*
strike_ppem
=
ppem
;
if
(
x_offset
)
*
x_offset
=
glyph
->
xOffset
;
if
(
y_offset
)
*
y_offset
=
glyph
->
yOffset
;
return
hb_blob_create_sub_blob
(
sbix_blob
,
glyph_offset
,
glyph_length
);
...
...
@@ -167,12 +169,13 @@ struct sbix
inline
hb_blob_t
*
reference_png
(
hb_font_t
*
font
,
hb_codepoint_t
glyph_id
,
int
*
x_offset
,
int
*
y_offset
)
const
int
*
y_offset
,
unsigned
int
*
available_ppem
)
const
{
return
get_strike
(
font
).
get_glyph_blob
(
glyph_id
,
sbix_blob
,
HB_TAG
(
'p'
,
'n'
,
'g'
,
' '
),
x_offset
,
y_offset
,
num_glyphs
);
num_glyphs
,
available_ppem
);
}
private:
...
...
@@ -236,7 +239,8 @@ struct sbix
return
false
;
int
x_offset
=
0
,
y_offset
=
0
;
hb_blob_t
*
blob
=
reference_png
(
font
,
glyph
,
&
x_offset
,
&
y_offset
);
unsigned
int
strike_ppem
=
0
;
hb_blob_t
*
blob
=
reference_png
(
font
,
glyph
,
&
x_offset
,
&
y_offset
,
&
strike_ppem
);
if
(
unlikely
(
blob
->
length
<
sizeof
(
PNGHeader
)))
return
false
;
...
...
@@ -247,6 +251,17 @@ struct sbix
extents
->
y_bearing
=
y_offset
;
extents
->
width
=
png
.
IHDR
.
width
;
extents
->
height
=
png
.
IHDR
.
height
;
/* Convert to the font units. */
if
(
strike_ppem
)
{
unsigned
int
upem
=
font
->
face
->
upem
;
extents
->
x_bearing
*=
upem
/
(
float
)
strike_ppem
;
extents
->
y_bearing
*=
upem
/
(
float
)
strike_ppem
;
extents
->
width
*=
upem
/
(
float
)
strike_ppem
;
extents
->
height
*=
upem
/
(
float
)
strike_ppem
;
}
hb_blob_destroy
(
blob
);
return
true
;
...
...
src/hb-ot-color.cc
浏览文件 @
c929ccfc
...
...
@@ -318,7 +318,7 @@ hb_ot_color_glyph_reference_png (hb_font_t *font, hb_codepoint_t glyph)
hb_blob_t
*
blob
=
hb_blob_get_empty
();
if
(
_get_sbix
(
font
->
face
).
has_data
())
blob
=
_get_sbix
(
font
->
face
).
reference_png
(
font
,
glyph
,
nullptr
,
nullptr
);
blob
=
_get_sbix
(
font
->
face
).
reference_png
(
font
,
glyph
,
nullptr
,
nullptr
,
nullptr
);
if
(
!
blob
->
length
&&
_get_cbdt
(
font
->
face
).
has_data
())
blob
=
_get_cbdt
(
font
->
face
).
reference_png
(
glyph
,
font
->
x_ppem
,
font
->
y_ppem
);
...
...
src/hb-ot-font.cc
浏览文件 @
c929ccfc
...
...
@@ -187,7 +187,7 @@ hb_ot_get_glyph_extents (hb_font_t *font,
if
(
!
ret
)
ret
=
ot_face
->
glyf
->
get_extents
(
glyph
,
extents
);
if
(
!
ret
)
ret
=
ot_face
->
CBDT
->
get_extents
(
glyph
,
extents
);
ret
=
ot_face
->
CBDT
->
get_extents
(
font
,
glyph
,
extents
);
// TODO Hook up side-bearings variations.
extents
->
x_bearing
=
font
->
em_scale_x
(
extents
->
x_bearing
);
extents
->
y_bearing
=
font
->
em_scale_y
(
extents
->
y_bearing
);
...
...
test/api/test-ot-color.c
浏览文件 @
c929ccfc
...
...
@@ -427,8 +427,8 @@ test_hb_ot_color_png (void)
hb_font_get_glyph_extents
(
sbix_font
,
1
,
&
extents
);
g_assert_cmpint
(
extents
.
x_bearing
,
==
,
0
);
g_assert_cmpint
(
extents
.
y_bearing
,
==
,
0
);
g_assert_cmpint
(
extents
.
width
,
==
,
3
00
);
g_assert_cmpint
(
extents
.
height
,
==
,
3
00
);
g_assert_cmpint
(
extents
.
width
,
==
,
8
00
);
g_assert_cmpint
(
extents
.
height
,
==
,
8
00
);
hb_blob_destroy
(
blob
);
hb_font_destroy
(
sbix_font
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录