Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
a2965f2e
T
Third Party Harfbuzz
项目概览
OpenHarmony
/
Third Party Harfbuzz
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
a2965f2e
编写于
1月 31, 2018
作者:
G
Garret Rieger
提交者:
Rod Sheeter
2月 04, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add a basic implementation of hb-subset to enable compilation of test-subset.
上级
38af23b8
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
156 addition
and
8 deletion
+156
-8
src/hb-subset.cc
src/hb-subset.cc
+146
-0
src/hb-subset.h
src/hb-subset.h
+3
-2
test/api/Makefile.am
test/api/Makefile.am
+1
-0
test/api/test-subset.c
test/api/test-subset.c
+6
-6
未找到文件。
src/hb-subset.cc
浏览文件 @
a2965f2e
/*
* Copyright © 2009 Red Hat, Inc.
* Copyright © 2012 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, Rod Sheeter
*/
#include "hb-private.hh"
#include "hb-object-private.hh"
struct
hb_subset_profile_t
{
hb_object_header_t
header
;
ASSERT_POD
();
};
struct
hb_subset_input_t
{
hb_object_header_t
header
;
ASSERT_POD
();
};
struct
hb_subset_face_t
{
hb_object_header_t
header
;
ASSERT_POD
();
};
/**
* hb_subset_profile_create:
*
* Return value: New profile with default settings.
*
* Since: 1.7.5
**/
hb_subset_profile_t
*
hb_subset_profile_create
()
{
return
hb_object_create
<
hb_subset_profile_t
>
();
}
/**
* hb_subset_profile_destroy:
*
* Since: 1.7.5
**/
void
hb_subset_profile_destroy
(
hb_subset_profile_t
*
profile
)
{
if
(
!
hb_object_destroy
(
profile
))
return
;
free
(
profile
);
}
/**
* hb_subset_input_create:
*
* Return value: New subset input.
*
* Since: 1.7.5
**/
hb_subset_input_t
*
hb_subset_input_create
()
{
return
hb_object_create
<
hb_subset_input_t
>
();
}
/**
* hb_subset_input_destroy:
*
* Since: 1.7.5
**/
void
hb_subset_input_destroy
(
hb_subset_input_t
*
subset_input
)
{
if
(
!
hb_object_destroy
(
subset_input
))
return
;
free
(
subset_input
);
}
/**
* hb_subset_face_create:
*
* Return value: New subset face.
*
* Since: 1.7.5
**/
hb_subset_face_t
*
hb_subset_face_create
(
hb_face_t
*
face
)
{
return
hb_object_create
<
hb_subset_face_t
>
();
}
/**
* hb_subset_face_destroy:
*
* Since: 1.7.5
**/
void
hb_subset_face_destroy
(
hb_subset_face_t
*
face
)
{
if
(
!
hb_object_destroy
(
face
))
return
;
free
(
face
);
}
/**
* hb_subset:
* @profile: profile to use for the subsetting.
* @input: input to use for the subsetting.
* @face: font face data to be subset.
* @result: subsetting result.
*
* Subsets a font according to provided profile and input.
**/
hb_bool_t
hb_subset
(
hb_subset_profile_t
*
profile
,
hb_subset_input_t
*
input
,
hb_subset_face_t
*
face
,
hb_blob_t
**
result
/* OUT */
)
{
if
(
!
profile
||
!
input
||
!
face
)
return
false
;
*
result
=
hb_blob_get_empty
();
return
true
;
}
src/hb-subset.h
浏览文件 @
a2965f2e
...
...
@@ -38,7 +38,8 @@ HB_BEGIN_DECLS
/*
* hb_subset_profile_t
* Things that change based on target environment, e.g. OS
* Things that change based on target environment, e.g. OS.
* Threadsafe for multiple concurrent subset operations.
*/
typedef
struct
hb_subset_profile_t
hb_subset_profile_t
;
...
...
@@ -81,7 +82,7 @@ HB_EXTERN hb_bool_t
hb_subset
(
hb_subset_profile_t
*
profile
,
hb_subset_input_t
*
input
,
hb_subset_face_t
*
face
,
hb_blob_t
*
result
/* OUT */
);
hb_blob_t
*
*
result
/* OUT */
);
HB_END_DECLS
...
...
test/api/Makefile.am
浏览文件 @
a2965f2e
...
...
@@ -29,6 +29,7 @@ TEST_PROGS = \
test-object
\
test-set
\
test-shape
\
test-subset
\
test-unicode
\
test-version
\
$(NULL)
...
...
test/api/test-subset.c
浏览文件 @
a2965f2e
...
...
@@ -28,7 +28,7 @@
/* Unit tests for hb-subset.h */
static
const
char
test_data
[]
=
"OTTO"
;
static
const
char
test_data
[]
=
{
0
,
0
,
1
,
0
}
;
static
void
test_subset
(
void
)
...
...
@@ -41,12 +41,12 @@ test_subset (void)
hb_subset_input_t
*
input
=
hb_subset_input_create
();
hb_subset_face_t
*
subset_face
=
hb_subset_face_create
(
face
);
char
output_data
[
100
];
hb_blob_t
*
output
=
hb_blob_create
(
output_data
,
sizeof
(
output_data
),
HB_MEMORY_MODE_WRITABLE
,
NULL
,
NULL
);
hb_blob_t
*
output
;
g_assert
(
hb_subset
(
profile
,
input
,
subset_face
,
&
output
));
g_assert
(
hb_subset
(
profile
,
input
,
subset_face
,
output
));
g_assert_cmpmem
(
test_data
,
4
,
output_data
,
sizeof
(
output
));
unsigned
int
output_length
;
const
char
*
output_data
=
hb_blob_get_data
(
output
,
&
output_length
);
g_assert_cmpmem
(
test_data
,
4
,
output_data
,
output_length
);
hb_blob_destroy
(
output
);
hb_subset_face_destroy
(
subset_face
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录