Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
ce3451dc
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看板
提交
ce3451dc
编写于
11月 07, 2018
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[kerx] Towards sharing Format1
上级
e890753e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
47 addition
and
14 deletion
+47
-14
src/hb-aat-layout-kerx-table.hh
src/hb-aat-layout-kerx-table.hh
+47
-14
未找到文件。
src/hb-aat-layout-kerx-table.hh
浏览文件 @
ce3451dc
...
...
@@ -156,9 +156,22 @@ struct KerxSubTableFormat0
DEFINE_SIZE_ARRAY
(
KernSubTableHeader
::
static_size
+
16
,
pairs
);
};
template
<
typename
KernSubTableHeader
>
struct
KerxSubTableFormat1
template
<
bool
extended
>
struct
Format1Entry
;
template
<
>
struct
Format1Entry
<
true
>
{
enum
Flags
{
Push
=
0x8000
,
/* If set, push this glyph on the kerning stack. */
DontAdvance
=
0x4000
,
/* If set, don't advance to the next glyph
* before going to the new state. */
Reset
=
0x2000
,
/* If set, reset the kerning data (clear the stack) */
Reserved
=
0x1FFF
,
/* Not used; set to 0. */
};
struct
EntryData
{
HBUINT16
kernActionIndex
;
/* Index into the kerning value array. If
...
...
@@ -167,17 +180,39 @@ struct KerxSubTableFormat1
public:
DEFINE_SIZE_STATIC
(
2
);
};
};
template
<
>
struct
Format1Entry
<
false
>
{
enum
Flags
{
Push
=
0x8000
,
/* If set, push this glyph on the kerning stack. */
DontAdvance
=
0x4000
,
/* If set, don't advance to the next glyph
* before going to the new state. */
Offset
=
0x3FFF
,
/* Byte offset from beginning of subtable to the
* value table for the glyphs on the kerning stack. */
Reset
=
0x0000
,
/* Not supported? */
};
typedef
void
EntryData
;
};
template
<
typename
KernSubTableHeader
>
struct
KerxSubTableFormat1
{
typedef
typename
KernSubTableHeader
::
Types
Types
;
typedef
typename
Types
::
HBUINT
HBUINT
;
typedef
Format1Entry
<
Types
::
extended
>
Format1EntryT
;
typedef
typename
Format1EntryT
::
EntryData
EntryData
;
struct
driver_context_t
{
static
const
bool
in_place
=
true
;
enum
Flags
enum
{
Push
=
0x8000
,
/* If set, push this glyph on the kerning stack. */
DontAdvance
=
0x4000
,
/* If set, don't advance to the next glyph
* before going to the new state. */
Reset
=
0x2000
,
/* If set, reset the kerning data (clear the stack) */
Reserved
=
0x1FFF
,
/* Not used; set to 0. */
DontAdvance
=
Format1EntryT
::
DontAdvance
,
};
inline
driver_context_t
(
const
KerxSubTableFormat1
*
table
,
...
...
@@ -202,12 +237,10 @@ struct KerxSubTableFormat1
hb_buffer_t
*
buffer
=
driver
->
buffer
;
unsigned
int
flags
=
entry
->
flags
;
if
(
flags
&
Reset
)
{
if
(
flags
&
Format1EntryT
::
Reset
)
depth
=
0
;
}
if
(
flags
&
Push
)
if
(
flags
&
Format1EntryT
::
Push
)
{
if
(
likely
(
depth
<
ARRAY_LENGTH
(
stack
)))
stack
[
depth
++
]
=
buffer
->
idx
;
...
...
@@ -339,8 +372,8 @@ struct KerxSubTableFormat1
protected:
KernSubTableHeader
header
;
StateTable
<
MorxTypes
,
EntryData
>
machine
;
LOffsetTo
<
UnsizedArrayOf
<
FWORD
>
,
false
>
kernAction
;
StateTable
<
Types
,
EntryData
>
machine
;
OffsetTo
<
UnsizedArrayOf
<
FWORD
>
,
HBUINT
,
false
>
kernAction
;
public:
DEFINE_SIZE_STATIC
(
KernSubTableHeader
::
static_size
+
20
);
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录