blob: 53d85e5452704c47b3463345e76b3d71c9387079 [file] [log] [blame]
Alexei Podtelezhnikov9cf232e2016-06-08 23:19:41 -040012016-06-08 Alexei Podtelezhnikov <apodtele@gmail.com>
2
Alexei Podtelezhnikov77180c72016-06-08 23:31:28 -04003 [smooth] Re-enable new line renderer on 64-bit archs.
4
5 * src/smooth/ftgrays (gray_render_line): Conditionally re-enable new
6 implementation, where it is safe from overflows.
7
82016-06-08 Alexei Podtelezhnikov <apodtele@gmail.com>
9
Alexei Podtelezhnikov9cf232e2016-06-08 23:19:41 -040010 [smooth] Minor clean-ups.
11
12 * src/smooth/ftgrays.c (gray_dump_cells): Move out of the way.
13 (gray_render_span): Remove spurious casts and streamline.
14
Werner Lemberg15eab362016-06-07 10:36:27 +0200152016-06-07 Werner Lemberg <wl@gnu.org>
16
Werner Lemberg223d0022016-06-07 13:52:14 +020017 [autofit] Add support for Ethiopic script.
18
19 * src/autofit/afblue.dat: Add blue zone data for Ethiopic.
20
21 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
22
23 * src/autofit/afscript.h: Add Ethiopic standard characters.
24
25 * src/autofit/afranges.c: Add Ethiopic data.
26
27 * src/autofit/afstyles.h: Add Ethiopic data.
28
292016-06-07 Werner Lemberg <wl@gnu.org>
30
Werner Lemberg15eab362016-06-07 10:36:27 +020031 [autofit] Fix compilation with VS2016 (#48126).
32
33 This compiler doesn't recognize the end-of-comment sequence `*/' if
34 it immediately follows non-ASCII characters.
35
36 * src/autofit/afscript.h: Ensure whitespace before `*/'.
37
Werner Lemberg5485a342016-06-04 06:57:32 +0200382016-06-04 Werner Lemberg <wl@gnu.org>
39
Werner Lemberg969960c2016-06-04 07:02:46 +020040 Fix a test for named instances (#48122).
Werner Lemberg5485a342016-06-04 06:57:32 +020041
Werner Lemberg969960c2016-06-04 07:02:46 +020042 This was missed while giving negative face indices an extended
43 meaning.
44
45 * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Implement.
Werner Lemberg5485a342016-06-04 06:57:32 +020046
472016-05-31 Nikolaus Waxweiler <madigens@gmail.com>
Nikolaus Waxweilerb4598822016-05-31 08:39:52 +020048
49 [truetype] Let SHPIX move points in the twilight zone in v40.
50
51 * src/truetype/ttinterp.c (Ins_SHPIX): Allow SHPIX to move points in
52 the twilight zone. Otherwise, treat SHPIX the same as DELTAP.
53 Unbreaks various fonts such as older versions of Rokkitt and DTL
54 Argo T Light that would glitch severly after calling ALIGNRP after a
55 blocked SHPIX.
56
Werner Lembergd28eac22016-05-30 00:23:59 +0200572016-05-30 Werner Lemberg <wl@gnu.org>
58
59 [type42] Support `CharStrings' entry format as created by LilyPond.
60
61 * src/type42/t42parse.c (t42_parse_charstrings): Handle entries
62 having the format
63
64 (foo) cvn 12345 def
65
Werner Lemberg46d36902016-05-28 19:38:43 +0200662016-05-28 Werner Lemberg <wl@gnu.org>
67
68 * src/autofit/afranges.c: Remove `UL' postfix from hex numbers.
69
70 Suggested by Alexei. `UL' is only needed for 16bit compilers, but
71 it seems noone is using this anymore (and we no longer test whether
72 FreeType compiles in such an environment). Otherwise, it is easy to
73 add the postfix to the `AF_UNICODE_RANGE' macro.
74
Alexei Podtelezhnikove9f95092016-05-26 23:46:38 -0400752016-05-26 Alexei Podtelezhnikov <apodtele@gmail.com>
76
77 [smooth] Shrink bisection stack.
78
79 The convergence of Bézier flatteners is fast with the deviation
80 from straight line being assymptotically cut 4-fold on each bisection.
81 This justifies smaller bisection stack size.
82
83 * src/smooth/ftgrays.c (gray_TWorker): Remove common `bez_stack'.
84 (gray_render_conic): Create and use conic `bez_stack'. Move back the
85 band analysis from...
86 (gray_conic_to): ... here.
87 (gray_render_cubic): Create and use cubic `bez_stack'. Move back the
88 band analysis from...
89 (gray_cubic_to): ... here.
90 (gray_move_to): Updated.
91
Werner Lemberge97918c2016-05-25 07:13:29 +0200922016-05-25 Werner Lemberg <wl@gnu.org>
93
94 [autofit] Fixes for Armenian and Gujarati ranges.
95
96 * src/autofit/afranges.c (af_armn_uniranges): Corrected.
97 (af_guru_nonbase_uniranges): Make U+0A3E a base character.
98
Werner Lemberga74f40f2016-05-24 18:27:18 +0200992016-05-24 Werner Lemberg <wl@gnu.org>
100
101 [autofit] Add support for Armenian script.
102
103 * src/autofit/afblue.dat: Add blue zone data for Armenian.
104
105 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
106
107 * src/autofit/afscript.h: Add Armenian standard characters.
108
109 * src/autofit/afranges.c: Add Armenian data.
110
111 * src/autofit/afstyles.h: Add Armenian data.
112
Werner Lemberg771d3c82016-05-23 06:49:38 +02001132016-05-23 Werner Lemberg <wl@gnu.org>
114
115 * builds/unix/unix-cc.in (LINK_LIBRARY): Use `-export-symbols'.
116
117 This was commented about 10 years ago – I think the reason then to
118 disable libtool's `-export-symbols' option was to give some badly
119 programmed applications access to internal FreeType functions.
120
121 I believe that we should no longer take care of such programs; the
122 number of symbols exported should be rather restricted as much as
123 possible.
124
Werner Lemberg9d179e32016-05-22 08:38:41 +02001252016-05-22 Werner Lemberg <wl@gnu.org>
126
127 [autofit] Add blue-zone support for Gurmukhi script.
128
129 This essentially moves the Gurmukhi script from the `Indic' hinter to
130 the `Latin' hinter.
131
132 * src/autofit/afblue.dat: Add blue zone data for Gurmukhi.
133
134 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
135
136 * src/autofit/afscript.h: Add Gurmukhi standard characters and move
137 data out of AF_CONFIG_OPTION_INDIC block.
138
139 * src/autofit/afranges.c: Move Gurmukhi data out of
140 AF_CONFIG_OPTION_INDIC block.
141
142 * src/autofit/afstyles.h: Update Gurmukhi data; in particular, use
143 AF_WRITING_SYSTEM_LATIN.
144
Werner Lemberg6e80a092016-05-21 10:58:40 +02001452016-05-21 Werner Lemberg <wl@gnu.org>
146
Werner Lembergd5835612016-05-21 11:20:42 +0200147 Minor clang++ fixes.
148
149 * src/base/ftobjs.c (FT_Add_Module), src/psaux/psobjs.c
150 (ps_parser_load_field), src/type1/t1load.c (parse_subrs): Add
151 initializer.
152
153 * src/cache/ftccache.h (FTC_CACHE_TRYLOOP_END): Avoid implicit
154 conversion from NULL to boolean.
155
1562016-05-21 Werner Lemberg <wl@gnu.org>
157
Werner Lemberg6e80a092016-05-21 10:58:40 +0200158 Work around a bug of the C 8.0.0.1 compiler on AIX 5.3 (#47955).
159
160 * include/freetype/internal/ftmemory.h (cplusplus_typeof): Use
161 braces for `extern "C++"'.
162
Nikolaus Waxweiler59615732016-05-18 06:57:59 +02001632016-05-17 Nikolaus Waxweiler <madigens@gmail.com>
164
Nikolaus Waxweiler01de37e2016-05-18 07:07:44 +0200165 [truetype] Make TT_LOADER_SET_PP support subpixel hinting [3/3].
166
167 * src/truetype/ttgload.c (TT_LOADER_SET_PP): Replace macro with...
168 (tt_loader_set_pp): ... this new function.
169 Update all callers.
170
1712016-05-17 Nikolaus Waxweiler <madigens@gmail.com>
172
Nikolaus Waxweilered1d8982016-05-18 06:58:44 +0200173 [truetype] New implementation of v38 bytecode interpreter [2/3].
174
175 This patch actually modifies the bytecode interpreter.
176
177 See added comments in `ttinterp.h' for more information on this and
178 the following commit in the series.
179
180 * src/truetype/ttinterp.c (SUBPIXEL_HINTING): Replaced by...
181 (NO_SUBPIXEL_HINTING, SUBPIXEL_HINTING_INFINALITY,
182 SUBPIXEL_HINTING_MINIMAL): ...new macros.
183 (Direct_Move, Direct_Move_X, Direct_Move_Y): Handle backwards
184 compatibility.
185 Updated.
186 (Ins_RS, Ins_FDEF, Ins_ENDF, Ins_CALL, Ins_LOOPCALL, Ins_MD):
187 Updated.
188 (Ins_INSTCTRL): Handle native ClearType mode flag.
189 Updated.
190 (Ins_FLIPPT, Ins_FLIPRGON, Ins_FLIPRGOFF): Handle backwards
191 compatibility.
192 (Move_Zp2_Point): Ditto.
193 (Ins_SHP): Updated.
194 (Ins_SHPIX): Handle backwards compatibility.
195 Updated.
196 (Ins_MSIRP, Ins_MDAP, Ins_MIAP, Ins_MDRP, Ins_MIRP): Updated.
197 (Ins_ALIGNRP): Updated.
198 (Ins_IUP, Ins_DELTAP): Handle backwards compatibility.
199 Updated.
200 (Ins_GETINFO): Handle v38 flags.
201 Updated.
202 (TT_RunIns): Handle backwards compatibility mode.
203 Updated.
204
2052016-05-17 Nikolaus Waxweiler <madigens@gmail.com>
206
Nikolaus Waxweiler59615732016-05-18 06:57:59 +0200207 [truetype] New implementation of v38 bytecode interpreter [1/3].
208
209 This patch prepares data structures and the like.
210
211 See added comments in `ttinterp.h' for more information on this and
212 the following commits in the series.
213
214 * devel/ftoption.h, include/freetype/config/ftoption.h
215 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Assign values to differentiate
216 between subpixel versions.
217 (TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY,
218 TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL): New macros.
219
220 * include/freetype/ftttdrv.h (TT_INTERPRETER_VERSION_40): New macro.
221
222 * include/freetype/internal/tttypes.h (TT_FaceRec): Updated.
223
224 * src/truetype/ttinterp.h (TT_ExecContextRec): Define new fields
225 `subpixel_hinting_lean', `vertical_lcd_lean',
226 `backwards_compatibility', `iupx_called', iupy_called', and
227 `grayscale_cleartype' for new hinting mode.
228
229 * src/truetype/ttdriver.c (tt_property_set): Handle v38 and v40
230 interpreters conditionally.
231
232 * src/truetype/ttgload.c (TT_Hint_Glyph): Save phantom points unless
233 in v38 backwards compatibility mode.
234 Updated.
235 (compute_glyph_metrics): Add v38 backwards compatibility mode
236 constraint for adjusting advance widths.
237 Updated.
238 (tt_loader_init): Handle new flags `subpixel_hinting_lean',
239 `grayscale_cleartype', and `vertical_lcd_lean'.
240 Updated.
241 (tt_get_metrics, TT_Process_Simple_Glyph, TT_LOADER_SET_PP):
242 Updated.
243
244 * src/truetype/ttobjs.c (tt_driver_init): Conditionally set
245 default interpreter version number.
246
247 * src/truetype/ttsubpix.c, src/truetype/ttsubpix.h: Updated.
248
Werner Lemberg119e8e42016-05-17 19:54:09 +02002492016-05-17 Werner Lemberg <wl@gnu.org>
250
251 [cff] Fix matrix scaling (#47848).
252
253 * include/freetype/config/ftstdlib.h (FT_LONG_MIN): New macro.
254
255 * src/cff/cffparse.c (cff_parse_font_matrix): Use largest scaling
256 value of all matrix coefficients to scale matrix.
257
258 * src/cff/cffobjs.c (cff_face_init): Use `matrix->yx' member for
259 matrix normalization if `matrix->yy' is zero.
260
Werner Lemberg09f0e0f2016-05-16 19:44:19 +02002612016-05-16 Werner Lemberg <wl@gnu.org>
262
Werner Lembergbebac3c2016-05-16 20:16:35 +0200263 [base] Reject invalid sfnt Mac resource (#47891).
264
265 * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Check validity
266 of `CID ' and `TYPE1' table offset and length.
267
2682016-05-16 Werner Lemberg <wl@gnu.org>
269
Werner Lemberg09f0e0f2016-05-16 19:44:19 +0200270 [cid] Fix scanning for `StartData' and `/sfnts' (#47892).
271
272 * src/cid/cidparse.c (STARTDATA, STARTDATA_LEN, SFNTS, SFNTS_LEN):
273 New macros.
274 (cid_parser_new): Fix and document algorithm.
275
suzuki toshiyaa7d8bdb2016-05-16 21:54:32 +09002762016-05-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
277
278 [truetype] Improve the recursive reference detector.
279
280 The previous fix for #46372 misunderstood a composite glyph referring
281 same component twice as a recursive reference. See the discussion
282
Werner Lemberg533887a2016-05-16 20:38:41 +0200283 http://lists.gnu.org/archive/html/freetype/2016-05/msg00000.html
suzuki toshiyaa7d8bdb2016-05-16 21:54:32 +0900284
285 Thanks to Khaled Hosny for finding this issue.
286
287 * src/truetype/ttgload.c (ft_list_get_node_at): A function to get
Werner Lemberg533887a2016-05-16 20:38:41 +0200288 the i-th node from FT_List.
289 (load_truetype_glyph): In the traversal scan of the reference tree
290 in the composite glyph, we clear the nodes filled by previous
291 sibling chain.
suzuki toshiyaa7d8bdb2016-05-16 21:54:32 +0900292
Werner Lemberg7ae9b992016-05-07 16:24:03 +02002932016-05-07 Werner Lemberg <wl@gnu.org>
294
295 [cache] Allow value 0 for face ID.
296
297 We never dereference `face_id', and some implementations might use a
298 running number instead of a pointer. Additionally, disallowing
299 value zero was undocumented.
300
301 * src/cache/ftccmap.c (FTC_CMapCache_Lookup), src/cache/ftcmanag.c
302 (FTC_Manager_LookupFace, FTC_Manager_RemoveFaceID): Remove test for
303 `face_id'.
304
Alexei Podtelezhnikov6e880872016-05-05 23:41:03 -04003052016-05-05 Alexei Podtelezhnikov <apodtele@gmail.com>
306
307 [smooth] More efficient accounting of conic splits and draws.
308
309 A single decrement counter of segments to draw, instead of an array,
310 contains all the information necessary to decide when to split and
311 when to draw a conic segment. The number of splits before each draw is
312 equal to the number of trailing zeros in the counter.
313
314 * src/smooth/ftgrays.c (gray_TWorker): Remove `lev_stack'.
315 (gray_render_conic): Updated to use decrement counter of segments.
316
Werner Lemberg0b3cb8a2016-05-05 12:28:48 +02003172016-05-05 Werner Lemberg <wl@gnu.org>
318
319 [cff, truetype] Fix logic for `FT_Property_Set'.
320
321 Otherwise some properties could be set to arbitrary values, which is
322 harmless, but querying could give wrong positive results.
323
324 * src/cff/cffdrivr.c (cff_property_set) [hinting-engine],
325 * src/truetype/ttdriver.c (tt_property_set) [interpreter-version]:
326 Only allow defined values.
327
Werner Lemberg22167622016-04-25 21:18:24 +02003282016-04-25 Werner Lemberg <wl@gnu.org>
329
330 [autofit] Add blue-zone support for Gujarati script.
331
332 This essentially moves the Gujarati script from the `Indic' hinter to
333 the `Latin' hinter.
334
335 * src/autofit/afblue.dat: Add blue zone data for Gujarati.
336
337 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
338
339 * src/autofit/afscript.h: Add Gujarati standard characters and move
340 data out of AF_CONFIG_OPTION_INDIC block.
341
342 * src/autofit/afranges.c: Move Gujarati data out of
343 AF_CONFIG_OPTION_INDIC block.
344
345 * src/autofit/afstyles.h: Update Gujarati data; in particular, use
346 AF_WRITING_SYSTEM_LATIN.
347
Werner Lemberg432e00d2016-04-24 08:14:07 +02003482016-04-24 Werner Lemberg <wl@gnu.org>
349
Werner Lembergd9fb2172016-04-24 15:27:32 +0200350 Minor.
351
352 * include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Protect macro
353 argument with parentheses.
354
3552016-04-24 Werner Lemberg <wl@gnu.org>
356
Werner Lemberg432e00d2016-04-24 08:14:07 +0200357 [truetype] Fix deallocation in case of error (#47726).
358
359 * src/truetype/ttgload.c (load_truetype_glyph): Initialize fields in
360 `outline' that are going to be deallocated in case of error.
361
Werner Lemberg80afef82016-04-23 21:34:15 +02003622016-04-23 Werner Lemberg <wl@gnu.org>
363
364 [autofit] Improve Georgian blue zone characters.
365
366 Suggested by Akaki Razmadze <razmadzekoko@gmail.com>.
367
368 * src/autofit/afblue.dat (AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM):
369 Updated.
370
371 * src/autofit/afblue.c: Regenerated.
372
David Capello9224f052016-04-16 10:24:24 +02003732016-04-16 David Capello <davidcapello@gmail.com>
374
375 [cmake] Honor SKIP_INSTALL_* settings (as used in zlib).
376
377 As FreeType depends on zlib, if we don't install zlib (e.g., because
378 we defined SKIP_INSTALL_ALL), FreeType cannot be installed, too
379 (cmake triggers an error saying that FreeType cannot be installed
380 because zlib target isn't in the export set).
381
382 * CMakeLists.txt: Honor `SKIP_INSTALL_HEADERS',
383 `SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL' settings.
384
Behdad Esfahbod99eff672016-04-16 07:32:23 +02003852016-04-16 Behdad Esfahbod <behdad@behdad.org>
386
387 [truetype] Another fix for non-intermediate GX tuples.
388
389 * src/truetype/ttgxvar.c (ft_var_apply_tuple): Add some missing
390 cases.
391
Alexei Podtelezhnikov213f0ca2016-04-13 00:19:54 -04003922016-04-12 Alexei Podtelezhnikov <apodtele@gmail.com>
393
394 Remove forgotten macro.
395
396 * include/freetype/internal/internal.h
397 [FT_INTERNAL_POSTSCRIPT_GLOBALS_H]: Remove.
398
Werner Lembergc8c7ad72016-04-09 08:24:00 +02003992016-04-09 Werner Lemberg <wl@gnu.org>
400
401 [autofit] Add support for Georgian scripts.
402
403 Georgian is problematic, since `uppercase' forms of Mkhedruli
404 (called Mtavruli) are not yet defined in Unicode, which means that
405 proper blue zones can't be defined. However, there is already a
406 proposal submitted to Unicode; see
407
408 http://www.unicode.org/L2/L2016/16034-n4707-georgian.pdf
409
410 Additionally, due to historical reasons, Unicode treats Khutsuri as
411 the same script as Mkhedruli, and so does OpenType. However, since
412 the two scripts have completely different shapes it can happen that
413 blue zones differ considerably. The tag `geok' used here (derived
414 from ISO 15924) to differentiate the two scripts is not an OpenType
415 tag in use. If we now have a font that contains both glyphs for
416 Mkhedruli and Khutsuri, and it uses OpenType features for both also,
417 HarfBuzz unavoidably treats all glyphs as `geor'. As a consequence,
418 blue zones for `geok' are not used for glyphs involved in the
419 OpenType features.
420
421 An issue not yet resolved is which OpenType feature should be used
422 to access Mtavruli glyph shapes; right now, FreeType doesn't set up
423 support for them, but it is easy to add them later on as soon as
424 more information is available.
425
426 * src/autofit/afblue.dat: Add blue zone data for Georgian.
427
428 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
429
430 * src/autofit/afscript.h: Add Georgian standard characters.
431
432 * src/autofit/afranges.c: Add Georgian data.
433
434 * src/autofit/afstyles.h: Add Georgian data.
435
Werner Lembergbf8f1002016-04-05 11:43:58 +02004362016-04-05 Werner Lemberg <wl@gnu.org>
437
438 [autofit] Provide dummy blue zone for pseudo script `none'.
439
440 Even if the dummy hinter is used as the handler for `none' (which
441 doesn't use blue zones), it is more consistent than the old value
442 (which was 0), pointing to Arabic...
443
444 * src/autofit/afblue.dat: Add `AF_BLUE_STRINGSET_NONE'.
445 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
446
447 * src/autofit/afstyles.h (none_dflt): Use AF_BLUE_STRINGSET_NONE.
448
Werner Lembergccd771c2016-03-30 08:44:46 +02004492016-03-30 Werner Lemberg <wl@gnu.org>
450
Werner Lembergfb550bf2016-03-30 18:55:27 +0200451 * src/pfr/pfrload.c (pfr_aux_name_load): Thinko (#47567).
452
4532016-03-30 Werner Lemberg <wl@gnu.org>
454
Werner Lembergaff6ebb2016-03-30 09:11:02 +0200455 * src/pfr/pfrload.c (pfr_log_font_count): Better font size estimate.
456
4572016-03-30 Werner Lemberg <wl@gnu.org>
458
Werner Lembergccd771c2016-03-30 08:44:46 +0200459 * src/pfr/pfrload.c (pfr_aux_name_load): Fix memory leak (#47567).
460
Werner Lemberg31dc8f92016-03-29 08:37:07 +02004612016-03-29 Werner Lemberg <wl@gnu.org>
462
Alexei Podtelezhnikovc6d99a42016-04-08 00:05:50 -0400463 * src/base/ftadvanc.c (FT_Get_Advances): Fix invalid left shift.
Werner Lembergff827472016-03-29 09:19:22 +0200464
4652016-03-29 Werner Lemberg <wl@gnu.org>
466
Werner Lemberg351fc4b2016-03-29 09:13:13 +0200467 [pfr] Fix binary search (#47514).
468
469 * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Handle border
470 conditions correctly.
471
4722016-03-29 Werner Lemberg <wl@gnu.org>
473
Werner Lemberg2a03e5d2016-03-29 08:56:03 +0200474 [pfr] Minor.
475
476 * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Replace `left',
477 `right', and `middle' with `min', `max', and `mid' as used in other
478 FreeType binary search code.
479 (pfr_load_bitmap_metrics): Fix invalid left shift.
480
4812016-03-29 Werner Lemberg <wl@gnu.org>
482
Werner Lemberg31dc8f92016-03-29 08:37:07 +0200483 * src/pfr/pfrtypes.h: Replace all enums with macros.
484
485 We need `~FOO' to unset bits, and only with unsigned values (which
486 `enum' isn't normally) this works cleanly.
487
Werner Lembergb069a592016-03-26 08:00:07 +01004882016-03-26 Werner Lemberg <wl@gnu.org>
489
490 [pfr] Robustify bitmap strike handling (#47514).
491
492 We did a binary search for a charcode without ensuring that the
493 searched data is ordered. Validating the order is now done lazily,
494 this is, the first access to a bitmap glyph triggers the order check
495 in the corresponding bitmap strike.
496
497 * src/pfr/pfrtypes.h (PFR_BitmapFlags): New values
498 `PFR_BITMAP_VALID_CHARCODES' and `PFR_BITMAP_CHARCODES_VALIDATED'.
499
500 * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Make `flags' argument
501 a pointer. Handle new PFR_BITMAP_XXX flags.
502 (pfr_slot_load_bitmap): Updated.
503
5042016-03-26 Werner Lemberg <wl@gnu.org>
Werner Lemberg59828f72016-03-25 08:47:14 +0100505
Werner Lemberg0003cb92016-03-26 07:34:30 +0100506 [pfr] Fix handling of compound glyphs.
507
508 Extra items are indicated with different bit positions.
509
510 * src/pfr/pfrtypes.h (PFR_GlyphFlags): Replace
511 `PFR_GLYPH_EXTRA_ITEMS' with `PFR_GLYPH_SIMPLE_EXTRA_ITEMS' and
512 `PFR_GLYPH_COMPOUND_EXTRA_ITEMS'.
513
514 * src/pfr/pfrgload.c (pfr_glyph_load_simple,
515 pfr_glyph_load_compound): Use them.
516
5172016-03-25 Werner Lemberg <wl@gnu.org>
518
Werner Lemberg2aa69562016-03-25 10:54:37 +0100519 [pfr] Minor.
520
Alexei Podtelezhnikovf46b2822016-04-11 23:22:57 -0400521 * src/pfr/pfrsbit.c, src/pfr/pfrobjs.c: Use flag names instead of
Werner Lemberg2aa69562016-03-25 10:54:37 +0100522 bare numbers.
523
5242016-03-25 Werner Lemberg <wl@gnu.org>
525
Werner Lemberg59828f72016-03-25 08:47:14 +0100526 [pfr] Various clang sanitizer fixes.
527
528 * src/pfr/pfrsbit.c (pfr_load_bitmap_metrics): Correctly handle
529 signed nibbles.
530 (pfr_slot_load_bitmap): Correctly exit frame in case of error.
531 Fix invalid left shifts.
532
Werner Lemberge9181ab2016-03-23 06:58:20 +01005332016-03-23 Werner Lemberg <wl@gnu.org>
534
Werner Lemberg6e89ad42016-03-23 07:40:12 +0100535 Rename `VERSION.DLL' (#47472).
536
537 * docs/VERSION.DLL: Renamed to...
538 * docs/VERSIONS.TXT: ...this.
539
5402016-03-23 Werner Lemberg <wl@gnu.org>
541
Werner Lemberg31f2dc12016-03-23 07:31:59 +0100542 [raster, smooth] Directly test outline size (#47500).
543
544 This improves stand-alone compilation.
545
546 * src/base/ftoutln.c (FT_Outline_Render): Move cbox size test to...
547
548 * src/raster/ftraster.c (ft_black_render), src/smooth/ftgrays.c
549 (gray_raster_render): ...these functions.
550
5512016-03-23 Werner Lemberg <wl@gnu.org>
552
Werner Lemberge9181ab2016-03-23 06:58:20 +0100553 [raster, smooth] Fix some clang sanitizer runtime issues.
554
555 * src/raster/ftraster.c (ft_black_reset, ft_black_set_mode,
556 ft_black_render): Harmonize signatures with `ftimage.h'.
557
558 * src/smooth/ftgrays.c (gray_raster_render, gray_raster_reset):
559 Ditto.
560
Werner Lembergb6633072016-03-22 08:26:55 +01005612016-03-22 Werner Lemberg <wl@gnu.org>
562
563 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Minor.
564
565 This fixes an AddressSanitizer issue:
566
567 ttgload.c:430:7: runtime error: null pointer passed as argument 1,
568 which is declared to never be null
569
Werner Lemberg614a8f12016-03-21 19:39:14 +01005702016-03-21 Werner Lemberg <wl@gnu.org>
571
572 * src/autofit/afhints.c (af_glyph_hints_reload): Thinko.
573
574 This fixes the previous commit to this file.
575
Alexei Podtelezhnikov3beccbd2016-03-21 00:07:47 -04005762016-03-21 Alexei Podtelezhnikov <apodtele@gmail.com>
577
578 [smooth] Partly revert recent changes.
579
580 * src/smooth/ftgrays.c (gray_conic_to, gray_cubic_to): Rework
581 conditions to fix rendering issues.
582
Werner Lemberg709486d2016-03-20 22:20:32 +01005832016-03-20 Werner Lemberg <wl@gnu.org>
584
585 [autofit] Show `near' points in tracing.
586
587 * src/autofit/afhints.h (AF_FLAG_NEAR): New macro.
588
589 * src/autofit/afhints.c (af_glyph_hints_dump_points): Implement it.
590 (af_glyph_hints_reload): Handle AF_FLAG_NEAR.
591
Alexei Podtelezhnikov8e8bb122016-03-18 23:21:59 -04005922016-03-18 Alexei Podtelezhnikov <apodtele@gmail.com>
593
594 [smooth] Minor refactoring and microoptimizations.
595
596 * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
597 band clipping from here.
598 (gray_conic_to, gray_cubic_to): ... to here.
599 (gray_rander_line, gray_render_scanline): Initialize variables closer
600 to their use.
601
Alexei Podtelezhnikov84b2c632016-03-17 00:53:09 -04006022016-03-17 Alexei Podtelezhnikov <apodtele@gmail.com>
603
604 [smooth] Minor refactoring.
605
606 * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
Alexei Podtelezhnikov8e8bb122016-03-18 23:21:59 -0400607 upscaling from here.
608 (gray_conic_to, gray_cubic_to): ... to here.
Alexei Podtelezhnikov84b2c632016-03-17 00:53:09 -0400609
Werner Lembergda86b732016-03-15 07:55:05 +01006102016-03-15 Werner Lemberg <wl@gnu.org>
611
612 * src/autofit/aflatin.c (af_latin_compute_stem_width): Optimize.
613
Alexei Podtelezhnikov18655752016-03-14 22:39:22 -04006142016-03-14 Alexei Podtelezhnikov <apodtele@gmail.com>
615
616 [smooth] Temporarily revert 6eb6158dd787 (#47114).
617
618 * src/smooth/ftgrays.c (gray_render_line): Old implementation.
619
Werner Lembergee6b4112016-03-12 23:48:13 +01006202016-03-12 Werner Lemberg <wl@gnu.org>
621
622 [ftfuzzer] Improve coverage of rasterfuzzer.
623
624 * src/tools/ftfuzzer/rasterfuzzer.cc (LLVMFuzzerTestOneInput): Use
625 input data for `tags' array also.
626 Trim input data to get more positive hits.
627
Werner Lemberg10265db2016-03-11 06:50:23 +01006282016-03-11 Pavlo Denysov <paul.kiev+savannah@gmail.com>
629
630 Fix CMake issues for iOS (patch #8941).
631
632 * CMakeLists.txt (CMAKE_TOOLCHAIN_FILE): Fix directory.
633 * builds/cmake/iOS.cmake: No longer enforce gcc.
634
Behdad Esfahbod74c0a722016-03-09 20:35:27 +01006352016-03-09 Behdad Esfahbod <behdad@behdad.org>
636
637 [truetype] Fix handling of non-intermediate GX tuples.
638
639 We probably did not notice this as all fonts we tested had only
640 tuple_coords[i] be +1 or -1 for non-intermediate tuples.
641
642 * src/truetype/ttgxvar.c (ft_var_apply_tuple): Implement it.
643
Alexei Podtelezhnikovd0b0e312016-03-06 23:01:50 -05006442016-03-06 Alexei Podtelezhnikov <apodtele@gmail.com>
645
Alexei Podtelezhnikov495de6c2016-03-06 23:54:34 -0500646 [base] Refuse to render enormous outlines (#47114).
647
648 The goal is to avoid integer overflows in the rendering algorithms.
649 The limit is chosen arbitrarily at some 2^18 pixels, which should be
650 enough for modern devices including printers.
651
652 * src/base/ftoutln.c (FT_Outline_Render): Check CBox and reject
653 enormous outlines.
654
6552016-03-06 Alexei Podtelezhnikov <apodtele@gmail.com>
656
Alexei Podtelezhnikovd0b0e312016-03-06 23:01:50 -0500657 [smooth] Replace left shifts with multiplications (#47114).
658
659 * src/smooth/ftgrays.c (SUBPIXELS, UPSCALE, DOWNSCALE): Do it.
660
Werner Lembergcaa48b02016-03-05 19:47:07 +01006612016-03-05 Werner Lemberg <wl@gnu.org>
662
663 [autofit] Avoid excessive stem length rounding (#25392).
664
665 * src/autofit/aflatin.c (af_latin_compute_stem_width): Add argument
666 to pass difference between hinted and unhinted position of base
667 point; use this to adjust the stem width depending on the PPEM so
668 that it doesn't become too large under certain circumstances.
669 Update all callers using value 0 for this argument except...
670 (af_latin_align_linked_edge): Pass position delta of base point to
671 `af_latin_compute_stem_width'.
672
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -04006732016-03-05 J Raynor <jxraynor@gmail.com>
J Raynor1fd2bc82016-03-05 16:38:35 +0100674
675 Make FreeType compile on AIX out of the box.
676
677 * builds/unix/configure.raw (XX_ANSIFLAGS): Don't use `-ansi' on
678 AIX.
679
Werner Lemberg015c6e02016-03-01 06:45:52 +01006802016-03-01 Werner Lemberg <wl@gnu.org>
Werner Lemberga8b95622016-03-01 09:37:12 +0100681 Kostya Serebryany <kcc@google.com>
682
683 [ftfuzzer] Add unit for testing smooth and black rasterizers.
684
685 * src/tools/ftfuzzer/rasterfuzzer.cc: New file.
686
6872016-03-01 Werner Lemberg <wl@gnu.org>
Werner Lemberg015c6e02016-03-01 06:45:52 +0100688
Werner Lemberg3eb6f662016-03-01 07:10:30 +0100689 [autofit] Fix reallocation error introduced in 2016-02-27 (#47310).
690
691 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Reassign
692 `prev_segment' after reallocation.
693
6942016-03-01 Werner Lemberg <wl@gnu.org>
695
Werner Lemberg015c6e02016-03-01 06:45:52 +0100696 Fix clang warnings.
697
698 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Use
699 FT_UShort for `min_flags' and `max_flags'.
700 Initialize `prev_*' variables.
701
702 * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Fix
703 types of local variables.
704
705 * src/smooth/ftgrays.c (gray_dump_cells) [FT_DEBUG_LEVEL_TRACE]:
706 Update `printf' format string.
707
708 * src/tools/ftfuzzer/ftfuzzer.cc (setIntermediateAxis): Add cast.
709 (LLVMFuzzerTestOneInput): Fix loop type.
710
Werner Lemberg5c7646d2016-02-29 09:12:35 +01007112016-02-29 Werner Lemberg <wl@gnu.org>
712
713 [autofit] Add blue-zone support for Sinhala script.
714
715 This essentially moves the Sinhala script from the `Indic' hinter to
716 the `Latin' hinter.
717
718 * src/autofit/afblue.dat: Add blue zone data for Sinhala.
719
720 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
721
722 * src/autofit/afscript.h: Add Sinhala standard character and move data
723 out of AF_CONFIG_OPTION_INDIC block.
724
725 * src/autofit/afranges.c: Move Sinhala data out of
726 AF_CONFIG_OPTION_INDIC block.
727
728 * src/autofit/afstyles.h: Update Sinhala data; in particular, use
729 AF_WRITING_SYSTEM_LATIN.
730
Werner Lembergce486642016-02-27 15:01:49 +01007312016-02-27 Werner Lemberg <wl@gnu.org>
732
Werner Lembergf2169472016-02-28 22:48:34 +0100733 [autofit] Properly handle spikes pointing to the x-axis.
734
735 An example that gets better rendered is glyph `uusignTaml' (glyph
736 index 2286) in font `FreeSerif.ttf' (Version 0412.2263) at 22ppem.
737
738 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Properly
739 handle segments where the last point of the first segment is
740 identical to the first point in the second one. This can happen for
741 malformed fonts or spikes. We either merge the new segment with the
742 previous one (both segments point into the same direction), or we
743 discard the shorter segment if they point into different directions.
744
7452016-02-27 Werner Lemberg <wl@gnu.org>
746
Werner Lembergce486642016-02-27 15:01:49 +0100747 [autofit] Minor code clean-up.
748
749 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Change
750 some local variable names to better differentiate between values
751 along a segment and values orthogonal to it.
752
Werner Lembergebfd7ce2016-02-26 08:10:41 +01007532016-02-26 Werner Lemberg <wl@gnu.org>
754
755 [autofit] Improve BOUND action.
756
757 In complex glyph shapes, the original logic was too simple to cater
758 for situations that would actually need something similar to PS Hint
759 masks. This fix should alleviate the worst cases.
760
761 * src/autofit/aflatin.c (af_latin_hint_edges): Don't allow
762 complete disappearance of stems.
763
Werner Lemberg44324b32016-02-25 06:58:47 +01007642016-02-25 Werner Lemberg <wl@gnu.org>
765
766 [autofit] Add blue-zone support for Tamil script.
767
768 This essentially moves the Tamil script from the `Indic' hinter to
769 the `Latin' hinter.
770
771 * src/autofit/afblue.dat: Add blue zone data for Tamil.
772
773 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
774
Werner Lemberg5c7646d2016-02-29 09:12:35 +0100775 * src/autofit/afscript.h: Add Tamil standard character and move data
Werner Lemberg44324b32016-02-25 06:58:47 +0100776 out of AF_CONFIG_OPTION_INDIC block.
777
778 * src/autofit/afranges.c: Move Tamil data out of
779 AF_CONFIG_OPTION_INDIC block.
780
781 * src/autofit/afstyles.h: Update Tamil data; in particular, use
782 AF_WRITING_SYSTEM_LATIN.
783
Werner Lemberga5952d32016-02-18 12:56:38 +01007842016-02-18 Werner Lemberg <wl@gnu.org>
785
786 [autofit] Add blue-zone support for Malayalam script.
787
788 This essentially moves the Malayalam script from the `Indic' hinter
789 to the `Latin' hinter.
790
791 * src/autofit/afblue.dat: Add blue zone data for Malayalam.
792
793 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
794
795 * src/autofit/afscript.h: Add Malayalam standard characters and move
796 data out of AF_CONFIG_OPTION_INDIC block.
797
798 * src/autofit/afranges.c: Move Malayalam data out of
799 AF_CONFIG_OPTION_INDIC block.
800
801 * src/autofit/afstyles.h: Update Malayalam data; in particular, use
802 AF_WRITING_SYSTEM_LATIN.
803
Alexei Podtelezhnikov08e89b72016-02-16 22:32:13 -05008042016-02-16 Alexei Podtelezhnikov <apodtele@gmail.com>
805
806 [smooth] Fix integer overflow (#47114).
807
808 * src/smooth/ftgrays.c (TArea): Make it unconditionally `long'.
809
Werner Lemberg658f5302016-02-15 14:28:28 +01008102016-02-15 Werner Lemberg <wl@gnu.org>
811
Werner Lemberg3a5e5072016-02-15 22:21:01 +0100812 * src/cff/cffparse.c (cff_parse_multiple_master): Improve tracing.
813
8142016-02-15 Werner Lemberg <wl@gnu.org>
815
Werner Lemberg28730102016-02-15 20:53:22 +0100816 [cff] Handle T2 operator only with old CFF engine (#47157).
817
818 * src/cff/cffparse.c (cff_parser_run) <opcode 31>: Enclose with
819 #ifdef CFF_CONFIG_OPTION_OLD_ENGINE...#endif.
820
8212016-02-15 Werner Lemberg <wl@gnu.org>
822
Werner Lemberg8ed9eaf2016-02-15 20:41:58 +0100823 [cff] Partially handle `load' and `store' ops in old CFF engine.
824
825 Now all glyphs of MM CFFs like `ITCGaramondMM-It.otf' can be
826 displayed.
827
828 * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_store,
829 cff_op_load>: Partially implement it.
830
831 * src/cff/cffparse.c (cff_parser_init): Add new parameter to pass
832 the number of Multiple Master axes.
833 Update all callers.
834 (cff_parse_multiple_master): Get number of axes.
835 (cff_parser_run) <opcode 31>: Updated.
836 * src/cff/cffparse.h: Updated.
837 (CFF_ParserRec): Add `num_axes' field.
838
839 * src/cff/cffload.c: Updated.
840
841 * src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_axes' field.
842
8432016-02-15 Werner Lemberg <wl@gnu.org>
844
Werner Lemberg658f5302016-02-15 14:28:28 +0100845 [cff] Correctly trace SIDs that contain NULL bytes.
846
847 We need this to properly trace Multiple Master CFFs, which contain
848 two SIDs that are charstrings.
849
850 This commit makes FreeType also show the last SID, omitted
851 previously due to a bug.
852
853 * src/cff/cfftypes.h (CFF_FontRec): Add `string_pool_size' field.
854
855 * src/cff/cffload.c (cff_index_get_pointers): Add argument to return
856 the pool size.
857 Update all callers.
858
859 * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Directly
860 access `cff->strings' to display the non-default strings.
861
Werner Lemberg813aca52016-02-14 16:03:15 +01008622016-02-14 Werner Lemberg <wl@gnu.org>
863
Werner Lemberge411d382016-02-14 20:48:59 +0100864 * src/base/fthash.c: Include FT_INTERNAL_MEMORY_H.
865
8662016-02-14 Werner Lemberg <wl@gnu.org>
867
Werner Lembergdc5b2e82016-02-14 20:47:28 +0100868 * src/cff/cffparse.c: Include `cffgload.h'.
869
870 Problem reported by Colin Walters <walters@verbum.org>.
871
8722016-02-14 Werner Lemberg <wl@gnu.org>
873
Werner Lemberg813aca52016-02-14 16:03:15 +0100874 [cff] Make old CFF engine show MM CFFs (without variations).
875
876 The new code only displays the first master in the font.
877
878 * src/cff/cffgload.c (cff_decode_parse_charstrings): Add new
879 parameter to allow function calls from dictionaries also.
880 <cff_op_blend>: Partially implement it.
881 Update all callers.
882 * src/cff/cffgload.h: Updated.
883
884 * src/cff/cffparse.c (cff_parser_init): Add new parameter to pass the
885 number of Multiple Master designs.
886 Update all callers.
887 (cff_parse_multiple_master): New function to rudimentarily parse
888 operator.
889 (cff_parser_run): Handle `T2' operator.
890 * src/cff/cffparse.h: Updated.
891 (CFF_ParserRec): Add `num_designs' field.
892
893 * src/cff/cffload.c: Updated.
894
895 * src/cff/cfftoken.h: Handle `MultipleMaster' operator.
896
897 * src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_designs' field.
898
899 * src/sfnt/sfobjs.c (sfnt_init_face): Don't handle `fvar' table for
900 MM CFFs.
901
Werner Lemberg4b3ea5c2016-02-09 08:08:17 +01009022016-02-09 Werner Lemberg <wl@gnu.org>
903
904 [docmaker] Don't emit trailing newlines.
905
906 * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_code):
907 Use `rstrip'.
908
Werner Lemberg950f1692016-02-07 11:39:54 +01009092016-02-07 Werner Lemberg <wl@gnu.org>
910
Werner Lemberg44accb92016-02-08 19:51:40 +0100911 * Version 2.6.3 released.
912 =========================
913
914
915 Tag sources with `VER-2-6-3'.
916
917 * docs/VERSION.DLL: Update documentation and bump version number to
918 2.6.3.
919
920 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
921 builds/windows/vc2005/index.html,
922 builds/windows/vc2008/freetype.vcproj,
923 builds/windows/vc2008/index.html,
924 builds/windows/vc2010/freetype.vcxproj,
925 builds/windows/vc2010/index.html,
926 builds/windows/visualc/freetype.dsp,
927 builds/windows/visualc/freetype.vcproj,
928 builds/windows/visualc/index.html,
929 builds/windows/visualce/freetype.dsp,
930 builds/windows/visualce/freetype.vcproj,
931 builds/windows/visualce/index.html,
932 builds/wince/vc2005-ce/freetype.vcproj,
933 builds/wince/vc2005-ce/index.html,
934 builds/wince/vc2008-ce/freetype.vcproj,
935 builds/wince/vc2008-ce/index.html: s/2.6.2/2.6.3/, s/262/263/.
936
937 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
938
939 * builds/unix/configure.raw (version_info): Set to 18:3:12.
940 * CMakeLists.txt (VERSION_PATCH): Set to 2.
941
942 * docs/CHANGES: Updated.
943
9442016-02-07 Werner Lemberg <wl@gnu.org>
945
Werner Lemberg78371bd2016-02-07 21:06:59 +0100946 Fix another runtime error found by clang's sanitizer (#47082).
947
948 * src/base/ftstroke.c (ft_stroke_border_export): Properly handle
949 empty input buffer.
950
9512016-02-07 Werner Lemberg <wl@gnu.org>
952
Werner Lemberg0d053ba2016-02-07 19:25:56 +0100953 Fix runtime errors found by clang's sanitizer (#47082).
954
955 * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c
956 (FT_Outline_Copy), src/cache/ftcsbits.c (ftc_sbit_copy_bitmap):
957 Properly handle empty input buffer.
958
9592016-02-07 Werner Lemberg <wl@gnu.org>
960
Werner Lemberga1460702016-02-07 11:42:37 +0100961 [cff] Minor.
962
963 * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_sqrt>:
964 Remove dead code.
965
9662016-02-07 Werner Lemberg <wl@gnu.org>
967
Werner Lemberg950f1692016-02-07 11:39:54 +0100968 [cff] Implement missing operators in new engine (except `random').
969
970 * src/cff/cf2font.h (CF2_STORAGE_SIZE): New macro.
971
972 * src/cff/cf2intrp.c (cf2_interpT2CharString): Implement the
973 following operators: abs, add, and, div, drop, dup, eq, exch, get,
974 ifelse, index, mul, neg, not, or, put, roll, sqrt, sub.
975
976 * src/cff/cf2stack.h, src/cff/cf2stack.c (cf2_stack_roll): New
977 auxiliary function for `roll' operator.
978
Werner Lemberg5c8a8cb2016-02-06 08:03:03 +01009792016-02-06 Werner Lemberg <wl@gnu.org>
980
981 [cff] Fix some Type 2 operators in old CFF engine.
982
983 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Fix `eq'
984 operator, add `not' and (unsupported) `blend' operators.
985
Sebastian Rasmussenae7c55d2016-02-05 18:42:19 +01009862016-02-05 Sebastian Rasmussen <sebras@gmail.com>
987
988 Make direct call of `make install' work (#47072).
989
990 * builds/unix/unix-def.in (freetype-config): Make sure
991 `freetype-config' is generated for both make targets (`all' and
992 `install').
993
Werner Lemberg710ac3d2016-02-05 12:47:29 +01009942016-02-05 Werner Lemberg <wl@gnu.org>
995
996 [base] Fix advance width loading for MM and GX fonts (#47064).
997
998 * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Return false for
999 MM and GX fonts.
1000 Update callers.
1001
Werner Lembergcd346da2016-02-03 19:32:03 +010010022016-02-03 Werner Lemberg <wl@gnu.org>
1003
1004 [cff] Fix handling of face_index == -1 for pure CFF.
1005
1006 * src/cff/cffobjs.c (cff_face_init): Return correct number of faces.
1007
Werner Lembergbaa41ff2016-01-30 07:44:30 +010010082016-01-30 Werner Lemberg <wl@gnu.org>
1009
1010 [autofit] Minor tracing improvement.
1011
1012 * src/autofit/afhints.c (af_glyph_hints_dump_points): Insert newline
1013 at the start of a new contour.
1014
Nikolaus Waxweiler68750932016-01-28 12:24:36 +010010152016-01-28 Nikolaus Waxweiler <madigens@gmail.com>
1016
Nikolaus Waxweiler1d8d0b42016-01-28 14:11:14 +01001017 Remove unpatented hinter (3/3).
1018
1019 * include/freetype/config/ftoption.h
1020 (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove.
1021
1022 * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove
1023 `ignore_unpatented_hinter' field.
1024 Update users.
1025 (FT_DEBUG_HOOK_UNPATENTED_HINTING): Remove.
1026 Update users.
1027
1028 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove
1029 `unpatented_hinting' field.
1030 Update users.
1031
1032 * src/base/ftpatent.c (_tt_check_patents_in_range,
1033 _tt_check_patents_in_table, _tt_face_check_patents): Remove.
1034 (FT_Face_CheckTrueTypePatents, FT_Face_SetUnpatentedHinting):
1035 Replace code with dummies.
1036
Werner Lemberg0d053ba2016-02-07 19:25:56 +01001037 * src/truetype/ttobjs.c (tt_face_init): Remove now defunct code.
Nikolaus Waxweiler1d8d0b42016-01-28 14:11:14 +01001038 * src/truetype/ttobjs.h (TT_GraphicsState): Remove `both_x_axis'
1039 field.
1040
10412016-01-28 Nikolaus Waxweiler <madigens@gmail.com>
1042
Nikolaus Waxweiler5b7871b2016-01-28 12:27:46 +01001043 Remove unpatented hinter (2/3).
1044
1045 * devel/ftoption.h (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove.
1046
10472016-01-28 Nikolaus Waxweiler <madigens@gmail.com>
1048
Nikolaus Waxweiler68750932016-01-28 12:24:36 +01001049 Remove unpatented hinter (1/3).
1050
1051 * src/truetype/ttinterp.c [TT_CONFIG_OPTION_UNPATENTED_HINTING]:
1052 Remove all code related to this macro.
1053
Werner Lemberg8d810092016-01-28 10:13:24 +010010542016-01-28 Werner Lemberg <wl@gnu.org>
1055
1056 [autofit] Add blue-zone support for Kannada script.
1057
1058 This essentially moves the Kannada script from the `Indic' hinter to
1059 the `Latin' hinter.
1060
1061 * src/autofit/afblue.dat: Add blue zone data for Kannada.
1062
1063 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1064
1065 * src/autofit/afscript.h: Add Kannada standard characters and move
1066 data out of AF_CONFIG_OPTION_INDIC block.
1067
1068 * src/autofit/afranges.c: Move Kannada data out of
1069 AF_CONFIG_OPTION_INDIC block.
1070
1071 * src/autofit/afstyles.h: Update Kannada data; in particular, use
1072 AF_WRITING_SYSTEM_LATIN.
1073
Alexei Podtelezhnikove4c69d22016-01-22 23:35:49 -050010742016-01-22 Alexei Podtelezhnikov <apodtele@gmail.com>
1075
1076 Better access to 64-bit integers for C99 compilers.
1077
1078 * include/freetype/config/ftconfig.h [FT_LONG64]: Use
1079 __STDC_VERSION__ to define 64-bit integers.
1080 * builds/unix/ftconfig.in [FT_LONG64]: Ditto.
1081 * builds/vms/ftconfig.h [FT_LONG64]: Ditto.
1082
Werner Lembergfc4523b2016-01-21 06:20:20 +010010832016-01-21 Werner Lemberg <wl@gnu.org>
1084
1085 [gxvalid] Remove commented out code.
1086
1087 * src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Do it.
1088
Werner Lemberg24fbed02016-01-20 21:10:41 +010010892016-01-20 Werner Lemberg <wl@gnu.org>
1090
Werner Lemberg78371bd2016-02-07 21:06:59 +01001091 [autofit] Complete last autofit commit.
Werner Lembergfb672892016-01-20 21:13:16 +01001092
1093 Problem reported by Kostya Serebryany <kcc@google.com>.
1094
1095 * src/autofit/afshaper.c (af_shaper_get_coverage)
1096 [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Update signature.
1097
10982016-01-20 Werner Lemberg <wl@gnu.org>
1099
Werner Lemberg24fbed02016-01-20 21:10:41 +01001100 Still handle `__FTERRORS_H__'.
1101
1102 We need this for backwards compatibility.
1103
1104 Problem reported by John Emmas <johne53@tiscali.co.uk>.
1105
1106 * include/freetype/fterrors.h: Fix inclusion guard so that
1107 undefining either `FTERRORS_H_' or `__FTERRORS_H__' works as
1108 expected.
1109
Werner Lembergfc11af12016-01-19 19:15:54 +010011102016-01-19 Werner Lemberg <wl@gnu.org>
1111
Werner Lembergec776592016-01-19 19:33:57 +01001112 [autofit] Fix handling of default script.
1113
1114 Patch taken from ttfautohint, commit
1115 071ae2c00e0d67f9d19418f4fade1c23d27dc185.
1116
1117 There were two bugs.
1118
1119 - We now use non-standard script tags like `khms' for special
1120 purposes. However, HarfBuzz maps such tags to `DFLT', and
1121 without this commit the associated lookups were incorrectly
1122 assigned to the non-standard tags.
1123
1124 - Let's assume we have a Bengali font, and the font's `DFLT'
1125 script tag handles the necessary lookups for Bengali, too.
1126 Without this commit, the `DFLT' lookups were assigned to
1127 ttfautohint's default script (usually `latn') before the
1128 standard lookups for Bengali were handled.
1129
1130 We now have the following order while searching for covered
1131 glyph indices.
1132
1133 special features of scripts (e.g. `sups' for Cyrillic)
1134 Unicode mappings of scripts
1135 remaining features of scripts (especially important for Indic
1136 scripts)
1137 default features of default script
1138
1139 * src/autofit/afshaper.c, src/autofit/afshaper.h
1140 (af_shaper_get_coverage): Add boolean parameter to indicate default
1141 script.
1142 Update all callers.
1143
1144 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
1145 Fix search order for coverages.
1146
11472016-01-19 Werner Lemberg <wl@gnu.org>
1148
Werner Lembergfc11af12016-01-19 19:15:54 +01001149 Various minor clang fixes.
1150
1151 * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
1152 src/autofit/aflatin.c (af_latin_metrics_init_widths): Initialize
1153 `ch'.
1154
1155 * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Add cast.
1156
1157 * src/base/ftdbgmem.c (ft_mem_table_destroy): Add cast.
1158
1159 * src/base/fthash.c (hash_num_lookup): Add cast.
1160
1161 * src/base/fttrigon.c (ft_trig_downscale) [FT_LONG64]: Fix cast.
1162
1163 * src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Comment out
1164 redundant code.
1165
1166 * src/type1/t1driver.c (t1_get_ps_font_value) <PS_DICT_SUBR>: Add
1167 cast.
1168
1169 * src/type1/t1load.c (parse_subrs): Fix type of `count'.
1170
Derek B. Noonburg4cdfefd2016-01-19 07:12:44 +010011712016-01-19 Derek B. Noonburg <derekn@glyphandcog.com>
1172
1173 [truetype] Add another tricky font.
1174
1175 * src/truetype/ttobjs.c (TRICK_SFNT_IDS_NUM_FACES): Increase.
1176 (sfnt_id): Add variant of `DFKaiShu'.
1177
Alexei Podtelezhnikov32760d32016-01-14 23:31:08 -050011782016-01-14 Alexei Podtelezhnikov <apodtele@gmail.com>
1179
1180 [base] Empower `FT_Library_SetLcdFilterWeights'.
1181
1182 * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights): Enable filter
1183 in addition to setting weights.
1184 (FT_Library_SetLcdFilter): Clean out FT_FORCE_LIGHT_LCD_FILTER and
1185 FT_FORCE_LEGACY_LCD_FILTER.
1186 * include/freetype/ftlcdfil.h: Documentation update.
1187
Werner Lemberg37412ff2016-01-12 21:37:13 +010011882016-01-12 Werner Lemberg <wl@gnu.org>
1189
Werner Lembergc09a90a2016-01-12 22:28:14 +01001190 Don't use macro names that start with `_[A-Z]' [3/3].
1191
1192 Such macro names are reserved for both C and C++.
1193
1194 * src/cache/ftccache.h: s/_FTC_FACE_ID_HASH/FTC_FACE_ID_HASH/.
1195 Update all callers.
1196 (FTC_CACHE_LOOKUP_CMP): Replace `_XXX' with `XXX_'.
1197 * src/cache/ftcmru.c (FTC_MRULIST_LOOKUP_CMP): Ditto.
1198
11992016-01-12 Werner Lemberg <wl@gnu.org>
1200
Werner Lemberg9d0b76d2016-01-12 22:27:29 +01001201 Don't use macro names that start with `_[A-Z]' [2/3].
1202
1203 Such macro names are reserved for both C and C++.
1204
1205 * include/freetype/ftimage.h, src/raster/ftraster.c,
1206 src/smooth/ftgrays.c, src/smooth/ftgrays.h:
1207 s/_STANDALONE_/STANDALONE_/.
1208
12092016-01-12 Werner Lemberg <wl@gnu.org>
1210
Werner Lemberg758587d2016-01-12 22:20:06 +01001211 Don't use macro names that start with `_[A-Z]' [1/3].
1212
1213 Such macro names are reserved for both C and C++.
1214
1215 * src/bdf/bdflib.c: Replace macros of the form `_BDF_XXX' with
1216 `BDF_XXX_'.
1217
12182016-01-12 Werner Lemberg <wl@gnu.org>
1219
Werner Lemberg2e9d2662016-01-12 21:40:53 +01001220 Don't use macro names that contain `__' [2/2].
1221
1222 Such macro names are reserved for both C and C++.
1223
1224 * src/cache/*: s/__/_/.
1225
12262016-01-12 Werner Lemberg <wl@gnu.org>
1227
Werner Lemberg37412ff2016-01-12 21:37:13 +01001228 Don't use macro names that contain `__' [1/2].
1229
1230 Such macro names are reserved for both C and C++.
1231
Werner Lemberg2e9d2662016-01-12 21:40:53 +01001232 * */*: Replace macros of the form `__XXX_H__' with `XXX_H_'.
Werner Lemberg37412ff2016-01-12 21:37:13 +01001233
Jered Grayf53bab92016-01-10 12:03:36 +010012342016-01-10 Jered Gray <jegray@google.com>
1235
1236 [cff] Fix usage of `|' operator.
1237
1238 * src/cff/cf2intrp.c (cf2_interpT2CharString) [cf2_cmdEXTENDEDNMBR,
1239 default]: `|' is not guaranteed to be processed from left to right
1240 by the compiler. However, the code repeatedly calls
1241 `cf2_buf_readByte' to get the arguments to `|' ... Fix this.
1242
Werner Lemberg2e098122015-12-25 08:05:30 +010012432015-12-25 Werner Lemberg <wl@gnu.org>
1244
1245 [autofit] Make top-to-bottom hinting work in latin auto-hinter.
1246
1247 This improves rendering of scripts like Bengali or Devanagari.
1248
1249 * src/autofit/afhints.c (af_axis_hints_new_edge): Add parameter to
1250 pass top-to-bottom hinting flag. This makes the function sort edges
1251 in descending vertical position.
1252
1253 * src/autofit/afhints.c: Updated.
1254
1255 * src/autofit/aflatin.c (af_latin_hints_compute_edges,
1256 af_latin_hint_edges): Use `top_to_bottom_hinting' flag.
1257
1258 * src/autofit/afcjk.c (af_cjk_hints_compute_edges),
1259 src/autofit/aflatin2.c (af_latin2_hints_compute_edges): Updated.
1260
Werner Lemberg172db322015-12-24 08:17:51 +010012612015-12-24 Werner Lemberg <wl@gnu.org>
1262
1263 [autofit] Add hinting direction to `AF_ScriptClassRec'.
1264
1265 Still unused.
1266
1267 * src/autofit/afglobal.c (SCRIPT): Handle hinting direction.
1268
1269 * src/autofit/aftypes.h (AF_ScriptClassRec): Add
1270 `top_to_bottom_hinting' field.
1271 (AF_HINTING_BOTTOM_TO_TOP, AF_HINTING_TOP_TO_BOTTOM): New macros.
1272 (AF_DEFINE_SCRIPT_CLASS): Updated.
1273
Werner Lembergb0de5a82015-12-23 23:25:03 +010012742015-12-23 Werner Lemberg <wl@gnu.org>
1275
1276 [autofit] Start implementing hinting direction (up/down, down/up).
1277
1278 Right now, it does nothing.
1279
1280 * src/autofit/afscript.h: Add another parameter to `SCRIPT',
1281 specifying hinting direction.
1282
1283 * src/autofit/afglobal.c, scr/autofit/afglobal.h,
1284 src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/afshaper.c,
1285 src/autofit/aftypes.h: Extend `SCRIPT' definitions.
1286
Werner Lemberg7ce6c432015-12-22 05:39:58 +010012872015-12-22 Werner Lemberg <wl@gnu.org>
1288
Werner Lemberg9c1a2b02015-12-22 12:05:46 +01001289 * src/type1/t1load.c (parse_subrs): Fix memory leak (#46744).
1290
12912015-12-22 Werner Lemberg <wl@gnu.org>
1292
Werner Lemberg7ce6c432015-12-22 05:39:58 +01001293 [base] Make hash interface symmetric.
1294
1295 Use `num' and `str' infixes everywhere.
1296
1297 * src/base/fthash.c (ft_hash_init): Renamed to...
1298 (hash_init): ... This.
1299 (ft_hash_str_init, ft_hash_num_init): New functions.
1300 (ft_hash_free): Renamed to...
1301 (ft_hash_str_free): ... This.
1302
1303 * include/freetype/internal/fthash.h: Updated.
1304
1305 * src/bdf/bdflib.c, src/type1/t1load.c, src/type1/t1objs.c: Updated.
1306
Werner Lemberg60d13bd2015-12-21 17:27:17 +010013072015-12-21 Werner Lemberg <wl@gnu.org>
1308
1309 [type1] Avoid shift of negative numbers (#46732).
1310
1311 * src/type1/t1load.c (parse_subrs): Do it.
1312
Werner Lemberg609546c2015-12-20 07:17:29 +010013132015-12-20 Werner Lemberg <wl@gnu.org>
1314
Werner Lembergbd4b8972015-12-20 19:36:04 +01001315 [type1, psaux] Handle large values of num_subrs correctly (#46692).
1316
1317 We now use a hash to map from subr indices to array elements holding
1318 the subroutines, if necessary.
1319
1320 * include/freetype/internal/t1types.h: Include FT_INTERNAL_HASH_H.
1321 (T1_FontRec): Add `subrs_hash' field.
1322
1323 * include/freetype/internal/psaux.h: Include FT_INTERNAL_HASH_H.
1324 (T1_DecoderRec): Add `subrs_hash' field.
1325
1326 * src/type1/t1load.h (T1_LoaderRec): Add `subrs_hash' field.
1327
1328 * src/type1/t1driver.c: Include FT_INTERNAL_HASH_H.
1329 (t1_ps_get_font_value) [PS_DICT_SUBR]: Look up hash if necessary.
1330
1331 * src/type1/t1load.c: Include FT_INTERNAL_HASH_H.
1332 (parse_subrs): Use hash for subr indices that exceed the allocated
1333 number of subr slots.
1334 (t1_init_loader): Remove unnecessary code.
1335 (t1_done_loader, T1_Open_Face): Updated.
1336
1337 * src/type1/t1gload.c (T1_Compute_Max_Advance, T1_Get_Advances,
1338 T1_Load_Glyph): Updated.
1339
1340 * src/type1/t1objs.c (T1_Face_Done): Updated.
1341
1342 * src/psaux/t1decode.c: Include FT_INTERNAL_HASH_H.
1343 (t1_decoder_parse_charstrings) [op_callsubr]: Look up hash if
1344 necessary.
1345
1346 * src/cid/cidgload.c (cid_load_glyph): Updated.
1347
13482015-12-20 Werner Lemberg <wl@gnu.org>
1349
Werner Lemberg1caf6292015-12-20 19:00:35 +01001350 [base] Thinko: Remove free function pointer.
1351
1352 We don't copy keys or values while hashing.
1353
1354 * include/freetype/internal/fthash.h (FT_Hash_FreeFunc): Removed.
1355 (FT_HashRec): Remove `free' field.
1356
1357 * src/base/fthash.c (hash_str_free): Removed.
1358 (ft_hash_init, ft_hash_free): Updated.
1359
13602015-12-20 Werner Lemberg <wl@gnu.org>
1361
Werner Lemberg76e79ec2015-12-20 09:03:15 +01001362 [base, bdf] Don't expose `FT_Hashnode' in hash functions.
1363
1364 * src/base/fthash.c (hash_lookup, ft_hash_str_lookup,
1365 ft_hash_num_lookup): Return pointer to `size_t' instead of
1366 `FT_Hashnode'.
1367
1368 * include/freetype/internal/fthash.h: Updated.
1369
1370 * src/bdf/bdflib.c (bdf_get_property, _bdf_add_property,
1371 bdf_get_font_property): Updated.
1372
13732015-12-20 Werner Lemberg <wl@gnu.org>
1374
Werner Lembergad306ea2015-12-20 08:33:21 +01001375 [base, bdf] Add number hashing.
1376
1377 * src/base/fthash.c (hash_num_lookup, hash_num_compare): New
1378 functions.
1379 (ft_hash_init): Add argument to select between number and string
1380 hashing.
1381 (ft_hash_num_insert, ft_hash_num_lookup): New functions.
1382
1383 * include/freetype/internal/fthash.h: Updated.
1384
1385 * src/bdf/bdflib.c (_bdf_parse_start): Updated.
1386
13872015-12-20 Werner Lemberg <wl@gnu.org>
1388
Werner Lemberg1b7549c2015-12-20 08:00:33 +01001389 [base] Introduce hash lookup, compare, and free function pointers.
1390
1391 * include/freetype/internal/fthash.c (FT_Hash_LookupFunc,
1392 FT_Hash_CompareFunc, FT_Hash_FreeFunc): New typedefs.
1393 (FT_HashRec): Add `lookup', `compare', and `free' fields.
1394
1395 * src/base/fthash.c (hash_str_lookup, hash_str_compare,
1396 hash_str_free): New functions.
1397 (ft_hash_init): Set function pointers.
1398 (hash_bucket, ft_hash_free): Use them.
1399
14002015-12-20 Werner Lemberg <wl@gnu.org>
1401
Werner Lemberg609546c2015-12-20 07:17:29 +01001402 [base, bdf] Use a union as a hash key.
1403
1404 We want to support both an integer and a string key later on.
1405
1406 * include/freetype/internal/fthash.h (FT_Hashkey): New union.
1407 (FT_HashnodeRec): Updated.
1408 (ft_hash_insert, ft_hash_lookup): Renamed to ...
1409 (ft_hash_str_insert, ft_hash_str_lookup): ... this.
1410
1411 * src/base/fthash.c (hash_bucket): Updated.
1412 (ft_hash_insert, ft_hash_lookup): Renamed to ...
1413 (hash_insert, hash_lookup): ... this.
1414 (ft_hash_str_insert, ft_hash_str_lookup): New wrapper functions.
1415
1416 * src/bdf/bdflib.c: Updated.
1417
Werner Lembergc98a40f2015-12-19 16:59:40 +010014182015-12-19 Werner Lemberg <wl@gnu.org>
1419
Werner Lemberg31343562015-12-19 17:02:13 +01001420 [bdf] Use new hash functions.
1421
1422 * src/bdf/bdf.h: Include FT_INTERNAL_HASH_H.
1423 (hashnode, hashtable): Removed.
1424 (bdf_font_t): Use `FT_HashRec' type for `proptbl'.
1425
1426 * src/bdf/bdflib.c: Remove all hash functions.
1427 Update code for new hash structure and function names.
1428
14292015-12-19 Werner Lemberg <wl@gnu.org>
1430
Werner Lembergc98a40f2015-12-19 16:59:40 +01001431 [bdf, base] Lift hash functions from bdf driver to base module.
1432
1433 * src/base/fthash.c, include/freetype/internal/fthash.h: New files,
1434 containing (massaged) code from `bdflib.c' and `bdf.h'.
1435
1436 * include/freetype/internal/internal.h (FT_INTERNAL_HASH_H): New
1437 macro.
1438
1439 * src/base/ftbase.c: Include `fthash.c'.
1440
1441 * src/base/Jamfile (_sources): Add `fthash'.
1442
1443 * src/base/rules.mk (BASE_SRC): Add `fthash.c'.
1444
1445 * docs/LICENSE.TXT: Updated.
1446
Werner Lemberg02451c72015-12-15 17:53:46 +010014472015-12-15 Werner Lemberg <wl@gnu.org>
1448
1449 [autofit] Add blue-zone support for Bengali script.
1450
1451 This essentially moves the Bengali script from the `Indic' hinter to
1452 the `Latin' hinter.
1453
1454 * src/autofit/afblue.dat: Add blue zone data for Bengali.
1455
1456 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1457
1458 * src/autofit/afscript.h: Add Bengali standard characters and move
1459 data out of AF_CONFIG_OPTION_INDIC block.
1460
1461 * src/autofit/afranges.c: Move Bengali data out of
1462 AF_CONFIG_OPTION_INDIC block.
1463
1464 * src/autofit/afstyles.h: Update Bengali data; in particular, use
1465 AF_WRITING_SYSTEM_LATIN.
1466
Ben Wagnera512b0f2015-12-14 09:19:52 +010014672015-12-14 Ben Wagner <bungeman@gmail.com>
1468
1469 [bdf] Remove dead code (#46625).
1470
1471 The BDF specification only allows decimal numbers, no octal or
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04001472 hexadecimal decoding is needed.
Ben Wagnera512b0f2015-12-14 09:19:52 +01001473
1474 * src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous,
1475 _bdf_atos): Remove unused code and parameters.
1476 Update all callers.
1477 (odigits): Remove.
1478
Werner Lemberg40992812015-12-14 07:51:25 +010014792015-12-14 Werner Lemberg <wl@gnu.org>
1480
1481 [base] Fix calls to `FT_Stream_Seek'.
1482
1483 * src/base/ftobjs.c (Mac_Read_sfnt_Resource, FT_Open_Face): Set
1484 `error'.
1485
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040014862015-12-14 Ben Wagner <bungeman@gmail.com>
Ben Wagnerf0cc1732015-12-14 07:00:41 +01001487
1488 [base] Check error when seeking to data supplied offset (#46635).
1489
1490 * src/base/ftobjs.c (open_face_PS_from_sfnt_stream):
Alexei Podtelezhnikov500bcbd2016-05-07 22:28:43 -04001491 `ft_lookup_PS_in_sfnt_stream' returns offset and length from
Ben Wagnerf0cc1732015-12-14 07:00:41 +01001492 user supplied data. Use of this these values must be checked.
1493
Werner Lembergd8f9a452015-12-13 15:54:17 +010014942015-12-13 Werner Lemberg <wl@gnu.org>
1495
1496 [autofit] Add support for Myanmar script.
1497
1498 * src/autofit/afblue.dat: Add blue zone data for Myanmar.
1499
1500 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1501
1502 * src/autofit/afscript.h: Add Myanmar standard characters.
1503
1504 * src/autofit/afranges.c: Add Myanmar data.
1505
1506 * src/autofit/afstyles.h: Add Myanmar data.
1507
Werner Lemberg79a42ad2015-12-12 07:27:14 +010015082015-12-12 Werner Lemberg <wl@gnu.org>
1509
Werner Lemberg868d5a02015-12-12 07:28:22 +01001510 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Minor.
1511
15122015-12-12 Werner Lemberg <wl@gnu.org>
1513
Werner Lemberg79a42ad2015-12-12 07:27:14 +01001514 * src/autofit/afscript.h: Avoid potential crash.
1515
Werner Lembergbbe84ed2015-12-10 09:33:41 +010015162015-12-10 Werner Lemberg <wl@gnu.org>
1517
Werner Lemberg4fe3b552015-12-11 08:08:48 +01001518 [autofit] Restore OpenType feature check.
1519
1520 This was removed while rewriting the HarfBuzz interface.
1521
1522 * src/autofit/afglobal.h (AF_FaceGlobalsRec): Add `hb_buf' field to
1523 hold internal HarfBuzz buffer, needed for feature comparison.
1524
1525 * src/autofit/afglobal.c (af_face_globals_new,
1526 af_face_globals_free): Initialize and destroy `hb_buf'.
1527
1528 * src/autofit/afshaper.c (af_shaper_get_cluster): Compare character
1529 (cluster) with and without applied feature.
1530
1531 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix tracing
1532 message.
1533
15342015-12-10 Werner Lemberg <wl@gnu.org>
1535
Werner Lembergbbe84ed2015-12-10 09:33:41 +01001536 [autofit] Remove redundant code.
1537
1538 * src/autofit/aflatin.c (af_latin_metrics_init_widths): Do it.
1539
Werner Lembergf02e1df2015-12-09 14:45:30 +010015402015-12-09 Werner Lemberg <wl@gnu.org>
1541
Werner Lembergdd305f32015-12-09 21:00:33 +01001542 [autofit] Thinko.
1543
1544 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Don't count
1545 empty blue zones (bug introduced 2015-12-06).
1546
15472015-12-09 Werner Lemberg <wl@gnu.org>
1548
Werner Lemberg0164d932015-12-09 20:04:18 +01001549 [autofit] Introduce subscript top blue zones.
1550
1551 This feature is mainly for Khmer: The idea is to avoid a clash
1552 between the top of subscript glyphs and the bottom of normal
1553 baseline glyphs.
1554
1555 This only works for character clusters mapped to multiple glyphs.
1556
1557 * src/autofit/afblue.dat: Add subscript top blue zone for Khmer.
1558
1559 * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_SUB_TOP): New
1560 macro.
1561
1562 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1563
1564 * src/autofit/aflatin.h (AF_LATIN_IS_SUB_TOP_BLUE,
1565 AF_LATIN_BLUE_SUB_TOP): New macros.
1566
1567 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle new
1568 blue zone property.
1569 Update tracing messages.
1570 (af_latin_metrics_scale_dim): Handle new blue zone property.
1571 (af_latin_hints_compute_blue_edges): Updated.
1572
15732015-12-09 Werner Lemberg <wl@gnu.org>
1574
Werner Lembergf02e1df2015-12-09 14:45:30 +01001575 [autofit] Fix tracing message.
1576
1577 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Display
1578 inactive blue zones also.
1579
Werner Lembergf45c0bf2015-12-06 09:58:18 +010015802015-12-06 Werner Lemberg <wl@gnu.org>
1581
Werner Lembergc13526e2015-12-08 09:48:50 +01001582 * src/autofit/afblue.dat: Add more Khmer clusters.
1583
1584 Some fonts have incorrect ligatures; we need more samples to get a
1585 good mean value.
1586
1587 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1588
15892015-12-06 Werner Lemberg <wl@gnu.org>
1590
Werner Lembergb38ca3c2015-12-06 19:48:31 +01001591 [autofit] Typos.
1592
1593 * src/autofit/afshaper.c (af_shaper_buf_create, af_shaper_get_elem)
1594 [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Make it compile.
1595
15962015-12-06 Werner Lemberg <wl@gnu.org>
1597
Werner Lembergfacb79a2015-12-06 19:34:59 +01001598 [autofit] Add support for Khmer script.
1599
1600 We split Khmer into two auto-hinter scripts: `Khmer' (`khmr') and
1601 `Khmer symbols' (`khms', U+19E0-U+19FF).
1602
1603 * src/autofit/afblue.dat: Add blue zone data for Khmer.
1604
1605 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1606
1607 * src/autofit/afscript.h: Add Khmer standard characters.
1608
1609 * src/autofit/afranges.c: Add Khmer data.
1610
1611 * src/autofit/afstyles.h: Add Khmer data.
1612
16132015-12-06 Werner Lemberg <wl@gnu.org>
1614
Werner Lemberg24aa9c62015-12-06 18:52:41 +01001615 [autofit] Rewrite HarfBuzz interface to support character clusters.
1616
1617 Scripts like Khmer have blue zones that can't be directly
1618 represented by Unicode characters. Instead, it is necessary to let
1619 HarfBuzz convert character clusters into proper glyph representation
1620 forms, then deriving the blue zone information from the resulting
1621 glyphs.
1622
1623 * src/autofit/hbshim.c, src/autofit/hbshim.h: Replaced by...
1624 * src/autofit/afshaper.c, src/autofit/afshaper.h: ... these two new
1625 files, providing a new API to access HarfBuzz.
1626
1627 The new API manages a HarfBuzz buffer with `af_shaper_buf_create'
1628 and `af_shaper_buf_destroy'. The buffer receives a UTF8 encoded
1629 string with function `af_shaper_get_cluster', and the resulting
1630 glyph data (indices, advance widths, vertical offsets) can be
1631 iteratively accessed with function `af_shaper_get_elem'.
1632
1633 * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
1634 af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated.
1635
1636 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
1637 af_latin_metrics_init_blues, af_latin_metrics_check_digits):
1638 Updated.
1639
1640 * include/freetype/internal/fttrace.h: s/afharfbuzz/afshaper/.
1641
1642 * src/autofit/afglobal.c: s/hbshim.h/afshaper.h/.
1643 (af_face_globals_compute_style_coverage): Updated.
1644
Alexei Podtelezhnikovf46b2822016-04-11 23:22:57 -04001645 * src/autofit/afglobal.h: s/hbshim.h/afshaper.h/.
Werner Lemberg24aa9c62015-12-06 18:52:41 +01001646
1647 * src/autofit/autofit.c: s/hbshim.c/afshaper.c/.
1648
1649 * src/autofit/Jamfile, src/autofit/rules.mk (AUTOF_DRV_SRC):
1650 Updated.
1651
16522015-12-06 Werner Lemberg <wl@gnu.org>
1653
Werner Lembergde599942015-12-06 18:18:02 +01001654 [autofit] Prepare forthcoming changes.
1655
1656 This makes it easier to control the commits.
1657
1658 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Add dummy
1659 loop. No functional change.
1660
16612015-12-06 Werner Lemberg <wl@gnu.org>
1662
Werner Lembergf45c0bf2015-12-06 09:58:18 +01001663 [autofit] Use string of standard characters.
1664
1665 This is more flexible; additionally, it would allow character
1666 clusters.
1667
1668 * src/autofit/aftypes.h (SCRIPT, AF_DEFINE_SCRIPT_CLASS): Updated.
1669 (AF_ScriptClassRec): Replace `standard_char[123]' with
1670 `standard_charstring'.
1671
1672 * src/autofit/afscript.h: Replace last three character arguments
1673 of the `SCRIPT' calls with a string parameter, holding the standard
1674 characters (in UTF-8 encoding) separated with spaces.
1675
1676 * src/autofit/afglobal.c, src/autofit/afglobal.h,
1677 src/autofit/afpic.c, src/autofit/afranges.c, src/autofit/hbshim.c
1678 (SCRIPT): Updated.
1679
1680 * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
1681 src/autofit/aflatin.c (af_latin_metrics_init_widths): Updated.
1682
Werner Lemberg53696f02015-12-05 07:44:16 +010016832015-12-05 Werner Lemberg <wl@gnu.org>
1684
Werner Lemberga8a54c32015-12-05 13:26:44 +01001685 * src/autofit/afblue.dat: Separate blue zone characters with spaces.
1686
1687 Another preparation for character cluster support.
1688
1689 * src/autofit/afblue.c, src/autofit.afblue.h: Regenerated.
1690
16912015-12-05 Werner Lemberg <wl@gnu.org>
1692
Werner Lemberg453722d2015-12-05 13:20:30 +01001693 * src/tools/afblue.pl (convert_ascii_chars): Don't ignore spaces.
1694
1695 Instead, reduce multiple spaces to a single one. We need this later
1696 for supporting character clusters in `afblue.dat'.
1697
16982015-12-05 Werner Lemberg <wl@gnu.org>
1699
Werner Lembergf7e6d512015-12-05 13:08:45 +01001700 * src/autofit/afblue.hin (GET_UTF8_CHAR): Use `do...while(0)'.
1701
1702 * src/autofit/afblue.h: Regenerated.
1703
17042015-12-05 Werner Lemberg <wl@gnu.org>
1705
Werner Lemberg53696f02015-12-05 07:44:16 +01001706 * src/autofit/afwarp.c: s/INT_MIN/FT_INT_MIN/.
1707
Werner Lemberga4154732015-12-03 07:49:46 +010017082015-12-03 Werner Lemberg <wl@gnu.org>
1709
1710 * builds/unix/install.mk (install): Remove stale `ft2build.h'.
1711
Werner Lemberg5b05bc62015-12-01 12:09:02 +010017122015-12-01 Werner Lemberg <wl@gnu.org>
1713
1714 [type1] Avoid dangling pointer (#46572).
1715
1716 * src/type1/t1afm.c (T1_Read_Metrics): Properly reset
1717 `face->afm_data'.
1718
Alexei Podtelezhnikovf8c20572015-11-28 22:43:33 -050017192015-11-28 Alexei Podtelezhnikov <apodtele@gmail.com>
1720
1721 * include/freetype/ftlcdfil.h: Documentation tweak.
1722
Werner Lemberg4679bf82015-11-28 19:05:36 +010017232015-11-28 Werner Lemberg <wl@gnu.org>
1724
Werner Lemberg66cf29b2015-11-28 19:08:05 +01001725 * Version 2.6.2 released.
1726 =========================
1727
1728
1729 Tag sources with `VER-2-6-2'.
1730
1731 * docs/VERSION.DLL: Update documentation and bump version number to
1732 2.6.2.
1733
1734 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1735 builds/windows/vc2005/index.html,
1736 builds/windows/vc2008/freetype.vcproj,
1737 builds/windows/vc2008/index.html,
1738 builds/windows/vc2010/freetype.vcxproj,
1739 builds/windows/vc2010/index.html,
1740 builds/windows/visualc/freetype.dsp,
1741 builds/windows/visualc/freetype.vcproj,
1742 builds/windows/visualc/index.html,
1743 builds/windows/visualce/freetype.dsp,
1744 builds/windows/visualce/freetype.vcproj,
1745 builds/windows/visualce/index.html,
1746 builds/wince/vc2005-ce/freetype.vcproj,
1747 builds/wince/vc2005-ce/index.html,
1748 builds/wince/vc2008-ce/freetype.vcproj,
1749 builds/wince/vc2008-ce/index.html: s/2.6.1/2.6.2/, s/261/262/.
1750
1751 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
1752
1753 * builds/unix/configure.raw (version_info): Set to 18:2:12.
1754 * CMakeLists.txt (VERSION_PATCH): Set to 2.
1755
1756 * docs/CHANGES: Updated.
1757
17582015-11-28 Werner Lemberg <wl@gnu.org>
1759
Werner Lemberg4679bf82015-11-28 19:05:36 +01001760 Fix C++ compilation.
1761
1762 * src/autofit/afloader.c: Include FT_INTERNAL_CALC_H.
1763
1764 * src/truetype/ttgload.c (load_truetype_glyph): Pacify compiler.
1765
Nikolaus Waxweiler01ce1c62015-11-28 12:04:28 +010017662015-11-28 Nikolaus Waxweiler <madigens@gmail.com>
1767
1768 Change default LCD filter to be normalized and color-balanced.
1769
1770 * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Update
1771 `default_filter'.
1772
Werner Lemberg98afe3f2015-11-28 11:58:49 +010017732015-11-28 Werner Lemberg <wl@gnu.org>
1774
1775 [docmaker] Allow references to section names.
1776
1777 In the reference, we show the section's title enclosed in single
1778 quotes.
1779
1780 * src/tools/docmaker/formatter.py (Formatter::__init__): Collect
1781 section names as identifiers.
1782
1783 * src/tools/docmaker/tohtml.py (section_title_header): Split into...
1784 (section_title_header1, section_title_header2): ... these two
1785 strings.
1786 (HtmlFormatter::make_block_url, make_html_word, html_source_quote):
1787 Handle sections.
1788 (HtmlFormatter::section_enter): Updated to add `id' HTML attribute.
1789
Tamas Kenez4854df62015-11-27 07:04:31 +010017902015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
1791
Tamas Kenez30fdfe62015-11-27 23:16:08 +01001792 [cmake] Add script to test the config module.
1793
1794 * builds/cmake/testbuild.sh: New file.
1795
17962015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
1797
Tamas Kenezc80620c2015-11-27 18:37:21 +01001798 * CMakeLists.txt: Create `freetype-config.cmake' config module.
1799
18002015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
1801
Tamas Kenez9d0544f2015-11-27 18:28:31 +01001802 * CMakeLists.txt: Set CMAKE_DEBUG_POSTFIX to `d'.
1803
18042015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
1805
Tamas Kenezda97b4c2015-11-27 07:11:42 +01001806 [cmake] Add better control of library dependencies.
1807
1808 * CMakeLists.txt: Add `WITH_*' variables to force/auto/omit
1809 ZLIB/BZip2/PNG/HarfBuzz.
1810
18112015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
1812
Tamas Kenez4854df62015-11-27 07:04:31 +01001813 [cmake] Make `FindHarfbuzz' observe the REQUIRED option.
1814
1815 * builds/cmake/FindHarfBuzz.cmake: Implement it.
1816
Werner Lemberg5b3446b2015-11-27 06:47:13 +010018172015-11-27 Werner Lemberg <wl@gnu.org>
1818
1819 [cmake] Collect files specific to cmake in `builds/cmake'.
1820
1821 * builds/FindHarfBuzz.cmake: Move to ...
1822 * builds/cmake/FindHarfBuzz.cmake: ... this place.
1823
1824 * CMakeLists.txt (CMAKE_MODULE_PATH): Updated.
1825
Alexander Bock8f982b32015-11-27 06:34:39 +010018262015-11-27 Alexander Bock <alexander.j.bock@nasa.gov>
1827
1828 CMakeLists.txt: Honour new command line flag `FREETYPE_NO_DIST'.
1829
Werner Lemberg97b808f2015-11-26 14:29:17 +010018302015-11-26 Werner Lemberg <wl@gnu.org>
1831
1832 [docmaker] Allow `foo[bar]' as identifier.
1833
1834 We need this to handle equally named properties in different
1835 modules.
1836
1837 * src/tools/docmaker/content.py (re_identifier),
1838 src/tools/docmaker/sources.py (re_crossref): Allow `foo[bar]'.
1839
1840 * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word,
1841 HtmlFormatter::index_exit, HtmlFormatter::section_enter,
1842 HtmlFormatter::block_enter): Handle `foo[bar]'.
1843
Werner Lemberg4a150132015-11-25 07:53:49 +010018442015-11-25 Werner Lemberg <wl@gnu.org>
1845
1846 * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46480).
1847
1848 (_bdf_parse_glyphs): Always reset `p->glyph_name' after moving its
1849 contents.
1850
Werner Lemberg663f2d72015-11-21 06:30:43 +010018512015-11-21 Werner Lemberg <wl@gnu.org>
1852
1853 * include/freetype/internal/ftcalc.h: Don't use `register' keyword.
1854
1855 This fixes compiler warnings.
1856
1857 Reported by Behdad.
1858
Werner Lembergb96af122015-11-20 16:03:09 +010018592015-11-20 Werner Lemberg <wl@gnu.org>
1860
1861 Add `FT_LCD_FILTER_LEGACY1' enum value.
1862
1863 This does the same as `FT_LCD_FILTER_LEGACY'.
1864
1865 See
1866
1867 https://bugs.freedesktop.org/show_bug.cgi?id=92981
1868
1869 for the reasoning.
1870
1871 * include/freetype/ftlcdfil.h (FT_LcdFilter): New value
1872 `FT_LCD_FILTER_LEGACY1'.
1873
1874 * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Use it.
1875
Werner Lemberg94cacac2015-11-15 04:45:42 +010018762015-11-15 Werner Lemberg <wl@gnu.org>
1877
Werner Lemberg68fb4782015-11-15 13:06:48 +01001878 * src/autofit/afhints.c (af_get_segment_index): Fix it.
1879
1880 The old code was too simple, returning invalid values in most cases
1881 where a segment crosses the contour start.
1882
18832015-11-15 Werner Lemberg <wl@gnu.org>
1884
Werner Lemberg94cacac2015-11-15 04:45:42 +01001885 * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46439).
1886
Werner Lemberg75722f82015-11-11 09:55:16 +010018872015-11-11 Werner Lemberg <wl@gnu.org>
1888
1889 [cff, autofit] Switch off stem darkening by default.
1890
1891 * src/autofit/afmodule.c (af_autofitter_init), src/cff/cffobjs.c
1892 (cff_driver_init): Do it.
1893
Jan Alexander Steffens (heftig)ccd31882015-11-10 22:33:45 +010018942015-11-10 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
1895
1896 Allow native CFF hinter in FT_RENDER_MODE_LIGHT.
1897
1898 Both the native CFF hinter and the auto-hinter now have a very
1899 similar rendering style.
1900
1901 * include/freetype/freetype.h: Mention that FT_LOAD_TARGET_LIGHT no
1902 longer implies FT_LOAD_FORCE_AUTOHINT.
1903
1904 * include/freetype/ftmodapi.h (FT_MODULE_DRIVER_HINTS_LIGHTLY): New
1905 macro.
1906
1907 * include/freetype/internal/ftobjs.h (FT_DRIVER_HINTS_LIGHTLY): New
1908 macro.
1909
1910 * src/cff/cffdrivr.c (cff_driver_class): Use it.
1911
1912 * src/base/ftobjs.c (FT_Load_Glyph): Update auto-hinter selection
1913 logic.
1914
Werner Lemberg837285e2015-11-09 09:20:08 +010019152015-11-09 Werner Lemberg <wl@gnu.org>
1916
Werner Lemberg2985e4f2015-11-09 21:37:40 +01001917 * src/cid/cidload.c (cid_face_open): Fix GDBytes guard (#46408).
1918
19192015-11-09 Werner Lemberg <wl@gnu.org>
1920
Werner Lemberg837285e2015-11-09 09:20:08 +01001921 [truetype] Remove integer to pointer conversion compiler warning.
1922
1923 Problem reported by Alexei.
1924
1925 * src/truetype/ttgload.c (load_truetype_glyph): Use a solution found
1926 in the glib library to fix the issue.
1927
Behdad Esfahbodabb33122015-11-08 10:00:34 +010019282015-11-08 Behdad Esfahbod <behdad@behdad.org>
1929
1930 [sfnt] Accept version 3 of `EBLC' and `CBLC' tables also.
1931
1932 * src/sfnt/ttsbit.c (tt_face_load_sbit): Implement it.
1933
19342015-11-08 Philipp Knechtges <philipp-dev@knechtges.com>
Philipp Knechtgesbe32b162015-11-08 08:37:51 +01001935
1936 [autofit] Don't distort (latin) glyphs too much (#46195).
1937
1938 * src/autofit/aflatin.h (AF_LatinBlueRec): Add `ascender' and
1939 `descender' fields.
1940
1941 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Collect
1942 ascender and descender data for blue zones.
1943 (af_latin_metrics_scale_dim): Reject vertical scaling values that
1944 change the result by more than two pixels.
1945
Werner Lemberg0f0a6bb2015-11-05 13:48:11 +010019462015-11-05 Werner Lemberg <wl@gnu.org>
1947
1948 [sfnt] Ignore embedded bitmaps with zero size (#46379).
1949
1950 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Implement
1951 it.
1952
Werner Lemberg040edaf2015-11-04 07:35:51 +010019532015-11-04 Werner Lemberg <wl@gnu.org>
1954
Werner Lemberg758d55e2015-11-04 11:44:47 +01001955 [truetype] Catch infinite recursion in subglyphs (#46372).
1956
1957 * include/freetype/internal/tttypes.h (TT_LoaderRec): New field
1958 `composites'.
1959
1960 * src/truetype/ttgload.c: Include FT_LIST_H.
1961 (load_truetype_glyph): Add composite subglyph index to a list;
1962 abort if index is already in list.
1963 (tt_loader_init): Updated.
1964 (tt_loader_done): New function.
1965 (TT_Load_Glyph): Call `tt_loader_done'.
1966
19672015-11-04 Werner Lemberg <wl@gnu.org>
1968
Werner Lemberg040edaf2015-11-04 07:35:51 +01001969 [truetype] Better tracing of composite glyphs.
1970
1971 * src/truetype/ttgload.c (TT_Load_Composite_Glyph,
1972 load_truetype_glyph): Implement it.
1973
Werner Lembergaae88082015-11-03 17:30:36 +010019742015-11-03 Werner Lemberg <wl@gnu.org>
1975
1976 [sfnt] Protect against zero-size bitmaps (#46345).
1977
1978 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Check
1979 `glyph_size'.
1980
Nikolaus Waxweilerd682e512015-11-02 09:06:36 +010019812015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
1982
Nikolaus Waxweilerb6fd5bc2015-11-03 10:40:58 +01001983 * src/autofit/afloader.c (af_loader_load_g): Implement emboldening.
1984
19852015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
1986
Nikolaus Waxweilerbf2ba9e2015-11-02 13:12:34 +01001987 [autofit] Implement darkening computation function.
1988
1989 This is a crude adaption of the original `cf2_computeDarkening'
1990 function.
1991
1992 * src/autofit/afloader.c (af_intToFixed, af_fixedToInt,
1993 af_floatToFixed): New macros, taken from `cf2fixed.h'.
1994 (af_loader_compute_darkening): New function.
1995 * src/autofit/afloader.h: Updated.
1996
19972015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
1998
Nikolaus Waxweiler37c401a2015-11-02 09:32:26 +01001999 [autofit] Add functions to get standard widths for writing systems.
2000
2001 We need the computed standard horizontal and vertical widths for the
2002 emboldening calculation. This method provides a convenient way to
2003 extract it from writing-system-specific metrics structures, which
2004 all script definitions must implement.
2005
2006 * src/autofit/aftypes.h (AF_WritingSystem_GetStdWidthsFunc): New
2007 function type.
2008 (AF_WritingSystemClassRec): New member `style_metrics_getstdw'.
2009 (AF_DEFINE_WRITING_SYSTEM_CLASS): Updated.
2010
2011 * src/autofit/afcjk.c (af_cjk_get_standard_width): New function.
2012 (af_cjk_writing_system_class): Updated.
2013 * src/autofit/afdummy.c (af_dummy_writing_system_class): Updated.
2014 * src/autofit/afindic.c (af_cjk_get_standard_width): New function.
2015 (af_indic_writing_system_class): Updated.
2016 * src/autofit/aflatin.c (af_latin_get_standard_width): New function.
2017 (af_indic_writing_system_class): Updated.
2018 * src/autofit/aflatin.c (af_latin_get_standard_width): New function.
2019 (af_indic_writing_system_class): Updated.
2020
20212015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
2022
Nikolaus Waxweilerb2a85ad2015-11-02 09:20:32 +01002023 [autofit] Extend `AF_FaceGlobalsRec' to hold emboldening data.
2024
2025 * src/autofit/afglobal.h (AF_FaceGlobalsRec): Add fields.
2026
2027 * src/autofit/afglobal.c (af_face_globals_new): Initialize new
2028 fields.
2029 (af_face_globals_free): Reset new fields.
2030
20312015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
2032
Nikolaus Waxweilerd682e512015-11-02 09:06:36 +01002033 [autofit] Add stem-darkening properties.
2034
2035 Actual code follows in a later commit.
2036
2037 * include/freetype/ftautoh.h: Document `no-stem-darkening' and
2038 `darkening-parameters'.
2039
2040 * src/autofit/afmodule.h: New fields `no_stem_darkening' and
2041 `darken_params'.
2042
2043 * src/autofit/afmodule.c (af_property_set, af_property_get):
2044 Handle them.
2045 (af_autofitter_init): Initialize them.
2046
Ben Wagnerf0cc1732015-12-14 07:00:41 +010020472015-11-02 Ben Wagner <bungeman@gmail.com>
Werner Lembergbcf618b2015-11-02 06:50:49 +01002048
2049 [ftfuzzer] Add support for multiple files (patch #8779).
2050
2051 Currently, libFuzzer only supports mutation of a single file. We
2052 circumvent this problem by using an uncompressed tar archive as
2053 multiple-file input for the fuzzer.
2054
2055 This patch enables tests of `FT_Attach_Stream' and AFM/PFM parsing;
2056 a constructed tarball should contain a font file as the first
2057 element, and files to be attached as further elements.
2058
2059 * src/tools/ftfuzzer/ftfuzzer.cc: Include libarchive headers.
2060 (archive_read_entry_data, parse_data): New functions.
2061 (LLVMFuzzerTestOneInput): Updated.
2062
2063 * src/tools/ftfuzzer/ftmutator.cc: New file, providing a custom
2064 mutator for libFuzzer that can mutate tarballs in a sensible way.
2065
Werner Lemberg009cc152015-10-31 17:52:56 +010020662015-10-31 Werner Lemberg <wl@gnu.org>
2067
Werner Lemberg57cbb8c2015-10-31 18:47:26 +01002068 [sfnt] Fix cmap 14 validation (#46346).
2069
2070 * src/sfnt/ttcmap.c (tt_cmap14_validate): Check limit before
2071 accessing `numRanges' and `numMappings'.
2072 Fix size check for non-default UVS table.
2073
20742015-10-31 Werner Lemberg <wl@gnu.org>
2075
Werner Lemberg009cc152015-10-31 17:52:56 +01002076 [sfnt] Handle infinite recursion in bitmap strikes (#46344).
2077
2078 * src/sfnt/ttsbit.c (TT_SBitDecoder_LoadFunc,
2079 tt_sbit_decoder_load_bitmap, tt_sbit_decoder_load_byte_aligned,
2080 tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_png): Add
2081 argument for recursion depth.
2082 (tt_sbit_decoder_load_compound): Add argument for recursion depth.
2083 Increase recursion counter for recursive call.
2084 (tt_sbit_decoder_load_image): Add argument for recursion depth.
2085 Check recurse depth.
2086 (tt_face_load_sbit_image): Updated.
2087
Werner Lemberg017db032015-10-29 05:52:09 +010020882015-10-29 Werner Lemberg <wl@gnu.org>
2089
Werner Lemberg02cfd712015-10-29 20:50:57 +01002090 * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor.
2091
20922015-10-29 Werner Lemberg <wl@gnu.org>
2093
Werner Lemberg017db032015-10-29 05:52:09 +01002094 * CMakeLists.txt: Remove code to set MSVC's /FD compiler switch.
2095
2096 Problem reported by David Capello <davidcapello@gmail.com>; see
2097
2098 http://lists.nongnu.org/archive/html/freetype-devel/2015-10/msg00108.html
2099
2100 for details.
2101
Werner Lembergfba29fa2015-10-27 21:04:48 +010021022015-10-27 Werner Lemberg <wl@gnu.org>
2103
2104 [pfr] Add some safety guards (#46302).
2105
2106 * src/pfr/pfrload.h (PFR_CHECK): Rename to...
2107 (PFR_CHECK_SIZE): ... this.
2108 (PFR_SIZE): [!PFR_CONFIG_NO_CHECKS]: Define to PFR_CHECK_SIZE.
2109
Werner Lembergf45c0bf2015-12-06 09:58:18 +01002110 * src/pfr/pfrload.c (pfr_log_font_count): Check `count'.
Werner Lembergfba29fa2015-10-27 21:04:48 +01002111 (pfr_extra_item_load_kerning_pairs): Remove tracing message.
2112 (pfr_phy_font_load): Use PFR_CHECK_SIZE where appropriate.
2113 Allocate `chars' after doing a size checks.
2114
2115 * src/pfr/pfrsbit.c (pfr_load_bitmap_bits): Move test for invalid
2116 bitmap format to...
2117 (pfr_slot_load_bitmap): ... this function.
2118 Check bitmap size.
2119
Werner Lemberg6a19a7d2015-10-26 15:40:22 +010021202015-10-26 Werner Lemberg <wl@gnu.org>
2121
2122 [truetype] Fix sanitizing logic for `loca' (#46223).
2123
2124 * src/truetype/ttpload.c (tt_face_load_loca): A thinko caused an
2125 incorrect adjustment of the number of glyphs, most often using far
2126 too large values.
2127
Werner Lemberg7f00fa62015-10-25 10:59:59 +010021282015-10-25 Werner Lemberg <wl@gnu.org>
2129
2130 [autofit] Improve tracing.
2131
2132 * src/autofit/afhints.c (af_print_idx, af_get_segment_index,
2133 af_get_edge_index): New functions.
2134
2135 (af_glyph_hints_dump_points): Remove unnecessary `|', `[', and `]'.
2136 Add segment and edge index for each point.
2137 Slightly change printing order of some elements.
2138 Don't print `-1' but `--' for missing elements.
2139
2140 (af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Remove
2141 unnecessary `|', `[', and `]'.
2142 Don't print `-1' but `--' for missing elements.
2143
Werner Lemberg6f090112015-10-24 10:10:22 +020021442015-10-24 Werner Lemberg <wl@gnu.org>
2145
2146 [sfnt] Sanitize bitmap strike glyph height.
2147
2148 Problem reported by Nikolay Sivov <bunglehead@gmail.com>.
2149
2150 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Avoid zero value
2151 for `metrics->height' by applying some heuristics.
2152
Werner Lemberge93d3262015-10-22 10:17:20 +020021532015-10-22 Werner Lemberg <wl@gnu.org>
2154
2155 [sfnt, type42] Fix clang compiler warnings.
2156
2157 * src/sfnt/sfobjs.c (sfnt_init_face): Initialize `offset'.
2158
2159 * src/type42/t42parse.c (t42_parse_sfnts): Use proper cast.
2160
Werner Lembergf1c93432015-10-22 10:11:23 +020021612015-10-22 Dave Arnold <darnold@adobe.com>
2162 Werner Lemberg <wl@gnu.org>
2163
2164 [cff] Avoid overflow/module arithmetic.
2165
2166 This modifies the addition of subroutine number to subroutine bias
2167 from unsigned to signed, but does not change any results.
2168
2169 * src/cff/cf2ft.c (cf2_initGlobalRegionBuffer,
2170 cf2_initLocalRegionBuffer): Change variable names from (unsigned)
2171 `idx' to (signed) `subrNum', since it is not an index until after
2172 the bias is added.
2173 * src/cff/cf2ft.h: Updated.
2174
2175 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLSUBR>:
2176 Updated similarly.
2177
Werner Lemberg59ae73f2015-10-22 09:26:00 +020021782015-10-22 Werner Lemberg <wl@gnu.org>
2179
2180 [cid] Better check of `SubrCount' dictionary entry (#46272).
2181
2182 * src/cid/cidload.c (cid_face_open): Add more sanity tests for
2183 `fd_bytes', `gd_bytes', `sd_bytes', and `num_subrs'.
2184
Werner Lemberg87fefc52015-10-21 20:29:12 +020021852015-10-21 Werner Lemberg <wl@gnu.org>
2186
Werner Lemberge484d362015-10-21 20:48:27 +02002187 [base] Pacify compiler (#46266).
2188
2189 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Initialize `in' and
2190 `anchor'.
2191
21922015-10-21 Werner Lemberg <wl@gnu.org>
2193
Werner Lemberg87fefc52015-10-21 20:29:12 +02002194 [type42] Fix heap buffer overflow (#46269).
2195
2196 * src/type42/t42parse.c (t42_parse_sfnts): Fix off-by-one error in
2197 bounds checking.
2198
Dave Arnold748e3682015-10-21 13:58:43 +020021992015-10-21 Dave Arnold <darnold@adobe.com>
2200
Dave Arnold3cfd5122015-10-21 14:07:25 +02002201 [cff] Fix limit in assert for max hints.
2202
2203 * src/cff/cf2interp.c (cf2_hintmask_setAll): Allow mask equal to the
2204 limit (96 bits).
2205
22062015-10-21 Dave Arnold <darnold@adobe.com>
2207
Dave Arnold748e3682015-10-21 13:58:43 +02002208 [cff] Remove an assert (#46107).
2209
2210 * src/cff/cf2hints.c (cf2_hintmap_insertHint): Ignore paired edges
2211 in wrong order.
2212
Werner Lemberg649ca552015-10-21 07:01:45 +020022132015-10-21 Werner Lemberg <wl@gnu.org>
2214
Werner Lemberge6593382015-10-21 08:04:29 +02002215 [sfnt] Avoid unnecessarily large allocation for WOFFs (#46257).
2216
2217 * src/sfnt/sfobjs.c (woff_open_font): Use WOFF's `totalSfntSize'
2218 only after thorough checks.
2219 Add tracing messages.
2220
22212015-10-21 Werner Lemberg <wl@gnu.org>
2222
Werner Lemberg649ca552015-10-21 07:01:45 +02002223 [type42] Better check invalid `sfnts' array data (#46255).
2224
2225 * src/type42/t42parse.c (t42_parse_sfnts): Table lengths must be
2226 checked individually against available data size.
2227
Werner Lembergd47d3722015-10-20 12:24:36 +020022282015-10-20 Werner Lemberg <wl@gnu.org>
2229
Werner Lemberg3eccc3a2015-10-20 22:31:57 +02002230 [cid] Add a bunch of safety checks.
2231
2232 * src/cid/cidload.c (parse_fd_array): Check `num_dicts' against
2233 stream size.
2234 (cid_read_subrs): Check largest offset against stream size.
2235 (cid_parse_dict): Move safety check to ...
2236 (cid_face_open): ... this function.
2237 Also test length of binary data and values of `SDBytes',
2238 `SubrMapOffset', `SubrCount', `CIDMapOffset', and `CIDCount'.
2239
22402015-10-20 Werner Lemberg <wl@gnu.org>
2241
Werner Lembergd47d3722015-10-20 12:24:36 +02002242 [cid] Avoid segfault with malformed input (#46250).
2243
2244 * src/cid/cidload.c (cid_read_subrs): Return a proper error code for
2245 unsorted offsets.
2246
StudioEtrange5cf83a52015-10-20 07:19:44 +020022472015-10-20 StudioEtrange <nomorgan@gmail.com>
2248
2249 * CMakeLists.txt: Enable shared library builds on MinGW (#46233).
2250
Werner Lemberg3c582062015-10-20 06:57:28 +020022512015-10-20 Werner Lemberg <wl@gnu.org>
2252
2253 * src/type1/t1afm.c (T1_Read_Metrics): Fix memory leak (#46229).
2254
Ben Wagnerf0cc1732015-12-14 07:00:41 +010022552015-10-19 Ben Wagner <bungeman@gmail.com>
Bungemanba8a5282015-10-19 23:27:06 +02002256
2257 [cid] Better handle invalid glyph stream offsets (#46221).
2258
2259 * src/cid/cidgload.c (cid_load_glyph): Check minimum size of glyph
2260 length.
2261
Werner Lembergdcfc4d92015-10-18 16:47:06 +020022622015-10-18 Werner Lemberg <wl@gnu.org>
2263
Werner Lemberg24cee3a2015-10-19 23:00:28 +02002264 [psaux] Fix tracing of negative numbers.
2265
2266 Due to incorrect casting negative numbers were shown as very large
2267 (positive) integers on 64bit systems.
2268
2269 * src/psaux/t1decode.c (t1_decoder_parse_charstrings) <op_none>:
2270 Use division instead of shift.
2271
22722015-10-18 Werner Lemberg <wl@gnu.org>
2273
Werner Lemberg14213b52015-10-18 18:15:04 +02002274 [truetype] Improve TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46223).
2275
2276 * devel/ftoption.h, include/freetype/config/ftoption.h: Surround it
2277 with #ifndef ... #endif, as suggested in the tracker issue.
2278
22792015-10-18 Werner Lemberg <wl@gnu.org>
2280
Werner Lembergdcfc4d92015-10-18 16:47:06 +02002281 [truetype] Better protection against malformed `fpgm' (#46223).
2282
2283 * src/truetype/ttobjs.c (tt_size_init_bytecode): Don't execute a
2284 malformed `fpgm' table more than once.
2285
Werner Lemberg8edfcbe2015-10-17 08:11:16 +020022862015-10-17 Werner Lemberg <wl@gnu.org>
2287
Werner Lemberg7643b582015-10-17 15:51:29 +02002288 * src/cid/cidgload.c (cid_load_glyph): Fix memory leak.
2289
2290 Reported by Kostya Serebryany <kcc@google.com>.
2291
22922015-10-17 Werner Lemberg <wl@gnu.org>
2293
Werner Lembergb1857472015-10-17 14:21:41 +02002294 [bdf] Prevent memory leak (#46217).
2295
2296 * src/bdf/bdflib.c (_bdf_parse_glyphs) <STARTCHAR>: Check
2297 _BDF_GLYPH_BITS.
2298
22992015-10-17 Werner Lemberg <wl@gnu.org>
2300
Werner Lemberge1ca18d2015-10-17 11:51:27 +02002301 [bdf] Use stream size to adjust number of glyphs.
2302
2303 * src/bdf/bdflib.c (ACMSG17): New message macro.
2304 (_bdf_parse_t): Add member `size'.
2305 (bdf_load_font): Set `size'.
2306 (_bdf_parse_glyphs): Adjust `cnt' if necessary.
2307
23082015-10-17 Werner Lemberg <wl@gnu.org>
2309
Werner Lemberg0af21dc2015-10-17 09:29:52 +02002310 * src/cid/cidload.c (cid_parse_dict): Check `[FG]DBytes' size.
2311
23122015-10-17 Werner Lemberg <wl@gnu.org>
2313
Werner Lemberg0ba98da2015-10-17 09:11:02 +02002314 * src/cid/cidgload.c (cid_glyph_load): Check file offsets (#46222).
2315
23162015-10-17 Werner Lemberg <wl@gnu.org>
2317
Werner Lemberg8edfcbe2015-10-17 08:11:16 +02002318 [psaux] Fix heap buffer overflow (#46221).
2319
2320 * src/psaux/t1decode.c (t1_decoder_parse_charstring) <operator 12>:
2321 Fix limit check.
2322
23232015-10-17 Werner Lemberg <wl@gnu.org>
Werner Lemberga5ecfb42015-10-17 06:15:55 +02002324
2325 * src/cid/cidload.c (cid_parse_dict): Handle invalid input (#46220).
2326
23272015-10-15 Kostya Serebryany <kcc@google.com>
Kostya Serebryany266976b2015-10-15 22:15:53 -07002328
2329 [ftfuzzer] Add README.
2330
2331 * src/tools/ftfuzzer/README: New file.
2332
Ben Wagnerf0cc1732015-12-14 07:00:41 +010023332015-10-15 Ben Wagner <bungeman@gmail.com>
Bungeman65d89802015-10-15 23:50:16 +02002334
2335 [bdf] Fix memory leak (#46213).
2336
2337 * src/bdf/bdflib.c (bdf_load_font): Always go to label `Fail' in
2338 case of error.
2339
Werner Lemberg837ad9d2015-10-15 21:15:45 +020023402015-10-15 Werner Lemberg <wl@gnu.org>
2341
Werner Lemberg24a1fcd2015-10-15 21:50:15 +02002342 [truetype] Add TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46208).
2343
2344 * devel/ftoption.h, include/freetype/config/ftoption.h
2345 (TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES): New configuration macro.
2346
2347 * src/truetype/ttinterp.c (MAX_RUNNABLE_OPCODES): Removed.
2348 (TT_RunIns): Updated.
2349
23502015-10-15 Werner Lemberg <wl@gnu.org>
2351
Werner Lemberg837ad9d2015-10-15 21:15:45 +02002352 * src/truetype/ttinterp.c (TT_RunIns): Fix bytecode stack tracing.
2353
2354 The used indices were off by 1.
2355
Ben Wagnerf0cc1732015-12-14 07:00:41 +010023562015-10-15 Ben Wagner <bungeman@gmail.com>
Werner Lemberg8b76eaf2015-10-15 18:28:43 +02002357 Werner Lemberg <wl@gnu.org>
2358
2359 * src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211).
2360
Werner Lemberge03214e2015-10-15 16:58:13 +020023612015-10-15 Werner Lemberg <wl@gnu.org>
2362
2363 [base] Compute MD5 checksums only if explicitly requested.
2364
2365 This improves profiling accuracy.
2366
2367 * src/base/ftobjs.c (FT_Render_Glyph_Internal): Implement it.
2368
Werner Lemberg2a20c922015-10-14 15:23:15 +020023692015-10-14 Werner Lemberg <wl@gnu.org>
2370
2371 [base] Use `FT_' namespace for MD5 functions (#42366).
2372
2373 * src/base/ftobjs.c (MD5_*): Define as `FT_MD5_*'.
2374 Undefine HAVE_OPENSSL.
2375
Werner Lembergf96094e2015-10-13 07:13:56 +020023762015-10-13 Werner Lemberg <wl@gnu.org>
2377
Werner Lemberg85399152015-10-13 20:43:19 +02002378 [type1] Correctly handle missing MM axis names (#46202).
2379
2380 * src/type1/t1load.c (T1_Get_MM_Var): Implement it.
2381
23822015-10-13 Werner Lemberg <wl@gnu.org>
2383
Werner Lemberg58b61b62015-10-13 18:26:18 +02002384 [pcf] Quickly exit if font index < 0.
2385
2386 Similar to other font formats, this commit makes the parser no
2387 longer check the whole PCF file but only the header and the TOC if
2388 we just want to get the number of available faces (and a proper
2389 recognition of the font format).
2390
2391 * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
2392 Exit quickly if face_index < 0.
2393
2394 * src/pcfread.c (pcf_load_font): Add `face_index' argument.
2395 Exit quickly if face_index < 0.
2396
2397 * src/pcf/pcf.h: Updated.
2398
23992015-10-13 Werner Lemberg <wl@gnu.org>
2400
Werner Lembergbdb56bb2015-10-13 11:51:13 +02002401 [ftfuzzer] Handle TTCs and MM/GX variations.
2402
2403 This patch also contains various other improvements.
2404
2405 * src/tools/ftfuzzer/ftfuzzer.cc: Add preprocessor guard to reject
2406 pre-C++11 compilers.
2407 (FT_Global): New class. Use it to provide a global constructor and
2408 destructor for the `FT_Library' object.
2409 (setIntermediateAxis): New function to select an (arbitrary)
2410 instance.
2411 (LLVMFuzzerTestOneInput): Loop over all faces and named instances.
2412 Also call `FT_Set_Char_Size'.
2413
24142015-10-13 Werner Lemberg <wl@gnu.org>
2415
Werner Lemberg43a96eb2015-10-13 11:18:55 +02002416 [truetype] Refine some GX sanity tests.
2417
2418 Use the `gvar' table size instead of the remaining bytes in the
2419 stream.
2420
2421 * src/truetype/ttgxvar.h (GX_BlendRec): New field `gvar_size'.
2422
2423 * src/truetype/ttgxvar.c (ft_var_load_gvar): Set `gvar_size'.
2424 (ft_var_readpackedpoints, ft_var_readpackeddeltas: New argument
2425 `size'.
2426 (tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Updated.
2427
24282015-10-13 Werner Lemberg <wl@gnu.org>
2429
Werner Lemberg052f6c52015-10-13 08:24:32 +02002430 [truetype] Another GX sanity test.
2431
2432 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Check
2433 `tupleCount'.
2434 Add tracing message.
2435
24362015-10-13 Werner Lemberg <wl@gnu.org>
2437
Werner Lemberg7ef0d862015-10-13 08:14:20 +02002438 [truetype] Fix memory leak for broken GX fonts (#46188).
2439
2440 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix scope of
2441 deallocation.
2442
24432015-10-13 Werner Lemberg <wl@gnu.org>
2444
Werner Lembergf96094e2015-10-13 07:13:56 +02002445 [truetype] Fix commit from 2015-10-10.
2446
2447 * src/truetype/ttgxvar.c (ft_var_load_gvar): Add missing error
2448 handling body to condition.
2449
Werner Lembergb9880aa2015-10-12 10:13:26 +020024502015-10-12 Werner Lemberg <wl@gnu.org>
2451
2452 [unix] Make MKDIR_P actually work.
2453
2454 * builds/unix/configure.raw: Fix underquoting of `INSTALL' and
2455 `MKDIR_P'.
2456
2457 Problem reported by Dan Liddell <lddll@yahoo.com>.
2458
Werner Lemberg4f7f6f62015-10-11 07:55:25 +020024592015-10-11 Werner Lemberg <wl@gnu.org>
2460
2461 [sfnt] Improve extraction of number of named instances.
2462
2463 * src/sfnt/sfobjs.c (sfnt_init_face)
2464 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check number of instances against
2465 `fvar' table size.
2466
Alexei Podtelezhnikovc14ae9c2015-10-10 22:28:26 -040024672015-10-10 Alexei Podtelezhnikov <apodtele@gmail.com>
2468
2469 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix overflow
2470 (#46149).
2471
Werner Lembergd353f6e2015-10-10 06:54:46 +020024722015-10-10 Werner Lemberg <wl@gnu.org>
2473
Werner Lemberg8de39a72015-10-10 13:34:11 +02002474 [sfnt] Fix infinite loops with broken cmaps (#46167).
2475
2476 * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next): Take care
Werner Lemberga724dcf2015-10-11 05:50:07 +02002477 of border conditions (i.e., if the loops exit naturally).
Werner Lemberg8de39a72015-10-10 13:34:11 +02002478
24792015-10-10 Werner Lemberg <wl@gnu.org>
2480
Werner Lembergda346732015-10-10 10:21:27 +02002481 [truetype] More sanity tests for GX handling.
2482
2483 These tests should mainly help avoid unnecessarily large memory
2484 allocations in case of malformed fonts.
2485
2486 * src/truetype/ttgxvar.c (ft_var_readpackedpoints,
2487 ft_var_readpackeddeltas): Check number of points against stream
2488 size.
2489 (ft_var_load_avar): Check `pairCount' against table length.
2490 (ft_var_load_gvar): Check `globalCoordCount' and `glyphCount'
2491 against table length.
2492 (tt_face_vary_cvt): Check `tupleCount' and `offsetToData'.
2493 Fix trace.
2494 (TT_Vary_Apply_Glyph_Deltas): Fix trace.
2495 Free `sharedpoints' to avoid memory leak.
2496
24972015-10-10 Werner Lemberg <wl@gnu.org>
2498
Werner Lembergc220d8b2015-10-10 08:13:04 +02002499 [truetype] Better protection against malformed GX data (#46166).
2500
2501 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Correctly
2502 handle empty `localpoints' array.
2503
25042015-10-10 Werner Lemberg <wl@gnu.org>
2505
Werner Lembergd353f6e2015-10-10 06:54:46 +02002506 * src/pcf/pcfread.c (pcf_read_TOC): Check stream size (#46162).
2507
Werner Lembergc12956e2015-10-09 09:38:32 +020025082015-10-09 Werner Lemberg <wl@gnu.org>
2509
2510 * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use real stream size.
2511
Werner Lemberg12112242015-10-08 08:55:15 +020025122015-10-08 Werner Lemberg <wl@gnu.org>
2513
Werner Lembergd98053c2015-10-08 23:17:41 +02002514 [pcf] Protect against invalid number of TOC entries (#46159).
2515
2516 * src/pcf/pcfread.c (pcf_read_TOC): Check number of TOC entries
2517 against size of data stream.
2518
25192015-10-08 Werner Lemberg <wl@gnu.org>
2520
Werner Lemberg06c2d332015-10-08 21:31:57 +02002521 [type42] Protect against invalid number of glyphs (#46159).
2522
2523 * src/type42/t42parse.c (t42_parse_charstrings): Check number of
2524 `CharStrings' dictionary entries against size of data stream.
2525
25262015-10-08 Werner Lemberg <wl@gnu.org>
2527
Werner Lemberg983b00e2015-10-08 18:44:45 +02002528 [sfnt] Fix some signed overflows (#46149).
2529
2530 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
2531 <TT_SBIT_TABLE_TYPE_SBIX>: Use `FT_MulDiv'.
2532
25332015-10-08 Werner Lemberg <wl@gnu.org>
2534
Werner Lemberg12112242015-10-08 08:55:15 +02002535 [type1] Protect against invalid number of subroutines (#46150).
2536
2537 * src/type1/t1load.c (parse_subrs): Check number of
2538 `Subrs' dictionary entries against size of data stream.
2539
Kostya Serebryanydde84f22015-10-07 22:18:22 +020025402015-10-07 Kostya Serebryany <kcc@google.com>
2541
2542 [ftfuzzer] Add support for LLVM's LibFuzzer.
2543
2544 * src/tools/ftfuzzer/ftfuzzer.cc, src/tools/runinput.cc: New files.
2545
Alexei Podtelezhnikovc14ae9c2015-10-10 22:28:26 -040025462015-10-06 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov6eb61582015-10-06 22:39:54 -04002547
2548 [smooth] Faster alternative line renderer.
2549
2550 This implementation renders the entire line segment at once without
2551 subdividing it into scanlines. The main speed improvement comes from
2552 reducing the number of divisions to just two per line segment, which
2553 is a bare minimum to calculate cell coverage in a smooth rasterizer.
2554 Notably, the progression from cell to cell does not itself require any
2555 divisions at all. The speed improvement is more noticeable at larger
2556 sizes.
2557
2558 * src/smooth/ftgrays.c (gray_render_line): New implementation.
2559
Werner Lemberg066a4912015-10-06 07:55:32 +020025602015-10-06 Werner Lemberg <wl@gnu.org>
2561
2562 [cff] Return correct PS names from pure CFF (#46130).
2563
2564 * src/cff/cffdrivr.c (cff_get_ps_name): Use SFNT service only for
2565 SFNT.
2566
Werner Lemberg8cabd912015-10-04 08:18:01 +020025672015-10-04 Werner Lemberg <wl@gnu.org>
2568
Werner Lemberg30fe5e72015-10-04 13:08:08 +02002569 [base] Replace left shifts with multiplication (#46118).
2570
2571 * src/base/ftglyph.c (ft_bitmap_glyph_bbox, FT_Get_Glyph): Do it.
2572
25732015-10-04 Werner Lemberg <wl@gnu.org>
2574
Werner Lemberg8cabd912015-10-04 08:18:01 +02002575 * Version 2.6.1 released.
2576 =========================
2577
2578
2579 Tag sources with `VER-2-6-1'.
2580
2581 * docs/VERSION.DLL: Update documentation and bump version number to
2582 2.6.1.
2583
2584 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
2585 builds/windows/vc2005/index.html,
2586 builds/windows/vc2008/freetype.vcproj,
2587 builds/windows/vc2008/index.html,
2588 builds/windows/vc2010/freetype.vcxproj,
2589 builds/windows/vc2010/index.html,
2590 builds/windows/visualc/freetype.dsp,
2591 builds/windows/visualc/freetype.vcproj,
2592 builds/windows/visualc/index.html,
2593 builds/windows/visualce/freetype.dsp,
2594 builds/windows/visualce/freetype.vcproj,
2595 builds/windows/visualce/index.html,
2596 builds/wince/vc2005-ce/freetype.vcproj,
2597 builds/wince/vc2005-ce/index.html,
2598 builds/wince/vc2008-ce/freetype.vcproj,
2599 builds/wince/vc2008-ce/index.html: s/2.6/2.6.1/, s/26/261/.
2600
2601 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
2602
2603 * builds/unix/configure.raw (version_info): Set to 18:1:12.
2604 * CMakeLists.txt (VERSION_PATCH): Set to 1.
2605
2606 * src/autofit/afmodule.c [AF_DEBUG_AUTOFIT]: Ensure C linking for
2607 dumping functions.
2608
26092015-10-04 Werner Lemberg <wl@gnu.org>
Werner Lemberg53838ce2015-10-03 21:12:25 +02002610
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04002611 [bzip2, gzip] Avoid access of uninitialized memory (#46109).
Werner Lemberg53838ce2015-10-03 21:12:25 +02002612
Werner Lembergb260dc92015-10-04 07:39:22 +02002613 * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_input), src/gzip/ftgzip.c
2614 (ft_gzip_file_fill_input): In case of an error, adjust the limit to
2615 avoid copying uninitialized memory.
2616
26172015-10-03 Werner Lemberg <wl@gnu.org>
2618
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04002619 [bzip2, gzip] Avoid access of uninitialized memory (#46109).
Werner Lembergb260dc92015-10-04 07:39:22 +02002620
Werner Lemberg53838ce2015-10-03 21:12:25 +02002621 * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_output), src/gzip/ftgzip.c
2622 (ft_gzip_file_fill_output): In case of an error, adjust the limit to
2623 avoid copying uninitialized memory.
2624
Alexei Podtelezhnikove2dae8f2015-10-01 22:03:34 -040026252015-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
2626
2627 [smooth] Clean up worker.
2628
2629 * src/smooth/ftgrays.c (gray_TWorker): Remove never used fields.
2630
Werner Lemberg5f8f44d2015-10-01 14:16:03 +020026312015-10-01 Werner Lemberg <wl@gnu.org>
2632
Werner Lemberg90e437e2015-10-01 20:00:27 +02002633 [sfnt] Make `tt_cmap4_char_map_linear' more robust (#46078).
2634
2635 * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Take care of
2636 border conditions (i.e., if the loop exits naturally).
2637
26382015-10-01 Werner Lemberg <wl@gnu.org>
2639
Werner Lembergfab67b82015-10-01 16:47:05 +02002640 * src/autofit/afranges.c (af_deva_nonbase_uniranges): Fix ranges.
2641 They should be a subset of `af_deva_uniranges'.
2642
26432015-10-01 Werner Lemberg <wl@gnu.org>
2644
Werner Lemberg5f8f44d2015-10-01 14:16:03 +02002645 [sfnt] Make `tt_cmap4_char_map_linear' faster (#46078).
2646
2647 * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Use inner loop to
2648 reject too large glyph indices.
2649
Alexei Podtelezhnikov8bbcfb22015-09-30 23:08:53 -040026502015-09-30 Alexei Podtelezhnikov <apodtele@gmail.com>
2651
2652 [smooth] Clean up worker.
2653
2654 * src/smooth/ftgrays.c (gray_TWorker): Remove lightly used `last_ey'.
2655 (gray_start_cell, gray_render_line): Update.
2656
Werner Lemberg8651f372015-09-30 10:26:10 +020026572015-09-30 Werner Lemberg <wl@gnu.org>
2658
Werner Lembergdbd04262015-09-30 17:52:42 +02002659 [autofit] Replace `no-base' with `non-base'.
2660
2661 * src/autofit/*: Do it.
2662
26632015-09-30 Werner Lemberg <wl@gnu.org>
2664
Werner Lemberg2ff83a52015-09-30 14:44:29 +02002665 [sfnt] Rewrite `tt_cmap4_char_map_linear' (#46078).
2666
2667 * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Add code to better
2668 skip invalid segments.
2669 If searching the next character, provide a more efficient logic to
2670 speed up the code.
2671
26722015-09-30 Werner Lemberg <wl@gnu.org>
2673
Werner Lemberg8651f372015-09-30 10:26:10 +02002674 [truetype] Adjust number of glyphs for malformed `loca' tables.
2675
2676 * src/truetype/ttpload.c (tt_face_load_loca): Implement it.
2677
Werner Lemberg483007f2015-09-29 11:22:15 +020026782015-09-29 Werner Lemberg <wl@gnu.org>
2679
2680 [pshinter] Avoid harmless overflow (#45984).
2681
2682 * src/pshinter/pshglob.c (psh_blues_set_zones): Fix it.
2683
Werner Lemberga3046562015-09-28 09:45:56 +020026842015-09-28 Werner Lemberg <wl@gnu.org>
2685
2686 [autofit] Add support for Lao script.
2687
2688 Thanks to Danh Hong <danhhong@gmail.com> for guidance with blue zone
2689 characters!
2690
2691 * src/autofit/afblue.dat: Add blue zone data for Lao.
2692
2693 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
2694
2695 * src/autofit/afscript.h: Add Lao standard characters.
2696
2697 * src/autofit/afranges.c: Add Lao data.
2698
2699 * src/autofit/afstyles.h: Add Lao data.
2700
suzuki toshiya8a05d252015-09-28 01:40:21 +090027012015-09-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
Werner Lembergf45c0bf2015-12-06 09:58:18 +01002702
suzuki toshiyafb5268c2015-09-28 02:01:43 +09002703 [base] Fix a leak by broken sfnt-PS or resource fork (#46028).
2704
2705 open_face_from_buffer() frees passed buffer if valid font
2706 is not found. But if copying to the buffer is failed,
2707 the allocated buffer should be freed within the caller.
2708
2709 * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Free
2710 the buffer `sfnt_ps' if an error caused before calling
2711 open_face_from_buffer().
2712 (Mac_Read_sfnt_Resource): Free the buffer `sfnt_data' if
2713 an error caused before calling open_face_from_buffer();
2714
27152015-09-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya8a05d252015-09-28 01:40:21 +09002716
2717 [mac] Fix buffer size calculation for LWFN font.
2718
2719 * src/base/ftmac.c (read_lwfn): Cast post_size to FT_ULong
2720 to prevent confused copy by too large chunk size.
2721
Alexei Podtelezhnikov3dffe8e2015-09-27 11:30:17 -040027222015-09-26 Alexei Podtelezhnikov <apodtele@gmail.com>
2723
2724 * src/smooth/ftgrays.c (PIXEL_MASK): Remove unused macro.
2725
Werner Lemberg41877532015-09-26 15:19:54 +020027262015-09-26 Werner Lemberg <wl@gnu.org>
2727
Werner Lemberg19188a92015-09-26 16:57:17 +02002728 [autofit] Minor tracing improvement.
2729
2730 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Don't emit
2731 blue zones header line if there are no blue zones.
2732
27332015-09-26 Werner Lemberg <wl@gnu.org>
2734
Werner Lemberg41877532015-09-26 15:19:54 +02002735 [bzip2, gzip, lzw] Harmonize function signatures with prototype.
2736
2737 Suggested by Hin-Tak Leung.
2738
2739 * src/bzip2/ftbzip2.c (ft_bzip2_stream_io), src/gzip/ftgzip.c
2740 (ft_gzip_stream_io), src/lzw/ftlzw.c (ft_lzw_stream_io): Do it.
2741
Hin-Tak Leung265ade82015-09-26 14:51:30 +020027422015-09-26 Hin-Tak Leung <htl10@users.sourceforge.net>
2743
2744 Add new FT_LOAD_COMPUTE_METRICS load flag.
2745
2746 * include/freetype/freetype.h (FT_LOAD_COMPUTE_METRICS): New macro.
2747 * src/truetype/ttgload.c (compute_glyph_metrics): Usage.
2748
Werner Lembergd57f2272015-09-26 08:44:26 +020027492015-09-26 Werner Lemberg <wl@gnu.org>
2750
2751 * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add cast.
2752
Werner Lemberg2439c512015-09-25 16:54:28 +020027532015-09-25 Werner Lemberg <wl@gnu.org>
2754
2755 [type1] Protect against invalid number of glyphs (#46029).
2756
2757 * src/type1/t1load.c (parse_charstrings): Check number of
2758 `CharStrings' dictionary entries against size of data stream.
2759
Werner Lembergc409eb12015-09-24 12:39:38 +020027602015-09-23 Werner Lemberg <wl@gnu.org>
2761
Werner Lemberg5339c752015-09-24 13:39:44 +02002762 [sfnt] Better checks for invalid cmaps (2/2) (#46019).
2763
2764 While the current code in `FT_Get_Next_Char' correctly rejects
2765 out-of-bounds glyph indices, it can be extremely slow for malformed
2766 cmaps that use 32bit values. This commit tries to improve that.
2767
2768 * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next,
2769 tt_cmap12_char_map_binary, tt_cmap13_next,
2770 tt_cmap13_char_map_binary): Reject glyph indices larger than or
2771 equal to the number of glyphs.
2772
27732015-09-23 Werner Lemberg <wl@gnu.org>
2774
Werner Lembergc409eb12015-09-24 12:39:38 +02002775 [base, sfnt] Better checks for invalid cmaps (1/2).
2776
2777 * src/base/ftobjs.c (FT_Get_Char_Index): Don't return out-of-bounds
2778 glyph indices.
2779 (FT_Get_First_Char): Updated.
2780
2781 * src/sfnt/ttcmap.c (tt_cmap6_char_next): Don't return character
2782 codes greater than 0xFFFF.
2783
2784 (tt_cmap8_char_index): Avoid integer overflow in computation of
2785 glyph index.
2786 (tt_cmap8_char_next): Avoid integer overflows in computation of
2787 both next character code and glyph index.
2788
2789 (tt_cmap10_char_index): Fix unsigned integer logic.
2790 (tt_cmap10_char_next): Avoid integer overflow in computation of
2791 next character code.
2792
2793 (tt_cmap12_next): Avoid integer overflows in computation of both
2794 next character code and glyph index.
2795 (tt_cmap12_char_map_binary): Ditto.
2796 (tt_cmap12_char_next): Simplify.
2797
2798 (tt_cmap13_char_map_binary): Avoid integer overflow in computation
2799 of next character code.
2800 (tt_cmap13_char_next): Simplify.
2801
suzuki toshiyae982f5b2015-09-21 23:07:22 +090028022015-09-21 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2803
Werner Lembergd7f456e2015-09-26 08:37:14 +02002804 [base] Check too long POST and sfnt resource (#45919).
suzuki toshiyae982f5b2015-09-21 23:07:22 +09002805
Werner Lembergd7f456e2015-09-26 08:37:14 +02002806 * src/base/ftbase.h (FT_MAC_RFORK_MAX_LEN): Maximum length of the
2807 resource fork for Mac OS. Resource forks larger than 16 MB can be
2808 written but can't be handled correctly, at least in Carbon routine.
2809 See https://support.microsoft.com/en-us/kb/130437.
suzuki toshiyae982f5b2015-09-21 23:07:22 +09002810
Werner Lembergd7f456e2015-09-26 08:37:14 +02002811 * src/base/ftobjs.c (Mac_Read_POST_Resource): No need to use `0x'
2812 prefix for `%p' formatter.
suzuki toshiyae982f5b2015-09-21 23:07:22 +09002813
Werner Lembergd7f456e2015-09-26 08:37:14 +02002814 * src/base/ftbase.c (Mac_Read_POST_Resource): Check the fragment and
2815 total size of the concatenated POST resource before buffer
2816 allocation.
2817 (Mac_Read_sfnt_Resource): Check the declared size of sfnt resource
suzuki toshiyae982f5b2015-09-21 23:07:22 +09002818 before buffer allocation.
suzuki toshiyae982f5b2015-09-21 23:07:22 +09002819
Werner Lembergd7f456e2015-09-26 08:37:14 +02002820 * src/base/ftmac.c (read_lwfn, FT_New_Face_From_SFNT): Check the
2821 total resource size before buffer allocation.
suzuki toshiyae982f5b2015-09-21 23:07:22 +09002822
Werner Lembergcb7a5122015-09-19 07:58:03 +020028232015-09-19 Werner Lemberg <wl@gnu.org>
2824
Werner Lemberg730b6d72015-09-19 12:41:12 +02002825 [sfnt] Improve handling of invalid SFNT table entries (#45987).
2826
2827 This patch fixes weaknesses in function `tt_face_load_font_dir'.
2828
2829 - It incorrectly assumed that valid tables are always at the
2830 beginning. As a consequence, some valid tables after invalid
2831 entries (which are ignored) were never seen.
2832
2833 - Duplicate table entries (this is, having the same tag) were not
2834 rejected.
2835
2836 - The number of valid tables was sometimes too large, leading to
2837 access of invalid tables.
2838
2839 * src/sfnt/ttload.c (check_table_dir): Add argument to return number
2840 of valid tables.
2841 Add another tracing message.
2842 (tt_face_load_font_dir): Only allocate table array for valid
2843 entries as returned by `check_table_dir'.
2844 Reject duplicate tables and adjust number of valid tables
2845 accordingly.
2846
28472015-09-19 Werner Lemberg <wl@gnu.org>
2848
Werner Lembergcb7a5122015-09-19 07:58:03 +02002849 [pcf] Improve `FT_ABS' fix from 2015-09-17 (#45999).
2850
2851 * src/pcf/pcfread.c (pcf_load_font): Do first the cast to FT_Short,
2852 then take the absolute value.
2853 Also apply FT_ABS to `height'.
2854
Werner Lemberg9db9add2015-09-17 13:42:59 +020028552015-09-17 Werner Lemberg <wl@gnu.org>
2856
Werner Lembergf28c95c2015-09-17 19:30:26 +02002857 [type42] Fix memory leak (#45989).
2858
2859 * src/type42/t42parse.c (t42_parse_charstrings): Allow only a single
2860 `CharStrings' array.
2861
28622015-09-17 Werner Lemberg <wl@gnu.org>
2863
Werner Lemberg4942c2b2015-09-17 17:56:53 +02002864 [psaux] Fix memory leak (#45986).
2865
2866 * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
2867 Free `temp' in case of error.
2868
28692015-09-17 Werner Lemberg <wl@gnu.org>
2870
Werner Lemberg7d364b72015-09-17 16:31:58 +02002871 [psaux] Improve tracing message.
2872
2873 * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
2874 Handle plural correctly.
2875
28762015-09-17 Werner Lemberg <wl@gnu.org>
2877
Werner Lembergc838c4f2015-09-17 16:22:40 +02002878 [pcf] Fix integer overflows (#45985).
2879
2880 * src/pcf/pcfread.c (pcf_load_font): Use FT_MulDiv.
2881
28822015-09-17 Werner Lemberg <wl@gnu.org>
2883
Werner Lemberg9db9add2015-09-17 13:42:59 +02002884 [pcf] Use FT_ABS for some property values (#45893).
2885
2886 * src/pcf/pcfread.c (pcf_load_font): Take absolute values for
2887 AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and
2888 RESOLUTION_Y. In tracing mode, add warnings.
2889
Werner Lembergbd0438a2015-09-16 18:05:43 +020028902015-09-16 Werner Lemberg <wl@gnu.org>
2891
2892 Minor fixes for some clang warnings.
2893
2894 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Cast, possible missing
2895 initialization.
2896
2897 * src/truetype/ttgload.c (TT_Process_Composite_Component): Cast.
2898
Werner Lemberg581c7e22015-09-15 06:49:06 +020028992015-09-15 Werner Lemberg <wl@gnu.org>
2900
Werner Lemberg19cb1122015-09-15 08:52:36 +02002901 [type1, type42] Fix memory leaks (#45966).
2902
2903 * src/type1/t1load.c (parse_blend_axis_types): Handle multiple axis
2904 names.
2905 (parse_blend_design_map): Allow only a single design map.
2906 (parse_encoding): Handle multiple encoding vectors.
2907
2908 * src/type42/t42parse.c (t42_parse_encoding): Handle multiple
2909 encoding vectors.
2910
29112015-09-15 Werner Lemberg <wl@gnu.org>
2912
Werner Lemberg7f0f4012015-09-15 07:23:53 +02002913 [truetype] Fix integer type (#45965).
2914
2915 * src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Implement it.
2916
29172015-09-15 Werner Lemberg <wl@gnu.org>
2918
Werner Lemberg577daf12015-09-15 07:10:16 +02002919 * src/pcf/pcfread.c (pcf_load_font): Fix integer overflow (#45964).
2920
29212015-09-15 Werner Lemberg <wl@gnu.org>
2922
Werner Lemberg581c7e22015-09-15 06:49:06 +02002923 [type1, type42] Check encoding array size (#45961).
2924
2925 * src/type1/t1load.c (parse_encoding), src/type42/t42parse.c
2926 (t42_parse_encoding): Do it.
2927
Alexei Podtelezhnikov3ea0d2c2015-09-13 23:19:34 -040029282015-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
2929
2930 * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Improve.
2931
Werner Lemberg7962a152015-09-14 00:38:26 +020029322015-09-14 Werner Lemberg <wl@gnu.org>
2933
2934 [type1] Fix another potential buffer overflow (#45955).
2935
2936 * src/type1/t1parse (T1_Get_Private_Dict): Assure that check for
2937 `eexec' doesn't exceed `limit'.
2938
Werner Lemberge40e8b32015-09-13 08:05:50 +020029392015-09-13 Werner Lemberg <wl@gnu.org>
2940
Werner Lembergff7d6402015-09-13 23:53:16 +02002941 Replace `mkinstalldirs' with AC_PROG_MKDIR_P.
2942
2943 * builds/unix/mkinstalldirs: Removed, no longer needed.
2944
2945 * builds/unix/configure.raw: Call `AC_PROG_MKDIR_P'.
2946 Update pwd call for `$INSTALL'.
2947
2948 * builds/unix/unix-def.in (MKINSTALLDIRS): Use `@MKDIR_P@'.
2949
2950 * autogen.sh: Updated.
2951
29522015-09-13 Werner Lemberg <wl@gnu.org>
2953
Werner Lemberg3df92aa2015-09-13 09:21:52 +02002954 [winfonts] Check alignment shift count for resource data (#45938).
2955
2956 * src/winfonts/winfnt.c (fnt_face_get_dll_font): Implement it.
2957
29582015-09-13 Werner Lemberg <wl@gnu.org>
2959
Werner Lemberge3058612015-09-13 08:41:43 +02002960 [type1] Fix potential buffer overflow (#45923).
2961
2962 * src/type1/t1parse.c (T1_Get_Private_Dict): Assure `cur' doesn't
2963 point to end of file buffer.
2964
29652015-09-13 Werner Lemberg <wl@gnu.org>
2966
Werner Lemberge40e8b32015-09-13 08:05:50 +02002967 [gzip] Fix access of small compressed files (#45937).
2968
2969 * src/gzip/ftgzip.c (ft_gzip_stream_close): Avoid memory leak.
2970
2971 (ft_gzip_get_uncompressed_file): Correct byte order while reading
2972 unsigned long value. Without this change, the whole optimization of
2973 accessing small files in `FT_Stream_OpenGzip' is never executed! As
2974 a consequence, access to PCF files in general (which are normally
2975 small files) should be much improved now as originally intended.
2976
Werner Lemberg23423bc2015-09-11 08:28:27 +020029772015-09-11 Werner Lemberg <wl@gnu.org>
2978
Werner Lembergdb5a4a92015-09-12 08:32:55 +02002979 [psaux] Fix potential buffer overflow (#45922).
2980
2981 * src/psaux/psobjs.c (ps_parser_skip_PS_token): If a token is
2982 enclosed in balanced expressions, ensure that the cursor position
2983 doesn't get larger than the current limit.
2984
29852015-09-11 Werner Lemberg <wl@gnu.org>
2986
Werner Lemberg19b82cf2015-09-11 20:25:32 +02002987 [base] Avoid crash while tracing `load_mac_face'.
2988
2989 Reported in Savannah bug #45919.
2990
2991 * src/base/ftobjs.c (load_mac_face): Honour FT_OPEN_MEMORY while
2992 tracing.
2993
29942015-09-11 Werner Lemberg <wl@gnu.org>
2995
Werner Lemberg23423bc2015-09-11 08:28:27 +02002996 [type42] Fix endless loop (#45920).
2997
2998 * src/type42/t42parse.c (t42_parse_encoding): Synchronize with
2999 type1's `parse_encoding'.
3000
Werner Lemberge5a27a72015-09-10 07:44:11 +020030012015-09-10 Werner Lemberg <wl@gnu.org>
3002
3003 [docmaker] Allow `-' in bold and italic markup.
3004
3005 * src/tools/docmaker/sources.py (re_italic, re_bold): Adjust
3006 accordingly.
3007
Alexei Podtelezhnikov09948e42015-09-09 21:30:15 -040030082015-09-09 Alexei Podtelezhnikov <apodtele@gmail.com>
3009
3010 * src/base/ftcalc.c (FT_RoundFix): Improve.
3011
Wojciech Mamrak822acb02015-09-09 07:59:10 +020030122015-09-09 Wojciech Mamrak <wmamrak@gmail.com>
3013
3014 * src/base/ftcalc.c (FT_CeilFix, FT_FloorFix): Normalize.
3015
3016 This commit makes the functions behave as expected, this is,
3017 rounding towards plus or minus infinity.
3018
Alexei Podtelezhnikovb002f682015-09-07 13:47:36 -040030192015-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
3020
3021 * src/smooth/ftgrays.c (gray_render_line): Simplify clipping.
3022
Alexei Podtelezhnikov5a6dc872015-09-04 23:14:46 -040030232015-09-04 Alexei Podtelezhnikov <apodtele@gmail.com>
3024
3025 [raster,smooth] Microoptimizations.
3026
3027 * src/raster/ftraster.c (Insert_Y_Turn, Finalize_Profile_Table,
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04003028 Bezier_Up, ): Use do-while loops.
Alexei Podtelezhnikov5a6dc872015-09-04 23:14:46 -04003029
3030 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line,
3031 gray_convert_glyph): Ditto.
3032
Werner Lemberg696b7122015-09-04 10:10:59 +020030332015-09-04 Werner Lemberg <wl@gnu.org>
3034
Werner Lembergd3cba0e2015-09-04 10:28:53 +02003035 [autofit] Redesign code ranges (2/2).
3036
3037 This commit adds two fallback scripts (`latb', `latp') and
3038 implements support for the no-base character ranges introduced in
3039 the previous commit.
3040
3041 * src/autofit/aftypes.h (AF_ScriptClassRec): Add
3042 `script_uni_nobase_ranges' field.
3043 (AF_DEFINE_SCRIPT_CLASS): Updated.
3044
3045 * src/autofit/afscript.h, src/autofit/afstyles.h: Add `latb' and
3046 `latp' fallback scripts.
3047
3048 * src/autofit/afblue.dat: Add blue zones for Latin subscript and
3049 superscript fallback scripts.
3050
3051 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3052
3053 * src/autofit/afglobal.h (AF_NOBASE): New style flag for no-base
3054 characters.
3055 (AF_STYLE_MASK): Updated.
3056
3057 * src/autofit/afglobal.c (SCRIPT): Updated.
3058 (af_face_globals_compute_style_coverage): Handle new style flag.
3059
3060 * src/autofit/aflatin.c (af_latin_hints_apply): Handle new style
3061 flag.
3062
3063 * src/autofit/afranges.h (SCRIPT): Use it to export no-base ranges.
3064
30652015-09-04 Werner Lemberg <wl@gnu.org>
3066
Werner Lemberg696b7122015-09-04 10:10:59 +02003067 [autofit] Redesign code ranges (1/2).
3068
3069 This patch introduces auxiliary code ranges that identify no-base
3070 characters; they refer to glyphs of a script that should be hinted
3071 without alignments to blue zones (mostly diacritics).
3072
3073 It also splits off ranges for fallback scripts that handle subscript
3074 and superscript characters not covered by OpenType features. For
3075 example, this greatly helps improve the hinting of various phonetic
3076 alphabets, which contain a large amount characters that look like
3077 superscript glyphs.
3078
3079 Finally, code ranges are updated to Unicode 8.0, and enclosed
3080 characters are removed in general since they normally look better if
3081 they stay unhinted.
3082
3083 * src/autofit/afranges.c (af_latn_uniranges): Updated to Unicode
3084 8.0.
3085 Split off superscript-like and subscript-like glyphs into...
3086
3087 (af_latb_uniranges, af_latp_uniranges): ... these two new arrays.
3088
3089 (af_xxxx_nobase_uniranges): New arrays that hold no-base characters
3090 of the corresponding character ranges.
3091
Werner Lemberg8cbbcf62015-09-03 06:47:30 +020030922015-09-03 Werner Lemberg <wl@gnu.org>
3093
3094 [autofit] Pass glyph index to hinting function.
3095
3096 No functionality change yet.
3097
3098 * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Pass
3099 glyph index.
3100
3101 * src/autofit/afcjk.c, src/autofit/afcjk.h (af_cjk_hints_apply),
3102 src/autofit/afdummy.c (af_dummy_hints_apply), src/autofit/afindic.c
3103 (af_indic_hints_apply), src/autofit/aflatin.c
3104 (af_latin_hints_apply), src/autofit/aflatin2.c
3105 (af_latin2_hints_apply), src/autofit/afloader.c (af_loader_load_g):
3106 Updated.
3107
Werner Lemberg87c81f02015-08-30 10:35:21 +020031082015-08-30 Werner Lemberg <wl@gnu.org>
3109
Werner Lemberg40103a32015-08-31 08:51:52 +02003110 [autofit] Code clean-up.
3111
3112 * src/autofit/afglobal.h (AF_STYLE_MASK): New macro.
3113 (AF_STYLE_UNASSIGNED): Use AF_STYLE_MASK for definition.
3114
3115 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
3116 Updated.
3117
31182015-08-30 Werner Lemberg <wl@gnu.org>
3119
Werner Lemberg87c81f02015-08-30 10:35:21 +02003120 [autofit] Make glyph style array use 16bit values.
3121
3122 * include/freetype/ftautoh.h (FT_Prop_GlyphToScriptMap): Use
3123 `FT_UShort' for `map' field.
3124
3125 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage,
3126 af_face_globals_new), src/autofit/hbshim.c, src/autofit/hbshim.h
3127 (af_get_coverage): Use FT_UShort for `glyph_styles' array.
3128
3129 * src/autofit/afglobal.h (AF_STYLE_UNASSIGNED, AF_DIGIT): Extend to
3130 16 bits.
3131 (AF_FaceGlobalsRec): Use `FT_UShort' for `glyph_styles' field.
3132
Werner Lemberg633d8ed2015-08-26 06:18:47 +020031332015-08-26 Werner Lemberg <wl@gnu.org>
3134
3135 * builds/unix/configure.raw: Need harfbuzz >= 0.9.21 (#45828).
3136
Werner Lemberg78b01402015-08-25 07:23:01 +020031372015-08-25 Werner Lemberg <wl@gnu.org>
3138
3139 [base] Improve kerning tracing and documentation.
3140
3141 * src/base/ftobjs.c (FT_Get_Kerning): Emit tracing message if
3142 scaled-down kerning values differ.
3143
Werner Lemberg91d59162015-08-18 06:04:36 +020031442015-08-18 Werner Lemberg <wl@gnu.org>
3145
3146 [raster] Remove last remnants of `raster5' driver.
3147
3148 * src/raster/ftrend1.h (ft_raster5_renderer_class): Removed.
3149
3150 * src/raster/rastpic.c, src/raster/rastpic.h
3151 (ft_raster5_renderer_class_pic_init,
3152 ft_raster5_renderer_class_pic_free): Removed.
3153
Alexei Podtelezhnikova0172d12015-08-17 22:58:59 -040031542015-08-17 Alexei Podtelezhnikov <apodtele@gmail.com>
3155
3156 [base] Improve emboldener (#45596).
3157
3158 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Correct displacement
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04003159 of zero-length segments.
Alexei Podtelezhnikova0172d12015-08-17 22:58:59 -04003160
Alexei Podtelezhnikov00d89952015-08-16 22:57:34 -040031612015-08-16 Alexei Podtelezhnikov <apodtele@gmail.com>
3162
Alexei Podtelezhnikov815c3242015-08-17 21:48:46 -04003163 [base] Reoptimize arithmetic.
Alexei Podtelezhnikov00d89952015-08-16 22:57:34 -04003164
3165 * src/base/ftcalc.c (FT_MulDiv, FT_MulFix) [!FT_LONG64]: Remove
3166 special cases that slow down the general use.
3167
pazerf0ed30e2015-08-15 06:53:09 +020031682015-08-15 pazer <ibemad@gmail.com>
3169
3170 Fix C++ compilation (#45762).
3171
3172 * src/base/ftstroke.c (ft_outline_glyph_class): Use
3173 FT_CALLBACK_TABLE.
3174
Alexei Podtelezhnikovae258aa2015-08-14 23:23:18 -040031752015-08-14 Alexei Podtelezhnikov <apodtele@gmail.com>
3176
3177 [truetype] Clean up.
3178
3179 * src/truetype/ttgload.c (TT_Process_Composite_Component): Use
3180 `FT_Outline_Transform' and `FT_Outline_Translate'.
3181 (translate_array): Dropped.
3182
Werner Lembergd0d7ee02015-08-14 14:30:58 +020031832015-08-14 Andreas Enge <andreas.enge@inria.fr>
3184
3185 * builds/unix/detect.mk (CONFIG_SHELL): Don't handle it (#44261).
3186
Werner Lemberg14d6b5d2015-08-13 15:22:17 +020031872015-08-13 Werner Lemberg <wl@gnu.org>
3188
3189 [truetype] Introduce named instance access to GX fonts.
3190
3191 For functions querying a face, bits 16-30 of the face index can hold
3192 the named instance index if we have a GX font. The indices start
3193 with value 1; value 0 indicates font access without GX variation
3194 data.
3195
3196 * include/freetype/freetype.h (FT_FaceRec): Update documentation.
3197 * include/freetype/internal/sfnt.h: Ditto.
3198
3199 * src/sfnt/sfobjs.c (sfnt_init_face)
3200 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Get number of named instances and
3201 do argument checks.
3202 (sfnt_load_face): Updated.
3203
3204 * src/truetype/ttobjs.c (tt_face_init)
3205 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Use named instance, overwriting
3206 the style name.
3207
3208 * src/base/ftobjs.c (open_face_from_buffer,
3209 open_face_PS_from_sfnt_stream): Updated.
3210 * src/bdf/bdfdrivr.c (BDF_Face_Init): Updated.
3211 * src/cff/cffload.c (cff_font_load): Updated.
3212
3213 * src/cff/cffobjs.c (cff_face_init): Make function exit early for
3214 pure CFF fonts if `font_index < 0'.
3215 Updated.
3216
3217 * src/cid/cidobjs.c (cid_face_init): Updated.
3218 * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
3219 * src/pfr/pfrobjs.c (pfr_face_init): Updated.
3220 * src/type1/t1objs.c (T1_Face_Init): Updated.
3221 * src/type42/t42objs.c (T42_Face_Init): Updated.
3222 * src/winfonts/winfnt.c (fnt_face_get_dll_font, FNT_Face_Init):
3223 Updated.
3224
3225 * docs/CHANGES: Updated.
3226
Alexei Podtelezhnikov4a466862015-08-12 23:45:40 -040032272015-08-12 Alexei Podtelezhnikov <apodtele@gmail.com>
3228
3229 [type1,cff,cid] Streamline font matrix application.
3230
3231 * src/type1/t1gload.c (T1_Load_Glyph): Directly modify advances only
3232 if font matrix is not trivial.
3233 * src/cff/cffgload.c (cff_slot_load): Ditto.
Alexei Podtelezhnikovf46b2822016-04-11 23:22:57 -04003234 * src/cid/cidgload.c (cid_slot_load_glyph): Ditto for advances and the
Alexei Podtelezhnikov4a466862015-08-12 23:45:40 -04003235 entire outline.
3236
Werner Lemberg7ebe6ac2015-08-11 06:47:25 +020032372015-08-11 Werner Lemberg <wl@gnu.org>
3238
3239 [builds/unix] Minor.
3240
3241 * builds/unix/configure.raw:
3242 s/lib{priv,staticconf}/libs{priv,staticconf}/ for orthogonality with
3243 similarly named uppercase variables.
3244
Alexei Podtelezhnikova37da212015-08-10 23:05:02 -040032452015-08-10 Alexei Podtelezhnikov <apodtele@gmail.com>
3246
3247 [type1,cid,type42] Minor improvements.
3248
3249 * src/type1/t1load.c (t1_parse_font_matrix): Scale units per EM only
3250 when necessary. Refresh comments.
3251 * src/cid/cidload.c (cid_parse_font_matrix): Ditto.
3252 * src/type42/t42parse.c (t42_parse_font_matrix): Refresh comments.
3253
Werner Lemberge5f44692015-08-08 07:45:03 +020032542015-08-08 Werner Lemberg <wl@gnu.org>
3255
Werner Lembergbd75a512015-08-08 08:39:45 +02003256 [type42] Fix glyph access.
3257
3258 This is a severe bug: We've missed one level of indirection, as
3259 described in the Type 42 specification. As a result, ftview
3260 sometimes showed incorrect glyphs for given glyph names, and even
3261 displayed `error 0x0006' (invalid argument!) in case the number of
3262 glyph indices differed between the Type 42 font and the embedded
3263 TTF.
3264
3265 Apparently, noone ever noticed it; this shows how much Type 42 fonts
3266 are in use...
3267
3268 * src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index
3269 to embedded TTF's glyph index.
3270
32712015-08-08 Werner Lemberg <wl@gnu.org>
3272
Werner Lemberge5f44692015-08-08 07:45:03 +02003273 [type42] Minor clean-up.
3274
3275 * src/type42/t42parse.c (t42_parse_font_matrix): Remove unused
3276 variable.
3277
Alexei Podtelezhnikovfd705122015-08-06 21:49:08 -040032782015-08-06 Alexei Podtelezhnikov <apodtele@gmail.com>
3279
3280 [type42] Parse FontMatrix according to specifications.
3281
3282 * src/type42/t42parse.c (t42_parse_font_matrix): Type 42 FontMatrix
3283 does not need scaling by 1000. Units_per_EM are taken from the
3284 embedded TrueType.
3285
Werner Lembergff406e22015-08-06 07:34:50 +020032862015-08-06 Werner Lemberg <wl@gnu.org>
3287
3288 [autofit] Improve Arabic hinting.
3289
3290 Problem reported by Titus Nemeth <tn@tntypography.eu> (by using
3291 ttfautohint).
3292
3293 * src/autofit/afblue.dat: Add neutral blue zone for the tatweel
3294 character.
3295
3296 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3297
Alexei Podtelezhnikov98e8e992015-08-06 00:06:14 -040032982015-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
3299
3300 [truetype] Clean up types.
3301
3302 * src/truetype/ttobjs.c (TT_Size): Move declaration from here.
3303 * include/freetype/internal/tttypes.h (TT_Size): ... to here.
3304 (TT_LoaderRec): Switch to appropriate types for `face' and `size'.
3305 * src/truetype/ttgload.c: Remove corresponding type casts.
3306 * src/truetype/ttsubpix.c: Ditto.
3307
Werner Lemberg15e2a4f2015-08-05 21:53:50 +020033082015-08-05 Werner Lemberg <wl@gnu.org>
3309
3310 [autofit] Improve recognition of flat vs. rounded segments.
3311
3312 Lower the flatness threshold from upem/8 to upem/14, making the
3313 auto-hinter accept shorter elements.
3314
3315 Synchronize flat/round stem selection algorithm with blue zone code.
3316
3317 * src/autofit/aflatin.c (FLAT_THRESHOLD): New macro.
3318 (af_latin_metrics_init_blues): Use it.
3319 (af_latin_hints_compute_segments): Collect information on maximum
3320 and minimum coordinates of `on' points; use this to add a constraint
3321 for the flat/round decision similar to
3322 `af_latin_metrics_init_blues'.
3323
Werner Lembergeb22ef22015-08-04 06:50:04 +020033242015-08-04 Werner Lemberg <wl@gnu.org>
3325
3326 Another left-shift bug (#45681).
3327
3328 * src/base/ftobjs.c (IsMacBinary): Only accept positive values for
3329 `dlen'.
3330
Alexei Podtelezhnikov7e6c3212015-08-03 23:26:13 -040033312015-08-03 Alexei Podtelezhnikov <apodtele@gmail.com>
3332
3333 [base] Fix `ft_corner_orientation'.
3334
3335 Remove casting from `FT_Long' to `FT_Int' that might change the sign
3336 of the return value and make it faster too.
3337
3338 * src/base/ftcalc.c (ft_corner_orientation): On 32-bit systems, stay
3339 with 32-bit arithmetic when safe. Use plain math on 64-bit systems.
3340 * src/pshinter/pshalgo.c: Remove old unused code.
3341
Werner Lembergca6a5cf2015-08-03 08:51:18 +020033422015-08-03 Werner Lemberg <wl@gnu.org>
3343
Werner Lemberg8dfc7602015-08-03 12:23:30 +02003344 * src/truetype/ttgload.c (load_truetype_glyph)
3345 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix crash for composite glyphs
3346 having a depth greater than 1.
3347
33482015-08-03 Werner Lemberg <wl@gnu.org>
3349
Werner Lembergca6a5cf2015-08-03 08:51:18 +02003350 Fix typo in clang bug from 2015-07-31 (#45678).
3351
3352 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Fix inequality.
3353
Werner Lemberg70e9d812015-08-02 09:42:12 +020033542015-08-02 Werner Lemberg <wl@gnu.org>
3355
Werner Lemberga82c45d2015-08-02 18:35:49 +02003356 * CMakeLists.txt: Improve shared library support.
3357
3358 Based on a patch from John Cary <cary@txcorp.com>.
3359
33602015-08-02 Werner Lemberg <wl@gnu.org>
3361
Werner Lemberg682c2712015-08-02 15:46:26 +02003362 * builds/unix/freetype-config.in (enable_shared): Remove. Unused.
3363
33642015-08-02 Werner Lemberg <wl@gnu.org>
3365
Werner Lemberg70e9d812015-08-02 09:42:12 +02003366 Fix more invalid left-shifts.
3367
3368 * src/pfr/pfrgload.c (pfr_glyph_load_compound): Use multiplication,
3369 not left-shift.
3370
3371 * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
3372 tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Use multiplication,
3373 not left-shift.
3374
Werner Lemberg5d1b8ab2015-07-31 21:49:07 +020033752015-07-31 Werner Lemberg <wl@gnu.org>
3376
Werner Lemberg6343ba22015-08-01 07:53:48 +02003377 Fix some bugs found by clang's `-fsanitize=undefined' (#45661).
3378
3379 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Only accept
3380 positive values from header.
3381 Check overflow.
3382
3383 * src/base/ftoutln.c (SCALED): Correctly handle left-shift of
3384 negative values.
3385
3386 * src/bdf/bdf.h (_bdf_glyph_modified, _bdf_set_glyph_modified,
3387 _bdf_clear_glyph_modified): Use unsigned long constant.
3388
3389 * src/bdf/bdfdrivr.c (BDF_Size_Select, BDF_Glyph_Load): Don't
3390 left-shift values that can be negative.
3391
3392 * src/pcf/pcfdrivr.c (PCF_Size_Select, PCF_Glyph_Load): Don't
3393 left-shift values that can be negative.
3394
3395 * src/raster/ftraster.c (SCALED): Correctly handle left-shift of
3396 negative values.
3397
3398 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Don't left-shift
3399 values that can be negative.
3400
3401 * src/truetype/ttgload.c (TT_Load_Composite_Glyph,
3402 compute_glyph_metrics, load_sbit_image): Don't left-shift values
3403 that can be negative.
3404
34052015-07-31 Werner Lemberg <wl@gnu.org>
3406
Werner Lemberg5d1b8ab2015-07-31 21:49:07 +02003407 Define FT_LONG_MAX.
3408
3409 * include/freetype/config/ftstdlib.h (FT_LONG_MAX): New macro.
3410 * src/cff/cf2arrst.c (cf2_arrstack_setNumElements): Use it.
3411
34122015-07-28 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov2b07a5a2015-07-28 23:14:30 -04003413
3414 * src/base/ftcalc.c (FT_Vector_NormLen): Clarify.
3415
Werner Lemberg5d1b8ab2015-07-31 21:49:07 +020034162015-07-27 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikove8b186e2015-07-27 23:22:34 -04003417
3418 * src/base/ftcalc.c (FT_Vector_NormLen): Explicate type conversions.
3419
Matthias Clasenb650dfb2015-07-26 21:08:34 +020034202015-07-26 Matthias Clasen <matthias.clasen@gmail.com>
3421
3422 [cff] Don't use `hmtx' table for LSB (#45520).
3423
3424 * src/cff/cffgload.c (cff_slot_load): Use `htmx' table for advance
3425 width only. Bug introduced 2015-04-10.
3426
Werner Lembergf9be5672015-07-09 15:10:31 +020034272015-07-09 Werner Lemberg <wl@gnu.org>
3428
3429 Better support of user-supplied C++ namespaces.
3430
3431 See
3432
3433 http://lists.nongnu.org/archive/html/freetype-devel/2015-07/msg00008.html
3434
3435 for a rationale.
3436
3437 * src/autofit/afpic.h, src/base/basepic.h, src/cff/cffpic.h,
3438 src/pshinter/pshpic.h, src/psnames/pspic.h, src/raster/rastpic.h,
3439 src/sfnt/sfntpic.h, src/smooth/ftspic.h, src/truetype/ttpic.h
3440 (FT_BEGIN_HEADER, FT_END_HEADER): Move macro calls to not enclose
3441 header files that contain FT_{BEGIN,END}_HEADER macros by
3442 themselves.
3443
3444 * src/autofit/aftypes.h [FT_DEBUG_AUTOFIT]: Include
3445 FT_CONFIG_STANDARD_LIBRARY_H earlier.
3446
3447 * src/truetype/ttpic.h: Include FT_INTERNL_PIC_H.
3448
Werner Lemberg1cdac102015-07-07 14:04:44 +020034492015-07-07 Werner Lemberg <wl@gnu.org>
3450
3451 [sfnt] Make `tt_face_get_name' member of the SFNT interface.
3452
3453 * include/freetype/internal/sfnt.h (TT_Get_Name_Func): New
3454 prototype.
3455 (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): New member `get_name'.
3456
3457 * src/sfnt/sfdriver.c (sfnt_interface): Updated.
3458
3459 * src/sfnt/sfobjs.c (tt_face_get_name): Tag it with `LOCAL_DEF'.
3460 * src/sfnt/sfobjs.h: Add prototype for it.
3461
Werner Lembergeb1bba92015-06-30 09:46:39 +020034622015-06-30 Werner Lemberg <wl@gnu.org>
3463
3464 Fix some clang compiler warnings.
3465
3466 * src/base/ftoutln.c (FT_Outline_EmboldenXY), src/cff/cf2intrp.c
3467 (cf2_interpT2CharString), src/truetype/ttgload.c
3468 (load_truetype_glyph), src/truetype/ttgxvar.c (tt_handle_deltas),
3469 src/truetype/ttinterp.c (Ins_INSTCTRL): Fix signedness issues.
3470
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040034712015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov884e4e62015-06-29 22:32:05 -04003472
Alexei Podtelezhnikov5aaabb42015-06-29 22:46:54 -04003473 [truetype] Speed up bytecode interpreter.
3474
3475 * src/truetype/ttinterp.c (Normalize): Use `FT_Vector_NormLen'.
3476
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040034772015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov5aaabb42015-06-29 22:46:54 -04003478
Alexei Podtelezhnikov9ef02bd2015-06-29 22:39:10 -04003479 [base] Speed up emboldening.
3480
Werner Lembergeb1bba92015-06-30 09:46:39 +02003481 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use
3482 `FT_Vector_NormLen'.
Alexei Podtelezhnikov9ef02bd2015-06-29 22:39:10 -04003483
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040034842015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov9ef02bd2015-06-29 22:39:10 -04003485
Alexei Podtelezhnikov884e4e62015-06-29 22:32:05 -04003486 [base] Implement fast vector normalization.
3487
3488 The function uses Newton's iterations instead of dividing vector
3489 components by its length, which needs a square root. This is,
3490 literally, a bit less accurate but a lot faster.
3491
3492 * src/base/ftcalc.c (FT_Vector_NormLen): New function.
3493
Werner Lemberg22479ca2015-06-28 10:26:33 +020034942015-06-28 Werner Lemberg <wl@gnu.org>
3495
Werner Lemberg7cdc77f2015-06-28 11:40:02 +02003496 * CMakeLists.txt: Always create `ftconfig.h'.
3497
3498 For non-UNIX builds, the file stays unmodified. However, it's
3499 better to have the main configuration files at the same place
3500 regardless of the OS.
3501
35022015-06-28 Werner Lemberg <wl@gnu.org>
3503
Werner Lemberg2c89e2c2015-06-28 11:06:47 +02003504 * CMakeLists.txt: Improve MSVC support (#43737).
3505
35062015-06-28 Werner Lemberg <wl@gnu.org>
3507
Werner Lemberg52c9b1a2015-06-28 11:03:10 +02003508 [cmake] Check for libraries and create `ftoption.h'.
3509
3510 * builds/FindHarfBuzz.cmake: New file, taken from
3511
3512 https://trac.webkit.org/browser/trunk/Source/cmake/FindHarfBuzz.cmake
3513
3514 * CMakeLists.Txt: Add path to local cmake modules.
3515 Find dependencies for zlib, bzip2, libpng, and harfbuzz.
3516 Create `ftoption.h' file.
3517 Set up include and linker stuff for libraries.
3518
35192015-06-28 Werner Lemberg <wl@gnu.org>
3520
Werner Lemberg97b757d2015-06-28 10:42:47 +02003521 * CMakeLists.txt: Fix creation of `ftconfig.h'.
3522 Check for UNIX header files using `check_include_file'.
3523 Set up correct header include directories.
3524
35252015-06-28 Werner Lemberg <wl@gnu.org>
3526
Werner Lemberg22479ca2015-06-28 10:26:33 +02003527 * CMakeLists.txt: Disallow in-source builds.
3528
Werner Lemberg802f6a92015-06-27 07:12:42 +020035292015-06-27 Werner Lemberg <wl@gnu.org>
3530
3531 * src/tools/docmaker/utils.py (check_output): Add missing `\n'.
3532
Werner Lemberg94c79c22015-06-26 06:46:59 +020035332015-06-26 Werner Lemberg <wl@gnu.org>
3534
Werner Lemberg802f6a92015-06-27 07:12:42 +02003535 * CMakeLists.txt: Select platform-dependent `ftdebug.c'.
Werner Lemberg94c79c22015-06-26 06:46:59 +02003536
Werner Lemberg392cf222015-06-25 13:04:57 +020035372015-06-25 Werner Lemberg <wl@gnu.org>
3538
Werner Lemberg68222dd2015-06-25 16:38:11 +02003539 * CMakeLists.txt: Use cmake functions for generating `ftconfig.h'.
3540 Additionally, do this for UNIX only.
3541
35422015-06-25 Werner Lemberg <wl@gnu.org>
3543
Werner Lemberg5ef5a4f2015-06-25 15:45:13 +02003544 * CMakeLists.txt (BASE_SRCS): Use `ftbase.c' and `psnames.c'.
3545
35462015-06-25 Werner Lemberg <wl@gnu.org>
3547
Werner Lemberg392cf222015-06-25 13:04:57 +02003548 Another adjustment to header locations.
3549
3550 This change is a result of a discussion thread on freetype-devel
3551
3552 http://lists.nongnu.org/archive/html/freetype-devel/2015-06/msg00041.html
3553
3554 Re-introduce the `freetype2' subdirectory for all FreeType header
3555 files after installation, and rename the `freetype2' subdirectory in
3556 the git repository to `freetype'.
3557
3558 * include/freetype2: Renamed to...
3559 * include/freetype: This.
3560
3561 * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
3562 PRIVATE_HEADERS): Updated.
3563 Update creation of `ftconfig.h'.
3564 Install generated `ftconfig.h'.
3565
3566 * Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.
3567
3568 * builds/amiga/include/config/ftconfig.h, builds/freetype.mk
3569 (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
3570 builds/unix/freetype2.in: Updated.
3571
3572 * builds/unix/freetype-config.in: Updated.
3573 * builds/unix/configure.raw: Don't check for `rmdir'.
3574 * builds/unix/unix-def.in (DELDIR): Use `rm -rf', which is portable
3575 according to the autoconf info manual.
3576 * builds/unix/install.mk (install, uninstall,
3577 distclean_project_unix): Update and simplify.
3578
3579 * builds/wince/*, builds/windows/*: Updated.
3580
3581 * devel/ft2build.h, include/ft2build.h: Updated.
3582
3583 * include/freetype2/config/ftheader.h,
3584 include/freetype2/internal/ftserv.h,
3585 include/freetype2/internal/internal.h: Update all header file
3586 macros.
3587
3588 * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.
3589
3590 * docs/*: Updated.
3591
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040035922015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com>
Werner Lemberg1982a882015-06-26 06:52:34 +02003593
3594 * src/bdf/bdflib.c (_bdf_parse_start): Disallow 0 bpp.
3595
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040035962015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com>
Werner Lemberg1982a882015-06-26 06:52:34 +02003597
3598 * src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing.
3599
Werner Lemberg59312682015-06-23 09:24:48 +020036002015-06-23 Werner Lemberg <wl@gnu.org>
3601
3602 s/TYPEOF/FT_TYPEOF/ (#45376).
3603
3604 * builds/unix/ftconfig.in, builds/vms/ftconfig.in,
3605 include/freetype2/config/ftconfig.h,
3606 include/freetype2/internal/ftobjs.h, src/autofit/afwarp.h: Do it.
3607
Werner Lemberg8502c982015-06-22 06:35:23 +020036082015-06-22 Werner Lemberg <wl@gnu.org>
3609
3610 Fix Savannah bug #45097.
3611
3612 We no longer `pollute' the namespace of possible header file names;
3613 instead we move `ft2build.h' up by one level so that it gets
3614 installed in the default include directory (e.g.,
3615 /usr/local/include). After this commit, only `ft2build.h' stays in
3616 the compiler's include path.
3617
3618 No visible changes for the user who follows the standard FreeType
3619 header inclusion rules.
3620
3621 * include/*: Move to ...
3622 * include/freetype2/*: This directory, except `ft2build.h'.
3623
3624 * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
3625 PRIVATE_HEADERS), Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.
3626
3627 * builds/amiga/include/config/ftconfig.h, builds/freetype.mk
3628 (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
3629 builds/unix/install.mk (install, uninstall),
3630 builds/unix/freetype2.in: Updated.
3631
3632 * builds/unix/freetype-config.in: Updated.
3633 Emit -I directory only if it is not `/usr/include'.
3634
3635 * builds/wince/*, builds/windows/*: Updated.
3636
3637 * devel/ft2build.h, include/ft2build.h: Updated.
3638
3639 * include/freetype2/config/ftheader.h,
3640 include/freetype2/internal/ftserv.h,
3641 include/freetype2/internal/internal.h: Update all header file
3642 macros.
3643
3644 * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.
3645
Werner Lemberg31d97df2015-06-21 19:12:12 +020036462015-06-21 Werner Lemberg <wl@gnu.org>
3647
3648 Make Jam support work again.
3649
3650 This is just very basic stuff and just a little bit tested on
3651 GNU/Linux only. I won't delve into this since I'm not a Jam user.
3652
3653 * Jamfile: Call `HDRMACRO' for `ftserv.h' also.
3654 (DEFINES): Replace with...
3655 (CCFLAGS): ... this.
3656
3657 * src/Jamfile: Don't call `HDRMACRO' for `internal.h'; this is
3658 already handled in the top-level Jamfile.
3659
3660 * src/autofit/Jamfile (DEFINES): Replace with...
3661 (CCFLAGS): ... this.
3662 (_sources): Add missing files.
3663
3664 * src/cache/Jamfile: Don't call `HDRMACRO' for `ftcache.h'; it no
3665 longer contains macro header definitions.
3666
3667 * src/base/Jamfile, src/cff/Jamfile, src/sfnt/Jamfile,
3668 src/truetype/Jamfile (_sources): Add missing files.
3669
Werner Lemberg1a147ac2015-06-16 10:20:07 +020036702015-06-16 Werner Lemberg <wl@gnu.org>
3671
3672 Fix Savannah bug #45326.
3673
3674 * src/sfnt/sfntpic.h (SFNT_SERVICES_GET): Remove duplicate
3675 definitions.
3676
Werner Lemberge1862302015-06-07 16:11:18 +020036772015-06-07 Werner Lemberg <wl@gnu.org>
3678
3679 * Version 2.6 released.
3680 =======================
3681
3682
3683 Tag sources with `VER-2-6'.
3684
3685 * docs/VERSION.DLL: Update documentation and bump version number to
3686 2.6.
3687
3688 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
3689 builds/windows/vc2005/index.html,
3690 builds/windows/vc2008/freetype.vcproj,
3691 builds/windows/vc2008/index.html,
3692 builds/windows/vc2010/freetype.vcxproj,
3693 builds/windows/vc2010/index.html,
3694 builds/windows/visualc/freetype.dsp,
3695 builds/windows/visualc/freetype.vcproj,
3696 builds/windows/visualc/index.html,
3697 builds/windows/visualce/freetype.dsp,
3698 builds/windows/visualce/freetype.vcproj,
3699 builds/windows/visualce/index.html,
3700 builds/wince/vc2005-ce/freetype.vcproj,
3701 builds/wince/vc2005-ce/index.html,
3702 builds/wince/vc2008-ce/freetype.vcproj,
3703 builds/wince/vc2008-ce/index.html: s/2.5.5/2.6/, s/255/26/.
3704
3705 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 6.
3706 (FREETYPE_PATCH): Set to 0.
3707
3708 * builds/unix/configure.raw (version_info): Set to 18:0:12.
Werner Lemberg8cabd912015-10-04 08:18:01 +02003709 * CMakeLists.txt (VERSION_MINOR): Set to 6.
3710 (VERSION_PATCH): Set to 0.
Werner Lemberge1862302015-06-07 16:11:18 +02003711
3712 * src/autofit/afmodule.c [!FT_MAKE_OPTION_SINGLE_OBJECT]: Add
3713 declarations for dumping functions.
3714
3715 * src/truetype/ttinterp.c (TT_New_Context): Pacify compiler.
3716
3717 * builds/toplevel.mk: Use `freetype.mk's code to compute the version
3718 string.
3719 Don't include a zero patch level in version string.
3720 * builds/freetype.mk: Remove code for computing the version string.
3721
Ashish Azad472119a2015-06-06 05:45:17 +020037222015-06-06 Ashish Azad <ashish.azad@samsung.com>
3723
3724 Fix Savannah bug #45260.
3725
3726 * src/pfr/pfrdrivr.c (pfr_get_kerning): Fix typo.
3727
Werner Lemberg75534a02015-06-03 00:54:09 +020037282015-06-03 Werner Lemberg <wl@gnu.org>
3729
3730 [truetype] Fix memory leak.
3731
3732 Problem reported by Grissiom <chaos.proton@gmail.com>; in
3733
3734 http://lists.nongnu.org/archive/html/freetype/2015-05/msg00013.html
3735
3736 there is an example code to trigger the bug.
3737
3738 * src/truetype/ttobjs.c (tt_size_init_bytecode): Free old `size'
3739 data before allocating again. Bug most probably introduced four
3740 years ago in version 2.4.3.
3741
37422015-06-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg54d04282015-06-01 12:12:06 +02003743
Werner Lembergd1ade6d2015-06-02 11:44:52 +02003744 [raster] Add more tracing.
3745
3746 * src/raster/ftraster.c (FT_TRACE7) [_STANDALONE_]: Define.
3747 (Vertical_Sweep_Span, Vertical_Sweep_Drop, Horizontal_Sweep_Span,
3748 Horizontal_Sweep_Drop, Render_Glyph): Add tracing calls.
3749
37502015-06-01 Werner Lemberg <wl@gnu.org>
3751
Werner Lemberg54d04282015-06-01 12:12:06 +02003752 [truetype] While tracing opcodes, show code position and stack.
3753
3754 * src/truetype/ttinterp.c: Change all existing TRACE7 calls to
3755 TRACE6.
3756 (opcode_name): Add string lengths.
3757 (TT_RunIns): Implement display of code position and stack.
3758
Werner Lembergcdee7d12015-05-31 11:54:42 +020037592015-05-31 Werner Lemberg <wl@gnu.org>
3760
Werner Lemberge9df4e42015-05-31 12:21:34 +02003761 [truetype] In GX, make private point numbers work correctly.
3762
3763 This is completely missing in Apple's documentation: If a `gvar'
3764 tuple uses private point numbers (this is, deltas are specified for
3765 some points only), the uncovered points must be interpolated for
3766 this tuple similar to the IUP bytecode instruction. Examples that
3767 need this functionality are glyphs `Oslash' and `Q' in Skia.ttf.
3768
3769 * src/truetype/ttgxvar.c (tt_delta_shift, tt_delta_interpolate,
3770 tt_handle_deltas): New functions.
3771 (TT_Vary_Get_Glyph_Deltas): Renamed to...
3772 (TT_Vary_Apply_Glyph_Deltas): ... this; it directly processes the
3773 points and does no longer return an array of deltas.
3774 Add tracing information.
3775 Call `tt_handle_deltas' to interpolate missing deltas.
3776 Also fix a minor memory leak in case of error.
3777
3778 * src/truetype/ttgxvar.h: Updated.
3779
3780 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
3781 load_truetype_glyph): Updated.
3782
37832015-05-31 Werner Lemberg <wl@gnu.org>
3784
Werner Lemberg9845c1d2015-05-31 11:57:31 +02003785 [truetype] In GX, make intermediate tuplets work at extrema.
3786
3787 * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix range condition.
3788
37892015-05-31 Werner Lemberg <wl@gnu.org>
3790
Werner Lembergcdee7d12015-05-31 11:54:42 +02003791 [truetype] Add tracing information to GX code.
3792
3793 * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
3794 ft_var_apply_tuple, TT_Get_MM_Var, TT_Set_MM_Blend,
3795 TT_Set_Var_Design, tt_face_vary_cvt): Do it.
3796
Werner Lemberg366b2ea2015-05-28 10:58:40 +020037972015-05-28 Werner Lemberg <wl@gnu.org>
3798
3799 * src/tools/apinames.c (names_dump): Fix invalid reference.
3800
3801 Problem reported by Guzman Mosqueda, Jose R
3802 <jose.r.guzman.mosqueda@intel.com>.
3803
Werner Lemberga5e1f6f2015-05-24 23:29:23 +020038042015-05-24 Werner Lemberg <wl@gnu.org>
3805
3806 [truetype] Fix commit from 2015-05-22.
3807
3808 * src/truetype/ttgload.c, src/truetype/ttinterp.c: Guard new code
3809 with `TT_CONFIG_OPTION_SUBPIXEL_HINTING'.
3810
3811 Problem reported by Nikolaus Waxweiler <madigens@gmail.com>.
3812
Werner Lembergbb435da2015-05-23 07:21:25 +020038132015-05-23 Werner Lemberg <wl@gnu.org>
3814
Werner Lemberg7f099482015-05-24 09:50:24 +02003815 [truetype] Fix return values of GETINFO bytecode instruction.
3816
3817 * src/truetype/ttinterp.h (TT_ExecContextRec): New fields
3818 `vertical_lcd' and `gray_cleartype'.
3819
3820 * src/truetype/ttgload.c (tt_loader_init): Initialize new fields.
3821 Change `symmetrical smoothing' to TRUE, since FreeType produces
3822 exactly this.
3823
3824 * src/truetype/ttinterp.c (Ins_GETINFO): Fix selector/return bit
3825 values for symmetrical smoothing, namely 11/18.
3826 Handle bits for vertical LCD subpixels (8/15) and Gray ClearType
3827 (12/19).
3828
38292015-05-23 Werner Lemberg <wl@gnu.org>
3830
Werner Lembergbb435da2015-05-23 07:21:25 +02003831 [truetype] Minor.
3832
3833 * src/truetype/ttinterp.h (TT_ExecContext):
3834 s/subpixel/subpixel_hinting.
3835
3836 * src/truetype/ttgload.c, src/truetype/ttgload.h: Updated.
3837
38382015-05-22 Werner Lemberg <wl@gnu.org>
Werner Lemberg790b8df2015-05-20 12:33:40 +02003839
Werner Lembergc61cad82015-05-22 22:02:15 +02003840 [truetype] Support selector index 3 of the INSTCTRL instruction.
3841
3842 This flag activates `native ClearType hinting', disabling backwards
3843 compatibility mode as described in Greg Hitchcocks whitepaper. In
3844 other words, it enables unrestricted functionality of all TrueType
3845 instructions in ClearType.
3846
3847 * src/truetype/ttgload.c (tt_get_metrics): Call `sph_set_tweaks'
3848 unconditionally.
3849 (tt_loader_init): Unset `ignore_x_mode' flag if bit 2 of
3850 `GS.instruct_control' is active.
3851
3852 * src/truetype/ttinterp.c (Ins_INSTCTRL): Handle selector index 3.
3853 (Ins_GETINFO): Updated.
3854
3855 * docs/CHANGES: Document it.
3856
38572015-05-20 Werner Lemberg <wl@gnu.org>
3858
Werner Lemberg790b8df2015-05-20 12:33:40 +02003859 [truetype] Minor.
3860
3861 * src/truetype/ttinterp.h (SetSuperRound): Fix type of `GridPeriod'
3862 argument.
3863
Werner Lemberg0a6b6ff2015-05-17 22:54:48 +020038642015-05-17 Werner Lemberg <wl@gnu.org>
3865
3866 [truetype] Fix loading of composite glyphs.
3867
3868 * src/truetype/ttgload.c (TT_Load_Composite_Glyph): If the
3869 ARGS_ARE_XY_VALUES flag is not set, handle argument values as
3870 unsigned. I trust `ttx' (which has exactly such code) that it does
3871 the right thing here...
3872
3873 The reason that noone has ever noticed this bug is probably the fact
3874 that point-aligned subglyphs are rare, as are subglyphs with a
3875 number of points in the range [128;255], which is quite large (or
3876 even in the range [32768;65535], which is extremely unlikely).
3877
Chris Liddelld65bf722015-05-12 07:16:46 +020038782015-05-12 Chris Liddell <chris.liddell@artifex.com>
3879
Chris Liddella87fb8c2015-05-12 07:27:35 +02003880 [cff] Make the `*curveto' operators more tolerant.
3881
3882 * src/cff/cf2intrp.c (cf2_interpT2CharString): The opcodes
3883 `vvcurveto', `hhcurveto', `vhcurveto', and `hvcurveto' all iterate,
3884 pulling values off the stack until the stack is exhausted.
3885 Implicitly the stack must be a multiple (or for subtly different
3886 behaviour) a multiple plus a specific number of extra values deep.
3887 If that's not the case, enforce it (as the old code did).
3888
38892015-05-12 Chris Liddell <chris.liddell@artifex.com>
3890
Chris Liddelld65bf722015-05-12 07:16:46 +02003891 [cff] fix incremental interface with new cff code.
3892
3893 * src/cff/cf2ft.c (cf2_getSeacComponent): When using the incremental
3894 interface to retrieve glyph data for a SEAC, it be left to the
3895 incremental interface callback to apply the encoding to raw
3896 character index (as it was in the previous code).
3897
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040038982015-04-29 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov40914952015-04-29 21:57:30 -04003899
3900 [autofit] Speed up IUP.
3901
3902 * src/autofit/afhints.c (af_iup_interp): Separate trivial snapping to
3903 the same position from true interpolation, use `scale' to reduce
3904 divisions.
3905
Werner Lemberg3cc076d2015-04-28 09:16:27 +020039062015-04-28 Werner Lemberg <wl@gnu.org>
3907
3908 [cff] Use `name' table for PS name if we have a SFNT-CFF.
3909
3910 This follows the OpenType 1.7 specification. See
3911
3912 http://tug.org/pipermail/tex-live/2015-April/036634.html
3913
3914 for a discussion.
3915
3916 * src/cff/cffdrivr.c (cff_get_ps_name): Use the `sfnt' service if we
3917 have an SFNT.
3918
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040039192015-04-27 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov40623a12015-04-27 22:27:00 -04003920
3921 [truetype] Speed up IUP.
3922
3923 * src/truetype/ttinterp.c (_iup_worker_interpolate): Separate trivial
3924 snapping to the same position from true interpolation.
3925
Werner Lemberg12661a52015-04-21 07:13:59 +020039262015-04-21 Werner Lemberg <wl@gnu.org>
3927
Werner Lemberg14df6b12015-04-22 11:14:35 +02003928 [autofit] By default, enable warping code but switch off warping.
3929
3930 Suggested by Behdad.
3931
3932 * include/config/ftoption.h: Define AF_CONFIG_OPTION_USE_WARPER.
3933
3934 * src/autofit/afmodule.c (af_autofitter_init): Initialize `warping'
3935 with `false'.
3936
39372015-04-21 Werner Lemberg <wl@gnu.org>
3938
Werner Lembergd164f702015-04-21 07:51:41 +02003939 * docs/CHANGES: Updated.
3940
39412015-04-21 Werner Lemberg <wl@gnu.org>
3942
Werner Lemberg12661a52015-04-21 07:13:59 +02003943 [autofit] Introduce `warping' property.
3944
3945 This code replaces the debugging hook from the previous commit with
3946 a better, more generic solution.
3947
3948 * include/ftautoh.h: Document it.
3949
3950 * src/autofit/afmodule.h (AF_ModuleRec)
3951 [AF_CONFIG_OPTION_USE_WARPER]: Add `warping' field.
3952
3953 * src/autofit/afmodule.c (_af_debug_disable_warper): Remove.
3954 (af_property_set, af_property_get, af_autofitter_init)
3955 [AF_CONFIG_OPTION_USE_WARPER]: Handle `warping' option.
3956
3957 * src/autofit/afhints.h (AF_HINTS_DO_WARP): Remove use of the no
3958 longer existing `_af_debug_disable_warper'.
3959
3960 * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
3961 (af_latin_hints_init), src/autofit/aflatin2.c (af_latin2_hints_init)
3962 [AF_CONFIG_OPTION_USE_WARPER]: Add `AF_SCALER_FLAG_NO_WARPER' to the
3963 scaler flags if warping is off.
3964
3965 * src/autofit/aftypes.h: Updated.
3966
Werner Lemberg58f48f02015-04-16 20:11:49 +020039672015-04-16 Werner Lemberg <wl@gnu.org>
3968
3969 [autofit] Add debugging hook to disable warper.
3970
3971 * src/autofit/afmodule.c (_af_debug_disable_warper)
3972 [FT_DEBUG_AUTOFIT]: New global variable.
3973
3974 * src/autofit/aftypes.h: Updated.
3975 (AF_SCALER_FLAG_NO_WARPER): New macro (not actively used yet).
3976
3977 * src/autofit/afhints.h (AF_HINTS_DO_WARP): New macro.
3978
Alexei Podtelezhnikovc6d99a42016-04-08 00:05:50 -04003979 * src/autofit/aflatin.c (af_latin_hints_apply)
Werner Lemberg58f48f02015-04-16 20:11:49 +02003980 [AF_CONFIG_OPTION_USE_WARPER]: Use `AF_HINTS_DO_WARP' to control use
3981 of warper.
3982
3983 * src/autofit/afcjk.c (af_cjk_hints_init, af_cjk_hints_apply)
3984 [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.
3985
3986 * src/autofit/aflatin2.c (af_latin2_hints_apply)
3987 [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.
3988
Werner Lemberg5cd21552015-04-10 07:01:01 +020039892015-04-10 Werner Lemberg <wl@gnu.org>
3990
3991 [cff] Update advance width handling to OpenType 1.7.
3992
3993 Problem reported by Behdad.
3994
3995 * src/cff/cffdrivr.c (cff_get_advances): Handle SFNT case
3996 separately.
3997
3998 * src/cff/cffgload.c (cff_slot_load): Use advance width and side
3999 bearing values from `hmtx' table if present.
4000
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040040012015-04-03 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov67b912d2015-04-03 22:38:11 -04004002
4003 * src/autofit/afhints.c (af_glyph_hints_reload): Use do-while loop.
4004
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040040052015-04-02 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov770b5d02015-04-02 23:15:36 -04004006
4007 * src/autofit/aflatin.c (af_latin_hint_edges): Reduce logic.
4008
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040040092015-04-01 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov886f4d02015-04-01 22:57:43 -04004010
4011 [autofit] Finish the thought.
4012
4013 * src/autofit/afhints.c (af_direction_compute): make sure the long arm
4014 is never negative so that its `FT_ABS' is not necessary.
4015
Werner Lemberg16217e52015-04-01 13:13:56 +020040162015-04-01 Werner Lemberg <wl@gnu.org>
4017
Werner Lemberga2fa6572015-04-01 15:55:41 +02004018 [autofit] Call dumper functions for tracing.
4019
4020 * src/autofit/afcjk.c (af_cjk_hints_apply): Remove dead code.
4021 * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor
4022 improvement.
4023 * src/autofit/afmodule.c (af_autofitter_load_glyph): Implement it.
4024
40252015-04-01 Werner Lemberg <wl@gnu.org>
4026
Werner Lembergdb8df792015-04-01 13:30:55 +02004027 [autofit] Make debugging stuff work again.
4028
4029 The interface to ftgrid was broken in the series of commits starting
4030 with
4031
4032 [autofit] Allocate AF_Loader on the stack instead of AF_Module.
4033
4034 from 2015-01-14.
4035
4036 * src/autofit/afmodule.c (_af_debug_hints_rec) [FT_DEBUG_AUTOFIT]:
4037 Use a global AF_GlyphHintsRec object for debugging.
4038 (af_autofitter_done, af_autofitter_load_glyph): Updated.
4039
4040 * src/autofit/afloader.c (af_loader_init, af_loader_done): Updated.
4041
40422015-04-01 Werner Lemberg <wl@gnu.org>
4043
Werner Lemberg16217e52015-04-01 13:13:56 +02004044 * src/autofit/afhints.c (af_glyph_hints_done): Fix minor thinko.
4045
Werner Lemberg10e2bb82015-03-29 13:32:47 +020040462015-03-29 Werner Lemberg <wl@gnu.org>
4047
Werner Lembergf353a382015-03-29 14:47:49 +02004048 [cff] Fix Savannah bug #44629.
4049
4050 * src/cff/cf2font.h (CF2_MAX_SUBR), src/cff/cffgload.h
4051 (CFF_MAX_SUBRS_CALLS): Set to 16.
4052
40532015-03-29 Werner Lemberg <wl@gnu.org>
4054
Werner Lemberg10e2bb82015-03-29 13:32:47 +02004055 [type1, truetype] Make the MM API more flexible w.r.t. `num_coords'.
4056
4057 This commit allows `num_coords' to be larger or smaller than the
4058 number of available axes while selecting a design instance, either
4059 ignoring excess data or using defaults if data is missing.
4060
4061 * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design):
4062 Implement it.
4063
4064 * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design,
4065 T1_Set_Var_Design): Ditto.
4066
40672015-03-29 Werner Lemberg <wl@gnu.org>
Werner Lemberg8ce30262015-03-27 08:33:47 +01004068
Werner Lembergdd5d6d72015-03-29 10:04:22 +02004069 [type1] Minor.
4070
4071 * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Use
4072 FT_THROW.
4073 (T1_Set_Var_Design): Use T1_MAX_MM_AXIS and FT_THROW.
4074
40752015-03-27 Werner Lemberg <wl@gnu.org>
4076
Werner Lemberg8ce30262015-03-27 08:33:47 +01004077 [cff] Trace charstring nesting levels.
4078
4079 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLGSUBR,
4080 cf2_cmdCALLSUBR, cf2_cmdRETURN>: Implement it.
4081
4082 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
4083 <cff_op_callsubr, cff_op_callgsubr, cff_op_return>: Ditto.
4084
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040040852015-03-21 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikovdac56442015-03-21 23:30:16 -04004086
4087 [base] Optimize `FT_Angle_Diff'.
4088
4089 Under normal circumstances we are usually close to the desired range
4090 of angle values, so that the remainder is not really necessary.
4091
4092 * src/base/fttrigon.c (FT_Angle_Diff): Use loops instead of remainder.
4093
4094 * src/autofit/aftypes.h (AF_ANGLE_DIFF): Ditto in the unused macro.
4095
Werner Lemberg6cc425d2015-03-21 06:51:07 +010040962015-03-21 Werner Lemberg <wl@gnu.org>
4097
4098 [truetype] Improve `gvar' handling.
4099
4100 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Correctly handle
4101 single-element runs. Cf. glyph `Q' in Skia.ttf with weights larger
4102 than the default.
4103
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040041042015-03-20 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov2d7284e2015-03-20 21:34:19 -04004105
4106 * src/base/fttrigon.c (FT_Vector_Rotate): Minor refactoring.
4107
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040041082015-03-17 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov6a171722015-03-17 22:43:08 -04004109
4110 Fix Savannah bug #44412 (part 2).
4111
4112 * src/base/fttrigon.c (FT_Sin, FT_Cos, FT_Tan): Call `FT_Vector_Unit'.
4113
Werner Lemberg06339952015-03-11 06:30:23 +010041142015-03-11 Werner Lemberg <wl@gnu.org>
4115
Werner Lembergd3284462015-03-11 16:45:58 +01004116 [autofit] Add support for Arabic script.
4117
4118 Thanks to Titus Nemeth <tn@tntypography.eu> for guidance!
4119
4120 * src/autofit/afblue.dat: Add blue zone data for Arabic.
4121
4122 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
4123
4124 * src/autofit/afscript.h: Add Arabic standard characters.
4125
4126 * src/autofit/afranges.c: Add Arabic data.
4127
4128 * src/autofit/afstyles.h: Add Arabic data.
4129
4130 * docs/CHANGES: Document it.
4131
41322015-03-11 Werner Lemberg <wl@gnu.org>
4133
Werner Lemberga4516382015-03-11 08:09:13 +01004134 Rename `svxf86nm.h' to `svfntfmt.h'; update related symbols.
4135
4136 * include/internal/ftserv.h (FT_SERVICE_XFREE86_NAME_H): Renamed
4137 to...
4138 (FT_SERVICE_FONT_FORMAT_H): This.
4139
4140 * include/internal/services/svfntfmt.h (FT_XF86_FORMAT_*): Renamed
4141 to ...
4142 (FT_FONT_FORMAT_*): This.
4143
4144 src/base/ftfntfmt.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
4145 src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/pfr/pfrdrivr.c,
4146 src/truetype/ttdriver.c, src/type1/t1driver.c,
4147 src/type42/t42drivr.c, src/winfonts/winfnt.c: Updated.
4148
41492015-03-11 Werner Lemberg <wl@gnu.org>
4150
Werner Lembergdd7028c2015-03-11 07:45:05 +01004151 [base] Rename `FT_XFREE86_H' to `FT_FONT_FORMATS_H'.
4152
4153 * include/config/ftheader.h: Implement it.
4154 * src/base/ftfntfmt.c, docs/CHANGES: Updated.
4155
41562015-03-11 Werner Lemberg <wl@gnu.org>
4157
Werner Lembergf4d1c112015-03-11 07:32:58 +01004158 [base] Rename `FT_Get_X11_Font_Format' to `FT_Get_Font_Format'.
4159
4160 * include/ftfntfmt.h, src/base/ftfntfmt.c: Implement it.
4161
4162 * docs/CHANGES: Updated.
4163
41642015-03-11 Werner Lemberg <wl@gnu.org>
4165
Werner Lembergcb0f7b62015-03-11 06:51:27 +01004166 Fix automatic copyright updating.
4167
4168 * src/tools/update-copyright: Make scanning of `no-copyright'
4169 actually work.
4170
4171 * src/tools/no-copyright: Don't include README in general.
4172
41732015-03-11 Werner Lemberg <wl@gnu.org>
4174
Werner Lemberg06339952015-03-11 06:30:23 +01004175 Rename `ftxf86.[ch]' to `ftfntfmt.[ch]'.
4176
4177 CMakeLists.txt, builds/amiga/makefile, builds/amiga/makefile.os4,
4178 builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt,
4179 builds/mac/FreeType.m68k_far.make.txt,
4180 builds/mac/FreeType.ppc_carbon.make.txt,
4181 builds/mac/FreeType.ppc_classic.make.txt, builds/symbian/bld.inf,
4182 builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj,
4183 builds/wince/vc2008-ce/freetype.vcproj,
4184 builds/windows/vc2005/freetype.vcproj,
4185 builds/windows/vc2008/freetype.vcproj,
4186 builds/windows/vc2010/freetype.vcxproj,
4187 builds/windows/vc2010/freetype.vcxproj.filters,
4188 builds/windows/visualc/freetype.dsp,
4189 builds/windows/visualc/freetype.vcproj,
4190 builds/windows/visualce/freetype.dsp,
4191 builds/windows/visualce/freetype.vcproj, docs/INSTALL.ANY,
4192 include/config/ftheader.h, include/ftfntfmt.h, modules.cfg,
4193 src/base/ftfntfmt.c, vms_make.com: Updated.
4194
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040041952015-03-10 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov6b832c82015-03-10 23:25:49 -04004196
4197 Fix Savannah bug #44412 (part 1).
4198
4199 * src/base/ftstroke.c (ft_stroker_inside): Handle near U-turns.
4200
Werner Lembergeee7d8b2015-03-10 11:15:15 +010042012015-03-10 Werner Lemberg <wl@gnu.org>
4202
4203 [base] Rename `FT_Bitmap_New' to `FT_Bitmap_Init'.
4204
4205 * include/ftbitmap.h, src/base/ftbitmap.c: Implement it.
4206 Update all callers.
4207
4208 * docs/CHANGES: Updated.
4209
Werner Lemberg493cc032015-03-06 05:38:31 +010042102015-03-06 Werner Lemberg <wl@gnu.org>
4211
4212 * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning.
4213
4214 Found by Alexei.
4215
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040042162015-03-05 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikovdd7498d2015-03-05 22:51:36 -05004217
4218 * src/base/ftstroke.c: Simplify.
4219
Werner Lemberg328b7922015-03-04 08:40:23 +010042202015-03-04 Werner Lemberg <wl@gnu.org>
4221
4222 [truetype] Some fixes and code refactoring in `ttgxvar.c'.
4223
4224 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix return value
4225 of `point_cnt' if two bytes are read.
4226 Use a more vertical coding style.
4227 (ft_var_readpackeddeltas): Use FT_UInt for `delta_cnt' parameter.
4228 Use a more vertical coding style.
4229
Werner Lemberga374c9c2015-03-03 11:23:45 +010042302015-03-03 Werner Lemberg <wl@gnu.org>
4231
4232 [autofit] Fix Savannah bug #44241.
4233
4234 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Reject glyphs
4235 with less than 3 points.
4236
Werner Lemberga07029e2015-03-02 06:54:08 +010042372015-03-02 Werner Lemberg <wl@gnu.org>
4238
4239 Simplify `TYPEOF' macro.
4240
4241 No need for two arguments.
4242
4243 * include/config/ftconfig.h, builds/unix/ftconfig.in,
4244 builds/vms/ftconfig.h (TYPEOF): Updated.
4245
4246 * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
4247 src/autofit/afwarp.h (AF_WARPER_FLOOR): Updated.
4248
42492015-03-01 Werner Lemberg <wl@gnu.org>
Werner Lemberg4b9234b2015-02-25 06:31:43 +01004250
Werner Lemberg851e8152015-03-01 19:27:09 +01004251 Various compiler warning fixes for `make multi'.
4252
4253 * src/autofit/afcjk.c (af_cjk_hints_compute_blue_edges),
4254 src/autofit/aflatin.c (af_latin_hint_compute_blue_edges,
4255 af_latin_hint_edges), src/autofit/aflatin2.c
4256 (af_latin2_hints_compute_blue_edges, af_latin2_hint_edges): Declare
4257 as `static'.
4258
4259 * src/cache/ftccmap.c (FTC_CMAP_QUERY_HASH, FTC_CMAP_NODE_HASH):
4260 Removed. Unused.
4261 * src/cache/ftcimage.c: Include FT_INTERNAL_OBJECTS_H.
4262 * src/cache/ftcmanag.c (FTC_LRU_GET_MANAGER): Removed. Unused.
4263
4264 * src/cff/cf2intrp.c: Include `cf2intrp.h'.
4265 * src/cff/cffdrivr.c (PAIR_TAG): Removed. Unused.
4266
4267 * src/gzip/ftgzip.c (NO_DUMMY_DECL): Removed. Unused.
4268
4269 * src/psaux/afmparse.c (afm_parser_read_int): Declare as `static'.
4270
4271 * src/pshinter/pshalgo.c (STRONGER, PSH_ZONE_MIN, PSH_ZONE_MAX):
4272 Removed. Unused.
4273
4274 * src/raster/ftraster.c (Render_Glyph): Declare as `static'.
4275
4276 * src/sfnt/ttpost.c (load_format_20): Fix signedness warning.
4277
4278 * src/truetype/ttdriver.c (PAIR_TAG): Removed. Unused.
4279 * src/truetype/ttsubpix.c (is_member_of_family_class,
4280 is_member_of_style_class): Declare as `static'.
4281
4282 * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Declare
4283 as `static'.
4284 * src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): Declare as
4285 `static'.
4286 (T1_FIELD_COUNT): Removed. Unused.
4287 * src/type1/t1parse.h (T1_Done_Table): Removed. Unused.
4288
4289 * src/type42/t42parse.c (T1_Done_Table): Removed. Unused.
4290
42912015-02-25 Werner Lemberg <wl@gnu.org>
4292
Werner Lemberg04c22372015-02-25 11:20:20 +01004293 [psaux] Signedness fixes.
4294
4295 * include/internal/psaux.h, src/psaux/afmparse.c,
4296 src/psaux/afmparse.h, src/psaux/psconv.c, src/psaux/psobjs.c,
4297 src/psaux/t1cmap.c, src/psaux/t1decode.c: Apply.
4298
42992015-02-25 Werner Lemberg <wl@gnu.org>
4300
Werner Lembergd25ec162015-02-25 09:19:59 +01004301 [otvalid] Signedness fixes.
4302
4303 * src/otvalid/otvcommn.c, src/otvalid/otvgdef.c,
4304 src/otvalid/otvgpos.c, src/otvalid/otvgsub.c, src/otvalid/otvmath.c:
4305 Apply.
4306
43072015-02-25 Werner Lemberg <wl@gnu.org>
4308
Werner Lemberg5c9d9bf2015-02-25 08:13:40 +01004309 * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Signedness fix.
4310
43112015-02-25 Werner Lemberg <wl@gnu.org>
4312
Werner Lemberg83d41812015-02-25 08:10:58 +01004313 [lzw] Signedness fixes.
4314
4315 * src/lzw/ftzopen.c, src/lzw/ftzopen.h: Apply.
4316
43172015-02-25 Werner Lemberg <wl@gnu.org>
4318
Werner Lemberg17b62912015-02-25 07:53:09 +01004319 [gxvalid] Signedness fixes.
4320
4321 * src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c,
4322 src/gxvalid/gxvcommn.h, src/gxvalid/gxvjust.c,
4323 src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c,
4324 src/gxvalid/gxvmort1.c, src/gxvalid/gxvmort2.c,
4325 src/gxvalid/gxvmorx.c, src/gxvalid/gxvmorx1.c,
4326 src/gxvalid/gxvmorx2.c, src/gxvalid/gxvopbd.c,
4327 src/gxvalid/gxvprop.c, src/gxvalid/gxvtrak.c: Apply.
4328
43292015-02-25 Werner Lemberg <wl@gnu.org>
4330
Werner Lemberg24e4e962015-02-25 06:57:16 +01004331 [cache] Signedness fixes.
4332
4333 * src/cache/ftcbasic.c, src/cache/ftccmap.c, src/cache/ftcimage.c,
4334 src/cache/ftcmanag.c, src/cache/ftcsbits.c: Apply.
4335
43362015-02-25 Werner Lemberg <wl@gnu.org>
4337
Werner Lemberg559727d2015-02-25 06:55:00 +01004338 Change dimension fields in `FTC_ImageTypeRec' to unsigned type.
4339
4340 This doesn't break ABI.
4341
4342 * include/ftcache.h (FTC_ImageTypeRec): Use unsigned types for
4343 `width' and `height'.
4344
4345 * docs/CHANGES: Document it.
4346
43472015-02-25 Werner Lemberg <wl@gnu.org>
4348
Werner Lemberg4b9234b2015-02-25 06:31:43 +01004349 [cache] Don't use `labs'.
4350
4351 This is the only place in FreeType where this function was used.
4352
4353 * include/config/ftstdlib.h (ft_labs): Remove.
4354
4355 * src/cache/ftcimage.c (ftc_inode_weight): Replace `ft_labs' with
4356 `FT_ABS'.
4357
Werner Lemberg4d1f7af2015-02-23 07:04:36 +010043582015-02-23 Werner Lemberg <wl@gnu.org>
4359
Werner Lemberg3aaebe32015-02-23 08:20:27 +01004360 [cache] Replace `FT_PtrDist' with `FT_Offset'.
4361
4362 * src/cache/ftccache.h (FTC_NodeRec): `FT_Offset' (a.k.a. `size_t')
4363 is a better choice for `hash' to hold a pointer than `FT_PtrDist'
4364 (a.k.a. `ptrdiff_t'), especially since the latter is signed,
4365 causing zillions of signedness warnings. [Note that `hash' was of
Werner Lemberg17b62912015-02-25 07:53:09 +01004366 type `FT_UInt32' before the change to `FT_PtrDist'.]
Werner Lemberg3aaebe32015-02-23 08:20:27 +01004367 Update all users.
4368
4369 * src/cache/ftcbasic.c, src/cache/ftccache.c, src/cache/ftccmap.c,
4370 src/cache/ftcglyph.c, src/cache/ftcglyph.h: Updated.
4371
43722015-02-23 Werner Lemberg <wl@gnu.org>
4373
Werner Lemberg4d1f7af2015-02-23 07:04:36 +01004374 [smooth, raster] Re-enable standalone compilation.
4375
4376 * src/raster/ftraster.c (FT_RENDER_POOL_SIZE, FT_MAX)
4377 [_STANDALONE_]: Define macros.
4378
4379 * src/smooth/ftgrays.c (FT_RENDER_POOL_SIZE, FT_MAX, FT_ABS,
4380 FT_HYPOT) [_STANDALONE_]: Define macros.
4381
Werner Lemberg03ccfd02015-02-22 08:25:16 +010043822015-02-22 Werner Lemberg <wl@gnu.org>
4383
Werner Lembergcb13e712015-02-23 06:41:52 +01004384 [smooth] Signedness fixes.
4385
4386 * src/smooth/ftgrays.c, src/smooth/ftsmooth.c: Apply.
4387
43882015-02-22 Werner Lemberg <wl@gnu.org>
4389
Werner Lemberga974e9a2015-02-22 21:02:13 +01004390 * src/raster/ftraster.c: Use the file's typedefs everywhere.
4391
43922015-02-22 Werner Lemberg <wl@gnu.org>
4393
Werner Lembergb0ebcdc2015-02-22 20:42:49 +01004394 * src/sfnt/ttpost.c (load_format_20): Fix error tracing message.
4395
4396 Bug introduced 6 commits earlier.
4397
43982015-02-22 Werner Lemberg <wl@gnu.org>
4399
Werner Lemberg22b1d5c2015-02-22 20:41:03 +01004400 [pshinter] Fix thinko.
4401
4402 * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Correctly
4403 check `count'.
4404 Bug introduced two commits earlier.
4405
44062015-02-22 Werner Lemberg <wl@gnu.org>
4407
Werner Lembergca96fe02015-02-22 20:05:04 +01004408 [raster] Signedness fixes.
4409
4410 * src/raster/ftraster.c, src/raster/ftrend1.c: Apply.
4411
44122015-02-22 Werner Lemberg <wl@gnu.org>
4413
Werner Lemberg452066c2015-02-22 15:59:02 +01004414 [pshinter] Signedness fixes.
4415
4416 * src/pshinter/pshalgo.c, src/pshinter/pshglob.c,
4417 src/pshinter/pshrec.c: Apply.
4418
44192015-02-22 Werner Lemberg <wl@gnu.org>
4420
Werner Lemberg41c2ed82015-02-22 15:57:47 +01004421 [pshinter] Use macros for (unsigned) flags, not enumerations.
4422
4423 * src/pshinter/pshalgo.h (PSH_Hint_Flags): Replace with macros.
4424 Updated.
4425 * src/pshinter/pshrec.h (PS_Hint_Flags): Replace with macros.
4426
44272015-02-22 Werner Lemberg <wl@gnu.org>
4428
Werner Lemberg25c2f882015-02-22 15:54:31 +01004429 * src/pshinter/pshrec.c: Simplify.
4430 (ps_hints_open, ps_hints_stem): Remove switch statement.
4431
44322015-02-22 Werner Lemberg <wl@gnu.org>
4433
Werner Lemberg01f08422015-02-22 12:03:28 +01004434 [sfnt] Signedness fixes.
4435
4436 * src/sfnt/pngshim.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap.c,
4437 src/sfnt/ttkern.c, src/sfnt/ttload.c, src/sfnt/ttpost.c,
4438 src/sfnt/ttsbit.c: Apply.
4439 * src/sfnt/sfdriver.c: Apply.
4440 (sfnt_get_ps_name): Simplify.
4441
44422015-02-22 Werner Lemberg <wl@gnu.org>
4443
Werner Lemberg3c374c82015-02-22 09:16:53 +01004444 [bdf] Signedness fixes.
4445
4446 * src/bdf/bdf.h, src/bdf/bdfdrivr.c, src/bdf/bdfdrivr.h,
4447 src/bdf/bdflib.c: Apply.
4448
44492015-02-22 Werner Lemberg <wl@gnu.org>
4450
Werner Lembergb13945a2015-02-22 09:15:47 +01004451 * src/bdf/bdflib.c (_bdf_atous): New function.
4452 (_bdf_parse_glyphs, _bdf_parse_start): Use it.
4453
44542015-02-22 Werner Lemberg <wl@gnu.org>
4455
Werner Lemberg03ccfd02015-02-22 08:25:16 +01004456 [pcf] Signedness fixes.
4457
4458 * src/pcf/pcf.h, src/pcf/pcfdrivr.c: Apply.
4459 * src/pcf/pcfread.c: Apply.
4460 (pcf_get_encodings): Ignore invalid negative encoding offsets.
4461
Werner Lemberg633a7292015-02-21 07:02:01 +010044622015-02-21 Werner Lemberg <wl@gnu.org>
4463
Werner Lemberg3d7e53f2015-02-21 11:30:54 +01004464 * src/winfonts/winfnt.c: Signedness fixes.
4465
44662015-02-21 Werner Lemberg <wl@gnu.org>
4467
Werner Lemberg7b6b4172015-02-21 10:39:34 +01004468 [type42] Signedness fixes.
4469
4470 * src/type42/t42parse.c, src/type42/t42parse.h,
4471 src/type42/t42types.h: Apply.
4472
44732015-02-21 Werner Lemberg <wl@gnu.org>
4474
Werner Lemberg8bfffb42015-02-21 09:52:29 +01004475 [pfr] Signedness fixes.
4476
4477 * src/pfr/pfrdrivr.c, src/pfr/pfrgload.c, src/pfr/pfrload.c,
4478 src/pfr/pfrload.h, src/pfr/pfrobjs.c, src/pfr/pfrsbit.c,
4479 src/pfr/pfrtypes.h: Apply.
4480
44812015-02-21 Werner Lemberg <wl@gnu.org>
4482
Werner Lemberg633a7292015-02-21 07:02:01 +01004483 [cff] Minor signedness fixes related to last commit.
4484
4485 * src/cff/cf2ft.c, src/cff/cf2intrp.c, src/cff/cffgload.c: Apply.
4486
Werner Lemberg3a8d0532015-02-20 08:35:32 +010044872015-02-20 Werner Lemberg <wl@gnu.org>
4488
Werner Lembergc00b05f2015-02-20 20:42:55 +01004489 [cff] Thinkos in bias handling.
4490
4491 Only the final result is always positive.
4492
4493 Bug introduced three commits earlier.
4494
4495 * src/cff/cffgload.c, src/cff/cffgload.h: Apply.
4496
44972015-02-20 Werner Lemberg <wl@gnu.org>
4498
Werner Lemberg2bf03eb2015-02-20 20:14:11 +01004499 [cid] Fix signedness issues and emit some better error codes.
4500
4501 * src/cid/cidgload.c, src/cid/cidload.h, src/cid/cidobjs.c,
4502 src/cid/cidparse.h: Apply.
4503 * src/cid/cidload.c: Apply.
4504 (parse_fd_array): Reject negative values for number of dictionaries.
4505 * src/cid/cidparse.c: Apply.
4506 (cid_parser_new): Reject negative values for hex data length.
4507
45082015-02-20 Werner Lemberg <wl@gnu.org>
4509
Werner Lembergeb05bfb2015-02-20 08:37:35 +01004510 [cff] Signedness fixes for new engine.
4511
4512 * src/cff/cf2arrst.c, src/cff/cf2fixed.h, src/cff/cf2ft.c,
4513 src/cff/cf2ft.h, src/cff/cf2hints.c, src/cff/cf2intrp.c: Apply.
4514
45152015-02-20 Werner Lemberg <wl@gnu.org>
4516
Werner Lemberg3a8d0532015-02-20 08:35:32 +01004517 [cff] Signedness fixes for basic infrastructure and old engine.
4518
4519 * include/internal/pshints.h, src/cff/cffdrivr.c,
4520 src/cff/cffgload.c, src/cff/cffgload.h, src/cff/cffload.c,
4521 src/cff/cffobjs.c, src/cff/cffparse.c, src/pshinter/pshrec.c: Apply.
4522
Werner Lemberg81e5ff52015-02-19 09:46:48 +010045232015-02-19 Werner Lemberg <wl@gnu.org>
4524
Werner Lemberg3a1df3e2015-02-19 15:42:48 +01004525 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Ignore `countSizePairs'.
4526
4527 This is hard-coded to value 2 in `fvar' version 1.0 (and no newer
4528 version exists), but some fonts set it incorrectly.
4529
4530 Problem reported by Adam Twardoch <adam@fontlab.com>.
4531
45322015-02-19 Werner Lemberg <wl@gnu.org>
4533
Werner Lemberg93a884c2015-02-19 14:11:16 +01004534 [cff] Emit better error code for invalid private dict size.
4535
4536 * src/cff/cffparse.c (cff_parse_private_dict): Reject negative
4537 values for size and offset.
4538
45392015-02-19 Werner Lemberg <wl@gnu.org>
4540
Werner Lembergb57bb112015-02-19 10:44:18 +01004541 [autofit] Fix signedness issues.
4542
4543 * src/autofit/afangles.c, src/autofit/afcjk.c,
4544 src/autofit/afglobal.c, src/autofit/afhints.c,
4545 src/autofit/aflatin.c, src/autofit/aflatin2.c, src/autofit/afwarp.c,
4546 src/autofit/hbshim.c: Apply.
4547
45482015-02-19 Werner Lemberg <wl@gnu.org>
4549
Werner Lemberg81e5ff52015-02-19 09:46:48 +01004550 [autofit] Use macros for (unsigned) flags, not enumerations.
4551
4552 This harmonizes with other code in FreeType (and reduces the number
4553 of necessary casts to avoid compiler warnings).
4554
4555 * src/autofit/afblue.hin: Make flag macros unsigned.
4556 * src/autofit/afblue.h: Regenerated.
4557
4558 * src/autofit/afcjk.h: Replace flag enumeration with macros.
4559 * src/autofit/afcjk.c: Updated.
4560
4561 * src/autofit/afhints.h (AF_Flags, AF_Edge_Flags): Replace with
4562 macros.
4563 * src/autofit/afhints.c: Updated.
4564
4565 * src/autofit/aflatin.h: Replace flag enumerations with macros.
4566 * src/autofit/aflatin.c, src/autofit/aflatin2.c: Updated.
4567
4568 * src/autofit/aftypes.h (AF_ScalerFlags): Replace with macros.
4569
Werner Lemberg6a0ded72015-02-18 08:51:22 +010045702015-02-18 Werner Lemberg <wl@gnu.org>
4571
Werner Lemberg3b5f3322015-02-18 11:45:22 +01004572 [type1] Fix signedness issues.
4573
4574 * include/internal/psaux.h, include/internal/t1types.h,
4575 src/psaux/psobjs.c, src/psaux/psobjs.h, src/psaux/t1decode.c,
4576 src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1parse.c: Apply.
4577
45782015-02-18 Werner Lemberg <wl@gnu.org>
4579
Werner Lemberg272e3cd2015-02-18 11:38:46 +01004580 [psaux, type1] Fix minor AFM issues.
4581
4582 * include/internal/t1types.h (AFM_KernPairRec): Make indices
4583 unsigned.
4584 Update users.
4585 (AFM_FontInfoRec): Make element counters unsigned.
4586 Update users.
4587 * src/psaux/afmparse.h (AFM_ValueRec): Add union member for unsigned
4588 int.
4589
4590 * src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs):
4591 Reject negative values for number of kerning elements.
4592
4593 * src/type1/t1afm.c, src/tools/test_afm.c: Updated.
4594
45952015-02-18 Werner Lemberg <wl@gnu.org>
4596
Werner Lemberg6bd7d282015-02-18 09:22:06 +01004597 Don't use `FT_PtrDist' for lengths.
4598
4599 Use FT_UInt instead.
4600
4601 * include/internal/psaux.h (PS_Table_FuncsRec, PS_TableRec,
4602 T1_DecoderRec): Do it.
4603
4604 * include/internal/t1types.h (T1_FontRec): Ditto.
4605
4606 * src/cid/cidload.c (cid_parse_dict): Updated.
4607 * src/pfr/pfrload.c (pfr_extra_item_load_font_id): Ditto.
4608 * src/psaux/psobjs.c (ps_table_add), src/psaux/psobjs.h: Ditto.
4609 * src/type1/t1load.c (parse_blend_axis_types, parse_encoding,
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04004610 parse_charstrings, parse_dict): Ditto.
Werner Lemberg6bd7d282015-02-18 09:22:06 +01004611 * src/type42/t42parse.c (t42_parse_encoding, t42_parse_charstrings,
4612 t42_parse_dict): Ditto.
4613
46142015-02-18 Werner Lemberg <wl@gnu.org>
4615
Werner Lemberg6a0ded72015-02-18 08:51:22 +01004616 * src/type1/t1driver.c (t1_ps_get_font_value): Clean up.
4617 This handles negative values better, avoiding many casts.
4618
Werner Lemberg0a33a392015-02-17 08:03:05 +010046192015-02-17 Werner Lemberg <wl@gnu.org>
4620
Werner Lembergd3240c52015-02-17 20:30:36 +01004621 [base] Fix Savannah bug #44284.
4622
4623 * src/base/ftcalc.c (FT_MulFix): Typos.
4624
46252015-02-17 Werner Lemberg <wl@gnu.org>
4626
Werner Lemberg1f7a4e12015-02-17 10:17:56 +01004627 [truetype] Finish compiler warning fixes for signedness issues.
4628
4629 * src/truetype/ttgxvar.c, src/truetype/ttsubpix.c,
4630 src/truetype/ttsubpix.h: Apply.
4631
46322015-02-17 Werner Lemberg <wl@gnu.org>
4633
Werner Lemberg9daea2c2015-02-17 09:27:56 +01004634 * src/truetype/ttsubpix.c: Adding missing `static' keywords.
4635
46362015-02-17 Werner Lemberg <wl@gnu.org>
4637
Werner Lembergd9c3f152015-02-17 09:21:26 +01004638 [truetype] More signedness fixes.
4639
4640 * include/internal/tttypes.h, src/truetype/ttinterp.h,
4641 src/truetype/ttobjs.h, src/truetype/ttinterp.c,
4642 src/truetype/ttobjs.c: Apply.
4643
46442015-02-17 Werner Lemberg <wl@gnu.org>
4645
Werner Lemberg0a33a392015-02-17 08:03:05 +01004646 [truetype] Various signedness fixes.
4647
4648 * include/internal/ftgloadr.h, src/truetype/ttpload.c: Apply.
4649
4650 * src/truetype/ttgload.c: Apply.
4651 (TT_Get_VMetrics): Protect against invalid ascenders and descenders
4652 while constructing advance height.
4653
Werner Lemberg587351b2015-02-16 07:03:22 +010046542015-02-16 Werner Lemberg <wl@gnu.org>
4655
Werner Lemberg76abc752015-02-16 22:00:27 +01004656 [base] Finish compiler warning fixes for signedness issues.
4657
4658 * src/base/ftglyph.c, src/base/ftlcdfil.c, src/base/ftstroke.c:
4659 Apply.
4660
46612015-02-16 Werner Lemberg <wl@gnu.org>
4662
Werner Lemberg10aa8582015-02-16 20:12:54 +01004663 * include/tttables.h (TT_OS2): `fsType' must be FT_UShort.
4664
46652015-02-16 Werner Lemberg <wl@gnu.org>
4666
Werner Lemberg2e814fc2015-02-16 20:05:08 +01004667 More minor signedness warning fixes.
4668
4669 * src/base/ftbbox.c, src/base/ftbitmap.c, src/base/fttrigon.c,
4670 src/base/ftutil.c: Apply.
4671
46722015-02-16 Werner Lemberg <wl@gnu.org>
4673
Werner Lemberg82235d02015-02-16 19:35:16 +01004674 Next round of minor compiler warning fixes.
4675
4676 * include/internal/ftrfork.h (FT_RFork_Ref): Change `offset' member
4677 type to `FT_Long'.
4678 (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Add `static' keyword.
4679
Werner Lemberg3aaebe32015-02-23 08:20:27 +01004680 * include/internal/ftstream.h (FT_Stream_Pos): Return `FT_ULong'.
Werner Lemberg82235d02015-02-16 19:35:16 +01004681
4682 * src/base/ftoutln.c, src/base/ftrfork.c, src/base/ftstream.c:
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04004683 Signedness fixes.
Werner Lemberg82235d02015-02-16 19:35:16 +01004684
46852015-02-16 Werner Lemberg <wl@gnu.org>
4686
Werner Lemberg3cfa4d12015-02-16 17:59:06 +01004687 Various minor signedness fixes.
4688
4689 * include/ftadvanc.h, include/internal/ftobjs.h,
4690 src/base/ftgloadr.c, src/base/ftobjs.c: Apply.
4691
46922015-02-16 Werner Lemberg <wl@gnu.org>
4693
Werner Lemberg6f325c22015-02-16 11:31:32 +01004694 New `TYPEOF' macro.
4695
4696 This helps suppress signedness warnings, avoiding issues with
4697 implicit conversion changes.
4698
4699 * include/config/ftconfig.h, builds/unix/ftconfig.in,
4700 builds/vms/ftconfig.h (TYPEOF): Define.
4701
4702 * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
4703 src/autofit/afwarp.h (AF_WARPER_FLOOR): Use it.
4704
47052015-02-16 Werner Lemberg <wl@gnu.org>
4706
Werner Lemberg1f377f02015-02-16 08:37:09 +01004707 * src/base/ftsystem.c: Use casts in standard C function wrappers.
4708 (ft_alloc, ft_realloc, ft_ansi_stream_io, FT_Stream_Open): Do it.
4709
47102015-02-16 Werner Lemberg <wl@gnu.org>
4711
Werner Lemberg0814b802015-02-16 07:29:53 +01004712 Fix Savannah bug #44261.
4713
4714 * builds/unix/detect.mk (setup) [unix]: Set `CONFIG_SHELL' in the
4715 environment also while calling the configure script.
4716
47172015-02-16 Werner Lemberg <wl@gnu.org>
4718
Werner Lemberg587351b2015-02-16 07:03:22 +01004719 * include/internal/ftmemory.h: Add some `FT_Offset' casts.
4720 (FT_MEM_SET, FT_MEM_COPY, FT_MEM_MOVE, FT_ARRAY_ZERO, FT_ARRAY_COPY,
4721 FT_MEM_MOVE): Do it.
4722
Werner Lemberg6d7d6362015-02-15 12:30:42 +010047232015-02-15 Werner Lemberg <wl@gnu.org>
4724
Werner Lemberg48186b82015-02-16 06:37:36 +01004725 [base] Clean up signedness issues in `ftdbgmem.c'.
4726
4727 Also fix other minor issues.
4728
4729 * src/base/ftdbgmem.c (FT_MemTableRec): Replace all FT_ULong types
4730 with FT_Long for consistency.
4731 (ft_mem_primes): Change type to `FT_Int'.
4732 (ft_mem_closest_prime, ft_mem_table_set): Updated.
4733
4734 (ft_mem_debug_panic, ft_mem_debug_alloc, ft_mem_debug_free,
4735 ft_mem_debug_realloc): Use `static' keyword and fix signedness
4736 warnings where necessary.
4737
4738 (ft_mem_table_resize, ft_mem_table_new, ft_mem_table_destroy,
4739 ft_mem_table_get_nodep, ft_mem_debug_init, FT_DumpMemory): Fix types
4740 and add or remove casts to avoid signedness warnings.
4741
47422015-02-15 Werner Lemberg <wl@gnu.org>
4743
Werner Lemberg6d7d6362015-02-15 12:30:42 +01004744 [base] Clean up signedness in arithmetic functions.
4745
4746 This makes the code more readable and reduces compiler warnings.
4747
4748 * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_MulFix,
4749 FT_DivFix): Convert input parameters to unsigned, do the
4750 computation, then convert the result back to signed.
4751 (ft_corner_orientation): Fix casts.
4752
Werner Lemberg92359bd2015-02-07 09:47:23 +010047532015-02-07 Werner Lemberg <wl@gnu.org>
4754
4755 [sfnt] Fix Savannah bug #44184.
4756
4757 * src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir): No
4758 longer reject `htmx' and `vmtx' tables with invalid length but
4759 sanitize them.
4760
Jon Anderson416d8792015-02-06 10:16:45 +010047612015-02-06 Jon Anderson <jon@websupergoo.com>
4762
4763 [truetype] Fix regression in the incremental glyph loader.
4764
4765 * src/truetype/ttgload.c (load_truetype_glyph): For incremental
4766 fonts, the glyph index may be greater than the number of glyphs
4767 indicated, so guard the check with a preprocessor conditional.
4768
Werner Lembergb6cb4992015-02-06 08:46:06 +010047692015-02-06 Werner Lemberg <wl@gnu.org>
4770
4771 [autofit] Fix potential memory leak.
4772
4773 While this doesn't show up with FreeType, exactly the same code
4774 leaks with ttfautohint's modified auto-hinter code (which gets used
4775 in a slightly different way).
4776
4777 It certainly doesn't harm since it is similar to already existing
4778 checks in the code for embedded arrays.
4779
4780 * src/autofit/afhints.c (af_glyph_hints_reload): Set `max_contours'
4781 and `max_points' for all cases.
4782
Werner Lemberg19146a52015-01-31 11:01:33 +010047832015-01-31 Werner Lemberg <wl@gnu.org>
4784
4785 [autofit] Add support for Thai script.
4786
4787 Thanks to Ben Mitchell <ben@rosettatype.com> for guidance with blue
4788 zone characters!
4789
4790 * src/autofit/afblue.dat: Add blue zone data for Thai.
4791
4792 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
4793
4794 * src/autofit/afscript.h: Add Thai standard characters.
4795
4796 * src/autofit/afranges.c: Add Thai data.
4797
4798 * src/autofit/afstyles.h: Add Thai data.
4799
Behdad Esfahbod264b5e42015-01-23 21:23:55 +010048002015-01-23 Behdad Esfahbod <behdad@behdad.org>
4801
4802 [raster] Handle `FT_RASTER_FLAG_AA' correctly.
4803
4804 This fixes a breakage caused by the commit `[raster] Remove
4805 5-level gray AA mode from monochrome rasterizer.'.
4806
Werner Lembergd2c531e2015-01-23 22:37:42 +01004807 Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de>.
Behdad Esfahbod264b5e42015-01-23 21:23:55 +01004808
4809 * src/raster/ftraster.c (ft_black_render): Handle
4810 `FT_RASTER_FLAG_AA'.
4811
4812 * src/raster/ftrend1.c (ft_raster1_render): Remove gray AA mode
4813 remnants.
4814
Werner Lemberg79a5ac62015-01-18 07:30:04 +010048152015-01-18 Werner Lemberg <wl@gnu.org>
4816
4817 * src/base/ftobjs.c (FT_New_Library): Fix compiler warning.
4818
Chris Liddell942aa5f2015-01-18 07:29:48 +010048192015-01-18 Chris Liddell <chris.liddell@artifex.com>
4820
4821 [raster] Fix Savannah bug #44022.
4822
4823 Add fallback for glyphs with degenerate bounding boxes.
4824
4825 If a glyph has only one very narrow feature, the bbox can end up
4826 with either the width or height of the bbox being 0, in which case
4827 no raster memory is allocated and no attempt is made to render the
4828 glyph. This is less than ideal when the drop-out compensation in
4829 the rendering code would actually result in the glyph being
4830 rendered.
4831
4832 This problem can be observed with the `I' glyph (gid 47) in the
4833 Autodesk RomanS TrueType font.
4834
4835 * src/raster/ftrend1.c (ft_raster1_render): Add a fallback if either
4836 dimension is zero to explicitly round up/down (instead of simply
4837 round).
4838
Werner Lemberg50be00d2015-01-17 20:38:31 +010048392015-01-17 Werner Lemberg <wl@gnu.org>
4840
4841 Add some tools to handle yearly copyright notice updates.
4842
4843 We are now following the GNU guidelines: A new release automatically
4844 means that the copyright year of all affected files gets updated; it
4845 is no longer used to track years of modification changes.
4846
4847 * src/tools/update-copyright-year: New Perl script.
4848 * src/tools/update-copyright: New shell script that calls
4849 `update-copyright-year' on all files.
4850 * src/tools/no-copyright: Exceptions that should not be handled by
4851 `update-copyright'
4852
Werner Lemberg4eff8542015-01-14 20:06:19 +010048532015-01-14 Werner Lemberg <wl@gnu.org>
4854
4855 * docs/CHANGES: Updated, using a description from Behdad.
4856
Behdad Esfahbod3f9b3d82015-01-14 15:48:12 +010048572015-01-14 Behdad Esfahbod <behdad@behdad.org>
4858
Behdad Esfahbod48c86622015-01-14 19:38:36 +01004859 * src/autofit/afmodule.c (af_autofitter_done): Fix compiler warning.
4860
48612015-01-14 Behdad Esfahbod <behdad@behdad.org>
4862
Behdad Esfahbod56ddafa2015-01-14 19:36:02 +01004863 [autofit] Add embedded array of segments and edges.
4864
4865 Avoids multiple mallocs per typical glyphs.
4866
4867 With this and recent changes to avoid mallocs, the thread-safe
4868 stack-based loader is now as fast as the previous model that had one
4869 cached singleton.
4870
4871 * src/autofit/afhints.h (AF_SEGMENTS_EMBEDDED, AF_EDGES_EMBEDDED):
4872 New macros.
4873 (AF_AxisHintsRec): Add two arrays for segments and edges.
4874
4875 * src/autofit/afhints.c (af_axis_hints_new_segment): Only allocate
4876 data if number of segments exceeds given threshold value.
4877 (af_axis_hints_new_edge): Only allocate data if number of edges
4878 exceeds given threshold value.
4879 (af_glyph_hints_done): Updated.
4880
48812015-01-14 Behdad Esfahbod <behdad@behdad.org>
4882
Behdad Esfahbod6f16b102015-01-14 19:26:49 +01004883 [autofit] Add embedded arrays for points and contours.
4884
4885 This avoids at least two malloc calls for typical glyphs.
4886
4887 * src/autofit/afhints.h (AF_POINTS_EMBEDDED, AF_CONTOURS_EMBEDDED):
4888 New macros.
4889 (AF_GlyphHintsRec): Add two arrays for contours and points.
4890
4891 * src/autofit/afhints.c (af_glyph_hints_init, af_glyph_hints_done):
4892 Updated.
4893 (af_glyph_hints_reload): Only allocate data if number of contours or
4894 points exceeds given threshold values.
4895
48962015-01-14 Behdad Esfahbod <behdad@behdad.org>
4897
Behdad Esfahbodc2733652015-01-14 19:16:12 +01004898 [autofit] Allocate hints object on the stack.
4899
4900 This avoids one malloc per load.
4901
4902 * src/autofit/afloader.h (AF_LoaderRec): Change type of `hints' to
4903 `AF_GlyphHints'.
4904 Update prototype.
4905
4906 * src/autofit/afloader.c (af_loader_init): Use `AF_GlyphHints'
4907 parameter instead of `FT_Memory'.
4908 (af_loader_done): Directly reset `load_hints'.
4909 (af_loader_load_g): Updated.
4910
4911 * src/autofit/afmodule.c (af_autofitter_load_glyph): Use local
4912 `hints' object.
4913
49142015-01-14 Behdad Esfahbod <behdad@behdad.org>
4915
Behdad Esfahboda4117fb2015-01-14 19:07:54 +01004916 [autofit] Reuse slot glyph loader.
4917
4918 No need to create a new glyph loader; we can reuse the one from
4919 `slot->internal->loader'. It's hard to tell why it was written that
4920 way originally, but new code looks sound and correct to me, and
4921 avoids lots of allocations.
4922
4923 * src/autofit/afloader.c (af_loader_init): Change return type to
4924 `void'.
4925 Don't call `FT_GlyphLoader_New'.
4926 (af_loader_reset): Don't call `FT_GlyphLoader_Rewind'.
4927 (af_loader_load_g): Update code to use `internal->loader', which
4928 doesn't need copying of data.
4929
4930 * src/autofit/afloader.h (AF_LoaderRec): Remove `gloader' member.
4931 Update prototype.
4932
4933 * src/autofit/afmodule.c (af_autofitter_load_glyph): Updated.
4934
49352015-01-14 Behdad Esfahbod <behdad@behdad.org>
4936
Behdad Esfahbodae6699f2015-01-14 18:55:39 +01004937 [autofit] Remove (unused) support for composite glyphs.
4938
4939 We never have to deal with composite glyphs in the autohinter, as
4940 those will be loaded into FORMAT_OUTLINE by the recursed
4941 `FT_Load_Glyph' function.
4942
4943 In the rare cases that FT_LOAD_NO_RECURSE is set, it will imply
4944 FT_LOAD_NO_SCALE as per `FT_Load_Glyph', which then implies
4945 FT_LOAD_NO_HINTING:
4946
4947 /* resolve load flags dependencies */
4948
4949 if ( load_flags & FT_LOAD_NO_RECURSE )
4950 load_flags |= FT_LOAD_NO_SCALE |
4951 FT_LOAD_IGNORE_TRANSFORM;
4952
4953 if ( load_flags & FT_LOAD_NO_SCALE )
4954 {
4955 load_flags |= FT_LOAD_NO_HINTING |
4956 FT_LOAD_NO_BITMAP;
4957
4958 load_flags &= ~FT_LOAD_RENDER;
4959 }
4960
4961 and as such the auto-hinter is never called. Thus, the recursion in
4962 `af_loader_load_g' never actually happens. So remove the depth
4963 counter as well.
4964
4965 * src/autofit/afloader.c (af_loader_load_g): Remove `depth'
4966 parameter.
4967 <FT_GLYPH_FORMAT_COMPOSITE>: Remove associated code.
4968 (af_loader_load_glyph): Updated.
4969
49702015-01-14 Behdad Esfahbod <behdad@behdad.org>
4971
Behdad Esfahbodc242fe42015-01-14 18:48:14 +01004972 [raster] Fix uninitialized memory access.
4973
4974 Apparently `ras.cProfile' might be uninitialized. This will be the
4975 case if `ras.top == ras.cProfile->offset', as can be seen in
4976 `End_Profile'. The overshoot code introduced in a change `Fix B/W
4977 rasterization of subglyphs with different drop-out modes.' (from
4978 2009-06-18) violated this, accessing `ras.cProfile->flags'
4979 unconditionally just before calling `End_Profile' (which then
4980 detected that `cProfile' is uninitialized and didn't touch it).
4981
4982 This was harmless, and was not detected by valgrind before because
4983 the objects were allocated on the `raster_pool', which was always
4984 initialized. With recent change to allocate raster buffers on the
4985 stack, valgrind now reported this invalid access.
4986
4987 * src/raster/ftraster.c (Convert_Glyph): Don't access an
4988 uninitialized `cProfile'.
4989
49902015-01-14 Behdad Esfahbod <behdad@behdad.org>
4991
Behdad Esfahbodb2ba6862015-01-14 18:43:13 +01004992 [smooth] Fix uninitialized memory access.
4993
4994 Looks like `ras.span_y' could always be used without initialization.
4995 This was never detected by valgrind before because the library-wide
4996 `raster_pool' was used for the worker object and `raster_pool' was
4997 originally zero'ed. But subsequent reuses of it were using `span_y'
4998 uninitialized. With the recent change to not use `render_pool' and
4999 allocate worker and buffer on the stack, valgrind now detects this
5000 uninitialized access.
5001
5002 * src/smooth/ftgrays.c (gray_raster_render): Initialize
5003 `ras.span_y'.
5004
50052015-01-14 Behdad Esfahbod <behdad@behdad.org>
5006
Behdad Esfahbod603292d2015-01-14 18:35:56 +01005007 [base] Don't initialize unused `driver->glyph_loader'.
5008
5009 * src/base/ftobjs.c (Destroy_Driver): Don't call
5010 `FT_GlyphLoader_Done'.
5011 (FT_Add_Module): Don't call `FT_GlyphLoader_New'.
5012
50132015-01-14 Behdad Esfahbod <behdad@behdad.org>
5014
Behdad Esfahbod51634252015-01-14 18:30:59 +01005015 [base] Don't allocate `library->raster_pool' anymore.
5016
5017 It's unused after the following commits:
5018
5019 [raster] Allocate render pool for mono rasterizer on the stack.
5020 [raster] Remove 5-level gray AA mode from monochrome rasterizer.
5021
5022 The value of FT_RENDER_POOL_SIZE still serves the purpose it used to
5023 serve, which is, to adjust the pool size. But the pool is now
5024 allocated on the stack on demand.
5025
5026 * src/base/ftobjs.c (FT_New_Library, FT_Done_Library): Implement.
5027
50282015-01-14 Behdad Esfahbod <behdad@behdad.org>
5029
Behdad Esfahbod6dfdaf42015-01-14 18:21:13 +01005030 [base] Do not reorder library->renderers upon use.
5031
5032 Instead of keeping `library->renderers' in a MRU order, just leave
5033 it as-is. The MRU machinery wasn't thread-safe.
5034
5035 With this patch, rasterizing glyphs from different faces from
5036 different threads doesn't fail choosing rasterizer
5037 (FT_Err_Cannot_Render_Glyph).
5038
5039 Easiest to see that crash was to add a `printf' (or otherwise let
5040 thread yield in FT_Throw with debugging enabled).
5041
5042 * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c
5043 (FT_Outline_Render): Don't call `FT_Set_Renderer'.
5044
50452015-01-14 Behdad Esfahbod <behdad@behdad.org>
5046
Behdad Esfahboda773c302015-01-14 18:16:20 +01005047 [raster] Allocate render pool for mono rasterizer on the stack.
5048
5049 Instead of using the `render_pool' member of `FT_Library' that is
5050 provided down to the rasterizer, completely ignore that and allocate
5051 needed objects on the stack instead.
5052
5053 With this patch, rasterizing glyphs from different faces from
5054 different threads doesn't crash in the monochrome rasterizer.
5055
5056 * src/raster/ftraster.c (black_TRaster): Remove `buffer',
5057 `buffer_size', and `worker' members.
5058
5059 (ft_black_render): Create `buffer' locally.
5060 (ft_black_reset): Updated.
5061
50622015-01-14 Behdad Esfahbod <behdad@behdad.org>
5063
Behdad Esfahbod8dc86352015-01-14 18:06:22 +01005064 [raster] Remove 5-level gray AA mode from monochrome rasterizer.
5065
5066 It was off by default and couldn't be turned on at runtime. And the
5067 smooth rasterizer superceded it over ten years ago. No point in
5068 keeping. Comments suggested that it was there for compatibility
5069 with FreeType 1.
5070
5071 550 lines down.
5072
5073 * src/raster/ftraster.c (FT_RASTER_OPTION_ANTI_ALIASING,
5074 RASTER_GRAY_LINES): Remove macros and all associated code.
5075
5076 (black_TWorker): Remove `gray_min_x' and `gray_max_x'.
5077 (black_TRaster): Remove `grays' and `gray_width'.
5078
5079 (Vertical_Sweep_Init, Vertical_Sweep_Span, Vertical_Sweep_Drop,
5080 ft_black_render): Updated.
5081
5082 * src/raster/ftrend1.c (ft_raster1_render): Simplify code.
5083 (ft_raster5_renderer_class): Removed.
5084
50852015-01-14 Behdad Esfahbod <behdad@behdad.org>
5086
Behdad Esfahbod747ae2c2015-01-14 17:54:26 +01005087 [smooth] Allocate render pool for smooth rasterizer on the stack.
5088
5089 Instead of using the `render_pool' member of `FT_Library' that is
5090 provided down to the rasterizer, completely ignore that and allocate
5091 needed objects on the stack instead.
5092
5093 With this patch, rasterizing glyphs from different faces from
5094 different threads doesn't crash in the smooth rasterizer.
5095
5096 Bugs:
5097
5098 https://bugzilla.redhat.com/show_bug.cgi?id=678397
5099 https://bugzilla.redhat.com/show_bug.cgi?id=1004315
5100 https://bugzilla.redhat.com/show_bug.cgi?id=1165471
5101 https://bugs.freedesktop.org/show_bug.cgi?id=69034
5102
5103 * src/smooth/ftgrays.c (gray_TRaster): Remove `buffer',
5104 `buffer_size', `band_size', and `worker' members.
5105
5106 (gray_raster_render): Create `buffer', `buffer_size', and
5107 `band_size' locally.
5108 (gray_raster_reset): Updated.
5109
51102015-01-14 Behdad Esfahbod <behdad@behdad.org>
5111
Behdad Esfahbod531d4632015-01-14 17:46:55 +01005112 [truetype] Allocate TT_ExecContext in TT_Size instead of TT_Driver.
5113
5114 Previously the code had stipulation for using a per-TT_Size exec
5115 context if `size->debug' was true. But there was no way that
5116 `size->debug' could *ever* be true. As such, the code was always
5117 using the singleton `TT_ExecContext' that was stored in `TT_Driver'.
5118 This was, clearly, not threadsafe.
5119
5120 With this patch, loading glyphs from different faces from different
5121 threads doesn't crash in the bytecode loader code.
5122
5123 * src/truetype/ttobjs.h (TT_SizeRec): Remove `debug' member.
5124 (TT_DriverRec): Remove `context' member.
5125
5126 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Remove
5127 `TT_ExecContext' code related to a global `TT_Driver' object.
5128
5129 (tt_driver_done): Don't remove `TT_ExecContext' object here but ...
5130 (tt_size_done_bytecode): ... here.
5131
5132 (tt_driver_init): Don't create `TT_ExecContext' object here but ...
5133 (tt_size_init_bytecode): ... here, only on demand.
5134
5135 * src/truetype/ttinterp.c (TT_Run_Context): Remove defunct debug
5136 code.
5137 (TT_New_Context): Remove `TT_ExecContext' code related to a global
5138 `TT_Driver' object.
5139
5140 * src/truetype/ttinterp.h: Updated.
5141
5142 * src/truetype/ttgload.c (TT_Hint_Glyph, tt_loader_init): Updated.
5143
51442015-01-14 Behdad Esfahbod <behdad@behdad.org>
5145
Behdad Esfahbod89bc8d42015-01-14 16:01:19 +01005146 [autofit] Allocate AF_Loader on the stack instead of AF_Module.
5147
5148 Stop sharing a global `AF_Loader'. Allocate one on the stack during
5149 glyph load.
5150
5151 Right now this results in about 25% slowdown, to be fixed in a
5152 following commit.
5153
5154 With this patch loading glyphs from different faces from different
5155 threads doesn't immediately crash in the autohinting loader code.
5156
5157 Bugs:
5158
5159 https://bugzilla.redhat.com/show_bug.cgi?id=1164941
5160
5161 * src/autofit/afloader.c (af_loader_init): Pass
5162 `AF_Loader' and `FT_Memory' instead of `AF_Module' as arguments.
5163 (af_loader_reset, af_loader_load_glyph): Also pass `loader' as
5164 argument.
5165 (af_loader_done): Use `AF_Loader' instead of `AF_Module' as
5166 argument.
5167
5168 * src/autofit/afmodule.c (af_autofitter_init): Don't call
5169 `af_loader_init'.
5170 (af_autofitter_done): Don't call `af_loader_done'.
5171 (af_autofitter_load_glyph): Use a local `AF_Loader' object.
5172
5173 * src/autofit/afloader.h: Include `afmodule.h'.
5174 Update prototypes.
5175 Move typedef for `AF_Module' to...
5176
5177 * src/autofit/afmodule.h: ... this place.
5178 No longer include `afloader.h'.
5179
51802015-01-14 Behdad Esfahbod <behdad@behdad.org>
5181
Behdad Esfahbod3f9b3d82015-01-14 15:48:12 +01005182 * src/type42/t42objs.h (T42_DriverRec): Remove unused member.
5183
Werner Lemberg36d03c92015-01-12 11:26:30 +010051842015-01-12 Werner Lemberg <wl@gnu.org>
5185
5186 Fix Savannah bug #43976.
5187
5188 Assure that FreeType's internal include directories are found before
5189 `CPPFLAGS' (which might be set by the user in the environment), and
5190 `CPPFLAGS' before `CFLAGS'.
5191
5192 * builds/freetype.mk (FT_CFLAGS): Don't add `INCLUDE_FLAGS'.
5193 (FT_COMPILE): Make this a special variable for compiling only the
5194 files handled in `freetype.mk'.
5195 (.c.$O): Removed, unused.
5196
5197 * src/*/rules.mk (*_COMPILE): Fix order of include directories.
5198
Werner Lembergd03a67a2015-01-11 08:39:14 +010051992015-01-11 Werner Lemberg <wl@gnu.org>
5200
Alexei Podtelezhnikovc6d99a42016-04-08 00:05:50 -04005201 [truetype] Prettifying.
Werner Lemberg95b57052015-01-11 09:50:49 +01005202
5203 * src/truetype/ttinterp.c (project, dualproj, fast_project,
5204 fast_dualproj): Rename to...
5205 (PROJECT, DUALPROJ, FAST_PROJECT, FAST_DUALPROJ): ... this.
5206
52072015-01-11 Werner Lemberg <wl@gnu.org>
5208
Werner Lembergea173c02015-01-11 08:58:54 +01005209 * src/truetype/ttinterp.c (Ins_JROT, Ins_JROF): Simplify.
5210
5211 Based on a patch from Behdad.
5212
52132015-01-11 Werner Lemberg <wl@gnu.org>
5214
Werner Lemberg628578c2015-01-11 08:53:31 +01005215 * src/truetype/ttinterp.c (Ins_SxVTL): Simplify function call.
5216
52172015-01-11 Werner Lemberg <wl@gnu.org>
5218
Werner Lemberg08e79092015-01-11 08:45:50 +01005219 * src/truetype/ttinterp.c (Normalize): Remove unused argument.
5220
52212015-01-11 Werner Lemberg <wl@gnu.org>
5222
Werner Lembergd03a67a2015-01-11 08:39:14 +01005223 [truetype] More macro expansions.
5224
Werner Lemberg4aaadf42015-01-11 08:42:28 +01005225 * src/truetype/ttinterp.c (FT_UNUSED_EXEC): Remove macro by
5226 expansion.
5227
52282015-01-11 Werner Lemberg <wl@gnu.org>
5229
5230 [truetype] More macro expansions.
5231
Werner Lembergd03a67a2015-01-11 08:39:14 +01005232 * src/truetype/ttinterp.c (INS_ARG): Remove macro by expansion,
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04005233 adjusting function calls where necessary.
Werner Lembergd03a67a2015-01-11 08:39:14 +01005234 (FT_UNUSED_ARG): Removed, no longer needed.
5235
Werner Lemberg1b4d68c2015-01-10 19:56:28 +010052362015-01-10 Werner Lemberg <wl@gnu.org>
5237
Werner Lembergeb341362015-01-11 00:23:27 +01005238 [truetype] More macro expansions.
5239
5240 Based on a patch from Behdad.
5241
5242 * src/truetype/ttinterp.c (DO_*): Expand macros into corresponding
5243 `Ins_*' functions.
5244 (TT_RunIns): Replace `DO_*' macros with `Ins_*' function calls.
5245 (ARRAY_BOUND_ERROR): Remove second definition, which is no longer
5246 needed.
5247 (Ins_SVTCA, Ins_SPVTCA, Ins_SFVTCA): Replaced with...
5248 (Ins_SxyTCA): New function.
5249
52502015-01-10 Werner Lemberg <wl@gnu.org>
5251
Werner Lemberg01be1302015-01-10 23:05:37 +01005252 [truetype] Remove TT_CONFIG_OPTION_INTERPRETER_SWITCH.
5253
5254 Behdad suggested this code simplification, and nobody objected...
5255
5256 * include/config/ftoption.h, devel/ftoption.h
5257 (TT_CONFIG_OPTION_INTERPRETER_SWITCH): Remove.
5258
5259 * src/truetype/ttinterp.c [TT_CONFIG_OPTION_INTERPRETER_SWITCH]:
5260 Remove related code.
5261 (ARRAY_BOUND_ERROR): Use do-while loop.
5262
52632015-01-10 Werner Lemberg <wl@gnu.org>
5264
Werner Lembergfae0c812015-01-10 20:23:10 +01005265 [truetype] More macro expansions.
5266
Werner Lemberg6cc1f122015-01-10 21:56:59 +01005267 * src/truetype/ttinterp.c, src/truetype/ttinterp.h (EXEC_ARG_,
5268 EXEC_ARG): Remove by replacing with expansion.
5269
52702015-01-10 Werner Lemberg <wl@gnu.org>
5271
5272 [truetype] More macro expansions.
5273
Werner Lemberg24681452015-01-10 21:53:48 +01005274 Based on a patch from Behdad.
5275
5276 * src/truetype/ttinterp.c (SKIP_Code, GET_ShortIns, NORMalize,
5277 SET_SuperRound, ROUND_None, INS_Goto_CodeRange, CUR_Func_move,
5278 CUR_Func_move_orig, CUR_Func_round, CUR_Func_cur_ppem,
5279 CUR_Func_read_cvt, CUR_Func_write_cvt, CUR_Func_move_cvt,
5280 CURRENT_Ratio, INS_SxVTL, COMPUTE_Funcs, COMPUTE_Round,
5281 COMPUTE_Point_Displacement, MOVE_Zp2_Point): Remove by replacing
5282 with expansion.
5283
5284 (Cur_Func_project, CUR_Func_dualproj, CUR_fast_project,
5285 CUR_fast_dualproj): Replace with macros `project', `dualproj',
5286 `fast_project', `fast_dualproj'.
5287
52882015-01-10 Werner Lemberg <wl@gnu.org>
5289
5290 [truetype] More macro expansions.
5291
Werner Lembergfae0c812015-01-10 20:23:10 +01005292 * src/truetype/ttinterp.c (EXEC_OP_, EXEC_OP): Remove by replacing
5293 with expansion.
5294
52952015-01-10 Werner Lemberg <wl@gnu.org>
5296
Werner Lemberg5a752f32015-01-10 20:08:35 +01005297 [truetype] Remove code for static TrueType interpreter.
5298
5299 This is a follow-up patch.
5300
5301 * src/truetype/ttinterp.c, src/truetype/ttinterp.h
5302 [TT_CONFIG_OPTION_STATIC_INTERPRETER,
5303 TT_CONFIG_OPTION_STATIC_RASTER]: Remove macros and related code.
5304
53052015-01-10 Werner Lemberg <wl@gnu.org>
5306
Werner Lemberg1b4d68c2015-01-10 19:56:28 +01005307 * src/truetype/ttinterp.c (CUR): Remove by replacing with expansion.
5308
5309 This starts a series of patches that simplifies the code of the
5310 bytecode interpreter.
5311
Werner Lembergf6aa0892013-05-10 07:58:47 +02005312
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00005313----------------------------------------------------------------------------
5314
Werner Lemberg9adeab62016-01-13 11:54:10 +01005315Copyright 2015-2016 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00005316David Turner, Robert Wilhelm, and Werner Lemberg.
5317
5318This file is part of the FreeType project, and may only be used, modified,
5319and distributed under the terms of the FreeType project license,
5320LICENSE.TXT. By continuing to use, modify, or distribute this file you
5321indicate that you have read the license and understand and accept it
5322fully.
5323
5324
5325Local Variables:
5326version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00005327coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00005328End: