blob: c288bb963d9108c2193552a295c38b38b9c59a88 [file] [log] [blame]
Werner Lemberg9fbd0042018-02-17 10:37:10 +010012017-09-16 Werner Lemberg <wl@gnu.org>
2
3 * Version 2.8.1 released.
4 =========================
5
6
7 Tag sources with `VER-2-8-1'.
8
9 * docs/VERSION.TXT: Add entry for version 2.8.1.
10 * docs/CHANGES: Updated.
11
12 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
13 builds/windows/vc2005/index.html,
14 builds/windows/vc2008/freetype.vcproj,
15 builds/windows/vc2008/index.html,
16 builds/windows/vc2010/freetype.vcxproj,
17 builds/windows/vc2010/index.html,
18 builds/windows/visualc/freetype.dsp,
19 builds/windows/visualc/freetype.vcproj,
20 builds/windows/visualc/index.html,
21 builds/windows/visualce/freetype.dsp,
22 builds/windows/visualce/freetype.vcproj,
23 builds/windows/visualce/index.html,
24 builds/wince/vc2005-ce/freetype.vcproj,
25 builds/wince/vc2005-ce/index.html,
26 builds/wince/vc2008-ce/freetype.vcproj,
27 builds/wince/vc2008-ce/index.html: s/2.8/2.8.1/, s/28/281/.
28
29 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
30
31 * builds/unix/configure.raw (version_info): Set to 21:0:15.
32 * CMakeLists.txt (VERSION_PATCH): Set to 1.
33
342017-09-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
35
36 [sfnt] lowest gcc for vectors (e1d0249e) is changed to 4.7.
37
38 __builtin_shuffle() was introduced in gcc-4.7. The lowest
39 gcc to enable vector operation is delayed from 4.6 to 4.7.
40
41 * src/sfnt/pngshim.c (premultiply_data): Fix cpp-macro to
42 enable the vector operation, to change the lowest gcc version
43 from 4.6 to 4.7.
44
452017-09-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
46
47 [cache] Fix a possible overflow by signed integer comparison.
48
49 Improve the code by 5d3ff05615dda6d1325ed612381a17a0df04c975 ,
50 issues are found by Behdad Esfahbod and Werner Lemberg.
51
52 * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Replace
53 a subtraction to check higher bit by a bit operation,
54 and cpp-conditionalize for appropriate systems. Add better
55 documentation to the comment.
56 (FTC_ImageCache_LookupScaler): Ditto.
57 (FTC_SBitCache_Lookup): Ditto.
58 (FTC_SBitCache_LookupScaler): Ditto.
59
602017-09-13 Werner Lemberg <wl@gnu.org>
61
62 [autofit] Really fix #41334 (#52000).
63
64 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Set
65 `segment->delta' everywhere.
66
672017-09-12 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
68
69 [autofit, sfnt] Fix for `make multi'.
70
71 * src/autofit/afshaper.c: Include FT_ADVANCE_H, to use
72 FT_Get_Advance() in it.
73 * src/sfnt/ttcmap.c: Include FT_SERVICE_POSTSCRIPT_CMAPS_H
74 to use PS_Unicodes in it, also include `ttpost.h' to use
75 tt_face_get_ps_name() in it.
76
772017-09-11 Azzuro <azzuro@team-mediaportal.com>
78
79 [build] Improve builds with different MS Visual Studio versions.
80
81 * builds/windows/vc2010/freetype.vcxproj: Switch platform toolset
82 according to the Visual Studio version.
83
842017-09-11 Werner Lemberg <wl@gnu.org>
85
86 * src/sfnt/ttkern.c (tt_face_load_kern): Reject format 2 tables.
87
88 Reported by Behdad.
89
902017-09-09 Werner Lemberg <wl@gnu.org>
91
92 [autofit] Improve communication with ftgrid.
93
94 * src/autofit/afhints.c (af_glyph_hints_get_segment_offset):
95 Provide values in font units.
96
972017-09-08 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
98
99 [base] Remove a check for resource ID in the resource fork driver.
100
101 LastResort.dfont has a marginal resource ID 0xFFFF for sfnt
102 resource. Inside Macintosh: More Macintosh Toolbox, `Resource IDs'
103 (1-46), tells that some IDs are reserved and should not be used.
104 FreeType2 just uses resource ID to sort the fragmented resource.
105 To accept the marginal fonts, the checking is removed.
106
107 * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Remove res_id
108 validity check, fix a trace message format.
109
1102017-09-08 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
111
112 [sfnt, truetype] Register the tags for marginal fonts.
113
114 The first 32bit of standard TrueType variants is 0x00010000,
115 `OTTO', `ttcf', `true' or `typ1'. 2 marginal dfonts on legacy Mac
116 OS X, Keyboard.dfont and LastResort.dfont, have the sfnt resources
117 starting 0xA5 followed by `kbd' or `lst'. Considering the following
118 data could be parsed as conventional TrueType fonts, the header
119 checking is updated to allow these tags. It seems that recent Mac
120 OS X has already switched to normal TTF for these fonts.
121
122 See the discussion at
123 http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=3931.0
124
125 * include/freetype/tttags.h (TTAG_0xA5kbd, TTAG_0xA5lst): New header
126 tags for Keyboard.dfont and LastResort.dfont.
127 * src/sfnt/sfobjs.c (sfnt_open_font): Accept the sfnt resource
128 starts with TTAG_0xA5kbd or TTAG_0xA5lst.
129 * src/truetype/ttobjs.c (tt_face_init): Accept the face with the
130 format tag is TTAG_0xA5kbd or TTAG_0xA5lst.
131
1322017-09-05 Werner Lemberg <wl@gnu.org>
133
134 Fix multiple calls of `FT_Bitmap_Convert'.
135
136 The documentation of `FT_Bitmap_Convert' says that multiple calls do
137 proper reallocation of the target FT_Bitmap object. However, this
138 failed for the sequence
139
140 non-empty bitmap
141 empty bitmap
142 non-empty bitmap
143
144 Reason was that `FT_Bitmap_Convert' only reallocated the bitmap
145 buffer if it became too small; it didn't make the buffer smaller.
146 For an empty bitmap following a non-empty one, only the buffer
147 dimension got set to zero, without deallocation. If the next call
148 was a non-empty buffer again, an assertion in `ft_mem_qrealloc' was
149 triggered.
150
151 * src/base/ftbitmap.c (FT_Bitmap_Convert): Always reallocate target
152 buffer to the correct size.
153
154 * docs/CHANGES: Document it.
155
1562017-09-05 Werner Lemberg <wl@gnu.org>
157
158 [bdf] Fix size and resolution handling.
159
160 * src/bdf/bdfdrivr.c (BDF_Face_Init): Use `SIZE' values if
161 `POINT_SIZE', `RESOLUTION_X', or `RESOLUTION_Y' properties are
162 missing.
163
164 * docs/CHANGES: Document it.
165
1662017-08-25 Alexei Podtelezhnikov <apodtele@gmail.com>
167
168 Swap `ALLOC_MULT' arguments (#51833).
169
170 * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Updated.
171 * src/winfonts/winfnt.c (FNT_Load_Glyph): Updated.
172 * src/raster/ftrend1.c (ft_raster1_render): Updated.
173
1742017-08-23 Werner Lemberg <wl@gnu.org>
175
176 [sfnt] Fix clang compilation (#51788).
177
178 * src/sfnt/pngshim.c (premultiply_data): Use vectors instead of
179 scalars.
180 (vector_shuffle): New macro to take care of a different built-in
181 function name on clang.
182
1832017-08-22 Werner Lemberg <wl@gnu.org>
184
185 [base] Don't zero out allocated memory twice (#51816).
186
187 Patch applied from bug report.
188
189 * src/base/ftutil.c (ft_mem_qrealloc): Use low-level allocation to
190 avoid unnecessary overhead.
191
1922017-08-22 Werner Lemberg <wl@gnu.org>
193
194 [truetype] Integer overflow.
195
196 Changes triggered by
197
198 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3107
199
200 * src/truetype/ttinterp.c (Ins_MDRP, Ins_MIRP, Ins_ALIGNPTS): Use
201 NEG_LONG.
202
2032017-08-17 Alexei Podtelezhnikov <apodtele@gmail.com>
204
205 [sfnt] Avoid synthetic unicode for symbol fonts with PUA.
206
207 Reported as
208
209 https://bugs.chromium.org/p/chromium/issues/detail?id=754574
210
211 * src/sfnt/sfobjs.c (sfnt_load_face): Check for FT_ENCODING_MS_SYMBOL.
212
2132017-08-16 Werner Lemberg <wl@gnu.org>
214
215 * src/sfnt/pngshim.c (premultiply_data): Fix compiler warnings.
216
2172017-08-15 Behdad Esfahbod <behdad@behdad.org>
218
219 [sfnt] Speed up PNG image loading.
220
221 This reduces the overhead of `premultiply_data' by 60%.
222
223 * src/sfnt/pngshim.c (premultiply_data): Provide code which uses
224 gcc's (and clang's) `vector_byte' attribute to process 4 pixels at a
225 time.
226
2272017-08-11 Werner Lemberg <wl@gnu.org>
228
229 [sfnt, truetype] Improve handling of missing sbits.
230
231 Requested by Behdad.
232
233 Modern bitmap-only SFNTs like `NotoColorEmoji.ttf' don't contain
234 entries in the bitmap strike(s) for empty glyphs. Instead, they
235 rely that a space glyph gets created from the font's metrics data.
236 This commit makes FreeType behave accordingly.
237
238 * include/freetype/fterrdef.h (FT_Err_Missing_Bitmap): New error
239 code.
240
241 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_image): Change error codes
242 to make a distinction between a missing bitmap in a composite and a
243 simple missing bitmap.
244
245 * src/truetype/ttgload.c (TT_Load_Glyph): For a missing bitmap (in a
246 bitmap-only font), synthesize an empty bitmap glyph if metrics are
247 available.
248
2492017-08-10 Werner Lemberg <wl@gnu.org>
250
251 [base] Minor API improvement for default variation axis setting.
252
253 * src/base/ftmm.c (FT_Set_MM_Design_Coordinates,
254 FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
255 FT_Set_Var_Blend_Coordinates): Allow coords==NULL if num_coords==0.
256
257 * docs/CHANGES: Updated.
258
2592017-08-08 Werner Lemberg <wl@gnu.org>
260
261 [psnames] Really fix issue #49949.
262
263 We now use a separate preprocessor macro to handle both definition
264 and declaration of the glyph name arrays.
265
266 * src/psnames/psmodule.c (DEFINE_PS_TABLE_DATA): New macro.
267
268 * src/tools/glnames.py (StringTable::dump,
269 StringTable::dump_sublist): Use `DEFINE_PS_TABLE_DATA'.
270 (dump_encoding): Ditto.
271 (main): Use `wb' mode for writing the output file, which works on
272 Windows also.
273
274 * src/psnames/pstables.h: Regenerated.
275
2762017-08-08 Alexei Podtelezhnikov <apodtele@gmail.com>
277
278 [smooth] Harmony LCD rendering.
279
280 This is a new technology for LCD-optimized rendering. It capitalizes
281 on the fact that each color channel grid is shifted by a third of a
282 pixel. Therefore it is logical to render 3 separate monochrome
283 bitmaps shifting the outline by 1/3 pixel, and then combine them.
284 Importantly, the resulting output does not require additional LCD
285 filtering.
286
287 * src/smooth/ftsmooth.c (ft_smooth_render_generic)
288 [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Implement new LCD-optimized
289 rendering.
290
291 * include/freetype/ftlcdfil.h, include/freetype/freetype.h,
292 include/freetype/config/ftoption.h, devel/ftoption.h: Updated
293 documentation.
294
2952017-08-08 Alexei Podtelezhnikov <apodtele@gmail.com>
296
297 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Clean up.
298
2992017-08-08 Alexei Podtelezhnikov <apodtele@gmail.com>
300
301 * src/sfnt/ttpost.c (format): Use otspec-compliant versions.
302
3032017-08-05 Werner Lemberg <wl@gnu.org>
304
305 [truetype] Integer overflow.
306
307 Reported as
308
309 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2868
310
311 * src/truetype/ttinterp.c (Ins_ALIGNRP): Use NEG_LONG.
312
3132017-08-05 Werner Lemberg <wl@gnu.org>
314
315 [base, truetype] New function `FT_Get_Var_Axis_Flags'.
316
317 The reserved `flags' field got a value in OpenType version 1.8.2;
318 unfortunately, the public `FT_Var_Axis' structure misses the
319 corresponding element. Since we can't add a new field, we add an
320 access function.
321
322 * src/base/ftmm.c (FT_Get_Var_Axis_Flags): New function.
323
324 * include/freetype/ftmm.h (FT_VAR_AXIS_FLAG_HIDDEN): New macro.
325 Updated.
326
327 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Increase allocated memory
328 of `mmvar' to hold axis flags.
329 Fill the axis flags array.
330
331 * docs/CHANGES: Updated.
332
3332017-08-03 Nikolaus Waxweiler <madigens@gmail.com>
334
335 [truetype] Fix metrics of B/W hinting in v40 mode.
336
337 Phantom points are now saved outside v40 backwards compatibility
338 mode. This fixes the jumping glyphs when switching between v35 and
339 v40 monochrome mode.
340
341 * src/truetype/ttgload.c (TT_Hint_Glyph): Fix inversed bool logic.
342
3432017-08-03 Nikolaus Waxweiler <madigens@gmail.com>
344
345 [truetype] Do not set any ClearType flags in v40 monochrome mode.
346
347 This fixes weird behavior of instructions that resulted in rendering
348 differences between v35 and v40 in monochrome mode, e.g., in
349 `timesbi.ttf'.
350
351 * src/truetype/ttinterp.c (Ins_GETINFO)
352 [TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Check
353 `subpixel_hinting_lean'.
354
3552017-08-01 Werner Lemberg <wl@gnu.org>
356
357 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Fix thinko.
358
3592017-08-01 Behdad Esfahbod <behdad@behdad.org>
360
361 [truetype] Fix loading of named instances.
362
363 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Preserve file position
364 while loading the `avar' table.
365
3662017-08-01 Werner Lemberg <wl@gnu.org>
367
368 [sfnt, truetype] Minor adjustments for OpenType 1.8.2.
369
370 * src/sfnt/sfobjs.c (sfnt_load_face): The units per EM value has now
371 (tighter) limits.
372
373 * src/truetype/ttgload.c (load_truetype_glyph): The new OpenType
374 version explicitly allows all negative values for the number of
375 contours if we have a composite glyph (this is for better backwards
376 compatibility I guess), but it still recommends value -1.
377
3782017-07-26 Werner Lemberg <wl@gnu.org>
379
380 [cff] Integer overflow.
381
382 Reported as
383
384 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2738
385
386 * src/cff/cf2hints.c (cf2_glyphpath_computeOffset,
387 cf2_glyphpath_curveTo): Use ADD_INT32.
388
3892017-07-13 Werner Lemberg <wl@gnu.org>
390
391 [base] Fix memory leak.
392
393 Reported as
394
395 https://bugs.chromium.org/p/chromium/issues/detail?id=738362
396
397 * src/base/ftglyph.c (FT_Get_Glyph): Do proper deallocation in case
398 of error.
399
4002017-07-12 Werner Lemberg <wl@gnu.org>
401
402 [base] Integer overflow.
403
404 Reported as
405
406 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2573
407
408 * src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use
409 FT_PIX_CEIL_LONG and FT_PIX_ROUND_LONG.
410
4112017-07-12 Werner Lemberg <wl@gnu.org>
412
413 * src/truetype/ttpload.c (tt_face_get_location): Off-by-one typo.
414
415 Also improve tracing message.
416
417 Problem reported as
418
419 https://bugs.chromium.org/p/chromium/issues/detail?id=738919
420
4212017-07-07 Werner Lemberg <wl@gnu.org>
422
423 [cff] Integer overflow.
424
425 Reported as
426
427 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2517
428
429 * src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32.
430
4312017-07-05 Werner Lemberg <wl@gnu.org>
432
433 * src/sfnt/ttcmap.c (tt_cmap_unicode_class_rec): Fix warning.
434
4352017-07-05 Werner Lemberg <wl@gnu.org>
436
437 * src/truetype/ttgxvar.c (FT_Stream_SeekSet): Fix warning (#51395).
438
4392017-07-04 Werner Lemberg <wl@gnu.org>
440
441 [truetype] Prevent address overflow (#51365).
442
443 * src/truetype/ttgxvar.c (FT_Stream_SeekSet): Add guard.
444
4452017-07-03 Alexei Podtelezhnikov <apodtele@gmail.com>
446
447 * src/base/ftlcdfil.c (ft_lcd_filter_fir): Improve code.
448
4492017-07-03 Werner Lemberg <wl@gnu.org>
450
451 [truetype] Integer overflow.
452
453 Reported as
454
455 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2455
456
457 * src/truetype/ttinterp.c (Ins_SCFS): Use SUB_LONG.
458
4592017-07-01 Alexei Podtelezhnikov <apodtele@gmail.com>
460
461 * src/sfnt/sfobjs.c (sfnt_load_face): Ignore No_Unicode_Glyph_Name.
462
4632017-06-28 Ben Wagner <bungeman@google.com>
464
465 Avoid Microsoft compiler warnings (#51331).
466
467 While clang's sanitizer recommends a cast to unsigned for safe
468 negation (to handle -INT_MIN), both MSVC and Visualc emit warning
469 C4146 if an unsigned value gets negated.
470
471 * include/freetype/internal/ftcalc.h (NEG_LONG, NEG_INT32),
472 src/base/ftcalc.c (FT_MOVE_SIGN): Replace negation with a
473 subtraction.
474
4752017-06-27 Werner Lemberg <wl@gnu.org>
476
477 * src/cff/cffparse.c (do_fixed): Fix typo.
478
479 Spotted by chris <chris@gcjd.org>.
480
4812017-06-27 Werner Lemberg <wl@gnu.org>
482
483 [truetype] Integer overflows.
484
485 Reported as
486
487 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2384
488 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2391
489
490 * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix): Use
491 NEG_LONG.
492
493 * src/truetype/ttinterp.c (Ins_SxVTL): Use NEG_LONG.
494
4952017-06-24 Werner Lemberg <wl@gnu.org>
496
497 [truetype] Integer overflows.
498
499 Reported as
500
501 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2364
502
503 * src/truetype/ttinterp.c (Ins_ISECT): Use NEG_LONG.
504
5052017-06-22 Werner Lemberg <wl@gnu.org>
506
507 [cff, truetype] Integer overflows.
508
509 Reported as
510
511 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2323
512 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2328
513
514 * src/cff/cf2blues.c (cf2_blues_capture): Use ADD_INT32 and
515 SUB_INT32.
516
517 * src/truetype/ttinterp.c (Ins_SDPVTL): Use SUB_LONG and NEG_LONG.
518
5192017-06-21 Alexei Podtelezhnikov <apodtele@gmail.com>
520
521 [sfnt] Synthesize a Unicode charmap if one is missing.
522
523 * src/sfnt/ttcmap.h (tt_cmap_unicode_class_rec): Declare it.
524 * src/sfnt/ttcmap.c (tt_get_glyph_name, tt_cmap_unicode_init,
525 tt_cmap_unicode_done, tt_cmap_unicode_char_index,
526 tt_cmap_unicode_char_next, tt_cmap_unicode_class_rec): Implement
527 synthetic Unicode charmap class.
528 (tt_get_cmap_info): Make sure the callback is available.
529
530 * src/sfnt/sfobjs.c (sfnt_load_face)
531 [FT_CONFIG_OPTION_POSTSCRIPT_NAMES]: If Unicode charmap is missing,
532 synthesize one.
533
534 * include/freetype/config/ftoption.h: Document it.
535 * devel/ftoption.h: Ditto.
536
5372017-06-20 Tony Theodore <tonyt@logyst.com>
538
539 Fix pkg-config in freetype-config for cross-compiling (#51274).
540
541 * builds/unix/unix-def.in (PKG_CONFIG): New variable.
542 (freetype-config): Use it in sed expression.
543
544 * builds/unix/freetype-config.in: s/pkg-config/%PKG_CONFIG%/.
545
5462017-06-20 Werner Lemberg <wl@gnu.org>
547
548 [cff, truetype] Integer overflows.
549
550 Reported as
551
552 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2300
553 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2313
554
555 * src/cff/cf2hints.c (cf2_hintmap_adjustHints): Use ADD_INT32.
556
557 * src/truetype/ttinterp.c (Ins_ABS): Avoid FT_ABS.
558
5592017-06-17 Alexei Podtelezhnikov <apodtele@gmail.com>
560
561 [base, smooth] LCD filtering cleanups.
562
563 * src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
564 Clean up, start filtering from the bottom-left origin.
565
566 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Updated.
567
5682017-06-16 Werner Lemberg <wl@gnu.org>
569
570 [truetype] Integer overflows.
571
572 Reported as
573
574 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2270
575 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2276
576
577 * src/truetype/ttinterp.c (Ins_MDRP, _iup_worker_interpolate): Use
578 ADD_LONG and SUB_LONG.
579
5802017-06-15 Werner Lemberg <wl@gnu.org>
581
582 [bdf, cff] Integer overflows.
583
584 Reported as
585
586 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2244
587 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2261
588
589 * src/bdf/bdfdrivr.c (BDF_Face_Init): Replace calls to FT_ABS with
590 direct code to avoid value negation.
591
592 * src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32 and
593 ADD_INT32.
594
5952017-06-13 Werner Lemberg <wl@gnu.org>
596
597 * src/winfonts/winfnt.c (FNT_Face_Init): Don't set active encoding.
598
599 FreeType only sets a default active encoding for Unicode.
600
6012017-06-13 Werner Lemberg <wl@gnu.org>
602
603 [cff, truetype] Integer overflows.
604
605 Reported as
606
607 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2216
608 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2218
609
610 * src/cff/cf2fixed.h (cf2_fixedAbs): Use NEG_INT32.
611
612 * src/truetype/ttinterp.c (Ins_IP): Use SUB_LONG.
613
6142017-06-11 Werner Lemberg <wl@gnu.org>
615
616 [cff] Integer overflows.
617
618 Reported as
619
620 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2200
621 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2210
622
623 * src/cff/cf2hints.c (cf2_hintmap_insertHint): Use SUB_INT32 and
624 ADD_INT32.
625
626 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO>: Use
627 ADD_INT32.
628
6292017-06-10 Werner Lemberg <wl@gnu.org>
630
631 [truetype] Fix TT_Set_Var_Design.
632
633 Reported by Nikolaus Waxweiler <madigens@gmail.com>.
634
635 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Correctly handle the
636 case where we have less input coordinates than axes.
637
6382017-06-10 Werner Lemberg <wl@gnu.org>
639
640 * src/base/ftcalc.c (FT_DivFix): Fix embarrassing typo.
641
642 Bug introduced 2017-05-28.
643
6442017-06-09 Werner Lemberg <wl@gnu.org>
645
646 [cff, truetype] Integer overflows.
647
648 Reported as
649
650 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2144
651 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2151
652 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2153
653 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2173
654 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2186
655
656 * src/cff/cf2blues.c (cf2_blues_init): Use SUB_INT32.
657
658 * src/truetype/ttinterp.c (Round_None, Round_To_Grid,
659 Round_To_Half_Grid, Round_Down_To_Grid, Round_Up_To_Grid,
660 Round_To_Double_Grid, Round_Super, Round_Super_45): Use ADD_LONG,
661 SUB_LONG, NEG_LONG, FT_PIX_ROUND_LONG, FT_PIX_CEIL_LONG,
662 FT_PAD_ROUND_LONG
663 (Ins_SxVTL, Ins_MIRP): Use SUB_LONG.
664 (_iup_worker_shift): Use SUB_LONG and ADD_LONG.
665
6662017-06-09 Werner Lemberg <wl@gnu.org>
667
668 Provide more macros for flooring, ceiling, and rounding.
669
670 These versions don't produce run-time errors due to integer
671 overflow.
672
673 * include/freetype/internal/ftobjs.h: Include FT_INTERNAL_CALC_H.
674 (FT_PAD_ROUND_LONG, FT_PAD_CEIL_LONG, FT_PIX_ROUND_LONG,
675 FT_PIX_CEIL_LONG): New macros.
676 (FT_PAD_ROUND_INT32, FT_PAD_CEIL_INT32, FT_PIX_ROUND_INT32,
677 FT_PIX_CEIL_INT32): New macros.
678
6792017-06-09 Werner Lemberg <wl@gnu.org>
680
681 Remove unused macros.
682
683 * include/freetype/internal/ftcalc.h (ADD_INT, SUB_INT, MUL_INT,
684 NEG_INT): Deleted.
685
6862017-06-09 Werner Lemberg <wl@gnu.org>
687
688 */*: Remove `OVERFLOW_' prefix.
689
690 This increases readability.
691
6922017-06-07 Werner Lemberg <wl@gnu.org>
693
694 [cff, truetype] Integer overflows.
695
696 Reported as
697
698 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2133
699 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2137
700
701 * src/cff/cf2hints.c (cf2_hint_init): Use OVERFLOW_SUB_INT32.
702
703 * src/truetype/ttinterp.c (PROJECT, DUALPROJ): Use
704 OVERFLOW_SUB_LONG.
705
7062017-06-06 Werner Lemberg <wl@gnu.org>
707
708 [cff] Integer overflows.
709
710 Reported as
711
712 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2109
713 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2110
714 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2122
715
716 * src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32.
717
718 * src/cff/cf2hints.c (cf2_hintmap_map): Synchronize if-else
719 branches.
720
7212017-06-05 Werner Lemberg <wl@gnu.org>
722
723 [cff] Integer overflow.
724
725 Reported as
726
727 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2089
728
729 * src/cff/cffload.c (cff_blend_doBlend): User OVERFLOW_ADD_INT32.
730
7312017-06-04 Werner Lemberg <wl@gnu.org>
732
733 [cff, truetype] Integer overflows.
734
735 Reported as
736
737 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2075
738 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2088
739
740 * src/cff/cf2font.c (cf2_font_setup): Use OVERFLOW_MUL_INT32.
741
742 * src/truetype/ttinterp.c (Ins_ISECT): Use OVERFLOW_MUL_LONG,
743 OVERFLOW_ADD_LONG, and OVERFLOW_SUB_LONG.
744
7452017-06-03 Werner Lemberg <wl@gnu.org>
746
747 [base, cff, truetype] Integer overflows.
748
749 Reported as
750
751 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2060
752 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2062
753 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2063
754 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2068
755
756 * src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use
757 OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG.
758
759 * src/cff/cf2blues.c (cf2_blues_capture), src/cff/cf2hints.c
760 (cf2_hintmap_adjustHints): Use OVERFLOW_SUB_INT32.
761
762 * src/truetype/ttgload.c (compute_glyph_metrics): User
763 OVERFLOW_SUB_LONG.
764
765 * src/truetype/ttinterp.c (Direct_Move, Direct_Move_Orig,
766 Direct_Move_X, Direct_Move_Y, Direct_Move_Orig_X,
767 Direct_Move_Orig_Y, Move_Zp2_Point, Ins_MSIRP): Use
768 OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG.
769
7702017-06-03 Werner Lemberg <wl@gnu.org>
771
772 * builds/unix/freetype-config.in: Fix pkg-config test (#51162).
773
774 Patch directly taken from bug report.
775
7762017-06-03 Werner Lemberg <wl@gnu.org>
777
778 [bdf] Synchronize sanity checks with pcf driver.
779
780 Reported as
781
782 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2054
783 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2058
784
785 * src/bdf/bdfdrivr.c (BDF_Face_Init): Check font ascent and descent.
786 Check AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and
787 RESOLUTION_Y properties.
788
7892017-06-03 Werner Lemberg <wl@gnu.org>
790
791 [cff, truetype] Integer overflows.
792
793 Reported as
794
795 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2047
796 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2057
797
798 * src/cff/cf2hints.c (cf2_hintmap_map): Use OVERFLOW_SUB_INT32.
799
800 * src/truetype/ttinterp.c (Ins_ADD): Use OVERFLOW_ADD_LONG.
801 (Ins_SUB): Use OVERFLOW_SUB_LONG.
802 (Ins_NEG): Use NEG_LONG.
803
8042017-06-03 Werner Lemberg <wl@gnu.org>
805
806 ftcalc.h: Avoid left-shift of negative numbers.
807
808 Reported as
809
810 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2055
811
812 * include/freetype/internal/ftcalc.h (INT_TO_F26DOT6,
813 INT_TO_F2DOT14, INT_TO_FIXED, F2DOT14_TO_FIXED): Use multiplication.
814
8152017-06-02 Werner Lemberg <wl@gnu.org>
816
817 [cff] Even more integer overflows.
818
819 Reported as
820
821 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2046
822
823 * src/cff/cf2intrp.c (cf2_doStems, cf2_interpT2CharString): Use
824 OVERFLOW_ADD_INT32.
825
8262017-06-02 Werner Lemberg <wl@gnu.org>
827
828 [cff] More integer overflows.
829
830 Reported as
831
832 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2032
833
834 * src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32.
835
8362017-06-02 Werner Lemberg <wl@gnu.org>
837
838 [bdf] Don't left-shift negative numbers.
839
840 Reported as
841
842 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2031
843
844 * src/bdf/bdfdrivr.c (BDF_Face_Init): Use multiplication.
845
8462017-06-02 Werner Lemberg <wl@gnu.org>
847
848 [bdf] Fix integer scanning routines.
849
850 Reported as
851
852 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2029
853
854 * src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous, _bdf_atos):
855 Stop scanning if result would overflow.
856
8572017-06-02 Werner Lemberg <wl@gnu.org>
858
859 [cff] Fix integer overflows.
860
861 Reported as
862
863 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2027
864 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2028
865
866 * src/cff/cf2hints.c (cf2_hintmap_insertHint), src/cff/cf2intrp.c
867 (cf2_doFlex): Use OVERFLOW_ADD_INT32 and OVERFLOW_SUB_INT32.
868
8692017-06-01 Werner Lemberg <wl@gnu.org>
870
871 [smooth] Some 32bit integer overflow run-time errors.
872
873 * src/smooth/ftgrays.c [STANDALONE] (OVERFLOW_ADD_LONG,
874 OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG, NEG_LONG): New macros.
875 [!STANDALONE]: Include FT_INTERNAL_CALC_H.
876 (gray_render_cubic): Use those macros where appropriate.
877
8782017-06-01 Werner Lemberg <wl@gnu.org>
879
880 * src/base/ftglyph.c (FT_Get_Glyph): Check `slot->advance'.
881
8822017-06-01 Werner Lemberg <wl@gnu.org>
883
884 [psaux] 32bit integer overflow tun-time errors (#46149).
885
886 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Use
887 OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG where appropriate.
888
8892017-06-01 Werner Lemberg <wl@gnu.org>
890
891 * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter again.
892
893 Problem reported by Marek Kašík <mkasik@redhat.com>.
894
895 The problematic font that exceeds the old limit is Padauk-Bold,
896 version 3.002, containing bytecode generated by a buggy version of
897 ttfautohint.
898
8992017-05-31 Werner Lemberg <wl@gnu.org>
900
901 [cff] 32bit integer overflow run-time errors 2/2 (#46149).
902
903 This commit handles the new engine.
904
905 * include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT32,
906 OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, NEG_INT, NEG_LONG,
907 NEG_INT32): New macros.
908
909 * src/cff/cf2ft.c (cf2_getScaleAndHintFlag): Use OVERFLOW_ADD_INT32.
910
911 * src/cff/cf2hints.c (cf2_getWindingMomentum, cf2_hint_init,
912 cf2_hintmap_map, cf2_glyphpath_hintPoint,
913 cf2_glyphpath_computeIntersection, cf2_glyphpath_computeOffset,
914 cf2_glyphpath_lineTo, cf2_glyphpath_curveTo): Use
915 OVERFLOW_ADD_INT32, OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, and
916 NEG_INT32 where appropriate.
917
918 * src/cff/cf2intrp.c (cf2_doFlex, cf2_doBlend,
919 cf2_interpT2CharString): Ditto.
920 Also add some other code where needed to avoid overflow.
921
9222017-05-30 Werner Lemberg <wl@gnu.org>
923
924 [cff] 32bit integer overflow run-time errors 1/2 (#46149).
925
926 This commit handles the old engine.
927
928 * src/cff/cffgload.c: Include FT_INTERNAL_CALC_H.
929 (cff_decoder_parse_charstrings): Use OVERFLOW_ADD_LONG and
930 OVERFLOW_SUB_LONG where needed.
931
932 * src/cff/cffparse.c: Include FT_INTERNAL_CALC_H.
933 (power_ten_limits): New static array.
934 (do_fixed): Use it to prevent multiplication overflow.
935 (cff_parser_run): Use OVERFLOW_ADD_LONG.
936
9372017-05-30 Werner Lemberg <wl@gnu.org>
938
939 [psaux] Correctly handle sequences of multiple number signs.
940
941 * src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed): Return zero
942 if we encounter more than a single sign.
943
9442017-05-29 Werner Lemberg <wl@gnu.org>
945
946 [pcf] 32bit integer overflow run-time errors (#46149).
947
948 * src/pcf/pcfread.c (pcf_get_accel): Add sanity checks for
949 `fontAscent' and `fontDescent'.
950 (pcf_load_font): Add sanity checks for global height.
951 Add sanity checks for AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE,
952 RESOLUTION_X, and RESOLUTION_Y properties.
953
9542017-05-29 Werner Lemberg <wl@gnu.org>
955
956 Handle some integer overflow run-time errors (#46149, #48979).
957
958 This commit (mainly for 32bit CPUs) is the first of a series of
959 similar commits to handle known integer overflows. Basically, all
960 of them are harmless, since they affect rendering of glyphs only,
961 not posing security threats. It is expected that fuzzying will show
962 up more overflows, to be fixed in due course.
963
964 The idea is to mark places where overflows can occur, using macros
965 that simply cast to unsigned integers, because overflow arithmetic
966 is well defined in this case. Doing so suppresses run-time errors
967 of sanitizers without adding computational overhead.
968
969 * include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT,
970 OVERFLOW_SUB_INT, OVERFLOW_MUL_INT, OVERFLOW_ADD_LONG,
971 OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG): New macros.
972
973 * src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_Matrix_Multiply,
974 FT_Matrix_Multiply_Scaled, FT_Vector_Transform_Scaled,
975 ft_corner_orientation): Use new macros.
976
977 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Use new macros.
978
9792017-05-28 Werner Lemberg <wl@gnu.org>
980
981 * include/freetype/internal/ftcalc.h (FLOAT_TO_FIXED): Remove.
982
983 This macro is not used.
984
9852017-05-28 Werner Lemberg <wl@gnu.org>
986
987 [cff] s/cf2_floatToFixed/cf2_doubleToFixed/.
988
989 The new name better describes what the macro actually does;
990 additionally, we don't need a trailing `f' for literals (there was
991 only a single such instance in the code, but this caused a clang
992 warning because the macro itself uses `double' literals).
993
994 * src/cff/cf2blues.c, src/cff/cf2blues.h, src/cff/cf2fixed.h,
995 src/cff/cf2font.c, src/cff/cf2hints.c: Updated.
996
9972017-05-28 Werner Lemberg <wl@gnu.org>
998
999 Fix negation of INT_MIN and LONG_MIN (#46149).
1000
1001 * src/base/ftcalc.c (FT_MOVE_SIGN): Add argument to pass unsigned
1002 value, to be used as the result.
1003 (FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix, FT_MulFix,
1004 FT_Vector_NormLen): Updated.
1005
10062017-05-27 Werner Lemberg <wl@gnu.org>
1007
1008 [truetype] Fix handling of design coordinates (#51127).
1009
1010 * src/truetype/ttgxvar.c (tt_set_mm_blend): Compute all design
1011 coordinates if we have to create the `blends->coord' array.
1012 (TT_Get_MM_Blend, TT_Get_Var_Design): Select default instance
1013 coordinates if no instance is selected yet.
1014
10152017-05-24 Werner Lemberg <wl@gnu.org>
1016
1017 [bdf, pcf] Support ISO646.1991-IRV character encoding (aka ASCII).
1018
1019 Problem reported by Marek Kašík <mkasik@redhat.com>, cf.
1020
1021 https://bugzilla.redhat.com/show_bug.cgi?id=1451795
1022
1023 * src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdrivr.c
1024 (PCF_Face_Init): Implement it.
1025
10262017-05-20 Nikolaus Waxweiler <madigens@gmail.com>
1027
1028 [truetype] Always use interpreter v35 for B/W rendering (#51051).
1029
1030 * src/truetype/ttgload.c (tt_loader_init)
1031 [TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Adjust
1032 `subpixel_hinting_lean', `grayscale_cleartype', and
1033 `vertical_lcd_lean' accordingly.
1034
1035 * src/truetype/ttinterp.c (Ins_GETINFO): Updated.
1036 (TT_RunIns): Update `backward_compatibility' flag.
1037
10382017-05-20 Alexei Podtelezhnikov <apodtele@gmail.com>
1039
1040 [smooth] Implement minimal dynamic padding for LCD filtering.
1041
1042 Extra bitmap padding for LCD filtering depends on the filter. The
1043 default 5-tap filter needs 2 extra subpixels. The light 3-tap filter
1044 needs only 1 extra subpixel. This space could be already available
1045 due to rounding. In order to optimize the padding, we now expand
1046 CBox for the given filter weights before rounding.
1047
1048 This change breaks current Skia (and Firefox).
1049
1050 * include/freetype/internal/ftobjs.h (FT_LibraryRec)
1051 [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Remove `lcd_extra' field.
1052
1053 * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights,
1054 FT_Library_SetLcdFilter): Remove `lcd_extra' initializations.
1055
1056 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Implement dymanic
1057 LCD padding.
1058
10592017-05-15 Werner Lemberg <wl@gnu.org>
1060
1061 [sfnt] Return proper scaling values for SBIX bitmaps.
1062
1063 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
1064
1065 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Implement it.
1066
10672017-05-15 Werner Lemberg <wl@gnu.org>
1068
1069 [truetype] Fix error handling for embedded bitmaps.
1070
1071 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
1072
1073 * src/truetype/ttgload.c (TT_Load_Glyph)
1074 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Handle error if font is not
1075 scalable.
1076
10772017-05-15 Alexei Podtelezhnikov <apodtele@gmail.com>
1078
1079 [autofit] Make autohint warping NORMAL option.
1080
1081 This moves warping option from LIGHT to NORMAL mode. This makes LIGHT
1082 truly void of hinting in x-direction, with left side bearing never
1083 changed and right side bearing only altered by advance rounding.
1084 Therefore, LIGHT is now ready to return fractional advance. As a
1085 NORMAL option, warping substitutes normal hinting.
1086
1087 * src/autofit/afcjk.c (af_cjk_hints_apply): Updated.
1088 * src/autofit/aflatin.c (af_latin_hints_apply): Updated.
1089 * src/autofit/aflatin2.c (af_latin2_hints_apply): Updated.
1090
1091 * src/autofit/afloader.c (af_loader_load_glyph): Handle warping
1092 phantom points as normal.
1093
10942017-05-14 Werner Lemberg <wl@gnu.org>
1095
1096 Remove remnants of raster pool.
1097
1098 * include/freetype/internal/ftobjs.h (FT_LibraryRec): Remove
1099 `raster_pool' and `raster_pool_size' fields.
1100
1101 * src/base/ftobjs.c (FT_New_Library), src/raster/ftrend1.c
1102 (ft_raster1_init), src/smooth/ftsmooth.c (ft_smooth_init): Updated.
1103
11042017-05-13 Werner Lemberg <wl@gnu.org>
1105
1106 * Version 2.8 released.
1107 =======================
1108
1109
1110 Tag sources with `VER-2-8'.
1111
1112 * docs/VERSION.TXT: Add entry for version 2.8.
1113 * docs/CHANGES: Updated.
1114
1115 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1116 builds/windows/vc2005/index.html,
1117 builds/windows/vc2008/freetype.vcproj,
1118 builds/windows/vc2008/index.html,
1119 builds/windows/vc2010/freetype.vcxproj,
1120 builds/windows/vc2010/index.html,
1121 builds/windows/visualc/freetype.dsp,
1122 builds/windows/visualc/freetype.vcproj,
1123 builds/windows/visualc/index.html,
1124 builds/windows/visualce/freetype.dsp,
1125 builds/windows/visualce/freetype.vcproj,
1126 builds/windows/visualce/index.html,
1127 builds/wince/vc2005-ce/freetype.vcproj,
1128 builds/wince/vc2005-ce/index.html,
1129 builds/wince/vc2008-ce/freetype.vcproj,
1130 builds/wince/vc2008-ce/index.html: s/2.7.1/2.8/, s/271/28/.
1131
1132 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 8.
1133 (FREETYPE_PATCH): Set to 0.
1134
1135 * builds/unix/configure.raw (version_info): Set to 20:0:14.
1136 * CMakeLists.txt (VERSION_MINOR): Set to 8.
1137 (VERSION_PATCH): Set to 0.
1138
11392017-05-12 Hin-Tak Leung <htl10@users.sourceforge.net>
1140
1141 Fix `FT_UINT_TO_POINTER' macro for Windows.
1142
1143 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
1144 include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER) [_WIN64]:
1145 Fix definition.
1146
11472017-05-11 Sascha Brawer <sascha@google.com>
1148 Werner Lemberg <wl@gnu.org
1149
1150 [autofit] Add support for Chakma script.
1151
1152 * src/autofit/afblue.dat: Add blue zone data for Chakma.
1153 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1154
1155 * src/autofit/afscript.h: Add Chakma standard character.
1156
1157 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Chakma data.
1158
11592017-05-10 Sascha Brawer <sascha@google.com>
1160 Werner Lemberg <wl@gnu.org
1161
1162 [autofit] Add support for Kayah Li script.
1163
1164 * src/autofit/afblue.dat: Add blue zone data for Kayah Li.
1165 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1166
1167 * src/autofit/afscript.h: Add Kayah Li standard character.
1168
1169 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Kayah Li data.
1170
11712017-05-10 Sascha Brawer <sascha@google.com>
1172 Werner Lemberg <wl@gnu.org
1173
1174 [autofit] Add support for Bamum script.
1175
1176 * src/autofit/afblue.dat: Add blue zone data for Bamum.
1177 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1178
1179 * src/autofit/afscript.h: Add Bamum standard character.
1180
1181 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Bamum data.
1182
11832017-05-10 Sascha Brawer <sascha@google.com>
1184 Werner Lemberg <wl@gnu.org
1185
1186 [autofit] Add support for Saurashtra script.
1187
1188 * src/autofit/afblue.dat: Add blue zone data for Saurashtra.
1189 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1190
1191 * src/autofit/afscript.h: Add Saurashtra standard character.
1192
1193 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Saurashtra
1194 data.
1195
11962017-05-10 Sascha Brawer <sascha@google.com>
1197 Werner Lemberg <wl@gnu.org
1198
1199 [autofit] Add support for Buhid script.
1200
1201 * src/autofit/afblue.dat: Add blue zone data for Buhid.
1202 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1203
1204 * src/autofit/afscript.h: Add Buhid standard character.
1205
1206 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Buhid data.
1207
12082017-05-08 Sascha Brawer <sascha@google.com>
1209 Werner Lemberg <wl@gnu.org
1210
1211 [autofit] Add support for Shavian script.
1212
1213 * src/autofit/afblue.dat: Add blue zone data for Shavian.
1214 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1215
1216 * src/autofit/afscript.h: Add Shavian standard character.
1217
1218 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Shavian data.
1219
12202017-05-08 Sascha Brawer <sascha@google.com>
1221 Werner Lemberg <wl@gnu.org
1222
1223 [autofit] Add support for Vai script.
1224
1225 * src/autofit/afblue.dat: Add blue zone data for Vai.
1226 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1227
1228 * src/autofit/afscript.h: Add Vai standard character.
1229
1230 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Vai data.
1231
12322017-05-08 Sascha Brawer <sascha@google.com>
1233 Werner Lemberg <wl@gnu.org
1234
1235 [autofit] Add support for Osmanya script.
1236
1237 * src/autofit/afblue.dat: Add blue zone data for Osmanya.
1238 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1239
1240 * src/autofit/afscript.h: Add Osmanya standard character.
1241
1242 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Osmanya data.
1243
12442017-05-08 Sascha Brawer <sascha@google.com>
1245 Werner Lemberg <wl@gnu.org
1246
1247 [autofit] Add support for Coptic script.
1248
1249 * src/autofit/afblue.dat: Add blue zone data for Coptic.
1250 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1251
1252 * src/autofit/afscript.h: Add Coptic standard character.
1253
1254 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Coptic data.
1255
12562017-05-08 Sascha Brawer <sascha@google.com>
1257 Werner Lemberg <wl@gnu.org
1258
1259 [autofit] Add support for Carian script.
1260
1261 * src/autofit/afblue.dat: Add blue zone data for Carian.
1262 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1263
1264 * src/autofit/afscript.h: Add Carian standard character.
1265
1266 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Carian data.
1267
12682017-05-07 Werner Lemberg <wl@gnu.org>
1269
1270 [truetype] Add tricky font `DFGirl-W6-WIN-BF' (from Dynalab).
1271
1272 Reported by Roy Tam <roytam@gmail.com>.
1273
1274 * src/truetype/ttobjs.c (tt_check_trickyness_family): Implement it.
1275
12762017-05-07 Roy Tam <roytam@gmail.com>
1277 Werner Lemberg <wl@gnu.org>
1278
1279 [truetype] More tricky fonts (mainly from Dynalab).
1280
1281 * src/truetype/ttobjs.c (tt_check_trickyness_family,
1282 tt_check_trickyness_sfnt_ids): Add them.
1283
12842017-05-07 Werner Lemberg <wl@gnu.org>
1285
1286 [truetype] Add tricky font `DLCHayMedium' (from Dynalab).
1287
1288 Reported by Roy Tam <roytam@gmail.com>.
1289
1290 * src/truetype/ttobjs.c (tt_check_trickyness_family): Implement it.
1291
12922017-05-03 Werner Lemberg <wl@gnu.org>
1293
1294 */*: s/backwards compatibility/backward compatibility/.
1295
12962017-05-03 Sascha Brawer <sascha@google.com>
1297 Werner Lemberg <wl@gnu.org
1298
1299 [autofit] Add support for Unified Canadian Syllabics script.
1300
1301 * src/autofit/afblue.dat: Add blue zone data for Unified Canadian
1302 Syllabics.
1303 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1304
1305 * src/autofit/afscript.h: Add Unified Canadian Syllabics standard
1306 character.
1307
1308 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Unified
1309 Canadian Syllabics data.
1310
13112017-05-03 Sascha Brawer <sascha@google.com>
1312 Werner Lemberg <wl@gnu.org>
1313
1314 [autofit] Add blue-zone support for Sundanese script.
1315
1316 This essentially moves the Sundanese script from the `Indic' hinter
1317 to the `Latin' hinter.
1318
1319 * src/autofit/afblue.dat: Add blue zone data for Sundanese.
1320
1321 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1322
1323 * src/autofit/afscript.h: Add Sundanese standard character and move
1324 data out of AF_CONFIG_OPTION_INDIC block.
1325
1326 * src/autofit/afranges.c: Move Sundanese data out of
1327 AF_CONFIG_OPTION_INDIC block.
1328
1329 * src/autofit/afstyles.h: Update Sundanese data; in particular, use
1330 AF_WRITING_SYSTEM_LATIN.
1331
13322017-05-03 Sascha Brawer <sascha@google.com>
1333 Werner Lemberg <wl@gnu.org
1334
1335 [autofit] Add support for Avestan script.
1336
1337 * src/autofit/afblue.dat: Add blue zone data for Avestan.
1338 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1339
1340 * src/autofit/afscript.h: Add Avestan standard character.
1341
1342 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Avestan data.
1343
13442017-05-02 Behdad Esfahbod <behdad@behdad.org>
1345
1346 [truetype] Make `IUP' gvar deltas do the same as Apple (#50832).
1347
1348 When points are not touched by gvar interpolation deltas, FreeType
1349 gave a slightly different result than Apple's CoreText.
1350
1351 The OpenType working group will update the specification to document
1352 the following behaviour: If the two points with deltas to the `left'
1353 and `right' of the untouched point have the same coordinate, then
1354 the inferred delta for the untouched point should be zero.
1355
1356 * src/truetype/ttgxvar.c (tt_delta_interpolate): Implement new
1357 behaviour.
1358
13592017-05-02 Werner Lemberg <wl@gnu.org>
1360
1361 [autofit] Remove `slight' auto-hint mode again.
1362
1363 A poll on freetype-devel favoured changes directly applied to
1364 `light'.
1365
1366 * include/freetype/freetype.h (FT_LOAD_TARGET_SLIGHT,
1367 FT_RENDER_MODE_SLIGHT): Removed.
1368
1369 * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
1370 (af_latin_hints_init), src/autofit/aflatin2.c
1371 (af_latin2_hints_init): Revert change from 2017-04-22.
1372
1373 * src/autofit/afloader.c (af_loader_load_glyph) Remove references to
1374 FT_RENDER_MODE_SLIGHT.
1375 [AF_CONFIG_OPTION_TT_SIZE_METRICS]: Enable TrueType-like metrics
1376 unconditionally.
1377
1378 * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Revert change from
1379 2017-04-22.
1380
1381 * src/base/ftobjs.c (FT_Load_Glyph): Revert change from 2017-04-22.
1382
1383 * src/pshinter/pshalgo.c (ps_hints_apply): Revert change from
1384 2017-04-22.
1385
1386 * src/smooth/ftsmooth.c (ft_smooth_render): Revert change from
1387 2017-04-22.
1388
1389 * docs/CHANGES: Updated.
1390
13912017-04-30 Werner Lemberg <wl@gnu.org>
1392
1393 [autofit] Fix metrics computation.
1394
1395 Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de> and
1396 Nikolaus Waxweiler <madigens@gmail.com>.
1397
1398 * src/base/ftobjs.c (FT_Request_Size): Trigger recomputation of
1399 auto-hinter metrics. Without this change, multiple size changing
1400 calls for a single face fail.
1401
14022017-04-29 Werner Lemberg <wl@gnu.org>
1403
1404 * src/truetype/ttdriver.c (tt_size_request): Properly check `error'.
1405
1406 Reported by Earnestly <zibeon@googlemail.com> in
1407
1408 https://lists.nongnu.org/archive/html/freetype/2017-04/msg00031.html
1409
14102017-04-27 Werner Lemberg <wl@gnu.org>
1411
1412 Introduce AF_CONFIG_OPTION_TT_SIZE_METRICS configuration option.
1413
1414 * include/freetype/config/ftoption.h
1415 (AF_CONFIG_OPTION_TT_SIZE_METRICS): New option, commented out by
1416 default.
1417
1418 * src/autofit/afloader.c (af_loader_load_glyph): Use
1419 AF_CONFIG_OPTION_TT_SIZE_METRICS to guard the corresponding code.
1420
14212017-04-26 Werner Lemberg <wl@gnu.org>
1422
1423 * include/freetype/freetype.h (FT_Render_Mode): Fix order.
1424
1425 This retains backward compatibility.
1426
1427 Noted by Alexei.
1428
14292017-04-22 Werner Lemberg <wl@gnu.org>
1430
1431 [truetype] Do linear scaling for FT_LOAD_NO_HINTING (#50470).
1432
1433 * src/truetype/ttobjs.h (TT_SizeRec): Add field `hinted_metrics' to
1434 hold hinted metrics.
1435 Make `metrics' a pointer so that `tt_glyph_load' can easily switch
1436 between metrics.
1437
1438 * src/truetype/ttdriver.c (tt_size_request): Updated.
1439 (tt_glyph_load): Use top-level metrics if FT_LOAD_NO_HINTING is
1440 used.
1441
1442 * src/truetype/ttgload.c (TT_Hint_Glyph, TT_Process_Simple_Glyph,
1443 TT_Process_Composite_Component, load_truetype_glyph,
1444 compute_glyph_metrics, TT_Load_Glyph): Updated.
1445
1446 * src/truetype/ttinterp.c (TT_Load_Context): Updated.
1447
1448 * src/truetype/ttobjs.c (tt_size_reset): Updated.
1449
1450 * src/truetype/ttsubpix.c (sph_set_tweaks): Updated.
1451
14522017-04-22 Werner Lemberg <wl@gnu.org>
1453
1454 Add new `slight' auto-hinting mode.
1455
1456 This mode uses fractional advance widths and doesn't scale glyphs
1457 horizontally, only applying vertical scaling and hinting.
1458
1459 At the same time, the behaviour of the `light' auto-hinter gets
1460 restored for backward compatibility: Both vertical and horizontal
1461 scaling is again based on rounded metrics values (this was changed
1462 in a commit from 2017-03-30 as a side effect). To be more precise,
1463 the behaviour is restored for TrueType fonts only; for other font
1464 formats like Type 1, this is a new feature of the `light' hinting
1465 mode.
1466
1467 * include/freetype/freetype.h (FT_LOAD_TARGET_SLIGHT): New macro.
1468 (FT_RENDER_MODE_SLIGHT): New render mode.
1469
1470 * include/freetype/internal/ftobjs.h (FT_Size_InternalRec): Add
1471 `autohint_mode' and `autohint_metrics' fields.
1472
1473 * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
1474 (af_latin_hints_init), src/autofit/aflatin2 (af_latin2_hints_init):
1475 Updated.
1476
1477 * src/autofit/afloader.c (af_loader_embolden_glyph_in_slot): Use
1478 `autohint_metrics'.
1479 (af_loader_load_glyph): s/internal/slot_internal/.
1480 Initialize `autohint_metrics' and `autohint_mode' depending on
1481 current auto-hint mode.
1482 Use `autohint_metrics'.
1483 Updated.
1484
1485 * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Updated.
1486
1487 * src/base/ftobjs.c (FT_Load_Glyph): Updated.
1488 (FT_New_Size): Allocate `internal' object.
1489
1490 * src/pshinter/pshalgo.c (ps_hints_apply): Updated.
1491
1492 * src/smooth/ftsmooth.c (ft_smooth_render): Updated.
1493
14942017-04-22 Werner Lemberg <wl@gnu.org>
1495
1496 Introduce `FT_Size_InternalRec' structure.
1497
1498 We are going to extend this later on.
1499
1500 * include/freetype/internal/ftobjs.h (FT_Size_InternalRec): New
1501 structure with a single field `module_data'.
1502
1503 * src/base/ftobjs.c (FT_New_Size): Allocate `internal' field of
1504 `FT_Size' structure.
1505
1506 * src/cff/cffgload.c (cff_builder_init, cff_decoder_prepare): Use
1507 `size->internal->module_data' instead of `size->internal'.
1508
1509 * src/cff/cffobjs.c (cff_size_done): Deallocate `module_data'.
1510 (cff_size_init, cff_size_select, cff_size_request): Use
1511 `size->internal->module_data' instead of `size->internal'.
1512
1513 * src/cif/cidobjs.c (cid_size_done, cid_size_init,
1514 cid_size_request): Use `size->internal->module_data' instead of
1515 `size->internal'.
1516
1517 * src/psaux/psobjs.c (t1_builder_ini): Use
1518 `size->internal->module_data' instead of `size->internal'.
1519
1520 * src/type1/t1objs.c (T1_Size_Done, T1_Size_Init, T1_Size_Request):
1521 Use `size->internal->module_data' instead of `size->internal'.
1522
15232017-04-21 Alexei Podtelezhnikov <apodtele@gmail.com>
1524
1525 * src/smooth/ftsmooth.h: Remove unused guards and declaration.
1526
15272017-04-16 Hin-Tak Leung <htl10@users.sourceforge.net>
1528
1529 Fix tracing messages.
1530
1531 * src/base/ftobjs.c (FT_Face_GetCharVariantIndex,
1532 FT_Face_GetCharVariantIsDefault, FT_Face_GetVariantsOfChar): Print
1533 correct function name.
1534
15352017-04-08 Sascha Brawer <sascha@google.com>
1536 Werner Lemberg <wl@gnu.org
1537
1538 [autofit] Add support for Old Turkic script.
1539
1540 * src/autofit/afblue.dat: Add blue zone data for Old Turkic.
1541 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1542
1543 * src/autofit/afscript.h: Add Old Turkic standard characters.
1544
1545 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Old Turkic data.
1546
15472017-04-08 Sascha Brawer <sascha@google.com>
1548 Werner Lemberg <wl@gnu.org
1549
1550 [autofit] Add support for Gothic script.
1551
1552 * src/autofit/afblue.dat: Add blue zone data for Gothic.
1553 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1554
1555 * src/autofit/afscript.h: Add Gothic standard characters.
1556
1557 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Gothic data.
1558
15592017-04-08 Sascha Brawer <sascha@google.com>
1560 Werner Lemberg <wl@gnu.org
1561
1562 [autofit] Add support for Cypriot script.
1563
1564 * src/autofit/afblue.dat: Add blue zone data for Cypriot.
1565 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1566
1567 * src/autofit/afscript.h: Add Cypriot standard characters.
1568
1569 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Cypriot data.
1570
15712017-04-08 Sascha Brawer <sascha@google.com>
1572 Werner Lemberg <wl@gnu.org
1573
1574 [autofit] Add support for Deseret script.
1575
1576 * src/autofit/afblue.dat: Add blue zone data for Deseret.
1577 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1578
1579 * src/autofit/afscript.h: Add Deseret standard characters.
1580
1581 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Deseret data.
1582
15832017-04-07 Werner Lemberg <wl@gnu.org>
1584
1585 [autofit] Fix invalid character range description (#50745).
1586
1587 Also reported as
1588
1589 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1034
1590
1591 * src/autofit/afranges.c (af_glag_nonbase_uniranges): Fix typo in
1592 recent commit.
1593
15942017-04-07 Werner Lemberg <wl@gnu.org>
1595
1596 [ftfuzzer] Fix clang warnings.
1597
1598 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Add
1599 casts.
1600
16012017-04-06 Sascha Brawer <sascha@google.com>
1602 Werner Lemberg <wl@gnu.org
1603
1604 [autofit] Add support for Lisu script.
1605
1606 * src/autofit/afblue.dat: Add blue zone data for Lisu.
1607 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1608
1609 * src/autofit/afscript.h: Add Lisu standard characters.
1610
1611 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Lisu data.
1612
16132017-04-06 Sascha Brawer <sascha@google.com>
1614 Werner Lemberg <wl@gnu.org
1615
1616 [autofit] Add support for Osage script.
1617
1618 * src/autofit/afblue.dat: Add blue zone data for Osage.
1619 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1620
1621 * src/autofit/afscript.h: Add Osage standard characters.
1622
1623 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Osage data.
1624
16252017-04-06 Sascha Brawer <sascha@google.com>
1626 Werner Lemberg <wl@gnu.org
1627
1628 [autofit] Add support for Glagolitic script.
1629
1630 * src/autofit/afblue.dat: Add blue zone data for Glagolitic.
1631 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1632
1633 * src/autofit/afscript.h: Add Glagolitic standard characters.
1634
1635 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Glagolitic data.
1636
16372017-04-06 Sascha Brawer <sascha@google.com>
1638 Werner Lemberg <wl@gnu.org
1639
1640 [autofit] Add support for Tai Viet script.
1641
1642 * src/autofit/afblue.dat: Add blue zone data for Tai Viet.
1643 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1644
1645 * src/autofit/afscript.h: Add Tai Viet standard characters.
1646
1647 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Tai Viet data.
1648
16492017-04-06 Sascha Brawer <sascha@google.com>
1650 Werner Lemberg <wl@gnu.org
1651
1652 [autofit] Add support for Tifinagh script.
1653
1654 * src/autofit/afblue.dat: Add blue zone data for Tifinagh.
1655 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1656
1657 * src/autofit/afscript.h: Add Tifinagh standard characters.
1658
1659 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Tifinagh data.
1660
16612017-04-06 Sascha Brawer <sascha@google.com>
1662 Werner Lemberg <wl@gnu.org
1663
1664 [autofit] Add support for N'Ko script.
1665
1666 * src/autofit/afblue.dat: Add blue zone data for N'Ko.
1667 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1668
1669 * src/autofit/afscript.h: Add N'Ko standard characters.
1670
1671 * src/autofit/afranges.c, src/autofit/afstyles.h: Add N'Ko data.
1672
16732017-04-06 Sascha Brawer <sascha@google.com>
1674
1675 [autofit] Add support for Adlam script.
1676
1677 * src/autofit/afblue.dat: Add blue zone data for Adlam.
1678 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1679
1680 * src/autofit/afscript.h: Add Adlam standard characters.
1681
1682 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Adlam data.
1683
16842017-04-06 Sascha Brawer <sascha@google.com>
1685
1686 [autofit] Add support for Ol Chiki script.
1687
1688 * src/autofit/afblue.dat: Add blue zone data for Ol Chiki.
1689 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1690
1691 * src/autofit/afscript.h: Add Ol Chiki standard character.
1692
1693 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Ol Chiki data.
1694
16952017-04-03 Werner Lemberg <wl@gnu.org>
1696
1697 [truetype] Avoid reexecution of `fpgm' and `prep' in case of error.
1698
1699 Reported as
1700
1701 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=981
1702
1703 * include/freetype/fterrdef.h (FT_Err_DEF_In_Glyf_Bytecode): New
1704 error code.
1705
1706 * src/truetype/ttinterp.c (Ins_FDEF, Ins_IDEF): Prohibit execution
1707 of these two opcodes in `glyf' bytecode.
1708 (TT_RunIns): Don't enforce reexecution of `fpgm' and `prep' bytecode
1709 in case of error since function tables can no longer be modified
1710 (due to the changes in `Ins_FDEF' and `Ins_IDEF'). This change can
1711 enormously speed up handling of broken fonts.
1712
17132017-04-02 Alexei Podtelezhnikov <apodtele@gmail.com>
1714
1715 [autofit] Disable metrics adjustment for `FT_LOAD_TARGET_LCD'.
1716
1717 * src/autofit/aflatin.c (af_latin_hints_init): Updated.
1718 * src/autofit/aflatin2.c (af_latin2_hints_init): Ditto.
1719
17202017-04-01 Werner Lemberg <wl@gnu.org>
1721
1722 * src/truetype/ttgload.c: Include FT_CONFIG_CONFIG_H.
1723
1724 Otherwise FT_UINT_TO_POINTER might not be defined.
1725
1726 Problem reported by Alexei.
1727
17282017-03-31 Alexei Podtelezhnikov <apodtele@gmail.com>
1729
1730 [autofit] Disable stem adjustment for `FT_LOAD_TARGET_LCD'.
1731
1732 * include/freetype/freetype.h (FT_LOAD_TARGET_LCD): Document it.
1733 * src/autofit/afcjk.c (af_cjk_hints_init): Updated.
1734 * src/autofit/aflatin.c (af_latin_hints_init): Ditto.
1735 * src/autofit/aflatin2.c (af_latin2_hints_init): Ditto.
1736
17372017-03-31 Werner Lemberg <wl@gnu.org>
1738
1739 * src/cff/cffload.c (cff_font_load): Improve fix from 2017-01-04.
1740
1741 Allow CFFs containing a single font to have an empty font name.
1742
1743 Problem reported by 張俊芝 <418092625@qq.com> in
1744
1745 https://lists.nongnu.org/archive/html/freetype-devel/2017-03/msg00074.html
1746
17472017-03-30 Werner Lemberg <wl@gnu.org>
1748
1749 * src/cff/cffparse.h (CFF2_DEFAULT_STACK): Set to 513 also.
1750
1751 Requested by Dave Arnold.
1752
17532017-03-30 Werner Lemberg <wl@gnu.org>
1754
1755 [truetype] Fix HVAR and VVAR handling (#50678).
1756
1757 * src/truetype/ttgxvar.c (tt_hvadvance_adjust): Handle
1758 glyph indices larger than `mapCount' as described in the
1759 specification.
1760
17612017-03-30 Werner Lemberg <wl@gnu.org>
1762
1763 [truetype] Allow linear scaling for unhinted rendering (#50470).
1764
1765 * src/truetype/ttdriver.c (tt_size_request): Revert change from
1766 2011-07-16; the intended metrics fix seems now to be implemented in
1767 a different way, making the patch unnecessary. Note that this
1768 change was usually patched out by all major GNU/Linux distributions
1769 due to heavy side effects.
1770
1771 * src/truetype/ttgload.c (compute_glyph_metrics, TT_Load_Glyph):
1772 Refer to the metrics of the `TT_Size' object.
1773
17742017-03-29 Werner Lemberg <wl@gnu.org>
1775
1776 [truetype] Fix thinko related to PS name of default named instance.
1777
1778 * src/truetype/ttgxvar.c (TT_Get_MM_Var): `strid' and `psid' are
1779 name ID values, not indices into the array of name entries.
1780
17812017-03-27 Werner Lemberg <wl@gnu.org>
1782
1783 [cid, truetype] Don't use `index' as a variable name.
1784
1785 At least on FreeBSD there is a global declaration of `index' in file
1786 `/usr/include/strings.h'.
1787
1788 * src/cff/cf2intrp.c, src/truetype/ttgload.c: s/index/idx/ where
1789 appropriate.
1790
17912017-03-27 Wojciech Mamrak <wmamrak@gmail.com>
1792
1793 [sfnt] Minor improvement for handling kern tables.
1794
1795 * src/sfnt/ttkern.c (tt_face_load_kern): Don't check for
1796 cross-stream kerning tables since we reject format 2 tables later
1797 on anyways.
1798 Modify code for limit test...
1799 (tt_face_get_kerning): ... to avoid a limit test here.
1800
18012017-03-27 Werner Lemberg <wl@gnu.org>
1802
1803 [pcf] Fix compiler warnings.
1804
1805 Reported by Alexander Hedges <ahedges@student.ethz.ch>.
1806
1807 * src/pcf/pcfdrivr.c (pcf_property_set, pcf_property_get): Tag
1808 `property_name' with `FT_UNUSED' where necessary.
1809
18102017-03-26 Werner Lemberg <wl@gnu.org>
1811
1812 * src/psaux/psobjs.c (t1_builder_close_contour): Add safety guard.
1813
1814 Reported as
1815
1816 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=941
1817
18182017-03-23 Werner Lemberg <wl@gnu.org>
1819
1820 [psaux] Better protect `flex' handling.
1821
1822 Reported as
1823
1824 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=935
1825
1826 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
1827 <callothersubr>: Since there is not a single flex operator but a
1828 series of subroutine calls, malformed fonts can call arbitrary other
1829 operators after the start of a flex, possibly adding points. For
1830 this reason we have to check the available number of points before
1831 inserting a point.
1832
18332017-03-23 Werner Lemberg <wl@gnu.org>
1834
1835 [sfnt] Fix check for default named instance.
1836
1837 * src/sfnt/sfobjs.c (sfnt_init_face): A `fixed' number needs four
1838 bytes, not two...
1839
18402017-03-23 Werner Lemberg <wl@gnu.org>
1841
1842 Make MM fonts work (again).
1843
1844 * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
1845 FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Ignore
1846 return value of `ft_face_get_mvar_service'; instead, check whether a
1847 service is actually returned.
1848
18492017-03-20 Werner Lemberg <wl@gnu.org>
1850
1851 [truetype] Some variable renamings.
1852
1853 Too much local variables holding different structures were called
1854 `metrics'.
1855
1856 * src/truetype/ttdriver.c (tt_size_select): s/metrics/size_metrics/.
1857
1858 * src/truetype/ttgload.c (tt_get_metrics_incr_overrides,
1859 compute_glyph_metrics): s/metrics/incr_metrics/.
1860 (load_sbit_image): s/metrics/sbit_metrics/.
1861
1862 * src/truetype/ttobjs.c (tt_size_run_fpgm): s/metrics/size_metrics/.
1863 (tt_size_init_bytecode): s/metrics/tt_metrics/.
1864 (tt_size_reset): s/metrics/size_metrics/.
1865
18662017-03-20 Werner Lemberg <wl@gnu.org>
1867
1868 [sfnt] Don't add instances to non-variation fonts.
1869
1870 * src/sfnt/sfobjs.c (sfnt_init_face): Fix it.
1871
18722017-03-20 Werner Lemberg <wl@gnu.org>
1873
1874 * src/cff/cffgload.c (cff_builder_init): Add safety guard (#50578).
1875
18762017-03-18 Werner Lemberg <wl@gnu.org>
1877
1878 Introduce FT_UINT_TO_POINTER macro (#50560).
1879
1880 We have to make a separate case for Windows 64's LLP64 data model.
1881
1882 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
1883 include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER): New macro.
1884
1885 * src/truetype/ttgload.c (load_truetype_glyph): Use it.
1886
18872017-03-18 Werner Lemberg <wl@gnu.org>
1888
1889 * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter (#50573).
1890
1891 The problematic font that exceeds the old limit is Lato-Regular,
1892 version 2.007, containing bytecode generated by a buggy version of
1893 ttfautohint.
1894
18952017-03-18 Werner Lemberg <wl@gnu.org>
1896
1897 [truetype] Another limitation for bytecode loop count maximum.
1898
1899 Reported as
1900
1901 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=900
1902
1903 * src/truetype/ttinterp.c (TT_RunIns): Limit `loopcall_counter_max'
1904 by number of glyphs also.
1905
19062017-03-18 Werner Lemberg <wl@gnu.org>
1907
1908 [ftfuzzer] Minor improvement.
1909
1910 * src/tools/ftfuzzer/ftfuzzer.cc: Don't set intermediate axis if
1911 bitmap strikes are active.
1912
19132017-03-18 Werner Lemberg <wl@gnu.org>
1914
1915 Improve `make multi'.
1916
1917 * src/autofit/aflatin2.c: Guard file with FT_OPTION_AUTOFIT2.
1918
1919 * src/base/ftmac.c: Guard more parts of the file with FT_MACINTOSH.
1920
1921 * src/psaux/afmparse.c: Guard file with T1_CONFIG_OPTION_NO_AFM.
1922
1923 * src/sfnt/pngshim.c: Guard file with
1924 TT_CONFIG_OPTION_EMBEDDED_BITMAPS also.
1925
1926 * src/sfnt/ttbdf.c: Avoid empty source file.
1927 * src/sfnt/ttpost.c: Guard file with
1928 TT_CONFIG_OPTION_POSTSCRIPT_NAMES.
1929 * src/sfnt/ttsbit.c: Guard file with
1930 TT_CONFIG_OPTION_EMBEDDED_BITMAPS.
1931
1932 * src/truetype/ttgxvar.c, src/truetype/ttinterp.c: Avoid empty
1933 source file.
1934
1935 * src/truetype/ttsubpix.c: Guard file with
1936 TT_USE_BYTECODE_INTERPRETER also.
1937
1938 * src/type1/t1afm.c: Guard file with T1_CONFIG_OPTION_NO_AFM.
1939
1940 * src/autofit/autofit.c, src/base/ftbase.c, src/cache/ftcache.c,
1941 src/cff/cff.c, src/cid/type1cid.c, src/gxvalid/gxvalid.c,
1942 src/pcf/pcf.c, src/pfr/pfr.c, src/psaux/psaux.c,
1943 src/pshinter/pshinter.c, src/psnames/psnames.c, src/raster/raster.c,
1944 src/sfnt/sfnt.c, src/smooth/smooth.c, src/truetype/truetype.c,
1945 src/type1/type1.c, src/type42/type42.c: Remove conditionals; sort
1946 entries.
1947
19482017-03-17 Werner Lemberg <wl@gnu.org>
1949
1950 Fixes for conditional compilation.
1951
1952 * src/autofit/afcjk.c, src/autofit/afindic.c: Include `afcjk.h'
1953 earlier.
1954
1955 * src/sfnt/sfobjs.c (sfnt_init_face): Put `memory' variable into
1956 TT_CONFIG_OPTION_GX_VAR_SUPPORT block.
1957 (sfnt_done_face): Protect some code with
1958 TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1959
1960 * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Remove compiler
1961 warning.
1962
1963 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Put `tmp' variable
1964 into TT_USE_BYTECODE_INTERPRETER block.
1965
1966 (tt_loader_init): Put `error' variable into
1967 TT_USE_BYTECODE_INTERPRETER block.
1968
19692017-03-17 Werner Lemberg <wl@gnu.org>
1970
1971 Fix preprocessor warning.
1972
1973 * devel/ftoption.h, include/freetype/config/ftoption.h: Test whether
1974 TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined before checking its
1975 value.
1976
19772017-03-17 Werner Lemberg <wl@gnu.org>
1978
1979 `make multi' fixes; compiler warnings.
1980
1981 * src/base/ftsnames.c: Include FT_INTERNAL_DEBUG_H.
1982
1983 * src/cff/cffobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
1984 FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H.
1985
1986 * src/sfnt/sfdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
1987 FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H.
1988 (get_win_string, get_apple_string): Initialize `result'.
1989
19902017-03-17 Dave Arnold <darnold@adobe.com>
1991
1992 [cff] Fix potential bugs in default NDV for CFF2.
1993
1994 * src/cff/cffload.c (cff_blend_build_vector): Explicitly build blend
1995 vector when `lenNDV' is zero; don't rely on zero-init.
1996 Save `lenNDV' as part of cache key even when `lenNDV' is zero.
1997
19982017-03-17 Dave Arnold <darnold@adobe.com>
1999
2000 [cff] Fix CFF2 stack allocation.
2001
2002 * src/cff/cffparse.c (cff_parser_init) add 1 for operator.
2003
20042017-03-16 Werner Lemberg <wl@gnu.org>
2005
2006 * src/truetype/ttgxvar.c (tt_done_blend): Free `vvar_table'.
2007
2008 Reported as
2009
2010 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=883
2011
20122017-03-15 Werner Lemberg <wl@gnu.org>
2013
2014 Remove clang compiler warnings (#50548).
2015
2016 * include/freetype/internal/tttypes.h (TT_FaceRec): Make
2017 `var_postscript_prefix_len' unsigned.
2018
2019 * src/autofit/afwarp.c (af_warper_compute_line_best): Remove
2020 redundant assignment.
2021
2022 * src/cff/cffload.c (cff_subfont_load): Add casts.
2023
2024 * src/cff/cffparse.c (cff_parse_blend): Remove redundant assignment.
2025
2026 * src/sfnt/sfdriver.c (fmix32, murmur_hash_3_128): Add `static'
2027 keyword.
2028 Add casts.
2029 (fixed2float): Add cast.
2030 (sfnt_get_var_ps_name): Make `p' always initialized.
2031 Add casts.
2032
2033 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Add casts.
2034
20352017-03-15 Werner Lemberg <wl@gnu.org>
2036
2037 [ftfuzzer] Limit number of tested faces and instances.
2038
2039 This is inspired by the discussion in and analysis of
2040
2041 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=859
2042
2043 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Use only
2044 up to 20 face indices.
2045 Use only up to 20 instance indices.
2046
20472017-03-15 Werner Lemberg <wl@gnu.org>
2048
2049 * src/tools/ftfuzzer/ftfuzzer.cc: Improve readability; formatting.
2050
20512017-03-14 Werner Lemberg <wl@gnu.org>
2052
2053 [sfnt] Implement PS names for font instances [3/3].
2054
2055 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
2056
2057 * include/freetype/internal/tttypes.h (TT_FaceRec): New fields
2058 `var_postscript_prefix' and `var_postscript_prefix_len'.
2059
2060 * src/sfnt/sfdriver.c: Include FT_TRUETYPE_IDS_H.
2061 (sfnt_is_alphanumeric): New wrapperfunction for `ft_isalnum'.
2062 (get_win_string, get_apple_string): Remove `const' from return
2063 value.
2064 (MAX_VALUE_DESCRIPTOR_LEN, MAX_PS_NAME_LEN): New macros.
2065 (hexdigits): New array.
2066 (sfnt_get_var_ps_name): New function, implementing Adobe TechNote
2067 5902 to construct a PS name for a variation font instance.
2068 (sfnt_get_ps_name): Call `sfnt_get_var_ps_name' for font instances.
2069
2070 * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
2071
2072 * src/truetype/ttgxvar.c (tt_set_mm_blend): Reset
2073 `face->postscript_name' to trigger recalculation for new instance
2074 parameters.
2075
20762017-03-14 Werner Lemberg <wl@gnu.org>
2077
2078 [sfnt] Implement PS names for font instances [2/3].
2079
2080 * src/sfnt/sfdriver.c (fix2float) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
2081 New function to find the shortest representation of a 16.16
2082 fractional number.
2083
20842017-03-14 Werner Lemberg <wl@gnu.org>
2085
2086 [sfnt] Implement PS names for font instances [1/3].
2087
2088 Add 128bit MurmurHash 3 function.
2089
2090 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
2091
2092 * src/sfnt/sfdriver.c (ROTL32): New macro.
2093 (fmix32, murmur_hash_3_128): New functions.
2094
20952017-03-13 Werner Lemberg <wl@gnu.org>
2096
2097 [truetype] Ignore invalid MVAR tags.
2098
2099 Reported as
2100
2101 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=838
2102
2103 * src/truetype/ttgxvar.c (ft_var_load_mvar): Ignore value and emit
2104 warning for invalid tags.
2105 (tt_apply_mvar): Ignore invalid tags.
2106
21072017-03-12 Werner Lemberg <wl@gnu.org>
2108
2109 [truetype] Store and use design coordinates also.
2110
2111 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
2112 Add `normalizedcoords' argument.
2113
2114 * src/truetype/ttgxvar.h (GX_BlendRec): Add `coords' field to store
2115 the design coordinates of the current instance.
2116 Updated.
2117
2118 * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Move functionality to...
2119 (tt_set_mm_blend): ... New function.
2120 Convert data in `normalizedcoords' array to `coords' array on
2121 demand.
2122 (TT_Set_Var_Design): Store argument data in `coords' array.
2123 (TT_Get_Var_Design): Get data from `coords' array.
2124 (tt_get_var_blend): Updated.
2125 (tt_done_blend): Updated.
2126
2127 * src/cff/cffload.c, src/cff/cffload.h (cff_get_var_blend): Updated.
2128
2129 * src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.
2130
2131 * src/cff/cffobjs.c (cff_face_init): Updated.
2132
21332017-03-12 Werner Lemberg <wl@gnu.org>
2134
2135 src/truetype/ttgxvar.[ch]: s/avar_checked/avar_loaded/.
2136
21372017-03-08 Werner Lemberg <wl@gnu.org>
2138
2139 [sfnt] Another fix for buggy variation fonts.
2140
2141 Reported as
2142
2143 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=759
2144
2145 * src/sfnt/sfobjs.c (sfnt_init_face): While setting number of
2146 instances to zero for `CFF' fonts table, ensure that there is no
2147 `CFF2' present also (which gets priority).
2148
21492017-03-07 Werner Lemberg <wl@gnu.org>
2150
2151 [sfnt] Improve handling for buggy variation fonts.
2152
2153 Reported as
2154
2155 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=738
2156
2157 * src/sfnt/sfobjs.c (sfnt_init_face): While setting number of
2158 instances to zero for `CFF' fonts table, ensure that there is no
2159 `glyf' table present also (which gets priority).
2160
21612017-03-06 Werner Lemberg <wl@gnu.org>
2162
2163 [sfnt, truetype] Always provide default instance.
2164
2165 As documented in the OpenType specification, an entry for the
2166 default instance may be omitted in the named instance table. In
2167 particular this means that even if there is no named instance table
2168 in the font we actually do have a named instance, namely the default
2169 instance.
2170
2171 For consistency, we always want the default instance in our list of
2172 named instances. If it is missing, we try to synthesize it.
2173
2174 * src/sfnt/sfobjs.c (sfnt_init_face): Check whether the default
2175 instance is in the table of named instances. Otherwise adjust
2176 number of instances.
2177
2178 * src/truetype/ttgxvar.c: Include FT_TRUETYPE_IDS_H.
2179 (TT_Get_MM_Var): Use `face->root.style_flags' as the number of named
2180 instances.
2181 Sythesize a named instance entry if necessary.
2182 (tt_done_blend): Free `normalized_stylecoords'.
2183
21842017-03-05 Werner Lemberg <wl@gnu.org>
2185
2186 [sfnt] Remove redundant code.
2187
2188 * src/sfnt/sfobjs.c (sfnt_init_face): Remove second test for
2189 `num_instances', which will always succeed.
2190
21912017-03-04 Werner Lemberg <wl@gnu.org>
2192
2193 [sfnt] Add `get_name_id' service.
2194
2195 * include/freetype/internal/sfnt.h (TT_Get_Name_ID_Func): New
2196 typedef.
2197 (SFNT_Interface): Add `get_name_id' field.
2198 (FT_DEFINE_SFNT_INTERFACE): Updated.
2199
2200 * src/sfnt/sfdriver.c (search_name_id): Rename to...
2201 (sfnt_get_name_id): ... this.
2202 (sfnt_get_ps_name, sfnt_interface): Updated.
2203
22042017-03-04 Werner Lemberg <wl@gnu.org>
2205
2206 [truetype] Make `TT_Set_MM_Blend' set named instance index.
2207
2208 * src/truetype/ttgxvar.h (GX_Blend): New array
2209 `normalized_stylecoords'.
2210
2211 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Allocate and fill
2212 `normalized_stylecoords'.
2213 (TT_Set_MM_Blend): Check instance tuple and adjust `face_index'
2214 accordingly.
2215
22162017-03-02 Werner Lemberg <wl@gnu.org>
2217
2218 [truetype] Split off designer/normalized conversion routines.
2219
2220 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Split off conversion
2221 code designer->normalized coordinates to...
2222 (ft_var_to_normalized): ... New function.
2223 (TT_Get_Var_Design): Split off conversion code normalized->designer
2224 coordinates to...
2225 (ft_var_to_design): ... New function.
2226
22272017-02-28 Werner Lemberg <wl@gnu.org>
2228
2229 [sfnt] Further generalize `sfnt_get_ps_name'; report invalid data.
2230
2231 * src/sfnt/sfdriver.c (sfnt_ps_map): New array.
2232 (sfnt_is_postscript): New function.
2233 (char_type_func): New typedef.
2234 (get_win_string, get_apple_string): Add argument to specify
2235 character checking function.
2236 Add argument whether argument checking failures should be reported.
2237 Update callers.
2238 (search_name_id): Fix return value.
2239
22402017-02-23 Werner Lemberg <wl@gnu.org>
2241
2242 [sfnt] Split off another bit of `sfnt_get_ps_name'.
2243
2244 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some
2245 functionality into...
2246 (search_name_id): ... New function.
2247
22482017-02-23 Werner Lemberg <wl@gnu.org>
2249
2250 [sfnt] Modularize `sfnt_get_ps_name'.
2251
2252 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some
2253 functionality into...
2254 (IS_WIN, IS_APPLE): ... New macros.
2255 (get_win_string, get_apple_string): ... New functions.
2256
22572017-02-23 Werner Lemberg <wl@gnu.org>
2258
2259 [truetype] Minor improvement.
2260
2261 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
2262 load_truetype_glyph): Remove unnecessary tests.
2263
22642017-02-23 Werner Lemberg <wl@gnu.org>
2265
2266 * include/freetype/internal/tttypes.h (TT_Face): s/isCFF2/is_cff2/.
2267
2268 For orthogonality with other structure field names.
2269
2270 Update all users.
2271
22722017-02-22 Alexei Podtelezhnikov <apodtele@gmail.com>
2273
2274 * src/smooth/ftgrays.c (gray_hline): Improve code.
2275
22762017-02-20 Dominik Röttsches <drott@google.com>
2277
2278 Fix some `ttnameid.h' entries (#50313).
2279
2280 * include/freetype/ttnameid.h:
2281 s/TT_MS_LANGID_SPANISH_INTERNATIONAL_SORT/TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT/,
2282 s/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIA/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN/.
2283
22842017-02-20 Werner Lemberg <wl@gnu.org>
2285
2286 [cff] Finish support for `random' operator.
2287
2288 * src/cff/cfftypes.h (CFF_SubFontRec): Add `random' field.
2289
2290 * src/cff/cffobjs.c: Updated.
2291 (cff_driver_init): Initialize random seed value.
2292
2293 * src/cff/cffload.c (cff_random): New function.
2294 (cff_subfont_load): Add `face' argument.
2295 Update all callers.
2296 Initialize random number generator with a proper seed value.
2297 (cff_font_load): Add `face' argument.
2298 Update all callers.
2299
2300 * src/cff/cffload.h: Updated.
2301
2302 * src/cff/cf2intrp.c (CF2_FIXME): Removed.
2303 (cf2_interpT2CharString) <cf2_escRANDOM>: Implement opcode.
2304
2305 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Don't
2306 initialize random seed value.
2307 <cff_op_random>: Use new random seed framework.
2308
23092017-02-20 Werner Lemberg <wl@gnu.org>
2310
2311 [cff] Sanitize `initialRandomSeed'.
2312
2313 * src/cff/cffload.c (cff_load_private_dict): Make
2314 `initial_random_seed' value always positive.
2315
23162017-02-20 Werner Lemberg <wl@gnu.org>
2317
2318 [cff] Introduce `random-seed' property (2/2).
2319
2320 * src/base/ftobjs.c: Include `FT_CFF_DRIVER_H'.
2321 (open_face): Initialize `face->internal->random_seed'.
2322 (FT_Face_Properties): Handle `FT_PARAM_TAG_RANDOM_SEED'.
2323
2324 * src/cff/cffdrivr.c (cff_property_set): Handle `random-seed'
2325 property.
2326
23272017-02-20 Werner Lemberg <wl@gnu.org>
2328
2329 [cff] Introduce `random-seed' property (1/2).
2330
2331 We need this for support of the `random' operator.
2332
2333 * include/freetype/ftcffdrv.h (FT_PARAM_TAG_RANDOM_SEED): New macro.
2334
2335 * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
2336 field `random_seed'.
2337
2338 * src/cff/cffobjs.h (CFF_DriverRec): New field `random_seed'.
2339
23402017-02-17 Werner Lemberg <wl@gnu.org>
2341
2342 Remove clang warnings.
2343
2344 * src/autofit/aflatin.c (af_latin_sort_blue): Add missing `static'
2345 keyword.
2346
2347 * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
2348 FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates):
2349 Initialize some variables.
2350
23512017-02-16 Nikolaus Waxweiler <madigens@gmail.com>
2352 Werner Lemberg <wl@gnu.org>
2353
2354 Add face property for stem darkening.
2355
2356 * include/freetype/ftautoh.h (FT_PARAM_TAG_STEM_DARKENING): New
2357 macro.
2358
2359 * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Add
2360 `no_stem_darkening' field.
2361
2362 * src/autofit/afloader.c (af_loader_load_glyph),
2363 src/autofit/afmodule.c (af_property_set): Updated.
2364
2365 * src/base/ftobjs.c: Include FT_AUTOHINTER_H.
2366 (ft_open_face_internal): Updated.
2367 (FT_Face_Properties): Handle FT_PARAM_TAG_STEM_DARKENING.
2368
2369 * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Updated.
2370
2371 * src/cff/cffdrivr.c (cff_property_set): Updated.
2372
23732017-02-16 Nikolaus Waxweiler <madigens@gmail.com>
2374 Werner Lemberg <wl@gnu.org>
2375
2376 Add face property for LCD filter weights.
2377
2378 * include/freetype/ftlcdfil.h (FT_PARAM_TAG_LCD_FILTER_WEIGHTS,
2379 FT_LCD_FILTER_FIVE_TAPS): New macros.
2380 (FT_LcdFiveTapFilter): New typedef.
2381
2382 * include/freetype/ftobjs.h (FT_Face_InternalRec)
2383 [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Add `lcd_weights' field.
2384 (FT_Bitmap_LcdFilterFunc): Change third argument to weights array.
2385 (ft_lcd_filter_fir): New prototype.
2386 (FT_LibraryRec): Updated.
2387
2388 * src/base/ftlcdfil.c (_ft_lcd_filter_fir): Renamed to...
2389 (ft_lcd_filter_fir): ... this base function.
2390 Updated.
2391 (_ft_lcd_filter_legacy): Updated.
2392 (FT_Library_SetLcdFilterWeights, FT_Library_SetLcdFilter): Updated.
2393
2394 * src/base/ftobjs.c (ft_open_face_internal): Updated.
2395 (FT_Face_Properties): Handle FT_PARAM_TAG_LCD_FILTER_WEIGHTS.
2396
2397 * src/smooth/ftsmooth.c (ft_smooth_render_generic)
2398 [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Handle LCD weights from
2399 `FT_Face_Internal'.
2400
24012017-02-14 Nikolaus Waxweiler <madigens@gmail.com>
2402 Werner Lemberg <wl@gnu.org>
2403
2404 Add new function `FT_Face_Properties'.
2405
2406 This commit provides the framework, to be filled with something
2407 useful in the next commits.
2408
2409 * include/freetype/freetype.h (FT_Face_Properties): Declare.
2410
2411 * src/base/ftobjs.c (FT_Face_Properties): New function.
2412
24132017-02-13 Werner Lemberg <wl@gnu.org>
2414
2415 [autofit] Prevent overlapping blue zones.
2416
2417 Problem reported as
2418
2419 https://github.com/google/fonts/issues/632
2420
2421 The font in question (Nunito) has values 705 and 713 for the
2422 reference and overshoot values, respectively, of the first blue
2423 zone. Blue zone 2, however, has value 710 for both the reference
2424 and overshoot. At 12ppem, reference and overshoot of blue zone 0
2425 becomes 8px, while blue zone 2 becomes 9px.
2426
2427 A peculiarity of this font is that the tops of isolated vertical
2428 stems like `N' have a slight overshoot also. The auto-hinter tries
2429 to find the nearest blue zone using the *original* coordinates. For
2430 vertical stems, this is value 713. For normal horizontal tops like
2431 in character `E', this is value 710. Since value 713 is mapped to
2432 8px but value 710 to 9px, `N' and similar characters are one pixel
2433 higher than `E', which looks very bad.
2434
2435 This commit sanitizes blue zones to avoid such a behaviour.
2436
2437 * src/autofit/aflatin.c (af_latin_sort_blue): New function.
2438 (af_latin_metrics_init_blues): Sort blue values and remove overlaps.
2439
24402017-02-12 Alexei Podtelezhnikov <apodtele@gmail.com>
2441
2442 * src/smooth/ftgrays.c (gray_sweep): Improve code.
2443
24442017-02-06 Werner Lemberg <wl@gnu.org>
2445
2446 [truetype] Implement `VVAR' table support.
2447
2448 * src/truetype/ttgxvar.h (GX_HVarTable): Renamed to...
2449 (GX_HVVarTable): ...This.
2450 (GX_Blend): Add fields for `VVAR' table handling.
2451 Other minor updates.
2452
2453 * src/truetype/ttgxvar.c (ft_var_load_hvar): Renamed to...
2454 (ft_var_load_hvvar): ...This.
2455 Handle VVAR loading also (controlled by an additional parameter).
2456 (tt_hadvance_adjust): Renamed to...
2457 (tt_hvadvance_adjust): ...This.
2458 Handle application of advance height also (controlled by an
2459 additional parameter).
2460 (tt_hadvance_adjust, tt_vadvance_adjust): Wrappers for
2461 `tt_hvadvance_adjust'.
2462
2463 * src/truetype/ttdriver.c (tt_service_metrics_variations): Updated.
2464
24652017-02-05 Werner Lemberg <wl@gnu.org>
2466
2467 [autofit] Use better blue zone characters for lowercase latin.
2468
2469 The number of lowercase characters for computing the top flat blue
2470 zone value was too small (in most cases only `x' and `z'). If one
2471 of the two characters has a large serif, say, it can happen that
2472 FreeType must select between two different values, having a 50%
2473 chance to use the wrong one. As a result, rendering at larger PPEM
2474 values could yield uneven lowercase glyph heights.
2475
2476 Problem reported by Christoph Koeberlin <christoph@koe.berlin>.
2477
2478 * src/autofit/afblue.dat (AF_BLUE_STRING_LATIN_SMALL): Replaced
2479 with...
2480 (AF_BLUE_STRING_LATIN_SMALL_TOP, AF_BLUE_STRING_LATIN_SMALL_BOTTOM):
2481 ... New, extended sets.
2482 (AF_BLUE_STRINGSET_LATN): Updated.
2483
2484 * src/autofit/afblue.c, scr/autofit/afblue.h: Regenerated.
2485
24862017-02-04 Werner Lemberg <wl@gnu.org>
2487
2488 Make `freetype-config' a wrapper of `pkg-config' if possible.
2489
2490 Based on ideas taken from
2491
Werner Lembergafa043d2018-12-25 22:44:05 +01002492 https://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-multilib.patch
2493 https://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-2.5.3-freetype-config-prefix.patch
Werner Lemberg9fbd0042018-02-17 10:37:10 +01002494
2495 * builds/unix/freetype-config.in: Rewritten. Use `pkg-config' to
2496 set output variables if program is available.
2497
2498 * docs/CHANGES, docs/freetype-config.1: Updated.
2499
25002017-02-04 Werner Lemberg <wl@gnu.org>
2501
2502 * builds/unix/unix-def.in (freetype-config): Fix permissions.
2503
25042017-02-03 Werner Lemberg <wl@gnu.org>
2505
2506 * src/autofit/afglobal.c (af_face_globals_free): Erase useless code.
2507
25082017-02-03 Werner Lemberg <wl@gnu.org>
2509
2510 * include/freetype/ftgasp.h (FT_GASP_SYMMETRIC_GRIDFIT): Fix value.
2511
2512 Reported by Behdad.
2513
25142017-02-02 Werner Lemberg <wl@gnu.org>
2515
2516 [truetype] Fix MVAR post-action handling.
2517
2518 Reported as
2519
2520 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=509
2521
2522 * src/truetype/ttobjs.c (tt_size_reset): Do nothing for CFF2. This
2523 is important to make `tt_size_reset_iterator' (called in
2524 `tt_apply_mvar') always work.
2525
25262017-02-02 Werner Lemberg <wl@gnu.org>
2527
2528 Make compilation with FT_CONFIG_OPTION_PIC work again.
2529
2530 All code committed here is guarded with `FT_CONFIG_OPTION_PIC'.
2531
2532 * include/freetype/internal/services/svmetric.h
2533 (FT_DEFINE_SERVICE_METRICSVARIATIONSREC): Remove trailing semicolon.
2534
2535 * src/autofit/aflatin.c (af_latin_hints_compute_edges,
2536 af_latin_hint_edges): Provide `globals' variable.
2537
2538 * src/autofit/afloader.c (af_loader_load_glyph): Remove shadowing
2539 variable.
2540
2541 * src/autofit/afmodule.c (AF_SCRIPT_CLASSES_GET,
2542 AF_STYLE_CLASSES_GET): Redefine.
2543
2544 * src/autofit/aftypes.h (AF_DEFINE_WRITING_SYSTEM_CLASS): Fix typo.
2545
2546 * src/cff/cffparse.c (CFF_FIELD_BLEND): Provide it.
2547
2548 * src/cff/cffpic.h (CffModulePIC): Fix typo.
2549
25502017-01-31 Alexei Podtelezhnikov <apodtele@gmail.com>
2551
2552 * src/smooth/ftgrays.c (gray_render_scanline): Improve code.
2553
25542017-01-31 Werner Lemberg <wl@gnu.org>
2555
2556 [cff] Provide metrics variation service interface (#50196).
2557
2558 Only now I've got an OTF with an HVAR table for testing...
2559
2560 The code in `ftmm.c' uses `FT_FACE_LOOKUP_SERVICE' to get the
2561 metrics variations interface. However, this didn't work with
2562 `FT_FACE_FIND_GLOBAL_SERVICE' used in `sfnt_init_face'.
2563
2564 * src/cff/cffdrivr.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
2565 (cff_hadvance_adjust, cff_metrics_adjust): Wrapper functions for
2566 metric service functions from the `truetype' module.
2567 (cff_service_metrics_variations): New service.
2568 (cff_services): Updated.
2569
2570 * src/cff/cffpic.h (CFF_SERVICE_METRICS_VAR_GET): New macro.
2571 [FT_CONFIG_OPTION_PIC]: Synchronize code.
2572
2573 * src/sfnt/sfobjs.c (sfnt_init_face): Replace call to
2574 FT_FACE_FIND_GLOBAL_SERVICE with `ft_module_get_service' to always
2575 load the service from the `truetype' module.
2576
25772017-01-31 Werner Lemberg <wl@gnu.org>
2578
2579 Add framework to support services with 9 functions.
2580
2581 * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC9):
2582 New macro.
2583
25842017-01-31 Werner Lemberg <wl@gnu.org>
2585
2586 [base] Fix error handing in MM functions.
2587
2588 * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
2589 FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates):
2590 Implement it.
2591
25922017-01-31 Werner Lemberg <wl@gnu.org>
2593
2594 [truetype] Fix sanity check for `gvar' table (#50184).
2595
2596 * src/truetype/ttgxvar.c (ft_var_load_gvar): There might be missing
2597 variation data for some glyphs.
2598
25992017-01-31 Werner Lemberg <wl@gnu.org>
2600
2601 [autofit] Avoid uninitialized jumps (#50191).
2602
2603 * src/autofit/afcjk.c (af_cjk_metrics_check_digits),
2604 src/autofit/aflatin.c (af_latin_metrics_check_digits): Initialize
2605 `advance'.
2606
26072017-01-27 Werner Lemberg <wl@gnu.org>
2608
2609 s/GB2312/PRC/.
2610
2611 * include/freetype/freetype.h (FT_ENCODING_PRC): New enum value.
2612 (FT_ENCODING_GB2312): Deprecated.
2613
2614 * include/freetype/ttnameid.h (TT_MS_ID_PRC): New macro.
2615 (TT_MS_ID_GB2312): Deprecated.
2616
2617 * src/sfnt/sfobjs.c (sfnt_find_encoding): Updated.
2618
2619 * docs/CHANGES: Updated.
2620
26212017-01-26 Werner Lemberg <wl@gnu.org>
2622
2623 [base] Add `FT_Get_Sfnt_LangTag' function.
2624
2625 * include/freetype/ftsnames.h (FT_SfntLangTag): New structure.
2626 (FT_Get_Sfnt_LangTag): New declaration.
2627
2628 * src/base/ftsnames.c (FT_Get_Sfnt_LangTag): New function.
2629
2630 * docs/CHANGES: Updated.
2631
26322017-01-26 Werner Lemberg <wl@gnu.org>
2633
2634 [sfnt] Support `name' table format 1.
2635
2636 * include/freetype/internal/tttypes.h (TT_LangTagRec): New
2637 structure.
2638 (TT_NameTableRec): Add fields `numLangTagRecords' and `langTags'.
2639
2640 * src/sfnt/ttload.c (tt_face_load_name): Add support for language
2641 tags.
2642 Reduce array size of name strings in case of invalid entries.
2643 (tt_face_free_name): Updated.
2644
2645 * docs/CHANGES: Updated.
2646
26472017-01-25 Werner Lemberg <wl@gnu.org>
2648
2649 [sfnt] s/TT_NameEntry/TT_Name/.
2650
2651 * include/freetype/internal/tttypes.h (TT_NameEntryRec): Renamed
2652 to...
2653 (TT_NameRec): This.
2654 (TT_NameTableRec): Updated.
2655
2656 * src/base/ftsnames.c (FT_Get_Sfnt_Name): Updated.
2657
2658 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Updated.
2659
2660 * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
2661 tt_name_entry_ascii_from_other): Renamed to...
2662 (tt_name_ascii_from_utf16, tt_name_entry_ascii_from_other): This,
2663 respectively.
2664 (TT_NameEntry_ConvertFunc): Renamed to...
2665 (TT_Name_ConvertFunc): This.
2666 (tt_face_get_name): Updated.
2667
2668 * src/sfnt/ttload.c (tt_face_load_name, tt_face_free_name):
2669 Updated.
2670
26712017-01-24 Werner Lemberg <wl@gnu.org>
2672
2673 [sfnt] Fix Postscript name service for symbol fonts.
2674
2675 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Accept PID/EID=3/0
2676 entries also.
2677
26782017-01-24 Werner Lemberg <wl@gnu.org>
2679
2680 [truetype] For OpenType 1.7: s/preferred/typographic/ (sub)family.
2681
2682 * include/freetype/ftsnames.h
2683 (FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY,
2684 FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY): New macros.
2685 (FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
2686 FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY): Deprecated.
2687
2688 * include/freetype/ttnameid.h (TT_NAME_ID_TYPOGRAPHIC_FAMILY,
2689 TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY): New macros.
2690 (TT_NAME_ID_PREFERRED_FAMILY, TT_NAME_ID_PREFERRED_SUBFAMILY):
2691 Deprecated.
2692
2693 * src/sfnt/sfobjs.c (sfnt_load_face): Updated.
2694
2695 * docs/CHANGES: Updated.
2696
26972017-01-23 Werner Lemberg <wl@gnu.org>
2698
2699 [base] Add `FT_Set_Default_Properties' (#49187).
2700
2701 * include/freetype/ftmodapi.h: Add declaration.
2702
2703 * src/base/ftinit.c (ft_set_default_properties): Renamed to...
2704 (FT_Set_Default_Properties): ... this.
2705 (FT_Init_FreeType): Updated.
2706
2707 * docs/CHANGES: Updated.
2708
27092017-01-23 Werner Lemberg <wl@gnu.org>
2710
2711 [truetype] Minor updates for OpenType 1.8.1.
2712
2713 * src/truetype/ttgxvar.h (GX_MVarTable): `axisCount' has been
2714 removed from the specification; it is now reserved.
2715
2716 * src/truetype/ttgxvar.c (ft_var_load_mvar): Updated.
2717 (GX_FVar_Head): Remove `countSizePairs'; the corresponding data
2718 field in the `MVAR' table is now reserved.
2719 (fvar_fields): Updated.
2720
27212017-01-23 Werner Lemberg <wl@gnu.org>
2722
2723 [truetype] Avoid segfault for invalid variation data.
2724
2725 * src/truetype/ttgxvar.c (ft_var_load_item_variation_store): Assure
2726 `itemCount' is not zero.
2727
2728 Reported as
2729
2730 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=441
2731
27322017-01-20 Werner Lemberg <wl@gnu.org>
2733
2734 * src/truetype/ttinterp.c (TT_RunIns): Adjust loop detector limits.
2735
27362017-01-17 Werner Lemberg <wl@gnu.org>
2737
2738 * include/freetype/ttnameid.h: Updated to OpenType 1.8.1.
2739
2740 (TT_APPLE_ID_FULL_UNICODE): New macro.
2741
2742 (TT_MS_LANGID_BOSNIAN_BOSNIA_HERZ_CYRILLIC,
2743 TT_MS_LANGID_UPPER_SORBIAN_GERMANY,
2744 TT_MS_LANGID_LOWER_SORBIAN_GERMANY, TT_MS_LANGID_IRISH_IRELAND,
2745 TT_MS_LANGID_INUKTITUT_CANADA_LATIN, TT_MS_LANGID_BASHKIR_RUSSIA,
2746 TT_MS_LANGID_LUXEMBOURGISH_LUXEMBOURG,
2747 TT_MS_LANGID_GREENLANDIC_GREENLAND, TT_MS_LANGID_MAPUDUNGUN_CHILE,
2748 TT_MS_LANGID_MOHAWK_MOHAWK, TT_MS_LANGID_BRETON_FRANCE,
2749 TT_MS_LANGID_OCCITAN_FRANCE, TT_MS_LANGID_CORSICAN_FRANCE,
2750 TT_MS_LANGID_ALSATIAN_FRANCE, TT_MS_LANGID_YAKUT_RUSSIA,
2751 TT_MS_LANGID_KICHE_GUATEMALA, TT_MS_LANGID_KINYARWANDA_RWANDA,
2752 TT_MS_LANGID_WOLOF_SENEGAL, TT_MS_LANGID_DARI_AFGHANISTAN): New
2753 macros.
2754
2755 (TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC): Fix value.
2756
2757 (TT_MS_LANGID_GERMAN_LIECHTENSTEIN, TT_MS_LANGID_CATALAN_CATALAN,
2758 TT_MS_LANGID_CHINESE_MACAO, TT_MS_LANGID_SPANISH_SPAIN_MODERN_SORT,
2759 TT_MS_LANGID_KOREAN_KOREA, TT_MS_LANGID_ROMANSH_SWITZERLAND,
2760 TT_MS_LANGID_SLOVENIAN_SLOVENIA, TT_MS_LANGID_BASQUE_BASQUE,
2761 TT_MS_LANGID_SETSWANA_SOUTH_AFRICA,
2762 TT_MS_LANGID_ISIXHOSA_SOUTH_AFRICA,
2763 TT_MS_LANGID_ISIZULU_SOUTH_AFRICA, TT_MS_LANGID_KAZAKH_KAZAKHSTAN,
2764 TT_MS_LANGID_KYRGYZ_KYRGYZSTAN, TT_MS_LANGID_KISWAHILI_KENYA,
2765 TT_MS_LANGID_TATAR_RUSSIA, TT_MS_LANGID_ODIA_INDIA,
2766 TT_MS_LANGID_MONGOLIAN_PRC, TT_MS_LANGID_TIBETAN_PRC,
2767 TT_MS_LANGID_WELSH_UNITED_KINGDOM, TT_MS_LANGID_GALICIAN_GALICIAN,
2768 TT_MS_LANGID_SINHALA_SRI_LANKA, TT_MS_LANGID_TAMAZIGHT_ALGERIA,
2769 TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA, TT_MS_LANGID_YI_PRC,
2770 TT_MS_LANGID_UIGHUR_PRC): New aliases.
2771
2772 Remove commented out code.
2773
2774 (TT_NAME_ID_LIGHT_BACKGROUND, TT_NAME_ID_DARK_BACKGROUND,
2775 TT_NAME_ID_VARIATIONS_PREFIX): New macros.
2776
2777 (HAVE_LIMIT_ON_IDENTS): Remove macro (which was useless since many
2778 years), use guarded long macros by default and define short versions
2779 as aliases for the long ones.
2780
27812017-01-15 Werner Lemberg <wl@gnu.org>
2782
2783 * src/truetype/ttgxvar.c (tt_apply_var): Handle underline parameters
2784 also.
2785
27862017-01-11 Werner Lemberg <wl@gnu.org>
2787
2788 * src/base/ftobjs.c (ft_open_face_internal): Improve tracing.
2789
27902017-01-11 Werner Lemberg <wl@gnu.org>
2791
2792 [truetype] Actually use metrics variation service.
2793
2794 * src/base/ftmm.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
2795 (ft_face_get_mvar_service): New auxiliary function to look up
2796 metrics variation service.
2797 (FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
2798 FT_Set_Var_Blend_Coordinates): Call metrics variation service.
2799
2800 * src/truetype/ttobjs.c (tt_face_init): Use metrics variations for
2801 named instances.
2802
28032017-01-11 Werner Lemberg <wl@gnu.org>
2804
2805 [truetype] Provide metrics variation service.
2806
2807 * include/freetype/internal/services/svmetric.h
2808 (FT_Metrics_Adjust_Func): Reduce number of necessary parameters.
2809
2810 * src/truetype/ttgxvar.c: Include FT_LIST_H.
2811 (tt_size_reset_iterator): New auxiliary function for...
2812 (tt_apply_var): New function.
2813
2814 * src/truetype/ttgxvar.h: Updated.
2815
2816 * src/truetype/ttdriver.c (tt_service_metrics_variations): Add
2817 `tt_apply_mvar'.
2818
2819 * include/freetype/internal/ftserv.h (FT_ServiceCache): Add metrics
2820 variation service.
2821
28222017-01-11 Werner Lemberg <wl@gnu.org>
2823
2824 [truetype] Parse `MVAR' table.
2825
2826 * src/truetype/ttgxvar.h (MVAR_TAG_XXX): New macros for MVAR tags.
2827 (GX_Value, GX_MVarTable): New structures.
2828 (GX_Blend): Add it.
2829
2830 * src/truetype/ttgxvar.c (GX_VALUE_SIZE, GX_VALUE_CASE,
2831 GX_GASP_CASE): New macros.
2832 (ft_var_get_value_pointer): New auxiliary function to get a pointer
2833 to a value from various SFNT tables already stored in `TT_Face'.
2834 (ft_var_load_mvar): New function.
2835 (TT_Get_MM_Var): Call it.
2836 (tt_done_blend): Updated.
2837
28382017-01-11 Werner Lemberg <wl@gnu.org>
2839
2840 [truetype] More preparations for MVAR support.
2841
2842 * src/truetype/ttobjs.c (tt_size_reset): Add argument to make
2843 function only recompute ascender, descender, and height.
2844
2845 * src/truetype/ttobjs.h: Updated.
2846
2847 * src/truetype/ttdriver.c (tt_size_select, tt_size_request):
2848 Updated.
2849
28502017-01-09 Werner Lemberg <wl@gnu.org>
2851
2852 [pcf] Disable long family names by default.
2853
2854 * include/freetype/config/ftoption.h
2855 (PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): Comment out.
2856
28572017-01-09 Werner Lemberg <wl@gnu.org>
2858
2859 [pcf] Make long family names configurable.
2860
2861 The change from 2016-09-29 was too radical (except for people using
2862 the openSuSE GNU/Linux distribution). To ameliorate the situation,
2863 PCF_CONFIG_OPTION_LONG_FAMILY_NAMES gets introduced which controls
2864 the feature; if set, a new PCF property option
2865 `no-long-family-names' can be used to switch this feature off.
2866
2867 * include/freetype/config/ftoption.h, devel/ftoption.h
2868 (PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): New option.
2869
2870 * include/freetype/ftpcfdrv.h: New header file (only containing
2871 comments currently, used for building the documentation).
2872
2873 * include/freetype/config/ftheader.h (FT_PCF_DRIVER_H): New macro.
2874
2875 * src/pcf/pcf.h (PCF_Driver): Add `no_long_family_names' field.
2876
2877 * src/pcf/pcfdrivr.c: Include FT_SERVICE_PROPERTIES_H and
2878 FT_PCF_DRIVER_H.
2879 (pcf_property_set, pcf_property_get): New functions.
2880 (pcf_service_properties): New service.
2881 (pcf_services): Updated.
2882 (pcf_driver_init) [PCF_CONFIG_OPTION_LONG_FAMILY_NAMES]: Handle
2883 `no_long_family_names'.
2884
2885 * src/pcf/pcfread.c (pcf_load_font): Handle `no_long_family_names'
2886 and PCF_CONFIG_OPTION_LONG_FAMILY_NAMES.
2887
2888 * docs/CHANGES: Updated.
2889
28902017-01-09 Werner Lemberg <wl@gnu.org>
2891
2892 [pcf] Introduce a driver structure.
2893
2894 To be filled later on with something useful.
2895
2896 * src/pcf/pcf.h (PCF_Driver): New structure.
2897
2898 * src/pcf/pcfdrivr.c (pcf_driver_init, pcf_driver_done): New dummy
2899 functions.
2900 (pcf_driver_class): Updated.
2901
29022017-01-08 Werner Lemberg <wl@gnu.org>
2903
2904 [truetype] Again some GX code shuffling.
2905
2906 We need this later on for MVAR also.
2907
2908 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Split off computing
2909 an item store variation delta into...
2910 (ft_var_get_item_delta): ...new function.
2911
29122017-01-08 Werner Lemberg <wl@gnu.org>
2913
2914 [truetype] Adjust font variation flags for MVAR.
2915
2916 * include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
2917 Remove all flags related to MVAR; replace it with...
2918 (TT_FACE_FLAG_VAR_MVAR): ...this new macro.
2919 (TT_Face): Remove `mvar_support' field (which was still unused).
2920
29212017-01-06 Werner Lemberg <wl@gnu.org>
2922
2923 [truetype] More GX code shuffling.
2924
2925 We need this later on for MVAR also.
2926
2927 * src/truetype/ttgxvar.c (tt_done_blend): Split off handling of item
2928 variation store into...
2929 (ft_var_done_item_variation_store): ...new function.
2930
29312017-01-06 Werner Lemberg <wl@gnu.org>
2932
2933 [truetype] More generalization of GX stuff.
2934
2935 We need this later on for MVAR also.
2936
2937 * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add
2938 parameters for delta-set index mapping and item variation store.
2939 (ft_var_load_item_variation_store): Add parameter for item variation
2940 store.
2941 s/hvarData/varData/.
2942 Move allocation of `hvar_table' to...
2943 (ft_var_load_hvar): ...this function.
2944 Updated.
2945
29462017-01-06 Werner Lemberg <wl@gnu.org>
2947
2948 [truetype] Some GX structure renames for generalization.
2949
2950 We need this later on for MVAR also.
2951
2952 * src/truetype/ttgxvar.h (GX_HVarData): Renamed to...
2953 (GX_ItemVarData): ...this.
2954 (GX_HVarRegion): Renamed to...
2955 (GX_VarRegion): ...this.
2956 (GX_HVStore): Renamed to...
2957 (GX_ItemVarStore): ...this.
2958 (GX_WidthMap): Renamed to...
2959 (GX_DeltaSetIdxMap): ...this.
2960
2961 (GX_HVarTable): Updated.
2962
2963 * src/truetype/ttgxvar.c: Updated.
2964
29652017-01-06 Werner Lemberg <wl@gnu.org>
2966
2967 [truetype] Code shuffling.
2968
2969 * src/truetype/ttgxvar.c (ft_var_load_hvar): Split off loading of
2970 item variation store and delta set index mapping into...
2971 (ft_var_load_item_variation_store,
2972 ft_var_load_delta_set_index_mapping): ...new functions.
2973
29742017-01-06 Werner Lemberg <wl@gnu.org>
2975
2976 [truetype] Add HVAR access without advance width map.
2977
2978 * src/truetype/ttgxvar.c (ft_var_load_hvar): Handle case where
2979 `offsetToAdvanceWidthMapping' is zero.
2980 (tt_hadvance_adjust): Implement direct deltaSet access by glyph
2981 index.
2982
29832017-01-06 Werner Lemberg <wl@gnu.org>
2984
2985 [pcf] Revise driver.
2986
2987 This commit improves tracing and handling of malformed fonts. In
2988 particular, the changes to `pcf_get_properties' fix
2989
2990 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=379
2991
2992 * src/pcf/pcfread.c (tableNames): Use long names for better
2993 readability.
2994 (pcf_read_TOC): Allow at most 9 tables.
2995 (pcf_get_properties): Allow at most 256 properties.
2996 Limit strings array length to 256 * (65536 + 1) bytes.
2997 Better tracing.
2998 (pcf_get_metric): Trace metric data.
2999 (pcf_get_metrics): Allow at most 65536 metrics.
3000 Fix comparison of `metrics->ascent' and `metrics->descent' to avoid
3001 potential overflow.
3002 Better tracing.
3003 (pcf_get_bitmaps): Allow at most 65536 bitmaps.
3004 Better tracing.
3005 (pcf_get_encodings, pcf_get_accel): Better tracing.
3006
3007 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Don't trace `format' details.
3008 These are now shown by `pcf_get_bitmaps'.
3009
30102017-01-04 Werner Lemberg <wl@gnu.org>
3011
3012 * src/pcf/pcfdrivr.c (PCF_Face_Init): Trace compression format.
3013
30142017-01-04 Werner Lemberg <wl@gnu.org>
3015
3016 [cff] More consistency checks for pure CFFs.
3017
3018 Reported as
3019
3020 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=378
3021
3022 * src/cff/cffload.c (cff_font_load): Check element number and size
3023 of Name and Top DICT indices.
3024
30252017-01-04 Werner Lemberg <wl@gnu.org>
3026
3027 [cff, truetype] Minor tracing improvement.
3028
3029 * src/cff/cffobjs.c (cff_face_init), src/truetype/ttobjs.c
3030 (tt_face_init): Indent first tracing message from SFNT driver.
3031
30322017-01-03 Werner Lemberg <wl@gnu.org>
3033
3034 [truetype] Various minor fixes.
3035
3036 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check instruction
3037 size only if we do native hinting.
3038 (TT_Load_Glyph): Trace returned error code.
3039
3040 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Trace
3041 returned error code.
3042 (tt_size_ready_bytecode): Don't run `prep' table if `fpgm' table is
3043 invalid.
3044
30452017-01-03 Werner Lemberg <wl@gnu.org>
3046
3047 [sfnt] Don't fail if PCLT, EBLC (and similar tables) are invalid.
3048
3049 These tables are optional.
3050
3051 * src/sfnt/sfobjs.c (sfnt_load_face): Implement it.
3052
30532017-01-03 Werner Lemberg <wl@gnu.org>
3054
3055 * src/cff/cffparse.c (cff_parse_num): Simplify.
3056
30572017-01-03 Werner Lemberg <wl@gnu.org>
3058
3059 Various fixes for clang's undefined behaviour sanitizer.
3060
3061 * src/cff/cffload.c (FT_fdot14ToFixed): Fix casting.
3062 (cff_blend_doBlend): Don't left-shift negative numbers.
3063 Handle 5-byte numbers byte by byte to avoid alignment issues.
3064
3065 * src/cff/cffparse.c (cff_parse_num): Handle 5-byte numbers byte by
3066 byte to avoid alignment issues.
3067
3068 * src/cid/cidload (cid_read_subrs): Do nothing if we don't have any
3069 subrs.
3070
3071 * src/psaux/t1decode.c (t1_decode_parse_charstring): Fix tracing.
3072
3073 * src/tools/glnames.py (main): Put `DEFINE_PSTABLES' guard around
3074 definition of `ft_get_adobe_glyph_index'.
3075
3076 * src/psnames/pstables.h: Regenerated.
3077
3078 * src/psnames/psmodule.c: Include `pstables.h' twice to get both
3079 declaration and definition.
3080
3081 * src/truetype/ttgxvar.c (FT_fdot14ToFixed, FT_intToFixed): Fix
3082 casting.
3083
30842017-01-01 Werner Lemberg <wl@gnu.org>
3085
3086 [cff] Handle multiple `blend' operators in a row correctly.
3087
3088 Reported as
3089
3090 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=368
3091
3092 * src/cff/cffload.c (cff_blend_doBlend): Adjust `parser->stack'
3093 pointers into `subFont->blend_stack' after reallocation.
3094
30952017-01-01 Werner Lemberg <wl@gnu.org>
3096
3097 [sfnt] Return correct number of named instances for TTCs.
3098
3099 Without this patch, requesting information for face index N returned
3100 the data for face index N+1 (or index 0).
3101
3102 * src/sfnt/sfobjs.c (sfnt_init_face): Correctly adjust `face_index'
3103 for negative `face_instance_index' values.
3104
31052016-12-31 Werner Lemberg <wl@gnu.org>
3106
3107 */*: Use hex numbers for errors in tracing messages.
3108
31092016-12-31 Werner Lemberg <wl@gnu.org>
3110
3111 [truetype] Check axis count in HVAR table.
3112
3113 Reported as
3114
3115 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=362
3116
3117 * src/truetype/ttgxvar.c (ft_var_load_hvar): Check axis count.
3118 (ft_var_load_avar): Fix tracing message.
3119
3120
3121----------------------------------------------------------------------------
3122
Werner Lemberg75859972019-02-23 10:07:09 +01003123Copyright (C) 2016-2019 by
Werner Lemberg9fbd0042018-02-17 10:37:10 +01003124David Turner, Robert Wilhelm, and Werner Lemberg.
3125
3126This file is part of the FreeType project, and may only be used, modified,
3127and distributed under the terms of the FreeType project license,
3128LICENSE.TXT. By continuing to use, modify, or distribute this file you
3129indicate that you have read the license and understand and accept it
3130fully.
3131
3132
3133Local Variables:
3134version-control: never
3135coding: utf-8
3136End: