@cantoo/fontkit 2.0.4 → 2.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-module.mjs +4448 -1142
- package/dist/browser-module.mjs.map +1 -1
- package/dist/browser.cjs +4449 -1142
- package/dist/browser.cjs.map +1 -1
- package/dist/main.cjs +4449 -1142
- package/dist/main.cjs.map +1 -1
- package/dist/module.mjs +4448 -1142
- package/dist/module.mjs.map +1 -1
- package/package.json +4 -1
- package/src/CmapProcessor.js +60 -21
- package/src/DFont.js +114 -14
- package/src/TTFFont.js +260 -62
- package/src/TrueTypeCollection.js +59 -15
- package/src/WOFF2Font.js +128 -22
- package/src/WOFFFont.js +45 -8
- package/src/aat/AATFeatureMap.js +83 -40
- package/src/aat/AATLayoutEngine.js +34 -2
- package/src/aat/AATLookupTable.js +24 -6
- package/src/aat/AATMorxProcessor.js +202 -65
- package/src/aat/AATStateMachine.js +35 -3
- package/src/base.js +20 -1
- package/src/cff/CFFCharsets.js +3 -0
- package/src/cff/CFFDict.js +81 -11
- package/src/cff/CFFEncodings.js +2 -0
- package/src/cff/CFFFont.js +120 -24
- package/src/cff/CFFIndex.js +66 -9
- package/src/cff/CFFOperand.js +53 -28
- package/src/cff/CFFPointer.js +41 -2
- package/src/cff/CFFPrivateDict.js +34 -24
- package/src/cff/CFFStandardStrings.js +68 -67
- package/src/cff/CFFTop.js +161 -68
- package/src/decorators.js +34 -15
- package/src/encodings.js +133 -116
- package/src/fs.js +10 -0
- package/src/glyph/BBox.js +14 -0
- package/src/glyph/CFFGlyph.js +293 -152
- package/src/glyph/COLRGlyph.js +40 -5
- package/src/glyph/Glyph.js +72 -13
- package/src/glyph/GlyphVariationProcessor.js +158 -62
- package/src/glyph/Path.js +119 -32
- package/src/glyph/SBIXGlyph.js +57 -8
- package/src/glyph/StandardNames.js +1 -0
- package/src/glyph/TTFGlyph.js +203 -63
- package/src/glyph/TTFGlyphEncoder.js +58 -26
- package/src/glyph/WOFF2Glyph.js +25 -6
- package/src/layout/GlyphPosition.js +6 -0
- package/src/layout/GlyphRun.js +28 -10
- package/src/layout/KernProcessor.js +63 -4
- package/src/layout/LayoutEngine.js +99 -26
- package/src/layout/Script.js +52 -26
- package/src/layout/UnicodeLayoutEngine.js +34 -10
- package/src/opentype/GPOSProcessor.js +156 -45
- package/src/opentype/GSUBProcessor.js +92 -33
- package/src/opentype/GlyphInfo.js +53 -5
- package/src/opentype/GlyphIterator.js +51 -2
- package/src/opentype/OTLayoutEngine.js +66 -8
- package/src/opentype/OTProcessor.js +284 -71
- package/src/opentype/ShapingPlan.js +52 -5
- package/src/opentype/shapers/ArabicShaper.js +27 -8
- package/src/opentype/shapers/DefaultShaper.js +54 -10
- package/src/opentype/shapers/HangulShaper.js +120 -42
- package/src/opentype/shapers/HebrewShaper.js +50 -16
- package/src/opentype/shapers/IndicShaper.js +159 -44
- package/src/opentype/shapers/ThaiShaper.js +50 -19
- package/src/opentype/shapers/UniversalShaper.js +83 -17
- package/src/opentype/shapers/index.js +48 -35
- package/src/opentype/shapers/indic-data.js +2 -2
- package/src/packages/unicode-properties/data-trie.js +2 -1
- package/src/packages/unicode-properties/data.js +13 -1
- package/src/packages/unicode-properties/dist/index.cjs +23 -10
- package/src/packages/unicode-properties/dist/index.cjs.map +2 -2
- package/src/packages/unicode-properties/dist/index.mjs +22 -10
- package/src/packages/unicode-properties/dist/index.mjs.map +2 -2
- package/src/packages/unicode-properties/generate.js +3 -4
- package/src/packages/unicode-properties/index.js +95 -30
- package/src/packages/unicode-properties/package.json +1 -1
- package/src/packages/unicode-trie/builder.js +146 -29
- package/src/packages/unicode-trie/dist/builder.cjs +135 -25
- package/src/packages/unicode-trie/dist/builder.cjs.map +2 -2
- package/src/packages/unicode-trie/dist/builder.mjs +134 -25
- package/src/packages/unicode-trie/dist/builder.mjs.map +2 -2
- package/src/packages/unicode-trie/dist/index.cjs +22 -9
- package/src/packages/unicode-trie/dist/index.cjs.map +2 -2
- package/src/packages/unicode-trie/dist/index.mjs +21 -9
- package/src/packages/unicode-trie/dist/index.mjs.map +2 -2
- package/src/packages/unicode-trie/index.js +63 -12
- package/src/packages/unicode-trie/package.json +1 -1
- package/src/packages/unicode-trie/swap.js +15 -2
- package/src/subset/CFFSubset.js +112 -22
- package/src/subset/Subset.js +23 -3
- package/src/subset/TTFSubset.js +84 -41
- package/src/tables/BASE.js +28 -27
- package/src/tables/COLR.js +10 -9
- package/src/tables/CPAL.js +2 -1
- package/src/tables/DSIG.js +8 -7
- package/src/tables/EBDT.js +10 -4
- package/src/tables/EBLC.js +70 -10
- package/src/tables/GDEF.js +18 -17
- package/src/tables/GPOS.js +153 -90
- package/src/tables/GSUB.js +50 -39
- package/src/tables/HVAR.js +51 -5
- package/src/tables/JSTF.js +17 -16
- package/src/tables/LTSH.js +4 -3
- package/src/tables/OS2.js +50 -49
- package/src/tables/PCLT.js +16 -15
- package/src/tables/STAT.js +46 -6
- package/src/tables/VDMX.js +18 -17
- package/src/tables/VORG.js +8 -7
- package/src/tables/WOFF2Directory.js +57 -9
- package/src/tables/WOFFDirectory.js +32 -20
- package/src/tables/aat.js +160 -35
- package/src/tables/avar.js +1 -0
- package/src/tables/bsln.js +3 -2
- package/src/tables/cmap.js +83 -63
- package/src/tables/cvt.js +1 -0
- package/src/tables/directory.js +56 -28
- package/src/tables/feat.js +24 -2
- package/src/tables/fpgm.js +1 -0
- package/src/tables/fvar.js +32 -4
- package/src/tables/gasp.js +6 -5
- package/src/tables/glyf.js +2 -1
- package/src/tables/gvar.js +29 -2
- package/src/tables/hdmx.js +18 -7
- package/src/tables/head.js +17 -16
- package/src/tables/hhea.js +15 -14
- package/src/tables/hmtx.js +18 -2
- package/src/tables/index.js +1 -5
- package/src/tables/just.js +15 -4
- package/src/tables/kern.js +84 -47
- package/src/tables/loca.js +23 -10
- package/src/tables/maxp.js +16 -15
- package/src/tables/morx.js +27 -20
- package/src/tables/name.js +120 -39
- package/src/tables/opbd.js +2 -1
- package/src/tables/opentype.js +126 -91
- package/src/tables/post.js +18 -11
- package/src/tables/prep.js +1 -0
- package/src/tables/sbix.js +12 -1
- package/src/tables/variations.js +29 -9
- package/src/tables/vhea.js +15 -14
- package/src/tables/vmtx.js +20 -4
- package/src/utils.js +15 -0
package/src/cff/CFFOperand.js
CHANGED
|
@@ -1,17 +1,31 @@
|
|
|
1
|
+
/** @typedef {import('restructure').DecodeStream} DecodeStream */
|
|
2
|
+
/** @typedef {import('restructure').EncodeStream} EncodeStream */
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Operand value that may force a 32-bit encoding (e.g. CFF pointer placeholders).
|
|
6
|
+
* @typedef {number | { forceLarge?: boolean, valueOf(): number }} CFFOperandValue
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
const FLOAT_EOF = 0xf;
|
|
2
10
|
const FLOAT_LOOKUP = [
|
|
3
11
|
'0', '1', '2', '3', '4', '5', '6', '7',
|
|
4
12
|
'8', '9', '.', 'E', 'E-', null, '-'
|
|
5
13
|
];
|
|
6
14
|
|
|
15
|
+
/** @type {Record<string, number>} */
|
|
7
16
|
const FLOAT_ENCODE_LOOKUP = {
|
|
8
17
|
'.': 10,
|
|
9
|
-
|
|
18
|
+
E: 11,
|
|
10
19
|
'E-': 12,
|
|
11
20
|
'-': 14
|
|
12
21
|
};
|
|
13
22
|
|
|
14
23
|
export default class CFFOperand {
|
|
24
|
+
/**
|
|
25
|
+
* @param {DecodeStream} stream
|
|
26
|
+
* @param {number} value
|
|
27
|
+
* @returns {number | null}
|
|
28
|
+
*/
|
|
15
29
|
static decode(stream, value) {
|
|
16
30
|
if (32 <= value && value <= 246) {
|
|
17
31
|
return value - 139;
|
|
@@ -53,83 +67,94 @@ export default class CFFOperand {
|
|
|
53
67
|
return null;
|
|
54
68
|
}
|
|
55
69
|
|
|
70
|
+
/**
|
|
71
|
+
* @param {CFFOperandValue} value
|
|
72
|
+
* @returns {number}
|
|
73
|
+
*/
|
|
56
74
|
static size(value) {
|
|
57
75
|
// if the value needs to be forced to the largest size (32 bit)
|
|
58
76
|
// e.g. for unknown pointers, set to 32768
|
|
59
|
-
|
|
60
|
-
|
|
77
|
+
/** @type {number} */
|
|
78
|
+
let n;
|
|
79
|
+
if (value && typeof value === 'object' && value.forceLarge) {
|
|
80
|
+
n = 32768;
|
|
81
|
+
} else {
|
|
82
|
+
n = Number(value);
|
|
61
83
|
}
|
|
62
84
|
|
|
63
|
-
if ((
|
|
64
|
-
let str = '' +
|
|
85
|
+
if ((n | 0) !== n) { // floating point
|
|
86
|
+
let str = '' + n;
|
|
65
87
|
return 1 + Math.ceil((str.length + 1) / 2);
|
|
66
|
-
|
|
67
|
-
} else if (-107 <= value && value <= 107) {
|
|
88
|
+
} else if (-107 <= n && n <= 107) {
|
|
68
89
|
return 1;
|
|
69
|
-
|
|
70
|
-
} else if (108 <= value && value <= 1131 || -1131 <= value && value <= -108) {
|
|
90
|
+
} else if (108 <= n && n <= 1131 || -1131 <= n && n <= -108) {
|
|
71
91
|
return 2;
|
|
72
|
-
|
|
73
|
-
} else if (-32768 <= value && value <= 32767) {
|
|
92
|
+
} else if (-32768 <= n && n <= 32767) {
|
|
74
93
|
return 3;
|
|
75
|
-
|
|
76
94
|
} else {
|
|
77
95
|
return 5;
|
|
78
96
|
}
|
|
79
97
|
}
|
|
80
98
|
|
|
99
|
+
/**
|
|
100
|
+
* @param {EncodeStream} stream
|
|
101
|
+
* @param {CFFOperandValue} value
|
|
102
|
+
* @returns {void}
|
|
103
|
+
*/
|
|
81
104
|
static encode(stream, value) {
|
|
82
105
|
// if the value needs to be forced to the largest size (32 bit)
|
|
83
106
|
// e.g. for unknown pointers, save the old value and set to 32768
|
|
84
107
|
let val = Number(value);
|
|
85
108
|
|
|
86
|
-
if (value.forceLarge) {
|
|
109
|
+
if (value && typeof value === 'object' && value.forceLarge) {
|
|
87
110
|
stream.writeUInt8(29);
|
|
88
|
-
|
|
89
|
-
|
|
111
|
+
stream.writeInt32BE(val);
|
|
112
|
+
return;
|
|
90
113
|
} else if ((val | 0) !== val) { // floating point
|
|
91
114
|
stream.writeUInt8(30);
|
|
92
115
|
|
|
93
116
|
let str = '' + val;
|
|
117
|
+
/** @type {number | undefined} */
|
|
94
118
|
let n2;
|
|
95
119
|
for (let i = 0; i < str.length; i += 2) {
|
|
96
120
|
let c1 = str[i];
|
|
97
|
-
let n1 = FLOAT_ENCODE_LOOKUP[c1]
|
|
121
|
+
let n1 = FLOAT_ENCODE_LOOKUP[c1] ?? (+c1);
|
|
98
122
|
|
|
99
123
|
if (i === str.length - 1) {
|
|
100
124
|
n2 = FLOAT_EOF;
|
|
101
125
|
} else {
|
|
102
126
|
let c2 = str[i + 1];
|
|
103
|
-
n2 = FLOAT_ENCODE_LOOKUP[c2]
|
|
127
|
+
n2 = FLOAT_ENCODE_LOOKUP[c2] ?? (+c2);
|
|
104
128
|
}
|
|
105
129
|
|
|
106
130
|
stream.writeUInt8((n1 << 4) | (n2 & 15));
|
|
107
131
|
}
|
|
108
132
|
|
|
109
133
|
if (n2 !== FLOAT_EOF) {
|
|
110
|
-
|
|
134
|
+
stream.writeUInt8((FLOAT_EOF << 4));
|
|
111
135
|
}
|
|
112
|
-
|
|
136
|
+
return;
|
|
113
137
|
} else if (-107 <= val && val <= 107) {
|
|
114
|
-
|
|
115
|
-
|
|
138
|
+
stream.writeUInt8(val + 139);
|
|
139
|
+
return;
|
|
116
140
|
} else if (108 <= val && val <= 1131) {
|
|
117
141
|
val -= 108;
|
|
118
142
|
stream.writeUInt8((val >> 8) + 247);
|
|
119
|
-
|
|
120
|
-
|
|
143
|
+
stream.writeUInt8(val & 0xff);
|
|
144
|
+
return;
|
|
121
145
|
} else if (-1131 <= val && val <= -108) {
|
|
122
146
|
val = -val - 108;
|
|
123
147
|
stream.writeUInt8((val >> 8) + 251);
|
|
124
|
-
|
|
125
|
-
|
|
148
|
+
stream.writeUInt8(val & 0xff);
|
|
149
|
+
return;
|
|
126
150
|
} else if (-32768 <= val && val <= 32767) {
|
|
127
151
|
stream.writeUInt8(28);
|
|
128
|
-
|
|
129
|
-
|
|
152
|
+
stream.writeInt16BE(val);
|
|
153
|
+
return;
|
|
130
154
|
} else {
|
|
131
155
|
stream.writeUInt8(29);
|
|
132
|
-
|
|
156
|
+
stream.writeInt32BE(val);
|
|
157
|
+
return;
|
|
133
158
|
}
|
|
134
159
|
}
|
|
135
160
|
}
|
package/src/cff/CFFPointer.js
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import * as r from 'restructure';
|
|
2
2
|
|
|
3
|
+
/** @typedef {import('restructure').BaseType} BaseType */
|
|
4
|
+
/** @typedef {import('restructure').DecodeStream} DecodeStream */
|
|
5
|
+
/** @typedef {import('restructure').EncodeStream} EncodeStream */
|
|
6
|
+
/** @typedef {import('restructure').PointerOptions} PointerOptions */
|
|
7
|
+
/** @typedef {import('restructure').StructValue} StructValue */
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* CFF dict pointer: offset comes from a prior operand rather than the stream.
|
|
11
|
+
* Temporary offsetType stubs only implement the method needed for that phase.
|
|
12
|
+
*/
|
|
3
13
|
export default class CFFPointer extends r.Pointer {
|
|
14
|
+
/**
|
|
15
|
+
* @param {BaseType | null} type
|
|
16
|
+
* @param {PointerOptions} [options]
|
|
17
|
+
*/
|
|
4
18
|
constructor(type, options = {}) {
|
|
5
19
|
if (options.type == null) {
|
|
6
20
|
options.type = 'global';
|
|
@@ -9,6 +23,12 @@ export default class CFFPointer extends r.Pointer {
|
|
|
9
23
|
super(null, type, options);
|
|
10
24
|
}
|
|
11
25
|
|
|
26
|
+
/**
|
|
27
|
+
* @param {DecodeStream} stream
|
|
28
|
+
* @param {StructValue | null | undefined} parent
|
|
29
|
+
* @param {number[]} operands
|
|
30
|
+
* @returns {unknown}
|
|
31
|
+
*/
|
|
12
32
|
decode(stream, parent, operands) {
|
|
13
33
|
this.offsetType = {
|
|
14
34
|
decode: () => operands[0]
|
|
@@ -17,6 +37,12 @@ export default class CFFPointer extends r.Pointer {
|
|
|
17
37
|
return super.decode(stream, parent, operands);
|
|
18
38
|
}
|
|
19
39
|
|
|
40
|
+
/**
|
|
41
|
+
* @param {EncodeStream | null} stream
|
|
42
|
+
* @param {unknown} value
|
|
43
|
+
* @param {StructValue | null | undefined} ctx
|
|
44
|
+
* @returns {Ptr[]}
|
|
45
|
+
*/
|
|
20
46
|
encode(stream, value, ctx) {
|
|
21
47
|
if (!stream) {
|
|
22
48
|
// compute the size (so ctx.pointerSize is correct)
|
|
@@ -28,22 +54,35 @@ export default class CFFPointer extends r.Pointer {
|
|
|
28
54
|
return [new Ptr(0)];
|
|
29
55
|
}
|
|
30
56
|
|
|
57
|
+
/** @type {number | null} */
|
|
31
58
|
let ptr = null;
|
|
32
59
|
this.offsetType = {
|
|
33
|
-
|
|
60
|
+
/**
|
|
61
|
+
* @param {EncodeStream} _stream
|
|
62
|
+
* @param {number} val
|
|
63
|
+
*/
|
|
64
|
+
encode: (_stream, val) => { ptr = val; }
|
|
34
65
|
};
|
|
35
66
|
|
|
36
67
|
super.encode(stream, value, ctx);
|
|
37
|
-
return [new Ptr(ptr)];
|
|
68
|
+
return [new Ptr(ptr ?? 0)];
|
|
38
69
|
}
|
|
39
70
|
}
|
|
40
71
|
|
|
41
72
|
class Ptr {
|
|
73
|
+
/**
|
|
74
|
+
* @param {number} val
|
|
75
|
+
*/
|
|
42
76
|
constructor(val) {
|
|
77
|
+
/** @type {number} */
|
|
43
78
|
this.val = val;
|
|
79
|
+
/** @type {boolean} */
|
|
44
80
|
this.forceLarge = true;
|
|
45
81
|
}
|
|
46
82
|
|
|
83
|
+
/**
|
|
84
|
+
* @returns {number}
|
|
85
|
+
*/
|
|
47
86
|
valueOf() {
|
|
48
87
|
return this.val;
|
|
49
88
|
}
|
|
@@ -2,38 +2,48 @@ import CFFDict from './CFFDict';
|
|
|
2
2
|
import CFFIndex from './CFFIndex';
|
|
3
3
|
import CFFPointer from './CFFPointer';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
/** @typedef {import('restructure').DecodeStream} DecodeStream */
|
|
6
|
+
/** @typedef {import('restructure').StructValue} StructValue */
|
|
7
|
+
|
|
8
|
+
/** @type {import('../../types/fontkit').CFFOperandType} */
|
|
9
|
+
const CFFBlendOp = {
|
|
10
|
+
/**
|
|
11
|
+
* @param {DecodeStream} _stream
|
|
12
|
+
* @param {StructValue} _parent
|
|
13
|
+
* @param {number[]} operands
|
|
14
|
+
* @returns {void}
|
|
15
|
+
*/
|
|
16
|
+
decode(_stream, _parent, operands) {
|
|
7
17
|
let numBlends = operands.pop();
|
|
8
18
|
|
|
9
19
|
// TODO: actually blend. For now just consume the deltas
|
|
10
20
|
// since we don't use any of the values anyway.
|
|
11
|
-
while (operands.length > numBlends) {
|
|
21
|
+
while (operands.length > /** @type {number} */ (numBlends)) {
|
|
12
22
|
operands.pop();
|
|
13
23
|
}
|
|
14
24
|
}
|
|
15
|
-
}
|
|
25
|
+
};
|
|
16
26
|
|
|
17
27
|
export default new CFFDict([
|
|
18
28
|
// key name type default
|
|
19
|
-
[6,
|
|
20
|
-
[7,
|
|
21
|
-
[8,
|
|
22
|
-
[9,
|
|
23
|
-
[[12, 9],
|
|
24
|
-
[[12, 10],
|
|
25
|
-
[[12, 11],
|
|
26
|
-
[10,
|
|
27
|
-
[11,
|
|
28
|
-
[[12, 12],
|
|
29
|
-
[[12, 13],
|
|
30
|
-
[[12, 14],
|
|
31
|
-
[[12, 17],
|
|
32
|
-
[[12, 18],
|
|
33
|
-
[[12, 19],
|
|
34
|
-
[20,
|
|
35
|
-
[21,
|
|
36
|
-
[22,
|
|
37
|
-
[23,
|
|
38
|
-
[19,
|
|
29
|
+
[6, 'BlueValues', 'delta', null],
|
|
30
|
+
[7, 'OtherBlues', 'delta', null],
|
|
31
|
+
[8, 'FamilyBlues', 'delta', null],
|
|
32
|
+
[9, 'FamilyOtherBlues', 'delta', null],
|
|
33
|
+
[[12, 9], 'BlueScale', 'number', 0.039625],
|
|
34
|
+
[[12, 10], 'BlueShift', 'number', 7],
|
|
35
|
+
[[12, 11], 'BlueFuzz', 'number', 1],
|
|
36
|
+
[10, 'StdHW', 'number', null],
|
|
37
|
+
[11, 'StdVW', 'number', null],
|
|
38
|
+
[[12, 12], 'StemSnapH', 'delta', null],
|
|
39
|
+
[[12, 13], 'StemSnapV', 'delta', null],
|
|
40
|
+
[[12, 14], 'ForceBold', 'boolean', false],
|
|
41
|
+
[[12, 17], 'LanguageGroup', 'number', 0],
|
|
42
|
+
[[12, 18], 'ExpansionFactor', 'number', 0.06],
|
|
43
|
+
[[12, 19], 'initialRandomSeed', 'number', 0],
|
|
44
|
+
[20, 'defaultWidthX', 'number', 0],
|
|
45
|
+
[21, 'nominalWidthX', 'number', 0],
|
|
46
|
+
[22, 'vsindex', 'number', 0],
|
|
47
|
+
[23, 'blend', CFFBlendOp, null],
|
|
48
|
+
[19, 'Subrs', new CFFPointer(new CFFIndex(), { type: 'local' }), null]
|
|
39
49
|
]);
|
|
@@ -1,71 +1,72 @@
|
|
|
1
1
|
// Automatically generated from Appendix A of the CFF specification; do
|
|
2
2
|
// not edit. Length should be 391.
|
|
3
|
+
/** @type {string[]} */
|
|
3
4
|
export default [
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
5
|
+
'.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar',
|
|
6
|
+
'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright',
|
|
7
|
+
'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one',
|
|
8
|
+
'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon',
|
|
9
|
+
'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C',
|
|
10
|
+
'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
|
|
11
|
+
'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash',
|
|
12
|
+
'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c',
|
|
13
|
+
'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
|
|
14
|
+
's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright',
|
|
15
|
+
'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen',
|
|
16
|
+
'florin', 'section', 'currency', 'quotesingle', 'quotedblleft',
|
|
17
|
+
'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash',
|
|
18
|
+
'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet',
|
|
19
|
+
'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright',
|
|
20
|
+
'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex',
|
|
21
|
+
'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla',
|
|
22
|
+
'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash',
|
|
23
|
+
'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe',
|
|
24
|
+
'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth',
|
|
25
|
+
'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar',
|
|
26
|
+
'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus',
|
|
27
|
+
'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex',
|
|
28
|
+
'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute',
|
|
29
|
+
'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis',
|
|
30
|
+
'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve',
|
|
31
|
+
'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave',
|
|
32
|
+
'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis',
|
|
33
|
+
'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex',
|
|
34
|
+
'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave',
|
|
35
|
+
'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde',
|
|
36
|
+
'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute',
|
|
37
|
+
'ydieresis', 'zcaron', 'exclamsmall', 'Hungarumlautsmall',
|
|
38
|
+
'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall',
|
|
39
|
+
'parenleftsuperior', 'parenrightsuperior', 'twodotenleader',
|
|
40
|
+
'onedotenleader', 'zerooldstyle', 'oneoldstyle', 'twooldstyle',
|
|
41
|
+
'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle',
|
|
42
|
+
'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'commasuperior',
|
|
43
|
+
'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior',
|
|
44
|
+
'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior',
|
|
45
|
+
'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior',
|
|
46
|
+
'ssuperior', 'tsuperior', 'ff', 'ffi', 'ffl', 'parenleftinferior',
|
|
47
|
+
'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall',
|
|
48
|
+
'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall',
|
|
49
|
+
'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall',
|
|
50
|
+
'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall',
|
|
51
|
+
'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary',
|
|
52
|
+
'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle',
|
|
53
|
+
'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall',
|
|
54
|
+
'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash',
|
|
55
|
+
'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall',
|
|
56
|
+
'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths',
|
|
57
|
+
'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'foursuperior',
|
|
58
|
+
'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior',
|
|
59
|
+
'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior',
|
|
60
|
+
'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior',
|
|
61
|
+
'seveninferior', 'eightinferior', 'nineinferior', 'centinferior',
|
|
62
|
+
'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall',
|
|
63
|
+
'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall',
|
|
64
|
+
'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall',
|
|
65
|
+
'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall',
|
|
66
|
+
'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall',
|
|
67
|
+
'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall',
|
|
68
|
+
'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall',
|
|
69
|
+
'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall',
|
|
70
|
+
'Ydieresissmall', '001.000', '001.001', '001.002', '001.003', 'Black',
|
|
71
|
+
'Bold', 'Book', 'Light', 'Medium', 'Regular', 'Roman', 'Semibold'
|
|
71
72
|
];
|