Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
a16ecbf0
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看板
提交
a16ecbf0
编写于
1月 23, 2008
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Initial gsub stub
上级
64aef3a5
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
461 addition
and
0 deletion
+461
-0
src/hb-ot-layout-gdef-private.h
src/hb-ot-layout-gdef-private.h
+4
-0
src/hb-ot-layout-gsub-private.h
src/hb-ot-layout-gsub-private.h
+453
-0
src/hb-ot-layout-open-private.h
src/hb-ot-layout-open-private.h
+3
-0
src/main.cc
src/main.cc
+1
-0
未找到文件。
src/hb-ot-layout-gdef-private.h
浏览文件 @
a16ecbf0
...
...
@@ -27,6 +27,9 @@
#ifndef HB_OT_LAYOUT_GDEF_PRIVATE_H
#define HB_OT_LAYOUT_GDEF_PRIVATE_H
#include "hb-private.h"
#include "hb-ot-layout.h"
#include "hb-ot-layout-open-private.h"
...
...
@@ -205,6 +208,7 @@ struct GDEFHeader {
static
const
hb_tag_t
GDEFTag
=
HB_TAG
(
'G'
,
'D'
,
'E'
,
'F'
);
STATIC_DEFINE_GET_FOR_DATA
(
GDEFHeader
);
/* XXX check version here */
DEFINE_ACCESSOR
(
ClassDef
,
get_glyph_class_def
,
glyphClassDef
);
DEFINE_ACCESSOR
(
AttachList
,
get_attach_list
,
attachList
);
...
...
src/hb-ot-layout-gsub-private.h
0 → 100644
浏览文件 @
a16ecbf0
/*
* Copyright (C) 2007,2008 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_OT_LAYOUT_GSUB_PRIVATE_H
#define HB_OT_LAYOUT_GSUB_PRIVATE_H
#include "hb-private.h"
#include "hb-ot-layout.h"
#include "hb-ot-layout-open-private.h"
#include "hb-ot-layout-gdef-private.h"
struct
SingleSubstFormat1
{
/* TODO */
private:
USHORT
substFormat
;
/* Format identifier--format = 1 */
Offset
coverage
;
/* Offset to Coverage table--from
* beginning of Substitution table */
SHORT
deltaGlyphID
;
/* Add to original GlyphID to get
* substitute GlyphID */
};
ASSERT_SIZE
(
SingleSubstFormat1
,
6
);
struct
SingleSubstFormat2
{
/* TODO */
private:
USHORT
substFormat
;
/* Format identifier--format = 2 */
Offset
coverage
;
/* Offset to Coverage table--from
* beginning of Substitution table */
USHORT
glyphCount
;
/* Number of GlyphIDs in the Substitute
* array */
GlyphID
substitute
[];
/* Array of substitute
* GlyphIDs--ordered by Coverage Index */
};
ASSERT_SIZE
(
SingleSubstFormat2
,
6
);
struct
MultipleSubstFormat1
{
/* TODO */
private:
USHORT
substFormat
;
/* Format identifier--format = 1 */
Offset
coverage
;
/* Offset to Coverage table--from
* beginning of Substitution table */
USHORT
sequenceCount
;
/* Number of Sequence table offsets in
* the Sequence array */
Offset
sequence
[];
/* Array of offsets to Sequence
* tables--from beginning of
* Substitution table--ordered by
* Coverage Index */
};
ASSERT_SIZE
(
MultipleSubstFormat1
,
6
);
struct
Sequence
{
/* TODO */
private:
USHORT
glyphCount
;
/* Number of GlyphIDs in the Substitute
* array. This should always be
* greater than 0. */
GlyphID
substitute
[];
/* String of GlyphIDs to substitute */
};
DEFINE_NULL_ASSERT_SIZE
(
Sequence
,
2
);
struct
AlternateSubstFormat1
{
/* TODO */
private:
USHORT
substFormat
;
/* Format identifier--format = 1 */
Offset
coverage
;
/* Offset to Coverage table--from
* beginning of Substitution table */
USHORT
alternateSetCount
;
/* Number of AlternateSet tables */
Offset
alternateSet
[];
/* Array of offsets to AlternateSet
* tables--from beginning of
* Substitution table--ordered by
* Coverage Index */
};
ASSERT_SIZE
(
AlternateSubstFormat1
,
6
);
struct
AlternateSet
{
/* TODO */
private:
USHORT
glyphCount
;
/* Number of GlyphIDs in the Alternate
* array */
GlyphID
alternate
[];
/* Array of alternate GlyphIDs--in
* arbitrary order */
};
DEFINE_NULL_ASSERT_SIZE
(
AlternateSet
,
2
);
struct
LigatureSubstFormat1
{
/* TODO */
private:
USHORT
substFormat
;
/* Format identifier--format = 1 */
Offset
coverage
;
/* Offset to Coverage table--from
* beginning of Substitution table */
USHORT
ligSetCount
;
/* Number of LigatureSet tables */
Offset
ligatureSet
[];
/* Array of offsets to LigatureSet
* tables--from beginning of
* Substitution table--ordered by
* Coverage Index */
};
ASSERT_SIZE
(
LigatureSubstFormat1
,
6
);
struct
LigatureSet
{
/* TODO */
private:
USHORT
ligatureCount
;
/* Number of Ligature tables */
Offset
ligature
[];
/* Array of offsets to Ligature
* tables--from beginning of
* LigatureSet table--ordered by
* preference */
};
DEFINE_NULL_ASSERT_SIZE
(
LigatureSet
,
2
);
struct
Ligature
{
/* TODO */
private:
GlyphID
ligGlyph
;
/* GlyphID of ligature to substitute */
USHORT
compCount
;
/* Number of components in the ligature */
GlyphID
component
[];
/* Array of component GlyphIDs--start
* with the second component--ordered
* in writing direction */
};
DEFINE_NULL_ASSERT_SIZE
(
Ligature
,
4
);
struct
SubstLookupRecord
{
/* TODO */
private:
USHORT
sequenceIndex
;
/* Index into current glyph
* sequence--first glyph = 0 */
USHORT
lookupListIndex
;
/* Lookup to apply to that
* position--zero--based */
};
DEFINE_NULL_ASSERT_SIZE
(
SubstLookupRecord
,
4
);
struct
ContextSubstFormat1
{
/* TODO */
private:
USHORT
substFormat
;
/* Format identifier--format = 1 */
Offset
coverage
;
/* Offset to Coverage table--from
* beginning of Substitution table */
USHORT
subRuleSetCount
;
/* Number of SubRuleSet tables--must
* equal GlyphCount in Coverage table */
Offset
subRuleSet
[];
/* Array of offsets to SubRuleSet
* tables--from beginning of
* Substitution table--ordered by
* Coverage Index */
};
ASSERT_SIZE
(
ContextSubstFormat1
,
6
);
struct
SubRuleSet
{
/* TODO */
private:
USHORT
subRuleCount
;
/* Number of SubRule tables */
Offset
subRule
[];
/* Array of offsets to SubRule
* tables--from beginning of SubRuleSet
* table--ordered by preference */
};
DEFINE_NULL_ASSERT_SIZE
(
SubRuleSet
,
2
);
struct
SubRule
{
/* TODO */
private:
USHORT
glyphCount
;
/* Total number of glyphs in input
* glyph sequence--includes the first
* glyph */
USHORT
substCount
;
/* Number of SubstLookupRecords */
GlyphID
input
[];
/* Array of input GlyphIDs--start with
* second glyph */
SubstLookupRecord
substLookupRecord
[];
/* Array of SubstLookupRecords--in
* design order */
};
DEFINE_NULL_ASSERT_SIZE
(
SubRule
,
4
);
struct
ContextSubstFormat2
{
/* TODO */
private:
USHORT
substFormat
;
/* Format identifier--format = 2 */
Offset
coverage
;
/* Offset to Coverage table--from
* beginning of Substitution table */
Offset
classDef
;
/* Offset to glyph ClassDef table--from
* beginning of Substitution table */
USHORT
subClassSetCnt
;
/* Number of SubClassSet tables */
Offset
subClassSet
[];
/* Array of offsets to SubClassSet
* tables--from beginning of
* Substitution table--ordered by
* class--may be NULL */
};
ASSERT_SIZE
(
ContextSubstFormat2
,
8
);
struct
SubClassSet
{
/* TODO */
private:
USHORT
subClassRuleCnt
;
/* Number of SubClassRule tables */
Offset
subClassRule
[];
/* Array of offsets to SubClassRule
* tables--from beginning of
* SubClassSet--ordered by preference */
};
DEFINE_NULL_ASSERT_SIZE
(
SubClassSet
,
2
);
struct
SubClassRule
{
/* TODO */
private:
USHORT
glyphCount
;
/* Total number of classes
* specified for the context in the
* rule--includes the first class */
USHORT
substCount
;
/* Number of SubstLookupRecords */
USHORT
klass
[];
/* Array of classes--beginning with the
* second class--to be matched to the
* input glyph class sequence */
SubstLookupRecord
substLookupRecord
[];
/* Array of SubstLookupRecords--in
* design order */
};
DEFINE_NULL_ASSERT_SIZE
(
SubClassRule
,
4
);
struct
ContextSubstFormat3
{
/* TODO */
private:
USHORT
substFormat
;
/* Format identifier--format = 3 */
USHORT
glyphCount
;
/* Number of glyphs in the input glyph
* sequence */
USHORT
substCount
;
/* Number of SubstLookupRecords */
Offset
coverage
[];
/* Array of offsets to Coverage
* table--from beginning of
* Substitution table--in glyph
* sequence order */
SubstLookupRecord
substLookupRecord
[];
/* Array of SubstLookupRecords--in
* design order */
};
ASSERT_SIZE
(
ContextSubstFormat3
,
6
);
struct
ChainContextSubstFormat1
{
/* TODO */
private:
USHORT
substFormat
;
/* Format identifier--format = 1 */
Offset
coverage
;
/* Offset to Coverage table--from
* beginning of Substitution table */
USHORT
chainSubRuleSetCount
;
/* Number of ChainSubRuleSet
* tables--must equal GlyphCount in
* Coverage table */
Offset
chainSubRuleSet
[];
/* Array of offsets to ChainSubRuleSet
* tables--from beginning of
* Substitution table--ordered by
* Coverage Index */
};
ASSERT_SIZE
(
ChainContextSubstFormat1
,
6
);
struct
ChainSubRuleSet
{
/* TODO */
private:
USHORT
chainSubRuleCount
;
/* Number of ChainSubRule tables */
Offset
chainSubRule
[];
/* Array of offsets to ChainSubRule
* tables--from beginning of
* ChainSubRuleSet table--ordered
* by preference */
};
DEFINE_NULL_ASSERT_SIZE
(
ChainSubRuleSet
,
2
);
struct
ChainSubRule
{
/* TODO */
private:
USHORT
backtrackGlyphCount
;
/* Total number of glyphs in the
* backtrack sequence (number of
* glyphs to be matched before the
* first glyph) */
GlyphID
backtrack
[];
/* Array of backtracking GlyphID's
* (to be matched before the input
* sequence) */
USHORT
inputGlyphCount
;
/* Total number of glyphs in the input
* sequence (includes the first glyph) */
GlyphID
input
[];
/* Array of input GlyphIDs (start with
* second glyph) */
USHORT
lookaheadGlyphCount
;
/* Total number of glyphs in the look
* ahead sequence (number of glyphs to
* be matched after the input sequence) */
GlyphID
lookAhead
[];
/* Array of lookahead GlyphID's (to be
* matched after the input sequence) */
USHORT
substCount
;
/* Number of SubstLookupRecords */
SubstLookupRecord
substLookupRecord
[];
/* Array of SubstLookupRecords--in
* design order) */
};
DEFINE_NULL_ASSERT_SIZE
(
ChainSubRule
,
8
);
struct
ChainContextSubstFormat2
{
/* TODO */
private:
USHORT
substFormat
;
/* Format identifier--format = 2 */
Offset
coverage
;
/* Offset to Coverage table--from
* beginning of Substitution table */
Offset
backtrackClassDef
;
/* Offset to glyph ClassDef table
* containing backtrack sequence
* data--from beginning of Substitution
* table */
Offset
inputClassDef
;
/* Offset to glyph ClassDef
* table containing input sequence
* data--from beginning of Substitution
* table */
Offset
lookaheadClassDef
;
/* Offset to glyph ClassDef table
* containing lookahead sequence
* data--from beginning of Substitution
* table */
USHORT
chainSubClassSetCnt
;
/* Number of ChainSubClassSet tables */
Offset
chainSubClassSet
[];
/* Array of offsets to ChainSubClassSet
* tables--from beginning of
* Substitution table--ordered by input
* class--may be NULL */
};
ASSERT_SIZE
(
ChainContextSubstFormat2
,
12
);
struct
ChainSubClassSet
{
/* TODO */
private:
USHORT
chainSubClassRuleCnt
;
/* Number of ChainSubClassRule tables */
Offset
chainSubClassRule
[];
/* Array of offsets
* to ChainSubClassRule
* tables--from beginning of
* ChainSubClassSet--ordered by
* preference */
};
DEFINE_NULL_ASSERT_SIZE
(
ChainSubClassSet
,
2
);
struct
ChainSubClassRule
{
/* TODO */
private:
USHORT
backtrackGlyphCount
;
/* Total number of glyphs in the
* backtrack sequence (number of
* glyphs to be matched before the
* first glyph) */
USHORT
backtrack
[];
/* Array of backtracking classes(to be
* matched before the input sequence) */
USHORT
inputGlyphCount
;
/* Total number of classes in the input
* sequence (includes the first class) */
USHORT
input
[];
/* Array of input classes(start with
* second class; to be matched with
* the input glyph sequence) */
USHORT
lookaheadGlyphCount
;
/* Total number of classes in the
* look ahead sequence (number of
* classes to be matched after the
* input sequence) */
USHORT
lookAhead
[];
/* Array of lookahead classes(to be
* matched after the input sequence) */
USHORT
substCount
;
/* Number of SubstLookupRecords */
SubstLookupRecord
substLookupRecord
[];
/* Array of SubstLookupRecords--in
* design order) */
};
DEFINE_NULL_ASSERT_SIZE
(
ChainSubClassRule
,
8
);
struct
ChainContextSubstFormat3
{
/* TODO */
private:
USHORT
substFormat
;
/* Format identifier--format = 3 */
USHORT
backtrackGlyphCount
;
/* Number of glyphs in the backtracking
* sequence */
Offset
backtrackCoverage
[];
/* Array of offsets to coverage tables
* in backtracking sequence, in glyph
* sequence order */
USHORT
inputGlyphCount
;
/* Number of glyphs in input sequence */
Offset
inputCoverage
[];
/* Array of offsets to coverage
* tables in input sequence, in glyph
* sequence order */
USHORT
lookaheadGlyphCount
;
/* Number of glyphs in lookahead
* sequence */
Offset
lookaheadCoverage
[];
/* Array of offsets to coverage tables
* in lookahead sequence, in glyph
* sequence order */
USHORT
substCount
;
/* Number of SubstLookupRecords */
SubstLookupRecord
substLookupRecord
[];
/* Array of SubstLookupRecords--in
* design order */
};
ASSERT_SIZE
(
ChainContextSubstFormat3
,
10
);
struct
ExtensionSubstFormat1
{
/* TODO */
private:
USHORT
substFormat
;
/* Format identifier. Set to 1. */
USHORT
extensionLookupType
;
/* Lookup type of subtable referenced
* by ExtensionOffset (i.e. the
* extension subtable). */
ULONG
extensionOffset
;
/* Offset to the extension subtable,
* of lookup type subtable. */
};
ASSERT_SIZE
(
ExtensionSubstFormat1
,
8
);
struct
ReverseChainSingleSubstFormat1
{
/* TODO */
private:
USHORT
substFormat
;
/* Format identifier--format = 1 */
Offset
coverage
;
/* Offset to Coverage table -- from
* beginning of Substitution table */
USHORT
backtrackGlyphCount
;
/* Number of glyphs in the backtracking
* sequence */
Offset
backtrackCoverage
[];
/* Array of offsets to coverage tables
* in backtracking sequence, in glyph
* sequence order */
USHORT
lookaheadGlyphCount
;
/* Number of glyphs in lookahead
* sequence */
Offset
lookaheadCoverage
[];
/* Array of offsets to coverage tables
* in lookahead sequence, in glyph
* sequence order */
USHORT
glyphCount
;
/* Number of GlyphIDs in the Substitute
* array */
GlyphID
substitute
[];
/* Array of substitute
* GlyphIDs--ordered by Coverage Index */
};
ASSERT_SIZE
(
ReverseChainSingleSubstFormat1
,
10
);
#endif
/* HB_OT_LAYOUT_GSUB_PRIVATE_H */
src/hb-ot-layout-open-private.h
浏览文件 @
a16ecbf0
...
...
@@ -30,6 +30,7 @@
#include "hb-private.h"
#include "hb-ot-layout.h"
/*
* Int types
*/
...
...
@@ -335,6 +336,7 @@ DEFINE_NULL_ALIAS (OpenTypeFontFace, OffsetTable);
struct
TTCHeader
{
/* OpenTypeFontFaces, in no particular order */
DEFINE_OFFSET_ARRAY_TYPE
(
OffsetTable
,
offsetTable
,
numFonts
);
/* XXX check version here */
private:
Tag
ttcTag
;
/* TrueType Collection ID string: 'ttcf' */
...
...
@@ -794,6 +796,7 @@ typedef struct GSUBGPOSHeader {
static
const
hb_tag_t
GPOSTag
=
HB_TAG
(
'G'
,
'P'
,
'O'
,
'S'
);
STATIC_DEFINE_GET_FOR_DATA
(
GSUBGPOSHeader
);
/* XXX check version here */
DEFINE_LIST_ACCESSOR
(
Script
,
script
);
/* get_script_list, get_script(i) */
DEFINE_LIST_ACCESSOR
(
Feature
,
feature
);
/* get_feature_list, get_feature(i) */
...
...
src/main.cc
浏览文件 @
a16ecbf0
...
...
@@ -26,6 +26,7 @@
#include "hb-ot-layout-open-private.h"
#include "hb-ot-layout-gdef-private.h"
#include "hb-ot-layout-gsub-private.h"
#include <stdlib.h>
#include <stdio.h>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录