Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
b857b49c
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,发现更多精彩内容 >>
提交
b857b49c
编写于
5月 20, 2009
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[HB] Remove all references to the old code!
上级
e1593a6e
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
137 addition
and
197 deletion
+137
-197
src/Makefile.am
src/Makefile.am
+24
-52
src/harfbuzz-buffer.c
src/harfbuzz-buffer.c
+63
-91
src/harfbuzz-buffer.h
src/harfbuzz-buffer.h
+40
-40
src/hb-ot-layout-private.h
src/hb-ot-layout-private.h
+3
-3
src/hb-ot-layout.cc
src/hb-ot-layout.cc
+6
-11
src/hb-ot-layout.h
src/hb-ot-layout.h
+1
-0
未找到文件。
src/Makefile.am
浏览文件 @
b857b49c
## Process this file with automake to produce Makefile.in
NULL
=
INCLUDES
=
\
-I
$(srcdir)
\
$(FREETYPE_CFLAGS)
\
...
...
@@ -8,63 +10,33 @@ CXX = gcc $(GCCOPTS) -g -fno-rtti -fno-exceptions -Wabi -Wpadded -Wcast-align
noinst_LTLIBRARIES
=
libharfbuzz-1.la
MAINSOURCES
=
\
$(INCLUDEDSOURCES)
\
hb-ot-layout.cc
# harfbuzz.c
# included from harfbuzz.c
INCLUDEDSOURCES
=
\
HBSOURCES
=
\
harfbuzz-buffer.c
\
harfbuzz-gpos.c
\
harfbuzz-gsub.c
\
harfbuzz-impl.c
\
harfbuzz-open.c
\
harfbuzz-stream.c
PUBLICHEADERS
=
\
harfbuzz.h
\
harfbuzz-global.h
\
hb-private.h
\
hb-ot-layout.cc
\
hb-ot-layout-common-private.h
\
hb-ot-layout-gdef-private.h
\
hb-ot-layout-gpos-private.h
\
hb-ot-layout-gsubgpos-private.h
\
hb-ot-layout-gsub-private.h
\
hb-ot-layout-open-private.h
\
hb-ot-layout-private.h
\
$(NULL)
HBHEADERS
=
\
hb-common.h
\
harfbuzz-buffer.h
\
harfbuzz-gpos.h
\
harfbuzz-gsub.h
\
harfbuzz-open.h
PRIVATEHEADERS
=
\
harfbuzz-impl.h
\
harfbuzz-buffer-private.h
\
harfbuzz-gpos-private.h
\
harfbuzz-gsub-private.h
\
harfbuzz-open-private.h
\
harfbuzz-stream-private.h
libharfbuzz_1_la_SOURCES
=
\
$(MAINSOURCES)
\
$(PUBLICHEADERS)
\
$(PRIVATEHEADERS)
libharfbuzz_1_la_LIBADD
=
\
$(FREETYPE_LIBS)
noinst_PROGRAMS
=
harfbuzz-dump main
hb-ot-layout.h
\
$(NULL)
harfbuzz_dump_SOURCES
=
\
harfbuzz-dump.c
\
harfbuzz-dump.h
\
harfbuzz-dump-main.c
libharfbuzz_1_la_SOURCES
=
$(HBSOURCES)
$(HBHEADERS)
libharfbuzz_1_la_LIBADD
=
$(FREETYPE_LIBS)
harfbuzz_dump_LDADD
=
\
$(libharfbuzz_1_la_LIBADD)
\
libharfbuzz-1.la
noinst_PROGRAMS
=
main
main_SOURCES
=
\
main.cc
main_LDADD
=
\
$(GLIB_LIBS)
main_SOURCES
=
main.cc
main_LDADD
=
$(GLIB_LIBS)
EXTRA_DIST
=
\
README
\
COPYING
\
$(INCLUDEDSOURCES)
EXTRA_DIST
=
README COPYING
-include
$(top_srcdir)/git.mk
src/harfbuzz-buffer.c
浏览文件 @
b857b49c
...
...
@@ -59,11 +59,12 @@
/* Internal API */
/*static XXX */
HB_Error
hb_buffer_ensure
(
HB_Buffer
buffer
,
HB_UInt
size
)
/*static XXX */
void
hb_buffer_ensure
(
hb_buffer_t
*
buffer
,
unsigned
int
size
)
{
HB_UInt
new_allocated
=
buffer
->
allocated
;
/* XXX err handling */
if
(
size
>
new_allocated
)
{
...
...
@@ -72,52 +73,39 @@ hb_buffer_ensure( HB_Buffer buffer,
while
(
size
>
new_allocated
)
new_allocated
+=
(
new_allocated
>>
1
)
+
8
;
if
(
buffer
->
positions
)
{
if
(
REALLOC_ARRAY
(
buffer
->
positions
,
new_allocated
,
HB_PositionRec
)
)
return
error
;
}
if
(
buffer
->
positions
)
buffer
->
positions
=
realloc
(
buffer
->
positions
,
new_allocated
*
sizeof
(
buffer
->
positions
[
0
]));
if
(
REALLOC_ARRAY
(
buffer
->
in_string
,
new_allocated
,
HB_GlyphItemRec
)
)
return
error
;
buffer
->
in_string
=
realloc
(
buffer
->
in_string
,
new_allocated
*
sizeof
(
buffer
->
in_string
[
0
]));
if
(
buffer
->
separate_out
)
if
(
buffer
->
separate_out
)
{
if
(
REALLOC_ARRAY
(
buffer
->
alt_string
,
new_allocated
,
HB_GlyphItemRec
)
)
return
error
;
buffer
->
alt_string
=
realloc
(
buffer
->
alt_string
,
new_allocated
*
sizeof
(
buffer
->
alt_string
[
0
]));
buffer
->
out_string
=
buffer
->
alt_string
;
}
else
{
buffer
->
out_string
=
buffer
->
in_string
;
if
(
buffer
->
alt_string
)
if
(
buffer
->
alt_string
)
{
if
(
REALLOC_ARRAY
(
buffer
->
alt_string
,
new_allocated
,
HB_GlyphItemRec
)
)
return
error
;
free
(
buffer
->
alt_string
);
buffer
->
alt_string
=
NULL
;
}
}
buffer
->
allocated
=
new_allocated
;
}
return
HB_Err_Ok
;
}
static
HB_Error
hb_buffer_duplicate_out_buffer
(
HB_Buffer
buffer
)
hb_buffer_duplicate_out_buffer
(
HB_Buffer
buffer
)
{
if
(
!
buffer
->
alt_string
)
{
HB_Error
error
;
if
(
ALLOC_ARRAY
(
buffer
->
alt_string
,
buffer
->
allocated
,
HB_GlyphItemRec
)
)
return
error
;
}
if
(
!
buffer
->
alt_string
)
buffer
->
alt_string
=
malloc
(
buffer
->
allocated
*
sizeof
(
buffer
->
alt_string
[
0
]));
buffer
->
out_string
=
buffer
->
alt_string
;
memcpy
(
buffer
->
out_string
,
buffer
->
in_string
,
buffer
->
out_length
*
sizeof
(
buffer
->
out_string
[
0
])
);
memcpy
(
buffer
->
out_string
,
buffer
->
in_string
,
buffer
->
out_length
*
sizeof
(
buffer
->
out_string
[
0
])
);
buffer
->
separate_out
=
TRUE
;
return
HB_Err_Ok
;
...
...
@@ -125,39 +113,36 @@ hb_buffer_duplicate_out_buffer( HB_Buffer buffer )
/* Public API */
HB_Error
hb_buffer_new
(
HB_Buffer
*
pbuffer
)
hb_buffer_t
*
hb_buffer_new
(
void
)
{
HB_Buffer
buffer
;
HB_Error
error
;
if
(
ALLOC
(
buffer
,
sizeof
(
HB_BufferRec
)
)
)
return
error
;
hb_buffer_t
*
buffer
;
buffer
=
malloc
(
sizeof
(
hb_buffer_t
));
if
(
HB_UNLIKELY
(
!
buffer
)
)
return
NULL
;
buffer
->
allocated
=
0
;
buffer
->
in_string
=
NULL
;
buffer
->
alt_string
=
NULL
;
buffer
->
positions
=
NULL
;
hb_buffer_clear
(
buffer
);
hb_buffer_clear
(
buffer
);
*
pbuffer
=
buffer
;
return
HB_Err_Ok
;
return
buffer
;
}
void
hb_buffer_free
(
HB_Buffer
buffer
)
hb_buffer_free
(
HB_Buffer
buffer
)
{
FREE
(
buffer
->
in_string
);
FREE
(
buffer
->
alt_string
);
buffer
->
out_string
=
NULL
;
FREE
(
buffer
->
positions
);
FREE
(
buffer
);
free
(
buffer
->
in_string
);
free
(
buffer
->
alt_string
);
free
(
buffer
->
positions
);
free
(
buffer
);
}
void
hb_buffer_clear
(
HB_Buffer
buffer
)
hb_buffer_clear
(
HB_Buffer
buffer
)
{
buffer
->
in_length
=
0
;
buffer
->
out_length
=
0
;
...
...
@@ -168,18 +153,16 @@ hb_buffer_clear( HB_Buffer buffer )
buffer
->
max_ligID
=
0
;
}
HB_Error
hb_buffer_add_glyph
(
HB_Buffer
buffer
,
void
hb_buffer_add_glyph
(
HB_Buffer
buffer
,
HB_UInt
glyph_index
,
HB_UInt
properties
,
HB_UInt
cluster
)
HB_UInt
cluster
)
{
HB_Error
error
;
HB_GlyphItem
glyph
;
error
=
hb_buffer_ensure
(
buffer
,
buffer
->
in_length
+
1
);
if
(
error
)
return
error
;
hb_buffer_ensure
(
buffer
,
buffer
->
in_length
+
1
);
glyph
=
&
buffer
->
in_string
[
buffer
->
in_length
];
glyph
->
gindex
=
glyph_index
;
...
...
@@ -188,16 +171,14 @@ hb_buffer_add_glyph( HB_Buffer buffer,
glyph
->
component
=
0
;
glyph
->
ligID
=
0
;
glyph
->
gproperty
=
HB_GLYPH_PROPERTY_UNKNOWN
;
buffer
->
in_length
++
;
return
HB_Err_Ok
;
buffer
->
in_length
++
;
}
/* HarfBuzz-Internal API */
HB_INTERNAL
void
_hb_buffer_clear_output
(
HB_Buffer
buffer
)
_hb_buffer_clear_output
(
HB_Buffer
buffer
)
{
buffer
->
out_length
=
0
;
buffer
->
out_pos
=
0
;
...
...
@@ -206,17 +187,12 @@ _hb_buffer_clear_output( HB_Buffer buffer )
}
HB_INTERNAL
HB_Error
_hb_buffer_clear_positions
(
HB_Buffer
buffer
)
_hb_buffer_clear_positions
(
HB_Buffer
buffer
)
{
_hb_buffer_clear_output
(
buffer
);
if
(
!
buffer
->
positions
)
{
HB_Error
error
;
if
(
ALLOC_ARRAY
(
buffer
->
positions
,
buffer
->
allocated
,
HB_PositionRec
)
)
return
error
;
}
if
(
!
buffer
->
positions
)
buffer
->
positions
=
malloc
(
buffer
->
allocated
*
sizeof
(
buffer
->
positions
[
0
]));
memset
(
buffer
->
positions
,
0
,
sizeof
(
buffer
->
positions
[
0
])
*
buffer
->
in_length
);
...
...
@@ -224,13 +200,13 @@ _hb_buffer_clear_positions( HB_Buffer buffer )
}
HB_INTERNAL
void
_hb_buffer_swap
(
HB_Buffer
buffer
)
_hb_buffer_swap
(
HB_Buffer
buffer
)
{
HB_GlyphItem
tmp_string
;
int
tmp_length
;
int
tmp_pos
;
if
(
buffer
->
separate_out
)
if
(
buffer
->
separate_out
)
{
tmp_string
=
buffer
->
in_string
;
buffer
->
in_string
=
buffer
->
out_string
;
...
...
@@ -267,37 +243,35 @@ _hb_buffer_swap( HB_Buffer buffer )
The cluster value for the glyph at position buffer->in_pos is used
for all replacement glyphs */
HB_INTERNAL
HB_Error
_hb_buffer_add_output_glyphs
(
HB_Buffer
buffer
,
_hb_buffer_add_output_glyphs
(
HB_Buffer
buffer
,
HB_UShort
num_in
,
HB_UShort
num_out
,
HB_UShort
*
glyph_data
,
HB_UShort
component
,
HB_UShort
ligID
)
HB_UShort
ligID
)
{
HB_Error
error
;
HB_UShort
i
;
HB_UInt
properties
;
HB_UInt
cluster
;
error
=
hb_buffer_ensure
(
buffer
,
buffer
->
out_pos
+
num_out
);
if
(
error
)
return
error
;
hb_buffer_ensure
(
buffer
,
buffer
->
out_pos
+
num_out
);
if
(
!
buffer
->
separate_out
)
if
(
!
buffer
->
separate_out
)
{
error
=
hb_buffer_duplicate_out_buffer
(
buffer
);
if
(
error
)
error
=
hb_buffer_duplicate_out_buffer
(
buffer
);
if
(
error
)
return
error
;
}
properties
=
buffer
->
in_string
[
buffer
->
in_pos
].
properties
;
cluster
=
buffer
->
in_string
[
buffer
->
in_pos
].
cluster
;
if
(
component
==
0xFFFF
)
if
(
component
==
0xFFFF
)
component
=
buffer
->
in_string
[
buffer
->
in_pos
].
component
;
if
(
ligID
==
0xFFFF
)
if
(
ligID
==
0xFFFF
)
ligID
=
buffer
->
in_string
[
buffer
->
in_pos
].
ligID
;
for
(
i
=
0
;
i
<
num_out
;
i
++
)
for
(
i
=
0
;
i
<
num_out
;
i
++
)
{
HB_GlyphItem
item
=
&
buffer
->
out_string
[
buffer
->
out_pos
+
i
];
...
...
@@ -318,27 +292,25 @@ _hb_buffer_add_output_glyphs( HB_Buffer buffer,
}
HB_INTERNAL
HB_Error
_hb_buffer_add_output_glyph
(
HB_Buffer
buffer
,
_hb_buffer_add_output_glyph
(
HB_Buffer
buffer
,
HB_UInt
glyph_index
,
HB_UShort
component
,
HB_UShort
ligID
)
HB_UShort
ligID
)
{
HB_UShort
glyph_data
=
glyph_index
;
return
_hb_buffer_add_output_glyphs
(
buffer
,
1
,
1
,
&
glyph_data
,
component
,
ligID
);
return
_hb_buffer_add_output_glyphs
(
buffer
,
1
,
1
,
&
glyph_data
,
component
,
ligID
);
}
HB_INTERNAL
HB_Error
_hb_buffer_next_glyph
(
HB_Buffer
buffer
)
_hb_buffer_next_glyph
(
HB_Buffer
buffer
)
{
HB_Error
error
;
if
(
buffer
->
separate_out
)
if
(
buffer
->
separate_out
)
{
error
=
hb_buffer_ensure
(
buffer
,
buffer
->
out_pos
+
1
);
if
(
error
)
return
error
;
hb_buffer_ensure
(
buffer
,
buffer
->
out_pos
+
1
);
buffer
->
out_string
[
buffer
->
out_pos
]
=
buffer
->
in_string
[
buffer
->
in_pos
];
}
...
...
@@ -351,10 +323,10 @@ _hb_buffer_next_glyph ( HB_Buffer buffer )
}
HB_INTERNAL
HB_Error
_hb_buffer_replace_glyph
(
HB_Buffer
buffer
,
HB_UInt
glyph_index
)
_hb_buffer_replace_glyph
(
HB_Buffer
buffer
,
HB_UInt
glyph_index
)
{
if
(
!
buffer
->
separate_out
)
if
(
!
buffer
->
separate_out
)
{
buffer
->
out_string
[
buffer
->
out_pos
].
gindex
=
glyph_index
;
...
...
@@ -364,14 +336,14 @@ _hb_buffer_replace_glyph( HB_Buffer buffer,
}
else
{
return
_hb_buffer_add_output_glyph
(
buffer
,
glyph_index
,
0xFFFF
,
0xFFFF
);
return
_hb_buffer_add_output_glyph
(
buffer
,
glyph_index
,
0xFFFF
,
0xFFFF
);
}
return
HB_Err_Ok
;
}
HB_INTERNAL
HB_UShort
_hb_buffer_allocate_ligid
(
HB_Buffer
buffer
)
_hb_buffer_allocate_ligid
(
HB_Buffer
buffer
)
{
return
++
buffer
->
max_ligID
;
}
src/harfbuzz-buffer.h
浏览文件 @
b857b49c
...
...
@@ -28,67 +28,67 @@
#ifndef HARFBUZZ_BUFFER_H
#define HARFBUZZ_BUFFER_H
#include "h
arfbuzz-global
.h"
#include "h
b-common
.h"
HB_BEGIN_
HEADER
HB_BEGIN_
DECLS
();
typedef
struct
HB_GlyphItemRec_
{
HB_UInt
gindex
;
HB_UInt
properties
;
HB_UInt
cluster
;
HB_UShort
component
;
HB_UShort
ligID
;
HB_UShort
gproperty
;
hb_codepoint_t
gindex
;
unsigned
int
properties
;
unsigned
int
cluster
;
unsigned
short
component
;
unsigned
short
ligID
;
unsigned
short
gproperty
;
}
HB_GlyphItemRec
,
*
HB_GlyphItem
;
typedef
struct
HB_PositionRec_
{
HB_Fixed
x_pos
;
HB_Fixed
y_pos
;
HB_Fixed
x_advance
;
HB_Fixed
y_advance
;
HB_UShort
back
;
/* number of glyphs to go back
for drawing current glyph */
HB_Bool
new_advance
;
/* if set, the advance width values are
absolute, i.e., they won't be
added to the original glyph's value
but rather replace them. */
HB_Short
cursive_chain
;
/* character to which this connects,
may be positive or negative; used
only internally */
hb_position_t
x_pos
;
hb_position_t
y_pos
;
hb_position_t
x_advance
;
hb_position_t
y_advance
;
unsigned
short
back
;
/* number of glyphs to go back
for drawing current glyph */
hb_bool_t
new_advance
;
/* if set, the advance width values are
absolute, i.e., they won't be
added to the original glyph's value
but rather replace them. */
short
cursive_chain
;
/* character to which this connects,
may be positive or negative; used
only internally */
}
HB_PositionRec
,
*
HB_Position
;
typedef
struct
HB_BufferRec_
{
HB_UInt
allocated
;
typedef
struct
_hb_buffer_t
{
unsigned
int
allocated
;
HB_UInt
in_length
;
HB_UInt
out_length
;
HB_UInt
in_pos
;
HB_UInt
out_pos
;
unsigned
int
in_length
;
unsigned
int
out_length
;
unsigned
int
in_pos
;
unsigned
int
out_pos
;
HB_Bool
separate_out
;
hb_bool_t
separate_out
;
HB_GlyphItem
in_string
;
HB_GlyphItem
out_string
;
HB_GlyphItem
alt_string
;
HB_Position
positions
;
HB_UShort
max_ligID
;
}
HB_BufferRec
,
*
HB_Buffer
;
unsigned
int
max_ligID
;
}
HB_BufferRec
,
*
HB_Buffer
,
hb_buffer_t
;
HB_Error
hb_buffer_new
(
HB_Buffer
*
buffer
);
hb_buffer_t
*
hb_buffer_new
(
void
);
void
hb_buffer_free
(
HB_Buffer
buffer
);
hb_buffer_free
(
hb_buffer_t
*
buffer
);
void
hb_buffer_clear
(
HB_Buffer
buffer
);
hb_buffer_clear
(
hb_buffer_t
*
buffer
);
HB_Error
hb_buffer_add_glyph
(
HB_Buffer
buffer
,
HB_UInt
glyph_index
,
HB_UI
nt
properties
,
HB_UInt
cluster
);
void
hb_buffer_add_glyph
(
hb_buffer_t
*
buffer
,
hb_codepoint_t
glyph_index
,
unsigned
i
nt
properties
,
unsigned
int
cluster
);
HB_END_
HEADER
HB_END_
DECLS
();
#endif
/* HARFBUZZ_BUFFER_H */
src/hb-ot-layout-private.h
浏览文件 @
b857b49c
...
...
@@ -92,9 +92,9 @@ _hb_ot_layout_check_glyph_property (hb_ot_layout_t *layout,
unsigned
int
*
property
);
/* XXX */
HB_Error
hb_buffer_ensure
(
HB_Buffer
buffer
,
HB_UInt
size
);
void
hb_buffer_ensure
(
hb_buffer_t
*
buffer
,
unsigned
int
size
);
HB_END_DECLS
();
...
...
src/hb-ot-layout.cc
浏览文件 @
b857b49c
...
...
@@ -582,16 +582,11 @@ hb_ot_layout_position_lookup (hb_ot_layout_t *layout,
static
HB_Error
hb_buffer_duplicate_out_buffer
(
HB_Buffer
buffer
)
{
if
(
!
buffer
->
alt_string
)
{
HB_Error
error
;
if
(
ALLOC_ARRAY
(
buffer
->
alt_string
,
buffer
->
allocated
,
HB_GlyphItemRec
)
)
return
error
;
}
if
(
!
buffer
->
alt_string
)
buffer
->
alt_string
=
(
HB_GlyphItemRec_
*
)
malloc
(
buffer
->
allocated
*
sizeof
(
buffer
->
out_string
[
0
]));
buffer
->
out_string
=
buffer
->
alt_string
;
memcpy
(
buffer
->
out_string
,
buffer
->
in_string
,
buffer
->
out_length
*
sizeof
(
buffer
->
out_string
[
0
])
);
memcpy
(
buffer
->
out_string
,
buffer
->
in_string
,
buffer
->
out_length
*
sizeof
(
buffer
->
out_string
[
0
])
);
buffer
->
separate_out
=
TRUE
;
return
HB_Err_Ok
;
...
...
@@ -599,6 +594,7 @@ hb_buffer_duplicate_out_buffer( HB_Buffer buffer )
/* XXX */
HB_INTERNAL
HB_Error
_hb_buffer_add_output_glyph_ids
(
HB_Buffer
buffer
,
HB_UShort
num_in
,
...
...
@@ -612,9 +608,8 @@ _hb_buffer_add_output_glyph_ids( HB_Buffer buffer,
HB_UInt
properties
;
HB_UInt
cluster
;
error
=
hb_buffer_ensure
(
buffer
,
buffer
->
out_pos
+
num_out
);
if
(
error
)
return
error
;
hb_buffer_ensure
(
buffer
,
buffer
->
out_pos
+
num_out
);
/* XXX */
if
(
!
buffer
->
separate_out
)
{
...
...
src/hb-ot-layout.h
浏览文件 @
b857b49c
...
...
@@ -28,6 +28,7 @@
#define HB_OT_LAYOUT_H
#include "hb-common.h"
#include "harfbuzz-buffer.h"
HB_BEGIN_DECLS
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录