Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
b986fead
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看板
提交
b986fead
编写于
11月 05, 2018
作者:
E
Ebrahim Byagowi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Hook AAT's lcar to _get_ligature_carets
上级
b989507f
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
175 addition
and
10 deletion
+175
-10
src/Makefile.sources
src/Makefile.sources
+1
-0
src/hb-aat-layout-lcar-table.hh
src/hb-aat-layout-lcar-table.hh
+92
-0
src/hb-ot-face.hh
src/hb-ot-face.hh
+1
-0
src/hb-ot-layout-gdef-table.hh
src/hb-ot-layout-gdef-table.hh
+2
-4
src/hb-ot-layout.cc
src/hb-ot-layout.cc
+11
-6
test/api/Makefile.am
test/api/Makefile.am
+1
-0
test/api/fonts/lcar.ttf
test/api/fonts/lcar.ttf
+0
-0
test/api/test-ot-ligature-carets.c
test/api/test-ot-ligature-carets.c
+67
-0
未找到文件。
src/Makefile.sources
浏览文件 @
b986fead
...
...
@@ -102,6 +102,7 @@ HB_OT_sources = \
hb-aat-layout-feat-table.hh
\
hb-aat-layout-just-table.hh
\
hb-aat-layout-kerx-table.hh
\
hb-aat-layout-lcar-table.hh
\
hb-aat-layout-morx-table.hh
\
hb-aat-layout-trak-table.hh
\
hb-aat-layout.hh
\
...
...
src/hb-aat-layout-lcar-table.hh
0 → 100644
浏览文件 @
b986fead
/*
* Copyright © 2018 Ebrahim Byagowi
*
* 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.
*/
#ifndef HB_AAT_LAYOUT_LCAR_TABLE_HH
#define HB_AAT_LAYOUT_LCAR_TABLE_HH
#include "hb-open-type.hh"
#include "hb-aat-layout-common.hh"
/*
* lcar -- Ligature caret
* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6lcar.html
*/
#define HB_AAT_TAG_lcar HB_TAG('l','c','a','r')
namespace
AAT
{
typedef
ArrayOf
<
HBINT16
>
LigCaretClassEntry
;
struct
lcar
{
static
const
hb_tag_t
tableTag
=
HB_AAT_TAG_lcar
;
inline
unsigned
int
get_lig_carets
(
hb_font_t
*
font
,
hb_direction_t
direction
,
hb_codepoint_t
glyph
,
unsigned
int
start_offset
,
unsigned
int
*
caret_count
/* IN/OUT */
,
hb_position_t
*
caret_array
/* OUT */
)
const
{
const
OffsetTo
<
LigCaretClassEntry
>*
entry_offset
=
lookup
.
get_value
(
glyph
,
font
->
face
->
num_glyphs
);
const
LigCaretClassEntry
&
array
=
entry_offset
?
this
+*
entry_offset
:
Null
(
LigCaretClassEntry
);
if
(
caret_count
&&
*
caret_count
)
{
const
HBINT16
*
arr
=
array
.
sub_array
(
start_offset
,
caret_count
);
unsigned
int
count
=
*
caret_count
;
for
(
unsigned
int
i
=
0
;
i
<
count
;
++
i
)
switch
(
format
)
{
case
0
:
caret_array
[
i
]
=
font
->
em_scale_dir
(
arr
[
i
],
direction
);
break
;
case
1
:
hb_position_t
x
,
y
;
font
->
get_glyph_contour_point_for_origin
(
glyph
,
arr
[
i
],
direction
,
&
x
,
&
y
);
caret_array
[
i
]
=
HB_DIRECTION_IS_HORIZONTAL
(
direction
)
?
x
:
y
;
break
;
}
}
return
array
.
len
;
}
inline
bool
sanitize
(
hb_sanitize_context_t
*
c
)
const
{
TRACE_SANITIZE
(
this
);
return_trace
(
likely
(
c
->
check_struct
(
this
)
&&
version
.
major
==
1
&&
lookup
.
sanitize
(
c
,
this
)));
}
protected:
FixedVersion
<>
version
;
/* Version number of the ligature caret table */
HBUINT16
format
;
/* Format of the ligature caret table. */
Lookup
<
OffsetTo
<
LigCaretClassEntry
>
>
lookup
;
/* data Lookup table associating glyphs */
public:
DEFINE_SIZE_MIN
(
8
);
};
}
/* namespace AAT */
#endif
/* HB_AAT_LAYOUT_LCAR_TABLE_HH */
src/hb-ot-face.hh
浏览文件 @
b986fead
...
...
@@ -60,6 +60,7 @@
HB_OT_TABLE(AAT, kerx) \
HB_OT_TABLE(AAT, ankr) \
HB_OT_TABLE(AAT, trak) \
HB_OT_TABLE(AAT, lcar) \
HB_OT_TABLE(AAT, ltag) \
/* OpenType variations. */
\
HB_OT_TABLE(OT, fvar) \
...
...
src/hb-ot-layout-gdef-table.hh
浏览文件 @
b986fead
...
...
@@ -123,10 +123,8 @@ struct CaretValueFormat2
inline
hb_position_t
get_caret_value
(
hb_font_t
*
font
,
hb_direction_t
direction
,
hb_codepoint_t
glyph_id
)
const
{
hb_position_t
x
,
y
;
if
(
font
->
get_glyph_contour_point_for_origin
(
glyph_id
,
caretValuePoint
,
direction
,
&
x
,
&
y
))
return
HB_DIRECTION_IS_HORIZONTAL
(
direction
)
?
x
:
y
;
else
return
0
;
font
->
get_glyph_contour_point_for_origin
(
glyph_id
,
caretValuePoint
,
direction
,
&
x
,
&
y
);
return
HB_DIRECTION_IS_HORIZONTAL
(
direction
)
?
x
:
y
;
}
inline
bool
sanitize
(
hb_sanitize_context_t
*
c
)
const
...
...
src/hb-ot-layout.cc
浏览文件 @
b986fead
...
...
@@ -42,6 +42,8 @@
#include "hb-ot-kern-table.hh"
#include "hb-ot-name-table.hh"
#include "hb-aat-layout-lcar-table.hh"
/**
* SECTION:hb-ot-layout
...
...
@@ -275,12 +277,15 @@ hb_ot_layout_get_ligature_carets (hb_font_t *font,
unsigned
int
*
caret_count
/* IN/OUT */
,
hb_position_t
*
caret_array
/* OUT */
)
{
return
font
->
face
->
table
.
GDEF
->
table
->
get_lig_carets
(
font
,
direction
,
glyph
,
start_offset
,
caret_count
,
caret_array
);
unsigned
int
result_caret_count
=
0
;
unsigned
int
result
=
font
->
face
->
table
.
GDEF
->
table
->
get_lig_carets
(
font
,
direction
,
glyph
,
start_offset
,
&
result_caret_count
,
caret_array
);
if
(
result
)
{
if
(
caret_count
)
*
caret_count
=
result_caret_count
;
}
else
result
=
font
->
face
->
table
.
lcar
->
get_lig_carets
(
font
,
direction
,
glyph
,
start_offset
,
caret_count
,
caret_array
);
return
result
;
}
...
...
test/api/Makefile.am
浏览文件 @
b986fead
...
...
@@ -74,6 +74,7 @@ endif
TEST_PROGS
+=
\
test-ot-color
\
test-ot-ligature-carets
\
test-ot-name
\
test-ot-tag
\
$(NULL)
...
...
test/api/fonts/lcar.ttf
0 → 100644
浏览文件 @
b986fead
文件已添加
test/api/test-ot-ligature-carets.c
0 → 100644
浏览文件 @
b986fead
/*
* Copyright © 2018 Ebrahim Byagowi
*
* 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.
*
*/
#include "hb-test.h"
#include <hb-ot.h>
static
void
test_ot_layout_feature_get_name_ids_and_characters
(
void
)
{
hb_face_t
*
face
=
hb_test_open_font_file
(
"fonts/lcar.ttf"
);
hb_font_t
*
font
=
hb_font_create
(
face
);
hb_font_set_scale
(
font
,
hb_face_get_upem
(
face
)
*
2
,
hb_face_get_upem
(
face
)
*
4
);
hb_position_t
caret_array
[
2
];
unsigned
int
caret_count
=
2
;
g_assert_cmpuint
(
2
,
==
,
hb_ot_layout_get_ligature_carets
(
font
,
HB_DIRECTION_RTL
,
98
,
0
,
&
caret_count
,
caret_array
));
g_assert_cmpuint
(
2
,
==
,
caret_count
);
g_assert_cmpuint
(
1130
,
==
,
caret_array
[
0
]);
g_assert_cmpuint
(
2344
,
==
,
caret_array
[
1
]);
g_assert_cmpuint
(
2
,
==
,
hb_ot_layout_get_ligature_carets
(
font
,
HB_DIRECTION_BTT
,
98
,
0
,
&
caret_count
,
caret_array
));
g_assert_cmpuint
(
2
,
==
,
caret_count
);
g_assert_cmpuint
(
2260
,
==
,
caret_array
[
0
]);
g_assert_cmpuint
(
4688
,
==
,
caret_array
[
1
]);
hb_font_destroy
(
font
);
hb_face_destroy
(
face
);
}
int
main
(
int
argc
,
char
**
argv
)
{
g_test_init
(
&
argc
,
&
argv
,
NULL
);
hb_test_add
(
test_ot_layout_feature_get_name_ids_and_characters
);
return
hb_test_run
();
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录