Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
1ab51480
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,发现更多精彩内容 >>
未验证
提交
1ab51480
编写于
3月 07, 2018
作者:
G
Garret Rieger
提交者:
GitHub
3月 07, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #867 from googlefonts/vmtx
[subset] Add vmtx subsetting.
上级
70ad69f2
362f2824
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
108 addition
and
1 deletion
+108
-1
src/hb-ot-hmtx-table.hh
src/hb-ot-hmtx-table.hh
+1
-1
src/hb-subset.cc
src/hb-subset.cc
+6
-0
test/api/Makefile.am
test/api/Makefile.am
+2
-0
test/api/fonts/Mplus1p-Regular.660E,6975,73E0,5EA6,8F38,6E05.ttf
...i/fonts/Mplus1p-Regular.660E,6975,73E0,5EA6,8F38,6E05.ttf
+0
-0
test/api/fonts/Mplus1p-Regular.660E.ttf
test/api/fonts/Mplus1p-Regular.660E.ttf
+0
-0
test/api/test-subset-vmtx.c
test/api/test-subset-vmtx.c
+99
-0
未找到文件。
src/hb-ot-hmtx-table.hh
浏览文件 @
1ab51480
...
...
@@ -264,7 +264,7 @@ struct hmtxvmtx
{
advance
+=
(
font
->
num_coords
?
var_table
->
get_advance_var
(
glyph
,
font
->
coords
,
font
->
num_coords
)
:
0
);
// TODO Optimize?!
}
return
advance
;
return
advance
;
}
public:
...
...
src/hb-subset.cc
浏览文件 @
1ab51480
...
...
@@ -252,6 +252,12 @@ _subset_table (hb_subset_plan_t *plan,
case
HB_OT_TAG_hmtx
:
result
=
_subset
<
const
OT
::
hmtx
>
(
plan
);
break
;
case
HB_OT_TAG_vhea
:
DEBUG_MSG
(
SUBSET
,
nullptr
,
"skip vhea handled by vmtx"
);
return
true
;
case
HB_OT_TAG_vmtx
:
result
=
_subset
<
const
OT
::
vmtx
>
(
plan
);
break
;
case
HB_OT_TAG_maxp
:
result
=
_subset
<
const
OT
::
maxp
>
(
plan
);
break
;
...
...
test/api/Makefile.am
浏览文件 @
1ab51480
...
...
@@ -36,6 +36,7 @@ TEST_PROGS = \
test-subset-hdmx
\
test-subset-hmtx
\
test-subset-os2
\
test-subset-vmtx
\
test-unicode
\
test-version
\
$(NULL)
...
...
@@ -46,6 +47,7 @@ test_subset_glyf_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
test_subset_hdmx_LDADD
=
$(LDADD)
$(top_builddir)
/src/libharfbuzz-subset.la
test_subset_hmtx_LDADD
=
$(LDADD)
$(top_builddir)
/src/libharfbuzz-subset.la
test_subset_os2_LDADD
=
$(LDADD)
$(top_builddir)
/src/libharfbuzz-subset.la
test_subset_vmtx_LDADD
=
$(LDADD)
$(top_builddir)
/src/libharfbuzz-subset.la
test_unicode_CPPFLAGS
=
\
$(AM_CPPFLAGS)
\
...
...
test/api/fonts/Mplus1p-Regular.660E,6975,73E0,5EA6,8F38,6E05.ttf
0 → 100644
浏览文件 @
1ab51480
文件已添加
test/api/fonts/Mplus1p-Regular.660E.ttf
0 → 100644
浏览文件 @
1ab51480
文件已添加
test/api/test-subset-vmtx.c
0 → 100644
浏览文件 @
1ab51480
/*
* Copyright © 2018 Google, Inc.
*
* This is part of HarfBuzz, a text shaping library.
*
* Permission is hereby granted, without written agreement and without
* license or royalty fees, to use, copy, modify, and distribute this
* software and its documentation for any purpose, provided that the
* above copyright notice and the following two paragraphs appear in
* all copies of this software.
*
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* Google Author(s): Garret Rieger
*/
#include <stdbool.h>
#include "hb-test.h"
#include "hb-subset-test.h"
/* Unit tests for hmtx subsetting */
static
void
check_num_vmetrics
(
hb_face_t
*
face
,
uint16_t
expected_num_vmetrics
)
{
hb_blob_t
*
vhea_blob
=
hb_face_reference_table
(
face
,
HB_TAG
(
'v'
,
'h'
,
'e'
,
'a'
));
hb_blob_t
*
vmtx_blob
=
hb_face_reference_table
(
face
,
HB_TAG
(
'v'
,
'm'
,
't'
,
'x'
));
unsigned
int
vhea_len
;
uint8_t
*
raw_vhea
=
(
uint8_t
*
)
hb_blob_get_data
(
vhea_blob
,
&
vhea_len
);
uint16_t
num_vmetrics
=
(
raw_vhea
[
vhea_len
-
2
]
<<
8
)
+
raw_vhea
[
vhea_len
-
1
];
g_assert_cmpuint
(
expected_num_vmetrics
,
==
,
num_vmetrics
);
hb_blob_destroy
(
vhea_blob
);
hb_blob_destroy
(
vmtx_blob
);
}
static
void
test_subset_vmtx_simple_subset
(
void
)
{
hb_face_t
*
face_full
=
hb_subset_test_open_font
(
"fonts/Mplus1p-Regular.660E,6975,73E0,5EA6,8F38,6E05.ttf"
);
hb_face_t
*
face_subset
=
hb_subset_test_open_font
(
"fonts/Mplus1p-Regular.660E.ttf"
);
hb_set_t
*
codepoints
=
hb_set_create
();
hb_set_add
(
codepoints
,
0x660E
);
hb_face_t
*
face_full_subset
=
hb_subset_test_create_subset
(
face_full
,
hb_subset_test_create_input
(
codepoints
));
hb_set_destroy
(
codepoints
);
check_num_vmetrics
(
face_full_subset
,
1
);
/* nothing has same width */
hb_subset_test_check
(
face_subset
,
face_full_subset
,
HB_TAG
(
'v'
,
'm'
,
't'
,
'x'
));
hb_face_destroy
(
face_full_subset
);
hb_face_destroy
(
face_full
);
hb_face_destroy
(
face_subset
);
}
static
void
test_subset_vmtx_noop
(
void
)
{
hb_face_t
*
face_full
=
hb_subset_test_open_font
(
"fonts/Mplus1p-Regular.660E,6975,73E0,5EA6,8F38,6E05.ttf"
);
hb_set_t
*
codepoints
=
hb_set_create
();
hb_set_add
(
codepoints
,
0x660E
);
hb_set_add
(
codepoints
,
0x6975
);
hb_set_add
(
codepoints
,
0x73E0
);
hb_set_add
(
codepoints
,
0x5EA6
);
hb_set_add
(
codepoints
,
0x8F38
);
hb_set_add
(
codepoints
,
0x6E05
);
hb_face_t
*
face_full_subset
=
hb_subset_test_create_subset
(
face_full
,
hb_subset_test_create_input
(
codepoints
));
hb_set_destroy
(
codepoints
);
check_num_vmetrics
(
face_full_subset
,
1
);
/* all have the same width */
hb_subset_test_check
(
face_full
,
face_full_subset
,
HB_TAG
(
'v'
,
'm'
,
't'
,
'x'
));
hb_face_destroy
(
face_full_subset
);
hb_face_destroy
(
face_full
);
}
int
main
(
int
argc
,
char
**
argv
)
{
hb_test_init
(
&
argc
,
&
argv
);
hb_test_add
(
test_subset_vmtx_simple_subset
);
hb_test_add
(
test_subset_vmtx_noop
);
return
hb_test_run
();
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录