Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
be73a5f9
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看板
提交
be73a5f9
编写于
7月 19, 2012
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add src/test-would-substitute tool
上级
e72b360a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
231 addition
and
1 deletion
+231
-1
src/Makefile.am
src/Makefile.am
+5
-1
src/test-would-substitute.cc
src/test-would-substitute.cc
+94
-0
src/test.cc
src/test.cc
+132
-0
未找到文件。
src/Makefile.am
浏览文件 @
be73a5f9
...
...
@@ -177,7 +177,7 @@ hb-ot-shape-complex-indic-machine.hh: hb-ot-shape-complex-indic-machine.rl
$(AM_V_GEN)$(top_srcdir)
/missing
--run
ragel
-e
-F1
-o
"
$@
.tmp"
"
$<
"
&&
\
mv
"
$@
.tmp"
"
$@
"
||
(
$(RM)
"
$@
.tmp"
&&
false
)
noinst_PROGRAMS
=
main indic
noinst_PROGRAMS
=
main indic
test-would-substitute
bin_PROGRAMS
=
main_SOURCES
=
main.cc
...
...
@@ -188,6 +188,10 @@ indic_SOURCES = indic.cc
indic_CPPFLAGS
=
$(HBCFLAGS)
indic_LDADD
=
libharfbuzz.la
$(HBLIBS)
test_would_substitute_SOURCES
=
test-would-substitute.cc
test_would_substitute_CPPFLAGS
=
$(HBCFLAGS)
$(FREETYPE_CFLAGS)
test_would_substitute_LDADD
=
libharfbuzz.la
$(HBLIBS)
$(FREETYPE_LIBS)
dist_check_SCRIPTS
=
\
check-c-linkage-decls.sh
\
check-header-guards.sh
\
...
...
src/test-would-substitute.cc
0 → 100644
浏览文件 @
be73a5f9
/*
* Copyright © 2010,2011 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): Behdad Esfahbod
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "hb.h"
#include "hb-ot.h"
#ifdef HAVE_GLIB
#include <glib.h>
#endif
#include <stdlib.h>
#include <stdio.h>
#ifdef HAVE_FREETYPE
#include "hb-ft.h"
#endif
int
main
(
int
argc
,
char
**
argv
)
{
hb_blob_t
*
blob
=
NULL
;
if
(
argc
!=
4
&&
argc
!=
5
)
{
fprintf
(
stderr
,
"usage: %s lookup-index first-glyph [second-glyph]
\n
"
,
argv
[
0
]);
exit
(
1
);
}
/* Create the blob */
{
const
char
*
font_data
;
unsigned
int
len
;
hb_destroy_func_t
destroy
;
void
*
user_data
;
hb_memory_mode_t
mm
;
#ifdef HAVE_GLIB
GMappedFile
*
mf
=
g_mapped_file_new
(
argv
[
1
],
FALSE
,
NULL
);
font_data
=
g_mapped_file_get_contents
(
mf
);
len
=
g_mapped_file_get_length
(
mf
);
destroy
=
(
hb_destroy_func_t
)
g_mapped_file_unref
;
user_data
=
(
void
*
)
mf
;
mm
=
HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE
;
#else
FILE
*
f
=
fopen
(
argv
[
1
],
"rb"
);
fseek
(
f
,
0
,
SEEK_END
);
len
=
ftell
(
f
);
fseek
(
f
,
0
,
SEEK_SET
);
font_data
=
(
const
char
*
)
malloc
(
len
);
if
(
!
font_data
)
len
=
0
;
len
=
fread
((
char
*
)
font_data
,
1
,
len
,
f
);
destroy
=
free
;
user_data
=
(
void
*
)
font_data
;
fclose
(
f
);
mm
=
HB_MEMORY_MODE_WRITABLE
;
#endif
blob
=
hb_blob_create
(
font_data
,
len
,
mm
,
user_data
,
destroy
);
}
/* Create the face */
hb_face_t
*
face
=
hb_face_create
(
blob
,
0
/* first face */
);
hb_blob_destroy
(
blob
);
blob
=
NULL
;
unsigned
int
len
=
argc
-
3
;
hb_codepoint_t
glyphs
[
2
]
=
{
strtol
(
argv
[
3
],
NULL
,
0
),
argc
>
4
?
strtol
(
argv
[
4
],
NULL
,
0
)
:
(
hb_codepoint_t
)
-
1
};
return
!
hb_ot_layout_would_substitute_lookup
(
face
,
glyphs
,
len
,
strtol
(
argv
[
2
],
NULL
,
0
));
}
src/test.cc
0 → 100644
浏览文件 @
be73a5f9
/*
* Copyright © 2010,2011 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): Behdad Esfahbod
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "hb.h"
#ifdef HAVE_GLIB
#include <glib.h>
#endif
#include <stdlib.h>
#include <stdio.h>
#ifdef HAVE_FREETYPE
#include "hb-ft.h"
#endif
int
main
(
int
argc
,
char
**
argv
)
{
hb_blob_t
*
blob
=
NULL
;
if
(
argc
!=
2
)
{
fprintf
(
stderr
,
"usage: %s font-file.ttf
\n
"
,
argv
[
0
]);
exit
(
1
);
}
/* Create the blob */
{
const
char
*
font_data
;
unsigned
int
len
;
hb_destroy_func_t
destroy
;
void
*
user_data
;
hb_memory_mode_t
mm
;
#ifdef HAVE_GLIB
GMappedFile
*
mf
=
g_mapped_file_new
(
argv
[
1
],
FALSE
,
NULL
);
font_data
=
g_mapped_file_get_contents
(
mf
);
len
=
g_mapped_file_get_length
(
mf
);
destroy
=
(
hb_destroy_func_t
)
g_mapped_file_unref
;
user_data
=
(
void
*
)
mf
;
mm
=
HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE
;
#else
FILE
*
f
=
fopen
(
argv
[
1
],
"rb"
);
fseek
(
f
,
0
,
SEEK_END
);
len
=
ftell
(
f
);
fseek
(
f
,
0
,
SEEK_SET
);
font_data
=
(
const
char
*
)
malloc
(
len
);
if
(
!
font_data
)
len
=
0
;
len
=
fread
((
char
*
)
font_data
,
1
,
len
,
f
);
destroy
=
free
;
user_data
=
(
void
*
)
font_data
;
fclose
(
f
);
mm
=
HB_MEMORY_MODE_WRITABLE
;
#endif
blob
=
hb_blob_create
(
font_data
,
len
,
mm
,
user_data
,
destroy
);
}
printf
(
"Opened font file %s: %u bytes long
\n
"
,
argv
[
1
],
hb_blob_get_length
(
blob
));
/* Create the face */
hb_face_t
*
face
=
hb_face_create
(
blob
,
0
/* first face */
);
hb_blob_destroy
(
blob
);
blob
=
NULL
;
unsigned
int
upem
=
hb_face_get_upem
(
face
);
hb_font_t
*
font
=
hb_font_create
(
face
);
hb_font_set_scale
(
font
,
upem
,
upem
);
#ifdef HAVE_FREETYPE
hb_ft_font_set_funcs
(
font
);
#endif
hb_buffer_t
*
buffer
=
hb_buffer_create
();
hb_buffer_add_utf8
(
buffer
,
"
\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\x95
"
,
-
1
,
0
,
-
1
);
hb_shape
(
font
,
buffer
,
NULL
,
0
);
unsigned
int
count
=
hb_buffer_get_length
(
buffer
);
hb_glyph_info_t
*
infos
=
hb_buffer_get_glyph_infos
(
buffer
,
NULL
);
hb_glyph_position_t
*
positions
=
hb_buffer_get_glyph_positions
(
buffer
,
NULL
);
for
(
unsigned
int
i
=
0
;
i
<
count
;
i
++
)
{
hb_glyph_info_t
*
info
=
&
infos
[
i
];
hb_glyph_position_t
*
pos
=
&
positions
[
i
];
printf
(
"cluster %d glyph 0x%x at (%d,%d)+(%d,%d)
\n
"
,
info
->
cluster
,
info
->
codepoint
,
pos
->
x_offset
,
pos
->
x_offset
,
pos
->
x_advance
,
pos
->
y_advance
);
}
hb_buffer_destroy
(
buffer
);
hb_font_destroy
(
font
);
hb_face_destroy
(
face
);
return
0
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录