Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
8fb3d1aa
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,发现更多精彩内容 >>
提交
8fb3d1aa
编写于
11月 03, 2009
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Start ft glue
上级
d94647e2
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
281 addition
and
17 deletion
+281
-17
TODO
TODO
+0
-3
src/Makefile.am
src/Makefile.am
+13
-3
src/hb-font-private.h
src/hb-font-private.h
+3
-1
src/hb-font.cc
src/hb-font.cc
+14
-3
src/hb-font.h
src/hb-font.h
+4
-2
src/hb-ft.c
src/hb-ft.c
+192
-0
src/hb-ft.h
src/hb-ft.h
+52
-0
src/hb-glib.h
src/hb-glib.h
+0
-2
src/hb-icu.h
src/hb-icu.h
+0
-2
src/hb.h
src/hb.h
+3
-1
未找到文件。
TODO
浏览文件 @
8fb3d1aa
...
@@ -7,6 +7,3 @@ hb-ot:
...
@@ -7,6 +7,3 @@ hb-ot:
- Rename hb_internal_glyph_info_t to hb_ot_glyph_info_t
- Rename hb_internal_glyph_info_t to hb_ot_glyph_info_t
- Add query API for aalt-like features
- Add query API for aalt-like features
- HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH vs LookupType::... mess
- HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH vs LookupType::... mess
hb-ft:
- Add hb_ft_create_face()?
src/Makefile.am
浏览文件 @
8fb3d1aa
...
@@ -49,7 +49,7 @@ HBHEADERS += \
...
@@ -49,7 +49,7 @@ HBHEADERS += \
if
HAVE_GLIB
if
HAVE_GLIB
HBCFLAGS
+=
$(GLIB_CFLAGS)
HBCFLAGS
+=
$(GLIB_CFLAGS)
HBLIBS
+=
$(GLIB_LIBS)
HBLIBS
+=
$(GLIB_LIBS)
HBSOURCES
+=
\
HBSOURCES
+=
\
hb-glib.c
\
hb-glib.c
\
$(NULL)
$(NULL)
...
@@ -60,7 +60,7 @@ endif
...
@@ -60,7 +60,7 @@ endif
if
HAVE_ICU
if
HAVE_ICU
HBCFLAGS
+=
$(ICU_CFLAGS)
HBCFLAGS
+=
$(ICU_CFLAGS)
HBLIBS
+=
$(ICU_LIBS)
HBLIBS
+=
$(ICU_LIBS)
HBSOURCES
+=
\
HBSOURCES
+=
\
hb-icu.c
\
hb-icu.c
\
$(NULL)
$(NULL)
...
@@ -69,8 +69,18 @@ HBHEADERS += \
...
@@ -69,8 +69,18 @@ HBHEADERS += \
$(NULL)
$(NULL)
endif
endif
CXXLINK
=
$(LINK)
if
HAVE_FREETYPE
HBCFLAGS
+=
$(FREETYPE_CFLAGS)
HBLIBS
+=
$(FREETYPE_LIBS)
HBSOURCES
+=
\
hb-ft.c
\
$(NULL)
HBHEADERS
+=
\
hb-ft.h
\
$(NULL)
endif
CXXLINK
=
$(LINK)
libharfbuzz_la_SOURCES
=
$(HBSOURCES)
$(HBHEADERS)
libharfbuzz_la_SOURCES
=
$(HBSOURCES)
$(HBHEADERS)
libharfbuzz_la_CPPFLAGS
=
$(HBCFLAGS)
libharfbuzz_la_CPPFLAGS
=
$(HBCFLAGS)
libharfbuzz_la_LIBADD
=
$(HBLIBS)
libharfbuzz_la_LIBADD
=
$(HBLIBS)
...
...
src/hb-font-private.h
浏览文件 @
8fb3d1aa
...
@@ -84,7 +84,9 @@ struct _hb_font_t {
...
@@ -84,7 +84,9 @@ struct _hb_font_t {
unsigned
int
x_ppem
;
unsigned
int
x_ppem
;
unsigned
int
y_ppem
;
unsigned
int
y_ppem
;
hb_font_funcs_t
*
klass
;
hb_font_funcs_t
*
klass
;
hb_destroy_func_t
destroy
;
void
*
user_data
;
};
};
...
...
src/hb-font.cc
浏览文件 @
8fb3d1aa
...
@@ -232,7 +232,9 @@ static hb_font_t _hb_font_nil = {
...
@@ -232,7 +232,9 @@ static hb_font_t _hb_font_nil = {
0
,
/* x_ppem */
0
,
/* x_ppem */
0
,
/* y_ppem */
0
,
/* y_ppem */
NULL
/* klass */
NULL
,
/* klass */
NULL
,
/* destroy */
NULL
/* user_data */
};
};
hb_font_t
*
hb_font_t
*
...
@@ -264,20 +266,29 @@ hb_font_destroy (hb_font_t *font)
...
@@ -264,20 +266,29 @@ hb_font_destroy (hb_font_t *font)
HB_OBJECT_DO_DESTROY
(
font
);
HB_OBJECT_DO_DESTROY
(
font
);
hb_font_funcs_destroy
(
font
->
klass
);
hb_font_funcs_destroy
(
font
->
klass
);
if
(
font
->
destroy
)
font
->
destroy
(
font
->
user_data
);
free
(
font
);
free
(
font
);
}
}
void
void
hb_font_set_funcs
(
hb_font_t
*
font
,
hb_font_set_funcs
(
hb_font_t
*
font
,
hb_font_funcs_t
*
klass
)
hb_font_funcs_t
*
klass
,
hb_destroy_func_t
destroy
,
void
*
user_data
)
{
{
if
(
HB_OBJECT_IS_INERT
(
font
))
if
(
HB_OBJECT_IS_INERT
(
font
))
return
;
return
;
if
(
font
->
destroy
)
font
->
destroy
(
font
->
user_data
);
hb_font_funcs_reference
(
klass
);
hb_font_funcs_reference
(
klass
);
hb_font_funcs_destroy
(
font
->
klass
);
hb_font_funcs_destroy
(
font
->
klass
);
font
->
klass
=
klass
;
font
->
klass
=
klass
;
font
->
destroy
=
destroy
;
font
->
user_data
=
user_data
;
}
}
void
void
...
...
src/hb-font.h
浏览文件 @
8fb3d1aa
...
@@ -150,8 +150,10 @@ void
...
@@ -150,8 +150,10 @@ void
hb_font_destroy
(
hb_font_t
*
font
);
hb_font_destroy
(
hb_font_t
*
font
);
void
void
hb_font_set_funcs
(
hb_font_t
*
font
,
hb_font_set_funcs
(
hb_font_t
*
font
,
hb_font_funcs_t
*
klass
);
hb_font_funcs_t
*
klass
,
hb_destroy_func_t
destroy
,
void
*
user_data
);
hb_font_funcs_t
*
hb_font_funcs_t
*
hb_font_get_funcs
(
hb_font_t
*
font
);
hb_font_get_funcs
(
hb_font_t
*
font
);
...
...
src/hb-ft.c
0 → 100644
浏览文件 @
8fb3d1aa
/*
* Copyright (C) 2009 Red Hat, Inc.
* Copyright (C) 2009 Keith Stribley <devel@thanlwinsoft.org>
*
* This is part of HarfBuzz, an OpenType Layout engine 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.
*
* Red Hat Author(s): Behdad Esfahbod
*/
#include "hb-private.h"
#include "hb-ft.h"
#include "hb-font-private.h"
#include FT_TRUETYPE_TABLES_H
#if 0
extern hb_codepoint_t hb_GetGlyph(hb_font_t *font, hb_face_t *face, const void *user_data,
hb_codepoint_t unicode, hb_codepoint_t variant_selector)
{
FT_Face fcFace = (FT_Face)user_data;
return FT_Get_Char_Index(fcFace, unicode);
}
extern hb_bool_t hb_GetContourPoint(hb_font_t *font, hb_face_t *face, const void *user_data,
hb_codepoint_t glyph, hb_position_t *x, hb_position_t *y)
{
unsigned int point = 0; /* TODO this should be in API */
int load_flags = FT_LOAD_DEFAULT;
FT_Face fcFace = (FT_Face)user_data;
if (FT_Load_Glyph(fcFace, glyph, load_flags))
return 0;
if (fcFace->glyph->format != ft_glyph_format_outline)
return 0;
unsigned int nPoints = fcFace->glyph->outline.n_points;
if (!(nPoints))
return 0;
if (point > nPoints)
return 0;
*x = fcFace->glyph->outline.points[point].x;
*y = fcFace->glyph->outline.points[point].y;
return 1;
}
extern void hb_GetGlyphMetrics(hb_font_t *font, hb_face_t *face, const void *user_data,
hb_codepoint_t glyph, hb_glyph_metrics_t *metrics)
{
int load_flags = FT_LOAD_DEFAULT;
FT_Face fcFace = (FT_Face)user_data;
metrics->x = metrics->y = 0;
metrics->x_offset = metrics->y_offset = 0;
if (FT_Load_Glyph(fcFace, glyph, load_flags))
{
metrics->width = metrics->height = 0;
}
else
{
metrics->width = fcFace->glyph->metrics.width;
metrics->height = fcFace->glyph->metrics.height;
metrics->x_offset = fcFace->glyph->advance.x;
metrics->y_offset = fcFace->glyph->advance.y;
}
}
extern hb_position_t hb_GetKerning(hb_font_t *font, hb_face_t *face, const void *user_data,
hb_codepoint_t first_glyph, hb_codepoint_t second_glyph)
{
FT_Face fcFace = (FT_Face)user_data;
FT_Vector aKerning;
if (FT_Get_Kerning(fcFace, first_glyph, second_glyph, FT_KERNING_DEFAULT,
&aKerning))
{
return 0;
}
return aKerning.x;
}
#endif
static
hb_font_funcs_t
ft_ffuncs
=
{
HB_REFERENCE_COUNT_INVALID
,
/* ref_count */
TRUE
,
/* immutable */
#if 0
hb_ft_get_glyph,
hb_ft_get_contour_point,
hb_ft_get_glyph_metrics,
hb_ft_get_kerning
#endif
};
hb_font_funcs_t
*
hb_ft_get_font_funcs
(
void
)
{
return
&
ft_ffuncs
;
}
static
hb_blob_t
*
_get_table
(
hb_tag_t
tag
,
void
*
user_data
)
{
FT_Face
ft_face
=
(
FT_Face
)
user_data
;
FT_Byte
*
buffer
;
FT_ULong
length
=
0
;
FT_Error
error
;
error
=
FT_Load_Sfnt_Table
(
ft_face
,
tag
,
0
,
NULL
,
&
length
);
if
(
error
)
return
hb_blob_create_empty
();
buffer
=
malloc
(
length
);
if
(
buffer
==
NULL
)
return
hb_blob_create_empty
();
error
=
FT_Load_Sfnt_Table
(
ft_face
,
tag
,
0
,
buffer
,
&
length
);
if
(
error
)
return
hb_blob_create_empty
();
return
hb_blob_create
((
const
char
*
)
buffer
,
length
,
HB_MEMORY_MODE_WRITABLE
,
free
,
buffer
);
}
hb_face_t
*
hb_ft_face_create
(
FT_Face
ft_face
,
hb_destroy_func_t
destroy
)
{
hb_face_t
*
face
;
if
(
ft_face
->
stream
->
base
!=
NULL
)
{
hb_blob_t
*
blob
;
blob
=
hb_blob_create
((
const
char
*
)
ft_face
->
stream
->
base
,
(
unsigned
int
)
ft_face
->
stream
->
size
,
HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE
,
destroy
,
ft_face
);
face
=
hb_face_create_for_data
(
blob
,
ft_face
->
face_index
);
hb_blob_destroy
(
blob
);
}
else
{
face
=
hb_face_create_for_tables
(
_get_table
,
destroy
,
ft_face
);
}
return
face
;
}
hb_font_t
*
hb_ft_font_create
(
FT_Face
ft_face
,
hb_destroy_func_t
destroy
)
{
hb_font_t
*
font
;
font
=
hb_font_create
();
hb_font_set_funcs
(
font
,
hb_ft_get_font_funcs
(),
destroy
,
ft_face
);
hb_font_set_scale
(
font
,
ft_face
->
size
->
metrics
.
x_scale
,
ft_face
->
size
->
metrics
.
y_scale
);
hb_font_set_ppem
(
font
,
ft_face
->
size
->
metrics
.
x_ppem
,
ft_face
->
size
->
metrics
.
y_ppem
);
return
font
;
}
src/hb-ft.h
0 → 100644
浏览文件 @
8fb3d1aa
/*
* Copyright (C) 2009 Red Hat, Inc.
*
* This is part of HarfBuzz, an OpenType Layout engine 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.
*
* Red Hat Author(s): Behdad Esfahbod
*/
#ifndef HB_FT_H
#define HB_FT_H
#include "hb.h"
#include "hb-font.h"
#include <ft2build.h>
#include FT_FREETYPE_H
HB_BEGIN_DECLS
hb_font_funcs_t
*
hb_ft_get_font_funcs
(
void
);
hb_face_t
*
hb_ft_face_create
(
FT_Face
ft_face
,
hb_destroy_func_t
destroy
);
hb_font_t
*
hb_ft_font_create
(
FT_Face
ft_face
,
hb_destroy_func_t
destroy
);
HB_END_DECLS
#endif
/* HB_FT_H */
src/hb-glib.h
浏览文件 @
8fb3d1aa
...
@@ -29,8 +29,6 @@
...
@@ -29,8 +29,6 @@
#include "hb.h"
#include "hb.h"
#include "hb-unicode.h"
HB_BEGIN_DECLS
HB_BEGIN_DECLS
hb_unicode_funcs_t
*
hb_unicode_funcs_t
*
...
...
src/hb-icu.h
浏览文件 @
8fb3d1aa
...
@@ -29,8 +29,6 @@
...
@@ -29,8 +29,6 @@
#include "hb.h"
#include "hb.h"
#include "hb-unicode.h"
HB_BEGIN_DECLS
HB_BEGIN_DECLS
hb_unicode_funcs_t
*
hb_unicode_funcs_t
*
...
...
src/hb.h
浏览文件 @
8fb3d1aa
...
@@ -27,9 +27,11 @@
...
@@ -27,9 +27,11 @@
#ifndef HB_H
#ifndef HB_H
#define HB_H
#define HB_H
#include "hb-common.h"
#include "hb-blob.h"
#include "hb-blob.h"
#include "hb-buffer.h"
#include "hb-buffer.h"
#include "hb-common.h"
#include "hb-font.h"
#include "hb-font.h"
#include "hb-shape.h"
#include "hb-unicode.h"
#endif
/* HB_H */
#endif
/* HB_H */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录