Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
17e9560e
Commit
17e9560e
authored
Jan 25, 2019
by
Nikolay Sivov
Committed by
Alexandre Julliard
Jan 25, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dwrite: Use array for script tags.
Signed-off-by:
Nikolay Sivov
<
nsivov@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
7c2ec67d
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
147 additions
and
146 deletions
+147
-146
analyzer.c
dlls/dwrite/analyzer.c
+147
-146
No files found.
dlls/dwrite/analyzer.c
View file @
17e9560e
...
...
@@ -36,8 +36,7 @@ extern const unsigned short wine_scripts_table[] DECLSPEC_HIDDEN;
struct
dwritescript_properties
{
DWRITE_SCRIPT_PROPERTIES
props
;
UINT32
scripttag
;
/* OpenType script tag */
UINT32
scriptalttag
;
/* Version 2 tag, 0 if not defined */
UINT32
scripttags
[
3
];
/* Maximum 2 script tags, 0-terminated. */
BOOL
is_complex
;
const
struct
scriptshaping_ops
*
ops
;
};
...
...
@@ -49,145 +48,145 @@ static const struct dwritescript_properties dwritescripts_properties[Script_Last
{
/* Zzzz */
{
0x7a7a7a5a
,
999
,
15
,
0x0020
,
0
,
0
,
0
,
0
,
0
,
0
,
0
}
},
{
/* Zyyy */
{
0x7979795a
,
998
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
}
},
{
/* Zinh */
{
0x686e695a
,
994
,
15
,
0x0020
,
1
,
0
,
0
,
0
,
0
,
0
,
0
}
},
{
/* Arab */
{
0x62617241
,
160
,
8
,
0x0640
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
_OT
(
'a'
,
'r'
,
'a'
,
'b'
),
0
,
TRUE
},
{
/* Armn */
{
0x6e6d7241
,
230
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'a'
,
'r'
,
'm'
,
'n'
)
},
{
/* Avst */
{
0x74737641
,
134
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'a'
,
'v'
,
's'
,
't'
)
},
{
/* Bali */
{
0x696c6142
,
360
,
15
,
0x0020
,
1
,
0
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'b'
,
'a'
,
'l'
,
'i'
)
},
{
/* Bamu */
{
0x756d6142
,
435
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'b'
,
'a'
,
'm'
,
'u'
)
},
{
/* Batk */
{
0x6b746142
,
365
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'b'
,
'a'
,
't'
,
'k'
)
},
{
/* Beng */
{
0x676e6542
,
325
,
15
,
0x0020
,
1
,
1
,
0
,
0
,
0
,
1
,
0
},
_OT
(
'b'
,
'e'
,
'n'
,
'g'
),
_OT
(
'b'
,
'n'
,
'g'
,
'2'
)
,
TRUE
},
{
/* Bopo */
{
0x6f706f42
,
285
,
1
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
_OT
(
'b'
,
'o'
,
'p'
,
'o'
)
},
{
/* Brah */
{
0x68617242
,
300
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'b'
,
'r'
,
'a'
,
'h'
)
},
{
/* Brai */
{
0x69617242
,
570
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'b'
,
'r'
,
'a'
,
'i'
),
0
,
TRUE
},
{
/* Bugi */
{
0x69677542
,
367
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'b'
,
'u'
,
'g'
,
'i'
)
},
{
/* Buhd */
{
0x64687542
,
372
,
8
,
0x0020
,
0
,
0
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'b'
,
'u'
,
'h'
,
'd'
)
},
{
/* Cans */
{
0x736e6143
,
440
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'c'
,
'a'
,
'n'
,
's'
),
0
,
TRUE
},
{
/* Cari */
{
0x69726143
,
201
,
1
,
0x0020
,
0
,
0
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'c'
,
'a'
,
'r'
,
'i'
)
},
{
/* Cham */
{
0x6d616843
,
358
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'c'
,
'h'
,
'a'
,
'm'
)
},
{
/* Cher */
{
0x72656843
,
445
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'c'
,
'h'
,
'e'
,
'r'
),
0
,
TRUE
},
{
/* Copt */
{
0x74706f43
,
204
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'c'
,
'o'
,
'p'
,
't'
)
},
{
/* Xsux */
{
0x78757358
,
20
,
1
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
_OT
(
'x'
,
's'
,
'u'
,
'x'
)
},
{
/* Cprt */
{
0x74727043
,
403
,
1
,
0x0020
,
0
,
0
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'c'
,
'p'
,
'r'
,
't'
)
},
{
/* Cyrl */
{
0x6c727943
,
220
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'c'
,
'y'
,
'r'
,
'l'
)
},
{
/* Dsrt */
{
0x74727344
,
250
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'd'
,
's'
,
'r'
,
't'
),
0
,
TRUE
},
{
/* Deva */
{
0x61766544
,
315
,
15
,
0x0020
,
1
,
1
,
0
,
0
,
0
,
1
,
0
},
_OT
(
'd'
,
'e'
,
'v'
,
'a'
),
_OT
(
'd'
,
'e'
,
'v'
,
'2'
)
,
TRUE
},
{
/* Egyp */
{
0x70796745
,
50
,
1
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
_OT
(
'e'
,
'g'
,
'y'
,
'p'
)
},
{
/* Ethi */
{
0x69687445
,
430
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'e'
,
't'
,
'h'
,
'i'
),
0
,
TRUE
},
{
/* Geor */
{
0x726f6547
,
240
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'g'
,
'e'
,
'o'
,
'r'
)
},
{
/* Glag */
{
0x67616c47
,
225
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'g'
,
'l'
,
'a'
,
'g'
)
},
{
/* Goth */
{
0x68746f47
,
206
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'g'
,
'o'
,
't'
,
'h'
)
},
{
/* Grek */
{
0x6b657247
,
200
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'g'
,
'r'
,
'e'
,
'k'
)
},
{
/* Gujr */
{
0x726a7547
,
320
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'g'
,
'u'
,
'j'
,
'r'
),
_OT
(
'g'
,
'j'
,
'r'
,
'2'
)
,
TRUE
},
{
/* Guru */
{
0x75727547
,
310
,
15
,
0x0020
,
1
,
1
,
0
,
0
,
0
,
1
,
0
},
_OT
(
'g'
,
'u'
,
'r'
,
'u'
),
_OT
(
'g'
,
'u'
,
'r'
,
'2'
)
,
TRUE
},
{
/* Hani */
{
0x696e6148
,
500
,
8
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
_OT
(
'h'
,
'a'
,
'n'
,
'i'
)
},
{
/* Hang */
{
0x676e6148
,
286
,
8
,
0x0020
,
1
,
1
,
1
,
1
,
0
,
0
,
0
},
_OT
(
'h'
,
'a'
,
'n'
,
'g'
),
0
,
TRUE
},
{
/* Hano */
{
0x6f6e6148
,
371
,
8
,
0x0020
,
0
,
0
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'h'
,
'a'
,
'n'
,
'o'
)
},
{
/* Hebr */
{
0x72626548
,
125
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'h'
,
'e'
,
'b'
,
'r'
),
0
,
TRUE
},
{
/* Hira */
{
0x61726948
,
410
,
8
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
_OT
(
'k'
,
'a'
,
'n'
,
'a'
)
},
{
/* Armi */
{
0x696d7241
,
124
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'a'
,
'r'
,
'm'
,
'i'
)
},
{
/* Phli */
{
0x696c6850
,
131
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'p'
,
'h'
,
'l'
,
'i'
)
},
{
/* Prti */
{
0x69747250
,
130
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'p'
,
'r'
,
't'
,
'i'
)
},
{
/* Java */
{
0x6176614a
,
361
,
15
,
0x0020
,
1
,
0
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'j'
,
'a'
,
'v'
,
'a'
)
},
{
/* Kthi */
{
0x6968744b
,
317
,
15
,
0x0020
,
1
,
1
,
0
,
0
,
0
,
1
,
0
},
_OT
(
'k'
,
't'
,
'h'
,
'i'
)
},
{
/* Knda */
{
0x61646e4b
,
345
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'k'
,
'n'
,
'd'
,
'a'
),
_OT
(
'k'
,
'n'
,
'd'
,
'2'
)
,
TRUE
},
{
/* Kana */
{
0x616e614b
,
411
,
8
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
_OT
(
'k'
,
'a'
,
'n'
,
'a'
)
},
{
/* Kali */
{
0x696c614b
,
357
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'k'
,
'a'
,
'l'
,
'i'
)
},
{
/* Khar */
{
0x7261684b
,
305
,
15
,
0x0020
,
1
,
0
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'k'
,
'h'
,
'a'
,
'r'
)
},
{
/* Khmr */
{
0x726d684b
,
355
,
8
,
0x0020
,
1
,
0
,
1
,
0
,
1
,
0
,
0
},
_OT
(
'k'
,
'h'
,
'm'
,
'r'
),
0
,
TRUE
},
{
/* Laoo */
{
0x6f6f614c
,
356
,
8
,
0x0020
,
1
,
0
,
1
,
0
,
1
,
0
,
0
},
_OT
(
'l'
,
'a'
,
'o'
,
' '
),
0
,
TRUE
},
{
/* Latn */
{
0x6e74614c
,
215
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'l'
,
'a'
,
't'
,
'n'
),
0
,
FALSE
,
&
latn_shaping_ops
},
{
/* Lepc */
{
0x6370654c
,
335
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'l'
,
'e'
,
'p'
,
'c'
)
},
{
/* Limb */
{
0x626d694c
,
336
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'l'
,
'i'
,
'm'
,
'b'
)
},
{
/* Linb */
{
0x626e694c
,
401
,
1
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
_OT
(
'l'
,
'i'
,
'n'
,
'b'
)
},
{
/* Lisu */
{
0x7573694c
,
399
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'l'
,
'i'
,
's'
,
'u'
)
},
{
/* Lyci */
{
0x6963794c
,
202
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'l'
,
'y'
,
'c'
,
'i'
)
},
{
/* Lydi */
{
0x6964794c
,
116
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'l'
,
'y'
,
'd'
,
'i'
)
},
{
/* Mlym */
{
0x6d796c4d
,
347
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'm'
,
'l'
,
'y'
,
'm'
),
_OT
(
'm'
,
'l'
,
'm'
,
'2'
)
,
TRUE
},
{
/* Mand */
{
0x646e614d
,
140
,
8
,
0x0640
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
_OT
(
'm'
,
'a'
,
'n'
,
'd'
)
},
{
/* Mtei */
{
0x6965744d
,
337
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'm'
,
't'
,
'e'
,
'i'
)
},
{
/* Mong */
{
0x676e6f4d
,
145
,
8
,
0x0020
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
_OT
(
'm'
,
'o'
,
'n'
,
'g'
),
0
,
TRUE
},
{
/* Mymr */
{
0x726d794d
,
350
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'm'
,
'y'
,
'm'
,
'r'
),
0
,
TRUE
},
{
/* Talu */
{
0x756c6154
,
354
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
't'
,
'a'
,
'l'
,
'u'
),
0
,
TRUE
},
{
/* Nkoo */
{
0x6f6f6b4e
,
165
,
8
,
0x0020
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
_OT
(
'n'
,
'k'
,
'o'
,
' '
),
0
,
TRUE
},
{
/* Ogam */
{
0x6d61674f
,
212
,
1
,
0x1680
,
0
,
1
,
0
,
0
,
0
,
1
,
0
},
_OT
(
'o'
,
'g'
,
'a'
,
'm'
),
0
,
TRUE
},
{
/* Olck */
{
0x6b636c4f
,
261
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'o'
,
'l'
,
'c'
,
'k'
)
},
{
/* Ital */
{
0x6c617449
,
210
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'i'
,
't'
,
'a'
,
'l'
)
},
{
/* Xpeo */
{
0x6f657058
,
30
,
1
,
0x0020
,
0
,
1
,
1
,
1
,
0
,
0
,
0
},
_OT
(
'x'
,
'p'
,
'e'
,
'o'
),
0
,
TRUE
},
{
/* Sarb */
{
0x62726153
,
105
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
's'
,
'a'
,
'r'
,
'b'
)
},
{
/* Orkh */
{
0x686b724f
,
175
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'o'
,
'r'
,
'k'
,
'h'
)
},
{
/* Orya */
{
0x6179724f
,
327
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'o'
,
'r'
,
'y'
,
'a'
),
_OT
(
'o'
,
'r'
,
'y'
,
'2'
)
,
TRUE
},
{
/* Osma */
{
0x616d734f
,
260
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'o'
,
's'
,
'm'
,
'a'
),
0
,
TRUE
},
{
/* Phag */
{
0x67616850
,
331
,
8
,
0x0020
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
_OT
(
'p'
,
'h'
,
'a'
,
'g'
),
0
,
TRUE
},
{
/* Phnx */
{
0x786e6850
,
115
,
1
,
0x0020
,
0
,
0
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'p'
,
'h'
,
'n'
,
'x'
)
},
{
/* Rjng */
{
0x676e6a52
,
363
,
8
,
0x0020
,
1
,
0
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'r'
,
'j'
,
'n'
,
'g'
)
},
{
/* Runr */
{
0x726e7552
,
211
,
1
,
0x0020
,
0
,
0
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'r'
,
'u'
,
'n'
,
'r'
),
0
,
TRUE
},
{
/* Samr */
{
0x726d6153
,
123
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
's'
,
'a'
,
'm'
,
'r'
)
},
{
/* Saur */
{
0x72756153
,
344
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
's'
,
'a'
,
'u'
,
'r'
)
},
{
/* Shaw */
{
0x77616853
,
281
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
's'
,
'h'
,
'a'
,
'w'
)
},
{
/* Sinh */
{
0x686e6953
,
348
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
's'
,
'i'
,
'n'
,
'h'
),
0
,
TRUE
},
{
/* Sund */
{
0x646e7553
,
362
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
's'
,
'u'
,
'n'
,
'd'
)
},
{
/* Sylo */
{
0x6f6c7953
,
316
,
8
,
0x0020
,
1
,
1
,
0
,
0
,
0
,
1
,
0
},
_OT
(
's'
,
'y'
,
'l'
,
'o'
)
},
{
/* Syrc */
{
0x63727953
,
135
,
8
,
0x0640
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
_OT
(
's'
,
'y'
,
'r'
,
'c'
),
0
,
TRUE
},
{
/* Tglg */
{
0x676c6754
,
370
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
't'
,
'g'
,
'l'
,
'g'
)
},
{
/* Tagb */
{
0x62676154
,
373
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
't'
,
'a'
,
'g'
,
'b'
)
},
{
/* Tale */
{
0x656c6154
,
353
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
't'
,
'a'
,
'l'
,
'e'
),
0
,
TRUE
},
{
/* Lana */
{
0x616e614c
,
351
,
8
,
0x0020
,
1
,
0
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'l'
,
'a'
,
'n'
,
'a'
)
},
{
/* Tavt */
{
0x74766154
,
359
,
8
,
0x0020
,
1
,
0
,
1
,
0
,
1
,
0
,
0
},
_OT
(
't'
,
'a'
,
'v'
,
't'
)
},
{
/* Taml */
{
0x6c6d6154
,
346
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
't'
,
'a'
,
'm'
,
'l'
),
_OT
(
't'
,
'm'
,
'l'
,
'2'
)
,
TRUE
},
{
/* Telu */
{
0x756c6554
,
340
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
't'
,
'e'
,
'l'
,
'u'
),
_OT
(
't'
,
'e'
,
'l'
,
'2'
)
,
TRUE
},
{
/* Thaa */
{
0x61616854
,
170
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
't'
,
'h'
,
'a'
,
'a'
),
0
,
TRUE
},
{
/* Thai */
{
0x69616854
,
352
,
8
,
0x0020
,
1
,
0
,
1
,
0
,
1
,
0
,
0
},
_OT
(
't'
,
'h'
,
'a'
,
'i'
),
0
,
TRUE
},
{
/* Tibt */
{
0x74626954
,
330
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
't'
,
'i'
,
'b'
,
't'
),
0
,
TRUE
},
{
/* Tfng */
{
0x676e6654
,
120
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
't'
,
'f'
,
'n'
,
'g'
),
0
,
TRUE
},
{
/* Ugar */
{
0x72616755
,
40
,
1
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
_OT
(
'u'
,
'g'
,
'a'
,
'r'
)
},
{
/* Vaii */
{
0x69696156
,
470
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'v'
,
'a'
,
'i'
,
' '
),
0
,
TRUE
},
{
/* Yiii */
{
0x69696959
,
460
,
1
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
_OT
(
'y'
,
'i'
,
' '
,
' '
),
0
,
TRUE
},
{
/* Cakm */
{
0x6d6b6143
,
349
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'c'
,
'a'
,
'k'
,
'm'
)
},
{
/* Merc */
{
0x6372654d
,
101
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'm'
,
'e'
,
'r'
,
'c'
)
},
{
/* Mero */
{
0x6f72654d
,
100
,
1
,
0x0020
,
0
,
1
,
1
,
1
,
0
,
0
,
0
},
_OT
(
'm'
,
'e'
,
'r'
,
'o'
)
},
{
/* Plrd */
{
0x64726c50
,
282
,
8
,
0x0020
,
1
,
0
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'p'
,
'l'
,
'r'
,
'd'
)
},
{
/* Shrd */
{
0x64726853
,
319
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
's'
,
'h'
,
'r'
,
'd'
)
},
{
/* Sora */
{
0x61726f53
,
398
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
's'
,
'o'
,
'r'
,
'a'
)
},
{
/* Takr */
{
0x726b6154
,
321
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
't'
,
'a'
,
'k'
,
'r'
)
},
{
/* Bass */
{
0x73736142
,
259
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'b'
,
'a'
,
's'
,
's'
)
},
{
/* Aghb */
{
0x62686741
,
239
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'a'
,
'g'
,
'h'
,
'b'
)
},
{
/* Dupl */
{
0x6c707544
,
755
,
8
,
0x0020
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
_OT
(
'd'
,
'u'
,
'p'
,
'l'
)
},
{
/* Elba */
{
0x61626c45
,
226
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'e'
,
'l'
,
'b'
,
'a'
)
},
{
/* Gran */
{
0x6e617247
,
343
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'g'
,
'r'
,
'a'
,
'n'
)
},
{
/* Khoj */
{
0x6a6f684b
,
322
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'k'
,
'h'
,
'o'
,
'j'
)
},
{
/* Sind */
{
0x646e6953
,
318
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
's'
,
'i'
,
'n'
,
'd'
)
},
{
/* Lina */
{
0x616e694c
,
400
,
1
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
_OT
(
'l'
,
'i'
,
'n'
,
'a'
)
},
{
/* Mahj */
{
0x6a68614d
,
314
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'm'
,
'a'
,
'h'
,
'j'
)
},
{
/* Mani */
{
0x696e614d
,
139
,
8
,
0x0640
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
_OT
(
'm'
,
'a'
,
'n'
,
'i'
)
},
{
/* Mend */
{
0x646e654d
,
438
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'm'
,
'e'
,
'n'
,
'd'
)
},
{
/* Modi */
{
0x69646f4d
,
324
,
15
,
0x0020
,
1
,
1
,
0
,
0
,
0
,
1
,
0
},
_OT
(
'm'
,
'o'
,
'd'
,
'i'
)
},
{
/* Mroo */
{
0x6f6f724d
,
199
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'm'
,
'r'
,
'o'
,
'o'
)
},
{
/* Nbat */
{
0x7461624e
,
159
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'n'
,
'b'
,
'a'
,
't'
)
},
{
/* Narb */
{
0x6272614e
,
106
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'n'
,
'a'
,
'r'
,
'b'
)
},
{
/* Perm */
{
0x6d726550
,
227
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'p'
,
'e'
,
'r'
,
'm'
)
},
{
/* Hmng */
{
0x676e6d48
,
450
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'h'
,
'm'
,
'n'
,
'g'
)
},
{
/* Palm */
{
0x6d6c6150
,
126
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'p'
,
'a'
,
'l'
,
'm'
)
},
{
/* Pauc */
{
0x63756150
,
263
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'p'
,
'a'
,
'u'
,
'c'
)
},
{
/* Phlp */
{
0x706c6850
,
132
,
8
,
0x0640
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
_OT
(
'p'
,
'h'
,
'l'
,
'p'
)
},
{
/* Sidd */
{
0x64646953
,
302
,
8
,
0x0020
,
1
,
0
,
1
,
1
,
0
,
0
,
0
},
_OT
(
's'
,
'i'
,
'd'
,
'd'
)
},
{
/* Tirh */
{
0x68726954
,
326
,
15
,
0x0020
,
1
,
1
,
0
,
0
,
0
,
1
,
0
},
_OT
(
't'
,
'i'
,
'r'
,
'h'
)
},
{
/* Wara */
{
0x61726157
,
262
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'w'
,
'a'
,
'r'
,
'a'
)
},
{
/* Adlm */
{
0x6d6c6441
,
166
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'a'
,
'd'
,
'l'
,
'm'
)
},
{
/* Ahom */
{
0x6d6f6841
,
338
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'a'
,
'h'
,
'o'
,
'm'
)
},
{
/* Hluw */
{
0x77756c48
,
80
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'h'
,
'l'
,
'u'
,
'w'
)
},
{
/* Bhks */
{
0x736b6842
,
334
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'b'
,
'h'
,
'k'
,
's'
)
},
{
/* Hatr */
{
0x72746148
,
127
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'h'
,
'a'
,
't'
,
'r'
)
},
{
/* Marc */
{
0x6372614d
,
332
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'm'
,
'a'
,
'r'
,
'c'
)
},
{
/* Mult */
{
0x746c754d
,
323
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'm'
,
'u'
,
'l'
,
't'
)
},
{
/* Newa */
{
0x6177654e
,
333
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'n'
,
'e'
,
'w'
,
'a'
)
},
{
/* Hung */
{
0x676e7548
,
176
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'h'
,
'u'
,
'n'
,
'g'
)
},
{
/* Osge */
{
0x6567734f
,
219
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'o'
,
's'
,
'g'
,
'e'
)
},
{
/* Sgnw */
{
0x776e6753
,
95
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
's'
,
'g'
,
'n'
,
'w'
)
},
{
/* Tang */
{
0x676e6154
,
520
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
't'
,
'a'
,
'n'
,
'g'
)
},
{
/* Gonm */
{
0x6d6e6f47
,
313
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'g'
,
'o'
,
'n'
,
'm'
)
},
{
/* Nshu */
{
0x7568734e
,
499
,
1
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
_OT
(
'n'
,
's'
,
'h'
,
'u'
)
},
{
/* Soyo */
{
0x6f796f53
,
329
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
's'
,
'o'
,
'y'
,
'o'
)
},
{
/* Zanb */
{
0x626e615a
,
339
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
_OT
(
'z'
,
'a'
,
'n'
,
'b'
)
},
{
/* Arab */
{
0x62617241
,
160
,
8
,
0x0640
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
{
_OT
(
'a'
,
'r'
,
'a'
,
'b'
)
}
,
TRUE
},
{
/* Armn */
{
0x6e6d7241
,
230
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'a'
,
'r'
,
'm'
,
'n'
)
}
},
{
/* Avst */
{
0x74737641
,
134
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'a'
,
'v'
,
's'
,
't'
)
}
},
{
/* Bali */
{
0x696c6142
,
360
,
15
,
0x0020
,
1
,
0
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'b'
,
'a'
,
'l'
,
'i'
)
}
},
{
/* Bamu */
{
0x756d6142
,
435
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'b'
,
'a'
,
'm'
,
'u'
)
}
},
{
/* Batk */
{
0x6b746142
,
365
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'b'
,
'a'
,
't'
,
'k'
)
}
},
{
/* Beng */
{
0x676e6542
,
325
,
15
,
0x0020
,
1
,
1
,
0
,
0
,
0
,
1
,
0
},
{
_OT
(
'b'
,
'n'
,
'g'
,
'2'
),
_OT
(
'b'
,
'e'
,
'n'
,
'g'
)
}
,
TRUE
},
{
/* Bopo */
{
0x6f706f42
,
285
,
1
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
{
_OT
(
'b'
,
'o'
,
'p'
,
'o'
)
}
},
{
/* Brah */
{
0x68617242
,
300
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'b'
,
'r'
,
'a'
,
'h'
)
}
},
{
/* Brai */
{
0x69617242
,
570
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'b'
,
'r'
,
'a'
,
'i'
)
}
,
TRUE
},
{
/* Bugi */
{
0x69677542
,
367
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'b'
,
'u'
,
'g'
,
'i'
)
}
},
{
/* Buhd */
{
0x64687542
,
372
,
8
,
0x0020
,
0
,
0
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'b'
,
'u'
,
'h'
,
'd'
)
}
},
{
/* Cans */
{
0x736e6143
,
440
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'c'
,
'a'
,
'n'
,
's'
)
}
,
TRUE
},
{
/* Cari */
{
0x69726143
,
201
,
1
,
0x0020
,
0
,
0
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'c'
,
'a'
,
'r'
,
'i'
)
}
},
{
/* Cham */
{
0x6d616843
,
358
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'c'
,
'h'
,
'a'
,
'm'
)
}
},
{
/* Cher */
{
0x72656843
,
445
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'c'
,
'h'
,
'e'
,
'r'
)
}
,
TRUE
},
{
/* Copt */
{
0x74706f43
,
204
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'c'
,
'o'
,
'p'
,
't'
)
}
},
{
/* Xsux */
{
0x78757358
,
20
,
1
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
{
_OT
(
'x'
,
's'
,
'u'
,
'x'
)
}
},
{
/* Cprt */
{
0x74727043
,
403
,
1
,
0x0020
,
0
,
0
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'c'
,
'p'
,
'r'
,
't'
)
}
},
{
/* Cyrl */
{
0x6c727943
,
220
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'c'
,
'y'
,
'r'
,
'l'
)
}
},
{
/* Dsrt */
{
0x74727344
,
250
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'd'
,
's'
,
'r'
,
't'
)
}
,
TRUE
},
{
/* Deva */
{
0x61766544
,
315
,
15
,
0x0020
,
1
,
1
,
0
,
0
,
0
,
1
,
0
},
{
_OT
(
'd'
,
'e'
,
'v'
,
'2'
),
_OT
(
'd'
,
'e'
,
'v'
,
'a'
)
}
,
TRUE
},
{
/* Egyp */
{
0x70796745
,
50
,
1
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
{
_OT
(
'e'
,
'g'
,
'y'
,
'p'
)
}
},
{
/* Ethi */
{
0x69687445
,
430
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'e'
,
't'
,
'h'
,
'i'
)
}
,
TRUE
},
{
/* Geor */
{
0x726f6547
,
240
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'g'
,
'e'
,
'o'
,
'r'
)
}
},
{
/* Glag */
{
0x67616c47
,
225
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'g'
,
'l'
,
'a'
,
'g'
)
}
},
{
/* Goth */
{
0x68746f47
,
206
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'g'
,
'o'
,
't'
,
'h'
)
}
},
{
/* Grek */
{
0x6b657247
,
200
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'g'
,
'r'
,
'e'
,
'k'
)
}
},
{
/* Gujr */
{
0x726a7547
,
320
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'g'
,
'j'
,
'r'
,
'2'
),
_OT
(
'g'
,
'u'
,
'j'
,
'r'
)
}
,
TRUE
},
{
/* Guru */
{
0x75727547
,
310
,
15
,
0x0020
,
1
,
1
,
0
,
0
,
0
,
1
,
0
},
{
_OT
(
'g'
,
'u'
,
'r'
,
'2'
),
_OT
(
'g'
,
'u'
,
'r'
,
'u'
)
}
,
TRUE
},
{
/* Hani */
{
0x696e6148
,
500
,
8
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
{
_OT
(
'h'
,
'a'
,
'n'
,
'i'
)
}
},
{
/* Hang */
{
0x676e6148
,
286
,
8
,
0x0020
,
1
,
1
,
1
,
1
,
0
,
0
,
0
},
{
_OT
(
'h'
,
'a'
,
'n'
,
'g'
)
}
,
TRUE
},
{
/* Hano */
{
0x6f6e6148
,
371
,
8
,
0x0020
,
0
,
0
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'h'
,
'a'
,
'n'
,
'o'
)
}
},
{
/* Hebr */
{
0x72626548
,
125
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'h'
,
'e'
,
'b'
,
'r'
)
}
,
TRUE
},
{
/* Hira */
{
0x61726948
,
410
,
8
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
{
_OT
(
'k'
,
'a'
,
'n'
,
'a'
)
}
},
{
/* Armi */
{
0x696d7241
,
124
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'a'
,
'r'
,
'm'
,
'i'
)
}
},
{
/* Phli */
{
0x696c6850
,
131
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'p'
,
'h'
,
'l'
,
'i'
)
}
},
{
/* Prti */
{
0x69747250
,
130
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'p'
,
'r'
,
't'
,
'i'
)
}
},
{
/* Java */
{
0x6176614a
,
361
,
15
,
0x0020
,
1
,
0
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'j'
,
'a'
,
'v'
,
'a'
)
}
},
{
/* Kthi */
{
0x6968744b
,
317
,
15
,
0x0020
,
1
,
1
,
0
,
0
,
0
,
1
,
0
},
{
_OT
(
'k'
,
't'
,
'h'
,
'i'
)
}
},
{
/* Knda */
{
0x61646e4b
,
345
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'k'
,
'n'
,
'd'
,
'2'
),
_OT
(
'k'
,
'n'
,
'd'
,
'a'
)
}
,
TRUE
},
{
/* Kana */
{
0x616e614b
,
411
,
8
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
{
_OT
(
'k'
,
'a'
,
'n'
,
'a'
)
}
},
{
/* Kali */
{
0x696c614b
,
357
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'k'
,
'a'
,
'l'
,
'i'
)
}
},
{
/* Khar */
{
0x7261684b
,
305
,
15
,
0x0020
,
1
,
0
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'k'
,
'h'
,
'a'
,
'r'
)
}
},
{
/* Khmr */
{
0x726d684b
,
355
,
8
,
0x0020
,
1
,
0
,
1
,
0
,
1
,
0
,
0
},
{
_OT
(
'k'
,
'h'
,
'm'
,
'r'
)
}
,
TRUE
},
{
/* Laoo */
{
0x6f6f614c
,
356
,
8
,
0x0020
,
1
,
0
,
1
,
0
,
1
,
0
,
0
},
{
_OT
(
'l'
,
'a'
,
'o'
,
' '
)
}
,
TRUE
},
{
/* Latn */
{
0x6e74614c
,
215
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'l'
,
'a'
,
't'
,
'n'
)
}
,
FALSE
,
&
latn_shaping_ops
},
{
/* Lepc */
{
0x6370654c
,
335
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'l'
,
'e'
,
'p'
,
'c'
)
}
},
{
/* Limb */
{
0x626d694c
,
336
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'l'
,
'i'
,
'm'
,
'b'
)
}
},
{
/* Linb */
{
0x626e694c
,
401
,
1
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
{
_OT
(
'l'
,
'i'
,
'n'
,
'b'
)
}
},
{
/* Lisu */
{
0x7573694c
,
399
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'l'
,
'i'
,
's'
,
'u'
)
}
},
{
/* Lyci */
{
0x6963794c
,
202
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'l'
,
'y'
,
'c'
,
'i'
)
}
},
{
/* Lydi */
{
0x6964794c
,
116
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'l'
,
'y'
,
'd'
,
'i'
)
}
},
{
/* Mlym */
{
0x6d796c4d
,
347
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'm'
,
'l'
,
'm'
,
'2'
),
_OT
(
'm'
,
'l'
,
'y'
,
'm'
)
}
,
TRUE
},
{
/* Mand */
{
0x646e614d
,
140
,
8
,
0x0640
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
{
_OT
(
'm'
,
'a'
,
'n'
,
'd'
)
}
},
{
/* Mtei */
{
0x6965744d
,
337
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'm'
,
't'
,
'e'
,
'i'
)
}
},
{
/* Mong */
{
0x676e6f4d
,
145
,
8
,
0x0020
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
{
_OT
(
'm'
,
'o'
,
'n'
,
'g'
)
}
,
TRUE
},
{
/* Mymr */
{
0x726d794d
,
350
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'm'
,
'y'
,
'm'
,
'r'
)
}
,
TRUE
},
{
/* Talu */
{
0x756c6154
,
354
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
't'
,
'a'
,
'l'
,
'u'
)
}
,
TRUE
},
{
/* Nkoo */
{
0x6f6f6b4e
,
165
,
8
,
0x0020
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
{
_OT
(
'n'
,
'k'
,
'o'
,
' '
)
}
,
TRUE
},
{
/* Ogam */
{
0x6d61674f
,
212
,
1
,
0x1680
,
0
,
1
,
0
,
0
,
0
,
1
,
0
},
{
_OT
(
'o'
,
'g'
,
'a'
,
'm'
)
}
,
TRUE
},
{
/* Olck */
{
0x6b636c4f
,
261
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'o'
,
'l'
,
'c'
,
'k'
)
}
},
{
/* Ital */
{
0x6c617449
,
210
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'i'
,
't'
,
'a'
,
'l'
)
}
},
{
/* Xpeo */
{
0x6f657058
,
30
,
1
,
0x0020
,
0
,
1
,
1
,
1
,
0
,
0
,
0
},
{
_OT
(
'x'
,
'p'
,
'e'
,
'o'
)
}
,
TRUE
},
{
/* Sarb */
{
0x62726153
,
105
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
's'
,
'a'
,
'r'
,
'b'
)
}
},
{
/* Orkh */
{
0x686b724f
,
175
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'o'
,
'r'
,
'k'
,
'h'
)
}
},
{
/* Orya */
{
0x6179724f
,
327
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'o'
,
'r'
,
'y'
,
'2'
),
_OT
(
'o'
,
'r'
,
'y'
,
'a'
)
}
,
TRUE
},
{
/* Osma */
{
0x616d734f
,
260
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'o'
,
's'
,
'm'
,
'a'
)
}
,
TRUE
},
{
/* Phag */
{
0x67616850
,
331
,
8
,
0x0020
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
{
_OT
(
'p'
,
'h'
,
'a'
,
'g'
)
}
,
TRUE
},
{
/* Phnx */
{
0x786e6850
,
115
,
1
,
0x0020
,
0
,
0
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'p'
,
'h'
,
'n'
,
'x'
)
}
},
{
/* Rjng */
{
0x676e6a52
,
363
,
8
,
0x0020
,
1
,
0
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'r'
,
'j'
,
'n'
,
'g'
)
}
},
{
/* Runr */
{
0x726e7552
,
211
,
1
,
0x0020
,
0
,
0
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'r'
,
'u'
,
'n'
,
'r'
)
}
,
TRUE
},
{
/* Samr */
{
0x726d6153
,
123
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
's'
,
'a'
,
'm'
,
'r'
)
}
},
{
/* Saur */
{
0x72756153
,
344
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
's'
,
'a'
,
'u'
,
'r'
)
}
},
{
/* Shaw */
{
0x77616853
,
281
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
's'
,
'h'
,
'a'
,
'w'
)
}
},
{
/* Sinh */
{
0x686e6953
,
348
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
's'
,
'i'
,
'n'
,
'h'
)
}
,
TRUE
},
{
/* Sund */
{
0x646e7553
,
362
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
's'
,
'u'
,
'n'
,
'd'
)
}
},
{
/* Sylo */
{
0x6f6c7953
,
316
,
8
,
0x0020
,
1
,
1
,
0
,
0
,
0
,
1
,
0
},
{
_OT
(
's'
,
'y'
,
'l'
,
'o'
)
}
},
{
/* Syrc */
{
0x63727953
,
135
,
8
,
0x0640
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
{
_OT
(
's'
,
'y'
,
'r'
,
'c'
)
}
,
TRUE
},
{
/* Tglg */
{
0x676c6754
,
370
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
't'
,
'g'
,
'l'
,
'g'
)
}
},
{
/* Tagb */
{
0x62676154
,
373
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
't'
,
'a'
,
'g'
,
'b'
)
}
},
{
/* Tale */
{
0x656c6154
,
353
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
't'
,
'a'
,
'l'
,
'e'
)
}
,
TRUE
},
{
/* Lana */
{
0x616e614c
,
351
,
8
,
0x0020
,
1
,
0
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'l'
,
'a'
,
'n'
,
'a'
)
}
},
{
/* Tavt */
{
0x74766154
,
359
,
8
,
0x0020
,
1
,
0
,
1
,
0
,
1
,
0
,
0
},
{
_OT
(
't'
,
'a'
,
'v'
,
't'
)
}
},
{
/* Taml */
{
0x6c6d6154
,
346
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
't'
,
'm'
,
'l'
,
'2'
),
_OT
(
't'
,
'a'
,
'm'
,
'l'
)
}
,
TRUE
},
{
/* Telu */
{
0x756c6554
,
340
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
't'
,
'e'
,
'l'
,
'2'
),
_OT
(
't'
,
'e'
,
'l'
,
'u'
)
}
,
TRUE
},
{
/* Thaa */
{
0x61616854
,
170
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
't'
,
'h'
,
'a'
,
'a'
)
}
,
TRUE
},
{
/* Thai */
{
0x69616854
,
352
,
8
,
0x0020
,
1
,
0
,
1
,
0
,
1
,
0
,
0
},
{
_OT
(
't'
,
'h'
,
'a'
,
'i'
)
}
,
TRUE
},
{
/* Tibt */
{
0x74626954
,
330
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
't'
,
'i'
,
'b'
,
't'
)
}
,
TRUE
},
{
/* Tfng */
{
0x676e6654
,
120
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
't'
,
'f'
,
'n'
,
'g'
)
}
,
TRUE
},
{
/* Ugar */
{
0x72616755
,
40
,
1
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
{
_OT
(
'u'
,
'g'
,
'a'
,
'r'
)
}
},
{
/* Vaii */
{
0x69696156
,
470
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'v'
,
'a'
,
'i'
,
' '
)
}
,
TRUE
},
{
/* Yiii */
{
0x69696959
,
460
,
1
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
{
_OT
(
'y'
,
'i'
,
' '
,
' '
)
}
,
TRUE
},
{
/* Cakm */
{
0x6d6b6143
,
349
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'c'
,
'a'
,
'k'
,
'm'
)
}
},
{
/* Merc */
{
0x6372654d
,
101
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'm'
,
'e'
,
'r'
,
'c'
)
}
},
{
/* Mero */
{
0x6f72654d
,
100
,
1
,
0x0020
,
0
,
1
,
1
,
1
,
0
,
0
,
0
},
{
_OT
(
'm'
,
'e'
,
'r'
,
'o'
)
}
},
{
/* Plrd */
{
0x64726c50
,
282
,
8
,
0x0020
,
1
,
0
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'p'
,
'l'
,
'r'
,
'd'
)
}
},
{
/* Shrd */
{
0x64726853
,
319
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
's'
,
'h'
,
'r'
,
'd'
)
}
},
{
/* Sora */
{
0x61726f53
,
398
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
's'
,
'o'
,
'r'
,
'a'
)
}
},
{
/* Takr */
{
0x726b6154
,
321
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
't'
,
'a'
,
'k'
,
'r'
)
}
},
{
/* Bass */
{
0x73736142
,
259
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'b'
,
'a'
,
's'
,
's'
)
}
},
{
/* Aghb */
{
0x62686741
,
239
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'a'
,
'g'
,
'h'
,
'b'
)
}
},
{
/* Dupl */
{
0x6c707544
,
755
,
8
,
0x0020
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
{
_OT
(
'd'
,
'u'
,
'p'
,
'l'
)
}
},
{
/* Elba */
{
0x61626c45
,
226
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'e'
,
'l'
,
'b'
,
'a'
)
}
},
{
/* Gran */
{
0x6e617247
,
343
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'g'
,
'r'
,
'a'
,
'n'
)
}
},
{
/* Khoj */
{
0x6a6f684b
,
322
,
15
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'k'
,
'h'
,
'o'
,
'j'
)
}
},
{
/* Sind */
{
0x646e6953
,
318
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
's'
,
'i'
,
'n'
,
'd'
)
}
},
{
/* Lina */
{
0x616e694c
,
400
,
1
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
{
_OT
(
'l'
,
'i'
,
'n'
,
'a'
)
}
},
{
/* Mahj */
{
0x6a68614d
,
314
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'm'
,
'a'
,
'h'
,
'j'
)
}
},
{
/* Mani */
{
0x696e614d
,
139
,
8
,
0x0640
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
{
_OT
(
'm'
,
'a'
,
'n'
,
'i'
)
}
},
{
/* Mend */
{
0x646e654d
,
438
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'm'
,
'e'
,
'n'
,
'd'
)
}
},
{
/* Modi */
{
0x69646f4d
,
324
,
15
,
0x0020
,
1
,
1
,
0
,
0
,
0
,
1
,
0
},
{
_OT
(
'm'
,
'o'
,
'd'
,
'i'
)
}
},
{
/* Mroo */
{
0x6f6f724d
,
199
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'm'
,
'r'
,
'o'
,
'o'
)
}
},
{
/* Nbat */
{
0x7461624e
,
159
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'n'
,
'b'
,
'a'
,
't'
)
}
},
{
/* Narb */
{
0x6272614e
,
106
,
1
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'n'
,
'a'
,
'r'
,
'b'
)
}
},
{
/* Perm */
{
0x6d726550
,
227
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'p'
,
'e'
,
'r'
,
'm'
)
}
},
{
/* Hmng */
{
0x676e6d48
,
450
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'h'
,
'm'
,
'n'
,
'g'
)
}
},
{
/* Palm */
{
0x6d6c6150
,
126
,
8
,
0x0020
,
1
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'p'
,
'a'
,
'l'
,
'm'
)
}
},
{
/* Pauc */
{
0x63756150
,
263
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'p'
,
'a'
,
'u'
,
'c'
)
}
},
{
/* Phlp */
{
0x706c6850
,
132
,
8
,
0x0640
,
0
,
1
,
0
,
0
,
0
,
1
,
1
},
{
_OT
(
'p'
,
'h'
,
'l'
,
'p'
)
}
},
{
/* Sidd */
{
0x64646953
,
302
,
8
,
0x0020
,
1
,
0
,
1
,
1
,
0
,
0
,
0
},
{
_OT
(
's'
,
'i'
,
'd'
,
'd'
)
}
},
{
/* Tirh */
{
0x68726954
,
326
,
15
,
0x0020
,
1
,
1
,
0
,
0
,
0
,
1
,
0
},
{
_OT
(
't'
,
'i'
,
'r'
,
'h'
)
}
},
{
/* Wara */
{
0x61726157
,
262
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'w'
,
'a'
,
'r'
,
'a'
)
}
},
{
/* Adlm */
{
0x6d6c6441
,
166
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'a'
,
'd'
,
'l'
,
'm'
)
}
},
{
/* Ahom */
{
0x6d6f6841
,
338
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'a'
,
'h'
,
'o'
,
'm'
)
}
},
{
/* Hluw */
{
0x77756c48
,
80
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'h'
,
'l'
,
'u'
,
'w'
)
}
},
{
/* Bhks */
{
0x736b6842
,
334
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'b'
,
'h'
,
'k'
,
's'
)
}
},
{
/* Hatr */
{
0x72746148
,
127
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'h'
,
'a'
,
't'
,
'r'
)
}
},
{
/* Marc */
{
0x6372614d
,
332
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'm'
,
'a'
,
'r'
,
'c'
)
}
},
{
/* Mult */
{
0x746c754d
,
323
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'm'
,
'u'
,
'l'
,
't'
)
}
},
{
/* Newa */
{
0x6177654e
,
333
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'n'
,
'e'
,
'w'
,
'a'
)
}
},
{
/* Hung */
{
0x676e7548
,
176
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'h'
,
'u'
,
'n'
,
'g'
)
}
},
{
/* Osge */
{
0x6567734f
,
219
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'o'
,
's'
,
'g'
,
'e'
)
}
},
{
/* Sgnw */
{
0x776e6753
,
95
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
's'
,
'g'
,
'n'
,
'w'
)
}
},
{
/* Tang */
{
0x676e6154
,
520
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
't'
,
'a'
,
'n'
,
'g'
)
}
},
{
/* Gonm */
{
0x6d6e6f47
,
313
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'g'
,
'o'
,
'n'
,
'm'
)
}
},
{
/* Nshu */
{
0x7568734e
,
499
,
1
,
0x0020
,
0
,
0
,
1
,
1
,
0
,
0
,
0
},
{
_OT
(
'n'
,
's'
,
'h'
,
'u'
)
}
},
{
/* Soyo */
{
0x6f796f53
,
329
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
's'
,
'o'
,
'y'
,
'o'
)
}
},
{
/* Zanb */
{
0x626e615a
,
339
,
8
,
0x0020
,
0
,
1
,
1
,
0
,
0
,
0
,
0
},
{
_OT
(
'z'
,
'a'
,
'n'
,
'b'
)
}
},
};
#undef _OT
...
...
@@ -1812,6 +1811,7 @@ static HRESULT WINAPI dwritetextanalyzer2_GetTypographicFeatures(IDWriteTextAnal
UINT32
max_tagcount
,
UINT32
*
actual_tagcount
,
DWRITE_FONT_FEATURE_TAG
*
tags
)
{
const
struct
dwritescript_properties
*
props
;
const
DWORD
*
scripts
;
HRESULT
hr
=
S_OK
;
UINT32
language
;
...
...
@@ -1825,11 +1825,12 @@ static HRESULT WINAPI dwritetextanalyzer2_GetTypographicFeatures(IDWriteTextAnal
props
=
&
dwritescripts_properties
[
sa
.
script
];
*
actual_tagcount
=
0
;
if
(
props
->
scriptalttag
)
hr
=
opentype_get_typographic_features
(
fontface
,
props
->
scriptalttag
,
language
,
max_tagcount
,
actual_tagcount
,
tags
);
if
(
*
actual_tagcount
==
0
)
hr
=
opentype_get_typographic_features
(
fontface
,
props
->
scripttag
,
language
,
max_tagcount
,
actual_tagcount
,
tags
);
scripts
=
props
->
scripttags
;
while
(
*
scripts
&&
!*
actual_tagcount
)
{
hr
=
opentype_get_typographic_features
(
fontface
,
*
scripts
,
language
,
max_tagcount
,
actual_tagcount
,
tags
);
scripts
++
;
}
return
hr
;
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment