ttfunk 1.6.2.1 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +2 -1
- data.tar.gz.sig +0 -0
- data/CHANGELOG.md +15 -1
- data/lib/ttfunk.rb +3 -2
- data/lib/ttfunk/bit_field.rb +1 -1
- data/lib/ttfunk/collection.rb +8 -2
- data/lib/ttfunk/encoded_string.rb +3 -3
- data/lib/ttfunk/max.rb +1 -0
- data/lib/ttfunk/min.rb +1 -0
- data/lib/ttfunk/one_based_array.rb +1 -1
- data/lib/ttfunk/otf_encoder.rb +1 -1
- data/lib/ttfunk/reader.rb +3 -3
- data/lib/ttfunk/sci_form.rb +1 -1
- data/lib/ttfunk/subset.rb +3 -3
- data/lib/ttfunk/subset/base.rb +24 -21
- data/lib/ttfunk/subset/code_page.rb +16 -19
- data/lib/ttfunk/subset/unicode.rb +8 -6
- data/lib/ttfunk/subset/unicode_8bit.rb +14 -12
- data/lib/ttfunk/sum.rb +1 -0
- data/lib/ttfunk/table/cff.rb +17 -17
- data/lib/ttfunk/table/cff/charset.rb +31 -30
- data/lib/ttfunk/table/cff/charsets.rb +3 -3
- data/lib/ttfunk/table/cff/charstring.rb +54 -55
- data/lib/ttfunk/table/cff/dict.rb +6 -4
- data/lib/ttfunk/table/cff/encoding.rb +20 -21
- data/lib/ttfunk/table/cff/encodings.rb +1 -1
- data/lib/ttfunk/table/cff/fd_selector.rb +14 -11
- data/lib/ttfunk/table/cff/font_index.rb +7 -6
- data/lib/ttfunk/table/cff/index.rb +6 -5
- data/lib/ttfunk/table/cff/one_based_index.rb +7 -3
- data/lib/ttfunk/table/cff/path.rb +5 -3
- data/lib/ttfunk/table/cff/top_dict.rb +7 -6
- data/lib/ttfunk/table/cff/top_index.rb +5 -4
- data/lib/ttfunk/table/cmap.rb +8 -6
- data/lib/ttfunk/table/cmap/format00.rb +7 -6
- data/lib/ttfunk/table/cmap/format04.rb +16 -15
- data/lib/ttfunk/table/cmap/format06.rb +6 -5
- data/lib/ttfunk/table/cmap/format10.rb +6 -5
- data/lib/ttfunk/table/cmap/format12.rb +13 -12
- data/lib/ttfunk/table/cmap/subtable.rb +4 -4
- data/lib/ttfunk/table/dsig.rb +11 -9
- data/lib/ttfunk/table/glyf.rb +3 -3
- data/lib/ttfunk/table/glyf/compound.rb +8 -8
- data/lib/ttfunk/table/hmtx.rb +6 -5
- data/lib/ttfunk/table/kern.rb +4 -4
- data/lib/ttfunk/table/kern/format0.rb +1 -1
- data/lib/ttfunk/table/loca.rb +7 -6
- data/lib/ttfunk/table/name.rb +6 -5
- data/lib/ttfunk/table/os2.rb +261 -151
- data/lib/ttfunk/table/post.rb +1 -1
- data/lib/ttfunk/table/sbix.rb +15 -13
- data/lib/ttfunk/table/vorg.rb +1 -1
- data/lib/ttfunk/ttf_encoder.rb +4 -4
- metadata +29 -99
- metadata.gz.sig +0 -0
data/lib/ttfunk/table/os2.rb
CHANGED
@@ -44,100 +44,209 @@ module TTFunk
|
|
44
44
|
attr_reader :max_context
|
45
45
|
|
46
46
|
CODE_PAGE_BITS = {
|
47
|
-
1252 => 0,
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
47
|
+
1252 => 0,
|
48
|
+
1250 => 1,
|
49
|
+
1251 => 2,
|
50
|
+
1253 => 3,
|
51
|
+
1254 => 4,
|
52
|
+
1255 => 5,
|
53
|
+
1256 => 6,
|
54
|
+
1257 => 7,
|
55
|
+
1258 => 8,
|
56
|
+
874 => 16,
|
57
|
+
932 => 17,
|
58
|
+
936 => 18,
|
59
|
+
949 => 19,
|
60
|
+
950 => 20,
|
61
|
+
1361 => 21,
|
62
|
+
10_000 => 29,
|
63
|
+
869 => 48,
|
64
|
+
866 => 49,
|
65
|
+
865 => 50,
|
66
|
+
864 => 51,
|
67
|
+
863 => 52,
|
68
|
+
862 => 53,
|
69
|
+
861 => 54,
|
70
|
+
860 => 55,
|
71
|
+
857 => 56,
|
72
|
+
855 => 57,
|
73
|
+
852 => 58,
|
74
|
+
775 => 59,
|
75
|
+
737 => 60,
|
76
|
+
708 => 61,
|
77
|
+
850 => 62,
|
78
|
+
437 => 63
|
54
79
|
}.freeze
|
55
80
|
|
56
81
|
UNICODE_BLOCKS = {
|
57
|
-
(0x0000..0x007F) => 0,
|
58
|
-
(
|
59
|
-
(
|
60
|
-
(
|
61
|
-
(
|
62
|
-
(
|
63
|
-
(
|
64
|
-
(
|
65
|
-
(
|
66
|
-
(
|
67
|
-
(
|
68
|
-
(
|
69
|
-
(
|
70
|
-
(
|
71
|
-
(
|
72
|
-
(
|
73
|
-
(
|
74
|
-
(
|
75
|
-
(
|
76
|
-
(
|
77
|
-
(
|
78
|
-
(
|
79
|
-
(
|
80
|
-
(
|
81
|
-
(
|
82
|
-
(
|
83
|
-
(
|
84
|
-
(
|
85
|
-
(
|
86
|
-
(
|
87
|
-
(
|
88
|
-
(
|
89
|
-
(
|
90
|
-
(
|
91
|
-
(
|
92
|
-
(
|
93
|
-
(
|
94
|
-
(
|
95
|
-
(
|
96
|
-
(
|
97
|
-
(
|
98
|
-
(
|
99
|
-
(
|
100
|
-
(
|
101
|
-
(
|
102
|
-
(
|
103
|
-
(
|
104
|
-
(
|
105
|
-
(
|
106
|
-
(
|
107
|
-
(
|
108
|
-
(
|
109
|
-
(
|
110
|
-
(
|
111
|
-
(
|
112
|
-
(
|
113
|
-
(
|
114
|
-
(
|
115
|
-
(
|
116
|
-
(
|
117
|
-
(
|
118
|
-
(
|
119
|
-
(
|
120
|
-
(
|
121
|
-
(
|
122
|
-
(
|
123
|
-
(
|
124
|
-
(
|
125
|
-
(
|
126
|
-
(
|
127
|
-
(
|
128
|
-
(
|
129
|
-
(
|
130
|
-
(
|
131
|
-
(
|
132
|
-
(
|
133
|
-
(
|
134
|
-
(
|
135
|
-
(
|
136
|
-
(
|
137
|
-
(
|
138
|
-
(
|
139
|
-
(
|
140
|
-
(
|
82
|
+
(0x0000..0x007F) => 0,
|
83
|
+
(0x0080..0x00FF) => 1,
|
84
|
+
(0x0100..0x017F) => 2,
|
85
|
+
(0x0180..0x024F) => 3,
|
86
|
+
(0x0250..0x02AF) => 4,
|
87
|
+
(0x1D00..0x1D7F) => 4,
|
88
|
+
(0x1D80..0x1DBF) => 4,
|
89
|
+
(0x02B0..0x02FF) => 5,
|
90
|
+
(0xA700..0xA71F) => 5,
|
91
|
+
(0x0300..0x036F) => 6,
|
92
|
+
(0x1DC0..0x1DFF) => 6,
|
93
|
+
(0x0370..0x03FF) => 7,
|
94
|
+
(0x2C80..0x2CFF) => 8,
|
95
|
+
(0x0400..0x04FF) => 9,
|
96
|
+
(0x0500..0x052F) => 9,
|
97
|
+
(0x2DE0..0x2DFF) => 9,
|
98
|
+
(0xA640..0xA69F) => 9,
|
99
|
+
(0x0530..0x058F) => 10,
|
100
|
+
(0x0590..0x05FF) => 11,
|
101
|
+
(0xA500..0xA63F) => 12,
|
102
|
+
(0x0600..0x06FF) => 13,
|
103
|
+
(0x0750..0x077F) => 13,
|
104
|
+
(0x07C0..0x07FF) => 14,
|
105
|
+
(0x0900..0x097F) => 15,
|
106
|
+
(0x0980..0x09FF) => 16,
|
107
|
+
(0x0A00..0x0A7F) => 17,
|
108
|
+
(0x0A80..0x0AFF) => 18,
|
109
|
+
(0x0B00..0x0B7F) => 19,
|
110
|
+
(0x0B80..0x0BFF) => 20,
|
111
|
+
(0x0C00..0x0C7F) => 21,
|
112
|
+
(0x0C80..0x0CFF) => 22,
|
113
|
+
(0x0D00..0x0D7F) => 23,
|
114
|
+
(0x0E00..0x0E7F) => 24,
|
115
|
+
(0x0E80..0x0EFF) => 25,
|
116
|
+
(0x10A0..0x10FF) => 26,
|
117
|
+
(0x2D00..0x2D2F) => 26,
|
118
|
+
(0x1B00..0x1B7F) => 27,
|
119
|
+
(0x1100..0x11FF) => 28,
|
120
|
+
(0x1E00..0x1EFF) => 29,
|
121
|
+
(0x2C60..0x2C7F) => 29,
|
122
|
+
(0xA720..0xA7FF) => 29,
|
123
|
+
(0x1F00..0x1FFF) => 30,
|
124
|
+
(0x2000..0x206F) => 31,
|
125
|
+
(0x2E00..0x2E7F) => 31,
|
126
|
+
(0x2070..0x209F) => 32,
|
127
|
+
(0x20A0..0x20CF) => 33,
|
128
|
+
(0x20D0..0x20FF) => 34,
|
129
|
+
(0x2100..0x214F) => 35,
|
130
|
+
(0x2150..0x218F) => 36,
|
131
|
+
(0x2190..0x21FF) => 37,
|
132
|
+
(0x27F0..0x27FF) => 37,
|
133
|
+
(0x2900..0x297F) => 37,
|
134
|
+
(0x2B00..0x2BFF) => 37,
|
135
|
+
(0x2200..0x22FF) => 38,
|
136
|
+
(0x2A00..0x2AFF) => 38,
|
137
|
+
(0x27C0..0x27EF) => 38,
|
138
|
+
(0x2980..0x29FF) => 38,
|
139
|
+
(0x2300..0x23FF) => 39,
|
140
|
+
(0x2400..0x243F) => 40,
|
141
|
+
(0x2440..0x245F) => 41,
|
142
|
+
(0x2460..0x24FF) => 42,
|
143
|
+
(0x2500..0x257F) => 43,
|
144
|
+
(0x2580..0x259F) => 44,
|
145
|
+
(0x25A0..0x25FF) => 45,
|
146
|
+
(0x2600..0x26FF) => 46,
|
147
|
+
(0x2700..0x27BF) => 47,
|
148
|
+
(0x3000..0x303F) => 48,
|
149
|
+
(0x3040..0x309F) => 49,
|
150
|
+
(0x30A0..0x30FF) => 50,
|
151
|
+
(0x31F0..0x31FF) => 50,
|
152
|
+
(0x3100..0x312F) => 51,
|
153
|
+
(0x31A0..0x31BF) => 51,
|
154
|
+
(0x3130..0x318F) => 52,
|
155
|
+
(0xA840..0xA87F) => 53,
|
156
|
+
(0x3200..0x32FF) => 54,
|
157
|
+
(0x3300..0x33FF) => 55,
|
158
|
+
(0xAC00..0xD7AF) => 56,
|
159
|
+
(0xD800..0xDFFF) => 57,
|
160
|
+
(0x10900..0x1091F) => 58,
|
161
|
+
(0x4E00..0x9FFF) => 59,
|
162
|
+
(0x2E80..0x2EFF) => 59,
|
163
|
+
(0x2F00..0x2FDF) => 59,
|
164
|
+
(0x2FF0..0x2FFF) => 59,
|
165
|
+
(0x3400..0x4DBF) => 59,
|
166
|
+
(0x20000..0x2A6DF) => 59,
|
167
|
+
(0x3190..0x319F) => 59,
|
168
|
+
(0xE000..0xF8FF) => 60,
|
169
|
+
(0x31C0..0x31EF) => 61,
|
170
|
+
(0xF900..0xFAFF) => 61,
|
171
|
+
(0x2F800..0x2FA1F) => 61,
|
172
|
+
(0xFB00..0xFB4F) => 62,
|
173
|
+
(0xFB50..0xFDFF) => 63,
|
174
|
+
(0xFE20..0xFE2F) => 64,
|
175
|
+
(0xFE10..0xFE1F) => 65,
|
176
|
+
(0xFE30..0xFE4F) => 65,
|
177
|
+
(0xFE50..0xFE6F) => 66,
|
178
|
+
(0xFE70..0xFEFF) => 67,
|
179
|
+
(0xFF00..0xFFEF) => 68,
|
180
|
+
(0xFFF0..0xFFFF) => 69,
|
181
|
+
(0x0F00..0x0FFF) => 70,
|
182
|
+
(0x0700..0x074F) => 71,
|
183
|
+
(0x0780..0x07BF) => 72,
|
184
|
+
(0x0D80..0x0DFF) => 73,
|
185
|
+
(0x1000..0x109F) => 74,
|
186
|
+
(0x1200..0x137F) => 75,
|
187
|
+
(0x1380..0x139F) => 75,
|
188
|
+
(0x2D80..0x2DDF) => 75,
|
189
|
+
(0x13A0..0x13FF) => 76,
|
190
|
+
(0x1400..0x167F) => 77,
|
191
|
+
(0x1680..0x169F) => 78,
|
192
|
+
(0x16A0..0x16FF) => 79,
|
193
|
+
(0x1780..0x17FF) => 80,
|
194
|
+
(0x19E0..0x19FF) => 80,
|
195
|
+
(0x1800..0x18AF) => 81,
|
196
|
+
(0x2800..0x28FF) => 82,
|
197
|
+
(0xA000..0xA48F) => 83,
|
198
|
+
(0xA490..0xA4CF) => 83,
|
199
|
+
(0x1700..0x171F) => 84,
|
200
|
+
(0x1720..0x173F) => 84,
|
201
|
+
(0x1740..0x175F) => 84,
|
202
|
+
(0x1760..0x177F) => 84,
|
203
|
+
(0x10300..0x1032F) => 85,
|
204
|
+
(0x10330..0x1034F) => 86,
|
205
|
+
(0x10400..0x1044F) => 87,
|
206
|
+
(0x1D000..0x1D0FF) => 88,
|
207
|
+
(0x1D100..0x1D1FF) => 88,
|
208
|
+
(0x1D200..0x1D24F) => 88,
|
209
|
+
(0x1D400..0x1D7FF) => 89,
|
210
|
+
(0xF0000..0xFFFFD) => 90,
|
211
|
+
(0x100000..0x10FFFD) => 90,
|
212
|
+
(0xFE00..0xFE0F) => 91,
|
213
|
+
(0xE0100..0xE01EF) => 91,
|
214
|
+
(0xE0000..0xE007F) => 92,
|
215
|
+
(0x1900..0x194F) => 93,
|
216
|
+
(0x1950..0x197F) => 94,
|
217
|
+
(0x1980..0x19DF) => 95,
|
218
|
+
(0x1A00..0x1A1F) => 96,
|
219
|
+
(0x2C00..0x2C5F) => 97,
|
220
|
+
(0x2D30..0x2D7F) => 98,
|
221
|
+
(0x4DC0..0x4DFF) => 99,
|
222
|
+
(0xA800..0xA82F) => 100,
|
223
|
+
(0x10000..0x1007F) => 101,
|
224
|
+
(0x10080..0x100FF) => 101,
|
225
|
+
(0x10100..0x1013F) => 101,
|
226
|
+
(0x10140..0x1018F) => 102,
|
227
|
+
(0x10380..0x1039F) => 103,
|
228
|
+
(0x103A0..0x103DF) => 104,
|
229
|
+
(0x10450..0x1047F) => 105,
|
230
|
+
(0x10480..0x104AF) => 106,
|
231
|
+
(0x10800..0x1083F) => 107,
|
232
|
+
(0x10A00..0x10A5F) => 108,
|
233
|
+
(0x1D300..0x1D35F) => 109,
|
234
|
+
(0x12000..0x123FF) => 110,
|
235
|
+
(0x12400..0x1247F) => 110,
|
236
|
+
(0x1D360..0x1D37F) => 111,
|
237
|
+
(0x1B80..0x1BBF) => 112,
|
238
|
+
(0x1C00..0x1C4F) => 113,
|
239
|
+
(0x1C50..0x1C7F) => 114,
|
240
|
+
(0xA880..0xA8DF) => 115,
|
241
|
+
(0xA900..0xA92F) => 116,
|
242
|
+
(0xA930..0xA95F) => 117,
|
243
|
+
(0xAA00..0xAA5F) => 118,
|
244
|
+
(0x10190..0x101CF) => 119,
|
245
|
+
(0x101D0..0x101FF) => 120,
|
246
|
+
(0x102A0..0x102DF) => 121,
|
247
|
+
(0x10280..0x1029F) => 121,
|
248
|
+
(0x10920..0x1093F) => 121,
|
249
|
+
(0x1F030..0x1F09F) => 122,
|
141
250
|
(0x1F000..0x1F02F) => 122
|
142
251
|
}.freeze
|
143
252
|
|
@@ -174,70 +283,71 @@ module TTFunk
|
|
174
283
|
|
175
284
|
class << self
|
176
285
|
def encode(os2, subset)
|
177
|
-
''.b
|
286
|
+
result = ''.b
|
287
|
+
result << [
|
288
|
+
os2.version, avg_char_width_for(os2, subset), os2.weight_class,
|
289
|
+
os2.width_class, os2.type, os2.y_subscript_x_size,
|
290
|
+
os2.y_subscript_y_size, os2.y_subscript_x_offset,
|
291
|
+
os2.y_subscript_y_offset, os2.y_superscript_x_size,
|
292
|
+
os2.y_superscript_y_size, os2.y_superscript_x_offset,
|
293
|
+
os2.y_superscript_y_offset, os2.y_strikeout_size,
|
294
|
+
os2.y_strikeout_position, os2.family_class
|
295
|
+
].pack('n*')
|
296
|
+
|
297
|
+
result << os2.panose
|
298
|
+
|
299
|
+
new_char_range = unicode_blocks_for(os2, os2.char_range, subset)
|
300
|
+
result << BinUtils
|
301
|
+
.slice_int(
|
302
|
+
new_char_range.value,
|
303
|
+
bit_width: 32,
|
304
|
+
slice_count: 4
|
305
|
+
)
|
306
|
+
.pack('N*')
|
307
|
+
|
308
|
+
result << os2.vendor_id
|
309
|
+
|
310
|
+
new_cmap_table = subset.new_cmap_table[:charmap]
|
311
|
+
code_points = new_cmap_table
|
312
|
+
.keys
|
313
|
+
.select { |k| (new_cmap_table[k][:new]).positive? }
|
314
|
+
.sort
|
315
|
+
|
316
|
+
# "This value depends on which character sets the font supports.
|
317
|
+
# This field cannot represent supplementary character values
|
318
|
+
# (codepoints greater than 0xFFFF). Fonts that support
|
319
|
+
# supplementary characters should set the value in this field
|
320
|
+
# to 0xFFFF."
|
321
|
+
first_char_index = [code_points.first || 0, UNICODE_MAX].min
|
322
|
+
last_char_index = [code_points.last || 0, UNICODE_MAX].min
|
323
|
+
|
324
|
+
result << [
|
325
|
+
os2.selection, first_char_index, last_char_index
|
326
|
+
].pack('n*')
|
327
|
+
|
328
|
+
if os2.version.positive?
|
178
329
|
result << [
|
179
|
-
os2.
|
180
|
-
os2.
|
181
|
-
os2.y_subscript_y_size, os2.y_subscript_x_offset,
|
182
|
-
os2.y_subscript_y_offset, os2.y_superscript_x_size,
|
183
|
-
os2.y_superscript_y_size, os2.y_superscript_x_offset,
|
184
|
-
os2.y_superscript_y_offset, os2.y_strikeout_size,
|
185
|
-
os2.y_strikeout_position, os2.family_class
|
330
|
+
os2.ascent, os2.descent, os2.line_gap,
|
331
|
+
os2.win_ascent, os2.win_descent
|
186
332
|
].pack('n*')
|
187
333
|
|
188
|
-
result << os2.panose
|
189
|
-
|
190
|
-
new_char_range = unicode_blocks_for(os2, os2.char_range, subset)
|
191
334
|
result << BinUtils
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
new_cmap_table = subset.new_cmap_table[:charmap]
|
202
|
-
code_points = new_cmap_table
|
203
|
-
.keys
|
204
|
-
.select { |k| new_cmap_table[k][:new] > 0 }
|
205
|
-
.sort
|
206
|
-
|
207
|
-
# "This value depends on which character sets the font supports.
|
208
|
-
# This field cannot represent supplementary character values
|
209
|
-
# (codepoints greater than 0xFFFF). Fonts that support
|
210
|
-
# supplementary characters should set the value in this field
|
211
|
-
# to 0xFFFF."
|
212
|
-
first_char_index = [code_points.first || 0, UNICODE_MAX].min
|
213
|
-
last_char_index = [code_points.last || 0, UNICODE_MAX].min
|
214
|
-
|
215
|
-
result << [
|
216
|
-
os2.selection, first_char_index, last_char_index
|
217
|
-
].pack('n*')
|
218
|
-
|
219
|
-
if os2.version > 0
|
335
|
+
.slice_int(
|
336
|
+
code_pages_for(subset).value,
|
337
|
+
bit_width: 32,
|
338
|
+
slice_count: 2
|
339
|
+
)
|
340
|
+
.pack('N*')
|
341
|
+
|
342
|
+
if os2.version > 1
|
220
343
|
result << [
|
221
|
-
os2.
|
222
|
-
os2.
|
344
|
+
os2.x_height, os2.cap_height, os2.default_char,
|
345
|
+
os2.break_char, os2.max_context
|
223
346
|
].pack('n*')
|
224
|
-
|
225
|
-
result << BinUtils
|
226
|
-
.slice_int(
|
227
|
-
code_pages_for(subset).value,
|
228
|
-
bit_width: 32,
|
229
|
-
slice_count: 2
|
230
|
-
)
|
231
|
-
.pack('N*')
|
232
|
-
|
233
|
-
if os2.version > 1
|
234
|
-
result << [
|
235
|
-
os2.x_height, os2.cap_height, os2.default_char,
|
236
|
-
os2.break_char, os2.max_context
|
237
|
-
].pack('n*')
|
238
|
-
end
|
239
347
|
end
|
240
348
|
end
|
349
|
+
|
350
|
+
result
|
241
351
|
end
|
242
352
|
|
243
353
|
private
|
@@ -298,11 +408,11 @@ module TTFunk
|
|
298
408
|
subset.new_to_old_glyph.each do |_, old_gid|
|
299
409
|
if (metric = os2.file.horizontal_metrics.for(old_gid))
|
300
410
|
total_width += metric.advance_width
|
301
|
-
num_glyphs += 1 if metric.advance_width
|
411
|
+
num_glyphs += 1 if metric.advance_width.positive?
|
302
412
|
end
|
303
413
|
end
|
304
414
|
|
305
|
-
return 0 if num_glyphs
|
415
|
+
return 0 if num_glyphs.zero?
|
306
416
|
|
307
417
|
total_width / num_glyphs # this should be a whole number
|
308
418
|
end
|
@@ -352,7 +462,7 @@ module TTFunk
|
|
352
462
|
end
|
353
463
|
end
|
354
464
|
|
355
|
-
return 0 if num_glyphs
|
465
|
+
return 0 if num_glyphs.zero?
|
356
466
|
|
357
467
|
total_width / num_glyphs # this should be a whole number
|
358
468
|
end
|
@@ -378,7 +488,7 @@ module TTFunk
|
|
378
488
|
@vendor_id = io.read(4)
|
379
489
|
@selection, @first_char_index, @last_char_index = read(6, 'n*')
|
380
490
|
|
381
|
-
if @version
|
491
|
+
if @version.positive?
|
382
492
|
@ascent, @descent, @line_gap = read_signed(3)
|
383
493
|
@win_ascent, @win_descent = read(4, 'nn')
|
384
494
|
@code_page_range = BitField.new(
|