Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
4c2556cb
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,发现更多精彩内容 >>
提交
4c2556cb
编写于
7月 06, 2007
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[gdef] Initial implementation
上级
5b2e947f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
142 addition
and
2 deletion
+142
-2
src/harfbuzz-gdef-private.h
src/harfbuzz-gdef-private.h
+142
-2
未找到文件。
src/harfbuzz-gdef-private.h
浏览文件 @
4c2556cb
#ifndef HARFBUZZ_GDEF_PRIVATE_H
#define HARFBUZZ_GDEF_PRIVATE_H
#include "harfbuzz-private.h"
#include "harfbuzz-gdef.h"
#include "harfbuzz-open-private.h"
struct
GDEFHeader
{
Fixed
version
;
/* Version of the GDEF table--initially
* 0x00010000 */
Offset
glyphClassDef
;
/* Offset to class definition table
* for glyph type--from beginning of
* GDEF header (may be NULL) */
Offset
attachList
;
/* Offset to list of glyphs with
* attachment points--from beginning
* of GDEF header (may be NULL) */
Offset
ligCaretList
;
/* Offset to list of positioning points
* for ligature carets--from beginning
* of GDEF header (may be NULL) */
Offset
markAttachClassDef
;
/* Offset to class definition table for
* mark attachment type--from beginning
* of GDEF header (may be NULL) */
};
struct
GlyphClassDef
:
ClassDef
{
static
const
uint16_t
BaseGlyph
=
0x0001u
;
static
const
uint16_t
LigatureGlyph
=
0x0002u
;
static
const
uint16_t
MarkGlyph
=
0x0003u
;
static
const
uint16_t
ComponentGlyph
=
0x0004u
;
};
struct
AttachList
{
/* XXX */
Offset
coverage
;
/* Offset to Coverage table -- from
* beginning of AttachList table */
USHORT
glyphCount
;
/* Number of glyphs with attachment
* points */
Offset
attachPoint
[];
/* Array of offsets to AttachPoint
* tables--from beginning of AttachList
* table--in Coverage Index order */
};
struct
AttachPoint
{
/* XXX */
USHORT
pointCount
;
/* Number of attachment points on
* this glyph */
USHORT
pointIndex
[];
/* Array of contour point indices--in
* increasing numerical order */
};
/*
* Ligature Caret Table
*/
struct
CaretValue
;
struct
LigCaretList
{
/* XXX */
Offset
coverage
;
/* Offset to Coverage table--from
* beginning of LigCaretList table */
USHORT
ligGlyphCount
;
/* Number of ligature glyphs */
Offset
ligGlyph
[];
/* Array of offsets to LigGlyph
* tables--from beginning of
* LigCaretList table--in Coverage
* Index order */
};
struct
LigGlyph
{
/* Caret value tables, in increasing coordinate order */
DEFINE_OFFSET_ARRAY_TYPE
(
CaretValue
,
caretValue
,
caretCount
);
/* XXX */
USHORT
caretCount
;
/* Number of CaretValues for this
* ligature (components - 1) */
Offset
caretValue
[];
/* Array of offsets to CaretValue
* tables--from beginning of LigGlyph
* table--in increasing coordinate
* order */
};
struct
CaretValueFormat1
{
USHORT
caretValueFormat
;
/* Format identifier--format = 1 */
SHORT
coordinate
;
/* X or Y value, in design units */
inline
int
get_caret_value
(
int
ppem
)
const
{
return
/* XXX garbage */
coordinate
/
ppem
;
}
};
struct
CaretValueFormat2
{
USHORT
caretValueFormat
;
/* Format identifier--format = 2 */
USHORT
caretValuePoint
;
/* Contour point index on glyph */
inline
int
get_caret_value
(
int
ppem
)
const
{
return
/* XXX garbage */
0
/
ppem
;
}
};
struct
CaretValueFormat3
{
inline
const
Device
*
get_device
(
void
)
const
{
return
(
const
Device
*
)((
const
char
*
)
this
+
deviceTable
);
}
USHORT
caretValueFormat
;
/* Format identifier--format = 3 */
SHORT
coordinate
;
/* X or Y value, in design units */
Offset
deviceTable
;
/* Offset to Device table for X or Y
* value--from beginning of CaretValue
* table */
inline
int
get_caret_value
(
int
ppem
)
const
{
return
/* XXX garbage */
(
coordinate
+
get_device
()
->
get_delta
(
ppem
))
/
ppem
;
}
};
struct
CaretValue
{
DEFINE_NON_INSTANTIABLE
(
CaretValue
);
inline
unsigned
int
get_size
(
void
)
const
{
switch
(
u
.
caretValueFormat
)
{
case
1
:
return
sizeof
(
u
.
format1
);
case
2
:
return
sizeof
(
u
.
format2
);
case
3
:
return
sizeof
(
u
.
format3
);
default:
return
sizeof
(
u
.
caretValueFormat
);
}
}
/* XXX we need access to a load-contour-point vfunc here */
inline
int
get_caret_value
(
int
ppem
)
const
{
switch
(
u
.
caretValueFormat
)
{
case
1
:
return
u
.
format1
.
get_caret_value
(
ppem
);
case
2
:
return
u
.
format2
.
get_caret_value
(
ppem
);
case
3
:
return
u
.
format3
.
get_caret_value
(
ppem
);
default:
return
0
;
}
}
union
{
USHORT
caretValueFormat
;
/* Format identifier */
CaretValueFormat1
format1
;
CaretValueFormat2
format2
;
CaretValueFormat3
format3
;
/* XXX old HarfBuzz code has a format 4 here! */
}
u
;
};
#endif
/* HARFBUZZ_GDEF_PRIVATE_H */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录