Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
e0c5e0d9
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看板
提交
e0c5e0d9
编写于
10月 13, 2018
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[aat] WIP remove feature mapping here from hb-coretext
Need to map enum values to numerics since we don't have CoreText headers.
上级
cb057749
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
117 addition
and
188 deletion
+117
-188
src/hb-aat-layout.cc
src/hb-aat-layout.cc
+94
-0
src/hb-aat-layout.hh
src/hb-aat-layout.hh
+22
-0
src/hb-coretext.cc
src/hb-coretext.cc
+1
-188
未找到文件。
src/hb-aat-layout.cc
浏览文件 @
e0c5e0d9
...
...
@@ -36,6 +36,100 @@
#include "hb-aat-layout-trak-table.hh"
#include "hb-aat-ltag-table.hh" // Just so we compile it; unused otherwise.
/* Table data courtesy of Apple. Converted from mnemonics to integers
* when moving to this file. See hb-coretext.cc before 2018-10-13 for
* more verbose version. */
static
const
hb_aat_feature_mapping_t
feature_mappings
[]
=
{
{
'
c2pc
'
,
kUpperCaseType
,
kUpperCasePetiteCapsSelector
,
kDefaultUpperCaseSelector
},
{
'
c2sc
'
,
kUpperCaseType
,
kUpperCaseSmallCapsSelector
,
kDefaultUpperCaseSelector
},
{
'
calt
'
,
kContextualAlternatesType
,
kContextualAlternatesOnSelector
,
kContextualAlternatesOffSelector
},
{
'
case
'
,
kCaseSensitiveLayoutType
,
kCaseSensitiveLayoutOnSelector
,
kCaseSensitiveLayoutOffSelector
}
,
{
'
clig
'
,
kLigaturesType
,
kContextualLigaturesOnSelector
,
kContextualLigaturesOffSelector
}
,
{
'
cpsp
'
,
kCaseSensitiveLayoutType
,
kCaseSensitiveSpacingOnSelector
,
kCaseSensitiveSpacingOffSelector
}
,
{
'
cswh
'
,
kContextualAlternatesType
,
kContextualSwashAlternatesOnSelector
,
kContextualSwashAlternatesOffSelector
}
,
{
'
dlig
'
,
kLigaturesType
,
kRareLigaturesOnSelector
,
kRareLigaturesOffSelector
}
,
{
'
expt
'
,
kCharacterShapeType
,
kExpertCharactersSelector
,
16
}
,
{
'
frac
'
,
kFractionsType
,
kDiagonalFractionsSelector
,
kNoFractionsSelector
}
,
{
'
fwid
'
,
kTextSpacingType
,
kMonospacedTextSelector
,
7
}
,
{
'
halt
'
,
kTextSpacingType
,
kAltHalfWidthTextSelector
,
7
}
,
{
'
hist
'
,
kLigaturesType
,
kHistoricalLigaturesOnSelector
,
kHistoricalLigaturesOffSelector
}
,
{
'
hkna
'
,
kAlternateKanaType
,
kAlternateHorizKanaOnSelector
,
kAlternateHorizKanaOffSelector
,
}
,
{
'
hlig
'
,
kLigaturesType
,
kHistoricalLigaturesOnSelector
,
kHistoricalLigaturesOffSelector
}
,
{
'
hngl
'
,
kTransliterationType
,
kHanjaToHangulSelector
,
kNoTransliterationSelector
}
,
{
'
hojo
'
,
kCharacterShapeType
,
kHojoCharactersSelector
,
16
}
,
{
'
hwid
'
,
kTextSpacingType
,
kHalfWidthTextSelector
,
7
}
,
{
'
ital
'
,
kItalicCJKRomanType
,
kCJKItalicRomanOnSelector
,
kCJKItalicRomanOffSelector
}
,
{
'
jp04
'
,
kCharacterShapeType
,
kJIS2004CharactersSelector
,
16
}
,
{
'
jp78
'
,
kCharacterShapeType
,
kJIS1978CharactersSelector
,
16
}
,
{
'
jp83
'
,
kCharacterShapeType
,
kJIS1983CharactersSelector
,
16
}
,
{
'
jp90
'
,
kCharacterShapeType
,
kJIS1990CharactersSelector
,
16
}
,
{
'
liga
'
,
kLigaturesType
,
kCommonLigaturesOnSelector
,
kCommonLigaturesOffSelector
}
,
{
'
lnum
'
,
kNumberCaseType
,
kUpperCaseNumbersSelector
,
2
}
,
{
'
mgrk
'
,
kMathematicalExtrasType
,
kMathematicalGreekOnSelector
,
kMathematicalGreekOffSelector
}
,
{
'
nlck
'
,
kCharacterShapeType
,
kNLCCharactersSelector
,
16
}
,
{
'
onum
'
,
kNumberCaseType
,
kLowerCaseNumbersSelector
,
2
}
,
{
'
ordn
'
,
kVerticalPositionType
,
kOrdinalsSelector
,
kNormalPositionSelector
}
,
{
'
palt
'
,
kTextSpacingType
,
kAltProportionalTextSelector
,
7
}
,
{
'
pcap
'
,
kLowerCaseType
,
kLowerCasePetiteCapsSelector
,
kDefaultLowerCaseSelector
}
,
{
'
pkna
'
,
kTextSpacingType
,
kProportionalTextSelector
,
7
}
,
{
'
pnum
'
,
kNumberSpacingType
,
kProportionalNumbersSelector
,
4
}
,
{
'
pwid
'
,
kTextSpacingType
,
kProportionalTextSelector
,
7
}
,
{
'
qwid
'
,
kTextSpacingType
,
kQuarterWidthTextSelector
,
7
}
,
{
'
ruby
'
,
kRubyKanaType
,
kRubyKanaOnSelector
,
kRubyKanaOffSelector
}
,
{
'
sinf
'
,
kVerticalPositionType
,
kScientificInferiorsSelector
,
kNormalPositionSelector
}
,
{
'
smcp
'
,
kLowerCaseType
,
kLowerCaseSmallCapsSelector
,
kDefaultLowerCaseSelector
}
,
{
'
smpl
'
,
kCharacterShapeType
,
kSimplifiedCharactersSelector
,
16
}
,
{
'
ss01
'
,
kStylisticAlternativesType
,
kStylisticAltOneOnSelector
,
kStylisticAltOneOffSelector
}
,
{
'
ss02
'
,
kStylisticAlternativesType
,
kStylisticAltTwoOnSelector
,
kStylisticAltTwoOffSelector
}
,
{
'
ss03
'
,
kStylisticAlternativesType
,
kStylisticAltThreeOnSelector
,
kStylisticAltThreeOffSelector
}
,
{
'
ss04
'
,
kStylisticAlternativesType
,
kStylisticAltFourOnSelector
,
kStylisticAltFourOffSelector
}
,
{
'
ss05
'
,
kStylisticAlternativesType
,
kStylisticAltFiveOnSelector
,
kStylisticAltFiveOffSelector
}
,
{
'
ss06
'
,
kStylisticAlternativesType
,
kStylisticAltSixOnSelector
,
kStylisticAltSixOffSelector
}
,
{
'
ss07
'
,
kStylisticAlternativesType
,
kStylisticAltSevenOnSelector
,
kStylisticAltSevenOffSelector
}
,
{
'
ss08
'
,
kStylisticAlternativesType
,
kStylisticAltEightOnSelector
,
kStylisticAltEightOffSelector
}
,
{
'
ss09
'
,
kStylisticAlternativesType
,
kStylisticAltNineOnSelector
,
kStylisticAltNineOffSelector
}
,
{
'
ss10
'
,
kStylisticAlternativesType
,
kStylisticAltTenOnSelector
,
kStylisticAltTenOffSelector
}
,
{
'
ss11
'
,
kStylisticAlternativesType
,
kStylisticAltElevenOnSelector
,
kStylisticAltElevenOffSelector
}
,
{
'
ss12
'
,
kStylisticAlternativesType
,
kStylisticAltTwelveOnSelector
,
kStylisticAltTwelveOffSelector
}
,
{
'
ss13
'
,
kStylisticAlternativesType
,
kStylisticAltThirteenOnSelector
,
kStylisticAltThirteenOffSelector
}
,
{
'
ss14
'
,
kStylisticAlternativesType
,
kStylisticAltFourteenOnSelector
,
kStylisticAltFourteenOffSelector
}
,
{
'
ss15
'
,
kStylisticAlternativesType
,
kStylisticAltFifteenOnSelector
,
kStylisticAltFifteenOffSelector
}
,
{
'
ss16
'
,
kStylisticAlternativesType
,
kStylisticAltSixteenOnSelector
,
kStylisticAltSixteenOffSelector
}
,
{
'
ss17
'
,
kStylisticAlternativesType
,
kStylisticAltSeventeenOnSelector
,
kStylisticAltSeventeenOffSelector
}
,
{
'
ss18
'
,
kStylisticAlternativesType
,
kStylisticAltEighteenOnSelector
,
kStylisticAltEighteenOffSelector
}
,
{
'
ss19
'
,
kStylisticAlternativesType
,
kStylisticAltNineteenOnSelector
,
kStylisticAltNineteenOffSelector
}
,
{
'
ss20
'
,
kStylisticAlternativesType
,
kStylisticAltTwentyOnSelector
,
kStylisticAltTwentyOffSelector
}
,
{
'
subs
'
,
kVerticalPositionType
,
kInferiorsSelector
,
kNormalPositionSelector
}
,
{
'
sups
'
,
kVerticalPositionType
,
kSuperiorsSelector
,
kNormalPositionSelector
}
,
{
'
swsh
'
,
kContextualAlternatesType
,
kSwashAlternatesOnSelector
,
kSwashAlternatesOffSelector
}
,
{
'
titl
'
,
kStyleOptionsType
,
kTitlingCapsSelector
,
kNoStyleOptionsSelector
}
,
{
'
tnam
'
,
kCharacterShapeType
,
kTraditionalNamesCharactersSelector
,
16
}
,
{
'
tnum
'
,
kNumberSpacingType
,
kMonospacedNumbersSelector
,
4
}
,
{
'
trad
'
,
kCharacterShapeType
,
kTraditionalCharactersSelector
,
16
}
,
{
'
twid
'
,
kTextSpacingType
,
kThirdWidthTextSelector
,
7
}
,
{
'
unic
'
,
kLetterCaseType
,
14
,
15
}
,
{
'
valt
'
,
kTextSpacingType
,
kAltProportionalTextSelector
,
7
}
,
{
'
vert
'
,
kVerticalSubstitutionType
,
kSubstituteVerticalFormsOnSelector
,
kSubstituteVerticalFormsOffSelector
}
,
{
'
vhal
'
,
kTextSpacingType
,
kAltHalfWidthTextSelector
,
7
}
,
{
'
vkna
'
,
kAlternateKanaType
,
kAlternateVertKanaOnSelector
,
kAlternateVertKanaOffSelector
}
,
{
'
vpal
'
,
kTextSpacingType
,
kAltProportionalTextSelector
,
7
}
,
{
'
vrt2
'
,
kVerticalSubstitutionType
,
kSubstituteVerticalFormsOnSelector
,
kSubstituteVerticalFormsOffSelector
}
,
{
'
zero
'
,
kTypographicExtrasType
,
kSlashedZeroOnSelector
,
kSlashedZeroOffSelector
}
,
}
;
const
hb_aat_feature_mapping_t
*
hb_aat_layout_find_feature_mapping
(
hb_tag_t
tag
)
{
return
bsearch
(
&
tag
,
feature_mappings
,
ARRAY_LENGTH
(
feature_mappings
),
sizeof
(
feature_mappings
[
0
]),
hb_aat_feature_mapping_t
::
cmp
);
}
/*
* morx/kerx/trak
*/
...
...
src/hb-aat-layout.hh
浏览文件 @
e0c5e0d9
...
...
@@ -31,6 +31,28 @@
#include "hb-ot-shape.hh"
struct
hb_aat_feature_mapping_t
{
hb_tag_t
otFeatureTag
;
uint16_t
aatFeatureType
;
uint16_t
selectorToEnable
;
uint16_t
selectorToDisable
;
static
inline
int
cmp
(
const
void
*
key_
,
const
void
*
entry_
)
{
hb_tag_t
key
=
*
(
unsigned
int
*
)
key_
;
const
hb_aat_feature_mapping_t
*
entry
=
(
const
hb_aat_feature_mapping_t
*
)
entry_
;
return
key
<
entry
->
otFeatureTag
?
-
1
:
key
>
entry
->
otFeatureTag
?
1
:
0
;
}
};
HB_INTERNAL
const
hb_aat_feature_mapping_t
*
hb_aat_layout_find_feature_mapping
(
hb_tag_t
tag
);
HB_INTERNAL
hb_bool_t
hb_aat_layout_has_substitution
(
hb_face_t
*
face
);
...
...
src/hb-coretext.cc
浏览文件 @
e0c5e0d9
...
...
@@ -32,6 +32,7 @@
#include "hb-shaper-impl.hh"
#include "hb-coretext.h"
#include "hb-aat-layout.hh"
#include <math.h>
/* https://developer.apple.com/documentation/coretext/1508745-ctfontcreatewithgraphicsfont */
...
...
@@ -431,194 +432,6 @@ struct range_record_t {
};
/* The following enum members are added in OS X 10.8. */
#define kAltHalfWidthTextSelector 6
#define kAltProportionalTextSelector 5
#define kAlternateHorizKanaOffSelector 1
#define kAlternateHorizKanaOnSelector 0
#define kAlternateKanaType 34
#define kAlternateVertKanaOffSelector 3
#define kAlternateVertKanaOnSelector 2
#define kCaseSensitiveLayoutOffSelector 1
#define kCaseSensitiveLayoutOnSelector 0
#define kCaseSensitiveLayoutType 33
#define kCaseSensitiveSpacingOffSelector 3
#define kCaseSensitiveSpacingOnSelector 2
#define kContextualAlternatesOffSelector 1
#define kContextualAlternatesOnSelector 0
#define kContextualAlternatesType 36
#define kContextualLigaturesOffSelector 19
#define kContextualLigaturesOnSelector 18
#define kContextualSwashAlternatesOffSelector 5
#define kContextualSwashAlternatesOnSelector 4
#define kDefaultLowerCaseSelector 0
#define kDefaultUpperCaseSelector 0
#define kHistoricalLigaturesOffSelector 21
#define kHistoricalLigaturesOnSelector 20
#define kHojoCharactersSelector 12
#define kJIS2004CharactersSelector 11
#define kLowerCasePetiteCapsSelector 2
#define kLowerCaseSmallCapsSelector 1
#define kLowerCaseType 37
#define kMathematicalGreekOffSelector 11
#define kMathematicalGreekOnSelector 10
#define kNLCCharactersSelector 13
#define kQuarterWidthTextSelector 4
#define kScientificInferiorsSelector 4
#define kStylisticAltEightOffSelector 17
#define kStylisticAltEightOnSelector 16
#define kStylisticAltEighteenOffSelector 37
#define kStylisticAltEighteenOnSelector 36
#define kStylisticAltElevenOffSelector 23
#define kStylisticAltElevenOnSelector 22
#define kStylisticAltFifteenOffSelector 31
#define kStylisticAltFifteenOnSelector 30
#define kStylisticAltFiveOffSelector 11
#define kStylisticAltFiveOnSelector 10
#define kStylisticAltFourOffSelector 9
#define kStylisticAltFourOnSelector 8
#define kStylisticAltFourteenOffSelector 29
#define kStylisticAltFourteenOnSelector 28
#define kStylisticAltNineOffSelector 19
#define kStylisticAltNineOnSelector 18
#define kStylisticAltNineteenOffSelector 39
#define kStylisticAltNineteenOnSelector 38
#define kStylisticAltOneOffSelector 3
#define kStylisticAltOneOnSelector 2
#define kStylisticAltSevenOffSelector 15
#define kStylisticAltSevenOnSelector 14
#define kStylisticAltSeventeenOffSelector 35
#define kStylisticAltSeventeenOnSelector 34
#define kStylisticAltSixOffSelector 13
#define kStylisticAltSixOnSelector 12
#define kStylisticAltSixteenOffSelector 33
#define kStylisticAltSixteenOnSelector 32
#define kStylisticAltTenOffSelector 21
#define kStylisticAltTenOnSelector 20
#define kStylisticAltThirteenOffSelector 27
#define kStylisticAltThirteenOnSelector 26
#define kStylisticAltThreeOffSelector 7
#define kStylisticAltThreeOnSelector 6
#define kStylisticAltTwelveOffSelector 25
#define kStylisticAltTwelveOnSelector 24
#define kStylisticAltTwentyOffSelector 41
#define kStylisticAltTwentyOnSelector 40
#define kStylisticAltTwoOffSelector 5
#define kStylisticAltTwoOnSelector 4
#define kStylisticAlternativesType 35
#define kSwashAlternatesOffSelector 3
#define kSwashAlternatesOnSelector 2
#define kThirdWidthTextSelector 3
#define kTraditionalNamesCharactersSelector 14
#define kUpperCasePetiteCapsSelector 2
#define kUpperCaseSmallCapsSelector 1
#define kUpperCaseType 38
/* Table data courtesy of Apple. */
static
const
struct
hb_aat_feature_mapping_t
{
hb_tag_t
otFeatureTag
;
uint16_t
aatFeatureType
;
uint16_t
selectorToEnable
;
uint16_t
selectorToDisable
;
static
inline
int
cmp
(
const
void
*
key_
,
const
void
*
entry_
)
{
hb_tag_t
key
=
*
(
unsigned
int
*
)
key_
;
const
hb_aat_feature_mapping_t
*
entry
=
(
const
hb_aat_feature_mapping_t
*
)
entry_
;
return
key
<
entry
->
otFeatureTag
?
-
1
:
key
>
entry
->
otFeatureTag
?
1
:
0
;
}
}
feature_mappings
[]
=
{
{
'
c2pc
'
,
kUpperCaseType
,
kUpperCasePetiteCapsSelector
,
kDefaultUpperCaseSelector
},
{
'
c2sc
'
,
kUpperCaseType
,
kUpperCaseSmallCapsSelector
,
kDefaultUpperCaseSelector
},
{
'
calt
'
,
kContextualAlternatesType
,
kContextualAlternatesOnSelector
,
kContextualAlternatesOffSelector
},
{
'
case
'
,
kCaseSensitiveLayoutType
,
kCaseSensitiveLayoutOnSelector
,
kCaseSensitiveLayoutOffSelector
}
,
{
'
clig
'
,
kLigaturesType
,
kContextualLigaturesOnSelector
,
kContextualLigaturesOffSelector
}
,
{
'
cpsp
'
,
kCaseSensitiveLayoutType
,
kCaseSensitiveSpacingOnSelector
,
kCaseSensitiveSpacingOffSelector
}
,
{
'
cswh
'
,
kContextualAlternatesType
,
kContextualSwashAlternatesOnSelector
,
kContextualSwashAlternatesOffSelector
}
,
{
'
dlig
'
,
kLigaturesType
,
kRareLigaturesOnSelector
,
kRareLigaturesOffSelector
}
,
{
'
expt
'
,
kCharacterShapeType
,
kExpertCharactersSelector
,
16
}
,
{
'
frac
'
,
kFractionsType
,
kDiagonalFractionsSelector
,
kNoFractionsSelector
}
,
{
'
fwid
'
,
kTextSpacingType
,
kMonospacedTextSelector
,
7
}
,
{
'
halt
'
,
kTextSpacingType
,
kAltHalfWidthTextSelector
,
7
}
,
{
'
hist
'
,
kLigaturesType
,
kHistoricalLigaturesOnSelector
,
kHistoricalLigaturesOffSelector
}
,
{
'
hkna
'
,
kAlternateKanaType
,
kAlternateHorizKanaOnSelector
,
kAlternateHorizKanaOffSelector
,
}
,
{
'
hlig
'
,
kLigaturesType
,
kHistoricalLigaturesOnSelector
,
kHistoricalLigaturesOffSelector
}
,
{
'
hngl
'
,
kTransliterationType
,
kHanjaToHangulSelector
,
kNoTransliterationSelector
}
,
{
'
hojo
'
,
kCharacterShapeType
,
kHojoCharactersSelector
,
16
}
,
{
'
hwid
'
,
kTextSpacingType
,
kHalfWidthTextSelector
,
7
}
,
{
'
ital
'
,
kItalicCJKRomanType
,
kCJKItalicRomanOnSelector
,
kCJKItalicRomanOffSelector
}
,
{
'
jp04
'
,
kCharacterShapeType
,
kJIS2004CharactersSelector
,
16
}
,
{
'
jp78
'
,
kCharacterShapeType
,
kJIS1978CharactersSelector
,
16
}
,
{
'
jp83
'
,
kCharacterShapeType
,
kJIS1983CharactersSelector
,
16
}
,
{
'
jp90
'
,
kCharacterShapeType
,
kJIS1990CharactersSelector
,
16
}
,
{
'
liga
'
,
kLigaturesType
,
kCommonLigaturesOnSelector
,
kCommonLigaturesOffSelector
}
,
{
'
lnum
'
,
kNumberCaseType
,
kUpperCaseNumbersSelector
,
2
}
,
{
'
mgrk
'
,
kMathematicalExtrasType
,
kMathematicalGreekOnSelector
,
kMathematicalGreekOffSelector
}
,
{
'
nlck
'
,
kCharacterShapeType
,
kNLCCharactersSelector
,
16
}
,
{
'
onum
'
,
kNumberCaseType
,
kLowerCaseNumbersSelector
,
2
}
,
{
'
ordn
'
,
kVerticalPositionType
,
kOrdinalsSelector
,
kNormalPositionSelector
}
,
{
'
palt
'
,
kTextSpacingType
,
kAltProportionalTextSelector
,
7
}
,
{
'
pcap
'
,
kLowerCaseType
,
kLowerCasePetiteCapsSelector
,
kDefaultLowerCaseSelector
}
,
{
'
pkna
'
,
kTextSpacingType
,
kProportionalTextSelector
,
7
}
,
{
'
pnum
'
,
kNumberSpacingType
,
kProportionalNumbersSelector
,
4
}
,
{
'
pwid
'
,
kTextSpacingType
,
kProportionalTextSelector
,
7
}
,
{
'
qwid
'
,
kTextSpacingType
,
kQuarterWidthTextSelector
,
7
}
,
{
'
ruby
'
,
kRubyKanaType
,
kRubyKanaOnSelector
,
kRubyKanaOffSelector
}
,
{
'
sinf
'
,
kVerticalPositionType
,
kScientificInferiorsSelector
,
kNormalPositionSelector
}
,
{
'
smcp
'
,
kLowerCaseType
,
kLowerCaseSmallCapsSelector
,
kDefaultLowerCaseSelector
}
,
{
'
smpl
'
,
kCharacterShapeType
,
kSimplifiedCharactersSelector
,
16
}
,
{
'
ss01
'
,
kStylisticAlternativesType
,
kStylisticAltOneOnSelector
,
kStylisticAltOneOffSelector
}
,
{
'
ss02
'
,
kStylisticAlternativesType
,
kStylisticAltTwoOnSelector
,
kStylisticAltTwoOffSelector
}
,
{
'
ss03
'
,
kStylisticAlternativesType
,
kStylisticAltThreeOnSelector
,
kStylisticAltThreeOffSelector
}
,
{
'
ss04
'
,
kStylisticAlternativesType
,
kStylisticAltFourOnSelector
,
kStylisticAltFourOffSelector
}
,
{
'
ss05
'
,
kStylisticAlternativesType
,
kStylisticAltFiveOnSelector
,
kStylisticAltFiveOffSelector
}
,
{
'
ss06
'
,
kStylisticAlternativesType
,
kStylisticAltSixOnSelector
,
kStylisticAltSixOffSelector
}
,
{
'
ss07
'
,
kStylisticAlternativesType
,
kStylisticAltSevenOnSelector
,
kStylisticAltSevenOffSelector
}
,
{
'
ss08
'
,
kStylisticAlternativesType
,
kStylisticAltEightOnSelector
,
kStylisticAltEightOffSelector
}
,
{
'
ss09
'
,
kStylisticAlternativesType
,
kStylisticAltNineOnSelector
,
kStylisticAltNineOffSelector
}
,
{
'
ss10
'
,
kStylisticAlternativesType
,
kStylisticAltTenOnSelector
,
kStylisticAltTenOffSelector
}
,
{
'
ss11
'
,
kStylisticAlternativesType
,
kStylisticAltElevenOnSelector
,
kStylisticAltElevenOffSelector
}
,
{
'
ss12
'
,
kStylisticAlternativesType
,
kStylisticAltTwelveOnSelector
,
kStylisticAltTwelveOffSelector
}
,
{
'
ss13
'
,
kStylisticAlternativesType
,
kStylisticAltThirteenOnSelector
,
kStylisticAltThirteenOffSelector
}
,
{
'
ss14
'
,
kStylisticAlternativesType
,
kStylisticAltFourteenOnSelector
,
kStylisticAltFourteenOffSelector
}
,
{
'
ss15
'
,
kStylisticAlternativesType
,
kStylisticAltFifteenOnSelector
,
kStylisticAltFifteenOffSelector
}
,
{
'
ss16
'
,
kStylisticAlternativesType
,
kStylisticAltSixteenOnSelector
,
kStylisticAltSixteenOffSelector
}
,
{
'
ss17
'
,
kStylisticAlternativesType
,
kStylisticAltSeventeenOnSelector
,
kStylisticAltSeventeenOffSelector
}
,
{
'
ss18
'
,
kStylisticAlternativesType
,
kStylisticAltEighteenOnSelector
,
kStylisticAltEighteenOffSelector
}
,
{
'
ss19
'
,
kStylisticAlternativesType
,
kStylisticAltNineteenOnSelector
,
kStylisticAltNineteenOffSelector
}
,
{
'
ss20
'
,
kStylisticAlternativesType
,
kStylisticAltTwentyOnSelector
,
kStylisticAltTwentyOffSelector
}
,
{
'
subs
'
,
kVerticalPositionType
,
kInferiorsSelector
,
kNormalPositionSelector
}
,
{
'
sups
'
,
kVerticalPositionType
,
kSuperiorsSelector
,
kNormalPositionSelector
}
,
{
'
swsh
'
,
kContextualAlternatesType
,
kSwashAlternatesOnSelector
,
kSwashAlternatesOffSelector
}
,
{
'
titl
'
,
kStyleOptionsType
,
kTitlingCapsSelector
,
kNoStyleOptionsSelector
}
,
{
'
tnam
'
,
kCharacterShapeType
,
kTraditionalNamesCharactersSelector
,
16
}
,
{
'
tnum
'
,
kNumberSpacingType
,
kMonospacedNumbersSelector
,
4
}
,
{
'
trad
'
,
kCharacterShapeType
,
kTraditionalCharactersSelector
,
16
}
,
{
'
twid
'
,
kTextSpacingType
,
kThirdWidthTextSelector
,
7
}
,
{
'
unic
'
,
kLetterCaseType
,
14
,
15
}
,
{
'
valt
'
,
kTextSpacingType
,
kAltProportionalTextSelector
,
7
}
,
{
'
vert
'
,
kVerticalSubstitutionType
,
kSubstituteVerticalFormsOnSelector
,
kSubstituteVerticalFormsOffSelector
}
,
{
'
vhal
'
,
kTextSpacingType
,
kAltHalfWidthTextSelector
,
7
}
,
{
'
vkna
'
,
kAlternateKanaType
,
kAlternateVertKanaOnSelector
,
kAlternateVertKanaOffSelector
}
,
{
'
vpal
'
,
kTextSpacingType
,
kAltProportionalTextSelector
,
7
}
,
{
'
vrt2
'
,
kVerticalSubstitutionType
,
kSubstituteVerticalFormsOnSelector
,
kSubstituteVerticalFormsOffSelector
}
,
{
'
zero
'
,
kTypographicExtrasType
,
kSlashedZeroOnSelector
,
kSlashedZeroOffSelector
}
,
}
;
HB_INTERNAL
const
hb_aat_feature_mapping_t
*
hb_aat_layout_find_feature_mapping
(
hb_tag_t
tag
)
{
return
bsearch
(
&
tag
,
feature_mappings
,
ARRAY_LENGTH
(
feature_mappings
),
sizeof
(
feature_mappings
[
0
]),
hb_aat_feature_mapping_t
::
cmp
);
}
hb_bool_t
_hb_coretext_shape
(
hb_shape_plan_t
*
shape_plan
,
hb_font_t
*
font
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录