blob: 9ae3ce6148e315c6cd2d6c5d4844aaf70346b530 [file] [log] [blame]
Werner Lembergf147fb22016-07-16 07:06:21 +020012016-07-14 Behdad Esfahbod <behdad@behdad.org>
2
3 [truetype] More fixes for GX.
4
5 This finally fixes the rendering of the cyclist and the lizard in
6 the `Zycon' font.
7
8 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): `first' point
9 index is always cumulative.
10
11 (tt_handle_deltas): Rename to...
12 (tt_interpolate_deltas): ... This.
13 Add new parameter for output point array.
14 Update caller.
15
16 (TT_Vary_Apply_Glyph_Deltas): Add `points_out' array; it now holds
17 the intermediate results of `tt_interpolate_deltas' that are to be
18 added to `outline->points'.
19
Werner Lembergaafff572016-07-16 06:41:39 +0200202016-07-15 Werner Lemberg <wl@gnu.org>
21
22 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Thinko.
23
24 `max_pos' is always larger than `min_pos' so `FT_ABS' is not needed.
25
26 Reported by Alexei.
27
Nikolaus Waxweiler86eb43a2016-07-16 06:37:57 +0200282016-07-16 Nikolaus Waxweiler <madigens@gmail.com>
29
30 * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
31
32 Problem reported by Hin-Tak Leung.
33
Werner Lemberg894c0222016-07-15 10:23:11 +0200342016-07-15 Werner Lemberg <wl@gnu.org>
35
Werner Lemberg1831e6f2016-07-15 10:35:32 +020036 [autofit] Update and improve segment and edge tracing.
37
38 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
39 `delta' also.
40 Don't show first point of segment as a replacement for `pos'; this
41 is (a) misleading, since the difference to `pos' can be almost
42 arbitrarily large in corner cases, and (b) it is better to have all
43 segment data in font units instead of a single value given in output
44 space coordinates.
45 Improve layout.
46 (af_glyph_hints_dump_edges): Show px->units and units->px conversion
47 values for convenience.
48 Improve layout.
49
502016-07-15 Werner Lemberg <wl@gnu.org>
51
Werner Lemberg894c0222016-07-15 10:23:11 +020052 [autofit] For edges, reject segments wider than 1px (#41334).
53
54 * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
55
56 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
57 `delta'.
58 (af_latin_hints_compute_edges): Reject segments with a delta larger
59 than 0.5px.
60
Werner Lemberg631e2182016-07-14 06:25:05 +0200612016-07-14 Werner Lemberg <wl@gnu.org>
62
Werner Lembergff655432016-07-14 15:01:55 +020063 * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
64
652016-07-14 Werner Lemberg <wl@gnu.org>
66
Werner Lembergee3f36f2016-07-14 10:25:20 +020067 [sfnt] Fix `face_index' value in `FT_Face' for named instances.
68
69 * src/sfnt/sfobjc.s (sfnt_init_face): Don't strip off higher 16bits.
70
712016-07-14 Werner Lemberg <wl@gnu.org>
72
Werner Lemberg631e2182016-07-14 06:25:05 +020073 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
74
Behdad Esfahbod0f9ddf22016-07-14 06:08:39 +0200752016-07-14 Behdad Esfahbod <behdad@behdad.org>
76
77 [truetype] Fix gxvar delta interpolation.
78
79 The coordinates of the base font should be used for interpolation
80 purposes, NOT the current points (i.e., the result of accumulation
81 of previous deltas).
82
83 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
84 `points_org' before looping over all tuples.
85
Werner Lembergf9b18712016-07-12 06:18:49 +0200862016-07-12 Werner Lemberg <wl@gnu.org>
87
88 * Version 2.6.5 released.
89 =========================
90
91
92 Tag sources with `VER-2-6-5'.
93
Werner Lemberg42611032016-07-14 06:03:52 +020094 This commit immediately follows `[mac] Fix ftexport.sym target in
95 Jamfile.' on a separate branch, which was then merged with master
96 after the release.
97
Werner Lembergf9b18712016-07-12 06:18:49 +020098 * include/freetype/config/ftoption.h
99 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Comment out.
100
101 * docs/VERSION.TXT: Add entry for version 2.6.5.
102
103 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
104 builds/windows/vc2005/index.html,
105 builds/windows/vc2008/freetype.vcproj,
106 builds/windows/vc2008/index.html,
107 builds/windows/vc2010/freetype.vcxproj,
108 builds/windows/vc2010/index.html,
109 builds/windows/visualc/freetype.dsp,
110 builds/windows/visualc/freetype.vcproj,
111 builds/windows/visualc/index.html,
112 builds/windows/visualce/freetype.dsp,
113 builds/windows/visualce/freetype.vcproj,
114 builds/windows/visualce/index.html,
115 builds/wince/vc2005-ce/freetype.vcproj,
116 builds/wince/vc2005-ce/index.html,
117 builds/wince/vc2008-ce/freetype.vcproj,
118 builds/wince/vc2008-ce/index.html: s/2.6.4/2.6.5/, s/264/265/.
119
120 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
121
122 * builds/unix/configure.raw (version_info): Set to 18:5:12.
123 * CMakeLists.txt (VERSION_PATCH): Set to 5.
124
125 * docs/CHANGES: Updated.
126
Werner Lembergc3e83b42016-07-11 05:56:26 +02001272016-07-11 Werner Lemberg <wl@gnu.org>
128
Werner Lemberg605946a2016-07-11 16:14:36 +0200129 Conditionally compile environment support.
130
131 * include/freetype/internal/ftobjs.h, src/autofit/afmodule.c,
132 src/base/ftobjs.c, src/cff/cffdrivr.c, src/truetype/ttdriver.c:
133 Decorate with `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES' where
134 necessary.
135
1362016-07-11 Werner Lemberg <wl@gnu.org>
137
Werner Lemberg8f8ae8c2016-07-11 15:11:38 +0200138 Handle properties in `FREETYPE_PROPERTIES' environment variable.
139
140 This commit covers the most important one.
141
142 * src/autofit/afmodule.c (af_property_set): Handle `warping',
143 `darkening-parameters', and `no-stem-darkening'.
144
145 * src/cff/cffdrivr.c (cff_property_set): Handle
146 `darkening-parameters', `hinting-engine', and `no-stem-darkening'.
147
148 * src/truetype/ttdriver.c (tt_property_set): Handle
149 `interpreter-version'.
150
1512016-07-11 Werner Lemberg <wl@gnu.org>
152
Werner Lembergc3e83b42016-07-11 05:56:26 +0200153 Replace calls to `atol' with `strtol'.
154
155 We later on need strtol's `endptr' feature.
156
157 * include/freetype/config/ftstdlib.h (ft_atol): Replace with...
158 (ft_strtol): ... this.
159
160 * src/base/ftdbgmem.c (ft_mem_debug_init): Updated.
161 * src/cid/cidparse.c (cid_parser_new): Ditto.
162 * src/type42/t42drivr.c (t42_get_name_index), src/type42/t42objs.c
163 (T42_GlyphSlot_Load): Ditto.
164
Werner Lemberg84d3df72016-07-11 00:12:11 +02001652016-07-10 Werner Lemberg <wl@gnu.org>
166
167 Implement handling of `FREETYPE_PROPERTIES' environment variable.
168
169 Recognizing properties follows in another commit.
170
171 * devel/ftoption.h, include/freetype/config/ftoption.h
172 (FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES): New macro.
173
174 * include/freetype/config/ftstdlib.h (ft_getenv): New macro.
175
176 * src/base/ftinit.c (ft_set_default_properties): New function to
177 parse `FREETYPE_PROPERTIES' and calling `ft_property_string_set'.
178 (FT_Init_FreeType): Updated.
179
Werner Lembergc3beb302016-07-10 07:11:45 +02001802016-07-09 Werner Lemberg <wl@gnu.org>
181
182 Add function `ft_property_string_set'.
183
184 This is a preparation for handling an `FREETYPE_PROPERTIES'
185 environment variable to control (some) driver properties.
186
187 No change in functionality.
188
189 * src/base/ftobjs.c (ft_property_do): Add `value_is_string'
190 parameter.
191 (ft_property_string_set): New function.
192 (FT_Property_Set, FT_Property_Get): Updated.
193
194 * include/freetype/internal/ftobjs.h: Updated.
195
196 * include/freetype/internal/services/svprop.h
197 (FT_Properties_SetFunc): Add `value_is_string' parameter.
198
199 * src/autofit/afmodule.c (af_property_set), src/cff/cffdrivr.c
200 (cff_property_set), src/truetype/ttdriver.c (tt_property_set):
201 Updated, emitting an error currently if `value_is_string' is set.
202
suzuki toshiya83c877f2016-07-09 13:36:27 +09002032016-07-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
204
205 [mac] Fix ftexport.sym target in Jamfile.
206
207 * Jamfile: Update the directories of the header files scanned for
208 ftexport.sym. They were incorrect since the migration of the
209 header files, on 2015-06-22. Either inexisting include/cache
210 (removed on 2006-03-20) is not needed to be listed explicitly.
211 Now ftmac.h is scanned only in the case of Mac OS & Mac OS X.
212
Alexei Podtelezhnikov4a2f8f12016-07-08 00:16:07 -04002132016-07-08 Alexei Podtelezhnikov <apodtele@gmail.com>
214
215 [smooth] Sub-banding protocol revision.
216
Werner Lemberg971f10b2016-07-08 06:59:31 +0200217 Rasterization sub-banding is utilized at large sizes while using a
218 rather small fixed memory pool. Indeed it is possible to make an
Alexei Podtelezhnikov4a2f8f12016-07-08 00:16:07 -0400219 educated guess how much memory is necessary at a given size for a
Werner Lemberg971f10b2016-07-08 06:59:31 +0200220 given glyph. It turns out that, for a large majority of European
221 glyphs, you should store about 8 times more boundary pixels than
222 their height. Or, vice versa, if your memory pool can hold 800
223 pixels the band height should be 100 and you should sub-band
224 anything larger than that. Should you still run out of memory,
225 FreeType bisects the band but you have wasted some time. This is
226 what has been implemented in FreeType since the beginning.
Alexei Podtelezhnikov4a2f8f12016-07-08 00:16:07 -0400227
Werner Lemberg971f10b2016-07-08 06:59:31 +0200228 It was overlooked, however, that the top band could grow to twice
229 the default band size leading to unnecessary memory overflows there.
230 This commit fixes that. Now the bands are distributed more evenly
231 and cannot exceed the default size.
Alexei Podtelezhnikov4a2f8f12016-07-08 00:16:07 -0400232
233 Now the magic number 8 is really suitable for rather simple European
Werner Lemberg971f10b2016-07-08 06:59:31 +0200234 scripts. For complex Chinese logograms the magic number should be
235 13 but that is subject for another day.
Alexei Podtelezhnikov4a2f8f12016-07-08 00:16:07 -0400236
237 * src/smooth/ftgrays.c (gray_convert_glyph): Revise sub-banding
238 protocol.
239
suzuki toshiya783cbcd2016-07-07 18:55:37 +09002402016-07-07 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
241
242 [mac] Fix Savannah bug #48417.
243
244 Mac OS X linker throws errors when `-exported_symbol_list' input
245 file includes non-existing symbols. Reported by Ryan Schmidt.
246
247 * builds/exports.mk: Exclude ftmac.h from the headers for apinames
248 by default. Include it when ftmac.c would be compiled.
249
Werner Lemberg474682f2016-07-06 08:54:35 +02002502016-07-06 Werner Lemberg <wl@gnu.org>
251
252 * src/truetype/ttinterp.c (TInstruction_Function): Removed, unused.
253
Werner Lembergadfec0a2016-07-05 07:38:52 +02002542016-07-05 Werner Lemberg <wl@gnu.org>
255
Werner Lembergd80fe692016-07-05 15:40:19 +0200256 * Version 2.6.4 released.
257 =========================
258
259
260 Tag sources with `VER-2-6-4'.
261
262 * docs/VERSION.TXT: Update documentation and bump version number to
263 2.6.4.
264
265 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
266 builds/windows/vc2005/index.html,
267 builds/windows/vc2008/freetype.vcproj,
268 builds/windows/vc2008/index.html,
269 builds/windows/vc2010/freetype.vcxproj,
270 builds/windows/vc2010/index.html,
271 builds/windows/visualc/freetype.dsp,
272 builds/windows/visualc/freetype.vcproj,
273 builds/windows/visualc/index.html,
274 builds/windows/visualce/freetype.dsp,
275 builds/windows/visualce/freetype.vcproj,
276 builds/windows/visualce/index.html,
277 builds/wince/vc2005-ce/freetype.vcproj,
278 builds/wince/vc2005-ce/index.html,
279 builds/wince/vc2008-ce/freetype.vcproj,
280 builds/wince/vc2008-ce/index.html: s/2.6.3/2.6.4/, s/263/264/.
281
282 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
283
284 * builds/unix/configure.raw (version_info): Set to 18:4:12.
285 * CMakeLists.txt (VERSION_PATCH): Set to 4.
286
287 * docs/CHANGES: Updated.
288
2892016-07-05 Werner Lemberg <wl@gnu.org>
290
Werner Lembergadfec0a2016-07-05 07:38:52 +0200291 * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Fix compiler warning.
292
Alexei Podtelezhnikovd1876e52016-07-04 23:46:53 -04002932016-07-04 Alexei Podtelezhnikov <apodtele@gmail.com>
294
295 [smooth] Variable type revision (part 2).
296
297 * src/smooth/ftgrays.c (TArea): Restore original definition as `int'.
298 (gray_render_line) [FT_LONG64]: Updated.
299 (gray_convert_glyph): 32-bit band bisection stack should be 32 bands.
300 (gray_convert_glyph_inner): Trace successes and failures.
301
Werner Lemberg5e353f02016-07-04 14:59:22 +02003022016-07-04 Werner Lemberg <wl@gnu.org>
303
304 [autofit] Handle single-point contours as segments.
305
306 Doing so allows us to link them to edges – some fonts like
307 `NotoSansGurmukhi-Regular' have such isolated points sitting exactly
308 on other outlines.
309
310 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Don't
311 ignore one-point contours but handle them specially as one-point
312 segments.
313 (af_latin_hints_compute_edges): Append one-point segments to edges
314 if possible.
315
Werner Lembergaab2b8d2016-07-02 08:37:44 +02003162016-07-02 Werner Lemberg <wl@gnu.org>
317
Werner Lemberg8b8c4402016-07-02 18:35:50 +0200318 [autofit] Remove unused structure members.
319
320 * src/autofit/afhints.h (AF_SegmentRec, AF_EdgeRec): Remove
321 `num_linked'.
322
323 * src/autofit/afcjk.c (af_cjk_hints_link_segments): Updated.
324
3252016-07-02 Werner Lemberg <wl@gnu.org>
326
Werner Lembergaab2b8d2016-07-02 08:37:44 +0200327 [autofit] Update to Unicode 9.0.0.
328
329 * src/autofit/afranges.c (af_arab_nonbase_uniranges,
330 af_cyrl_uniranges): Add new data.
331
Alexei Podtelezhnikov597c6952016-07-01 23:27:41 -04003322016-07-01 Alexei Podtelezhnikov <apodtele@gmail.com>
333
334 [smooth] Variable type revision (part 1).
335
336 This patch restores original `TCoord' definition as `int' so that the
337 rendering pool is used more efficiently on LP64 platforms (unix).
338
339 * src/smooth/ftgrays.c (gray_TWorker, TCell, gray_TBand): Switch some
340 fields to `TCoord'.
341 (gray_find_cell, gray_render_scanline, gray_render_line, gray_hline,
342 gray_sweep, gray_convert_glyph): Updated.
343
Alexei Podtelezhnikovef0a3e72016-06-28 22:56:22 -04003442016-06-28 Alexei Podtelezhnikov <apodtele@gmail.com>
345
346 [smooth] Minor clean-ups.
347
348 * src/smooth/ftgrays.c (gray_TWorker): Remove redundant `ycount'.
349 (gray_sweep, gray_convert_glyph, gray_dump_cells): Updated.
350
3512016-06-27 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov999bcee2016-06-26 08:27:29 +0200352
Alexei Podtelezhnikovc9cf3592016-06-28 00:30:58 -0400353 [smooth] Minor clean-ups.
354
355 * src/smooth/ftgrays.c (gray_convert_glyph): Do not use volatile
356 qualifier.
357 (gray_raster_render): Move span initializations from here.
358 (gray_sweep): ... to here and remove unused `target' argument.
359
3602016-06-26 Alexei Podtelezhnikov <apodtele@gmail.com>
361
Alexei Podtelezhnikov999bcee2016-06-26 08:27:29 +0200362 [pcf] Fix handling of very large fonts (#47708).
363
364 * src/pcf/pcfread.c (pcf_get_encodings): Make `encodingOffset' an
365 unsigned short.
366 Only reject `0xFFFF' as an invalid encoding offset.
367
3682016-06-25 Werner Lemberg <wl@gnu.org>
Werner Lemberg8ba407a2016-06-25 18:09:22 +0200369
370 [truetype] Really fix deallocation in case of error (#47726).
371
372 * src/truetype/ttgload.c (load_truetype_glyph): Thinko; initialize
373 `outline.points' also.
374
Alexei Podtelezhnikov25e82bc2016-06-23 23:17:39 -04003752016-06-23 Alexei Podtelezhnikov <apodtele@gmail.com>
376
377 [smooth] Consolidate memory management.
378
379 * src/smooth/ftgrays.c (gray_init_cells): Remove function.
380 (gray_TWorker): Remove fields that become local variables.
381 (gray_raster_render): Move rendering buffer declaration from here.
382 (gray_convert_glyph): ... to here and update accordingly.
383
Alexei Podtelezhnikove2233482016-06-22 23:14:26 -04003842016-06-22 Alexei Podtelezhnikov <apodtele@gmail.com>
385
386 [smooth] Consolidate boundary checks.
387
388 Removing the checks from `gray_hline' shaves 1% off rendering speed.
389
390 * src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_MIN' and `FT_MAX'.
391 (gray_TWorker): No need to store `clip_box'.
392 (gray_hline): Remove unnecessary boundary checks.
393 (gray_convert_glyph): Move boundary checks from here.
394 (gray_raster_render): ... to here and consolidate.
395
Alexei Podtelezhnikov78e8fc02016-06-22 00:04:08 -04003962016-06-21 Alexei Podtelezhnikov <apodtele@gmail.com>
397
398 [smooth] Use `FT_Outline_Get_CBox'.
399
400 * src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_Outline_Get_CBox'.
401 (gray_compute_cbox): Remove this function.
402 (gray_convert_glyph): Update to use `FT_Outline_Get_CBox'.
403
Werner Lemberg20c6ef42016-06-21 11:39:34 +02004042016-06-20 Werner Lemberg <wl@gnu.org>
405
406 [smooth] Remove compiler warnings.
407
408 * src/smooth/ftgrays.c (gray_convert_glyph): Fix reports from clang.
409
Alexei Podtelezhnikov3c64af92016-06-20 00:01:55 -04004102016-06-20 Alexei Podtelezhnikov <apodtele@gmail.com>
411
412 [smooth] Sanitize memory managenent.
413
414 * src/smooth/ftgrays.c (gray_convert_glyph): Cleaned up.
415
Alexei Podtelezhnikov74fd2512016-06-18 22:31:26 -04004162016-06-18 Alexei Podtelezhnikov <apodtele@gmail.com>
417
418 [smooth] Remove `band_shoot' that never worked.
419
420 * src/smooth/ftgrays.c (gray_TWorker): Remove `band_shoot'.
421 (gray_convert_glyph): Updated.
422
Alexei Podtelezhnikov72a06532016-06-17 23:10:22 -04004232016-06-17 Alexei Podtelezhnikov <apodtele@gmail.com>
424
425 [raster, smooth] Handle FT_RENDER_POOL_SIZE better.
426
427 * src/raster/ftraster.c (FT_MAX_BLACK_POOL): New macro.
428 (ft_black_render): Updated.
429 * src/smooth/ftgrays.c (FT_MAX_GRAY_POOL): New macro.
430 (gray_raster_render): Updated.
431
Werner Lemberg1e36c2e2016-06-16 06:17:54 +02004322016-06-16 Werner Lemberg <wl@gnu.org>
433
434 * src/base/md5.c: Updated to recent version.
435
Alexei Podtelezhnikov32accef2016-06-14 23:38:17 -04004362016-06-14 Alexei Podtelezhnikov <apodtele@gmail.com>
437
438 * src/smooth/ftgrays.c (gray_hline): Optimize if-condition.
439
Werner Lemberg05a55a52016-06-13 12:16:45 +02004402016-06-13 Werner Lemberg <wl@gnu.org>
441
442 [autofit] Add support for Cherokee script.
443
444 * src/autofit/afblue.dat: Add blue zone data for Cherokee.
445
446 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
447
448 * src/autofit/afscript.h: Add Cherokee standard characters.
449
450 * src/autofit/afranges.c: Add Cherokee data.
451
452 * src/autofit/afstyles.h: Add Cherokee data.
453
David Capellof40d7d22016-06-09 10:55:52 +02004542016-06-09 David Capello <davidcapello@gmail.com>
455
456 [cmake] Avoid modifying `ftconfig.h' and `ftoption.h' files.
457
458 * CMakeLists.txt: Each time cmake is run those files are
459 modified and the whole FreeType library is recompiled. With this
460 change we change the files only if there are real modifications, so
461 we can avoid recompilations.
462
Werner Lembergb6b26f42016-06-09 06:53:48 +02004632016-06-09 Werner Lemberg <wl@gnu.org>
464
465 [bdf] Check number of properties (#48166).
466
467 * src/bdf/bdflib.c (_bdf_parse_start): Implement.
468
Alexei Podtelezhnikov9cf232e2016-06-08 23:19:41 -04004692016-06-08 Alexei Podtelezhnikov <apodtele@gmail.com>
470
Alexei Podtelezhnikov77180c72016-06-08 23:31:28 -0400471 [smooth] Re-enable new line renderer on 64-bit archs.
472
Alexei Podtelezhnikov32accef2016-06-14 23:38:17 -0400473 * src/smooth/ftgrays.c (gray_render_line): Conditionally re-enable new
Alexei Podtelezhnikov77180c72016-06-08 23:31:28 -0400474 implementation, where it is safe from overflows.
475
4762016-06-08 Alexei Podtelezhnikov <apodtele@gmail.com>
477
Alexei Podtelezhnikov9cf232e2016-06-08 23:19:41 -0400478 [smooth] Minor clean-ups.
479
480 * src/smooth/ftgrays.c (gray_dump_cells): Move out of the way.
481 (gray_render_span): Remove spurious casts and streamline.
482
Werner Lemberg15eab362016-06-07 10:36:27 +02004832016-06-07 Werner Lemberg <wl@gnu.org>
484
Werner Lemberg223d0022016-06-07 13:52:14 +0200485 [autofit] Add support for Ethiopic script.
486
487 * src/autofit/afblue.dat: Add blue zone data for Ethiopic.
488
489 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
490
491 * src/autofit/afscript.h: Add Ethiopic standard characters.
492
493 * src/autofit/afranges.c: Add Ethiopic data.
494
495 * src/autofit/afstyles.h: Add Ethiopic data.
496
4972016-06-07 Werner Lemberg <wl@gnu.org>
498
Werner Lemberg15eab362016-06-07 10:36:27 +0200499 [autofit] Fix compilation with VS2016 (#48126).
500
501 This compiler doesn't recognize the end-of-comment sequence `*/' if
502 it immediately follows non-ASCII characters.
503
504 * src/autofit/afscript.h: Ensure whitespace before `*/'.
505
Werner Lemberg5485a342016-06-04 06:57:32 +02005062016-06-04 Werner Lemberg <wl@gnu.org>
507
Werner Lemberg969960c2016-06-04 07:02:46 +0200508 Fix a test for named instances (#48122).
Werner Lemberg5485a342016-06-04 06:57:32 +0200509
Werner Lemberg969960c2016-06-04 07:02:46 +0200510 This was missed while giving negative face indices an extended
511 meaning.
512
513 * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Implement.
Werner Lemberg5485a342016-06-04 06:57:32 +0200514
5152016-05-31 Nikolaus Waxweiler <madigens@gmail.com>
Nikolaus Waxweilerb4598822016-05-31 08:39:52 +0200516
517 [truetype] Let SHPIX move points in the twilight zone in v40.
518
519 * src/truetype/ttinterp.c (Ins_SHPIX): Allow SHPIX to move points in
520 the twilight zone. Otherwise, treat SHPIX the same as DELTAP.
521 Unbreaks various fonts such as older versions of Rokkitt and DTL
522 Argo T Light that would glitch severly after calling ALIGNRP after a
523 blocked SHPIX.
524
Werner Lembergd28eac22016-05-30 00:23:59 +02005252016-05-30 Werner Lemberg <wl@gnu.org>
526
527 [type42] Support `CharStrings' entry format as created by LilyPond.
528
529 * src/type42/t42parse.c (t42_parse_charstrings): Handle entries
530 having the format
531
532 (foo) cvn 12345 def
533
Werner Lemberg46d36902016-05-28 19:38:43 +02005342016-05-28 Werner Lemberg <wl@gnu.org>
535
536 * src/autofit/afranges.c: Remove `UL' postfix from hex numbers.
537
538 Suggested by Alexei. `UL' is only needed for 16bit compilers, but
539 it seems noone is using this anymore (and we no longer test whether
540 FreeType compiles in such an environment). Otherwise, it is easy to
541 add the postfix to the `AF_UNICODE_RANGE' macro.
542
Alexei Podtelezhnikove9f95092016-05-26 23:46:38 -04005432016-05-26 Alexei Podtelezhnikov <apodtele@gmail.com>
544
545 [smooth] Shrink bisection stack.
546
547 The convergence of Bézier flatteners is fast with the deviation
548 from straight line being assymptotically cut 4-fold on each bisection.
549 This justifies smaller bisection stack size.
550
551 * src/smooth/ftgrays.c (gray_TWorker): Remove common `bez_stack'.
552 (gray_render_conic): Create and use conic `bez_stack'. Move back the
553 band analysis from...
554 (gray_conic_to): ... here.
555 (gray_render_cubic): Create and use cubic `bez_stack'. Move back the
556 band analysis from...
557 (gray_cubic_to): ... here.
558 (gray_move_to): Updated.
559
Werner Lemberge97918c2016-05-25 07:13:29 +02005602016-05-25 Werner Lemberg <wl@gnu.org>
561
562 [autofit] Fixes for Armenian and Gujarati ranges.
563
564 * src/autofit/afranges.c (af_armn_uniranges): Corrected.
565 (af_guru_nonbase_uniranges): Make U+0A3E a base character.
566
Werner Lemberga74f40f2016-05-24 18:27:18 +02005672016-05-24 Werner Lemberg <wl@gnu.org>
568
569 [autofit] Add support for Armenian script.
570
571 * src/autofit/afblue.dat: Add blue zone data for Armenian.
572
573 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
574
575 * src/autofit/afscript.h: Add Armenian standard characters.
576
577 * src/autofit/afranges.c: Add Armenian data.
578
579 * src/autofit/afstyles.h: Add Armenian data.
580
Werner Lemberg771d3c82016-05-23 06:49:38 +02005812016-05-23 Werner Lemberg <wl@gnu.org>
582
583 * builds/unix/unix-cc.in (LINK_LIBRARY): Use `-export-symbols'.
584
585 This was commented about 10 years ago – I think the reason then to
586 disable libtool's `-export-symbols' option was to give some badly
587 programmed applications access to internal FreeType functions.
588
589 I believe that we should no longer take care of such programs; the
590 number of symbols exported should be rather restricted as much as
591 possible.
592
Werner Lemberg9d179e32016-05-22 08:38:41 +02005932016-05-22 Werner Lemberg <wl@gnu.org>
594
595 [autofit] Add blue-zone support for Gurmukhi script.
596
597 This essentially moves the Gurmukhi script from the `Indic' hinter to
598 the `Latin' hinter.
599
600 * src/autofit/afblue.dat: Add blue zone data for Gurmukhi.
601
602 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
603
604 * src/autofit/afscript.h: Add Gurmukhi standard characters and move
605 data out of AF_CONFIG_OPTION_INDIC block.
606
607 * src/autofit/afranges.c: Move Gurmukhi data out of
608 AF_CONFIG_OPTION_INDIC block.
609
610 * src/autofit/afstyles.h: Update Gurmukhi data; in particular, use
611 AF_WRITING_SYSTEM_LATIN.
612
Werner Lemberg6e80a092016-05-21 10:58:40 +02006132016-05-21 Werner Lemberg <wl@gnu.org>
614
Werner Lembergd5835612016-05-21 11:20:42 +0200615 Minor clang++ fixes.
616
617 * src/base/ftobjs.c (FT_Add_Module), src/psaux/psobjs.c
618 (ps_parser_load_field), src/type1/t1load.c (parse_subrs): Add
619 initializer.
620
621 * src/cache/ftccache.h (FTC_CACHE_TRYLOOP_END): Avoid implicit
622 conversion from NULL to boolean.
623
6242016-05-21 Werner Lemberg <wl@gnu.org>
625
Werner Lemberg6e80a092016-05-21 10:58:40 +0200626 Work around a bug of the C 8.0.0.1 compiler on AIX 5.3 (#47955).
627
628 * include/freetype/internal/ftmemory.h (cplusplus_typeof): Use
629 braces for `extern "C++"'.
630
Nikolaus Waxweiler59615732016-05-18 06:57:59 +02006312016-05-17 Nikolaus Waxweiler <madigens@gmail.com>
632
Nikolaus Waxweiler01de37e2016-05-18 07:07:44 +0200633 [truetype] Make TT_LOADER_SET_PP support subpixel hinting [3/3].
634
635 * src/truetype/ttgload.c (TT_LOADER_SET_PP): Replace macro with...
636 (tt_loader_set_pp): ... this new function.
637 Update all callers.
638
6392016-05-17 Nikolaus Waxweiler <madigens@gmail.com>
640
Nikolaus Waxweilered1d8982016-05-18 06:58:44 +0200641 [truetype] New implementation of v38 bytecode interpreter [2/3].
642
643 This patch actually modifies the bytecode interpreter.
644
645 See added comments in `ttinterp.h' for more information on this and
646 the following commit in the series.
647
648 * src/truetype/ttinterp.c (SUBPIXEL_HINTING): Replaced by...
649 (NO_SUBPIXEL_HINTING, SUBPIXEL_HINTING_INFINALITY,
650 SUBPIXEL_HINTING_MINIMAL): ...new macros.
651 (Direct_Move, Direct_Move_X, Direct_Move_Y): Handle backwards
652 compatibility.
653 Updated.
654 (Ins_RS, Ins_FDEF, Ins_ENDF, Ins_CALL, Ins_LOOPCALL, Ins_MD):
655 Updated.
656 (Ins_INSTCTRL): Handle native ClearType mode flag.
657 Updated.
658 (Ins_FLIPPT, Ins_FLIPRGON, Ins_FLIPRGOFF): Handle backwards
659 compatibility.
660 (Move_Zp2_Point): Ditto.
661 (Ins_SHP): Updated.
662 (Ins_SHPIX): Handle backwards compatibility.
663 Updated.
664 (Ins_MSIRP, Ins_MDAP, Ins_MIAP, Ins_MDRP, Ins_MIRP): Updated.
665 (Ins_ALIGNRP): Updated.
666 (Ins_IUP, Ins_DELTAP): Handle backwards compatibility.
667 Updated.
668 (Ins_GETINFO): Handle v38 flags.
669 Updated.
670 (TT_RunIns): Handle backwards compatibility mode.
671 Updated.
672
6732016-05-17 Nikolaus Waxweiler <madigens@gmail.com>
674
Nikolaus Waxweiler59615732016-05-18 06:57:59 +0200675 [truetype] New implementation of v38 bytecode interpreter [1/3].
676
677 This patch prepares data structures and the like.
678
679 See added comments in `ttinterp.h' for more information on this and
680 the following commits in the series.
681
682 * devel/ftoption.h, include/freetype/config/ftoption.h
683 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Assign values to differentiate
684 between subpixel versions.
685 (TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY,
686 TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL): New macros.
687
688 * include/freetype/ftttdrv.h (TT_INTERPRETER_VERSION_40): New macro.
689
690 * include/freetype/internal/tttypes.h (TT_FaceRec): Updated.
691
692 * src/truetype/ttinterp.h (TT_ExecContextRec): Define new fields
693 `subpixel_hinting_lean', `vertical_lcd_lean',
694 `backwards_compatibility', `iupx_called', iupy_called', and
695 `grayscale_cleartype' for new hinting mode.
696
697 * src/truetype/ttdriver.c (tt_property_set): Handle v38 and v40
698 interpreters conditionally.
699
700 * src/truetype/ttgload.c (TT_Hint_Glyph): Save phantom points unless
701 in v38 backwards compatibility mode.
702 Updated.
703 (compute_glyph_metrics): Add v38 backwards compatibility mode
704 constraint for adjusting advance widths.
705 Updated.
706 (tt_loader_init): Handle new flags `subpixel_hinting_lean',
707 `grayscale_cleartype', and `vertical_lcd_lean'.
708 Updated.
709 (tt_get_metrics, TT_Process_Simple_Glyph, TT_LOADER_SET_PP):
710 Updated.
711
712 * src/truetype/ttobjs.c (tt_driver_init): Conditionally set
713 default interpreter version number.
714
715 * src/truetype/ttsubpix.c, src/truetype/ttsubpix.h: Updated.
716
Werner Lemberg119e8e42016-05-17 19:54:09 +02007172016-05-17 Werner Lemberg <wl@gnu.org>
718
719 [cff] Fix matrix scaling (#47848).
720
721 * include/freetype/config/ftstdlib.h (FT_LONG_MIN): New macro.
722
723 * src/cff/cffparse.c (cff_parse_font_matrix): Use largest scaling
724 value of all matrix coefficients to scale matrix.
725
726 * src/cff/cffobjs.c (cff_face_init): Use `matrix->yx' member for
727 matrix normalization if `matrix->yy' is zero.
728
Werner Lemberg09f0e0f2016-05-16 19:44:19 +02007292016-05-16 Werner Lemberg <wl@gnu.org>
730
Werner Lembergbebac3c2016-05-16 20:16:35 +0200731 [base] Reject invalid sfnt Mac resource (#47891).
732
733 * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Check validity
734 of `CID ' and `TYPE1' table offset and length.
735
7362016-05-16 Werner Lemberg <wl@gnu.org>
737
Werner Lemberg09f0e0f2016-05-16 19:44:19 +0200738 [cid] Fix scanning for `StartData' and `/sfnts' (#47892).
739
740 * src/cid/cidparse.c (STARTDATA, STARTDATA_LEN, SFNTS, SFNTS_LEN):
741 New macros.
742 (cid_parser_new): Fix and document algorithm.
743
suzuki toshiyaa7d8bdb2016-05-16 21:54:32 +09007442016-05-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
745
746 [truetype] Improve the recursive reference detector.
747
748 The previous fix for #46372 misunderstood a composite glyph referring
749 same component twice as a recursive reference. See the discussion
750
Werner Lemberg533887a2016-05-16 20:38:41 +0200751 http://lists.gnu.org/archive/html/freetype/2016-05/msg00000.html
suzuki toshiyaa7d8bdb2016-05-16 21:54:32 +0900752
753 Thanks to Khaled Hosny for finding this issue.
754
755 * src/truetype/ttgload.c (ft_list_get_node_at): A function to get
Werner Lemberg533887a2016-05-16 20:38:41 +0200756 the i-th node from FT_List.
757 (load_truetype_glyph): In the traversal scan of the reference tree
758 in the composite glyph, we clear the nodes filled by previous
759 sibling chain.
suzuki toshiyaa7d8bdb2016-05-16 21:54:32 +0900760
Werner Lemberg7ae9b992016-05-07 16:24:03 +02007612016-05-07 Werner Lemberg <wl@gnu.org>
762
763 [cache] Allow value 0 for face ID.
764
765 We never dereference `face_id', and some implementations might use a
766 running number instead of a pointer. Additionally, disallowing
767 value zero was undocumented.
768
769 * src/cache/ftccmap.c (FTC_CMapCache_Lookup), src/cache/ftcmanag.c
770 (FTC_Manager_LookupFace, FTC_Manager_RemoveFaceID): Remove test for
771 `face_id'.
772
Alexei Podtelezhnikov6e880872016-05-05 23:41:03 -04007732016-05-05 Alexei Podtelezhnikov <apodtele@gmail.com>
774
775 [smooth] More efficient accounting of conic splits and draws.
776
777 A single decrement counter of segments to draw, instead of an array,
778 contains all the information necessary to decide when to split and
779 when to draw a conic segment. The number of splits before each draw is
780 equal to the number of trailing zeros in the counter.
781
782 * src/smooth/ftgrays.c (gray_TWorker): Remove `lev_stack'.
783 (gray_render_conic): Updated to use decrement counter of segments.
784
Werner Lemberg0b3cb8a2016-05-05 12:28:48 +02007852016-05-05 Werner Lemberg <wl@gnu.org>
786
787 [cff, truetype] Fix logic for `FT_Property_Set'.
788
789 Otherwise some properties could be set to arbitrary values, which is
790 harmless, but querying could give wrong positive results.
791
792 * src/cff/cffdrivr.c (cff_property_set) [hinting-engine],
793 * src/truetype/ttdriver.c (tt_property_set) [interpreter-version]:
794 Only allow defined values.
795
Werner Lemberg22167622016-04-25 21:18:24 +02007962016-04-25 Werner Lemberg <wl@gnu.org>
797
798 [autofit] Add blue-zone support for Gujarati script.
799
800 This essentially moves the Gujarati script from the `Indic' hinter to
801 the `Latin' hinter.
802
803 * src/autofit/afblue.dat: Add blue zone data for Gujarati.
804
805 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
806
807 * src/autofit/afscript.h: Add Gujarati standard characters and move
808 data out of AF_CONFIG_OPTION_INDIC block.
809
810 * src/autofit/afranges.c: Move Gujarati data out of
811 AF_CONFIG_OPTION_INDIC block.
812
813 * src/autofit/afstyles.h: Update Gujarati data; in particular, use
814 AF_WRITING_SYSTEM_LATIN.
815
Werner Lemberg432e00d2016-04-24 08:14:07 +02008162016-04-24 Werner Lemberg <wl@gnu.org>
817
Werner Lembergd9fb2172016-04-24 15:27:32 +0200818 Minor.
819
820 * include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Protect macro
821 argument with parentheses.
822
8232016-04-24 Werner Lemberg <wl@gnu.org>
824
Werner Lemberg432e00d2016-04-24 08:14:07 +0200825 [truetype] Fix deallocation in case of error (#47726).
826
827 * src/truetype/ttgload.c (load_truetype_glyph): Initialize fields in
828 `outline' that are going to be deallocated in case of error.
829
Werner Lemberg80afef82016-04-23 21:34:15 +02008302016-04-23 Werner Lemberg <wl@gnu.org>
831
832 [autofit] Improve Georgian blue zone characters.
833
834 Suggested by Akaki Razmadze <razmadzekoko@gmail.com>.
835
836 * src/autofit/afblue.dat (AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM):
837 Updated.
838
839 * src/autofit/afblue.c: Regenerated.
840
David Capello9224f052016-04-16 10:24:24 +02008412016-04-16 David Capello <davidcapello@gmail.com>
842
843 [cmake] Honor SKIP_INSTALL_* settings (as used in zlib).
844
845 As FreeType depends on zlib, if we don't install zlib (e.g., because
846 we defined SKIP_INSTALL_ALL), FreeType cannot be installed, too
847 (cmake triggers an error saying that FreeType cannot be installed
848 because zlib target isn't in the export set).
849
850 * CMakeLists.txt: Honor `SKIP_INSTALL_HEADERS',
851 `SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL' settings.
852
Behdad Esfahbod99eff672016-04-16 07:32:23 +02008532016-04-16 Behdad Esfahbod <behdad@behdad.org>
854
855 [truetype] Another fix for non-intermediate GX tuples.
856
857 * src/truetype/ttgxvar.c (ft_var_apply_tuple): Add some missing
858 cases.
859
Alexei Podtelezhnikov213f0ca2016-04-13 00:19:54 -04008602016-04-12 Alexei Podtelezhnikov <apodtele@gmail.com>
861
862 Remove forgotten macro.
863
864 * include/freetype/internal/internal.h
865 [FT_INTERNAL_POSTSCRIPT_GLOBALS_H]: Remove.
866
Werner Lembergc8c7ad72016-04-09 08:24:00 +02008672016-04-09 Werner Lemberg <wl@gnu.org>
868
869 [autofit] Add support for Georgian scripts.
870
871 Georgian is problematic, since `uppercase' forms of Mkhedruli
872 (called Mtavruli) are not yet defined in Unicode, which means that
873 proper blue zones can't be defined. However, there is already a
874 proposal submitted to Unicode; see
875
876 http://www.unicode.org/L2/L2016/16034-n4707-georgian.pdf
877
878 Additionally, due to historical reasons, Unicode treats Khutsuri as
879 the same script as Mkhedruli, and so does OpenType. However, since
880 the two scripts have completely different shapes it can happen that
881 blue zones differ considerably. The tag `geok' used here (derived
882 from ISO 15924) to differentiate the two scripts is not an OpenType
883 tag in use. If we now have a font that contains both glyphs for
884 Mkhedruli and Khutsuri, and it uses OpenType features for both also,
885 HarfBuzz unavoidably treats all glyphs as `geor'. As a consequence,
886 blue zones for `geok' are not used for glyphs involved in the
887 OpenType features.
888
889 An issue not yet resolved is which OpenType feature should be used
890 to access Mtavruli glyph shapes; right now, FreeType doesn't set up
891 support for them, but it is easy to add them later on as soon as
892 more information is available.
893
894 * src/autofit/afblue.dat: Add blue zone data for Georgian.
895
896 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
897
898 * src/autofit/afscript.h: Add Georgian standard characters.
899
900 * src/autofit/afranges.c: Add Georgian data.
901
902 * src/autofit/afstyles.h: Add Georgian data.
903
Werner Lembergbf8f1002016-04-05 11:43:58 +02009042016-04-05 Werner Lemberg <wl@gnu.org>
905
906 [autofit] Provide dummy blue zone for pseudo script `none'.
907
908 Even if the dummy hinter is used as the handler for `none' (which
909 doesn't use blue zones), it is more consistent than the old value
910 (which was 0), pointing to Arabic...
911
912 * src/autofit/afblue.dat: Add `AF_BLUE_STRINGSET_NONE'.
913 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
914
915 * src/autofit/afstyles.h (none_dflt): Use AF_BLUE_STRINGSET_NONE.
916
Werner Lembergccd771c2016-03-30 08:44:46 +02009172016-03-30 Werner Lemberg <wl@gnu.org>
918
Werner Lembergfb550bf2016-03-30 18:55:27 +0200919 * src/pfr/pfrload.c (pfr_aux_name_load): Thinko (#47567).
920
9212016-03-30 Werner Lemberg <wl@gnu.org>
922
Werner Lembergaff6ebb2016-03-30 09:11:02 +0200923 * src/pfr/pfrload.c (pfr_log_font_count): Better font size estimate.
924
9252016-03-30 Werner Lemberg <wl@gnu.org>
926
Werner Lembergccd771c2016-03-30 08:44:46 +0200927 * src/pfr/pfrload.c (pfr_aux_name_load): Fix memory leak (#47567).
928
Werner Lemberg31dc8f92016-03-29 08:37:07 +02009292016-03-29 Werner Lemberg <wl@gnu.org>
930
Alexei Podtelezhnikovc6d99a42016-04-08 00:05:50 -0400931 * src/base/ftadvanc.c (FT_Get_Advances): Fix invalid left shift.
Werner Lembergff827472016-03-29 09:19:22 +0200932
9332016-03-29 Werner Lemberg <wl@gnu.org>
934
Werner Lemberg351fc4b2016-03-29 09:13:13 +0200935 [pfr] Fix binary search (#47514).
936
937 * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Handle border
938 conditions correctly.
939
9402016-03-29 Werner Lemberg <wl@gnu.org>
941
Werner Lemberg2a03e5d2016-03-29 08:56:03 +0200942 [pfr] Minor.
943
944 * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Replace `left',
945 `right', and `middle' with `min', `max', and `mid' as used in other
946 FreeType binary search code.
947 (pfr_load_bitmap_metrics): Fix invalid left shift.
948
9492016-03-29 Werner Lemberg <wl@gnu.org>
950
Werner Lemberg31dc8f92016-03-29 08:37:07 +0200951 * src/pfr/pfrtypes.h: Replace all enums with macros.
952
953 We need `~FOO' to unset bits, and only with unsigned values (which
954 `enum' isn't normally) this works cleanly.
955
Werner Lembergb069a592016-03-26 08:00:07 +01009562016-03-26 Werner Lemberg <wl@gnu.org>
957
958 [pfr] Robustify bitmap strike handling (#47514).
959
960 We did a binary search for a charcode without ensuring that the
961 searched data is ordered. Validating the order is now done lazily,
962 this is, the first access to a bitmap glyph triggers the order check
963 in the corresponding bitmap strike.
964
965 * src/pfr/pfrtypes.h (PFR_BitmapFlags): New values
966 `PFR_BITMAP_VALID_CHARCODES' and `PFR_BITMAP_CHARCODES_VALIDATED'.
967
968 * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Make `flags' argument
969 a pointer. Handle new PFR_BITMAP_XXX flags.
970 (pfr_slot_load_bitmap): Updated.
971
9722016-03-26 Werner Lemberg <wl@gnu.org>
Werner Lemberg59828f72016-03-25 08:47:14 +0100973
Werner Lemberg0003cb92016-03-26 07:34:30 +0100974 [pfr] Fix handling of compound glyphs.
975
976 Extra items are indicated with different bit positions.
977
978 * src/pfr/pfrtypes.h (PFR_GlyphFlags): Replace
979 `PFR_GLYPH_EXTRA_ITEMS' with `PFR_GLYPH_SIMPLE_EXTRA_ITEMS' and
980 `PFR_GLYPH_COMPOUND_EXTRA_ITEMS'.
981
982 * src/pfr/pfrgload.c (pfr_glyph_load_simple,
983 pfr_glyph_load_compound): Use them.
984
9852016-03-25 Werner Lemberg <wl@gnu.org>
986
Werner Lemberg2aa69562016-03-25 10:54:37 +0100987 [pfr] Minor.
988
Alexei Podtelezhnikovf46b2822016-04-11 23:22:57 -0400989 * src/pfr/pfrsbit.c, src/pfr/pfrobjs.c: Use flag names instead of
Werner Lemberg2aa69562016-03-25 10:54:37 +0100990 bare numbers.
991
9922016-03-25 Werner Lemberg <wl@gnu.org>
993
Werner Lemberg59828f72016-03-25 08:47:14 +0100994 [pfr] Various clang sanitizer fixes.
995
996 * src/pfr/pfrsbit.c (pfr_load_bitmap_metrics): Correctly handle
997 signed nibbles.
998 (pfr_slot_load_bitmap): Correctly exit frame in case of error.
999 Fix invalid left shifts.
1000
Werner Lemberge9181ab2016-03-23 06:58:20 +010010012016-03-23 Werner Lemberg <wl@gnu.org>
1002
Werner Lemberg6e89ad42016-03-23 07:40:12 +01001003 Rename `VERSION.DLL' (#47472).
1004
1005 * docs/VERSION.DLL: Renamed to...
1006 * docs/VERSIONS.TXT: ...this.
1007
10082016-03-23 Werner Lemberg <wl@gnu.org>
1009
Werner Lemberg31f2dc12016-03-23 07:31:59 +01001010 [raster, smooth] Directly test outline size (#47500).
1011
1012 This improves stand-alone compilation.
1013
1014 * src/base/ftoutln.c (FT_Outline_Render): Move cbox size test to...
1015
1016 * src/raster/ftraster.c (ft_black_render), src/smooth/ftgrays.c
1017 (gray_raster_render): ...these functions.
1018
10192016-03-23 Werner Lemberg <wl@gnu.org>
1020
Werner Lemberge9181ab2016-03-23 06:58:20 +01001021 [raster, smooth] Fix some clang sanitizer runtime issues.
1022
1023 * src/raster/ftraster.c (ft_black_reset, ft_black_set_mode,
1024 ft_black_render): Harmonize signatures with `ftimage.h'.
1025
1026 * src/smooth/ftgrays.c (gray_raster_render, gray_raster_reset):
1027 Ditto.
1028
Werner Lembergb6633072016-03-22 08:26:55 +010010292016-03-22 Werner Lemberg <wl@gnu.org>
1030
1031 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Minor.
1032
1033 This fixes an AddressSanitizer issue:
1034
1035 ttgload.c:430:7: runtime error: null pointer passed as argument 1,
1036 which is declared to never be null
1037
Werner Lemberg614a8f12016-03-21 19:39:14 +010010382016-03-21 Werner Lemberg <wl@gnu.org>
1039
1040 * src/autofit/afhints.c (af_glyph_hints_reload): Thinko.
1041
1042 This fixes the previous commit to this file.
1043
Alexei Podtelezhnikov3beccbd2016-03-21 00:07:47 -040010442016-03-21 Alexei Podtelezhnikov <apodtele@gmail.com>
1045
1046 [smooth] Partly revert recent changes.
1047
1048 * src/smooth/ftgrays.c (gray_conic_to, gray_cubic_to): Rework
1049 conditions to fix rendering issues.
1050
Werner Lemberg709486d2016-03-20 22:20:32 +010010512016-03-20 Werner Lemberg <wl@gnu.org>
1052
1053 [autofit] Show `near' points in tracing.
1054
1055 * src/autofit/afhints.h (AF_FLAG_NEAR): New macro.
1056
1057 * src/autofit/afhints.c (af_glyph_hints_dump_points): Implement it.
1058 (af_glyph_hints_reload): Handle AF_FLAG_NEAR.
1059
Alexei Podtelezhnikov8e8bb122016-03-18 23:21:59 -040010602016-03-18 Alexei Podtelezhnikov <apodtele@gmail.com>
1061
1062 [smooth] Minor refactoring and microoptimizations.
1063
1064 * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
1065 band clipping from here.
1066 (gray_conic_to, gray_cubic_to): ... to here.
1067 (gray_rander_line, gray_render_scanline): Initialize variables closer
1068 to their use.
1069
Alexei Podtelezhnikov84b2c632016-03-17 00:53:09 -040010702016-03-17 Alexei Podtelezhnikov <apodtele@gmail.com>
1071
1072 [smooth] Minor refactoring.
1073
1074 * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
Alexei Podtelezhnikov8e8bb122016-03-18 23:21:59 -04001075 upscaling from here.
1076 (gray_conic_to, gray_cubic_to): ... to here.
Alexei Podtelezhnikov84b2c632016-03-17 00:53:09 -04001077
Werner Lembergda86b732016-03-15 07:55:05 +010010782016-03-15 Werner Lemberg <wl@gnu.org>
1079
1080 * src/autofit/aflatin.c (af_latin_compute_stem_width): Optimize.
1081
Alexei Podtelezhnikov18655752016-03-14 22:39:22 -040010822016-03-14 Alexei Podtelezhnikov <apodtele@gmail.com>
1083
1084 [smooth] Temporarily revert 6eb6158dd787 (#47114).
1085
1086 * src/smooth/ftgrays.c (gray_render_line): Old implementation.
1087
Werner Lembergee6b4112016-03-12 23:48:13 +010010882016-03-12 Werner Lemberg <wl@gnu.org>
1089
1090 [ftfuzzer] Improve coverage of rasterfuzzer.
1091
1092 * src/tools/ftfuzzer/rasterfuzzer.cc (LLVMFuzzerTestOneInput): Use
1093 input data for `tags' array also.
1094 Trim input data to get more positive hits.
1095
Werner Lemberg10265db2016-03-11 06:50:23 +010010962016-03-11 Pavlo Denysov <paul.kiev+savannah@gmail.com>
1097
1098 Fix CMake issues for iOS (patch #8941).
1099
1100 * CMakeLists.txt (CMAKE_TOOLCHAIN_FILE): Fix directory.
1101 * builds/cmake/iOS.cmake: No longer enforce gcc.
1102
Behdad Esfahbod74c0a722016-03-09 20:35:27 +010011032016-03-09 Behdad Esfahbod <behdad@behdad.org>
1104
1105 [truetype] Fix handling of non-intermediate GX tuples.
1106
1107 We probably did not notice this as all fonts we tested had only
1108 tuple_coords[i] be +1 or -1 for non-intermediate tuples.
1109
1110 * src/truetype/ttgxvar.c (ft_var_apply_tuple): Implement it.
1111
Alexei Podtelezhnikovd0b0e312016-03-06 23:01:50 -050011122016-03-06 Alexei Podtelezhnikov <apodtele@gmail.com>
1113
Alexei Podtelezhnikov495de6c2016-03-06 23:54:34 -05001114 [base] Refuse to render enormous outlines (#47114).
1115
1116 The goal is to avoid integer overflows in the rendering algorithms.
1117 The limit is chosen arbitrarily at some 2^18 pixels, which should be
1118 enough for modern devices including printers.
1119
1120 * src/base/ftoutln.c (FT_Outline_Render): Check CBox and reject
1121 enormous outlines.
1122
11232016-03-06 Alexei Podtelezhnikov <apodtele@gmail.com>
1124
Alexei Podtelezhnikovd0b0e312016-03-06 23:01:50 -05001125 [smooth] Replace left shifts with multiplications (#47114).
1126
1127 * src/smooth/ftgrays.c (SUBPIXELS, UPSCALE, DOWNSCALE): Do it.
1128
Werner Lembergcaa48b02016-03-05 19:47:07 +010011292016-03-05 Werner Lemberg <wl@gnu.org>
1130
1131 [autofit] Avoid excessive stem length rounding (#25392).
1132
1133 * src/autofit/aflatin.c (af_latin_compute_stem_width): Add argument
1134 to pass difference between hinted and unhinted position of base
1135 point; use this to adjust the stem width depending on the PPEM so
1136 that it doesn't become too large under certain circumstances.
1137 Update all callers using value 0 for this argument except...
1138 (af_latin_align_linked_edge): Pass position delta of base point to
1139 `af_latin_compute_stem_width'.
1140
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040011412016-03-05 J Raynor <jxraynor@gmail.com>
J Raynor1fd2bc82016-03-05 16:38:35 +01001142
1143 Make FreeType compile on AIX out of the box.
1144
1145 * builds/unix/configure.raw (XX_ANSIFLAGS): Don't use `-ansi' on
1146 AIX.
1147
Werner Lemberg015c6e02016-03-01 06:45:52 +010011482016-03-01 Werner Lemberg <wl@gnu.org>
Werner Lemberga8b95622016-03-01 09:37:12 +01001149 Kostya Serebryany <kcc@google.com>
1150
1151 [ftfuzzer] Add unit for testing smooth and black rasterizers.
1152
1153 * src/tools/ftfuzzer/rasterfuzzer.cc: New file.
1154
11552016-03-01 Werner Lemberg <wl@gnu.org>
Werner Lemberg015c6e02016-03-01 06:45:52 +01001156
Werner Lemberg3eb6f662016-03-01 07:10:30 +01001157 [autofit] Fix reallocation error introduced in 2016-02-27 (#47310).
1158
1159 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Reassign
1160 `prev_segment' after reallocation.
1161
11622016-03-01 Werner Lemberg <wl@gnu.org>
1163
Werner Lemberg015c6e02016-03-01 06:45:52 +01001164 Fix clang warnings.
1165
1166 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Use
1167 FT_UShort for `min_flags' and `max_flags'.
1168 Initialize `prev_*' variables.
1169
1170 * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Fix
1171 types of local variables.
1172
1173 * src/smooth/ftgrays.c (gray_dump_cells) [FT_DEBUG_LEVEL_TRACE]:
1174 Update `printf' format string.
1175
1176 * src/tools/ftfuzzer/ftfuzzer.cc (setIntermediateAxis): Add cast.
1177 (LLVMFuzzerTestOneInput): Fix loop type.
1178
Werner Lemberg5c7646d2016-02-29 09:12:35 +010011792016-02-29 Werner Lemberg <wl@gnu.org>
1180
1181 [autofit] Add blue-zone support for Sinhala script.
1182
1183 This essentially moves the Sinhala script from the `Indic' hinter to
1184 the `Latin' hinter.
1185
1186 * src/autofit/afblue.dat: Add blue zone data for Sinhala.
1187
1188 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1189
1190 * src/autofit/afscript.h: Add Sinhala standard character and move data
1191 out of AF_CONFIG_OPTION_INDIC block.
1192
1193 * src/autofit/afranges.c: Move Sinhala data out of
1194 AF_CONFIG_OPTION_INDIC block.
1195
1196 * src/autofit/afstyles.h: Update Sinhala data; in particular, use
1197 AF_WRITING_SYSTEM_LATIN.
1198
Werner Lembergce486642016-02-27 15:01:49 +010011992016-02-27 Werner Lemberg <wl@gnu.org>
1200
Werner Lembergf2169472016-02-28 22:48:34 +01001201 [autofit] Properly handle spikes pointing to the x-axis.
1202
1203 An example that gets better rendered is glyph `uusignTaml' (glyph
1204 index 2286) in font `FreeSerif.ttf' (Version 0412.2263) at 22ppem.
1205
1206 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Properly
1207 handle segments where the last point of the first segment is
1208 identical to the first point in the second one. This can happen for
1209 malformed fonts or spikes. We either merge the new segment with the
1210 previous one (both segments point into the same direction), or we
1211 discard the shorter segment if they point into different directions.
1212
12132016-02-27 Werner Lemberg <wl@gnu.org>
1214
Werner Lembergce486642016-02-27 15:01:49 +01001215 [autofit] Minor code clean-up.
1216
1217 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Change
1218 some local variable names to better differentiate between values
1219 along a segment and values orthogonal to it.
1220
Werner Lembergebfd7ce2016-02-26 08:10:41 +010012212016-02-26 Werner Lemberg <wl@gnu.org>
1222
1223 [autofit] Improve BOUND action.
1224
1225 In complex glyph shapes, the original logic was too simple to cater
1226 for situations that would actually need something similar to PS Hint
1227 masks. This fix should alleviate the worst cases.
1228
1229 * src/autofit/aflatin.c (af_latin_hint_edges): Don't allow
1230 complete disappearance of stems.
1231
Werner Lemberg44324b32016-02-25 06:58:47 +010012322016-02-25 Werner Lemberg <wl@gnu.org>
1233
1234 [autofit] Add blue-zone support for Tamil script.
1235
1236 This essentially moves the Tamil script from the `Indic' hinter to
1237 the `Latin' hinter.
1238
1239 * src/autofit/afblue.dat: Add blue zone data for Tamil.
1240
1241 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1242
Werner Lemberg5c7646d2016-02-29 09:12:35 +01001243 * src/autofit/afscript.h: Add Tamil standard character and move data
Werner Lemberg44324b32016-02-25 06:58:47 +01001244 out of AF_CONFIG_OPTION_INDIC block.
1245
1246 * src/autofit/afranges.c: Move Tamil data out of
1247 AF_CONFIG_OPTION_INDIC block.
1248
1249 * src/autofit/afstyles.h: Update Tamil data; in particular, use
1250 AF_WRITING_SYSTEM_LATIN.
1251
Werner Lemberga5952d32016-02-18 12:56:38 +010012522016-02-18 Werner Lemberg <wl@gnu.org>
1253
1254 [autofit] Add blue-zone support for Malayalam script.
1255
1256 This essentially moves the Malayalam script from the `Indic' hinter
1257 to the `Latin' hinter.
1258
1259 * src/autofit/afblue.dat: Add blue zone data for Malayalam.
1260
1261 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1262
1263 * src/autofit/afscript.h: Add Malayalam standard characters and move
1264 data out of AF_CONFIG_OPTION_INDIC block.
1265
1266 * src/autofit/afranges.c: Move Malayalam data out of
1267 AF_CONFIG_OPTION_INDIC block.
1268
1269 * src/autofit/afstyles.h: Update Malayalam data; in particular, use
1270 AF_WRITING_SYSTEM_LATIN.
1271
Alexei Podtelezhnikov08e89b72016-02-16 22:32:13 -050012722016-02-16 Alexei Podtelezhnikov <apodtele@gmail.com>
1273
1274 [smooth] Fix integer overflow (#47114).
1275
1276 * src/smooth/ftgrays.c (TArea): Make it unconditionally `long'.
1277
Werner Lemberg658f5302016-02-15 14:28:28 +010012782016-02-15 Werner Lemberg <wl@gnu.org>
1279
Werner Lemberg3a5e5072016-02-15 22:21:01 +01001280 * src/cff/cffparse.c (cff_parse_multiple_master): Improve tracing.
1281
12822016-02-15 Werner Lemberg <wl@gnu.org>
1283
Werner Lemberg28730102016-02-15 20:53:22 +01001284 [cff] Handle T2 operator only with old CFF engine (#47157).
1285
1286 * src/cff/cffparse.c (cff_parser_run) <opcode 31>: Enclose with
1287 #ifdef CFF_CONFIG_OPTION_OLD_ENGINE...#endif.
1288
12892016-02-15 Werner Lemberg <wl@gnu.org>
1290
Werner Lemberg8ed9eaf2016-02-15 20:41:58 +01001291 [cff] Partially handle `load' and `store' ops in old CFF engine.
1292
1293 Now all glyphs of MM CFFs like `ITCGaramondMM-It.otf' can be
1294 displayed.
1295
1296 * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_store,
1297 cff_op_load>: Partially implement it.
1298
1299 * src/cff/cffparse.c (cff_parser_init): Add new parameter to pass
1300 the number of Multiple Master axes.
1301 Update all callers.
1302 (cff_parse_multiple_master): Get number of axes.
1303 (cff_parser_run) <opcode 31>: Updated.
1304 * src/cff/cffparse.h: Updated.
1305 (CFF_ParserRec): Add `num_axes' field.
1306
1307 * src/cff/cffload.c: Updated.
1308
1309 * src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_axes' field.
1310
13112016-02-15 Werner Lemberg <wl@gnu.org>
1312
Werner Lemberg658f5302016-02-15 14:28:28 +01001313 [cff] Correctly trace SIDs that contain NULL bytes.
1314
1315 We need this to properly trace Multiple Master CFFs, which contain
1316 two SIDs that are charstrings.
1317
1318 This commit makes FreeType also show the last SID, omitted
1319 previously due to a bug.
1320
1321 * src/cff/cfftypes.h (CFF_FontRec): Add `string_pool_size' field.
1322
1323 * src/cff/cffload.c (cff_index_get_pointers): Add argument to return
1324 the pool size.
1325 Update all callers.
1326
1327 * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Directly
1328 access `cff->strings' to display the non-default strings.
1329
Werner Lemberg813aca52016-02-14 16:03:15 +010013302016-02-14 Werner Lemberg <wl@gnu.org>
1331
Werner Lemberge411d382016-02-14 20:48:59 +01001332 * src/base/fthash.c: Include FT_INTERNAL_MEMORY_H.
1333
13342016-02-14 Werner Lemberg <wl@gnu.org>
1335
Werner Lembergdc5b2e82016-02-14 20:47:28 +01001336 * src/cff/cffparse.c: Include `cffgload.h'.
1337
1338 Problem reported by Colin Walters <walters@verbum.org>.
1339
13402016-02-14 Werner Lemberg <wl@gnu.org>
1341
Werner Lemberg813aca52016-02-14 16:03:15 +01001342 [cff] Make old CFF engine show MM CFFs (without variations).
1343
1344 The new code only displays the first master in the font.
1345
1346 * src/cff/cffgload.c (cff_decode_parse_charstrings): Add new
1347 parameter to allow function calls from dictionaries also.
1348 <cff_op_blend>: Partially implement it.
1349 Update all callers.
1350 * src/cff/cffgload.h: Updated.
1351
1352 * src/cff/cffparse.c (cff_parser_init): Add new parameter to pass the
1353 number of Multiple Master designs.
1354 Update all callers.
1355 (cff_parse_multiple_master): New function to rudimentarily parse
1356 operator.
1357 (cff_parser_run): Handle `T2' operator.
1358 * src/cff/cffparse.h: Updated.
1359 (CFF_ParserRec): Add `num_designs' field.
1360
1361 * src/cff/cffload.c: Updated.
1362
1363 * src/cff/cfftoken.h: Handle `MultipleMaster' operator.
1364
1365 * src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_designs' field.
1366
1367 * src/sfnt/sfobjs.c (sfnt_init_face): Don't handle `fvar' table for
1368 MM CFFs.
1369
Werner Lemberg4b3ea5c2016-02-09 08:08:17 +010013702016-02-09 Werner Lemberg <wl@gnu.org>
1371
1372 [docmaker] Don't emit trailing newlines.
1373
1374 * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_code):
1375 Use `rstrip'.
1376
Werner Lemberg950f1692016-02-07 11:39:54 +010013772016-02-07 Werner Lemberg <wl@gnu.org>
1378
Werner Lemberg44accb92016-02-08 19:51:40 +01001379 * Version 2.6.3 released.
1380 =========================
1381
1382
1383 Tag sources with `VER-2-6-3'.
1384
1385 * docs/VERSION.DLL: Update documentation and bump version number to
1386 2.6.3.
1387
1388 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1389 builds/windows/vc2005/index.html,
1390 builds/windows/vc2008/freetype.vcproj,
1391 builds/windows/vc2008/index.html,
1392 builds/windows/vc2010/freetype.vcxproj,
1393 builds/windows/vc2010/index.html,
1394 builds/windows/visualc/freetype.dsp,
1395 builds/windows/visualc/freetype.vcproj,
1396 builds/windows/visualc/index.html,
1397 builds/windows/visualce/freetype.dsp,
1398 builds/windows/visualce/freetype.vcproj,
1399 builds/windows/visualce/index.html,
1400 builds/wince/vc2005-ce/freetype.vcproj,
1401 builds/wince/vc2005-ce/index.html,
1402 builds/wince/vc2008-ce/freetype.vcproj,
1403 builds/wince/vc2008-ce/index.html: s/2.6.2/2.6.3/, s/262/263/.
1404
1405 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
1406
1407 * builds/unix/configure.raw (version_info): Set to 18:3:12.
Werner Lembergd80fe692016-07-05 15:40:19 +02001408 * CMakeLists.txt (VERSION_PATCH): Set to 3.
Werner Lemberg44accb92016-02-08 19:51:40 +01001409
1410 * docs/CHANGES: Updated.
1411
14122016-02-07 Werner Lemberg <wl@gnu.org>
1413
Werner Lemberg78371bd2016-02-07 21:06:59 +01001414 Fix another runtime error found by clang's sanitizer (#47082).
1415
1416 * src/base/ftstroke.c (ft_stroke_border_export): Properly handle
1417 empty input buffer.
1418
14192016-02-07 Werner Lemberg <wl@gnu.org>
1420
Werner Lemberg0d053ba2016-02-07 19:25:56 +01001421 Fix runtime errors found by clang's sanitizer (#47082).
1422
1423 * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c
1424 (FT_Outline_Copy), src/cache/ftcsbits.c (ftc_sbit_copy_bitmap):
1425 Properly handle empty input buffer.
1426
14272016-02-07 Werner Lemberg <wl@gnu.org>
1428
Werner Lemberga1460702016-02-07 11:42:37 +01001429 [cff] Minor.
1430
1431 * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_sqrt>:
1432 Remove dead code.
1433
14342016-02-07 Werner Lemberg <wl@gnu.org>
1435
Werner Lemberg950f1692016-02-07 11:39:54 +01001436 [cff] Implement missing operators in new engine (except `random').
1437
1438 * src/cff/cf2font.h (CF2_STORAGE_SIZE): New macro.
1439
1440 * src/cff/cf2intrp.c (cf2_interpT2CharString): Implement the
1441 following operators: abs, add, and, div, drop, dup, eq, exch, get,
1442 ifelse, index, mul, neg, not, or, put, roll, sqrt, sub.
1443
1444 * src/cff/cf2stack.h, src/cff/cf2stack.c (cf2_stack_roll): New
1445 auxiliary function for `roll' operator.
1446
Werner Lemberg5c8a8cb2016-02-06 08:03:03 +010014472016-02-06 Werner Lemberg <wl@gnu.org>
1448
1449 [cff] Fix some Type 2 operators in old CFF engine.
1450
1451 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Fix `eq'
1452 operator, add `not' and (unsupported) `blend' operators.
1453
Sebastian Rasmussenae7c55d2016-02-05 18:42:19 +010014542016-02-05 Sebastian Rasmussen <sebras@gmail.com>
1455
1456 Make direct call of `make install' work (#47072).
1457
1458 * builds/unix/unix-def.in (freetype-config): Make sure
1459 `freetype-config' is generated for both make targets (`all' and
1460 `install').
1461
Werner Lemberg710ac3d2016-02-05 12:47:29 +010014622016-02-05 Werner Lemberg <wl@gnu.org>
1463
1464 [base] Fix advance width loading for MM and GX fonts (#47064).
1465
1466 * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Return false for
1467 MM and GX fonts.
1468 Update callers.
1469
Werner Lembergcd346da2016-02-03 19:32:03 +010014702016-02-03 Werner Lemberg <wl@gnu.org>
1471
1472 [cff] Fix handling of face_index == -1 for pure CFF.
1473
1474 * src/cff/cffobjs.c (cff_face_init): Return correct number of faces.
1475
Werner Lembergbaa41ff2016-01-30 07:44:30 +010014762016-01-30 Werner Lemberg <wl@gnu.org>
1477
1478 [autofit] Minor tracing improvement.
1479
1480 * src/autofit/afhints.c (af_glyph_hints_dump_points): Insert newline
1481 at the start of a new contour.
1482
Nikolaus Waxweiler68750932016-01-28 12:24:36 +010014832016-01-28 Nikolaus Waxweiler <madigens@gmail.com>
1484
Nikolaus Waxweiler1d8d0b42016-01-28 14:11:14 +01001485 Remove unpatented hinter (3/3).
1486
1487 * include/freetype/config/ftoption.h
1488 (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove.
1489
1490 * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove
1491 `ignore_unpatented_hinter' field.
1492 Update users.
1493 (FT_DEBUG_HOOK_UNPATENTED_HINTING): Remove.
1494 Update users.
1495
1496 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove
1497 `unpatented_hinting' field.
1498 Update users.
1499
1500 * src/base/ftpatent.c (_tt_check_patents_in_range,
1501 _tt_check_patents_in_table, _tt_face_check_patents): Remove.
1502 (FT_Face_CheckTrueTypePatents, FT_Face_SetUnpatentedHinting):
1503 Replace code with dummies.
1504
Werner Lemberg0d053ba2016-02-07 19:25:56 +01001505 * src/truetype/ttobjs.c (tt_face_init): Remove now defunct code.
Nikolaus Waxweiler1d8d0b42016-01-28 14:11:14 +01001506 * src/truetype/ttobjs.h (TT_GraphicsState): Remove `both_x_axis'
1507 field.
1508
15092016-01-28 Nikolaus Waxweiler <madigens@gmail.com>
1510
Nikolaus Waxweiler5b7871b2016-01-28 12:27:46 +01001511 Remove unpatented hinter (2/3).
1512
1513 * devel/ftoption.h (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove.
1514
15152016-01-28 Nikolaus Waxweiler <madigens@gmail.com>
1516
Nikolaus Waxweiler68750932016-01-28 12:24:36 +01001517 Remove unpatented hinter (1/3).
1518
1519 * src/truetype/ttinterp.c [TT_CONFIG_OPTION_UNPATENTED_HINTING]:
1520 Remove all code related to this macro.
1521
Werner Lemberg8d810092016-01-28 10:13:24 +010015222016-01-28 Werner Lemberg <wl@gnu.org>
1523
1524 [autofit] Add blue-zone support for Kannada script.
1525
1526 This essentially moves the Kannada script from the `Indic' hinter to
1527 the `Latin' hinter.
1528
1529 * src/autofit/afblue.dat: Add blue zone data for Kannada.
1530
1531 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1532
1533 * src/autofit/afscript.h: Add Kannada standard characters and move
1534 data out of AF_CONFIG_OPTION_INDIC block.
1535
1536 * src/autofit/afranges.c: Move Kannada data out of
1537 AF_CONFIG_OPTION_INDIC block.
1538
1539 * src/autofit/afstyles.h: Update Kannada data; in particular, use
1540 AF_WRITING_SYSTEM_LATIN.
1541
Alexei Podtelezhnikove4c69d22016-01-22 23:35:49 -050015422016-01-22 Alexei Podtelezhnikov <apodtele@gmail.com>
1543
1544 Better access to 64-bit integers for C99 compilers.
1545
1546 * include/freetype/config/ftconfig.h [FT_LONG64]: Use
1547 __STDC_VERSION__ to define 64-bit integers.
1548 * builds/unix/ftconfig.in [FT_LONG64]: Ditto.
1549 * builds/vms/ftconfig.h [FT_LONG64]: Ditto.
1550
Werner Lembergfc4523b2016-01-21 06:20:20 +010015512016-01-21 Werner Lemberg <wl@gnu.org>
1552
1553 [gxvalid] Remove commented out code.
1554
1555 * src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Do it.
1556
Werner Lemberg24fbed02016-01-20 21:10:41 +010015572016-01-20 Werner Lemberg <wl@gnu.org>
1558
Werner Lemberg78371bd2016-02-07 21:06:59 +01001559 [autofit] Complete last autofit commit.
Werner Lembergfb672892016-01-20 21:13:16 +01001560
1561 Problem reported by Kostya Serebryany <kcc@google.com>.
1562
1563 * src/autofit/afshaper.c (af_shaper_get_coverage)
1564 [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Update signature.
1565
15662016-01-20 Werner Lemberg <wl@gnu.org>
1567
Werner Lemberg24fbed02016-01-20 21:10:41 +01001568 Still handle `__FTERRORS_H__'.
1569
1570 We need this for backwards compatibility.
1571
1572 Problem reported by John Emmas <johne53@tiscali.co.uk>.
1573
1574 * include/freetype/fterrors.h: Fix inclusion guard so that
1575 undefining either `FTERRORS_H_' or `__FTERRORS_H__' works as
1576 expected.
1577
Werner Lembergfc11af12016-01-19 19:15:54 +010015782016-01-19 Werner Lemberg <wl@gnu.org>
1579
Werner Lembergec776592016-01-19 19:33:57 +01001580 [autofit] Fix handling of default script.
1581
1582 Patch taken from ttfautohint, commit
1583 071ae2c00e0d67f9d19418f4fade1c23d27dc185.
1584
1585 There were two bugs.
1586
1587 - We now use non-standard script tags like `khms' for special
1588 purposes. However, HarfBuzz maps such tags to `DFLT', and
1589 without this commit the associated lookups were incorrectly
1590 assigned to the non-standard tags.
1591
1592 - Let's assume we have a Bengali font, and the font's `DFLT'
1593 script tag handles the necessary lookups for Bengali, too.
1594 Without this commit, the `DFLT' lookups were assigned to
1595 ttfautohint's default script (usually `latn') before the
1596 standard lookups for Bengali were handled.
1597
1598 We now have the following order while searching for covered
1599 glyph indices.
1600
1601 special features of scripts (e.g. `sups' for Cyrillic)
1602 Unicode mappings of scripts
1603 remaining features of scripts (especially important for Indic
1604 scripts)
1605 default features of default script
1606
1607 * src/autofit/afshaper.c, src/autofit/afshaper.h
1608 (af_shaper_get_coverage): Add boolean parameter to indicate default
1609 script.
1610 Update all callers.
1611
1612 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
1613 Fix search order for coverages.
1614
16152016-01-19 Werner Lemberg <wl@gnu.org>
1616
Werner Lembergfc11af12016-01-19 19:15:54 +01001617 Various minor clang fixes.
1618
1619 * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
1620 src/autofit/aflatin.c (af_latin_metrics_init_widths): Initialize
1621 `ch'.
1622
1623 * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Add cast.
1624
1625 * src/base/ftdbgmem.c (ft_mem_table_destroy): Add cast.
1626
1627 * src/base/fthash.c (hash_num_lookup): Add cast.
1628
1629 * src/base/fttrigon.c (ft_trig_downscale) [FT_LONG64]: Fix cast.
1630
1631 * src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Comment out
1632 redundant code.
1633
1634 * src/type1/t1driver.c (t1_get_ps_font_value) <PS_DICT_SUBR>: Add
1635 cast.
1636
1637 * src/type1/t1load.c (parse_subrs): Fix type of `count'.
1638
Derek B. Noonburg4cdfefd2016-01-19 07:12:44 +010016392016-01-19 Derek B. Noonburg <derekn@glyphandcog.com>
1640
1641 [truetype] Add another tricky font.
1642
1643 * src/truetype/ttobjs.c (TRICK_SFNT_IDS_NUM_FACES): Increase.
1644 (sfnt_id): Add variant of `DFKaiShu'.
1645
Alexei Podtelezhnikov32760d32016-01-14 23:31:08 -050016462016-01-14 Alexei Podtelezhnikov <apodtele@gmail.com>
1647
1648 [base] Empower `FT_Library_SetLcdFilterWeights'.
1649
1650 * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights): Enable filter
1651 in addition to setting weights.
1652 (FT_Library_SetLcdFilter): Clean out FT_FORCE_LIGHT_LCD_FILTER and
1653 FT_FORCE_LEGACY_LCD_FILTER.
1654 * include/freetype/ftlcdfil.h: Documentation update.
1655
Werner Lemberg37412ff2016-01-12 21:37:13 +010016562016-01-12 Werner Lemberg <wl@gnu.org>
1657
Werner Lembergc09a90a2016-01-12 22:28:14 +01001658 Don't use macro names that start with `_[A-Z]' [3/3].
1659
1660 Such macro names are reserved for both C and C++.
1661
1662 * src/cache/ftccache.h: s/_FTC_FACE_ID_HASH/FTC_FACE_ID_HASH/.
1663 Update all callers.
1664 (FTC_CACHE_LOOKUP_CMP): Replace `_XXX' with `XXX_'.
1665 * src/cache/ftcmru.c (FTC_MRULIST_LOOKUP_CMP): Ditto.
1666
16672016-01-12 Werner Lemberg <wl@gnu.org>
1668
Werner Lemberg9d0b76d2016-01-12 22:27:29 +01001669 Don't use macro names that start with `_[A-Z]' [2/3].
1670
1671 Such macro names are reserved for both C and C++.
1672
1673 * include/freetype/ftimage.h, src/raster/ftraster.c,
1674 src/smooth/ftgrays.c, src/smooth/ftgrays.h:
1675 s/_STANDALONE_/STANDALONE_/.
1676
16772016-01-12 Werner Lemberg <wl@gnu.org>
1678
Werner Lemberg758587d2016-01-12 22:20:06 +01001679 Don't use macro names that start with `_[A-Z]' [1/3].
1680
1681 Such macro names are reserved for both C and C++.
1682
1683 * src/bdf/bdflib.c: Replace macros of the form `_BDF_XXX' with
1684 `BDF_XXX_'.
1685
16862016-01-12 Werner Lemberg <wl@gnu.org>
1687
Werner Lemberg2e9d2662016-01-12 21:40:53 +01001688 Don't use macro names that contain `__' [2/2].
1689
1690 Such macro names are reserved for both C and C++.
1691
1692 * src/cache/*: s/__/_/.
1693
16942016-01-12 Werner Lemberg <wl@gnu.org>
1695
Werner Lemberg37412ff2016-01-12 21:37:13 +01001696 Don't use macro names that contain `__' [1/2].
1697
1698 Such macro names are reserved for both C and C++.
1699
Werner Lemberg2e9d2662016-01-12 21:40:53 +01001700 * */*: Replace macros of the form `__XXX_H__' with `XXX_H_'.
Werner Lemberg37412ff2016-01-12 21:37:13 +01001701
Jered Grayf53bab92016-01-10 12:03:36 +010017022016-01-10 Jered Gray <jegray@google.com>
1703
1704 [cff] Fix usage of `|' operator.
1705
1706 * src/cff/cf2intrp.c (cf2_interpT2CharString) [cf2_cmdEXTENDEDNMBR,
1707 default]: `|' is not guaranteed to be processed from left to right
1708 by the compiler. However, the code repeatedly calls
1709 `cf2_buf_readByte' to get the arguments to `|' ... Fix this.
1710
Werner Lemberg2e098122015-12-25 08:05:30 +010017112015-12-25 Werner Lemberg <wl@gnu.org>
1712
1713 [autofit] Make top-to-bottom hinting work in latin auto-hinter.
1714
1715 This improves rendering of scripts like Bengali or Devanagari.
1716
1717 * src/autofit/afhints.c (af_axis_hints_new_edge): Add parameter to
1718 pass top-to-bottom hinting flag. This makes the function sort edges
1719 in descending vertical position.
1720
1721 * src/autofit/afhints.c: Updated.
1722
1723 * src/autofit/aflatin.c (af_latin_hints_compute_edges,
1724 af_latin_hint_edges): Use `top_to_bottom_hinting' flag.
1725
1726 * src/autofit/afcjk.c (af_cjk_hints_compute_edges),
1727 src/autofit/aflatin2.c (af_latin2_hints_compute_edges): Updated.
1728
Werner Lemberg172db322015-12-24 08:17:51 +010017292015-12-24 Werner Lemberg <wl@gnu.org>
1730
1731 [autofit] Add hinting direction to `AF_ScriptClassRec'.
1732
1733 Still unused.
1734
1735 * src/autofit/afglobal.c (SCRIPT): Handle hinting direction.
1736
1737 * src/autofit/aftypes.h (AF_ScriptClassRec): Add
1738 `top_to_bottom_hinting' field.
1739 (AF_HINTING_BOTTOM_TO_TOP, AF_HINTING_TOP_TO_BOTTOM): New macros.
1740 (AF_DEFINE_SCRIPT_CLASS): Updated.
1741
Werner Lembergb0de5a82015-12-23 23:25:03 +010017422015-12-23 Werner Lemberg <wl@gnu.org>
1743
1744 [autofit] Start implementing hinting direction (up/down, down/up).
1745
1746 Right now, it does nothing.
1747
1748 * src/autofit/afscript.h: Add another parameter to `SCRIPT',
1749 specifying hinting direction.
1750
Alexei Podtelezhnikovc05a1c32016-06-21 23:12:54 -04001751 * src/autofit/afglobal.c, src/autofit/afglobal.h,
Werner Lembergb0de5a82015-12-23 23:25:03 +01001752 src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/afshaper.c,
1753 src/autofit/aftypes.h: Extend `SCRIPT' definitions.
1754
Werner Lemberg7ce6c432015-12-22 05:39:58 +010017552015-12-22 Werner Lemberg <wl@gnu.org>
1756
Werner Lemberg9c1a2b02015-12-22 12:05:46 +01001757 * src/type1/t1load.c (parse_subrs): Fix memory leak (#46744).
1758
17592015-12-22 Werner Lemberg <wl@gnu.org>
1760
Werner Lemberg7ce6c432015-12-22 05:39:58 +01001761 [base] Make hash interface symmetric.
1762
1763 Use `num' and `str' infixes everywhere.
1764
1765 * src/base/fthash.c (ft_hash_init): Renamed to...
1766 (hash_init): ... This.
1767 (ft_hash_str_init, ft_hash_num_init): New functions.
1768 (ft_hash_free): Renamed to...
1769 (ft_hash_str_free): ... This.
1770
1771 * include/freetype/internal/fthash.h: Updated.
1772
1773 * src/bdf/bdflib.c, src/type1/t1load.c, src/type1/t1objs.c: Updated.
1774
Werner Lemberg60d13bd2015-12-21 17:27:17 +010017752015-12-21 Werner Lemberg <wl@gnu.org>
1776
1777 [type1] Avoid shift of negative numbers (#46732).
1778
1779 * src/type1/t1load.c (parse_subrs): Do it.
1780
Werner Lemberg609546c2015-12-20 07:17:29 +010017812015-12-20 Werner Lemberg <wl@gnu.org>
1782
Werner Lembergbd4b8972015-12-20 19:36:04 +01001783 [type1, psaux] Handle large values of num_subrs correctly (#46692).
1784
1785 We now use a hash to map from subr indices to array elements holding
1786 the subroutines, if necessary.
1787
1788 * include/freetype/internal/t1types.h: Include FT_INTERNAL_HASH_H.
1789 (T1_FontRec): Add `subrs_hash' field.
1790
1791 * include/freetype/internal/psaux.h: Include FT_INTERNAL_HASH_H.
1792 (T1_DecoderRec): Add `subrs_hash' field.
1793
1794 * src/type1/t1load.h (T1_LoaderRec): Add `subrs_hash' field.
1795
1796 * src/type1/t1driver.c: Include FT_INTERNAL_HASH_H.
1797 (t1_ps_get_font_value) [PS_DICT_SUBR]: Look up hash if necessary.
1798
1799 * src/type1/t1load.c: Include FT_INTERNAL_HASH_H.
1800 (parse_subrs): Use hash for subr indices that exceed the allocated
1801 number of subr slots.
1802 (t1_init_loader): Remove unnecessary code.
1803 (t1_done_loader, T1_Open_Face): Updated.
1804
1805 * src/type1/t1gload.c (T1_Compute_Max_Advance, T1_Get_Advances,
1806 T1_Load_Glyph): Updated.
1807
1808 * src/type1/t1objs.c (T1_Face_Done): Updated.
1809
1810 * src/psaux/t1decode.c: Include FT_INTERNAL_HASH_H.
1811 (t1_decoder_parse_charstrings) [op_callsubr]: Look up hash if
1812 necessary.
1813
1814 * src/cid/cidgload.c (cid_load_glyph): Updated.
1815
18162015-12-20 Werner Lemberg <wl@gnu.org>
1817
Werner Lemberg1caf6292015-12-20 19:00:35 +01001818 [base] Thinko: Remove free function pointer.
1819
1820 We don't copy keys or values while hashing.
1821
1822 * include/freetype/internal/fthash.h (FT_Hash_FreeFunc): Removed.
1823 (FT_HashRec): Remove `free' field.
1824
1825 * src/base/fthash.c (hash_str_free): Removed.
1826 (ft_hash_init, ft_hash_free): Updated.
1827
18282015-12-20 Werner Lemberg <wl@gnu.org>
1829
Werner Lemberg76e79ec2015-12-20 09:03:15 +01001830 [base, bdf] Don't expose `FT_Hashnode' in hash functions.
1831
1832 * src/base/fthash.c (hash_lookup, ft_hash_str_lookup,
1833 ft_hash_num_lookup): Return pointer to `size_t' instead of
1834 `FT_Hashnode'.
1835
1836 * include/freetype/internal/fthash.h: Updated.
1837
1838 * src/bdf/bdflib.c (bdf_get_property, _bdf_add_property,
1839 bdf_get_font_property): Updated.
1840
18412015-12-20 Werner Lemberg <wl@gnu.org>
1842
Werner Lembergad306ea2015-12-20 08:33:21 +01001843 [base, bdf] Add number hashing.
1844
1845 * src/base/fthash.c (hash_num_lookup, hash_num_compare): New
1846 functions.
1847 (ft_hash_init): Add argument to select between number and string
1848 hashing.
1849 (ft_hash_num_insert, ft_hash_num_lookup): New functions.
1850
1851 * include/freetype/internal/fthash.h: Updated.
1852
1853 * src/bdf/bdflib.c (_bdf_parse_start): Updated.
1854
18552015-12-20 Werner Lemberg <wl@gnu.org>
1856
Werner Lemberg1b7549c2015-12-20 08:00:33 +01001857 [base] Introduce hash lookup, compare, and free function pointers.
1858
1859 * include/freetype/internal/fthash.c (FT_Hash_LookupFunc,
1860 FT_Hash_CompareFunc, FT_Hash_FreeFunc): New typedefs.
1861 (FT_HashRec): Add `lookup', `compare', and `free' fields.
1862
1863 * src/base/fthash.c (hash_str_lookup, hash_str_compare,
1864 hash_str_free): New functions.
1865 (ft_hash_init): Set function pointers.
1866 (hash_bucket, ft_hash_free): Use them.
1867
18682015-12-20 Werner Lemberg <wl@gnu.org>
1869
Werner Lemberg609546c2015-12-20 07:17:29 +01001870 [base, bdf] Use a union as a hash key.
1871
1872 We want to support both an integer and a string key later on.
1873
1874 * include/freetype/internal/fthash.h (FT_Hashkey): New union.
1875 (FT_HashnodeRec): Updated.
1876 (ft_hash_insert, ft_hash_lookup): Renamed to ...
1877 (ft_hash_str_insert, ft_hash_str_lookup): ... this.
1878
1879 * src/base/fthash.c (hash_bucket): Updated.
1880 (ft_hash_insert, ft_hash_lookup): Renamed to ...
1881 (hash_insert, hash_lookup): ... this.
1882 (ft_hash_str_insert, ft_hash_str_lookup): New wrapper functions.
1883
1884 * src/bdf/bdflib.c: Updated.
1885
Werner Lembergc98a40f2015-12-19 16:59:40 +010018862015-12-19 Werner Lemberg <wl@gnu.org>
1887
Werner Lemberg31343562015-12-19 17:02:13 +01001888 [bdf] Use new hash functions.
1889
1890 * src/bdf/bdf.h: Include FT_INTERNAL_HASH_H.
1891 (hashnode, hashtable): Removed.
1892 (bdf_font_t): Use `FT_HashRec' type for `proptbl'.
1893
1894 * src/bdf/bdflib.c: Remove all hash functions.
1895 Update code for new hash structure and function names.
1896
18972015-12-19 Werner Lemberg <wl@gnu.org>
1898
Werner Lembergc98a40f2015-12-19 16:59:40 +01001899 [bdf, base] Lift hash functions from bdf driver to base module.
1900
1901 * src/base/fthash.c, include/freetype/internal/fthash.h: New files,
1902 containing (massaged) code from `bdflib.c' and `bdf.h'.
1903
1904 * include/freetype/internal/internal.h (FT_INTERNAL_HASH_H): New
1905 macro.
1906
1907 * src/base/ftbase.c: Include `fthash.c'.
1908
1909 * src/base/Jamfile (_sources): Add `fthash'.
1910
1911 * src/base/rules.mk (BASE_SRC): Add `fthash.c'.
1912
1913 * docs/LICENSE.TXT: Updated.
1914
Werner Lemberg02451c72015-12-15 17:53:46 +010019152015-12-15 Werner Lemberg <wl@gnu.org>
1916
1917 [autofit] Add blue-zone support for Bengali script.
1918
1919 This essentially moves the Bengali script from the `Indic' hinter to
1920 the `Latin' hinter.
1921
1922 * src/autofit/afblue.dat: Add blue zone data for Bengali.
1923
1924 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1925
1926 * src/autofit/afscript.h: Add Bengali standard characters and move
1927 data out of AF_CONFIG_OPTION_INDIC block.
1928
1929 * src/autofit/afranges.c: Move Bengali data out of
1930 AF_CONFIG_OPTION_INDIC block.
1931
1932 * src/autofit/afstyles.h: Update Bengali data; in particular, use
1933 AF_WRITING_SYSTEM_LATIN.
1934
Ben Wagnera512b0f2015-12-14 09:19:52 +010019352015-12-14 Ben Wagner <bungeman@gmail.com>
1936
1937 [bdf] Remove dead code (#46625).
1938
1939 The BDF specification only allows decimal numbers, no octal or
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04001940 hexadecimal decoding is needed.
Ben Wagnera512b0f2015-12-14 09:19:52 +01001941
1942 * src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous,
1943 _bdf_atos): Remove unused code and parameters.
1944 Update all callers.
1945 (odigits): Remove.
1946
Werner Lemberg40992812015-12-14 07:51:25 +010019472015-12-14 Werner Lemberg <wl@gnu.org>
1948
1949 [base] Fix calls to `FT_Stream_Seek'.
1950
1951 * src/base/ftobjs.c (Mac_Read_sfnt_Resource, FT_Open_Face): Set
1952 `error'.
1953
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040019542015-12-14 Ben Wagner <bungeman@gmail.com>
Ben Wagnerf0cc1732015-12-14 07:00:41 +01001955
1956 [base] Check error when seeking to data supplied offset (#46635).
1957
1958 * src/base/ftobjs.c (open_face_PS_from_sfnt_stream):
Alexei Podtelezhnikov500bcbd2016-05-07 22:28:43 -04001959 `ft_lookup_PS_in_sfnt_stream' returns offset and length from
Ben Wagnerf0cc1732015-12-14 07:00:41 +01001960 user supplied data. Use of this these values must be checked.
1961
Werner Lembergd8f9a452015-12-13 15:54:17 +010019622015-12-13 Werner Lemberg <wl@gnu.org>
1963
1964 [autofit] Add support for Myanmar script.
1965
1966 * src/autofit/afblue.dat: Add blue zone data for Myanmar.
1967
1968 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1969
1970 * src/autofit/afscript.h: Add Myanmar standard characters.
1971
1972 * src/autofit/afranges.c: Add Myanmar data.
1973
1974 * src/autofit/afstyles.h: Add Myanmar data.
1975
Werner Lemberg79a42ad2015-12-12 07:27:14 +010019762015-12-12 Werner Lemberg <wl@gnu.org>
1977
Werner Lemberg868d5a02015-12-12 07:28:22 +01001978 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Minor.
1979
19802015-12-12 Werner Lemberg <wl@gnu.org>
1981
Werner Lemberg79a42ad2015-12-12 07:27:14 +01001982 * src/autofit/afscript.h: Avoid potential crash.
1983
Werner Lembergbbe84ed2015-12-10 09:33:41 +010019842015-12-10 Werner Lemberg <wl@gnu.org>
1985
Werner Lemberg4fe3b552015-12-11 08:08:48 +01001986 [autofit] Restore OpenType feature check.
1987
1988 This was removed while rewriting the HarfBuzz interface.
1989
1990 * src/autofit/afglobal.h (AF_FaceGlobalsRec): Add `hb_buf' field to
1991 hold internal HarfBuzz buffer, needed for feature comparison.
1992
1993 * src/autofit/afglobal.c (af_face_globals_new,
1994 af_face_globals_free): Initialize and destroy `hb_buf'.
1995
1996 * src/autofit/afshaper.c (af_shaper_get_cluster): Compare character
1997 (cluster) with and without applied feature.
1998
1999 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix tracing
2000 message.
2001
20022015-12-10 Werner Lemberg <wl@gnu.org>
2003
Werner Lembergbbe84ed2015-12-10 09:33:41 +01002004 [autofit] Remove redundant code.
2005
2006 * src/autofit/aflatin.c (af_latin_metrics_init_widths): Do it.
2007
Werner Lembergf02e1df2015-12-09 14:45:30 +010020082015-12-09 Werner Lemberg <wl@gnu.org>
2009
Werner Lembergdd305f32015-12-09 21:00:33 +01002010 [autofit] Thinko.
2011
2012 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Don't count
2013 empty blue zones (bug introduced 2015-12-06).
2014
20152015-12-09 Werner Lemberg <wl@gnu.org>
2016
Werner Lemberg0164d932015-12-09 20:04:18 +01002017 [autofit] Introduce subscript top blue zones.
2018
2019 This feature is mainly for Khmer: The idea is to avoid a clash
2020 between the top of subscript glyphs and the bottom of normal
2021 baseline glyphs.
2022
2023 This only works for character clusters mapped to multiple glyphs.
2024
2025 * src/autofit/afblue.dat: Add subscript top blue zone for Khmer.
2026
2027 * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_SUB_TOP): New
2028 macro.
2029
2030 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
2031
2032 * src/autofit/aflatin.h (AF_LATIN_IS_SUB_TOP_BLUE,
2033 AF_LATIN_BLUE_SUB_TOP): New macros.
2034
2035 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle new
2036 blue zone property.
2037 Update tracing messages.
2038 (af_latin_metrics_scale_dim): Handle new blue zone property.
2039 (af_latin_hints_compute_blue_edges): Updated.
2040
20412015-12-09 Werner Lemberg <wl@gnu.org>
2042
Werner Lembergf02e1df2015-12-09 14:45:30 +01002043 [autofit] Fix tracing message.
2044
2045 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Display
2046 inactive blue zones also.
2047
Werner Lembergf45c0bf2015-12-06 09:58:18 +010020482015-12-06 Werner Lemberg <wl@gnu.org>
2049
Werner Lembergc13526e2015-12-08 09:48:50 +01002050 * src/autofit/afblue.dat: Add more Khmer clusters.
2051
2052 Some fonts have incorrect ligatures; we need more samples to get a
2053 good mean value.
2054
2055 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
2056
20572015-12-06 Werner Lemberg <wl@gnu.org>
2058
Werner Lembergb38ca3c2015-12-06 19:48:31 +01002059 [autofit] Typos.
2060
2061 * src/autofit/afshaper.c (af_shaper_buf_create, af_shaper_get_elem)
2062 [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Make it compile.
2063
20642015-12-06 Werner Lemberg <wl@gnu.org>
2065
Werner Lembergfacb79a2015-12-06 19:34:59 +01002066 [autofit] Add support for Khmer script.
2067
2068 We split Khmer into two auto-hinter scripts: `Khmer' (`khmr') and
2069 `Khmer symbols' (`khms', U+19E0-U+19FF).
2070
2071 * src/autofit/afblue.dat: Add blue zone data for Khmer.
2072
2073 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
2074
2075 * src/autofit/afscript.h: Add Khmer standard characters.
2076
2077 * src/autofit/afranges.c: Add Khmer data.
2078
2079 * src/autofit/afstyles.h: Add Khmer data.
2080
20812015-12-06 Werner Lemberg <wl@gnu.org>
2082
Werner Lemberg24aa9c62015-12-06 18:52:41 +01002083 [autofit] Rewrite HarfBuzz interface to support character clusters.
2084
2085 Scripts like Khmer have blue zones that can't be directly
2086 represented by Unicode characters. Instead, it is necessary to let
2087 HarfBuzz convert character clusters into proper glyph representation
2088 forms, then deriving the blue zone information from the resulting
2089 glyphs.
2090
2091 * src/autofit/hbshim.c, src/autofit/hbshim.h: Replaced by...
2092 * src/autofit/afshaper.c, src/autofit/afshaper.h: ... these two new
2093 files, providing a new API to access HarfBuzz.
2094
2095 The new API manages a HarfBuzz buffer with `af_shaper_buf_create'
2096 and `af_shaper_buf_destroy'. The buffer receives a UTF8 encoded
2097 string with function `af_shaper_get_cluster', and the resulting
2098 glyph data (indices, advance widths, vertical offsets) can be
2099 iteratively accessed with function `af_shaper_get_elem'.
2100
2101 * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
2102 af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated.
2103
2104 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
2105 af_latin_metrics_init_blues, af_latin_metrics_check_digits):
2106 Updated.
2107
2108 * include/freetype/internal/fttrace.h: s/afharfbuzz/afshaper/.
2109
2110 * src/autofit/afglobal.c: s/hbshim.h/afshaper.h/.
2111 (af_face_globals_compute_style_coverage): Updated.
2112
Alexei Podtelezhnikovf46b2822016-04-11 23:22:57 -04002113 * src/autofit/afglobal.h: s/hbshim.h/afshaper.h/.
Werner Lemberg24aa9c62015-12-06 18:52:41 +01002114
2115 * src/autofit/autofit.c: s/hbshim.c/afshaper.c/.
2116
2117 * src/autofit/Jamfile, src/autofit/rules.mk (AUTOF_DRV_SRC):
2118 Updated.
2119
21202015-12-06 Werner Lemberg <wl@gnu.org>
2121
Werner Lembergde599942015-12-06 18:18:02 +01002122 [autofit] Prepare forthcoming changes.
2123
2124 This makes it easier to control the commits.
2125
2126 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Add dummy
2127 loop. No functional change.
2128
21292015-12-06 Werner Lemberg <wl@gnu.org>
2130
Werner Lembergf45c0bf2015-12-06 09:58:18 +01002131 [autofit] Use string of standard characters.
2132
2133 This is more flexible; additionally, it would allow character
2134 clusters.
2135
2136 * src/autofit/aftypes.h (SCRIPT, AF_DEFINE_SCRIPT_CLASS): Updated.
2137 (AF_ScriptClassRec): Replace `standard_char[123]' with
2138 `standard_charstring'.
2139
2140 * src/autofit/afscript.h: Replace last three character arguments
2141 of the `SCRIPT' calls with a string parameter, holding the standard
2142 characters (in UTF-8 encoding) separated with spaces.
2143
2144 * src/autofit/afglobal.c, src/autofit/afglobal.h,
2145 src/autofit/afpic.c, src/autofit/afranges.c, src/autofit/hbshim.c
2146 (SCRIPT): Updated.
2147
2148 * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
2149 src/autofit/aflatin.c (af_latin_metrics_init_widths): Updated.
2150
Werner Lemberg53696f02015-12-05 07:44:16 +010021512015-12-05 Werner Lemberg <wl@gnu.org>
2152
Werner Lemberga8a54c32015-12-05 13:26:44 +01002153 * src/autofit/afblue.dat: Separate blue zone characters with spaces.
2154
2155 Another preparation for character cluster support.
2156
2157 * src/autofit/afblue.c, src/autofit.afblue.h: Regenerated.
2158
21592015-12-05 Werner Lemberg <wl@gnu.org>
2160
Werner Lemberg453722d2015-12-05 13:20:30 +01002161 * src/tools/afblue.pl (convert_ascii_chars): Don't ignore spaces.
2162
2163 Instead, reduce multiple spaces to a single one. We need this later
2164 for supporting character clusters in `afblue.dat'.
2165
21662015-12-05 Werner Lemberg <wl@gnu.org>
2167
Werner Lembergf7e6d512015-12-05 13:08:45 +01002168 * src/autofit/afblue.hin (GET_UTF8_CHAR): Use `do...while(0)'.
2169
2170 * src/autofit/afblue.h: Regenerated.
2171
21722015-12-05 Werner Lemberg <wl@gnu.org>
2173
Werner Lemberg53696f02015-12-05 07:44:16 +01002174 * src/autofit/afwarp.c: s/INT_MIN/FT_INT_MIN/.
2175
Werner Lemberga4154732015-12-03 07:49:46 +010021762015-12-03 Werner Lemberg <wl@gnu.org>
2177
2178 * builds/unix/install.mk (install): Remove stale `ft2build.h'.
2179
Werner Lemberg5b05bc62015-12-01 12:09:02 +010021802015-12-01 Werner Lemberg <wl@gnu.org>
2181
2182 [type1] Avoid dangling pointer (#46572).
2183
2184 * src/type1/t1afm.c (T1_Read_Metrics): Properly reset
2185 `face->afm_data'.
2186
Alexei Podtelezhnikovf8c20572015-11-28 22:43:33 -050021872015-11-28 Alexei Podtelezhnikov <apodtele@gmail.com>
2188
2189 * include/freetype/ftlcdfil.h: Documentation tweak.
2190
Werner Lemberg4679bf82015-11-28 19:05:36 +010021912015-11-28 Werner Lemberg <wl@gnu.org>
2192
Werner Lemberg66cf29b2015-11-28 19:08:05 +01002193 * Version 2.6.2 released.
2194 =========================
2195
2196
2197 Tag sources with `VER-2-6-2'.
2198
2199 * docs/VERSION.DLL: Update documentation and bump version number to
2200 2.6.2.
2201
2202 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
2203 builds/windows/vc2005/index.html,
2204 builds/windows/vc2008/freetype.vcproj,
2205 builds/windows/vc2008/index.html,
2206 builds/windows/vc2010/freetype.vcxproj,
2207 builds/windows/vc2010/index.html,
2208 builds/windows/visualc/freetype.dsp,
2209 builds/windows/visualc/freetype.vcproj,
2210 builds/windows/visualc/index.html,
2211 builds/windows/visualce/freetype.dsp,
2212 builds/windows/visualce/freetype.vcproj,
2213 builds/windows/visualce/index.html,
2214 builds/wince/vc2005-ce/freetype.vcproj,
2215 builds/wince/vc2005-ce/index.html,
2216 builds/wince/vc2008-ce/freetype.vcproj,
2217 builds/wince/vc2008-ce/index.html: s/2.6.1/2.6.2/, s/261/262/.
2218
2219 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
2220
2221 * builds/unix/configure.raw (version_info): Set to 18:2:12.
2222 * CMakeLists.txt (VERSION_PATCH): Set to 2.
2223
2224 * docs/CHANGES: Updated.
2225
22262015-11-28 Werner Lemberg <wl@gnu.org>
2227
Werner Lemberg4679bf82015-11-28 19:05:36 +01002228 Fix C++ compilation.
2229
2230 * src/autofit/afloader.c: Include FT_INTERNAL_CALC_H.
2231
2232 * src/truetype/ttgload.c (load_truetype_glyph): Pacify compiler.
2233
Nikolaus Waxweiler01ce1c62015-11-28 12:04:28 +010022342015-11-28 Nikolaus Waxweiler <madigens@gmail.com>
2235
2236 Change default LCD filter to be normalized and color-balanced.
2237
2238 * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Update
2239 `default_filter'.
2240
Werner Lemberg98afe3f2015-11-28 11:58:49 +010022412015-11-28 Werner Lemberg <wl@gnu.org>
2242
2243 [docmaker] Allow references to section names.
2244
2245 In the reference, we show the section's title enclosed in single
2246 quotes.
2247
2248 * src/tools/docmaker/formatter.py (Formatter::__init__): Collect
2249 section names as identifiers.
2250
2251 * src/tools/docmaker/tohtml.py (section_title_header): Split into...
2252 (section_title_header1, section_title_header2): ... these two
2253 strings.
2254 (HtmlFormatter::make_block_url, make_html_word, html_source_quote):
2255 Handle sections.
2256 (HtmlFormatter::section_enter): Updated to add `id' HTML attribute.
2257
Tamas Kenez4854df62015-11-27 07:04:31 +010022582015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
2259
Tamas Kenez30fdfe62015-11-27 23:16:08 +01002260 [cmake] Add script to test the config module.
2261
2262 * builds/cmake/testbuild.sh: New file.
2263
22642015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
2265
Tamas Kenezc80620c2015-11-27 18:37:21 +01002266 * CMakeLists.txt: Create `freetype-config.cmake' config module.
2267
22682015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
2269
Tamas Kenez9d0544f2015-11-27 18:28:31 +01002270 * CMakeLists.txt: Set CMAKE_DEBUG_POSTFIX to `d'.
2271
22722015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
2273
Tamas Kenezda97b4c2015-11-27 07:11:42 +01002274 [cmake] Add better control of library dependencies.
2275
2276 * CMakeLists.txt: Add `WITH_*' variables to force/auto/omit
2277 ZLIB/BZip2/PNG/HarfBuzz.
2278
22792015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
2280
Alexei Podtelezhnikov6d070342016-06-20 01:09:18 -04002281 [cmake] Make `FindHarfBuzz' observe the REQUIRED option.
Tamas Kenez4854df62015-11-27 07:04:31 +01002282
2283 * builds/cmake/FindHarfBuzz.cmake: Implement it.
2284
Werner Lemberg5b3446b2015-11-27 06:47:13 +010022852015-11-27 Werner Lemberg <wl@gnu.org>
2286
2287 [cmake] Collect files specific to cmake in `builds/cmake'.
2288
2289 * builds/FindHarfBuzz.cmake: Move to ...
2290 * builds/cmake/FindHarfBuzz.cmake: ... this place.
2291
2292 * CMakeLists.txt (CMAKE_MODULE_PATH): Updated.
2293
Alexander Bock8f982b32015-11-27 06:34:39 +010022942015-11-27 Alexander Bock <alexander.j.bock@nasa.gov>
2295
2296 CMakeLists.txt: Honour new command line flag `FREETYPE_NO_DIST'.
2297
Werner Lemberg97b808f2015-11-26 14:29:17 +010022982015-11-26 Werner Lemberg <wl@gnu.org>
2299
2300 [docmaker] Allow `foo[bar]' as identifier.
2301
2302 We need this to handle equally named properties in different
2303 modules.
2304
2305 * src/tools/docmaker/content.py (re_identifier),
2306 src/tools/docmaker/sources.py (re_crossref): Allow `foo[bar]'.
2307
2308 * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word,
2309 HtmlFormatter::index_exit, HtmlFormatter::section_enter,
2310 HtmlFormatter::block_enter): Handle `foo[bar]'.
2311
Werner Lemberg4a150132015-11-25 07:53:49 +010023122015-11-25 Werner Lemberg <wl@gnu.org>
2313
2314 * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46480).
2315
2316 (_bdf_parse_glyphs): Always reset `p->glyph_name' after moving its
2317 contents.
2318
Werner Lemberg663f2d72015-11-21 06:30:43 +010023192015-11-21 Werner Lemberg <wl@gnu.org>
2320
2321 * include/freetype/internal/ftcalc.h: Don't use `register' keyword.
2322
2323 This fixes compiler warnings.
2324
2325 Reported by Behdad.
2326
Werner Lembergb96af122015-11-20 16:03:09 +010023272015-11-20 Werner Lemberg <wl@gnu.org>
2328
2329 Add `FT_LCD_FILTER_LEGACY1' enum value.
2330
2331 This does the same as `FT_LCD_FILTER_LEGACY'.
2332
2333 See
2334
2335 https://bugs.freedesktop.org/show_bug.cgi?id=92981
2336
2337 for the reasoning.
2338
2339 * include/freetype/ftlcdfil.h (FT_LcdFilter): New value
2340 `FT_LCD_FILTER_LEGACY1'.
2341
2342 * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Use it.
2343
Werner Lemberg94cacac2015-11-15 04:45:42 +010023442015-11-15 Werner Lemberg <wl@gnu.org>
2345
Werner Lemberg68fb4782015-11-15 13:06:48 +01002346 * src/autofit/afhints.c (af_get_segment_index): Fix it.
2347
2348 The old code was too simple, returning invalid values in most cases
2349 where a segment crosses the contour start.
2350
23512015-11-15 Werner Lemberg <wl@gnu.org>
2352
Werner Lemberg94cacac2015-11-15 04:45:42 +01002353 * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46439).
2354
Werner Lemberg75722f82015-11-11 09:55:16 +010023552015-11-11 Werner Lemberg <wl@gnu.org>
2356
2357 [cff, autofit] Switch off stem darkening by default.
2358
2359 * src/autofit/afmodule.c (af_autofitter_init), src/cff/cffobjs.c
2360 (cff_driver_init): Do it.
2361
Jan Alexander Steffens (heftig)ccd31882015-11-10 22:33:45 +010023622015-11-10 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
2363
2364 Allow native CFF hinter in FT_RENDER_MODE_LIGHT.
2365
2366 Both the native CFF hinter and the auto-hinter now have a very
2367 similar rendering style.
2368
2369 * include/freetype/freetype.h: Mention that FT_LOAD_TARGET_LIGHT no
2370 longer implies FT_LOAD_FORCE_AUTOHINT.
2371
2372 * include/freetype/ftmodapi.h (FT_MODULE_DRIVER_HINTS_LIGHTLY): New
2373 macro.
2374
2375 * include/freetype/internal/ftobjs.h (FT_DRIVER_HINTS_LIGHTLY): New
2376 macro.
2377
2378 * src/cff/cffdrivr.c (cff_driver_class): Use it.
2379
2380 * src/base/ftobjs.c (FT_Load_Glyph): Update auto-hinter selection
2381 logic.
2382
Werner Lemberg837285e2015-11-09 09:20:08 +010023832015-11-09 Werner Lemberg <wl@gnu.org>
2384
Werner Lemberg2985e4f2015-11-09 21:37:40 +01002385 * src/cid/cidload.c (cid_face_open): Fix GDBytes guard (#46408).
2386
23872015-11-09 Werner Lemberg <wl@gnu.org>
2388
Werner Lemberg837285e2015-11-09 09:20:08 +01002389 [truetype] Remove integer to pointer conversion compiler warning.
2390
2391 Problem reported by Alexei.
2392
2393 * src/truetype/ttgload.c (load_truetype_glyph): Use a solution found
2394 in the glib library to fix the issue.
2395
Behdad Esfahbodabb33122015-11-08 10:00:34 +010023962015-11-08 Behdad Esfahbod <behdad@behdad.org>
2397
2398 [sfnt] Accept version 3 of `EBLC' and `CBLC' tables also.
2399
2400 * src/sfnt/ttsbit.c (tt_face_load_sbit): Implement it.
2401
24022015-11-08 Philipp Knechtges <philipp-dev@knechtges.com>
Philipp Knechtgesbe32b162015-11-08 08:37:51 +01002403
2404 [autofit] Don't distort (latin) glyphs too much (#46195).
2405
2406 * src/autofit/aflatin.h (AF_LatinBlueRec): Add `ascender' and
2407 `descender' fields.
2408
2409 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Collect
2410 ascender and descender data for blue zones.
2411 (af_latin_metrics_scale_dim): Reject vertical scaling values that
2412 change the result by more than two pixels.
2413
Werner Lemberg0f0a6bb2015-11-05 13:48:11 +010024142015-11-05 Werner Lemberg <wl@gnu.org>
2415
2416 [sfnt] Ignore embedded bitmaps with zero size (#46379).
2417
2418 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Implement
2419 it.
2420
Werner Lemberg040edaf2015-11-04 07:35:51 +010024212015-11-04 Werner Lemberg <wl@gnu.org>
2422
Werner Lemberg758d55e2015-11-04 11:44:47 +01002423 [truetype] Catch infinite recursion in subglyphs (#46372).
2424
2425 * include/freetype/internal/tttypes.h (TT_LoaderRec): New field
2426 `composites'.
2427
2428 * src/truetype/ttgload.c: Include FT_LIST_H.
2429 (load_truetype_glyph): Add composite subglyph index to a list;
2430 abort if index is already in list.
2431 (tt_loader_init): Updated.
2432 (tt_loader_done): New function.
2433 (TT_Load_Glyph): Call `tt_loader_done'.
2434
24352015-11-04 Werner Lemberg <wl@gnu.org>
2436
Werner Lemberg040edaf2015-11-04 07:35:51 +01002437 [truetype] Better tracing of composite glyphs.
2438
2439 * src/truetype/ttgload.c (TT_Load_Composite_Glyph,
2440 load_truetype_glyph): Implement it.
2441
Werner Lembergaae88082015-11-03 17:30:36 +010024422015-11-03 Werner Lemberg <wl@gnu.org>
2443
2444 [sfnt] Protect against zero-size bitmaps (#46345).
2445
2446 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Check
2447 `glyph_size'.
2448
Nikolaus Waxweilerd682e512015-11-02 09:06:36 +010024492015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
2450
Nikolaus Waxweilerb6fd5bc2015-11-03 10:40:58 +01002451 * src/autofit/afloader.c (af_loader_load_g): Implement emboldening.
2452
24532015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
2454
Nikolaus Waxweilerbf2ba9e2015-11-02 13:12:34 +01002455 [autofit] Implement darkening computation function.
2456
2457 This is a crude adaption of the original `cf2_computeDarkening'
2458 function.
2459
2460 * src/autofit/afloader.c (af_intToFixed, af_fixedToInt,
2461 af_floatToFixed): New macros, taken from `cf2fixed.h'.
2462 (af_loader_compute_darkening): New function.
2463 * src/autofit/afloader.h: Updated.
2464
24652015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
2466
Nikolaus Waxweiler37c401a2015-11-02 09:32:26 +01002467 [autofit] Add functions to get standard widths for writing systems.
2468
2469 We need the computed standard horizontal and vertical widths for the
2470 emboldening calculation. This method provides a convenient way to
2471 extract it from writing-system-specific metrics structures, which
2472 all script definitions must implement.
2473
2474 * src/autofit/aftypes.h (AF_WritingSystem_GetStdWidthsFunc): New
2475 function type.
2476 (AF_WritingSystemClassRec): New member `style_metrics_getstdw'.
2477 (AF_DEFINE_WRITING_SYSTEM_CLASS): Updated.
2478
2479 * src/autofit/afcjk.c (af_cjk_get_standard_width): New function.
2480 (af_cjk_writing_system_class): Updated.
2481 * src/autofit/afdummy.c (af_dummy_writing_system_class): Updated.
2482 * src/autofit/afindic.c (af_cjk_get_standard_width): New function.
2483 (af_indic_writing_system_class): Updated.
2484 * src/autofit/aflatin.c (af_latin_get_standard_width): New function.
2485 (af_indic_writing_system_class): Updated.
2486 * src/autofit/aflatin.c (af_latin_get_standard_width): New function.
2487 (af_indic_writing_system_class): Updated.
2488
24892015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
2490
Nikolaus Waxweilerb2a85ad2015-11-02 09:20:32 +01002491 [autofit] Extend `AF_FaceGlobalsRec' to hold emboldening data.
2492
2493 * src/autofit/afglobal.h (AF_FaceGlobalsRec): Add fields.
2494
2495 * src/autofit/afglobal.c (af_face_globals_new): Initialize new
2496 fields.
2497 (af_face_globals_free): Reset new fields.
2498
24992015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
2500
Nikolaus Waxweilerd682e512015-11-02 09:06:36 +01002501 [autofit] Add stem-darkening properties.
2502
2503 Actual code follows in a later commit.
2504
2505 * include/freetype/ftautoh.h: Document `no-stem-darkening' and
2506 `darkening-parameters'.
2507
2508 * src/autofit/afmodule.h: New fields `no_stem_darkening' and
2509 `darken_params'.
2510
2511 * src/autofit/afmodule.c (af_property_set, af_property_get):
2512 Handle them.
2513 (af_autofitter_init): Initialize them.
2514
Ben Wagnerf0cc1732015-12-14 07:00:41 +010025152015-11-02 Ben Wagner <bungeman@gmail.com>
Werner Lembergbcf618b2015-11-02 06:50:49 +01002516
2517 [ftfuzzer] Add support for multiple files (patch #8779).
2518
2519 Currently, libFuzzer only supports mutation of a single file. We
2520 circumvent this problem by using an uncompressed tar archive as
2521 multiple-file input for the fuzzer.
2522
2523 This patch enables tests of `FT_Attach_Stream' and AFM/PFM parsing;
2524 a constructed tarball should contain a font file as the first
2525 element, and files to be attached as further elements.
2526
2527 * src/tools/ftfuzzer/ftfuzzer.cc: Include libarchive headers.
2528 (archive_read_entry_data, parse_data): New functions.
2529 (LLVMFuzzerTestOneInput): Updated.
2530
2531 * src/tools/ftfuzzer/ftmutator.cc: New file, providing a custom
2532 mutator for libFuzzer that can mutate tarballs in a sensible way.
2533
Werner Lemberg009cc152015-10-31 17:52:56 +010025342015-10-31 Werner Lemberg <wl@gnu.org>
2535
Werner Lemberg57cbb8c2015-10-31 18:47:26 +01002536 [sfnt] Fix cmap 14 validation (#46346).
2537
2538 * src/sfnt/ttcmap.c (tt_cmap14_validate): Check limit before
2539 accessing `numRanges' and `numMappings'.
2540 Fix size check for non-default UVS table.
2541
25422015-10-31 Werner Lemberg <wl@gnu.org>
2543
Werner Lemberg009cc152015-10-31 17:52:56 +01002544 [sfnt] Handle infinite recursion in bitmap strikes (#46344).
2545
2546 * src/sfnt/ttsbit.c (TT_SBitDecoder_LoadFunc,
2547 tt_sbit_decoder_load_bitmap, tt_sbit_decoder_load_byte_aligned,
2548 tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_png): Add
2549 argument for recursion depth.
2550 (tt_sbit_decoder_load_compound): Add argument for recursion depth.
2551 Increase recursion counter for recursive call.
2552 (tt_sbit_decoder_load_image): Add argument for recursion depth.
2553 Check recurse depth.
2554 (tt_face_load_sbit_image): Updated.
2555
Werner Lemberg017db032015-10-29 05:52:09 +010025562015-10-29 Werner Lemberg <wl@gnu.org>
2557
Werner Lemberg02cfd712015-10-29 20:50:57 +01002558 * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor.
2559
25602015-10-29 Werner Lemberg <wl@gnu.org>
2561
Werner Lemberg017db032015-10-29 05:52:09 +01002562 * CMakeLists.txt: Remove code to set MSVC's /FD compiler switch.
2563
2564 Problem reported by David Capello <davidcapello@gmail.com>; see
2565
2566 http://lists.nongnu.org/archive/html/freetype-devel/2015-10/msg00108.html
2567
2568 for details.
2569
Werner Lembergfba29fa2015-10-27 21:04:48 +010025702015-10-27 Werner Lemberg <wl@gnu.org>
2571
2572 [pfr] Add some safety guards (#46302).
2573
2574 * src/pfr/pfrload.h (PFR_CHECK): Rename to...
2575 (PFR_CHECK_SIZE): ... this.
2576 (PFR_SIZE): [!PFR_CONFIG_NO_CHECKS]: Define to PFR_CHECK_SIZE.
2577
Werner Lembergf45c0bf2015-12-06 09:58:18 +01002578 * src/pfr/pfrload.c (pfr_log_font_count): Check `count'.
Werner Lembergfba29fa2015-10-27 21:04:48 +01002579 (pfr_extra_item_load_kerning_pairs): Remove tracing message.
2580 (pfr_phy_font_load): Use PFR_CHECK_SIZE where appropriate.
2581 Allocate `chars' after doing a size checks.
2582
2583 * src/pfr/pfrsbit.c (pfr_load_bitmap_bits): Move test for invalid
2584 bitmap format to...
2585 (pfr_slot_load_bitmap): ... this function.
2586 Check bitmap size.
2587
Werner Lemberg6a19a7d2015-10-26 15:40:22 +010025882015-10-26 Werner Lemberg <wl@gnu.org>
2589
2590 [truetype] Fix sanitizing logic for `loca' (#46223).
2591
2592 * src/truetype/ttpload.c (tt_face_load_loca): A thinko caused an
2593 incorrect adjustment of the number of glyphs, most often using far
2594 too large values.
2595
Werner Lemberg7f00fa62015-10-25 10:59:59 +010025962015-10-25 Werner Lemberg <wl@gnu.org>
2597
2598 [autofit] Improve tracing.
2599
2600 * src/autofit/afhints.c (af_print_idx, af_get_segment_index,
2601 af_get_edge_index): New functions.
2602
2603 (af_glyph_hints_dump_points): Remove unnecessary `|', `[', and `]'.
2604 Add segment and edge index for each point.
2605 Slightly change printing order of some elements.
2606 Don't print `-1' but `--' for missing elements.
2607
2608 (af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Remove
2609 unnecessary `|', `[', and `]'.
2610 Don't print `-1' but `--' for missing elements.
2611
Werner Lemberg6f090112015-10-24 10:10:22 +020026122015-10-24 Werner Lemberg <wl@gnu.org>
2613
2614 [sfnt] Sanitize bitmap strike glyph height.
2615
2616 Problem reported by Nikolay Sivov <bunglehead@gmail.com>.
2617
2618 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Avoid zero value
2619 for `metrics->height' by applying some heuristics.
2620
Werner Lemberge93d3262015-10-22 10:17:20 +020026212015-10-22 Werner Lemberg <wl@gnu.org>
2622
2623 [sfnt, type42] Fix clang compiler warnings.
2624
2625 * src/sfnt/sfobjs.c (sfnt_init_face): Initialize `offset'.
2626
2627 * src/type42/t42parse.c (t42_parse_sfnts): Use proper cast.
2628
Werner Lembergf1c93432015-10-22 10:11:23 +020026292015-10-22 Dave Arnold <darnold@adobe.com>
2630 Werner Lemberg <wl@gnu.org>
2631
2632 [cff] Avoid overflow/module arithmetic.
2633
2634 This modifies the addition of subroutine number to subroutine bias
2635 from unsigned to signed, but does not change any results.
2636
2637 * src/cff/cf2ft.c (cf2_initGlobalRegionBuffer,
2638 cf2_initLocalRegionBuffer): Change variable names from (unsigned)
2639 `idx' to (signed) `subrNum', since it is not an index until after
2640 the bias is added.
2641 * src/cff/cf2ft.h: Updated.
2642
2643 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLSUBR>:
2644 Updated similarly.
2645
Werner Lemberg59ae73f2015-10-22 09:26:00 +020026462015-10-22 Werner Lemberg <wl@gnu.org>
2647
2648 [cid] Better check of `SubrCount' dictionary entry (#46272).
2649
2650 * src/cid/cidload.c (cid_face_open): Add more sanity tests for
2651 `fd_bytes', `gd_bytes', `sd_bytes', and `num_subrs'.
2652
Werner Lemberg87fefc52015-10-21 20:29:12 +020026532015-10-21 Werner Lemberg <wl@gnu.org>
2654
Werner Lemberge484d362015-10-21 20:48:27 +02002655 [base] Pacify compiler (#46266).
2656
2657 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Initialize `in' and
2658 `anchor'.
2659
26602015-10-21 Werner Lemberg <wl@gnu.org>
2661
Werner Lemberg87fefc52015-10-21 20:29:12 +02002662 [type42] Fix heap buffer overflow (#46269).
2663
2664 * src/type42/t42parse.c (t42_parse_sfnts): Fix off-by-one error in
2665 bounds checking.
2666
Dave Arnold748e3682015-10-21 13:58:43 +020026672015-10-21 Dave Arnold <darnold@adobe.com>
2668
Dave Arnold3cfd5122015-10-21 14:07:25 +02002669 [cff] Fix limit in assert for max hints.
2670
2671 * src/cff/cf2interp.c (cf2_hintmask_setAll): Allow mask equal to the
2672 limit (96 bits).
2673
26742015-10-21 Dave Arnold <darnold@adobe.com>
2675
Dave Arnold748e3682015-10-21 13:58:43 +02002676 [cff] Remove an assert (#46107).
2677
2678 * src/cff/cf2hints.c (cf2_hintmap_insertHint): Ignore paired edges
2679 in wrong order.
2680
Werner Lemberg649ca552015-10-21 07:01:45 +020026812015-10-21 Werner Lemberg <wl@gnu.org>
2682
Werner Lemberge6593382015-10-21 08:04:29 +02002683 [sfnt] Avoid unnecessarily large allocation for WOFFs (#46257).
2684
2685 * src/sfnt/sfobjs.c (woff_open_font): Use WOFF's `totalSfntSize'
2686 only after thorough checks.
2687 Add tracing messages.
2688
26892015-10-21 Werner Lemberg <wl@gnu.org>
2690
Werner Lemberg649ca552015-10-21 07:01:45 +02002691 [type42] Better check invalid `sfnts' array data (#46255).
2692
2693 * src/type42/t42parse.c (t42_parse_sfnts): Table lengths must be
2694 checked individually against available data size.
2695
Werner Lembergd47d3722015-10-20 12:24:36 +020026962015-10-20 Werner Lemberg <wl@gnu.org>
2697
Werner Lemberg3eccc3a2015-10-20 22:31:57 +02002698 [cid] Add a bunch of safety checks.
2699
2700 * src/cid/cidload.c (parse_fd_array): Check `num_dicts' against
2701 stream size.
2702 (cid_read_subrs): Check largest offset against stream size.
2703 (cid_parse_dict): Move safety check to ...
2704 (cid_face_open): ... this function.
2705 Also test length of binary data and values of `SDBytes',
2706 `SubrMapOffset', `SubrCount', `CIDMapOffset', and `CIDCount'.
2707
27082015-10-20 Werner Lemberg <wl@gnu.org>
2709
Werner Lembergd47d3722015-10-20 12:24:36 +02002710 [cid] Avoid segfault with malformed input (#46250).
2711
2712 * src/cid/cidload.c (cid_read_subrs): Return a proper error code for
2713 unsorted offsets.
2714
StudioEtrange5cf83a52015-10-20 07:19:44 +020027152015-10-20 StudioEtrange <nomorgan@gmail.com>
2716
2717 * CMakeLists.txt: Enable shared library builds on MinGW (#46233).
2718
Werner Lemberg3c582062015-10-20 06:57:28 +020027192015-10-20 Werner Lemberg <wl@gnu.org>
2720
2721 * src/type1/t1afm.c (T1_Read_Metrics): Fix memory leak (#46229).
2722
Ben Wagnerf0cc1732015-12-14 07:00:41 +010027232015-10-19 Ben Wagner <bungeman@gmail.com>
Bungemanba8a5282015-10-19 23:27:06 +02002724
2725 [cid] Better handle invalid glyph stream offsets (#46221).
2726
2727 * src/cid/cidgload.c (cid_load_glyph): Check minimum size of glyph
2728 length.
2729
Werner Lembergdcfc4d92015-10-18 16:47:06 +020027302015-10-18 Werner Lemberg <wl@gnu.org>
2731
Werner Lemberg24cee3a2015-10-19 23:00:28 +02002732 [psaux] Fix tracing of negative numbers.
2733
2734 Due to incorrect casting negative numbers were shown as very large
2735 (positive) integers on 64bit systems.
2736
2737 * src/psaux/t1decode.c (t1_decoder_parse_charstrings) <op_none>:
2738 Use division instead of shift.
2739
27402015-10-18 Werner Lemberg <wl@gnu.org>
2741
Werner Lemberg14213b52015-10-18 18:15:04 +02002742 [truetype] Improve TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46223).
2743
2744 * devel/ftoption.h, include/freetype/config/ftoption.h: Surround it
2745 with #ifndef ... #endif, as suggested in the tracker issue.
2746
27472015-10-18 Werner Lemberg <wl@gnu.org>
2748
Werner Lembergdcfc4d92015-10-18 16:47:06 +02002749 [truetype] Better protection against malformed `fpgm' (#46223).
2750
2751 * src/truetype/ttobjs.c (tt_size_init_bytecode): Don't execute a
2752 malformed `fpgm' table more than once.
2753
Werner Lemberg8edfcbe2015-10-17 08:11:16 +020027542015-10-17 Werner Lemberg <wl@gnu.org>
2755
Werner Lemberg7643b582015-10-17 15:51:29 +02002756 * src/cid/cidgload.c (cid_load_glyph): Fix memory leak.
2757
2758 Reported by Kostya Serebryany <kcc@google.com>.
2759
27602015-10-17 Werner Lemberg <wl@gnu.org>
2761
Werner Lembergb1857472015-10-17 14:21:41 +02002762 [bdf] Prevent memory leak (#46217).
2763
2764 * src/bdf/bdflib.c (_bdf_parse_glyphs) <STARTCHAR>: Check
2765 _BDF_GLYPH_BITS.
2766
27672015-10-17 Werner Lemberg <wl@gnu.org>
2768
Werner Lemberge1ca18d2015-10-17 11:51:27 +02002769 [bdf] Use stream size to adjust number of glyphs.
2770
2771 * src/bdf/bdflib.c (ACMSG17): New message macro.
2772 (_bdf_parse_t): Add member `size'.
2773 (bdf_load_font): Set `size'.
2774 (_bdf_parse_glyphs): Adjust `cnt' if necessary.
2775
27762015-10-17 Werner Lemberg <wl@gnu.org>
2777
Werner Lemberg0af21dc2015-10-17 09:29:52 +02002778 * src/cid/cidload.c (cid_parse_dict): Check `[FG]DBytes' size.
2779
27802015-10-17 Werner Lemberg <wl@gnu.org>
2781
Werner Lemberg0ba98da2015-10-17 09:11:02 +02002782 * src/cid/cidgload.c (cid_glyph_load): Check file offsets (#46222).
2783
27842015-10-17 Werner Lemberg <wl@gnu.org>
2785
Werner Lemberg8edfcbe2015-10-17 08:11:16 +02002786 [psaux] Fix heap buffer overflow (#46221).
2787
2788 * src/psaux/t1decode.c (t1_decoder_parse_charstring) <operator 12>:
2789 Fix limit check.
2790
27912015-10-17 Werner Lemberg <wl@gnu.org>
Werner Lemberga5ecfb42015-10-17 06:15:55 +02002792
2793 * src/cid/cidload.c (cid_parse_dict): Handle invalid input (#46220).
2794
27952015-10-15 Kostya Serebryany <kcc@google.com>
Kostya Serebryany266976b2015-10-15 22:15:53 -07002796
2797 [ftfuzzer] Add README.
2798
2799 * src/tools/ftfuzzer/README: New file.
2800
Ben Wagnerf0cc1732015-12-14 07:00:41 +010028012015-10-15 Ben Wagner <bungeman@gmail.com>
Bungeman65d89802015-10-15 23:50:16 +02002802
2803 [bdf] Fix memory leak (#46213).
2804
2805 * src/bdf/bdflib.c (bdf_load_font): Always go to label `Fail' in
2806 case of error.
2807
Werner Lemberg837ad9d2015-10-15 21:15:45 +020028082015-10-15 Werner Lemberg <wl@gnu.org>
2809
Werner Lemberg24a1fcd2015-10-15 21:50:15 +02002810 [truetype] Add TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46208).
2811
2812 * devel/ftoption.h, include/freetype/config/ftoption.h
2813 (TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES): New configuration macro.
2814
2815 * src/truetype/ttinterp.c (MAX_RUNNABLE_OPCODES): Removed.
2816 (TT_RunIns): Updated.
2817
28182015-10-15 Werner Lemberg <wl@gnu.org>
2819
Werner Lemberg837ad9d2015-10-15 21:15:45 +02002820 * src/truetype/ttinterp.c (TT_RunIns): Fix bytecode stack tracing.
2821
2822 The used indices were off by 1.
2823
Ben Wagnerf0cc1732015-12-14 07:00:41 +010028242015-10-15 Ben Wagner <bungeman@gmail.com>
Werner Lemberg8b76eaf2015-10-15 18:28:43 +02002825 Werner Lemberg <wl@gnu.org>
2826
2827 * src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211).
2828
Werner Lemberge03214e2015-10-15 16:58:13 +020028292015-10-15 Werner Lemberg <wl@gnu.org>
2830
2831 [base] Compute MD5 checksums only if explicitly requested.
2832
2833 This improves profiling accuracy.
2834
2835 * src/base/ftobjs.c (FT_Render_Glyph_Internal): Implement it.
2836
Werner Lemberg2a20c922015-10-14 15:23:15 +020028372015-10-14 Werner Lemberg <wl@gnu.org>
2838
2839 [base] Use `FT_' namespace for MD5 functions (#42366).
2840
2841 * src/base/ftobjs.c (MD5_*): Define as `FT_MD5_*'.
2842 Undefine HAVE_OPENSSL.
2843
Werner Lembergf96094e2015-10-13 07:13:56 +020028442015-10-13 Werner Lemberg <wl@gnu.org>
2845
Werner Lemberg85399152015-10-13 20:43:19 +02002846 [type1] Correctly handle missing MM axis names (#46202).
2847
2848 * src/type1/t1load.c (T1_Get_MM_Var): Implement it.
2849
28502015-10-13 Werner Lemberg <wl@gnu.org>
2851
Werner Lemberg58b61b62015-10-13 18:26:18 +02002852 [pcf] Quickly exit if font index < 0.
2853
2854 Similar to other font formats, this commit makes the parser no
2855 longer check the whole PCF file but only the header and the TOC if
2856 we just want to get the number of available faces (and a proper
2857 recognition of the font format).
2858
2859 * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
2860 Exit quickly if face_index < 0.
2861
2862 * src/pcfread.c (pcf_load_font): Add `face_index' argument.
2863 Exit quickly if face_index < 0.
2864
2865 * src/pcf/pcf.h: Updated.
2866
28672015-10-13 Werner Lemberg <wl@gnu.org>
2868
Werner Lembergbdb56bb2015-10-13 11:51:13 +02002869 [ftfuzzer] Handle TTCs and MM/GX variations.
2870
2871 This patch also contains various other improvements.
2872
2873 * src/tools/ftfuzzer/ftfuzzer.cc: Add preprocessor guard to reject
2874 pre-C++11 compilers.
2875 (FT_Global): New class. Use it to provide a global constructor and
2876 destructor for the `FT_Library' object.
2877 (setIntermediateAxis): New function to select an (arbitrary)
2878 instance.
2879 (LLVMFuzzerTestOneInput): Loop over all faces and named instances.
2880 Also call `FT_Set_Char_Size'.
2881
28822015-10-13 Werner Lemberg <wl@gnu.org>
2883
Werner Lemberg43a96eb2015-10-13 11:18:55 +02002884 [truetype] Refine some GX sanity tests.
2885
2886 Use the `gvar' table size instead of the remaining bytes in the
2887 stream.
2888
2889 * src/truetype/ttgxvar.h (GX_BlendRec): New field `gvar_size'.
2890
2891 * src/truetype/ttgxvar.c (ft_var_load_gvar): Set `gvar_size'.
2892 (ft_var_readpackedpoints, ft_var_readpackeddeltas: New argument
2893 `size'.
2894 (tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Updated.
2895
28962015-10-13 Werner Lemberg <wl@gnu.org>
2897
Werner Lemberg052f6c52015-10-13 08:24:32 +02002898 [truetype] Another GX sanity test.
2899
2900 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Check
2901 `tupleCount'.
2902 Add tracing message.
2903
29042015-10-13 Werner Lemberg <wl@gnu.org>
2905
Werner Lemberg7ef0d862015-10-13 08:14:20 +02002906 [truetype] Fix memory leak for broken GX fonts (#46188).
2907
2908 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix scope of
2909 deallocation.
2910
29112015-10-13 Werner Lemberg <wl@gnu.org>
2912
Werner Lembergf96094e2015-10-13 07:13:56 +02002913 [truetype] Fix commit from 2015-10-10.
2914
2915 * src/truetype/ttgxvar.c (ft_var_load_gvar): Add missing error
2916 handling body to condition.
2917
Werner Lembergb9880aa2015-10-12 10:13:26 +020029182015-10-12 Werner Lemberg <wl@gnu.org>
2919
2920 [unix] Make MKDIR_P actually work.
2921
2922 * builds/unix/configure.raw: Fix underquoting of `INSTALL' and
2923 `MKDIR_P'.
2924
2925 Problem reported by Dan Liddell <lddll@yahoo.com>.
2926
Werner Lemberg4f7f6f62015-10-11 07:55:25 +020029272015-10-11 Werner Lemberg <wl@gnu.org>
2928
2929 [sfnt] Improve extraction of number of named instances.
2930
2931 * src/sfnt/sfobjs.c (sfnt_init_face)
2932 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check number of instances against
2933 `fvar' table size.
2934
Alexei Podtelezhnikovc14ae9c2015-10-10 22:28:26 -040029352015-10-10 Alexei Podtelezhnikov <apodtele@gmail.com>
2936
2937 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix overflow
2938 (#46149).
2939
Werner Lembergd353f6e2015-10-10 06:54:46 +020029402015-10-10 Werner Lemberg <wl@gnu.org>
2941
Werner Lemberg8de39a72015-10-10 13:34:11 +02002942 [sfnt] Fix infinite loops with broken cmaps (#46167).
2943
2944 * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next): Take care
Werner Lemberga724dcf2015-10-11 05:50:07 +02002945 of border conditions (i.e., if the loops exit naturally).
Werner Lemberg8de39a72015-10-10 13:34:11 +02002946
29472015-10-10 Werner Lemberg <wl@gnu.org>
2948
Werner Lembergda346732015-10-10 10:21:27 +02002949 [truetype] More sanity tests for GX handling.
2950
2951 These tests should mainly help avoid unnecessarily large memory
2952 allocations in case of malformed fonts.
2953
2954 * src/truetype/ttgxvar.c (ft_var_readpackedpoints,
2955 ft_var_readpackeddeltas): Check number of points against stream
2956 size.
2957 (ft_var_load_avar): Check `pairCount' against table length.
2958 (ft_var_load_gvar): Check `globalCoordCount' and `glyphCount'
2959 against table length.
2960 (tt_face_vary_cvt): Check `tupleCount' and `offsetToData'.
2961 Fix trace.
2962 (TT_Vary_Apply_Glyph_Deltas): Fix trace.
2963 Free `sharedpoints' to avoid memory leak.
2964
29652015-10-10 Werner Lemberg <wl@gnu.org>
2966
Werner Lembergc220d8b2015-10-10 08:13:04 +02002967 [truetype] Better protection against malformed GX data (#46166).
2968
2969 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Correctly
2970 handle empty `localpoints' array.
2971
29722015-10-10 Werner Lemberg <wl@gnu.org>
2973
Werner Lembergd353f6e2015-10-10 06:54:46 +02002974 * src/pcf/pcfread.c (pcf_read_TOC): Check stream size (#46162).
2975
Werner Lembergc12956e2015-10-09 09:38:32 +020029762015-10-09 Werner Lemberg <wl@gnu.org>
2977
2978 * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use real stream size.
2979
Werner Lemberg12112242015-10-08 08:55:15 +020029802015-10-08 Werner Lemberg <wl@gnu.org>
2981
Werner Lembergd98053c2015-10-08 23:17:41 +02002982 [pcf] Protect against invalid number of TOC entries (#46159).
2983
2984 * src/pcf/pcfread.c (pcf_read_TOC): Check number of TOC entries
2985 against size of data stream.
2986
29872015-10-08 Werner Lemberg <wl@gnu.org>
2988
Werner Lemberg06c2d332015-10-08 21:31:57 +02002989 [type42] Protect against invalid number of glyphs (#46159).
2990
2991 * src/type42/t42parse.c (t42_parse_charstrings): Check number of
2992 `CharStrings' dictionary entries against size of data stream.
2993
29942015-10-08 Werner Lemberg <wl@gnu.org>
2995
Werner Lemberg983b00e2015-10-08 18:44:45 +02002996 [sfnt] Fix some signed overflows (#46149).
2997
2998 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
2999 <TT_SBIT_TABLE_TYPE_SBIX>: Use `FT_MulDiv'.
3000
30012015-10-08 Werner Lemberg <wl@gnu.org>
3002
Werner Lemberg12112242015-10-08 08:55:15 +02003003 [type1] Protect against invalid number of subroutines (#46150).
3004
3005 * src/type1/t1load.c (parse_subrs): Check number of
3006 `Subrs' dictionary entries against size of data stream.
3007
Kostya Serebryanydde84f22015-10-07 22:18:22 +020030082015-10-07 Kostya Serebryany <kcc@google.com>
3009
3010 [ftfuzzer] Add support for LLVM's LibFuzzer.
3011
3012 * src/tools/ftfuzzer/ftfuzzer.cc, src/tools/runinput.cc: New files.
3013
Alexei Podtelezhnikovc14ae9c2015-10-10 22:28:26 -040030142015-10-06 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov6eb61582015-10-06 22:39:54 -04003015
3016 [smooth] Faster alternative line renderer.
3017
3018 This implementation renders the entire line segment at once without
3019 subdividing it into scanlines. The main speed improvement comes from
3020 reducing the number of divisions to just two per line segment, which
3021 is a bare minimum to calculate cell coverage in a smooth rasterizer.
3022 Notably, the progression from cell to cell does not itself require any
3023 divisions at all. The speed improvement is more noticeable at larger
3024 sizes.
3025
3026 * src/smooth/ftgrays.c (gray_render_line): New implementation.
3027
Werner Lemberg066a4912015-10-06 07:55:32 +020030282015-10-06 Werner Lemberg <wl@gnu.org>
3029
3030 [cff] Return correct PS names from pure CFF (#46130).
3031
3032 * src/cff/cffdrivr.c (cff_get_ps_name): Use SFNT service only for
3033 SFNT.
3034
Werner Lemberg8cabd912015-10-04 08:18:01 +020030352015-10-04 Werner Lemberg <wl@gnu.org>
3036
Werner Lemberg30fe5e72015-10-04 13:08:08 +02003037 [base] Replace left shifts with multiplication (#46118).
3038
3039 * src/base/ftglyph.c (ft_bitmap_glyph_bbox, FT_Get_Glyph): Do it.
3040
30412015-10-04 Werner Lemberg <wl@gnu.org>
3042
Werner Lemberg8cabd912015-10-04 08:18:01 +02003043 * Version 2.6.1 released.
3044 =========================
3045
3046
3047 Tag sources with `VER-2-6-1'.
3048
3049 * docs/VERSION.DLL: Update documentation and bump version number to
3050 2.6.1.
3051
3052 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
3053 builds/windows/vc2005/index.html,
3054 builds/windows/vc2008/freetype.vcproj,
3055 builds/windows/vc2008/index.html,
3056 builds/windows/vc2010/freetype.vcxproj,
3057 builds/windows/vc2010/index.html,
3058 builds/windows/visualc/freetype.dsp,
3059 builds/windows/visualc/freetype.vcproj,
3060 builds/windows/visualc/index.html,
3061 builds/windows/visualce/freetype.dsp,
3062 builds/windows/visualce/freetype.vcproj,
3063 builds/windows/visualce/index.html,
3064 builds/wince/vc2005-ce/freetype.vcproj,
3065 builds/wince/vc2005-ce/index.html,
3066 builds/wince/vc2008-ce/freetype.vcproj,
3067 builds/wince/vc2008-ce/index.html: s/2.6/2.6.1/, s/26/261/.
3068
3069 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
3070
3071 * builds/unix/configure.raw (version_info): Set to 18:1:12.
3072 * CMakeLists.txt (VERSION_PATCH): Set to 1.
3073
3074 * src/autofit/afmodule.c [AF_DEBUG_AUTOFIT]: Ensure C linking for
3075 dumping functions.
3076
30772015-10-04 Werner Lemberg <wl@gnu.org>
Werner Lemberg53838ce2015-10-03 21:12:25 +02003078
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04003079 [bzip2, gzip] Avoid access of uninitialized memory (#46109).
Werner Lemberg53838ce2015-10-03 21:12:25 +02003080
Werner Lembergb260dc92015-10-04 07:39:22 +02003081 * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_input), src/gzip/ftgzip.c
3082 (ft_gzip_file_fill_input): In case of an error, adjust the limit to
3083 avoid copying uninitialized memory.
3084
30852015-10-03 Werner Lemberg <wl@gnu.org>
3086
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04003087 [bzip2, gzip] Avoid access of uninitialized memory (#46109).
Werner Lembergb260dc92015-10-04 07:39:22 +02003088
Werner Lemberg53838ce2015-10-03 21:12:25 +02003089 * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_output), src/gzip/ftgzip.c
3090 (ft_gzip_file_fill_output): In case of an error, adjust the limit to
3091 avoid copying uninitialized memory.
3092
Alexei Podtelezhnikove2dae8f2015-10-01 22:03:34 -040030932015-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
3094
3095 [smooth] Clean up worker.
3096
3097 * src/smooth/ftgrays.c (gray_TWorker): Remove never used fields.
3098
Werner Lemberg5f8f44d2015-10-01 14:16:03 +020030992015-10-01 Werner Lemberg <wl@gnu.org>
3100
Werner Lemberg90e437e2015-10-01 20:00:27 +02003101 [sfnt] Make `tt_cmap4_char_map_linear' more robust (#46078).
3102
3103 * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Take care of
3104 border conditions (i.e., if the loop exits naturally).
3105
31062015-10-01 Werner Lemberg <wl@gnu.org>
3107
Werner Lembergfab67b82015-10-01 16:47:05 +02003108 * src/autofit/afranges.c (af_deva_nonbase_uniranges): Fix ranges.
3109 They should be a subset of `af_deva_uniranges'.
3110
31112015-10-01 Werner Lemberg <wl@gnu.org>
3112
Werner Lemberg5f8f44d2015-10-01 14:16:03 +02003113 [sfnt] Make `tt_cmap4_char_map_linear' faster (#46078).
3114
3115 * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Use inner loop to
3116 reject too large glyph indices.
3117
Alexei Podtelezhnikov8bbcfb22015-09-30 23:08:53 -040031182015-09-30 Alexei Podtelezhnikov <apodtele@gmail.com>
3119
3120 [smooth] Clean up worker.
3121
3122 * src/smooth/ftgrays.c (gray_TWorker): Remove lightly used `last_ey'.
3123 (gray_start_cell, gray_render_line): Update.
3124
Werner Lemberg8651f372015-09-30 10:26:10 +020031252015-09-30 Werner Lemberg <wl@gnu.org>
3126
Werner Lembergdbd04262015-09-30 17:52:42 +02003127 [autofit] Replace `no-base' with `non-base'.
3128
3129 * src/autofit/*: Do it.
3130
31312015-09-30 Werner Lemberg <wl@gnu.org>
3132
Werner Lemberg2ff83a52015-09-30 14:44:29 +02003133 [sfnt] Rewrite `tt_cmap4_char_map_linear' (#46078).
3134
3135 * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Add code to better
3136 skip invalid segments.
3137 If searching the next character, provide a more efficient logic to
3138 speed up the code.
3139
31402015-09-30 Werner Lemberg <wl@gnu.org>
3141
Werner Lemberg8651f372015-09-30 10:26:10 +02003142 [truetype] Adjust number of glyphs for malformed `loca' tables.
3143
3144 * src/truetype/ttpload.c (tt_face_load_loca): Implement it.
3145
Werner Lemberg483007f2015-09-29 11:22:15 +020031462015-09-29 Werner Lemberg <wl@gnu.org>
3147
3148 [pshinter] Avoid harmless overflow (#45984).
3149
3150 * src/pshinter/pshglob.c (psh_blues_set_zones): Fix it.
3151
Werner Lemberga3046562015-09-28 09:45:56 +020031522015-09-28 Werner Lemberg <wl@gnu.org>
3153
3154 [autofit] Add support for Lao script.
3155
3156 Thanks to Danh Hong <danhhong@gmail.com> for guidance with blue zone
3157 characters!
3158
3159 * src/autofit/afblue.dat: Add blue zone data for Lao.
3160
3161 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3162
3163 * src/autofit/afscript.h: Add Lao standard characters.
3164
3165 * src/autofit/afranges.c: Add Lao data.
3166
3167 * src/autofit/afstyles.h: Add Lao data.
3168
suzuki toshiya8a05d252015-09-28 01:40:21 +090031692015-09-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
Werner Lembergf45c0bf2015-12-06 09:58:18 +01003170
suzuki toshiyafb5268c2015-09-28 02:01:43 +09003171 [base] Fix a leak by broken sfnt-PS or resource fork (#46028).
3172
3173 open_face_from_buffer() frees passed buffer if valid font
3174 is not found. But if copying to the buffer is failed,
3175 the allocated buffer should be freed within the caller.
3176
3177 * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Free
3178 the buffer `sfnt_ps' if an error caused before calling
3179 open_face_from_buffer().
3180 (Mac_Read_sfnt_Resource): Free the buffer `sfnt_data' if
3181 an error caused before calling open_face_from_buffer();
3182
31832015-09-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya8a05d252015-09-28 01:40:21 +09003184
3185 [mac] Fix buffer size calculation for LWFN font.
3186
3187 * src/base/ftmac.c (read_lwfn): Cast post_size to FT_ULong
3188 to prevent confused copy by too large chunk size.
3189
Alexei Podtelezhnikov3dffe8e2015-09-27 11:30:17 -040031902015-09-26 Alexei Podtelezhnikov <apodtele@gmail.com>
3191
3192 * src/smooth/ftgrays.c (PIXEL_MASK): Remove unused macro.
3193
Werner Lemberg41877532015-09-26 15:19:54 +020031942015-09-26 Werner Lemberg <wl@gnu.org>
3195
Werner Lemberg19188a92015-09-26 16:57:17 +02003196 [autofit] Minor tracing improvement.
3197
3198 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Don't emit
3199 blue zones header line if there are no blue zones.
3200
32012015-09-26 Werner Lemberg <wl@gnu.org>
3202
Werner Lemberg41877532015-09-26 15:19:54 +02003203 [bzip2, gzip, lzw] Harmonize function signatures with prototype.
3204
3205 Suggested by Hin-Tak Leung.
3206
3207 * src/bzip2/ftbzip2.c (ft_bzip2_stream_io), src/gzip/ftgzip.c
3208 (ft_gzip_stream_io), src/lzw/ftlzw.c (ft_lzw_stream_io): Do it.
3209
Hin-Tak Leung265ade82015-09-26 14:51:30 +020032102015-09-26 Hin-Tak Leung <htl10@users.sourceforge.net>
3211
3212 Add new FT_LOAD_COMPUTE_METRICS load flag.
3213
3214 * include/freetype/freetype.h (FT_LOAD_COMPUTE_METRICS): New macro.
3215 * src/truetype/ttgload.c (compute_glyph_metrics): Usage.
3216
Werner Lembergd57f2272015-09-26 08:44:26 +020032172015-09-26 Werner Lemberg <wl@gnu.org>
3218
3219 * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add cast.
3220
Werner Lemberg2439c512015-09-25 16:54:28 +020032212015-09-25 Werner Lemberg <wl@gnu.org>
3222
3223 [type1] Protect against invalid number of glyphs (#46029).
3224
3225 * src/type1/t1load.c (parse_charstrings): Check number of
3226 `CharStrings' dictionary entries against size of data stream.
3227
Werner Lembergc409eb12015-09-24 12:39:38 +020032282015-09-23 Werner Lemberg <wl@gnu.org>
3229
Werner Lemberg5339c752015-09-24 13:39:44 +02003230 [sfnt] Better checks for invalid cmaps (2/2) (#46019).
3231
3232 While the current code in `FT_Get_Next_Char' correctly rejects
3233 out-of-bounds glyph indices, it can be extremely slow for malformed
3234 cmaps that use 32bit values. This commit tries to improve that.
3235
3236 * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next,
3237 tt_cmap12_char_map_binary, tt_cmap13_next,
3238 tt_cmap13_char_map_binary): Reject glyph indices larger than or
3239 equal to the number of glyphs.
3240
32412015-09-23 Werner Lemberg <wl@gnu.org>
3242
Werner Lembergc409eb12015-09-24 12:39:38 +02003243 [base, sfnt] Better checks for invalid cmaps (1/2).
3244
3245 * src/base/ftobjs.c (FT_Get_Char_Index): Don't return out-of-bounds
3246 glyph indices.
3247 (FT_Get_First_Char): Updated.
3248
3249 * src/sfnt/ttcmap.c (tt_cmap6_char_next): Don't return character
3250 codes greater than 0xFFFF.
3251
3252 (tt_cmap8_char_index): Avoid integer overflow in computation of
3253 glyph index.
3254 (tt_cmap8_char_next): Avoid integer overflows in computation of
3255 both next character code and glyph index.
3256
3257 (tt_cmap10_char_index): Fix unsigned integer logic.
3258 (tt_cmap10_char_next): Avoid integer overflow in computation of
3259 next character code.
3260
3261 (tt_cmap12_next): Avoid integer overflows in computation of both
3262 next character code and glyph index.
3263 (tt_cmap12_char_map_binary): Ditto.
3264 (tt_cmap12_char_next): Simplify.
3265
3266 (tt_cmap13_char_map_binary): Avoid integer overflow in computation
3267 of next character code.
3268 (tt_cmap13_char_next): Simplify.
3269
suzuki toshiyae982f5b2015-09-21 23:07:22 +090032702015-09-21 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3271
Werner Lembergd7f456e2015-09-26 08:37:14 +02003272 [base] Check too long POST and sfnt resource (#45919).
suzuki toshiyae982f5b2015-09-21 23:07:22 +09003273
Werner Lembergd7f456e2015-09-26 08:37:14 +02003274 * src/base/ftbase.h (FT_MAC_RFORK_MAX_LEN): Maximum length of the
3275 resource fork for Mac OS. Resource forks larger than 16 MB can be
3276 written but can't be handled correctly, at least in Carbon routine.
3277 See https://support.microsoft.com/en-us/kb/130437.
suzuki toshiyae982f5b2015-09-21 23:07:22 +09003278
Werner Lembergd7f456e2015-09-26 08:37:14 +02003279 * src/base/ftobjs.c (Mac_Read_POST_Resource): No need to use `0x'
3280 prefix for `%p' formatter.
suzuki toshiyae982f5b2015-09-21 23:07:22 +09003281
Werner Lembergd7f456e2015-09-26 08:37:14 +02003282 * src/base/ftbase.c (Mac_Read_POST_Resource): Check the fragment and
3283 total size of the concatenated POST resource before buffer
3284 allocation.
3285 (Mac_Read_sfnt_Resource): Check the declared size of sfnt resource
suzuki toshiyae982f5b2015-09-21 23:07:22 +09003286 before buffer allocation.
suzuki toshiyae982f5b2015-09-21 23:07:22 +09003287
Werner Lembergd7f456e2015-09-26 08:37:14 +02003288 * src/base/ftmac.c (read_lwfn, FT_New_Face_From_SFNT): Check the
3289 total resource size before buffer allocation.
suzuki toshiyae982f5b2015-09-21 23:07:22 +09003290
Werner Lembergcb7a5122015-09-19 07:58:03 +020032912015-09-19 Werner Lemberg <wl@gnu.org>
3292
Werner Lemberg730b6d72015-09-19 12:41:12 +02003293 [sfnt] Improve handling of invalid SFNT table entries (#45987).
3294
3295 This patch fixes weaknesses in function `tt_face_load_font_dir'.
3296
3297 - It incorrectly assumed that valid tables are always at the
3298 beginning. As a consequence, some valid tables after invalid
3299 entries (which are ignored) were never seen.
3300
3301 - Duplicate table entries (this is, having the same tag) were not
3302 rejected.
3303
3304 - The number of valid tables was sometimes too large, leading to
3305 access of invalid tables.
3306
3307 * src/sfnt/ttload.c (check_table_dir): Add argument to return number
3308 of valid tables.
3309 Add another tracing message.
3310 (tt_face_load_font_dir): Only allocate table array for valid
3311 entries as returned by `check_table_dir'.
3312 Reject duplicate tables and adjust number of valid tables
3313 accordingly.
3314
33152015-09-19 Werner Lemberg <wl@gnu.org>
3316
Werner Lembergcb7a5122015-09-19 07:58:03 +02003317 [pcf] Improve `FT_ABS' fix from 2015-09-17 (#45999).
3318
3319 * src/pcf/pcfread.c (pcf_load_font): Do first the cast to FT_Short,
3320 then take the absolute value.
3321 Also apply FT_ABS to `height'.
3322
Werner Lemberg9db9add2015-09-17 13:42:59 +020033232015-09-17 Werner Lemberg <wl@gnu.org>
3324
Werner Lembergf28c95c2015-09-17 19:30:26 +02003325 [type42] Fix memory leak (#45989).
3326
3327 * src/type42/t42parse.c (t42_parse_charstrings): Allow only a single
3328 `CharStrings' array.
3329
33302015-09-17 Werner Lemberg <wl@gnu.org>
3331
Werner Lemberg4942c2b2015-09-17 17:56:53 +02003332 [psaux] Fix memory leak (#45986).
3333
3334 * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
3335 Free `temp' in case of error.
3336
33372015-09-17 Werner Lemberg <wl@gnu.org>
3338
Werner Lemberg7d364b72015-09-17 16:31:58 +02003339 [psaux] Improve tracing message.
3340
3341 * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
3342 Handle plural correctly.
3343
33442015-09-17 Werner Lemberg <wl@gnu.org>
3345
Werner Lembergc838c4f2015-09-17 16:22:40 +02003346 [pcf] Fix integer overflows (#45985).
3347
3348 * src/pcf/pcfread.c (pcf_load_font): Use FT_MulDiv.
3349
33502015-09-17 Werner Lemberg <wl@gnu.org>
3351
Werner Lemberg9db9add2015-09-17 13:42:59 +02003352 [pcf] Use FT_ABS for some property values (#45893).
3353
3354 * src/pcf/pcfread.c (pcf_load_font): Take absolute values for
3355 AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and
3356 RESOLUTION_Y. In tracing mode, add warnings.
3357
Werner Lembergbd0438a2015-09-16 18:05:43 +020033582015-09-16 Werner Lemberg <wl@gnu.org>
3359
3360 Minor fixes for some clang warnings.
3361
3362 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Cast, possible missing
3363 initialization.
3364
3365 * src/truetype/ttgload.c (TT_Process_Composite_Component): Cast.
3366
Werner Lemberg581c7e22015-09-15 06:49:06 +020033672015-09-15 Werner Lemberg <wl@gnu.org>
3368
Werner Lemberg19cb1122015-09-15 08:52:36 +02003369 [type1, type42] Fix memory leaks (#45966).
3370
3371 * src/type1/t1load.c (parse_blend_axis_types): Handle multiple axis
3372 names.
3373 (parse_blend_design_map): Allow only a single design map.
3374 (parse_encoding): Handle multiple encoding vectors.
3375
3376 * src/type42/t42parse.c (t42_parse_encoding): Handle multiple
3377 encoding vectors.
3378
33792015-09-15 Werner Lemberg <wl@gnu.org>
3380
Werner Lemberg7f0f4012015-09-15 07:23:53 +02003381 [truetype] Fix integer type (#45965).
3382
3383 * src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Implement it.
3384
33852015-09-15 Werner Lemberg <wl@gnu.org>
3386
Werner Lemberg577daf12015-09-15 07:10:16 +02003387 * src/pcf/pcfread.c (pcf_load_font): Fix integer overflow (#45964).
3388
33892015-09-15 Werner Lemberg <wl@gnu.org>
3390
Werner Lemberg581c7e22015-09-15 06:49:06 +02003391 [type1, type42] Check encoding array size (#45961).
3392
3393 * src/type1/t1load.c (parse_encoding), src/type42/t42parse.c
3394 (t42_parse_encoding): Do it.
3395
Alexei Podtelezhnikov3ea0d2c2015-09-13 23:19:34 -040033962015-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
3397
3398 * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Improve.
3399
Werner Lemberg7962a152015-09-14 00:38:26 +020034002015-09-14 Werner Lemberg <wl@gnu.org>
3401
3402 [type1] Fix another potential buffer overflow (#45955).
3403
3404 * src/type1/t1parse (T1_Get_Private_Dict): Assure that check for
3405 `eexec' doesn't exceed `limit'.
3406
Werner Lemberge40e8b32015-09-13 08:05:50 +020034072015-09-13 Werner Lemberg <wl@gnu.org>
3408
Werner Lembergff7d6402015-09-13 23:53:16 +02003409 Replace `mkinstalldirs' with AC_PROG_MKDIR_P.
3410
3411 * builds/unix/mkinstalldirs: Removed, no longer needed.
3412
3413 * builds/unix/configure.raw: Call `AC_PROG_MKDIR_P'.
3414 Update pwd call for `$INSTALL'.
3415
3416 * builds/unix/unix-def.in (MKINSTALLDIRS): Use `@MKDIR_P@'.
3417
3418 * autogen.sh: Updated.
3419
34202015-09-13 Werner Lemberg <wl@gnu.org>
3421
Werner Lemberg3df92aa2015-09-13 09:21:52 +02003422 [winfonts] Check alignment shift count for resource data (#45938).
3423
3424 * src/winfonts/winfnt.c (fnt_face_get_dll_font): Implement it.
3425
34262015-09-13 Werner Lemberg <wl@gnu.org>
3427
Werner Lemberge3058612015-09-13 08:41:43 +02003428 [type1] Fix potential buffer overflow (#45923).
3429
3430 * src/type1/t1parse.c (T1_Get_Private_Dict): Assure `cur' doesn't
3431 point to end of file buffer.
3432
34332015-09-13 Werner Lemberg <wl@gnu.org>
3434
Werner Lemberge40e8b32015-09-13 08:05:50 +02003435 [gzip] Fix access of small compressed files (#45937).
3436
3437 * src/gzip/ftgzip.c (ft_gzip_stream_close): Avoid memory leak.
3438
3439 (ft_gzip_get_uncompressed_file): Correct byte order while reading
3440 unsigned long value. Without this change, the whole optimization of
3441 accessing small files in `FT_Stream_OpenGzip' is never executed! As
3442 a consequence, access to PCF files in general (which are normally
3443 small files) should be much improved now as originally intended.
3444
Werner Lemberg23423bc2015-09-11 08:28:27 +020034452015-09-11 Werner Lemberg <wl@gnu.org>
3446
Werner Lembergdb5a4a92015-09-12 08:32:55 +02003447 [psaux] Fix potential buffer overflow (#45922).
3448
3449 * src/psaux/psobjs.c (ps_parser_skip_PS_token): If a token is
3450 enclosed in balanced expressions, ensure that the cursor position
3451 doesn't get larger than the current limit.
3452
34532015-09-11 Werner Lemberg <wl@gnu.org>
3454
Werner Lemberg19b82cf2015-09-11 20:25:32 +02003455 [base] Avoid crash while tracing `load_mac_face'.
3456
3457 Reported in Savannah bug #45919.
3458
3459 * src/base/ftobjs.c (load_mac_face): Honour FT_OPEN_MEMORY while
3460 tracing.
3461
34622015-09-11 Werner Lemberg <wl@gnu.org>
3463
Werner Lemberg23423bc2015-09-11 08:28:27 +02003464 [type42] Fix endless loop (#45920).
3465
3466 * src/type42/t42parse.c (t42_parse_encoding): Synchronize with
3467 type1's `parse_encoding'.
3468
Werner Lemberge5a27a72015-09-10 07:44:11 +020034692015-09-10 Werner Lemberg <wl@gnu.org>
3470
3471 [docmaker] Allow `-' in bold and italic markup.
3472
3473 * src/tools/docmaker/sources.py (re_italic, re_bold): Adjust
3474 accordingly.
3475
Alexei Podtelezhnikov09948e42015-09-09 21:30:15 -040034762015-09-09 Alexei Podtelezhnikov <apodtele@gmail.com>
3477
3478 * src/base/ftcalc.c (FT_RoundFix): Improve.
3479
Wojciech Mamrak822acb02015-09-09 07:59:10 +020034802015-09-09 Wojciech Mamrak <wmamrak@gmail.com>
3481
3482 * src/base/ftcalc.c (FT_CeilFix, FT_FloorFix): Normalize.
3483
3484 This commit makes the functions behave as expected, this is,
3485 rounding towards plus or minus infinity.
3486
Alexei Podtelezhnikovb002f682015-09-07 13:47:36 -040034872015-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
3488
3489 * src/smooth/ftgrays.c (gray_render_line): Simplify clipping.
3490
Alexei Podtelezhnikov5a6dc872015-09-04 23:14:46 -040034912015-09-04 Alexei Podtelezhnikov <apodtele@gmail.com>
3492
3493 [raster,smooth] Microoptimizations.
3494
3495 * src/raster/ftraster.c (Insert_Y_Turn, Finalize_Profile_Table,
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04003496 Bezier_Up, ): Use do-while loops.
Alexei Podtelezhnikov5a6dc872015-09-04 23:14:46 -04003497
3498 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line,
3499 gray_convert_glyph): Ditto.
3500
Werner Lemberg696b7122015-09-04 10:10:59 +020035012015-09-04 Werner Lemberg <wl@gnu.org>
3502
Werner Lembergd3cba0e2015-09-04 10:28:53 +02003503 [autofit] Redesign code ranges (2/2).
3504
3505 This commit adds two fallback scripts (`latb', `latp') and
3506 implements support for the no-base character ranges introduced in
3507 the previous commit.
3508
3509 * src/autofit/aftypes.h (AF_ScriptClassRec): Add
3510 `script_uni_nobase_ranges' field.
3511 (AF_DEFINE_SCRIPT_CLASS): Updated.
3512
3513 * src/autofit/afscript.h, src/autofit/afstyles.h: Add `latb' and
3514 `latp' fallback scripts.
3515
3516 * src/autofit/afblue.dat: Add blue zones for Latin subscript and
3517 superscript fallback scripts.
3518
3519 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3520
3521 * src/autofit/afglobal.h (AF_NOBASE): New style flag for no-base
3522 characters.
3523 (AF_STYLE_MASK): Updated.
3524
3525 * src/autofit/afglobal.c (SCRIPT): Updated.
3526 (af_face_globals_compute_style_coverage): Handle new style flag.
3527
3528 * src/autofit/aflatin.c (af_latin_hints_apply): Handle new style
3529 flag.
3530
3531 * src/autofit/afranges.h (SCRIPT): Use it to export no-base ranges.
3532
35332015-09-04 Werner Lemberg <wl@gnu.org>
3534
Werner Lemberg696b7122015-09-04 10:10:59 +02003535 [autofit] Redesign code ranges (1/2).
3536
3537 This patch introduces auxiliary code ranges that identify no-base
3538 characters; they refer to glyphs of a script that should be hinted
3539 without alignments to blue zones (mostly diacritics).
3540
3541 It also splits off ranges for fallback scripts that handle subscript
3542 and superscript characters not covered by OpenType features. For
3543 example, this greatly helps improve the hinting of various phonetic
3544 alphabets, which contain a large amount characters that look like
3545 superscript glyphs.
3546
3547 Finally, code ranges are updated to Unicode 8.0, and enclosed
3548 characters are removed in general since they normally look better if
3549 they stay unhinted.
3550
3551 * src/autofit/afranges.c (af_latn_uniranges): Updated to Unicode
3552 8.0.
3553 Split off superscript-like and subscript-like glyphs into...
3554
3555 (af_latb_uniranges, af_latp_uniranges): ... these two new arrays.
3556
3557 (af_xxxx_nobase_uniranges): New arrays that hold no-base characters
3558 of the corresponding character ranges.
3559
Werner Lemberg8cbbcf62015-09-03 06:47:30 +020035602015-09-03 Werner Lemberg <wl@gnu.org>
3561
3562 [autofit] Pass glyph index to hinting function.
3563
3564 No functionality change yet.
3565
3566 * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Pass
3567 glyph index.
3568
3569 * src/autofit/afcjk.c, src/autofit/afcjk.h (af_cjk_hints_apply),
3570 src/autofit/afdummy.c (af_dummy_hints_apply), src/autofit/afindic.c
3571 (af_indic_hints_apply), src/autofit/aflatin.c
3572 (af_latin_hints_apply), src/autofit/aflatin2.c
3573 (af_latin2_hints_apply), src/autofit/afloader.c (af_loader_load_g):
3574 Updated.
3575
Werner Lemberg87c81f02015-08-30 10:35:21 +020035762015-08-30 Werner Lemberg <wl@gnu.org>
3577
Werner Lemberg40103a32015-08-31 08:51:52 +02003578 [autofit] Code clean-up.
3579
3580 * src/autofit/afglobal.h (AF_STYLE_MASK): New macro.
3581 (AF_STYLE_UNASSIGNED): Use AF_STYLE_MASK for definition.
3582
3583 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
3584 Updated.
3585
35862015-08-30 Werner Lemberg <wl@gnu.org>
3587
Werner Lemberg87c81f02015-08-30 10:35:21 +02003588 [autofit] Make glyph style array use 16bit values.
3589
3590 * include/freetype/ftautoh.h (FT_Prop_GlyphToScriptMap): Use
3591 `FT_UShort' for `map' field.
3592
3593 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage,
3594 af_face_globals_new), src/autofit/hbshim.c, src/autofit/hbshim.h
3595 (af_get_coverage): Use FT_UShort for `glyph_styles' array.
3596
3597 * src/autofit/afglobal.h (AF_STYLE_UNASSIGNED, AF_DIGIT): Extend to
3598 16 bits.
3599 (AF_FaceGlobalsRec): Use `FT_UShort' for `glyph_styles' field.
3600
Werner Lemberg633d8ed2015-08-26 06:18:47 +020036012015-08-26 Werner Lemberg <wl@gnu.org>
3602
3603 * builds/unix/configure.raw: Need harfbuzz >= 0.9.21 (#45828).
3604
Werner Lemberg78b01402015-08-25 07:23:01 +020036052015-08-25 Werner Lemberg <wl@gnu.org>
3606
3607 [base] Improve kerning tracing and documentation.
3608
3609 * src/base/ftobjs.c (FT_Get_Kerning): Emit tracing message if
3610 scaled-down kerning values differ.
3611
Werner Lemberg91d59162015-08-18 06:04:36 +020036122015-08-18 Werner Lemberg <wl@gnu.org>
3613
3614 [raster] Remove last remnants of `raster5' driver.
3615
3616 * src/raster/ftrend1.h (ft_raster5_renderer_class): Removed.
3617
3618 * src/raster/rastpic.c, src/raster/rastpic.h
3619 (ft_raster5_renderer_class_pic_init,
3620 ft_raster5_renderer_class_pic_free): Removed.
3621
Alexei Podtelezhnikova0172d12015-08-17 22:58:59 -040036222015-08-17 Alexei Podtelezhnikov <apodtele@gmail.com>
3623
3624 [base] Improve emboldener (#45596).
3625
3626 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Correct displacement
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04003627 of zero-length segments.
Alexei Podtelezhnikova0172d12015-08-17 22:58:59 -04003628
Alexei Podtelezhnikov00d89952015-08-16 22:57:34 -040036292015-08-16 Alexei Podtelezhnikov <apodtele@gmail.com>
3630
Alexei Podtelezhnikov815c3242015-08-17 21:48:46 -04003631 [base] Reoptimize arithmetic.
Alexei Podtelezhnikov00d89952015-08-16 22:57:34 -04003632
3633 * src/base/ftcalc.c (FT_MulDiv, FT_MulFix) [!FT_LONG64]: Remove
3634 special cases that slow down the general use.
3635
pazerf0ed30e2015-08-15 06:53:09 +020036362015-08-15 pazer <ibemad@gmail.com>
3637
3638 Fix C++ compilation (#45762).
3639
3640 * src/base/ftstroke.c (ft_outline_glyph_class): Use
3641 FT_CALLBACK_TABLE.
3642
Alexei Podtelezhnikovae258aa2015-08-14 23:23:18 -040036432015-08-14 Alexei Podtelezhnikov <apodtele@gmail.com>
3644
3645 [truetype] Clean up.
3646
3647 * src/truetype/ttgload.c (TT_Process_Composite_Component): Use
3648 `FT_Outline_Transform' and `FT_Outline_Translate'.
3649 (translate_array): Dropped.
3650
Werner Lembergd0d7ee02015-08-14 14:30:58 +020036512015-08-14 Andreas Enge <andreas.enge@inria.fr>
3652
3653 * builds/unix/detect.mk (CONFIG_SHELL): Don't handle it (#44261).
3654
Werner Lemberg14d6b5d2015-08-13 15:22:17 +020036552015-08-13 Werner Lemberg <wl@gnu.org>
3656
3657 [truetype] Introduce named instance access to GX fonts.
3658
3659 For functions querying a face, bits 16-30 of the face index can hold
3660 the named instance index if we have a GX font. The indices start
3661 with value 1; value 0 indicates font access without GX variation
3662 data.
3663
3664 * include/freetype/freetype.h (FT_FaceRec): Update documentation.
3665 * include/freetype/internal/sfnt.h: Ditto.
3666
3667 * src/sfnt/sfobjs.c (sfnt_init_face)
3668 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Get number of named instances and
3669 do argument checks.
3670 (sfnt_load_face): Updated.
3671
3672 * src/truetype/ttobjs.c (tt_face_init)
3673 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Use named instance, overwriting
3674 the style name.
3675
3676 * src/base/ftobjs.c (open_face_from_buffer,
3677 open_face_PS_from_sfnt_stream): Updated.
3678 * src/bdf/bdfdrivr.c (BDF_Face_Init): Updated.
3679 * src/cff/cffload.c (cff_font_load): Updated.
3680
3681 * src/cff/cffobjs.c (cff_face_init): Make function exit early for
3682 pure CFF fonts if `font_index < 0'.
3683 Updated.
3684
3685 * src/cid/cidobjs.c (cid_face_init): Updated.
3686 * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
3687 * src/pfr/pfrobjs.c (pfr_face_init): Updated.
3688 * src/type1/t1objs.c (T1_Face_Init): Updated.
3689 * src/type42/t42objs.c (T42_Face_Init): Updated.
3690 * src/winfonts/winfnt.c (fnt_face_get_dll_font, FNT_Face_Init):
3691 Updated.
3692
3693 * docs/CHANGES: Updated.
3694
Alexei Podtelezhnikov4a466862015-08-12 23:45:40 -040036952015-08-12 Alexei Podtelezhnikov <apodtele@gmail.com>
3696
3697 [type1,cff,cid] Streamline font matrix application.
3698
3699 * src/type1/t1gload.c (T1_Load_Glyph): Directly modify advances only
3700 if font matrix is not trivial.
3701 * src/cff/cffgload.c (cff_slot_load): Ditto.
Alexei Podtelezhnikovf46b2822016-04-11 23:22:57 -04003702 * src/cid/cidgload.c (cid_slot_load_glyph): Ditto for advances and the
Alexei Podtelezhnikov4a466862015-08-12 23:45:40 -04003703 entire outline.
3704
Werner Lemberg7ebe6ac2015-08-11 06:47:25 +020037052015-08-11 Werner Lemberg <wl@gnu.org>
3706
3707 [builds/unix] Minor.
3708
3709 * builds/unix/configure.raw:
3710 s/lib{priv,staticconf}/libs{priv,staticconf}/ for orthogonality with
3711 similarly named uppercase variables.
3712
Alexei Podtelezhnikova37da212015-08-10 23:05:02 -040037132015-08-10 Alexei Podtelezhnikov <apodtele@gmail.com>
3714
3715 [type1,cid,type42] Minor improvements.
3716
3717 * src/type1/t1load.c (t1_parse_font_matrix): Scale units per EM only
3718 when necessary. Refresh comments.
3719 * src/cid/cidload.c (cid_parse_font_matrix): Ditto.
3720 * src/type42/t42parse.c (t42_parse_font_matrix): Refresh comments.
3721
Werner Lemberge5f44692015-08-08 07:45:03 +020037222015-08-08 Werner Lemberg <wl@gnu.org>
3723
Werner Lembergbd75a512015-08-08 08:39:45 +02003724 [type42] Fix glyph access.
3725
3726 This is a severe bug: We've missed one level of indirection, as
3727 described in the Type 42 specification. As a result, ftview
3728 sometimes showed incorrect glyphs for given glyph names, and even
3729 displayed `error 0x0006' (invalid argument!) in case the number of
3730 glyph indices differed between the Type 42 font and the embedded
3731 TTF.
3732
3733 Apparently, noone ever noticed it; this shows how much Type 42 fonts
3734 are in use...
3735
3736 * src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index
3737 to embedded TTF's glyph index.
3738
37392015-08-08 Werner Lemberg <wl@gnu.org>
3740
Werner Lemberge5f44692015-08-08 07:45:03 +02003741 [type42] Minor clean-up.
3742
3743 * src/type42/t42parse.c (t42_parse_font_matrix): Remove unused
3744 variable.
3745
Alexei Podtelezhnikovfd705122015-08-06 21:49:08 -040037462015-08-06 Alexei Podtelezhnikov <apodtele@gmail.com>
3747
3748 [type42] Parse FontMatrix according to specifications.
3749
3750 * src/type42/t42parse.c (t42_parse_font_matrix): Type 42 FontMatrix
3751 does not need scaling by 1000. Units_per_EM are taken from the
3752 embedded TrueType.
3753
Werner Lembergff406e22015-08-06 07:34:50 +020037542015-08-06 Werner Lemberg <wl@gnu.org>
3755
3756 [autofit] Improve Arabic hinting.
3757
3758 Problem reported by Titus Nemeth <tn@tntypography.eu> (by using
3759 ttfautohint).
3760
3761 * src/autofit/afblue.dat: Add neutral blue zone for the tatweel
3762 character.
3763
3764 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3765
Alexei Podtelezhnikov98e8e992015-08-06 00:06:14 -040037662015-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
3767
3768 [truetype] Clean up types.
3769
3770 * src/truetype/ttobjs.c (TT_Size): Move declaration from here.
3771 * include/freetype/internal/tttypes.h (TT_Size): ... to here.
3772 (TT_LoaderRec): Switch to appropriate types for `face' and `size'.
3773 * src/truetype/ttgload.c: Remove corresponding type casts.
3774 * src/truetype/ttsubpix.c: Ditto.
3775
Werner Lemberg15e2a4f2015-08-05 21:53:50 +020037762015-08-05 Werner Lemberg <wl@gnu.org>
3777
3778 [autofit] Improve recognition of flat vs. rounded segments.
3779
3780 Lower the flatness threshold from upem/8 to upem/14, making the
3781 auto-hinter accept shorter elements.
3782
3783 Synchronize flat/round stem selection algorithm with blue zone code.
3784
3785 * src/autofit/aflatin.c (FLAT_THRESHOLD): New macro.
3786 (af_latin_metrics_init_blues): Use it.
3787 (af_latin_hints_compute_segments): Collect information on maximum
3788 and minimum coordinates of `on' points; use this to add a constraint
3789 for the flat/round decision similar to
3790 `af_latin_metrics_init_blues'.
3791
Werner Lembergeb22ef22015-08-04 06:50:04 +020037922015-08-04 Werner Lemberg <wl@gnu.org>
3793
3794 Another left-shift bug (#45681).
3795
3796 * src/base/ftobjs.c (IsMacBinary): Only accept positive values for
3797 `dlen'.
3798
Alexei Podtelezhnikov7e6c3212015-08-03 23:26:13 -040037992015-08-03 Alexei Podtelezhnikov <apodtele@gmail.com>
3800
3801 [base] Fix `ft_corner_orientation'.
3802
3803 Remove casting from `FT_Long' to `FT_Int' that might change the sign
3804 of the return value and make it faster too.
3805
3806 * src/base/ftcalc.c (ft_corner_orientation): On 32-bit systems, stay
3807 with 32-bit arithmetic when safe. Use plain math on 64-bit systems.
3808 * src/pshinter/pshalgo.c: Remove old unused code.
3809
Werner Lembergca6a5cf2015-08-03 08:51:18 +020038102015-08-03 Werner Lemberg <wl@gnu.org>
3811
Werner Lemberg8dfc7602015-08-03 12:23:30 +02003812 * src/truetype/ttgload.c (load_truetype_glyph)
3813 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix crash for composite glyphs
3814 having a depth greater than 1.
3815
38162015-08-03 Werner Lemberg <wl@gnu.org>
3817
Werner Lembergca6a5cf2015-08-03 08:51:18 +02003818 Fix typo in clang bug from 2015-07-31 (#45678).
3819
3820 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Fix inequality.
3821
Werner Lemberg70e9d812015-08-02 09:42:12 +020038222015-08-02 Werner Lemberg <wl@gnu.org>
3823
Werner Lemberga82c45d2015-08-02 18:35:49 +02003824 * CMakeLists.txt: Improve shared library support.
3825
3826 Based on a patch from John Cary <cary@txcorp.com>.
3827
38282015-08-02 Werner Lemberg <wl@gnu.org>
3829
Werner Lemberg682c2712015-08-02 15:46:26 +02003830 * builds/unix/freetype-config.in (enable_shared): Remove. Unused.
3831
38322015-08-02 Werner Lemberg <wl@gnu.org>
3833
Werner Lemberg70e9d812015-08-02 09:42:12 +02003834 Fix more invalid left-shifts.
3835
3836 * src/pfr/pfrgload.c (pfr_glyph_load_compound): Use multiplication,
3837 not left-shift.
3838
3839 * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
3840 tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Use multiplication,
3841 not left-shift.
3842
Werner Lemberg5d1b8ab2015-07-31 21:49:07 +020038432015-07-31 Werner Lemberg <wl@gnu.org>
3844
Werner Lemberg6343ba22015-08-01 07:53:48 +02003845 Fix some bugs found by clang's `-fsanitize=undefined' (#45661).
3846
3847 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Only accept
3848 positive values from header.
3849 Check overflow.
3850
3851 * src/base/ftoutln.c (SCALED): Correctly handle left-shift of
3852 negative values.
3853
3854 * src/bdf/bdf.h (_bdf_glyph_modified, _bdf_set_glyph_modified,
3855 _bdf_clear_glyph_modified): Use unsigned long constant.
3856
3857 * src/bdf/bdfdrivr.c (BDF_Size_Select, BDF_Glyph_Load): Don't
3858 left-shift values that can be negative.
3859
3860 * src/pcf/pcfdrivr.c (PCF_Size_Select, PCF_Glyph_Load): Don't
3861 left-shift values that can be negative.
3862
3863 * src/raster/ftraster.c (SCALED): Correctly handle left-shift of
3864 negative values.
3865
3866 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Don't left-shift
3867 values that can be negative.
3868
3869 * src/truetype/ttgload.c (TT_Load_Composite_Glyph,
3870 compute_glyph_metrics, load_sbit_image): Don't left-shift values
3871 that can be negative.
3872
38732015-07-31 Werner Lemberg <wl@gnu.org>
3874
Werner Lemberg5d1b8ab2015-07-31 21:49:07 +02003875 Define FT_LONG_MAX.
3876
3877 * include/freetype/config/ftstdlib.h (FT_LONG_MAX): New macro.
3878 * src/cff/cf2arrst.c (cf2_arrstack_setNumElements): Use it.
3879
38802015-07-28 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov2b07a5a2015-07-28 23:14:30 -04003881
3882 * src/base/ftcalc.c (FT_Vector_NormLen): Clarify.
3883
Werner Lemberg5d1b8ab2015-07-31 21:49:07 +020038842015-07-27 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikove8b186e2015-07-27 23:22:34 -04003885
3886 * src/base/ftcalc.c (FT_Vector_NormLen): Explicate type conversions.
3887
Matthias Clasenb650dfb2015-07-26 21:08:34 +020038882015-07-26 Matthias Clasen <matthias.clasen@gmail.com>
3889
3890 [cff] Don't use `hmtx' table for LSB (#45520).
3891
3892 * src/cff/cffgload.c (cff_slot_load): Use `htmx' table for advance
3893 width only. Bug introduced 2015-04-10.
3894
Werner Lembergf9be5672015-07-09 15:10:31 +020038952015-07-09 Werner Lemberg <wl@gnu.org>
3896
3897 Better support of user-supplied C++ namespaces.
3898
3899 See
3900
3901 http://lists.nongnu.org/archive/html/freetype-devel/2015-07/msg00008.html
3902
3903 for a rationale.
3904
3905 * src/autofit/afpic.h, src/base/basepic.h, src/cff/cffpic.h,
3906 src/pshinter/pshpic.h, src/psnames/pspic.h, src/raster/rastpic.h,
3907 src/sfnt/sfntpic.h, src/smooth/ftspic.h, src/truetype/ttpic.h
3908 (FT_BEGIN_HEADER, FT_END_HEADER): Move macro calls to not enclose
3909 header files that contain FT_{BEGIN,END}_HEADER macros by
3910 themselves.
3911
3912 * src/autofit/aftypes.h [FT_DEBUG_AUTOFIT]: Include
3913 FT_CONFIG_STANDARD_LIBRARY_H earlier.
3914
Alexei Podtelezhnikovc05a1c32016-06-21 23:12:54 -04003915 * src/truetype/ttpic.h: Include FT_INTERNAL_PIC_H.
Werner Lembergf9be5672015-07-09 15:10:31 +02003916
Werner Lemberg1cdac102015-07-07 14:04:44 +020039172015-07-07 Werner Lemberg <wl@gnu.org>
3918
3919 [sfnt] Make `tt_face_get_name' member of the SFNT interface.
3920
3921 * include/freetype/internal/sfnt.h (TT_Get_Name_Func): New
3922 prototype.
3923 (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): New member `get_name'.
3924
3925 * src/sfnt/sfdriver.c (sfnt_interface): Updated.
3926
3927 * src/sfnt/sfobjs.c (tt_face_get_name): Tag it with `LOCAL_DEF'.
3928 * src/sfnt/sfobjs.h: Add prototype for it.
3929
Werner Lembergeb1bba92015-06-30 09:46:39 +020039302015-06-30 Werner Lemberg <wl@gnu.org>
3931
3932 Fix some clang compiler warnings.
3933
3934 * src/base/ftoutln.c (FT_Outline_EmboldenXY), src/cff/cf2intrp.c
3935 (cf2_interpT2CharString), src/truetype/ttgload.c
3936 (load_truetype_glyph), src/truetype/ttgxvar.c (tt_handle_deltas),
3937 src/truetype/ttinterp.c (Ins_INSTCTRL): Fix signedness issues.
3938
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040039392015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov884e4e62015-06-29 22:32:05 -04003940
Alexei Podtelezhnikov5aaabb42015-06-29 22:46:54 -04003941 [truetype] Speed up bytecode interpreter.
3942
3943 * src/truetype/ttinterp.c (Normalize): Use `FT_Vector_NormLen'.
3944
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040039452015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov5aaabb42015-06-29 22:46:54 -04003946
Alexei Podtelezhnikov9ef02bd2015-06-29 22:39:10 -04003947 [base] Speed up emboldening.
3948
Werner Lembergeb1bba92015-06-30 09:46:39 +02003949 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use
3950 `FT_Vector_NormLen'.
Alexei Podtelezhnikov9ef02bd2015-06-29 22:39:10 -04003951
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040039522015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov9ef02bd2015-06-29 22:39:10 -04003953
Alexei Podtelezhnikov884e4e62015-06-29 22:32:05 -04003954 [base] Implement fast vector normalization.
3955
3956 The function uses Newton's iterations instead of dividing vector
3957 components by its length, which needs a square root. This is,
3958 literally, a bit less accurate but a lot faster.
3959
3960 * src/base/ftcalc.c (FT_Vector_NormLen): New function.
3961
Werner Lemberg22479ca2015-06-28 10:26:33 +020039622015-06-28 Werner Lemberg <wl@gnu.org>
3963
Werner Lemberg7cdc77f2015-06-28 11:40:02 +02003964 * CMakeLists.txt: Always create `ftconfig.h'.
3965
3966 For non-UNIX builds, the file stays unmodified. However, it's
3967 better to have the main configuration files at the same place
3968 regardless of the OS.
3969
39702015-06-28 Werner Lemberg <wl@gnu.org>
3971
Werner Lemberg2c89e2c2015-06-28 11:06:47 +02003972 * CMakeLists.txt: Improve MSVC support (#43737).
3973
39742015-06-28 Werner Lemberg <wl@gnu.org>
3975
Werner Lemberg52c9b1a2015-06-28 11:03:10 +02003976 [cmake] Check for libraries and create `ftoption.h'.
3977
3978 * builds/FindHarfBuzz.cmake: New file, taken from
3979
3980 https://trac.webkit.org/browser/trunk/Source/cmake/FindHarfBuzz.cmake
3981
3982 * CMakeLists.Txt: Add path to local cmake modules.
3983 Find dependencies for zlib, bzip2, libpng, and harfbuzz.
3984 Create `ftoption.h' file.
3985 Set up include and linker stuff for libraries.
3986
39872015-06-28 Werner Lemberg <wl@gnu.org>
3988
Werner Lemberg97b757d2015-06-28 10:42:47 +02003989 * CMakeLists.txt: Fix creation of `ftconfig.h'.
3990 Check for UNIX header files using `check_include_file'.
3991 Set up correct header include directories.
3992
39932015-06-28 Werner Lemberg <wl@gnu.org>
3994
Werner Lemberg22479ca2015-06-28 10:26:33 +02003995 * CMakeLists.txt: Disallow in-source builds.
3996
Werner Lemberg802f6a92015-06-27 07:12:42 +020039972015-06-27 Werner Lemberg <wl@gnu.org>
3998
3999 * src/tools/docmaker/utils.py (check_output): Add missing `\n'.
4000
Werner Lemberg94c79c22015-06-26 06:46:59 +020040012015-06-26 Werner Lemberg <wl@gnu.org>
4002
Werner Lemberg802f6a92015-06-27 07:12:42 +02004003 * CMakeLists.txt: Select platform-dependent `ftdebug.c'.
Werner Lemberg94c79c22015-06-26 06:46:59 +02004004
Werner Lemberg392cf222015-06-25 13:04:57 +020040052015-06-25 Werner Lemberg <wl@gnu.org>
4006
Werner Lemberg68222dd2015-06-25 16:38:11 +02004007 * CMakeLists.txt: Use cmake functions for generating `ftconfig.h'.
4008 Additionally, do this for UNIX only.
4009
40102015-06-25 Werner Lemberg <wl@gnu.org>
4011
Werner Lemberg5ef5a4f2015-06-25 15:45:13 +02004012 * CMakeLists.txt (BASE_SRCS): Use `ftbase.c' and `psnames.c'.
4013
40142015-06-25 Werner Lemberg <wl@gnu.org>
4015
Werner Lemberg392cf222015-06-25 13:04:57 +02004016 Another adjustment to header locations.
4017
4018 This change is a result of a discussion thread on freetype-devel
4019
4020 http://lists.nongnu.org/archive/html/freetype-devel/2015-06/msg00041.html
4021
4022 Re-introduce the `freetype2' subdirectory for all FreeType header
4023 files after installation, and rename the `freetype2' subdirectory in
4024 the git repository to `freetype'.
4025
4026 * include/freetype2: Renamed to...
4027 * include/freetype: This.
4028
4029 * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
4030 PRIVATE_HEADERS): Updated.
4031 Update creation of `ftconfig.h'.
4032 Install generated `ftconfig.h'.
4033
4034 * Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.
4035
4036 * builds/amiga/include/config/ftconfig.h, builds/freetype.mk
4037 (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
4038 builds/unix/freetype2.in: Updated.
4039
4040 * builds/unix/freetype-config.in: Updated.
4041 * builds/unix/configure.raw: Don't check for `rmdir'.
4042 * builds/unix/unix-def.in (DELDIR): Use `rm -rf', which is portable
4043 according to the autoconf info manual.
4044 * builds/unix/install.mk (install, uninstall,
4045 distclean_project_unix): Update and simplify.
4046
4047 * builds/wince/*, builds/windows/*: Updated.
4048
4049 * devel/ft2build.h, include/ft2build.h: Updated.
4050
4051 * include/freetype2/config/ftheader.h,
4052 include/freetype2/internal/ftserv.h,
4053 include/freetype2/internal/internal.h: Update all header file
4054 macros.
4055
4056 * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.
4057
4058 * docs/*: Updated.
4059
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040040602015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com>
Werner Lemberg1982a882015-06-26 06:52:34 +02004061
4062 * src/bdf/bdflib.c (_bdf_parse_start): Disallow 0 bpp.
4063
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040040642015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com>
Werner Lemberg1982a882015-06-26 06:52:34 +02004065
4066 * src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing.
4067
Werner Lemberg59312682015-06-23 09:24:48 +020040682015-06-23 Werner Lemberg <wl@gnu.org>
4069
4070 s/TYPEOF/FT_TYPEOF/ (#45376).
4071
4072 * builds/unix/ftconfig.in, builds/vms/ftconfig.in,
4073 include/freetype2/config/ftconfig.h,
4074 include/freetype2/internal/ftobjs.h, src/autofit/afwarp.h: Do it.
4075
Werner Lemberg8502c982015-06-22 06:35:23 +020040762015-06-22 Werner Lemberg <wl@gnu.org>
4077
4078 Fix Savannah bug #45097.
4079
4080 We no longer `pollute' the namespace of possible header file names;
4081 instead we move `ft2build.h' up by one level so that it gets
4082 installed in the default include directory (e.g.,
4083 /usr/local/include). After this commit, only `ft2build.h' stays in
4084 the compiler's include path.
4085
4086 No visible changes for the user who follows the standard FreeType
4087 header inclusion rules.
4088
4089 * include/*: Move to ...
4090 * include/freetype2/*: This directory, except `ft2build.h'.
4091
4092 * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
4093 PRIVATE_HEADERS), Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.
4094
4095 * builds/amiga/include/config/ftconfig.h, builds/freetype.mk
4096 (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
4097 builds/unix/install.mk (install, uninstall),
4098 builds/unix/freetype2.in: Updated.
4099
4100 * builds/unix/freetype-config.in: Updated.
4101 Emit -I directory only if it is not `/usr/include'.
4102
4103 * builds/wince/*, builds/windows/*: Updated.
4104
4105 * devel/ft2build.h, include/ft2build.h: Updated.
4106
4107 * include/freetype2/config/ftheader.h,
4108 include/freetype2/internal/ftserv.h,
4109 include/freetype2/internal/internal.h: Update all header file
4110 macros.
4111
4112 * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.
4113
Werner Lemberg31d97df2015-06-21 19:12:12 +020041142015-06-21 Werner Lemberg <wl@gnu.org>
4115
4116 Make Jam support work again.
4117
4118 This is just very basic stuff and just a little bit tested on
4119 GNU/Linux only. I won't delve into this since I'm not a Jam user.
4120
4121 * Jamfile: Call `HDRMACRO' for `ftserv.h' also.
4122 (DEFINES): Replace with...
4123 (CCFLAGS): ... this.
4124
4125 * src/Jamfile: Don't call `HDRMACRO' for `internal.h'; this is
4126 already handled in the top-level Jamfile.
4127
4128 * src/autofit/Jamfile (DEFINES): Replace with...
4129 (CCFLAGS): ... this.
4130 (_sources): Add missing files.
4131
4132 * src/cache/Jamfile: Don't call `HDRMACRO' for `ftcache.h'; it no
4133 longer contains macro header definitions.
4134
4135 * src/base/Jamfile, src/cff/Jamfile, src/sfnt/Jamfile,
4136 src/truetype/Jamfile (_sources): Add missing files.
4137
Werner Lemberg1a147ac2015-06-16 10:20:07 +020041382015-06-16 Werner Lemberg <wl@gnu.org>
4139
4140 Fix Savannah bug #45326.
4141
4142 * src/sfnt/sfntpic.h (SFNT_SERVICES_GET): Remove duplicate
4143 definitions.
4144
Werner Lemberge1862302015-06-07 16:11:18 +020041452015-06-07 Werner Lemberg <wl@gnu.org>
4146
4147 * Version 2.6 released.
4148 =======================
4149
4150
4151 Tag sources with `VER-2-6'.
4152
4153 * docs/VERSION.DLL: Update documentation and bump version number to
4154 2.6.
4155
4156 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
4157 builds/windows/vc2005/index.html,
4158 builds/windows/vc2008/freetype.vcproj,
4159 builds/windows/vc2008/index.html,
4160 builds/windows/vc2010/freetype.vcxproj,
4161 builds/windows/vc2010/index.html,
4162 builds/windows/visualc/freetype.dsp,
4163 builds/windows/visualc/freetype.vcproj,
4164 builds/windows/visualc/index.html,
4165 builds/windows/visualce/freetype.dsp,
4166 builds/windows/visualce/freetype.vcproj,
4167 builds/windows/visualce/index.html,
4168 builds/wince/vc2005-ce/freetype.vcproj,
4169 builds/wince/vc2005-ce/index.html,
4170 builds/wince/vc2008-ce/freetype.vcproj,
4171 builds/wince/vc2008-ce/index.html: s/2.5.5/2.6/, s/255/26/.
4172
4173 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 6.
4174 (FREETYPE_PATCH): Set to 0.
4175
4176 * builds/unix/configure.raw (version_info): Set to 18:0:12.
Werner Lemberg8cabd912015-10-04 08:18:01 +02004177 * CMakeLists.txt (VERSION_MINOR): Set to 6.
4178 (VERSION_PATCH): Set to 0.
Werner Lemberge1862302015-06-07 16:11:18 +02004179
4180 * src/autofit/afmodule.c [!FT_MAKE_OPTION_SINGLE_OBJECT]: Add
4181 declarations for dumping functions.
4182
4183 * src/truetype/ttinterp.c (TT_New_Context): Pacify compiler.
4184
4185 * builds/toplevel.mk: Use `freetype.mk's code to compute the version
4186 string.
4187 Don't include a zero patch level in version string.
4188 * builds/freetype.mk: Remove code for computing the version string.
4189
Ashish Azad472119a2015-06-06 05:45:17 +020041902015-06-06 Ashish Azad <ashish.azad@samsung.com>
4191
4192 Fix Savannah bug #45260.
4193
4194 * src/pfr/pfrdrivr.c (pfr_get_kerning): Fix typo.
4195
Werner Lemberg75534a02015-06-03 00:54:09 +020041962015-06-03 Werner Lemberg <wl@gnu.org>
4197
4198 [truetype] Fix memory leak.
4199
4200 Problem reported by Grissiom <chaos.proton@gmail.com>; in
4201
4202 http://lists.nongnu.org/archive/html/freetype/2015-05/msg00013.html
4203
4204 there is an example code to trigger the bug.
4205
4206 * src/truetype/ttobjs.c (tt_size_init_bytecode): Free old `size'
4207 data before allocating again. Bug most probably introduced four
4208 years ago in version 2.4.3.
4209
42102015-06-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg54d04282015-06-01 12:12:06 +02004211
Werner Lembergd1ade6d2015-06-02 11:44:52 +02004212 [raster] Add more tracing.
4213
4214 * src/raster/ftraster.c (FT_TRACE7) [_STANDALONE_]: Define.
4215 (Vertical_Sweep_Span, Vertical_Sweep_Drop, Horizontal_Sweep_Span,
4216 Horizontal_Sweep_Drop, Render_Glyph): Add tracing calls.
4217
42182015-06-01 Werner Lemberg <wl@gnu.org>
4219
Werner Lemberg54d04282015-06-01 12:12:06 +02004220 [truetype] While tracing opcodes, show code position and stack.
4221
4222 * src/truetype/ttinterp.c: Change all existing TRACE7 calls to
4223 TRACE6.
4224 (opcode_name): Add string lengths.
4225 (TT_RunIns): Implement display of code position and stack.
4226
Werner Lembergcdee7d12015-05-31 11:54:42 +020042272015-05-31 Werner Lemberg <wl@gnu.org>
4228
Werner Lemberge9df4e42015-05-31 12:21:34 +02004229 [truetype] In GX, make private point numbers work correctly.
4230
4231 This is completely missing in Apple's documentation: If a `gvar'
4232 tuple uses private point numbers (this is, deltas are specified for
4233 some points only), the uncovered points must be interpolated for
4234 this tuple similar to the IUP bytecode instruction. Examples that
4235 need this functionality are glyphs `Oslash' and `Q' in Skia.ttf.
4236
4237 * src/truetype/ttgxvar.c (tt_delta_shift, tt_delta_interpolate,
4238 tt_handle_deltas): New functions.
4239 (TT_Vary_Get_Glyph_Deltas): Renamed to...
4240 (TT_Vary_Apply_Glyph_Deltas): ... this; it directly processes the
4241 points and does no longer return an array of deltas.
4242 Add tracing information.
4243 Call `tt_handle_deltas' to interpolate missing deltas.
4244 Also fix a minor memory leak in case of error.
4245
4246 * src/truetype/ttgxvar.h: Updated.
4247
4248 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
4249 load_truetype_glyph): Updated.
4250
42512015-05-31 Werner Lemberg <wl@gnu.org>
4252
Werner Lemberg9845c1d2015-05-31 11:57:31 +02004253 [truetype] In GX, make intermediate tuplets work at extrema.
4254
4255 * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix range condition.
4256
42572015-05-31 Werner Lemberg <wl@gnu.org>
4258
Werner Lembergcdee7d12015-05-31 11:54:42 +02004259 [truetype] Add tracing information to GX code.
4260
4261 * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
4262 ft_var_apply_tuple, TT_Get_MM_Var, TT_Set_MM_Blend,
4263 TT_Set_Var_Design, tt_face_vary_cvt): Do it.
4264
Werner Lemberg366b2ea2015-05-28 10:58:40 +020042652015-05-28 Werner Lemberg <wl@gnu.org>
4266
4267 * src/tools/apinames.c (names_dump): Fix invalid reference.
4268
4269 Problem reported by Guzman Mosqueda, Jose R
4270 <jose.r.guzman.mosqueda@intel.com>.
4271
Werner Lemberga5e1f6f2015-05-24 23:29:23 +020042722015-05-24 Werner Lemberg <wl@gnu.org>
4273
4274 [truetype] Fix commit from 2015-05-22.
4275
4276 * src/truetype/ttgload.c, src/truetype/ttinterp.c: Guard new code
4277 with `TT_CONFIG_OPTION_SUBPIXEL_HINTING'.
4278
4279 Problem reported by Nikolaus Waxweiler <madigens@gmail.com>.
4280
Werner Lembergbb435da2015-05-23 07:21:25 +020042812015-05-23 Werner Lemberg <wl@gnu.org>
4282
Werner Lemberg7f099482015-05-24 09:50:24 +02004283 [truetype] Fix return values of GETINFO bytecode instruction.
4284
4285 * src/truetype/ttinterp.h (TT_ExecContextRec): New fields
4286 `vertical_lcd' and `gray_cleartype'.
4287
4288 * src/truetype/ttgload.c (tt_loader_init): Initialize new fields.
4289 Change `symmetrical smoothing' to TRUE, since FreeType produces
4290 exactly this.
4291
4292 * src/truetype/ttinterp.c (Ins_GETINFO): Fix selector/return bit
4293 values for symmetrical smoothing, namely 11/18.
4294 Handle bits for vertical LCD subpixels (8/15) and Gray ClearType
4295 (12/19).
4296
42972015-05-23 Werner Lemberg <wl@gnu.org>
4298
Werner Lembergbb435da2015-05-23 07:21:25 +02004299 [truetype] Minor.
4300
4301 * src/truetype/ttinterp.h (TT_ExecContext):
4302 s/subpixel/subpixel_hinting.
4303
4304 * src/truetype/ttgload.c, src/truetype/ttgload.h: Updated.
4305
43062015-05-22 Werner Lemberg <wl@gnu.org>
Werner Lemberg790b8df2015-05-20 12:33:40 +02004307
Werner Lembergc61cad82015-05-22 22:02:15 +02004308 [truetype] Support selector index 3 of the INSTCTRL instruction.
4309
4310 This flag activates `native ClearType hinting', disabling backwards
4311 compatibility mode as described in Greg Hitchcocks whitepaper. In
4312 other words, it enables unrestricted functionality of all TrueType
4313 instructions in ClearType.
4314
4315 * src/truetype/ttgload.c (tt_get_metrics): Call `sph_set_tweaks'
4316 unconditionally.
4317 (tt_loader_init): Unset `ignore_x_mode' flag if bit 2 of
4318 `GS.instruct_control' is active.
4319
4320 * src/truetype/ttinterp.c (Ins_INSTCTRL): Handle selector index 3.
4321 (Ins_GETINFO): Updated.
4322
4323 * docs/CHANGES: Document it.
4324
43252015-05-20 Werner Lemberg <wl@gnu.org>
4326
Werner Lemberg790b8df2015-05-20 12:33:40 +02004327 [truetype] Minor.
4328
4329 * src/truetype/ttinterp.h (SetSuperRound): Fix type of `GridPeriod'
4330 argument.
4331
Werner Lemberg0a6b6ff2015-05-17 22:54:48 +020043322015-05-17 Werner Lemberg <wl@gnu.org>
4333
4334 [truetype] Fix loading of composite glyphs.
4335
4336 * src/truetype/ttgload.c (TT_Load_Composite_Glyph): If the
4337 ARGS_ARE_XY_VALUES flag is not set, handle argument values as
4338 unsigned. I trust `ttx' (which has exactly such code) that it does
4339 the right thing here...
4340
4341 The reason that noone has ever noticed this bug is probably the fact
4342 that point-aligned subglyphs are rare, as are subglyphs with a
4343 number of points in the range [128;255], which is quite large (or
4344 even in the range [32768;65535], which is extremely unlikely).
4345
Chris Liddelld65bf722015-05-12 07:16:46 +020043462015-05-12 Chris Liddell <chris.liddell@artifex.com>
4347
Chris Liddella87fb8c2015-05-12 07:27:35 +02004348 [cff] Make the `*curveto' operators more tolerant.
4349
4350 * src/cff/cf2intrp.c (cf2_interpT2CharString): The opcodes
4351 `vvcurveto', `hhcurveto', `vhcurveto', and `hvcurveto' all iterate,
4352 pulling values off the stack until the stack is exhausted.
4353 Implicitly the stack must be a multiple (or for subtly different
4354 behaviour) a multiple plus a specific number of extra values deep.
4355 If that's not the case, enforce it (as the old code did).
4356
43572015-05-12 Chris Liddell <chris.liddell@artifex.com>
4358
Chris Liddelld65bf722015-05-12 07:16:46 +02004359 [cff] fix incremental interface with new cff code.
4360
4361 * src/cff/cf2ft.c (cf2_getSeacComponent): When using the incremental
4362 interface to retrieve glyph data for a SEAC, it be left to the
4363 incremental interface callback to apply the encoding to raw
4364 character index (as it was in the previous code).
4365
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040043662015-04-29 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov40914952015-04-29 21:57:30 -04004367
4368 [autofit] Speed up IUP.
4369
4370 * src/autofit/afhints.c (af_iup_interp): Separate trivial snapping to
4371 the same position from true interpolation, use `scale' to reduce
4372 divisions.
4373
Werner Lemberg3cc076d2015-04-28 09:16:27 +020043742015-04-28 Werner Lemberg <wl@gnu.org>
4375
4376 [cff] Use `name' table for PS name if we have a SFNT-CFF.
4377
4378 This follows the OpenType 1.7 specification. See
4379
4380 http://tug.org/pipermail/tex-live/2015-April/036634.html
4381
4382 for a discussion.
4383
4384 * src/cff/cffdrivr.c (cff_get_ps_name): Use the `sfnt' service if we
4385 have an SFNT.
4386
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040043872015-04-27 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov40623a12015-04-27 22:27:00 -04004388
4389 [truetype] Speed up IUP.
4390
4391 * src/truetype/ttinterp.c (_iup_worker_interpolate): Separate trivial
4392 snapping to the same position from true interpolation.
4393
Werner Lemberg12661a52015-04-21 07:13:59 +020043942015-04-21 Werner Lemberg <wl@gnu.org>
4395
Werner Lemberg14df6b12015-04-22 11:14:35 +02004396 [autofit] By default, enable warping code but switch off warping.
4397
4398 Suggested by Behdad.
4399
4400 * include/config/ftoption.h: Define AF_CONFIG_OPTION_USE_WARPER.
4401
4402 * src/autofit/afmodule.c (af_autofitter_init): Initialize `warping'
4403 with `false'.
4404
44052015-04-21 Werner Lemberg <wl@gnu.org>
4406
Werner Lembergd164f702015-04-21 07:51:41 +02004407 * docs/CHANGES: Updated.
4408
44092015-04-21 Werner Lemberg <wl@gnu.org>
4410
Werner Lemberg12661a52015-04-21 07:13:59 +02004411 [autofit] Introduce `warping' property.
4412
4413 This code replaces the debugging hook from the previous commit with
4414 a better, more generic solution.
4415
4416 * include/ftautoh.h: Document it.
4417
4418 * src/autofit/afmodule.h (AF_ModuleRec)
4419 [AF_CONFIG_OPTION_USE_WARPER]: Add `warping' field.
4420
4421 * src/autofit/afmodule.c (_af_debug_disable_warper): Remove.
4422 (af_property_set, af_property_get, af_autofitter_init)
4423 [AF_CONFIG_OPTION_USE_WARPER]: Handle `warping' option.
4424
4425 * src/autofit/afhints.h (AF_HINTS_DO_WARP): Remove use of the no
4426 longer existing `_af_debug_disable_warper'.
4427
4428 * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
4429 (af_latin_hints_init), src/autofit/aflatin2.c (af_latin2_hints_init)
4430 [AF_CONFIG_OPTION_USE_WARPER]: Add `AF_SCALER_FLAG_NO_WARPER' to the
4431 scaler flags if warping is off.
4432
4433 * src/autofit/aftypes.h: Updated.
4434
Werner Lemberg58f48f02015-04-16 20:11:49 +020044352015-04-16 Werner Lemberg <wl@gnu.org>
4436
4437 [autofit] Add debugging hook to disable warper.
4438
4439 * src/autofit/afmodule.c (_af_debug_disable_warper)
4440 [FT_DEBUG_AUTOFIT]: New global variable.
4441
4442 * src/autofit/aftypes.h: Updated.
4443 (AF_SCALER_FLAG_NO_WARPER): New macro (not actively used yet).
4444
4445 * src/autofit/afhints.h (AF_HINTS_DO_WARP): New macro.
4446
Alexei Podtelezhnikovc6d99a42016-04-08 00:05:50 -04004447 * src/autofit/aflatin.c (af_latin_hints_apply)
Werner Lemberg58f48f02015-04-16 20:11:49 +02004448 [AF_CONFIG_OPTION_USE_WARPER]: Use `AF_HINTS_DO_WARP' to control use
4449 of warper.
4450
4451 * src/autofit/afcjk.c (af_cjk_hints_init, af_cjk_hints_apply)
4452 [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.
4453
4454 * src/autofit/aflatin2.c (af_latin2_hints_apply)
4455 [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.
4456
Werner Lemberg5cd21552015-04-10 07:01:01 +020044572015-04-10 Werner Lemberg <wl@gnu.org>
4458
4459 [cff] Update advance width handling to OpenType 1.7.
4460
4461 Problem reported by Behdad.
4462
4463 * src/cff/cffdrivr.c (cff_get_advances): Handle SFNT case
4464 separately.
4465
4466 * src/cff/cffgload.c (cff_slot_load): Use advance width and side
4467 bearing values from `hmtx' table if present.
4468
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040044692015-04-03 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov67b912d2015-04-03 22:38:11 -04004470
4471 * src/autofit/afhints.c (af_glyph_hints_reload): Use do-while loop.
4472
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040044732015-04-02 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov770b5d02015-04-02 23:15:36 -04004474
4475 * src/autofit/aflatin.c (af_latin_hint_edges): Reduce logic.
4476
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040044772015-04-01 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov886f4d02015-04-01 22:57:43 -04004478
4479 [autofit] Finish the thought.
4480
4481 * src/autofit/afhints.c (af_direction_compute): make sure the long arm
4482 is never negative so that its `FT_ABS' is not necessary.
4483
Werner Lemberg16217e52015-04-01 13:13:56 +020044842015-04-01 Werner Lemberg <wl@gnu.org>
4485
Werner Lemberga2fa6572015-04-01 15:55:41 +02004486 [autofit] Call dumper functions for tracing.
4487
4488 * src/autofit/afcjk.c (af_cjk_hints_apply): Remove dead code.
4489 * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor
4490 improvement.
4491 * src/autofit/afmodule.c (af_autofitter_load_glyph): Implement it.
4492
44932015-04-01 Werner Lemberg <wl@gnu.org>
4494
Werner Lembergdb8df792015-04-01 13:30:55 +02004495 [autofit] Make debugging stuff work again.
4496
4497 The interface to ftgrid was broken in the series of commits starting
4498 with
4499
4500 [autofit] Allocate AF_Loader on the stack instead of AF_Module.
4501
4502 from 2015-01-14.
4503
4504 * src/autofit/afmodule.c (_af_debug_hints_rec) [FT_DEBUG_AUTOFIT]:
4505 Use a global AF_GlyphHintsRec object for debugging.
4506 (af_autofitter_done, af_autofitter_load_glyph): Updated.
4507
4508 * src/autofit/afloader.c (af_loader_init, af_loader_done): Updated.
4509
45102015-04-01 Werner Lemberg <wl@gnu.org>
4511
Werner Lemberg16217e52015-04-01 13:13:56 +02004512 * src/autofit/afhints.c (af_glyph_hints_done): Fix minor thinko.
4513
Werner Lemberg10e2bb82015-03-29 13:32:47 +020045142015-03-29 Werner Lemberg <wl@gnu.org>
4515
Werner Lembergf353a382015-03-29 14:47:49 +02004516 [cff] Fix Savannah bug #44629.
4517
4518 * src/cff/cf2font.h (CF2_MAX_SUBR), src/cff/cffgload.h
4519 (CFF_MAX_SUBRS_CALLS): Set to 16.
4520
45212015-03-29 Werner Lemberg <wl@gnu.org>
4522
Werner Lemberg10e2bb82015-03-29 13:32:47 +02004523 [type1, truetype] Make the MM API more flexible w.r.t. `num_coords'.
4524
4525 This commit allows `num_coords' to be larger or smaller than the
4526 number of available axes while selecting a design instance, either
4527 ignoring excess data or using defaults if data is missing.
4528
4529 * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design):
4530 Implement it.
4531
4532 * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design,
4533 T1_Set_Var_Design): Ditto.
4534
45352015-03-29 Werner Lemberg <wl@gnu.org>
Werner Lemberg8ce30262015-03-27 08:33:47 +01004536
Werner Lembergdd5d6d72015-03-29 10:04:22 +02004537 [type1] Minor.
4538
4539 * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Use
4540 FT_THROW.
4541 (T1_Set_Var_Design): Use T1_MAX_MM_AXIS and FT_THROW.
4542
45432015-03-27 Werner Lemberg <wl@gnu.org>
4544
Werner Lemberg8ce30262015-03-27 08:33:47 +01004545 [cff] Trace charstring nesting levels.
4546
4547 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLGSUBR,
4548 cf2_cmdCALLSUBR, cf2_cmdRETURN>: Implement it.
4549
4550 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
4551 <cff_op_callsubr, cff_op_callgsubr, cff_op_return>: Ditto.
4552
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040045532015-03-21 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikovdac56442015-03-21 23:30:16 -04004554
4555 [base] Optimize `FT_Angle_Diff'.
4556
4557 Under normal circumstances we are usually close to the desired range
4558 of angle values, so that the remainder is not really necessary.
4559
4560 * src/base/fttrigon.c (FT_Angle_Diff): Use loops instead of remainder.
4561
4562 * src/autofit/aftypes.h (AF_ANGLE_DIFF): Ditto in the unused macro.
4563
Werner Lemberg6cc425d2015-03-21 06:51:07 +010045642015-03-21 Werner Lemberg <wl@gnu.org>
4565
4566 [truetype] Improve `gvar' handling.
4567
4568 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Correctly handle
4569 single-element runs. Cf. glyph `Q' in Skia.ttf with weights larger
4570 than the default.
4571
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040045722015-03-20 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov2d7284e2015-03-20 21:34:19 -04004573
4574 * src/base/fttrigon.c (FT_Vector_Rotate): Minor refactoring.
4575
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040045762015-03-17 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov6a171722015-03-17 22:43:08 -04004577
4578 Fix Savannah bug #44412 (part 2).
4579
4580 * src/base/fttrigon.c (FT_Sin, FT_Cos, FT_Tan): Call `FT_Vector_Unit'.
4581
Werner Lemberg06339952015-03-11 06:30:23 +010045822015-03-11 Werner Lemberg <wl@gnu.org>
4583
Werner Lembergd3284462015-03-11 16:45:58 +01004584 [autofit] Add support for Arabic script.
4585
4586 Thanks to Titus Nemeth <tn@tntypography.eu> for guidance!
4587
4588 * src/autofit/afblue.dat: Add blue zone data for Arabic.
4589
4590 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
4591
4592 * src/autofit/afscript.h: Add Arabic standard characters.
4593
4594 * src/autofit/afranges.c: Add Arabic data.
4595
4596 * src/autofit/afstyles.h: Add Arabic data.
4597
4598 * docs/CHANGES: Document it.
4599
46002015-03-11 Werner Lemberg <wl@gnu.org>
4601
Werner Lemberga4516382015-03-11 08:09:13 +01004602 Rename `svxf86nm.h' to `svfntfmt.h'; update related symbols.
4603
4604 * include/internal/ftserv.h (FT_SERVICE_XFREE86_NAME_H): Renamed
4605 to...
4606 (FT_SERVICE_FONT_FORMAT_H): This.
4607
4608 * include/internal/services/svfntfmt.h (FT_XF86_FORMAT_*): Renamed
4609 to ...
4610 (FT_FONT_FORMAT_*): This.
4611
4612 src/base/ftfntfmt.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
4613 src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/pfr/pfrdrivr.c,
4614 src/truetype/ttdriver.c, src/type1/t1driver.c,
4615 src/type42/t42drivr.c, src/winfonts/winfnt.c: Updated.
4616
46172015-03-11 Werner Lemberg <wl@gnu.org>
4618
Werner Lembergdd7028c2015-03-11 07:45:05 +01004619 [base] Rename `FT_XFREE86_H' to `FT_FONT_FORMATS_H'.
4620
4621 * include/config/ftheader.h: Implement it.
4622 * src/base/ftfntfmt.c, docs/CHANGES: Updated.
4623
46242015-03-11 Werner Lemberg <wl@gnu.org>
4625
Werner Lembergf4d1c112015-03-11 07:32:58 +01004626 [base] Rename `FT_Get_X11_Font_Format' to `FT_Get_Font_Format'.
4627
4628 * include/ftfntfmt.h, src/base/ftfntfmt.c: Implement it.
4629
4630 * docs/CHANGES: Updated.
4631
46322015-03-11 Werner Lemberg <wl@gnu.org>
4633
Werner Lembergcb0f7b62015-03-11 06:51:27 +01004634 Fix automatic copyright updating.
4635
4636 * src/tools/update-copyright: Make scanning of `no-copyright'
4637 actually work.
4638
4639 * src/tools/no-copyright: Don't include README in general.
4640
46412015-03-11 Werner Lemberg <wl@gnu.org>
4642
Werner Lemberg06339952015-03-11 06:30:23 +01004643 Rename `ftxf86.[ch]' to `ftfntfmt.[ch]'.
4644
4645 CMakeLists.txt, builds/amiga/makefile, builds/amiga/makefile.os4,
4646 builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt,
4647 builds/mac/FreeType.m68k_far.make.txt,
4648 builds/mac/FreeType.ppc_carbon.make.txt,
4649 builds/mac/FreeType.ppc_classic.make.txt, builds/symbian/bld.inf,
4650 builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj,
4651 builds/wince/vc2008-ce/freetype.vcproj,
4652 builds/windows/vc2005/freetype.vcproj,
4653 builds/windows/vc2008/freetype.vcproj,
4654 builds/windows/vc2010/freetype.vcxproj,
4655 builds/windows/vc2010/freetype.vcxproj.filters,
4656 builds/windows/visualc/freetype.dsp,
4657 builds/windows/visualc/freetype.vcproj,
4658 builds/windows/visualce/freetype.dsp,
4659 builds/windows/visualce/freetype.vcproj, docs/INSTALL.ANY,
4660 include/config/ftheader.h, include/ftfntfmt.h, modules.cfg,
4661 src/base/ftfntfmt.c, vms_make.com: Updated.
4662
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040046632015-03-10 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov6b832c82015-03-10 23:25:49 -04004664
4665 Fix Savannah bug #44412 (part 1).
4666
4667 * src/base/ftstroke.c (ft_stroker_inside): Handle near U-turns.
4668
Werner Lembergeee7d8b2015-03-10 11:15:15 +010046692015-03-10 Werner Lemberg <wl@gnu.org>
4670
4671 [base] Rename `FT_Bitmap_New' to `FT_Bitmap_Init'.
4672
4673 * include/ftbitmap.h, src/base/ftbitmap.c: Implement it.
4674 Update all callers.
4675
4676 * docs/CHANGES: Updated.
4677
Werner Lemberg493cc032015-03-06 05:38:31 +010046782015-03-06 Werner Lemberg <wl@gnu.org>
4679
4680 * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning.
4681
4682 Found by Alexei.
4683
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040046842015-03-05 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikovdd7498d2015-03-05 22:51:36 -05004685
4686 * src/base/ftstroke.c: Simplify.
4687
Werner Lemberg328b7922015-03-04 08:40:23 +010046882015-03-04 Werner Lemberg <wl@gnu.org>
4689
4690 [truetype] Some fixes and code refactoring in `ttgxvar.c'.
4691
4692 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix return value
4693 of `point_cnt' if two bytes are read.
4694 Use a more vertical coding style.
4695 (ft_var_readpackeddeltas): Use FT_UInt for `delta_cnt' parameter.
4696 Use a more vertical coding style.
4697
Werner Lemberga374c9c2015-03-03 11:23:45 +010046982015-03-03 Werner Lemberg <wl@gnu.org>
4699
4700 [autofit] Fix Savannah bug #44241.
4701
4702 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Reject glyphs
4703 with less than 3 points.
4704
Werner Lemberga07029e2015-03-02 06:54:08 +010047052015-03-02 Werner Lemberg <wl@gnu.org>
4706
4707 Simplify `TYPEOF' macro.
4708
4709 No need for two arguments.
4710
4711 * include/config/ftconfig.h, builds/unix/ftconfig.in,
4712 builds/vms/ftconfig.h (TYPEOF): Updated.
4713
4714 * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
4715 src/autofit/afwarp.h (AF_WARPER_FLOOR): Updated.
4716
47172015-03-01 Werner Lemberg <wl@gnu.org>
Werner Lemberg4b9234b2015-02-25 06:31:43 +01004718
Werner Lemberg851e8152015-03-01 19:27:09 +01004719 Various compiler warning fixes for `make multi'.
4720
4721 * src/autofit/afcjk.c (af_cjk_hints_compute_blue_edges),
4722 src/autofit/aflatin.c (af_latin_hint_compute_blue_edges,
4723 af_latin_hint_edges), src/autofit/aflatin2.c
4724 (af_latin2_hints_compute_blue_edges, af_latin2_hint_edges): Declare
4725 as `static'.
4726
4727 * src/cache/ftccmap.c (FTC_CMAP_QUERY_HASH, FTC_CMAP_NODE_HASH):
4728 Removed. Unused.
4729 * src/cache/ftcimage.c: Include FT_INTERNAL_OBJECTS_H.
4730 * src/cache/ftcmanag.c (FTC_LRU_GET_MANAGER): Removed. Unused.
4731
4732 * src/cff/cf2intrp.c: Include `cf2intrp.h'.
4733 * src/cff/cffdrivr.c (PAIR_TAG): Removed. Unused.
4734
4735 * src/gzip/ftgzip.c (NO_DUMMY_DECL): Removed. Unused.
4736
4737 * src/psaux/afmparse.c (afm_parser_read_int): Declare as `static'.
4738
4739 * src/pshinter/pshalgo.c (STRONGER, PSH_ZONE_MIN, PSH_ZONE_MAX):
4740 Removed. Unused.
4741
4742 * src/raster/ftraster.c (Render_Glyph): Declare as `static'.
4743
4744 * src/sfnt/ttpost.c (load_format_20): Fix signedness warning.
4745
4746 * src/truetype/ttdriver.c (PAIR_TAG): Removed. Unused.
4747 * src/truetype/ttsubpix.c (is_member_of_family_class,
4748 is_member_of_style_class): Declare as `static'.
4749
4750 * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Declare
4751 as `static'.
4752 * src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): Declare as
4753 `static'.
4754 (T1_FIELD_COUNT): Removed. Unused.
4755 * src/type1/t1parse.h (T1_Done_Table): Removed. Unused.
4756
4757 * src/type42/t42parse.c (T1_Done_Table): Removed. Unused.
4758
47592015-02-25 Werner Lemberg <wl@gnu.org>
4760
Werner Lemberg04c22372015-02-25 11:20:20 +01004761 [psaux] Signedness fixes.
4762
4763 * include/internal/psaux.h, src/psaux/afmparse.c,
4764 src/psaux/afmparse.h, src/psaux/psconv.c, src/psaux/psobjs.c,
4765 src/psaux/t1cmap.c, src/psaux/t1decode.c: Apply.
4766
47672015-02-25 Werner Lemberg <wl@gnu.org>
4768
Werner Lembergd25ec162015-02-25 09:19:59 +01004769 [otvalid] Signedness fixes.
4770
4771 * src/otvalid/otvcommn.c, src/otvalid/otvgdef.c,
4772 src/otvalid/otvgpos.c, src/otvalid/otvgsub.c, src/otvalid/otvmath.c:
4773 Apply.
4774
47752015-02-25 Werner Lemberg <wl@gnu.org>
4776
Werner Lemberg5c9d9bf2015-02-25 08:13:40 +01004777 * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Signedness fix.
4778
47792015-02-25 Werner Lemberg <wl@gnu.org>
4780
Werner Lemberg83d41812015-02-25 08:10:58 +01004781 [lzw] Signedness fixes.
4782
4783 * src/lzw/ftzopen.c, src/lzw/ftzopen.h: Apply.
4784
47852015-02-25 Werner Lemberg <wl@gnu.org>
4786
Werner Lemberg17b62912015-02-25 07:53:09 +01004787 [gxvalid] Signedness fixes.
4788
4789 * src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c,
4790 src/gxvalid/gxvcommn.h, src/gxvalid/gxvjust.c,
4791 src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c,
4792 src/gxvalid/gxvmort1.c, src/gxvalid/gxvmort2.c,
4793 src/gxvalid/gxvmorx.c, src/gxvalid/gxvmorx1.c,
4794 src/gxvalid/gxvmorx2.c, src/gxvalid/gxvopbd.c,
4795 src/gxvalid/gxvprop.c, src/gxvalid/gxvtrak.c: Apply.
4796
47972015-02-25 Werner Lemberg <wl@gnu.org>
4798
Werner Lemberg24e4e962015-02-25 06:57:16 +01004799 [cache] Signedness fixes.
4800
4801 * src/cache/ftcbasic.c, src/cache/ftccmap.c, src/cache/ftcimage.c,
4802 src/cache/ftcmanag.c, src/cache/ftcsbits.c: Apply.
4803
48042015-02-25 Werner Lemberg <wl@gnu.org>
4805
Werner Lemberg559727d2015-02-25 06:55:00 +01004806 Change dimension fields in `FTC_ImageTypeRec' to unsigned type.
4807
4808 This doesn't break ABI.
4809
4810 * include/ftcache.h (FTC_ImageTypeRec): Use unsigned types for
4811 `width' and `height'.
4812
4813 * docs/CHANGES: Document it.
4814
48152015-02-25 Werner Lemberg <wl@gnu.org>
4816
Werner Lemberg4b9234b2015-02-25 06:31:43 +01004817 [cache] Don't use `labs'.
4818
4819 This is the only place in FreeType where this function was used.
4820
4821 * include/config/ftstdlib.h (ft_labs): Remove.
4822
4823 * src/cache/ftcimage.c (ftc_inode_weight): Replace `ft_labs' with
4824 `FT_ABS'.
4825
Werner Lemberg4d1f7af2015-02-23 07:04:36 +010048262015-02-23 Werner Lemberg <wl@gnu.org>
4827
Werner Lemberg3aaebe32015-02-23 08:20:27 +01004828 [cache] Replace `FT_PtrDist' with `FT_Offset'.
4829
4830 * src/cache/ftccache.h (FTC_NodeRec): `FT_Offset' (a.k.a. `size_t')
4831 is a better choice for `hash' to hold a pointer than `FT_PtrDist'
4832 (a.k.a. `ptrdiff_t'), especially since the latter is signed,
4833 causing zillions of signedness warnings. [Note that `hash' was of
Werner Lemberg17b62912015-02-25 07:53:09 +01004834 type `FT_UInt32' before the change to `FT_PtrDist'.]
Werner Lemberg3aaebe32015-02-23 08:20:27 +01004835 Update all users.
4836
4837 * src/cache/ftcbasic.c, src/cache/ftccache.c, src/cache/ftccmap.c,
4838 src/cache/ftcglyph.c, src/cache/ftcglyph.h: Updated.
4839
48402015-02-23 Werner Lemberg <wl@gnu.org>
4841
Werner Lemberg4d1f7af2015-02-23 07:04:36 +01004842 [smooth, raster] Re-enable standalone compilation.
4843
4844 * src/raster/ftraster.c (FT_RENDER_POOL_SIZE, FT_MAX)
4845 [_STANDALONE_]: Define macros.
4846
4847 * src/smooth/ftgrays.c (FT_RENDER_POOL_SIZE, FT_MAX, FT_ABS,
4848 FT_HYPOT) [_STANDALONE_]: Define macros.
4849
Werner Lemberg03ccfd02015-02-22 08:25:16 +010048502015-02-22 Werner Lemberg <wl@gnu.org>
4851
Werner Lembergcb13e712015-02-23 06:41:52 +01004852 [smooth] Signedness fixes.
4853
4854 * src/smooth/ftgrays.c, src/smooth/ftsmooth.c: Apply.
4855
48562015-02-22 Werner Lemberg <wl@gnu.org>
4857
Werner Lemberga974e9a2015-02-22 21:02:13 +01004858 * src/raster/ftraster.c: Use the file's typedefs everywhere.
4859
48602015-02-22 Werner Lemberg <wl@gnu.org>
4861
Werner Lembergb0ebcdc2015-02-22 20:42:49 +01004862 * src/sfnt/ttpost.c (load_format_20): Fix error tracing message.
4863
4864 Bug introduced 6 commits earlier.
4865
48662015-02-22 Werner Lemberg <wl@gnu.org>
4867
Werner Lemberg22b1d5c2015-02-22 20:41:03 +01004868 [pshinter] Fix thinko.
4869
4870 * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Correctly
4871 check `count'.
4872 Bug introduced two commits earlier.
4873
48742015-02-22 Werner Lemberg <wl@gnu.org>
4875
Werner Lembergca96fe02015-02-22 20:05:04 +01004876 [raster] Signedness fixes.
4877
4878 * src/raster/ftraster.c, src/raster/ftrend1.c: Apply.
4879
48802015-02-22 Werner Lemberg <wl@gnu.org>
4881
Werner Lemberg452066c2015-02-22 15:59:02 +01004882 [pshinter] Signedness fixes.
4883
4884 * src/pshinter/pshalgo.c, src/pshinter/pshglob.c,
4885 src/pshinter/pshrec.c: Apply.
4886
48872015-02-22 Werner Lemberg <wl@gnu.org>
4888
Werner Lemberg41c2ed82015-02-22 15:57:47 +01004889 [pshinter] Use macros for (unsigned) flags, not enumerations.
4890
4891 * src/pshinter/pshalgo.h (PSH_Hint_Flags): Replace with macros.
4892 Updated.
4893 * src/pshinter/pshrec.h (PS_Hint_Flags): Replace with macros.
4894
48952015-02-22 Werner Lemberg <wl@gnu.org>
4896
Werner Lemberg25c2f882015-02-22 15:54:31 +01004897 * src/pshinter/pshrec.c: Simplify.
4898 (ps_hints_open, ps_hints_stem): Remove switch statement.
4899
49002015-02-22 Werner Lemberg <wl@gnu.org>
4901
Werner Lemberg01f08422015-02-22 12:03:28 +01004902 [sfnt] Signedness fixes.
4903
4904 * src/sfnt/pngshim.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap.c,
4905 src/sfnt/ttkern.c, src/sfnt/ttload.c, src/sfnt/ttpost.c,
4906 src/sfnt/ttsbit.c: Apply.
4907 * src/sfnt/sfdriver.c: Apply.
4908 (sfnt_get_ps_name): Simplify.
4909
49102015-02-22 Werner Lemberg <wl@gnu.org>
4911
Werner Lemberg3c374c82015-02-22 09:16:53 +01004912 [bdf] Signedness fixes.
4913
4914 * src/bdf/bdf.h, src/bdf/bdfdrivr.c, src/bdf/bdfdrivr.h,
4915 src/bdf/bdflib.c: Apply.
4916
49172015-02-22 Werner Lemberg <wl@gnu.org>
4918
Werner Lembergb13945a2015-02-22 09:15:47 +01004919 * src/bdf/bdflib.c (_bdf_atous): New function.
4920 (_bdf_parse_glyphs, _bdf_parse_start): Use it.
4921
49222015-02-22 Werner Lemberg <wl@gnu.org>
4923
Werner Lemberg03ccfd02015-02-22 08:25:16 +01004924 [pcf] Signedness fixes.
4925
4926 * src/pcf/pcf.h, src/pcf/pcfdrivr.c: Apply.
4927 * src/pcf/pcfread.c: Apply.
4928 (pcf_get_encodings): Ignore invalid negative encoding offsets.
4929
Werner Lemberg633a7292015-02-21 07:02:01 +010049302015-02-21 Werner Lemberg <wl@gnu.org>
4931
Werner Lemberg3d7e53f2015-02-21 11:30:54 +01004932 * src/winfonts/winfnt.c: Signedness fixes.
4933
49342015-02-21 Werner Lemberg <wl@gnu.org>
4935
Werner Lemberg7b6b4172015-02-21 10:39:34 +01004936 [type42] Signedness fixes.
4937
4938 * src/type42/t42parse.c, src/type42/t42parse.h,
4939 src/type42/t42types.h: Apply.
4940
49412015-02-21 Werner Lemberg <wl@gnu.org>
4942
Werner Lemberg8bfffb42015-02-21 09:52:29 +01004943 [pfr] Signedness fixes.
4944
4945 * src/pfr/pfrdrivr.c, src/pfr/pfrgload.c, src/pfr/pfrload.c,
4946 src/pfr/pfrload.h, src/pfr/pfrobjs.c, src/pfr/pfrsbit.c,
4947 src/pfr/pfrtypes.h: Apply.
4948
49492015-02-21 Werner Lemberg <wl@gnu.org>
4950
Werner Lemberg633a7292015-02-21 07:02:01 +01004951 [cff] Minor signedness fixes related to last commit.
4952
4953 * src/cff/cf2ft.c, src/cff/cf2intrp.c, src/cff/cffgload.c: Apply.
4954
Werner Lemberg3a8d0532015-02-20 08:35:32 +010049552015-02-20 Werner Lemberg <wl@gnu.org>
4956
Werner Lembergc00b05f2015-02-20 20:42:55 +01004957 [cff] Thinkos in bias handling.
4958
4959 Only the final result is always positive.
4960
4961 Bug introduced three commits earlier.
4962
4963 * src/cff/cffgload.c, src/cff/cffgload.h: Apply.
4964
49652015-02-20 Werner Lemberg <wl@gnu.org>
4966
Werner Lemberg2bf03eb2015-02-20 20:14:11 +01004967 [cid] Fix signedness issues and emit some better error codes.
4968
4969 * src/cid/cidgload.c, src/cid/cidload.h, src/cid/cidobjs.c,
4970 src/cid/cidparse.h: Apply.
4971 * src/cid/cidload.c: Apply.
4972 (parse_fd_array): Reject negative values for number of dictionaries.
4973 * src/cid/cidparse.c: Apply.
4974 (cid_parser_new): Reject negative values for hex data length.
4975
49762015-02-20 Werner Lemberg <wl@gnu.org>
4977
Werner Lembergeb05bfb2015-02-20 08:37:35 +01004978 [cff] Signedness fixes for new engine.
4979
4980 * src/cff/cf2arrst.c, src/cff/cf2fixed.h, src/cff/cf2ft.c,
4981 src/cff/cf2ft.h, src/cff/cf2hints.c, src/cff/cf2intrp.c: Apply.
4982
49832015-02-20 Werner Lemberg <wl@gnu.org>
4984
Werner Lemberg3a8d0532015-02-20 08:35:32 +01004985 [cff] Signedness fixes for basic infrastructure and old engine.
4986
4987 * include/internal/pshints.h, src/cff/cffdrivr.c,
4988 src/cff/cffgload.c, src/cff/cffgload.h, src/cff/cffload.c,
4989 src/cff/cffobjs.c, src/cff/cffparse.c, src/pshinter/pshrec.c: Apply.
4990
Werner Lemberg81e5ff52015-02-19 09:46:48 +010049912015-02-19 Werner Lemberg <wl@gnu.org>
4992
Werner Lemberg3a1df3e2015-02-19 15:42:48 +01004993 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Ignore `countSizePairs'.
4994
4995 This is hard-coded to value 2 in `fvar' version 1.0 (and no newer
4996 version exists), but some fonts set it incorrectly.
4997
4998 Problem reported by Adam Twardoch <adam@fontlab.com>.
4999
50002015-02-19 Werner Lemberg <wl@gnu.org>
5001
Werner Lemberg93a884c2015-02-19 14:11:16 +01005002 [cff] Emit better error code for invalid private dict size.
5003
5004 * src/cff/cffparse.c (cff_parse_private_dict): Reject negative
5005 values for size and offset.
5006
50072015-02-19 Werner Lemberg <wl@gnu.org>
5008
Werner Lembergb57bb112015-02-19 10:44:18 +01005009 [autofit] Fix signedness issues.
5010
5011 * src/autofit/afangles.c, src/autofit/afcjk.c,
5012 src/autofit/afglobal.c, src/autofit/afhints.c,
5013 src/autofit/aflatin.c, src/autofit/aflatin2.c, src/autofit/afwarp.c,
5014 src/autofit/hbshim.c: Apply.
5015
50162015-02-19 Werner Lemberg <wl@gnu.org>
5017
Werner Lemberg81e5ff52015-02-19 09:46:48 +01005018 [autofit] Use macros for (unsigned) flags, not enumerations.
5019
5020 This harmonizes with other code in FreeType (and reduces the number
5021 of necessary casts to avoid compiler warnings).
5022
5023 * src/autofit/afblue.hin: Make flag macros unsigned.
5024 * src/autofit/afblue.h: Regenerated.
5025
5026 * src/autofit/afcjk.h: Replace flag enumeration with macros.
5027 * src/autofit/afcjk.c: Updated.
5028
5029 * src/autofit/afhints.h (AF_Flags, AF_Edge_Flags): Replace with
5030 macros.
5031 * src/autofit/afhints.c: Updated.
5032
5033 * src/autofit/aflatin.h: Replace flag enumerations with macros.
5034 * src/autofit/aflatin.c, src/autofit/aflatin2.c: Updated.
5035
5036 * src/autofit/aftypes.h (AF_ScalerFlags): Replace with macros.
5037
Werner Lemberg6a0ded72015-02-18 08:51:22 +010050382015-02-18 Werner Lemberg <wl@gnu.org>
5039
Werner Lemberg3b5f3322015-02-18 11:45:22 +01005040 [type1] Fix signedness issues.
5041
5042 * include/internal/psaux.h, include/internal/t1types.h,
5043 src/psaux/psobjs.c, src/psaux/psobjs.h, src/psaux/t1decode.c,
5044 src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1parse.c: Apply.
5045
50462015-02-18 Werner Lemberg <wl@gnu.org>
5047
Werner Lemberg272e3cd2015-02-18 11:38:46 +01005048 [psaux, type1] Fix minor AFM issues.
5049
5050 * include/internal/t1types.h (AFM_KernPairRec): Make indices
5051 unsigned.
5052 Update users.
5053 (AFM_FontInfoRec): Make element counters unsigned.
5054 Update users.
5055 * src/psaux/afmparse.h (AFM_ValueRec): Add union member for unsigned
5056 int.
5057
5058 * src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs):
5059 Reject negative values for number of kerning elements.
5060
5061 * src/type1/t1afm.c, src/tools/test_afm.c: Updated.
5062
50632015-02-18 Werner Lemberg <wl@gnu.org>
5064
Werner Lemberg6bd7d282015-02-18 09:22:06 +01005065 Don't use `FT_PtrDist' for lengths.
5066
5067 Use FT_UInt instead.
5068
5069 * include/internal/psaux.h (PS_Table_FuncsRec, PS_TableRec,
5070 T1_DecoderRec): Do it.
5071
5072 * include/internal/t1types.h (T1_FontRec): Ditto.
5073
5074 * src/cid/cidload.c (cid_parse_dict): Updated.
5075 * src/pfr/pfrload.c (pfr_extra_item_load_font_id): Ditto.
5076 * src/psaux/psobjs.c (ps_table_add), src/psaux/psobjs.h: Ditto.
5077 * src/type1/t1load.c (parse_blend_axis_types, parse_encoding,
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04005078 parse_charstrings, parse_dict): Ditto.
Werner Lemberg6bd7d282015-02-18 09:22:06 +01005079 * src/type42/t42parse.c (t42_parse_encoding, t42_parse_charstrings,
5080 t42_parse_dict): Ditto.
5081
50822015-02-18 Werner Lemberg <wl@gnu.org>
5083
Werner Lemberg6a0ded72015-02-18 08:51:22 +01005084 * src/type1/t1driver.c (t1_ps_get_font_value): Clean up.
5085 This handles negative values better, avoiding many casts.
5086
Werner Lemberg0a33a392015-02-17 08:03:05 +010050872015-02-17 Werner Lemberg <wl@gnu.org>
5088
Werner Lembergd3240c52015-02-17 20:30:36 +01005089 [base] Fix Savannah bug #44284.
5090
5091 * src/base/ftcalc.c (FT_MulFix): Typos.
5092
50932015-02-17 Werner Lemberg <wl@gnu.org>
5094
Werner Lemberg1f7a4e12015-02-17 10:17:56 +01005095 [truetype] Finish compiler warning fixes for signedness issues.
5096
5097 * src/truetype/ttgxvar.c, src/truetype/ttsubpix.c,
5098 src/truetype/ttsubpix.h: Apply.
5099
51002015-02-17 Werner Lemberg <wl@gnu.org>
5101
Werner Lemberg9daea2c2015-02-17 09:27:56 +01005102 * src/truetype/ttsubpix.c: Adding missing `static' keywords.
5103
51042015-02-17 Werner Lemberg <wl@gnu.org>
5105
Werner Lembergd9c3f152015-02-17 09:21:26 +01005106 [truetype] More signedness fixes.
5107
5108 * include/internal/tttypes.h, src/truetype/ttinterp.h,
5109 src/truetype/ttobjs.h, src/truetype/ttinterp.c,
5110 src/truetype/ttobjs.c: Apply.
5111
51122015-02-17 Werner Lemberg <wl@gnu.org>
5113
Werner Lemberg0a33a392015-02-17 08:03:05 +01005114 [truetype] Various signedness fixes.
5115
5116 * include/internal/ftgloadr.h, src/truetype/ttpload.c: Apply.
5117
5118 * src/truetype/ttgload.c: Apply.
5119 (TT_Get_VMetrics): Protect against invalid ascenders and descenders
5120 while constructing advance height.
5121
Werner Lemberg587351b2015-02-16 07:03:22 +010051222015-02-16 Werner Lemberg <wl@gnu.org>
5123
Werner Lemberg76abc752015-02-16 22:00:27 +01005124 [base] Finish compiler warning fixes for signedness issues.
5125
5126 * src/base/ftglyph.c, src/base/ftlcdfil.c, src/base/ftstroke.c:
5127 Apply.
5128
51292015-02-16 Werner Lemberg <wl@gnu.org>
5130
Werner Lemberg10aa8582015-02-16 20:12:54 +01005131 * include/tttables.h (TT_OS2): `fsType' must be FT_UShort.
5132
51332015-02-16 Werner Lemberg <wl@gnu.org>
5134
Werner Lemberg2e814fc2015-02-16 20:05:08 +01005135 More minor signedness warning fixes.
5136
5137 * src/base/ftbbox.c, src/base/ftbitmap.c, src/base/fttrigon.c,
5138 src/base/ftutil.c: Apply.
5139
51402015-02-16 Werner Lemberg <wl@gnu.org>
5141
Werner Lemberg82235d02015-02-16 19:35:16 +01005142 Next round of minor compiler warning fixes.
5143
5144 * include/internal/ftrfork.h (FT_RFork_Ref): Change `offset' member
5145 type to `FT_Long'.
5146 (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Add `static' keyword.
5147
Werner Lemberg3aaebe32015-02-23 08:20:27 +01005148 * include/internal/ftstream.h (FT_Stream_Pos): Return `FT_ULong'.
Werner Lemberg82235d02015-02-16 19:35:16 +01005149
5150 * src/base/ftoutln.c, src/base/ftrfork.c, src/base/ftstream.c:
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04005151 Signedness fixes.
Werner Lemberg82235d02015-02-16 19:35:16 +01005152
51532015-02-16 Werner Lemberg <wl@gnu.org>
5154
Werner Lemberg3cfa4d12015-02-16 17:59:06 +01005155 Various minor signedness fixes.
5156
5157 * include/ftadvanc.h, include/internal/ftobjs.h,
5158 src/base/ftgloadr.c, src/base/ftobjs.c: Apply.
5159
51602015-02-16 Werner Lemberg <wl@gnu.org>
5161
Werner Lemberg6f325c22015-02-16 11:31:32 +01005162 New `TYPEOF' macro.
5163
5164 This helps suppress signedness warnings, avoiding issues with
5165 implicit conversion changes.
5166
5167 * include/config/ftconfig.h, builds/unix/ftconfig.in,
5168 builds/vms/ftconfig.h (TYPEOF): Define.
5169
5170 * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
5171 src/autofit/afwarp.h (AF_WARPER_FLOOR): Use it.
5172
51732015-02-16 Werner Lemberg <wl@gnu.org>
5174
Werner Lemberg1f377f02015-02-16 08:37:09 +01005175 * src/base/ftsystem.c: Use casts in standard C function wrappers.
5176 (ft_alloc, ft_realloc, ft_ansi_stream_io, FT_Stream_Open): Do it.
5177
51782015-02-16 Werner Lemberg <wl@gnu.org>
5179
Werner Lemberg0814b802015-02-16 07:29:53 +01005180 Fix Savannah bug #44261.
5181
5182 * builds/unix/detect.mk (setup) [unix]: Set `CONFIG_SHELL' in the
5183 environment also while calling the configure script.
5184
51852015-02-16 Werner Lemberg <wl@gnu.org>
5186
Werner Lemberg587351b2015-02-16 07:03:22 +01005187 * include/internal/ftmemory.h: Add some `FT_Offset' casts.
5188 (FT_MEM_SET, FT_MEM_COPY, FT_MEM_MOVE, FT_ARRAY_ZERO, FT_ARRAY_COPY,
5189 FT_MEM_MOVE): Do it.
5190
Werner Lemberg6d7d6362015-02-15 12:30:42 +010051912015-02-15 Werner Lemberg <wl@gnu.org>
5192
Werner Lemberg48186b82015-02-16 06:37:36 +01005193 [base] Clean up signedness issues in `ftdbgmem.c'.
5194
5195 Also fix other minor issues.
5196
5197 * src/base/ftdbgmem.c (FT_MemTableRec): Replace all FT_ULong types
5198 with FT_Long for consistency.
5199 (ft_mem_primes): Change type to `FT_Int'.
5200 (ft_mem_closest_prime, ft_mem_table_set): Updated.
5201
5202 (ft_mem_debug_panic, ft_mem_debug_alloc, ft_mem_debug_free,
5203 ft_mem_debug_realloc): Use `static' keyword and fix signedness
5204 warnings where necessary.
5205
5206 (ft_mem_table_resize, ft_mem_table_new, ft_mem_table_destroy,
5207 ft_mem_table_get_nodep, ft_mem_debug_init, FT_DumpMemory): Fix types
5208 and add or remove casts to avoid signedness warnings.
5209
52102015-02-15 Werner Lemberg <wl@gnu.org>
5211
Werner Lemberg6d7d6362015-02-15 12:30:42 +01005212 [base] Clean up signedness in arithmetic functions.
5213
5214 This makes the code more readable and reduces compiler warnings.
5215
5216 * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_MulFix,
5217 FT_DivFix): Convert input parameters to unsigned, do the
5218 computation, then convert the result back to signed.
5219 (ft_corner_orientation): Fix casts.
5220
Werner Lemberg92359bd2015-02-07 09:47:23 +010052212015-02-07 Werner Lemberg <wl@gnu.org>
5222
5223 [sfnt] Fix Savannah bug #44184.
5224
5225 * src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir): No
5226 longer reject `htmx' and `vmtx' tables with invalid length but
5227 sanitize them.
5228
Jon Anderson416d8792015-02-06 10:16:45 +010052292015-02-06 Jon Anderson <jon@websupergoo.com>
5230
5231 [truetype] Fix regression in the incremental glyph loader.
5232
5233 * src/truetype/ttgload.c (load_truetype_glyph): For incremental
5234 fonts, the glyph index may be greater than the number of glyphs
5235 indicated, so guard the check with a preprocessor conditional.
5236
Werner Lembergb6cb4992015-02-06 08:46:06 +010052372015-02-06 Werner Lemberg <wl@gnu.org>
5238
5239 [autofit] Fix potential memory leak.
5240
5241 While this doesn't show up with FreeType, exactly the same code
5242 leaks with ttfautohint's modified auto-hinter code (which gets used
5243 in a slightly different way).
5244
5245 It certainly doesn't harm since it is similar to already existing
5246 checks in the code for embedded arrays.
5247
5248 * src/autofit/afhints.c (af_glyph_hints_reload): Set `max_contours'
5249 and `max_points' for all cases.
5250
Werner Lemberg19146a52015-01-31 11:01:33 +010052512015-01-31 Werner Lemberg <wl@gnu.org>
5252
5253 [autofit] Add support for Thai script.
5254
5255 Thanks to Ben Mitchell <ben@rosettatype.com> for guidance with blue
5256 zone characters!
5257
5258 * src/autofit/afblue.dat: Add blue zone data for Thai.
5259
5260 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
5261
5262 * src/autofit/afscript.h: Add Thai standard characters.
5263
5264 * src/autofit/afranges.c: Add Thai data.
5265
5266 * src/autofit/afstyles.h: Add Thai data.
5267
Behdad Esfahbod264b5e42015-01-23 21:23:55 +010052682015-01-23 Behdad Esfahbod <behdad@behdad.org>
5269
5270 [raster] Handle `FT_RASTER_FLAG_AA' correctly.
5271
5272 This fixes a breakage caused by the commit `[raster] Remove
5273 5-level gray AA mode from monochrome rasterizer.'.
5274
Werner Lembergd2c531e2015-01-23 22:37:42 +01005275 Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de>.
Behdad Esfahbod264b5e42015-01-23 21:23:55 +01005276
5277 * src/raster/ftraster.c (ft_black_render): Handle
5278 `FT_RASTER_FLAG_AA'.
5279
5280 * src/raster/ftrend1.c (ft_raster1_render): Remove gray AA mode
5281 remnants.
5282
Werner Lemberg79a5ac62015-01-18 07:30:04 +010052832015-01-18 Werner Lemberg <wl@gnu.org>
5284
5285 * src/base/ftobjs.c (FT_New_Library): Fix compiler warning.
5286
Chris Liddell942aa5f2015-01-18 07:29:48 +010052872015-01-18 Chris Liddell <chris.liddell@artifex.com>
5288
5289 [raster] Fix Savannah bug #44022.
5290
5291 Add fallback for glyphs with degenerate bounding boxes.
5292
5293 If a glyph has only one very narrow feature, the bbox can end up
5294 with either the width or height of the bbox being 0, in which case
5295 no raster memory is allocated and no attempt is made to render the
5296 glyph. This is less than ideal when the drop-out compensation in
5297 the rendering code would actually result in the glyph being
5298 rendered.
5299
5300 This problem can be observed with the `I' glyph (gid 47) in the
5301 Autodesk RomanS TrueType font.
5302
5303 * src/raster/ftrend1.c (ft_raster1_render): Add a fallback if either
5304 dimension is zero to explicitly round up/down (instead of simply
5305 round).
5306
Werner Lemberg50be00d2015-01-17 20:38:31 +010053072015-01-17 Werner Lemberg <wl@gnu.org>
5308
5309 Add some tools to handle yearly copyright notice updates.
5310
5311 We are now following the GNU guidelines: A new release automatically
5312 means that the copyright year of all affected files gets updated; it
5313 is no longer used to track years of modification changes.
5314
5315 * src/tools/update-copyright-year: New Perl script.
5316 * src/tools/update-copyright: New shell script that calls
5317 `update-copyright-year' on all files.
5318 * src/tools/no-copyright: Exceptions that should not be handled by
5319 `update-copyright'
5320
Werner Lemberg4eff8542015-01-14 20:06:19 +010053212015-01-14 Werner Lemberg <wl@gnu.org>
5322
5323 * docs/CHANGES: Updated, using a description from Behdad.
5324
Behdad Esfahbod3f9b3d82015-01-14 15:48:12 +010053252015-01-14 Behdad Esfahbod <behdad@behdad.org>
5326
Behdad Esfahbod48c86622015-01-14 19:38:36 +01005327 * src/autofit/afmodule.c (af_autofitter_done): Fix compiler warning.
5328
53292015-01-14 Behdad Esfahbod <behdad@behdad.org>
5330
Behdad Esfahbod56ddafa2015-01-14 19:36:02 +01005331 [autofit] Add embedded array of segments and edges.
5332
5333 Avoids multiple mallocs per typical glyphs.
5334
5335 With this and recent changes to avoid mallocs, the thread-safe
5336 stack-based loader is now as fast as the previous model that had one
5337 cached singleton.
5338
5339 * src/autofit/afhints.h (AF_SEGMENTS_EMBEDDED, AF_EDGES_EMBEDDED):
5340 New macros.
5341 (AF_AxisHintsRec): Add two arrays for segments and edges.
5342
5343 * src/autofit/afhints.c (af_axis_hints_new_segment): Only allocate
5344 data if number of segments exceeds given threshold value.
5345 (af_axis_hints_new_edge): Only allocate data if number of edges
5346 exceeds given threshold value.
5347 (af_glyph_hints_done): Updated.
5348
53492015-01-14 Behdad Esfahbod <behdad@behdad.org>
5350
Behdad Esfahbod6f16b102015-01-14 19:26:49 +01005351 [autofit] Add embedded arrays for points and contours.
5352
5353 This avoids at least two malloc calls for typical glyphs.
5354
5355 * src/autofit/afhints.h (AF_POINTS_EMBEDDED, AF_CONTOURS_EMBEDDED):
5356 New macros.
5357 (AF_GlyphHintsRec): Add two arrays for contours and points.
5358
5359 * src/autofit/afhints.c (af_glyph_hints_init, af_glyph_hints_done):
5360 Updated.
5361 (af_glyph_hints_reload): Only allocate data if number of contours or
5362 points exceeds given threshold values.
5363
53642015-01-14 Behdad Esfahbod <behdad@behdad.org>
5365
Behdad Esfahbodc2733652015-01-14 19:16:12 +01005366 [autofit] Allocate hints object on the stack.
5367
5368 This avoids one malloc per load.
5369
5370 * src/autofit/afloader.h (AF_LoaderRec): Change type of `hints' to
5371 `AF_GlyphHints'.
5372 Update prototype.
5373
5374 * src/autofit/afloader.c (af_loader_init): Use `AF_GlyphHints'
5375 parameter instead of `FT_Memory'.
5376 (af_loader_done): Directly reset `load_hints'.
5377 (af_loader_load_g): Updated.
5378
5379 * src/autofit/afmodule.c (af_autofitter_load_glyph): Use local
5380 `hints' object.
5381
53822015-01-14 Behdad Esfahbod <behdad@behdad.org>
5383
Behdad Esfahboda4117fb2015-01-14 19:07:54 +01005384 [autofit] Reuse slot glyph loader.
5385
5386 No need to create a new glyph loader; we can reuse the one from
5387 `slot->internal->loader'. It's hard to tell why it was written that
5388 way originally, but new code looks sound and correct to me, and
5389 avoids lots of allocations.
5390
5391 * src/autofit/afloader.c (af_loader_init): Change return type to
5392 `void'.
5393 Don't call `FT_GlyphLoader_New'.
5394 (af_loader_reset): Don't call `FT_GlyphLoader_Rewind'.
5395 (af_loader_load_g): Update code to use `internal->loader', which
5396 doesn't need copying of data.
5397
5398 * src/autofit/afloader.h (AF_LoaderRec): Remove `gloader' member.
5399 Update prototype.
5400
5401 * src/autofit/afmodule.c (af_autofitter_load_glyph): Updated.
5402
54032015-01-14 Behdad Esfahbod <behdad@behdad.org>
5404
Behdad Esfahbodae6699f2015-01-14 18:55:39 +01005405 [autofit] Remove (unused) support for composite glyphs.
5406
5407 We never have to deal with composite glyphs in the autohinter, as
5408 those will be loaded into FORMAT_OUTLINE by the recursed
5409 `FT_Load_Glyph' function.
5410
5411 In the rare cases that FT_LOAD_NO_RECURSE is set, it will imply
5412 FT_LOAD_NO_SCALE as per `FT_Load_Glyph', which then implies
5413 FT_LOAD_NO_HINTING:
5414
5415 /* resolve load flags dependencies */
5416
5417 if ( load_flags & FT_LOAD_NO_RECURSE )
5418 load_flags |= FT_LOAD_NO_SCALE |
5419 FT_LOAD_IGNORE_TRANSFORM;
5420
5421 if ( load_flags & FT_LOAD_NO_SCALE )
5422 {
5423 load_flags |= FT_LOAD_NO_HINTING |
5424 FT_LOAD_NO_BITMAP;
5425
5426 load_flags &= ~FT_LOAD_RENDER;
5427 }
5428
5429 and as such the auto-hinter is never called. Thus, the recursion in
5430 `af_loader_load_g' never actually happens. So remove the depth
5431 counter as well.
5432
5433 * src/autofit/afloader.c (af_loader_load_g): Remove `depth'
5434 parameter.
5435 <FT_GLYPH_FORMAT_COMPOSITE>: Remove associated code.
5436 (af_loader_load_glyph): Updated.
5437
54382015-01-14 Behdad Esfahbod <behdad@behdad.org>
5439
Behdad Esfahbodc242fe42015-01-14 18:48:14 +01005440 [raster] Fix uninitialized memory access.
5441
5442 Apparently `ras.cProfile' might be uninitialized. This will be the
5443 case if `ras.top == ras.cProfile->offset', as can be seen in
5444 `End_Profile'. The overshoot code introduced in a change `Fix B/W
5445 rasterization of subglyphs with different drop-out modes.' (from
5446 2009-06-18) violated this, accessing `ras.cProfile->flags'
5447 unconditionally just before calling `End_Profile' (which then
5448 detected that `cProfile' is uninitialized and didn't touch it).
5449
5450 This was harmless, and was not detected by valgrind before because
5451 the objects were allocated on the `raster_pool', which was always
5452 initialized. With recent change to allocate raster buffers on the
5453 stack, valgrind now reported this invalid access.
5454
5455 * src/raster/ftraster.c (Convert_Glyph): Don't access an
5456 uninitialized `cProfile'.
5457
54582015-01-14 Behdad Esfahbod <behdad@behdad.org>
5459
Behdad Esfahbodb2ba6862015-01-14 18:43:13 +01005460 [smooth] Fix uninitialized memory access.
5461
5462 Looks like `ras.span_y' could always be used without initialization.
5463 This was never detected by valgrind before because the library-wide
5464 `raster_pool' was used for the worker object and `raster_pool' was
5465 originally zero'ed. But subsequent reuses of it were using `span_y'
5466 uninitialized. With the recent change to not use `render_pool' and
5467 allocate worker and buffer on the stack, valgrind now detects this
5468 uninitialized access.
5469
5470 * src/smooth/ftgrays.c (gray_raster_render): Initialize
5471 `ras.span_y'.
5472
54732015-01-14 Behdad Esfahbod <behdad@behdad.org>
5474
Behdad Esfahbod603292d2015-01-14 18:35:56 +01005475 [base] Don't initialize unused `driver->glyph_loader'.
5476
5477 * src/base/ftobjs.c (Destroy_Driver): Don't call
5478 `FT_GlyphLoader_Done'.
5479 (FT_Add_Module): Don't call `FT_GlyphLoader_New'.
5480
54812015-01-14 Behdad Esfahbod <behdad@behdad.org>
5482
Behdad Esfahbod51634252015-01-14 18:30:59 +01005483 [base] Don't allocate `library->raster_pool' anymore.
5484
5485 It's unused after the following commits:
5486
5487 [raster] Allocate render pool for mono rasterizer on the stack.
5488 [raster] Remove 5-level gray AA mode from monochrome rasterizer.
5489
5490 The value of FT_RENDER_POOL_SIZE still serves the purpose it used to
5491 serve, which is, to adjust the pool size. But the pool is now
5492 allocated on the stack on demand.
5493
5494 * src/base/ftobjs.c (FT_New_Library, FT_Done_Library): Implement.
5495
54962015-01-14 Behdad Esfahbod <behdad@behdad.org>
5497
Behdad Esfahbod6dfdaf42015-01-14 18:21:13 +01005498 [base] Do not reorder library->renderers upon use.
5499
5500 Instead of keeping `library->renderers' in a MRU order, just leave
5501 it as-is. The MRU machinery wasn't thread-safe.
5502
5503 With this patch, rasterizing glyphs from different faces from
5504 different threads doesn't fail choosing rasterizer
5505 (FT_Err_Cannot_Render_Glyph).
5506
5507 Easiest to see that crash was to add a `printf' (or otherwise let
5508 thread yield in FT_Throw with debugging enabled).
5509
5510 * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c
5511 (FT_Outline_Render): Don't call `FT_Set_Renderer'.
5512
55132015-01-14 Behdad Esfahbod <behdad@behdad.org>
5514
Behdad Esfahboda773c302015-01-14 18:16:20 +01005515 [raster] Allocate render pool for mono rasterizer on the stack.
5516
5517 Instead of using the `render_pool' member of `FT_Library' that is
5518 provided down to the rasterizer, completely ignore that and allocate
5519 needed objects on the stack instead.
5520
5521 With this patch, rasterizing glyphs from different faces from
5522 different threads doesn't crash in the monochrome rasterizer.
5523
5524 * src/raster/ftraster.c (black_TRaster): Remove `buffer',
5525 `buffer_size', and `worker' members.
5526
5527 (ft_black_render): Create `buffer' locally.
5528 (ft_black_reset): Updated.
5529
55302015-01-14 Behdad Esfahbod <behdad@behdad.org>
5531
Behdad Esfahbod8dc86352015-01-14 18:06:22 +01005532 [raster] Remove 5-level gray AA mode from monochrome rasterizer.
5533
5534 It was off by default and couldn't be turned on at runtime. And the
5535 smooth rasterizer superceded it over ten years ago. No point in
5536 keeping. Comments suggested that it was there for compatibility
5537 with FreeType 1.
5538
5539 550 lines down.
5540
5541 * src/raster/ftraster.c (FT_RASTER_OPTION_ANTI_ALIASING,
5542 RASTER_GRAY_LINES): Remove macros and all associated code.
5543
5544 (black_TWorker): Remove `gray_min_x' and `gray_max_x'.
5545 (black_TRaster): Remove `grays' and `gray_width'.
5546
5547 (Vertical_Sweep_Init, Vertical_Sweep_Span, Vertical_Sweep_Drop,
5548 ft_black_render): Updated.
5549
5550 * src/raster/ftrend1.c (ft_raster1_render): Simplify code.
5551 (ft_raster5_renderer_class): Removed.
5552
55532015-01-14 Behdad Esfahbod <behdad@behdad.org>
5554
Behdad Esfahbod747ae2c2015-01-14 17:54:26 +01005555 [smooth] Allocate render pool for smooth rasterizer on the stack.
5556
5557 Instead of using the `render_pool' member of `FT_Library' that is
5558 provided down to the rasterizer, completely ignore that and allocate
5559 needed objects on the stack instead.
5560
5561 With this patch, rasterizing glyphs from different faces from
5562 different threads doesn't crash in the smooth rasterizer.
5563
5564 Bugs:
5565
5566 https://bugzilla.redhat.com/show_bug.cgi?id=678397
5567 https://bugzilla.redhat.com/show_bug.cgi?id=1004315
5568 https://bugzilla.redhat.com/show_bug.cgi?id=1165471
5569 https://bugs.freedesktop.org/show_bug.cgi?id=69034
5570
5571 * src/smooth/ftgrays.c (gray_TRaster): Remove `buffer',
5572 `buffer_size', `band_size', and `worker' members.
5573
5574 (gray_raster_render): Create `buffer', `buffer_size', and
5575 `band_size' locally.
5576 (gray_raster_reset): Updated.
5577
55782015-01-14 Behdad Esfahbod <behdad@behdad.org>
5579
Behdad Esfahbod531d4632015-01-14 17:46:55 +01005580 [truetype] Allocate TT_ExecContext in TT_Size instead of TT_Driver.
5581
5582 Previously the code had stipulation for using a per-TT_Size exec
5583 context if `size->debug' was true. But there was no way that
5584 `size->debug' could *ever* be true. As such, the code was always
5585 using the singleton `TT_ExecContext' that was stored in `TT_Driver'.
5586 This was, clearly, not threadsafe.
5587
5588 With this patch, loading glyphs from different faces from different
5589 threads doesn't crash in the bytecode loader code.
5590
5591 * src/truetype/ttobjs.h (TT_SizeRec): Remove `debug' member.
5592 (TT_DriverRec): Remove `context' member.
5593
5594 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Remove
5595 `TT_ExecContext' code related to a global `TT_Driver' object.
5596
5597 (tt_driver_done): Don't remove `TT_ExecContext' object here but ...
5598 (tt_size_done_bytecode): ... here.
5599
5600 (tt_driver_init): Don't create `TT_ExecContext' object here but ...
5601 (tt_size_init_bytecode): ... here, only on demand.
5602
5603 * src/truetype/ttinterp.c (TT_Run_Context): Remove defunct debug
5604 code.
5605 (TT_New_Context): Remove `TT_ExecContext' code related to a global
5606 `TT_Driver' object.
5607
5608 * src/truetype/ttinterp.h: Updated.
5609
5610 * src/truetype/ttgload.c (TT_Hint_Glyph, tt_loader_init): Updated.
5611
56122015-01-14 Behdad Esfahbod <behdad@behdad.org>
5613
Behdad Esfahbod89bc8d42015-01-14 16:01:19 +01005614 [autofit] Allocate AF_Loader on the stack instead of AF_Module.
5615
5616 Stop sharing a global `AF_Loader'. Allocate one on the stack during
5617 glyph load.
5618
5619 Right now this results in about 25% slowdown, to be fixed in a
5620 following commit.
5621
5622 With this patch loading glyphs from different faces from different
5623 threads doesn't immediately crash in the autohinting loader code.
5624
5625 Bugs:
5626
5627 https://bugzilla.redhat.com/show_bug.cgi?id=1164941
5628
5629 * src/autofit/afloader.c (af_loader_init): Pass
5630 `AF_Loader' and `FT_Memory' instead of `AF_Module' as arguments.
5631 (af_loader_reset, af_loader_load_glyph): Also pass `loader' as
5632 argument.
5633 (af_loader_done): Use `AF_Loader' instead of `AF_Module' as
5634 argument.
5635
5636 * src/autofit/afmodule.c (af_autofitter_init): Don't call
5637 `af_loader_init'.
5638 (af_autofitter_done): Don't call `af_loader_done'.
5639 (af_autofitter_load_glyph): Use a local `AF_Loader' object.
5640
5641 * src/autofit/afloader.h: Include `afmodule.h'.
5642 Update prototypes.
5643 Move typedef for `AF_Module' to...
5644
5645 * src/autofit/afmodule.h: ... this place.
5646 No longer include `afloader.h'.
5647
56482015-01-14 Behdad Esfahbod <behdad@behdad.org>
5649
Behdad Esfahbod3f9b3d82015-01-14 15:48:12 +01005650 * src/type42/t42objs.h (T42_DriverRec): Remove unused member.
5651
Werner Lemberg36d03c92015-01-12 11:26:30 +010056522015-01-12 Werner Lemberg <wl@gnu.org>
5653
5654 Fix Savannah bug #43976.
5655
5656 Assure that FreeType's internal include directories are found before
5657 `CPPFLAGS' (which might be set by the user in the environment), and
5658 `CPPFLAGS' before `CFLAGS'.
5659
5660 * builds/freetype.mk (FT_CFLAGS): Don't add `INCLUDE_FLAGS'.
5661 (FT_COMPILE): Make this a special variable for compiling only the
5662 files handled in `freetype.mk'.
5663 (.c.$O): Removed, unused.
5664
5665 * src/*/rules.mk (*_COMPILE): Fix order of include directories.
5666
Werner Lembergd03a67a2015-01-11 08:39:14 +010056672015-01-11 Werner Lemberg <wl@gnu.org>
5668
Alexei Podtelezhnikovc6d99a42016-04-08 00:05:50 -04005669 [truetype] Prettifying.
Werner Lemberg95b57052015-01-11 09:50:49 +01005670
5671 * src/truetype/ttinterp.c (project, dualproj, fast_project,
5672 fast_dualproj): Rename to...
5673 (PROJECT, DUALPROJ, FAST_PROJECT, FAST_DUALPROJ): ... this.
5674
56752015-01-11 Werner Lemberg <wl@gnu.org>
5676
Werner Lembergea173c02015-01-11 08:58:54 +01005677 * src/truetype/ttinterp.c (Ins_JROT, Ins_JROF): Simplify.
5678
5679 Based on a patch from Behdad.
5680
56812015-01-11 Werner Lemberg <wl@gnu.org>
5682
Werner Lemberg628578c2015-01-11 08:53:31 +01005683 * src/truetype/ttinterp.c (Ins_SxVTL): Simplify function call.
5684
56852015-01-11 Werner Lemberg <wl@gnu.org>
5686
Werner Lemberg08e79092015-01-11 08:45:50 +01005687 * src/truetype/ttinterp.c (Normalize): Remove unused argument.
5688
56892015-01-11 Werner Lemberg <wl@gnu.org>
5690
Werner Lembergd03a67a2015-01-11 08:39:14 +01005691 [truetype] More macro expansions.
5692
Werner Lemberg4aaadf42015-01-11 08:42:28 +01005693 * src/truetype/ttinterp.c (FT_UNUSED_EXEC): Remove macro by
5694 expansion.
5695
56962015-01-11 Werner Lemberg <wl@gnu.org>
5697
5698 [truetype] More macro expansions.
5699
Werner Lembergd03a67a2015-01-11 08:39:14 +01005700 * src/truetype/ttinterp.c (INS_ARG): Remove macro by expansion,
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04005701 adjusting function calls where necessary.
Werner Lembergd03a67a2015-01-11 08:39:14 +01005702 (FT_UNUSED_ARG): Removed, no longer needed.
5703
Werner Lemberg1b4d68c2015-01-10 19:56:28 +010057042015-01-10 Werner Lemberg <wl@gnu.org>
5705
Werner Lembergeb341362015-01-11 00:23:27 +01005706 [truetype] More macro expansions.
5707
5708 Based on a patch from Behdad.
5709
5710 * src/truetype/ttinterp.c (DO_*): Expand macros into corresponding
5711 `Ins_*' functions.
5712 (TT_RunIns): Replace `DO_*' macros with `Ins_*' function calls.
5713 (ARRAY_BOUND_ERROR): Remove second definition, which is no longer
5714 needed.
5715 (Ins_SVTCA, Ins_SPVTCA, Ins_SFVTCA): Replaced with...
5716 (Ins_SxyTCA): New function.
5717
57182015-01-10 Werner Lemberg <wl@gnu.org>
5719
Werner Lemberg01be1302015-01-10 23:05:37 +01005720 [truetype] Remove TT_CONFIG_OPTION_INTERPRETER_SWITCH.
5721
5722 Behdad suggested this code simplification, and nobody objected...
5723
5724 * include/config/ftoption.h, devel/ftoption.h
5725 (TT_CONFIG_OPTION_INTERPRETER_SWITCH): Remove.
5726
5727 * src/truetype/ttinterp.c [TT_CONFIG_OPTION_INTERPRETER_SWITCH]:
5728 Remove related code.
5729 (ARRAY_BOUND_ERROR): Use do-while loop.
5730
57312015-01-10 Werner Lemberg <wl@gnu.org>
5732
Werner Lembergfae0c812015-01-10 20:23:10 +01005733 [truetype] More macro expansions.
5734
Werner Lemberg6cc1f122015-01-10 21:56:59 +01005735 * src/truetype/ttinterp.c, src/truetype/ttinterp.h (EXEC_ARG_,
5736 EXEC_ARG): Remove by replacing with expansion.
5737
57382015-01-10 Werner Lemberg <wl@gnu.org>
5739
5740 [truetype] More macro expansions.
5741
Werner Lemberg24681452015-01-10 21:53:48 +01005742 Based on a patch from Behdad.
5743
5744 * src/truetype/ttinterp.c (SKIP_Code, GET_ShortIns, NORMalize,
5745 SET_SuperRound, ROUND_None, INS_Goto_CodeRange, CUR_Func_move,
5746 CUR_Func_move_orig, CUR_Func_round, CUR_Func_cur_ppem,
5747 CUR_Func_read_cvt, CUR_Func_write_cvt, CUR_Func_move_cvt,
5748 CURRENT_Ratio, INS_SxVTL, COMPUTE_Funcs, COMPUTE_Round,
5749 COMPUTE_Point_Displacement, MOVE_Zp2_Point): Remove by replacing
5750 with expansion.
5751
5752 (Cur_Func_project, CUR_Func_dualproj, CUR_fast_project,
5753 CUR_fast_dualproj): Replace with macros `project', `dualproj',
5754 `fast_project', `fast_dualproj'.
5755
57562015-01-10 Werner Lemberg <wl@gnu.org>
5757
5758 [truetype] More macro expansions.
5759
Werner Lembergfae0c812015-01-10 20:23:10 +01005760 * src/truetype/ttinterp.c (EXEC_OP_, EXEC_OP): Remove by replacing
5761 with expansion.
5762
57632015-01-10 Werner Lemberg <wl@gnu.org>
5764
Werner Lemberg5a752f32015-01-10 20:08:35 +01005765 [truetype] Remove code for static TrueType interpreter.
5766
5767 This is a follow-up patch.
5768
5769 * src/truetype/ttinterp.c, src/truetype/ttinterp.h
5770 [TT_CONFIG_OPTION_STATIC_INTERPRETER,
5771 TT_CONFIG_OPTION_STATIC_RASTER]: Remove macros and related code.
5772
57732015-01-10 Werner Lemberg <wl@gnu.org>
5774
Werner Lemberg1b4d68c2015-01-10 19:56:28 +01005775 * src/truetype/ttinterp.c (CUR): Remove by replacing with expansion.
5776
5777 This starts a series of patches that simplifies the code of the
5778 bytecode interpreter.
5779
Werner Lembergf6aa0892013-05-10 07:58:47 +02005780
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00005781----------------------------------------------------------------------------
5782
Werner Lemberg9adeab62016-01-13 11:54:10 +01005783Copyright 2015-2016 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00005784David Turner, Robert Wilhelm, and Werner Lemberg.
5785
5786This file is part of the FreeType project, and may only be used, modified,
5787and distributed under the terms of the FreeType project license,
5788LICENSE.TXT. By continuing to use, modify, or distribute this file you
5789indicate that you have read the license and understand and accept it
5790fully.
5791
5792
5793Local Variables:
5794version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00005795coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00005796End: