blob: 8018cfc1e8ceac4ccbb6c6de2f48365c22f99ac4 [file] [log] [blame]
Nikolaus Waxweiler86eb43a2016-07-16 06:37:57 +020012016-07-16 Nikolaus Waxweiler <madigens@gmail.com>
2
3 * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
4
5 Problem reported by Hin-Tak Leung.
6
Werner Lemberg894c0222016-07-15 10:23:11 +020072016-07-15 Werner Lemberg <wl@gnu.org>
8
Werner Lemberg1831e6f2016-07-15 10:35:32 +02009 [autofit] Update and improve segment and edge tracing.
10
11 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
12 `delta' also.
13 Don't show first point of segment as a replacement for `pos'; this
14 is (a) misleading, since the difference to `pos' can be almost
15 arbitrarily large in corner cases, and (b) it is better to have all
16 segment data in font units instead of a single value given in output
17 space coordinates.
18 Improve layout.
19 (af_glyph_hints_dump_edges): Show px->units and units->px conversion
20 values for convenience.
21 Improve layout.
22
232016-07-15 Werner Lemberg <wl@gnu.org>
24
Werner Lemberg894c0222016-07-15 10:23:11 +020025 [autofit] For edges, reject segments wider than 1px (#41334).
26
27 * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
28
29 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
30 `delta'.
31 (af_latin_hints_compute_edges): Reject segments with a delta larger
32 than 0.5px.
33
Werner Lemberg631e2182016-07-14 06:25:05 +0200342016-07-14 Werner Lemberg <wl@gnu.org>
35
Werner Lembergff655432016-07-14 15:01:55 +020036 * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
37
382016-07-14 Werner Lemberg <wl@gnu.org>
39
Werner Lembergee3f36f2016-07-14 10:25:20 +020040 [sfnt] Fix `face_index' value in `FT_Face' for named instances.
41
42 * src/sfnt/sfobjc.s (sfnt_init_face): Don't strip off higher 16bits.
43
442016-07-14 Werner Lemberg <wl@gnu.org>
45
Werner Lemberg631e2182016-07-14 06:25:05 +020046 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
47
Behdad Esfahbod0f9ddf22016-07-14 06:08:39 +0200482016-07-14 Behdad Esfahbod <behdad@behdad.org>
49
50 [truetype] Fix gxvar delta interpolation.
51
52 The coordinates of the base font should be used for interpolation
53 purposes, NOT the current points (i.e., the result of accumulation
54 of previous deltas).
55
56 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
57 `points_org' before looping over all tuples.
58
Werner Lembergf9b18712016-07-12 06:18:49 +0200592016-07-12 Werner Lemberg <wl@gnu.org>
60
61 * Version 2.6.5 released.
62 =========================
63
64
65 Tag sources with `VER-2-6-5'.
66
Werner Lemberg42611032016-07-14 06:03:52 +020067 This commit immediately follows `[mac] Fix ftexport.sym target in
68 Jamfile.' on a separate branch, which was then merged with master
69 after the release.
70
Werner Lembergf9b18712016-07-12 06:18:49 +020071 * include/freetype/config/ftoption.h
72 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Comment out.
73
74 * docs/VERSION.TXT: Add entry for version 2.6.5.
75
76 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
77 builds/windows/vc2005/index.html,
78 builds/windows/vc2008/freetype.vcproj,
79 builds/windows/vc2008/index.html,
80 builds/windows/vc2010/freetype.vcxproj,
81 builds/windows/vc2010/index.html,
82 builds/windows/visualc/freetype.dsp,
83 builds/windows/visualc/freetype.vcproj,
84 builds/windows/visualc/index.html,
85 builds/windows/visualce/freetype.dsp,
86 builds/windows/visualce/freetype.vcproj,
87 builds/windows/visualce/index.html,
88 builds/wince/vc2005-ce/freetype.vcproj,
89 builds/wince/vc2005-ce/index.html,
90 builds/wince/vc2008-ce/freetype.vcproj,
91 builds/wince/vc2008-ce/index.html: s/2.6.4/2.6.5/, s/264/265/.
92
93 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
94
95 * builds/unix/configure.raw (version_info): Set to 18:5:12.
96 * CMakeLists.txt (VERSION_PATCH): Set to 5.
97
98 * docs/CHANGES: Updated.
99
Werner Lembergc3e83b42016-07-11 05:56:26 +02001002016-07-11 Werner Lemberg <wl@gnu.org>
101
Werner Lemberg605946a2016-07-11 16:14:36 +0200102 Conditionally compile environment support.
103
104 * include/freetype/internal/ftobjs.h, src/autofit/afmodule.c,
105 src/base/ftobjs.c, src/cff/cffdrivr.c, src/truetype/ttdriver.c:
106 Decorate with `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES' where
107 necessary.
108
1092016-07-11 Werner Lemberg <wl@gnu.org>
110
Werner Lemberg8f8ae8c2016-07-11 15:11:38 +0200111 Handle properties in `FREETYPE_PROPERTIES' environment variable.
112
113 This commit covers the most important one.
114
115 * src/autofit/afmodule.c (af_property_set): Handle `warping',
116 `darkening-parameters', and `no-stem-darkening'.
117
118 * src/cff/cffdrivr.c (cff_property_set): Handle
119 `darkening-parameters', `hinting-engine', and `no-stem-darkening'.
120
121 * src/truetype/ttdriver.c (tt_property_set): Handle
122 `interpreter-version'.
123
1242016-07-11 Werner Lemberg <wl@gnu.org>
125
Werner Lembergc3e83b42016-07-11 05:56:26 +0200126 Replace calls to `atol' with `strtol'.
127
128 We later on need strtol's `endptr' feature.
129
130 * include/freetype/config/ftstdlib.h (ft_atol): Replace with...
131 (ft_strtol): ... this.
132
133 * src/base/ftdbgmem.c (ft_mem_debug_init): Updated.
134 * src/cid/cidparse.c (cid_parser_new): Ditto.
135 * src/type42/t42drivr.c (t42_get_name_index), src/type42/t42objs.c
136 (T42_GlyphSlot_Load): Ditto.
137
Werner Lemberg84d3df72016-07-11 00:12:11 +02001382016-07-10 Werner Lemberg <wl@gnu.org>
139
140 Implement handling of `FREETYPE_PROPERTIES' environment variable.
141
142 Recognizing properties follows in another commit.
143
144 * devel/ftoption.h, include/freetype/config/ftoption.h
145 (FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES): New macro.
146
147 * include/freetype/config/ftstdlib.h (ft_getenv): New macro.
148
149 * src/base/ftinit.c (ft_set_default_properties): New function to
150 parse `FREETYPE_PROPERTIES' and calling `ft_property_string_set'.
151 (FT_Init_FreeType): Updated.
152
Werner Lembergc3beb302016-07-10 07:11:45 +02001532016-07-09 Werner Lemberg <wl@gnu.org>
154
155 Add function `ft_property_string_set'.
156
157 This is a preparation for handling an `FREETYPE_PROPERTIES'
158 environment variable to control (some) driver properties.
159
160 No change in functionality.
161
162 * src/base/ftobjs.c (ft_property_do): Add `value_is_string'
163 parameter.
164 (ft_property_string_set): New function.
165 (FT_Property_Set, FT_Property_Get): Updated.
166
167 * include/freetype/internal/ftobjs.h: Updated.
168
169 * include/freetype/internal/services/svprop.h
170 (FT_Properties_SetFunc): Add `value_is_string' parameter.
171
172 * src/autofit/afmodule.c (af_property_set), src/cff/cffdrivr.c
173 (cff_property_set), src/truetype/ttdriver.c (tt_property_set):
174 Updated, emitting an error currently if `value_is_string' is set.
175
suzuki toshiya83c877f2016-07-09 13:36:27 +09001762016-07-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
177
178 [mac] Fix ftexport.sym target in Jamfile.
179
180 * Jamfile: Update the directories of the header files scanned for
181 ftexport.sym. They were incorrect since the migration of the
182 header files, on 2015-06-22. Either inexisting include/cache
183 (removed on 2006-03-20) is not needed to be listed explicitly.
184 Now ftmac.h is scanned only in the case of Mac OS & Mac OS X.
185
Alexei Podtelezhnikov4a2f8f12016-07-08 00:16:07 -04001862016-07-08 Alexei Podtelezhnikov <apodtele@gmail.com>
187
188 [smooth] Sub-banding protocol revision.
189
Werner Lemberg971f10b2016-07-08 06:59:31 +0200190 Rasterization sub-banding is utilized at large sizes while using a
191 rather small fixed memory pool. Indeed it is possible to make an
Alexei Podtelezhnikov4a2f8f12016-07-08 00:16:07 -0400192 educated guess how much memory is necessary at a given size for a
Werner Lemberg971f10b2016-07-08 06:59:31 +0200193 given glyph. It turns out that, for a large majority of European
194 glyphs, you should store about 8 times more boundary pixels than
195 their height. Or, vice versa, if your memory pool can hold 800
196 pixels the band height should be 100 and you should sub-band
197 anything larger than that. Should you still run out of memory,
198 FreeType bisects the band but you have wasted some time. This is
199 what has been implemented in FreeType since the beginning.
Alexei Podtelezhnikov4a2f8f12016-07-08 00:16:07 -0400200
Werner Lemberg971f10b2016-07-08 06:59:31 +0200201 It was overlooked, however, that the top band could grow to twice
202 the default band size leading to unnecessary memory overflows there.
203 This commit fixes that. Now the bands are distributed more evenly
204 and cannot exceed the default size.
Alexei Podtelezhnikov4a2f8f12016-07-08 00:16:07 -0400205
206 Now the magic number 8 is really suitable for rather simple European
Werner Lemberg971f10b2016-07-08 06:59:31 +0200207 scripts. For complex Chinese logograms the magic number should be
208 13 but that is subject for another day.
Alexei Podtelezhnikov4a2f8f12016-07-08 00:16:07 -0400209
210 * src/smooth/ftgrays.c (gray_convert_glyph): Revise sub-banding
211 protocol.
212
suzuki toshiya783cbcd2016-07-07 18:55:37 +09002132016-07-07 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
214
215 [mac] Fix Savannah bug #48417.
216
217 Mac OS X linker throws errors when `-exported_symbol_list' input
218 file includes non-existing symbols. Reported by Ryan Schmidt.
219
220 * builds/exports.mk: Exclude ftmac.h from the headers for apinames
221 by default. Include it when ftmac.c would be compiled.
222
Werner Lemberg474682f2016-07-06 08:54:35 +02002232016-07-06 Werner Lemberg <wl@gnu.org>
224
225 * src/truetype/ttinterp.c (TInstruction_Function): Removed, unused.
226
Werner Lembergadfec0a2016-07-05 07:38:52 +02002272016-07-05 Werner Lemberg <wl@gnu.org>
228
Werner Lembergd80fe692016-07-05 15:40:19 +0200229 * Version 2.6.4 released.
230 =========================
231
232
233 Tag sources with `VER-2-6-4'.
234
235 * docs/VERSION.TXT: Update documentation and bump version number to
236 2.6.4.
237
238 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
239 builds/windows/vc2005/index.html,
240 builds/windows/vc2008/freetype.vcproj,
241 builds/windows/vc2008/index.html,
242 builds/windows/vc2010/freetype.vcxproj,
243 builds/windows/vc2010/index.html,
244 builds/windows/visualc/freetype.dsp,
245 builds/windows/visualc/freetype.vcproj,
246 builds/windows/visualc/index.html,
247 builds/windows/visualce/freetype.dsp,
248 builds/windows/visualce/freetype.vcproj,
249 builds/windows/visualce/index.html,
250 builds/wince/vc2005-ce/freetype.vcproj,
251 builds/wince/vc2005-ce/index.html,
252 builds/wince/vc2008-ce/freetype.vcproj,
253 builds/wince/vc2008-ce/index.html: s/2.6.3/2.6.4/, s/263/264/.
254
255 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
256
257 * builds/unix/configure.raw (version_info): Set to 18:4:12.
258 * CMakeLists.txt (VERSION_PATCH): Set to 4.
259
260 * docs/CHANGES: Updated.
261
2622016-07-05 Werner Lemberg <wl@gnu.org>
263
Werner Lembergadfec0a2016-07-05 07:38:52 +0200264 * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Fix compiler warning.
265
Alexei Podtelezhnikovd1876e52016-07-04 23:46:53 -04002662016-07-04 Alexei Podtelezhnikov <apodtele@gmail.com>
267
268 [smooth] Variable type revision (part 2).
269
270 * src/smooth/ftgrays.c (TArea): Restore original definition as `int'.
271 (gray_render_line) [FT_LONG64]: Updated.
272 (gray_convert_glyph): 32-bit band bisection stack should be 32 bands.
273 (gray_convert_glyph_inner): Trace successes and failures.
274
Werner Lemberg5e353f02016-07-04 14:59:22 +02002752016-07-04 Werner Lemberg <wl@gnu.org>
276
277 [autofit] Handle single-point contours as segments.
278
279 Doing so allows us to link them to edges – some fonts like
280 `NotoSansGurmukhi-Regular' have such isolated points sitting exactly
281 on other outlines.
282
283 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Don't
284 ignore one-point contours but handle them specially as one-point
285 segments.
286 (af_latin_hints_compute_edges): Append one-point segments to edges
287 if possible.
288
Werner Lembergaab2b8d2016-07-02 08:37:44 +02002892016-07-02 Werner Lemberg <wl@gnu.org>
290
Werner Lemberg8b8c4402016-07-02 18:35:50 +0200291 [autofit] Remove unused structure members.
292
293 * src/autofit/afhints.h (AF_SegmentRec, AF_EdgeRec): Remove
294 `num_linked'.
295
296 * src/autofit/afcjk.c (af_cjk_hints_link_segments): Updated.
297
2982016-07-02 Werner Lemberg <wl@gnu.org>
299
Werner Lembergaab2b8d2016-07-02 08:37:44 +0200300 [autofit] Update to Unicode 9.0.0.
301
302 * src/autofit/afranges.c (af_arab_nonbase_uniranges,
303 af_cyrl_uniranges): Add new data.
304
Alexei Podtelezhnikov597c6952016-07-01 23:27:41 -04003052016-07-01 Alexei Podtelezhnikov <apodtele@gmail.com>
306
307 [smooth] Variable type revision (part 1).
308
309 This patch restores original `TCoord' definition as `int' so that the
310 rendering pool is used more efficiently on LP64 platforms (unix).
311
312 * src/smooth/ftgrays.c (gray_TWorker, TCell, gray_TBand): Switch some
313 fields to `TCoord'.
314 (gray_find_cell, gray_render_scanline, gray_render_line, gray_hline,
315 gray_sweep, gray_convert_glyph): Updated.
316
Alexei Podtelezhnikovef0a3e72016-06-28 22:56:22 -04003172016-06-28 Alexei Podtelezhnikov <apodtele@gmail.com>
318
319 [smooth] Minor clean-ups.
320
321 * src/smooth/ftgrays.c (gray_TWorker): Remove redundant `ycount'.
322 (gray_sweep, gray_convert_glyph, gray_dump_cells): Updated.
323
3242016-06-27 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov999bcee2016-06-26 08:27:29 +0200325
Alexei Podtelezhnikovc9cf3592016-06-28 00:30:58 -0400326 [smooth] Minor clean-ups.
327
328 * src/smooth/ftgrays.c (gray_convert_glyph): Do not use volatile
329 qualifier.
330 (gray_raster_render): Move span initializations from here.
331 (gray_sweep): ... to here and remove unused `target' argument.
332
3332016-06-26 Alexei Podtelezhnikov <apodtele@gmail.com>
334
Alexei Podtelezhnikov999bcee2016-06-26 08:27:29 +0200335 [pcf] Fix handling of very large fonts (#47708).
336
337 * src/pcf/pcfread.c (pcf_get_encodings): Make `encodingOffset' an
338 unsigned short.
339 Only reject `0xFFFF' as an invalid encoding offset.
340
3412016-06-25 Werner Lemberg <wl@gnu.org>
Werner Lemberg8ba407a2016-06-25 18:09:22 +0200342
343 [truetype] Really fix deallocation in case of error (#47726).
344
345 * src/truetype/ttgload.c (load_truetype_glyph): Thinko; initialize
346 `outline.points' also.
347
Alexei Podtelezhnikov25e82bc2016-06-23 23:17:39 -04003482016-06-23 Alexei Podtelezhnikov <apodtele@gmail.com>
349
350 [smooth] Consolidate memory management.
351
352 * src/smooth/ftgrays.c (gray_init_cells): Remove function.
353 (gray_TWorker): Remove fields that become local variables.
354 (gray_raster_render): Move rendering buffer declaration from here.
355 (gray_convert_glyph): ... to here and update accordingly.
356
Alexei Podtelezhnikove2233482016-06-22 23:14:26 -04003572016-06-22 Alexei Podtelezhnikov <apodtele@gmail.com>
358
359 [smooth] Consolidate boundary checks.
360
361 Removing the checks from `gray_hline' shaves 1% off rendering speed.
362
363 * src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_MIN' and `FT_MAX'.
364 (gray_TWorker): No need to store `clip_box'.
365 (gray_hline): Remove unnecessary boundary checks.
366 (gray_convert_glyph): Move boundary checks from here.
367 (gray_raster_render): ... to here and consolidate.
368
Alexei Podtelezhnikov78e8fc02016-06-22 00:04:08 -04003692016-06-21 Alexei Podtelezhnikov <apodtele@gmail.com>
370
371 [smooth] Use `FT_Outline_Get_CBox'.
372
373 * src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_Outline_Get_CBox'.
374 (gray_compute_cbox): Remove this function.
375 (gray_convert_glyph): Update to use `FT_Outline_Get_CBox'.
376
Werner Lemberg20c6ef42016-06-21 11:39:34 +02003772016-06-20 Werner Lemberg <wl@gnu.org>
378
379 [smooth] Remove compiler warnings.
380
381 * src/smooth/ftgrays.c (gray_convert_glyph): Fix reports from clang.
382
Alexei Podtelezhnikov3c64af92016-06-20 00:01:55 -04003832016-06-20 Alexei Podtelezhnikov <apodtele@gmail.com>
384
385 [smooth] Sanitize memory managenent.
386
387 * src/smooth/ftgrays.c (gray_convert_glyph): Cleaned up.
388
Alexei Podtelezhnikov74fd2512016-06-18 22:31:26 -04003892016-06-18 Alexei Podtelezhnikov <apodtele@gmail.com>
390
391 [smooth] Remove `band_shoot' that never worked.
392
393 * src/smooth/ftgrays.c (gray_TWorker): Remove `band_shoot'.
394 (gray_convert_glyph): Updated.
395
Alexei Podtelezhnikov72a06532016-06-17 23:10:22 -04003962016-06-17 Alexei Podtelezhnikov <apodtele@gmail.com>
397
398 [raster, smooth] Handle FT_RENDER_POOL_SIZE better.
399
400 * src/raster/ftraster.c (FT_MAX_BLACK_POOL): New macro.
401 (ft_black_render): Updated.
402 * src/smooth/ftgrays.c (FT_MAX_GRAY_POOL): New macro.
403 (gray_raster_render): Updated.
404
Werner Lemberg1e36c2e2016-06-16 06:17:54 +02004052016-06-16 Werner Lemberg <wl@gnu.org>
406
407 * src/base/md5.c: Updated to recent version.
408
Alexei Podtelezhnikov32accef2016-06-14 23:38:17 -04004092016-06-14 Alexei Podtelezhnikov <apodtele@gmail.com>
410
411 * src/smooth/ftgrays.c (gray_hline): Optimize if-condition.
412
Werner Lemberg05a55a52016-06-13 12:16:45 +02004132016-06-13 Werner Lemberg <wl@gnu.org>
414
415 [autofit] Add support for Cherokee script.
416
417 * src/autofit/afblue.dat: Add blue zone data for Cherokee.
418
419 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
420
421 * src/autofit/afscript.h: Add Cherokee standard characters.
422
423 * src/autofit/afranges.c: Add Cherokee data.
424
425 * src/autofit/afstyles.h: Add Cherokee data.
426
David Capellof40d7d22016-06-09 10:55:52 +02004272016-06-09 David Capello <davidcapello@gmail.com>
428
429 [cmake] Avoid modifying `ftconfig.h' and `ftoption.h' files.
430
431 * CMakeLists.txt: Each time cmake is run those files are
432 modified and the whole FreeType library is recompiled. With this
433 change we change the files only if there are real modifications, so
434 we can avoid recompilations.
435
Werner Lembergb6b26f42016-06-09 06:53:48 +02004362016-06-09 Werner Lemberg <wl@gnu.org>
437
438 [bdf] Check number of properties (#48166).
439
440 * src/bdf/bdflib.c (_bdf_parse_start): Implement.
441
Alexei Podtelezhnikov9cf232e2016-06-08 23:19:41 -04004422016-06-08 Alexei Podtelezhnikov <apodtele@gmail.com>
443
Alexei Podtelezhnikov77180c72016-06-08 23:31:28 -0400444 [smooth] Re-enable new line renderer on 64-bit archs.
445
Alexei Podtelezhnikov32accef2016-06-14 23:38:17 -0400446 * src/smooth/ftgrays.c (gray_render_line): Conditionally re-enable new
Alexei Podtelezhnikov77180c72016-06-08 23:31:28 -0400447 implementation, where it is safe from overflows.
448
4492016-06-08 Alexei Podtelezhnikov <apodtele@gmail.com>
450
Alexei Podtelezhnikov9cf232e2016-06-08 23:19:41 -0400451 [smooth] Minor clean-ups.
452
453 * src/smooth/ftgrays.c (gray_dump_cells): Move out of the way.
454 (gray_render_span): Remove spurious casts and streamline.
455
Werner Lemberg15eab362016-06-07 10:36:27 +02004562016-06-07 Werner Lemberg <wl@gnu.org>
457
Werner Lemberg223d0022016-06-07 13:52:14 +0200458 [autofit] Add support for Ethiopic script.
459
460 * src/autofit/afblue.dat: Add blue zone data for Ethiopic.
461
462 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
463
464 * src/autofit/afscript.h: Add Ethiopic standard characters.
465
466 * src/autofit/afranges.c: Add Ethiopic data.
467
468 * src/autofit/afstyles.h: Add Ethiopic data.
469
4702016-06-07 Werner Lemberg <wl@gnu.org>
471
Werner Lemberg15eab362016-06-07 10:36:27 +0200472 [autofit] Fix compilation with VS2016 (#48126).
473
474 This compiler doesn't recognize the end-of-comment sequence `*/' if
475 it immediately follows non-ASCII characters.
476
477 * src/autofit/afscript.h: Ensure whitespace before `*/'.
478
Werner Lemberg5485a342016-06-04 06:57:32 +02004792016-06-04 Werner Lemberg <wl@gnu.org>
480
Werner Lemberg969960c2016-06-04 07:02:46 +0200481 Fix a test for named instances (#48122).
Werner Lemberg5485a342016-06-04 06:57:32 +0200482
Werner Lemberg969960c2016-06-04 07:02:46 +0200483 This was missed while giving negative face indices an extended
484 meaning.
485
486 * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Implement.
Werner Lemberg5485a342016-06-04 06:57:32 +0200487
4882016-05-31 Nikolaus Waxweiler <madigens@gmail.com>
Nikolaus Waxweilerb4598822016-05-31 08:39:52 +0200489
490 [truetype] Let SHPIX move points in the twilight zone in v40.
491
492 * src/truetype/ttinterp.c (Ins_SHPIX): Allow SHPIX to move points in
493 the twilight zone. Otherwise, treat SHPIX the same as DELTAP.
494 Unbreaks various fonts such as older versions of Rokkitt and DTL
495 Argo T Light that would glitch severly after calling ALIGNRP after a
496 blocked SHPIX.
497
Werner Lembergd28eac22016-05-30 00:23:59 +02004982016-05-30 Werner Lemberg <wl@gnu.org>
499
500 [type42] Support `CharStrings' entry format as created by LilyPond.
501
502 * src/type42/t42parse.c (t42_parse_charstrings): Handle entries
503 having the format
504
505 (foo) cvn 12345 def
506
Werner Lemberg46d36902016-05-28 19:38:43 +02005072016-05-28 Werner Lemberg <wl@gnu.org>
508
509 * src/autofit/afranges.c: Remove `UL' postfix from hex numbers.
510
511 Suggested by Alexei. `UL' is only needed for 16bit compilers, but
512 it seems noone is using this anymore (and we no longer test whether
513 FreeType compiles in such an environment). Otherwise, it is easy to
514 add the postfix to the `AF_UNICODE_RANGE' macro.
515
Alexei Podtelezhnikove9f95092016-05-26 23:46:38 -04005162016-05-26 Alexei Podtelezhnikov <apodtele@gmail.com>
517
518 [smooth] Shrink bisection stack.
519
520 The convergence of Bézier flatteners is fast with the deviation
521 from straight line being assymptotically cut 4-fold on each bisection.
522 This justifies smaller bisection stack size.
523
524 * src/smooth/ftgrays.c (gray_TWorker): Remove common `bez_stack'.
525 (gray_render_conic): Create and use conic `bez_stack'. Move back the
526 band analysis from...
527 (gray_conic_to): ... here.
528 (gray_render_cubic): Create and use cubic `bez_stack'. Move back the
529 band analysis from...
530 (gray_cubic_to): ... here.
531 (gray_move_to): Updated.
532
Werner Lemberge97918c2016-05-25 07:13:29 +02005332016-05-25 Werner Lemberg <wl@gnu.org>
534
535 [autofit] Fixes for Armenian and Gujarati ranges.
536
537 * src/autofit/afranges.c (af_armn_uniranges): Corrected.
538 (af_guru_nonbase_uniranges): Make U+0A3E a base character.
539
Werner Lemberga74f40f2016-05-24 18:27:18 +02005402016-05-24 Werner Lemberg <wl@gnu.org>
541
542 [autofit] Add support for Armenian script.
543
544 * src/autofit/afblue.dat: Add blue zone data for Armenian.
545
546 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
547
548 * src/autofit/afscript.h: Add Armenian standard characters.
549
550 * src/autofit/afranges.c: Add Armenian data.
551
552 * src/autofit/afstyles.h: Add Armenian data.
553
Werner Lemberg771d3c82016-05-23 06:49:38 +02005542016-05-23 Werner Lemberg <wl@gnu.org>
555
556 * builds/unix/unix-cc.in (LINK_LIBRARY): Use `-export-symbols'.
557
558 This was commented about 10 years ago – I think the reason then to
559 disable libtool's `-export-symbols' option was to give some badly
560 programmed applications access to internal FreeType functions.
561
562 I believe that we should no longer take care of such programs; the
563 number of symbols exported should be rather restricted as much as
564 possible.
565
Werner Lemberg9d179e32016-05-22 08:38:41 +02005662016-05-22 Werner Lemberg <wl@gnu.org>
567
568 [autofit] Add blue-zone support for Gurmukhi script.
569
570 This essentially moves the Gurmukhi script from the `Indic' hinter to
571 the `Latin' hinter.
572
573 * src/autofit/afblue.dat: Add blue zone data for Gurmukhi.
574
575 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
576
577 * src/autofit/afscript.h: Add Gurmukhi standard characters and move
578 data out of AF_CONFIG_OPTION_INDIC block.
579
580 * src/autofit/afranges.c: Move Gurmukhi data out of
581 AF_CONFIG_OPTION_INDIC block.
582
583 * src/autofit/afstyles.h: Update Gurmukhi data; in particular, use
584 AF_WRITING_SYSTEM_LATIN.
585
Werner Lemberg6e80a092016-05-21 10:58:40 +02005862016-05-21 Werner Lemberg <wl@gnu.org>
587
Werner Lembergd5835612016-05-21 11:20:42 +0200588 Minor clang++ fixes.
589
590 * src/base/ftobjs.c (FT_Add_Module), src/psaux/psobjs.c
591 (ps_parser_load_field), src/type1/t1load.c (parse_subrs): Add
592 initializer.
593
594 * src/cache/ftccache.h (FTC_CACHE_TRYLOOP_END): Avoid implicit
595 conversion from NULL to boolean.
596
5972016-05-21 Werner Lemberg <wl@gnu.org>
598
Werner Lemberg6e80a092016-05-21 10:58:40 +0200599 Work around a bug of the C 8.0.0.1 compiler on AIX 5.3 (#47955).
600
601 * include/freetype/internal/ftmemory.h (cplusplus_typeof): Use
602 braces for `extern "C++"'.
603
Nikolaus Waxweiler59615732016-05-18 06:57:59 +02006042016-05-17 Nikolaus Waxweiler <madigens@gmail.com>
605
Nikolaus Waxweiler01de37e2016-05-18 07:07:44 +0200606 [truetype] Make TT_LOADER_SET_PP support subpixel hinting [3/3].
607
608 * src/truetype/ttgload.c (TT_LOADER_SET_PP): Replace macro with...
609 (tt_loader_set_pp): ... this new function.
610 Update all callers.
611
6122016-05-17 Nikolaus Waxweiler <madigens@gmail.com>
613
Nikolaus Waxweilered1d8982016-05-18 06:58:44 +0200614 [truetype] New implementation of v38 bytecode interpreter [2/3].
615
616 This patch actually modifies the bytecode interpreter.
617
618 See added comments in `ttinterp.h' for more information on this and
619 the following commit in the series.
620
621 * src/truetype/ttinterp.c (SUBPIXEL_HINTING): Replaced by...
622 (NO_SUBPIXEL_HINTING, SUBPIXEL_HINTING_INFINALITY,
623 SUBPIXEL_HINTING_MINIMAL): ...new macros.
624 (Direct_Move, Direct_Move_X, Direct_Move_Y): Handle backwards
625 compatibility.
626 Updated.
627 (Ins_RS, Ins_FDEF, Ins_ENDF, Ins_CALL, Ins_LOOPCALL, Ins_MD):
628 Updated.
629 (Ins_INSTCTRL): Handle native ClearType mode flag.
630 Updated.
631 (Ins_FLIPPT, Ins_FLIPRGON, Ins_FLIPRGOFF): Handle backwards
632 compatibility.
633 (Move_Zp2_Point): Ditto.
634 (Ins_SHP): Updated.
635 (Ins_SHPIX): Handle backwards compatibility.
636 Updated.
637 (Ins_MSIRP, Ins_MDAP, Ins_MIAP, Ins_MDRP, Ins_MIRP): Updated.
638 (Ins_ALIGNRP): Updated.
639 (Ins_IUP, Ins_DELTAP): Handle backwards compatibility.
640 Updated.
641 (Ins_GETINFO): Handle v38 flags.
642 Updated.
643 (TT_RunIns): Handle backwards compatibility mode.
644 Updated.
645
6462016-05-17 Nikolaus Waxweiler <madigens@gmail.com>
647
Nikolaus Waxweiler59615732016-05-18 06:57:59 +0200648 [truetype] New implementation of v38 bytecode interpreter [1/3].
649
650 This patch prepares data structures and the like.
651
652 See added comments in `ttinterp.h' for more information on this and
653 the following commits in the series.
654
655 * devel/ftoption.h, include/freetype/config/ftoption.h
656 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Assign values to differentiate
657 between subpixel versions.
658 (TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY,
659 TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL): New macros.
660
661 * include/freetype/ftttdrv.h (TT_INTERPRETER_VERSION_40): New macro.
662
663 * include/freetype/internal/tttypes.h (TT_FaceRec): Updated.
664
665 * src/truetype/ttinterp.h (TT_ExecContextRec): Define new fields
666 `subpixel_hinting_lean', `vertical_lcd_lean',
667 `backwards_compatibility', `iupx_called', iupy_called', and
668 `grayscale_cleartype' for new hinting mode.
669
670 * src/truetype/ttdriver.c (tt_property_set): Handle v38 and v40
671 interpreters conditionally.
672
673 * src/truetype/ttgload.c (TT_Hint_Glyph): Save phantom points unless
674 in v38 backwards compatibility mode.
675 Updated.
676 (compute_glyph_metrics): Add v38 backwards compatibility mode
677 constraint for adjusting advance widths.
678 Updated.
679 (tt_loader_init): Handle new flags `subpixel_hinting_lean',
680 `grayscale_cleartype', and `vertical_lcd_lean'.
681 Updated.
682 (tt_get_metrics, TT_Process_Simple_Glyph, TT_LOADER_SET_PP):
683 Updated.
684
685 * src/truetype/ttobjs.c (tt_driver_init): Conditionally set
686 default interpreter version number.
687
688 * src/truetype/ttsubpix.c, src/truetype/ttsubpix.h: Updated.
689
Werner Lemberg119e8e42016-05-17 19:54:09 +02006902016-05-17 Werner Lemberg <wl@gnu.org>
691
692 [cff] Fix matrix scaling (#47848).
693
694 * include/freetype/config/ftstdlib.h (FT_LONG_MIN): New macro.
695
696 * src/cff/cffparse.c (cff_parse_font_matrix): Use largest scaling
697 value of all matrix coefficients to scale matrix.
698
699 * src/cff/cffobjs.c (cff_face_init): Use `matrix->yx' member for
700 matrix normalization if `matrix->yy' is zero.
701
Werner Lemberg09f0e0f2016-05-16 19:44:19 +02007022016-05-16 Werner Lemberg <wl@gnu.org>
703
Werner Lembergbebac3c2016-05-16 20:16:35 +0200704 [base] Reject invalid sfnt Mac resource (#47891).
705
706 * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Check validity
707 of `CID ' and `TYPE1' table offset and length.
708
7092016-05-16 Werner Lemberg <wl@gnu.org>
710
Werner Lemberg09f0e0f2016-05-16 19:44:19 +0200711 [cid] Fix scanning for `StartData' and `/sfnts' (#47892).
712
713 * src/cid/cidparse.c (STARTDATA, STARTDATA_LEN, SFNTS, SFNTS_LEN):
714 New macros.
715 (cid_parser_new): Fix and document algorithm.
716
suzuki toshiyaa7d8bdb2016-05-16 21:54:32 +09007172016-05-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
718
719 [truetype] Improve the recursive reference detector.
720
721 The previous fix for #46372 misunderstood a composite glyph referring
722 same component twice as a recursive reference. See the discussion
723
Werner Lemberg533887a2016-05-16 20:38:41 +0200724 http://lists.gnu.org/archive/html/freetype/2016-05/msg00000.html
suzuki toshiyaa7d8bdb2016-05-16 21:54:32 +0900725
726 Thanks to Khaled Hosny for finding this issue.
727
728 * src/truetype/ttgload.c (ft_list_get_node_at): A function to get
Werner Lemberg533887a2016-05-16 20:38:41 +0200729 the i-th node from FT_List.
730 (load_truetype_glyph): In the traversal scan of the reference tree
731 in the composite glyph, we clear the nodes filled by previous
732 sibling chain.
suzuki toshiyaa7d8bdb2016-05-16 21:54:32 +0900733
Werner Lemberg7ae9b992016-05-07 16:24:03 +02007342016-05-07 Werner Lemberg <wl@gnu.org>
735
736 [cache] Allow value 0 for face ID.
737
738 We never dereference `face_id', and some implementations might use a
739 running number instead of a pointer. Additionally, disallowing
740 value zero was undocumented.
741
742 * src/cache/ftccmap.c (FTC_CMapCache_Lookup), src/cache/ftcmanag.c
743 (FTC_Manager_LookupFace, FTC_Manager_RemoveFaceID): Remove test for
744 `face_id'.
745
Alexei Podtelezhnikov6e880872016-05-05 23:41:03 -04007462016-05-05 Alexei Podtelezhnikov <apodtele@gmail.com>
747
748 [smooth] More efficient accounting of conic splits and draws.
749
750 A single decrement counter of segments to draw, instead of an array,
751 contains all the information necessary to decide when to split and
752 when to draw a conic segment. The number of splits before each draw is
753 equal to the number of trailing zeros in the counter.
754
755 * src/smooth/ftgrays.c (gray_TWorker): Remove `lev_stack'.
756 (gray_render_conic): Updated to use decrement counter of segments.
757
Werner Lemberg0b3cb8a2016-05-05 12:28:48 +02007582016-05-05 Werner Lemberg <wl@gnu.org>
759
760 [cff, truetype] Fix logic for `FT_Property_Set'.
761
762 Otherwise some properties could be set to arbitrary values, which is
763 harmless, but querying could give wrong positive results.
764
765 * src/cff/cffdrivr.c (cff_property_set) [hinting-engine],
766 * src/truetype/ttdriver.c (tt_property_set) [interpreter-version]:
767 Only allow defined values.
768
Werner Lemberg22167622016-04-25 21:18:24 +02007692016-04-25 Werner Lemberg <wl@gnu.org>
770
771 [autofit] Add blue-zone support for Gujarati script.
772
773 This essentially moves the Gujarati script from the `Indic' hinter to
774 the `Latin' hinter.
775
776 * src/autofit/afblue.dat: Add blue zone data for Gujarati.
777
778 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
779
780 * src/autofit/afscript.h: Add Gujarati standard characters and move
781 data out of AF_CONFIG_OPTION_INDIC block.
782
783 * src/autofit/afranges.c: Move Gujarati data out of
784 AF_CONFIG_OPTION_INDIC block.
785
786 * src/autofit/afstyles.h: Update Gujarati data; in particular, use
787 AF_WRITING_SYSTEM_LATIN.
788
Werner Lemberg432e00d2016-04-24 08:14:07 +02007892016-04-24 Werner Lemberg <wl@gnu.org>
790
Werner Lembergd9fb2172016-04-24 15:27:32 +0200791 Minor.
792
793 * include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Protect macro
794 argument with parentheses.
795
7962016-04-24 Werner Lemberg <wl@gnu.org>
797
Werner Lemberg432e00d2016-04-24 08:14:07 +0200798 [truetype] Fix deallocation in case of error (#47726).
799
800 * src/truetype/ttgload.c (load_truetype_glyph): Initialize fields in
801 `outline' that are going to be deallocated in case of error.
802
Werner Lemberg80afef82016-04-23 21:34:15 +02008032016-04-23 Werner Lemberg <wl@gnu.org>
804
805 [autofit] Improve Georgian blue zone characters.
806
807 Suggested by Akaki Razmadze <razmadzekoko@gmail.com>.
808
809 * src/autofit/afblue.dat (AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM):
810 Updated.
811
812 * src/autofit/afblue.c: Regenerated.
813
David Capello9224f052016-04-16 10:24:24 +02008142016-04-16 David Capello <davidcapello@gmail.com>
815
816 [cmake] Honor SKIP_INSTALL_* settings (as used in zlib).
817
818 As FreeType depends on zlib, if we don't install zlib (e.g., because
819 we defined SKIP_INSTALL_ALL), FreeType cannot be installed, too
820 (cmake triggers an error saying that FreeType cannot be installed
821 because zlib target isn't in the export set).
822
823 * CMakeLists.txt: Honor `SKIP_INSTALL_HEADERS',
824 `SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL' settings.
825
Behdad Esfahbod99eff672016-04-16 07:32:23 +02008262016-04-16 Behdad Esfahbod <behdad@behdad.org>
827
828 [truetype] Another fix for non-intermediate GX tuples.
829
830 * src/truetype/ttgxvar.c (ft_var_apply_tuple): Add some missing
831 cases.
832
Alexei Podtelezhnikov213f0ca2016-04-13 00:19:54 -04008332016-04-12 Alexei Podtelezhnikov <apodtele@gmail.com>
834
835 Remove forgotten macro.
836
837 * include/freetype/internal/internal.h
838 [FT_INTERNAL_POSTSCRIPT_GLOBALS_H]: Remove.
839
Werner Lembergc8c7ad72016-04-09 08:24:00 +02008402016-04-09 Werner Lemberg <wl@gnu.org>
841
842 [autofit] Add support for Georgian scripts.
843
844 Georgian is problematic, since `uppercase' forms of Mkhedruli
845 (called Mtavruli) are not yet defined in Unicode, which means that
846 proper blue zones can't be defined. However, there is already a
847 proposal submitted to Unicode; see
848
849 http://www.unicode.org/L2/L2016/16034-n4707-georgian.pdf
850
851 Additionally, due to historical reasons, Unicode treats Khutsuri as
852 the same script as Mkhedruli, and so does OpenType. However, since
853 the two scripts have completely different shapes it can happen that
854 blue zones differ considerably. The tag `geok' used here (derived
855 from ISO 15924) to differentiate the two scripts is not an OpenType
856 tag in use. If we now have a font that contains both glyphs for
857 Mkhedruli and Khutsuri, and it uses OpenType features for both also,
858 HarfBuzz unavoidably treats all glyphs as `geor'. As a consequence,
859 blue zones for `geok' are not used for glyphs involved in the
860 OpenType features.
861
862 An issue not yet resolved is which OpenType feature should be used
863 to access Mtavruli glyph shapes; right now, FreeType doesn't set up
864 support for them, but it is easy to add them later on as soon as
865 more information is available.
866
867 * src/autofit/afblue.dat: Add blue zone data for Georgian.
868
869 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
870
871 * src/autofit/afscript.h: Add Georgian standard characters.
872
873 * src/autofit/afranges.c: Add Georgian data.
874
875 * src/autofit/afstyles.h: Add Georgian data.
876
Werner Lembergbf8f1002016-04-05 11:43:58 +02008772016-04-05 Werner Lemberg <wl@gnu.org>
878
879 [autofit] Provide dummy blue zone for pseudo script `none'.
880
881 Even if the dummy hinter is used as the handler for `none' (which
882 doesn't use blue zones), it is more consistent than the old value
883 (which was 0), pointing to Arabic...
884
885 * src/autofit/afblue.dat: Add `AF_BLUE_STRINGSET_NONE'.
886 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
887
888 * src/autofit/afstyles.h (none_dflt): Use AF_BLUE_STRINGSET_NONE.
889
Werner Lembergccd771c2016-03-30 08:44:46 +02008902016-03-30 Werner Lemberg <wl@gnu.org>
891
Werner Lembergfb550bf2016-03-30 18:55:27 +0200892 * src/pfr/pfrload.c (pfr_aux_name_load): Thinko (#47567).
893
8942016-03-30 Werner Lemberg <wl@gnu.org>
895
Werner Lembergaff6ebb2016-03-30 09:11:02 +0200896 * src/pfr/pfrload.c (pfr_log_font_count): Better font size estimate.
897
8982016-03-30 Werner Lemberg <wl@gnu.org>
899
Werner Lembergccd771c2016-03-30 08:44:46 +0200900 * src/pfr/pfrload.c (pfr_aux_name_load): Fix memory leak (#47567).
901
Werner Lemberg31dc8f92016-03-29 08:37:07 +02009022016-03-29 Werner Lemberg <wl@gnu.org>
903
Alexei Podtelezhnikovc6d99a42016-04-08 00:05:50 -0400904 * src/base/ftadvanc.c (FT_Get_Advances): Fix invalid left shift.
Werner Lembergff827472016-03-29 09:19:22 +0200905
9062016-03-29 Werner Lemberg <wl@gnu.org>
907
Werner Lemberg351fc4b2016-03-29 09:13:13 +0200908 [pfr] Fix binary search (#47514).
909
910 * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Handle border
911 conditions correctly.
912
9132016-03-29 Werner Lemberg <wl@gnu.org>
914
Werner Lemberg2a03e5d2016-03-29 08:56:03 +0200915 [pfr] Minor.
916
917 * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Replace `left',
918 `right', and `middle' with `min', `max', and `mid' as used in other
919 FreeType binary search code.
920 (pfr_load_bitmap_metrics): Fix invalid left shift.
921
9222016-03-29 Werner Lemberg <wl@gnu.org>
923
Werner Lemberg31dc8f92016-03-29 08:37:07 +0200924 * src/pfr/pfrtypes.h: Replace all enums with macros.
925
926 We need `~FOO' to unset bits, and only with unsigned values (which
927 `enum' isn't normally) this works cleanly.
928
Werner Lembergb069a592016-03-26 08:00:07 +01009292016-03-26 Werner Lemberg <wl@gnu.org>
930
931 [pfr] Robustify bitmap strike handling (#47514).
932
933 We did a binary search for a charcode without ensuring that the
934 searched data is ordered. Validating the order is now done lazily,
935 this is, the first access to a bitmap glyph triggers the order check
936 in the corresponding bitmap strike.
937
938 * src/pfr/pfrtypes.h (PFR_BitmapFlags): New values
939 `PFR_BITMAP_VALID_CHARCODES' and `PFR_BITMAP_CHARCODES_VALIDATED'.
940
941 * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Make `flags' argument
942 a pointer. Handle new PFR_BITMAP_XXX flags.
943 (pfr_slot_load_bitmap): Updated.
944
9452016-03-26 Werner Lemberg <wl@gnu.org>
Werner Lemberg59828f72016-03-25 08:47:14 +0100946
Werner Lemberg0003cb92016-03-26 07:34:30 +0100947 [pfr] Fix handling of compound glyphs.
948
949 Extra items are indicated with different bit positions.
950
951 * src/pfr/pfrtypes.h (PFR_GlyphFlags): Replace
952 `PFR_GLYPH_EXTRA_ITEMS' with `PFR_GLYPH_SIMPLE_EXTRA_ITEMS' and
953 `PFR_GLYPH_COMPOUND_EXTRA_ITEMS'.
954
955 * src/pfr/pfrgload.c (pfr_glyph_load_simple,
956 pfr_glyph_load_compound): Use them.
957
9582016-03-25 Werner Lemberg <wl@gnu.org>
959
Werner Lemberg2aa69562016-03-25 10:54:37 +0100960 [pfr] Minor.
961
Alexei Podtelezhnikovf46b2822016-04-11 23:22:57 -0400962 * src/pfr/pfrsbit.c, src/pfr/pfrobjs.c: Use flag names instead of
Werner Lemberg2aa69562016-03-25 10:54:37 +0100963 bare numbers.
964
9652016-03-25 Werner Lemberg <wl@gnu.org>
966
Werner Lemberg59828f72016-03-25 08:47:14 +0100967 [pfr] Various clang sanitizer fixes.
968
969 * src/pfr/pfrsbit.c (pfr_load_bitmap_metrics): Correctly handle
970 signed nibbles.
971 (pfr_slot_load_bitmap): Correctly exit frame in case of error.
972 Fix invalid left shifts.
973
Werner Lemberge9181ab2016-03-23 06:58:20 +01009742016-03-23 Werner Lemberg <wl@gnu.org>
975
Werner Lemberg6e89ad42016-03-23 07:40:12 +0100976 Rename `VERSION.DLL' (#47472).
977
978 * docs/VERSION.DLL: Renamed to...
979 * docs/VERSIONS.TXT: ...this.
980
9812016-03-23 Werner Lemberg <wl@gnu.org>
982
Werner Lemberg31f2dc12016-03-23 07:31:59 +0100983 [raster, smooth] Directly test outline size (#47500).
984
985 This improves stand-alone compilation.
986
987 * src/base/ftoutln.c (FT_Outline_Render): Move cbox size test to...
988
989 * src/raster/ftraster.c (ft_black_render), src/smooth/ftgrays.c
990 (gray_raster_render): ...these functions.
991
9922016-03-23 Werner Lemberg <wl@gnu.org>
993
Werner Lemberge9181ab2016-03-23 06:58:20 +0100994 [raster, smooth] Fix some clang sanitizer runtime issues.
995
996 * src/raster/ftraster.c (ft_black_reset, ft_black_set_mode,
997 ft_black_render): Harmonize signatures with `ftimage.h'.
998
999 * src/smooth/ftgrays.c (gray_raster_render, gray_raster_reset):
1000 Ditto.
1001
Werner Lembergb6633072016-03-22 08:26:55 +010010022016-03-22 Werner Lemberg <wl@gnu.org>
1003
1004 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Minor.
1005
1006 This fixes an AddressSanitizer issue:
1007
1008 ttgload.c:430:7: runtime error: null pointer passed as argument 1,
1009 which is declared to never be null
1010
Werner Lemberg614a8f12016-03-21 19:39:14 +010010112016-03-21 Werner Lemberg <wl@gnu.org>
1012
1013 * src/autofit/afhints.c (af_glyph_hints_reload): Thinko.
1014
1015 This fixes the previous commit to this file.
1016
Alexei Podtelezhnikov3beccbd2016-03-21 00:07:47 -040010172016-03-21 Alexei Podtelezhnikov <apodtele@gmail.com>
1018
1019 [smooth] Partly revert recent changes.
1020
1021 * src/smooth/ftgrays.c (gray_conic_to, gray_cubic_to): Rework
1022 conditions to fix rendering issues.
1023
Werner Lemberg709486d2016-03-20 22:20:32 +010010242016-03-20 Werner Lemberg <wl@gnu.org>
1025
1026 [autofit] Show `near' points in tracing.
1027
1028 * src/autofit/afhints.h (AF_FLAG_NEAR): New macro.
1029
1030 * src/autofit/afhints.c (af_glyph_hints_dump_points): Implement it.
1031 (af_glyph_hints_reload): Handle AF_FLAG_NEAR.
1032
Alexei Podtelezhnikov8e8bb122016-03-18 23:21:59 -040010332016-03-18 Alexei Podtelezhnikov <apodtele@gmail.com>
1034
1035 [smooth] Minor refactoring and microoptimizations.
1036
1037 * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
1038 band clipping from here.
1039 (gray_conic_to, gray_cubic_to): ... to here.
1040 (gray_rander_line, gray_render_scanline): Initialize variables closer
1041 to their use.
1042
Alexei Podtelezhnikov84b2c632016-03-17 00:53:09 -040010432016-03-17 Alexei Podtelezhnikov <apodtele@gmail.com>
1044
1045 [smooth] Minor refactoring.
1046
1047 * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
Alexei Podtelezhnikov8e8bb122016-03-18 23:21:59 -04001048 upscaling from here.
1049 (gray_conic_to, gray_cubic_to): ... to here.
Alexei Podtelezhnikov84b2c632016-03-17 00:53:09 -04001050
Werner Lembergda86b732016-03-15 07:55:05 +010010512016-03-15 Werner Lemberg <wl@gnu.org>
1052
1053 * src/autofit/aflatin.c (af_latin_compute_stem_width): Optimize.
1054
Alexei Podtelezhnikov18655752016-03-14 22:39:22 -040010552016-03-14 Alexei Podtelezhnikov <apodtele@gmail.com>
1056
1057 [smooth] Temporarily revert 6eb6158dd787 (#47114).
1058
1059 * src/smooth/ftgrays.c (gray_render_line): Old implementation.
1060
Werner Lembergee6b4112016-03-12 23:48:13 +010010612016-03-12 Werner Lemberg <wl@gnu.org>
1062
1063 [ftfuzzer] Improve coverage of rasterfuzzer.
1064
1065 * src/tools/ftfuzzer/rasterfuzzer.cc (LLVMFuzzerTestOneInput): Use
1066 input data for `tags' array also.
1067 Trim input data to get more positive hits.
1068
Werner Lemberg10265db2016-03-11 06:50:23 +010010692016-03-11 Pavlo Denysov <paul.kiev+savannah@gmail.com>
1070
1071 Fix CMake issues for iOS (patch #8941).
1072
1073 * CMakeLists.txt (CMAKE_TOOLCHAIN_FILE): Fix directory.
1074 * builds/cmake/iOS.cmake: No longer enforce gcc.
1075
Behdad Esfahbod74c0a722016-03-09 20:35:27 +010010762016-03-09 Behdad Esfahbod <behdad@behdad.org>
1077
1078 [truetype] Fix handling of non-intermediate GX tuples.
1079
1080 We probably did not notice this as all fonts we tested had only
1081 tuple_coords[i] be +1 or -1 for non-intermediate tuples.
1082
1083 * src/truetype/ttgxvar.c (ft_var_apply_tuple): Implement it.
1084
Alexei Podtelezhnikovd0b0e312016-03-06 23:01:50 -050010852016-03-06 Alexei Podtelezhnikov <apodtele@gmail.com>
1086
Alexei Podtelezhnikov495de6c2016-03-06 23:54:34 -05001087 [base] Refuse to render enormous outlines (#47114).
1088
1089 The goal is to avoid integer overflows in the rendering algorithms.
1090 The limit is chosen arbitrarily at some 2^18 pixels, which should be
1091 enough for modern devices including printers.
1092
1093 * src/base/ftoutln.c (FT_Outline_Render): Check CBox and reject
1094 enormous outlines.
1095
10962016-03-06 Alexei Podtelezhnikov <apodtele@gmail.com>
1097
Alexei Podtelezhnikovd0b0e312016-03-06 23:01:50 -05001098 [smooth] Replace left shifts with multiplications (#47114).
1099
1100 * src/smooth/ftgrays.c (SUBPIXELS, UPSCALE, DOWNSCALE): Do it.
1101
Werner Lembergcaa48b02016-03-05 19:47:07 +010011022016-03-05 Werner Lemberg <wl@gnu.org>
1103
1104 [autofit] Avoid excessive stem length rounding (#25392).
1105
1106 * src/autofit/aflatin.c (af_latin_compute_stem_width): Add argument
1107 to pass difference between hinted and unhinted position of base
1108 point; use this to adjust the stem width depending on the PPEM so
1109 that it doesn't become too large under certain circumstances.
1110 Update all callers using value 0 for this argument except...
1111 (af_latin_align_linked_edge): Pass position delta of base point to
1112 `af_latin_compute_stem_width'.
1113
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040011142016-03-05 J Raynor <jxraynor@gmail.com>
J Raynor1fd2bc82016-03-05 16:38:35 +01001115
1116 Make FreeType compile on AIX out of the box.
1117
1118 * builds/unix/configure.raw (XX_ANSIFLAGS): Don't use `-ansi' on
1119 AIX.
1120
Werner Lemberg015c6e02016-03-01 06:45:52 +010011212016-03-01 Werner Lemberg <wl@gnu.org>
Werner Lemberga8b95622016-03-01 09:37:12 +01001122 Kostya Serebryany <kcc@google.com>
1123
1124 [ftfuzzer] Add unit for testing smooth and black rasterizers.
1125
1126 * src/tools/ftfuzzer/rasterfuzzer.cc: New file.
1127
11282016-03-01 Werner Lemberg <wl@gnu.org>
Werner Lemberg015c6e02016-03-01 06:45:52 +01001129
Werner Lemberg3eb6f662016-03-01 07:10:30 +01001130 [autofit] Fix reallocation error introduced in 2016-02-27 (#47310).
1131
1132 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Reassign
1133 `prev_segment' after reallocation.
1134
11352016-03-01 Werner Lemberg <wl@gnu.org>
1136
Werner Lemberg015c6e02016-03-01 06:45:52 +01001137 Fix clang warnings.
1138
1139 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Use
1140 FT_UShort for `min_flags' and `max_flags'.
1141 Initialize `prev_*' variables.
1142
1143 * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Fix
1144 types of local variables.
1145
1146 * src/smooth/ftgrays.c (gray_dump_cells) [FT_DEBUG_LEVEL_TRACE]:
1147 Update `printf' format string.
1148
1149 * src/tools/ftfuzzer/ftfuzzer.cc (setIntermediateAxis): Add cast.
1150 (LLVMFuzzerTestOneInput): Fix loop type.
1151
Werner Lemberg5c7646d2016-02-29 09:12:35 +010011522016-02-29 Werner Lemberg <wl@gnu.org>
1153
1154 [autofit] Add blue-zone support for Sinhala script.
1155
1156 This essentially moves the Sinhala script from the `Indic' hinter to
1157 the `Latin' hinter.
1158
1159 * src/autofit/afblue.dat: Add blue zone data for Sinhala.
1160
1161 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1162
1163 * src/autofit/afscript.h: Add Sinhala standard character and move data
1164 out of AF_CONFIG_OPTION_INDIC block.
1165
1166 * src/autofit/afranges.c: Move Sinhala data out of
1167 AF_CONFIG_OPTION_INDIC block.
1168
1169 * src/autofit/afstyles.h: Update Sinhala data; in particular, use
1170 AF_WRITING_SYSTEM_LATIN.
1171
Werner Lembergce486642016-02-27 15:01:49 +010011722016-02-27 Werner Lemberg <wl@gnu.org>
1173
Werner Lembergf2169472016-02-28 22:48:34 +01001174 [autofit] Properly handle spikes pointing to the x-axis.
1175
1176 An example that gets better rendered is glyph `uusignTaml' (glyph
1177 index 2286) in font `FreeSerif.ttf' (Version 0412.2263) at 22ppem.
1178
1179 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Properly
1180 handle segments where the last point of the first segment is
1181 identical to the first point in the second one. This can happen for
1182 malformed fonts or spikes. We either merge the new segment with the
1183 previous one (both segments point into the same direction), or we
1184 discard the shorter segment if they point into different directions.
1185
11862016-02-27 Werner Lemberg <wl@gnu.org>
1187
Werner Lembergce486642016-02-27 15:01:49 +01001188 [autofit] Minor code clean-up.
1189
1190 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Change
1191 some local variable names to better differentiate between values
1192 along a segment and values orthogonal to it.
1193
Werner Lembergebfd7ce2016-02-26 08:10:41 +010011942016-02-26 Werner Lemberg <wl@gnu.org>
1195
1196 [autofit] Improve BOUND action.
1197
1198 In complex glyph shapes, the original logic was too simple to cater
1199 for situations that would actually need something similar to PS Hint
1200 masks. This fix should alleviate the worst cases.
1201
1202 * src/autofit/aflatin.c (af_latin_hint_edges): Don't allow
1203 complete disappearance of stems.
1204
Werner Lemberg44324b32016-02-25 06:58:47 +010012052016-02-25 Werner Lemberg <wl@gnu.org>
1206
1207 [autofit] Add blue-zone support for Tamil script.
1208
1209 This essentially moves the Tamil script from the `Indic' hinter to
1210 the `Latin' hinter.
1211
1212 * src/autofit/afblue.dat: Add blue zone data for Tamil.
1213
1214 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1215
Werner Lemberg5c7646d2016-02-29 09:12:35 +01001216 * src/autofit/afscript.h: Add Tamil standard character and move data
Werner Lemberg44324b32016-02-25 06:58:47 +01001217 out of AF_CONFIG_OPTION_INDIC block.
1218
1219 * src/autofit/afranges.c: Move Tamil data out of
1220 AF_CONFIG_OPTION_INDIC block.
1221
1222 * src/autofit/afstyles.h: Update Tamil data; in particular, use
1223 AF_WRITING_SYSTEM_LATIN.
1224
Werner Lemberga5952d32016-02-18 12:56:38 +010012252016-02-18 Werner Lemberg <wl@gnu.org>
1226
1227 [autofit] Add blue-zone support for Malayalam script.
1228
1229 This essentially moves the Malayalam script from the `Indic' hinter
1230 to the `Latin' hinter.
1231
1232 * src/autofit/afblue.dat: Add blue zone data for Malayalam.
1233
1234 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1235
1236 * src/autofit/afscript.h: Add Malayalam standard characters and move
1237 data out of AF_CONFIG_OPTION_INDIC block.
1238
1239 * src/autofit/afranges.c: Move Malayalam data out of
1240 AF_CONFIG_OPTION_INDIC block.
1241
1242 * src/autofit/afstyles.h: Update Malayalam data; in particular, use
1243 AF_WRITING_SYSTEM_LATIN.
1244
Alexei Podtelezhnikov08e89b72016-02-16 22:32:13 -050012452016-02-16 Alexei Podtelezhnikov <apodtele@gmail.com>
1246
1247 [smooth] Fix integer overflow (#47114).
1248
1249 * src/smooth/ftgrays.c (TArea): Make it unconditionally `long'.
1250
Werner Lemberg658f5302016-02-15 14:28:28 +010012512016-02-15 Werner Lemberg <wl@gnu.org>
1252
Werner Lemberg3a5e5072016-02-15 22:21:01 +01001253 * src/cff/cffparse.c (cff_parse_multiple_master): Improve tracing.
1254
12552016-02-15 Werner Lemberg <wl@gnu.org>
1256
Werner Lemberg28730102016-02-15 20:53:22 +01001257 [cff] Handle T2 operator only with old CFF engine (#47157).
1258
1259 * src/cff/cffparse.c (cff_parser_run) <opcode 31>: Enclose with
1260 #ifdef CFF_CONFIG_OPTION_OLD_ENGINE...#endif.
1261
12622016-02-15 Werner Lemberg <wl@gnu.org>
1263
Werner Lemberg8ed9eaf2016-02-15 20:41:58 +01001264 [cff] Partially handle `load' and `store' ops in old CFF engine.
1265
1266 Now all glyphs of MM CFFs like `ITCGaramondMM-It.otf' can be
1267 displayed.
1268
1269 * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_store,
1270 cff_op_load>: Partially implement it.
1271
1272 * src/cff/cffparse.c (cff_parser_init): Add new parameter to pass
1273 the number of Multiple Master axes.
1274 Update all callers.
1275 (cff_parse_multiple_master): Get number of axes.
1276 (cff_parser_run) <opcode 31>: Updated.
1277 * src/cff/cffparse.h: Updated.
1278 (CFF_ParserRec): Add `num_axes' field.
1279
1280 * src/cff/cffload.c: Updated.
1281
1282 * src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_axes' field.
1283
12842016-02-15 Werner Lemberg <wl@gnu.org>
1285
Werner Lemberg658f5302016-02-15 14:28:28 +01001286 [cff] Correctly trace SIDs that contain NULL bytes.
1287
1288 We need this to properly trace Multiple Master CFFs, which contain
1289 two SIDs that are charstrings.
1290
1291 This commit makes FreeType also show the last SID, omitted
1292 previously due to a bug.
1293
1294 * src/cff/cfftypes.h (CFF_FontRec): Add `string_pool_size' field.
1295
1296 * src/cff/cffload.c (cff_index_get_pointers): Add argument to return
1297 the pool size.
1298 Update all callers.
1299
1300 * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Directly
1301 access `cff->strings' to display the non-default strings.
1302
Werner Lemberg813aca52016-02-14 16:03:15 +010013032016-02-14 Werner Lemberg <wl@gnu.org>
1304
Werner Lemberge411d382016-02-14 20:48:59 +01001305 * src/base/fthash.c: Include FT_INTERNAL_MEMORY_H.
1306
13072016-02-14 Werner Lemberg <wl@gnu.org>
1308
Werner Lembergdc5b2e82016-02-14 20:47:28 +01001309 * src/cff/cffparse.c: Include `cffgload.h'.
1310
1311 Problem reported by Colin Walters <walters@verbum.org>.
1312
13132016-02-14 Werner Lemberg <wl@gnu.org>
1314
Werner Lemberg813aca52016-02-14 16:03:15 +01001315 [cff] Make old CFF engine show MM CFFs (without variations).
1316
1317 The new code only displays the first master in the font.
1318
1319 * src/cff/cffgload.c (cff_decode_parse_charstrings): Add new
1320 parameter to allow function calls from dictionaries also.
1321 <cff_op_blend>: Partially implement it.
1322 Update all callers.
1323 * src/cff/cffgload.h: Updated.
1324
1325 * src/cff/cffparse.c (cff_parser_init): Add new parameter to pass the
1326 number of Multiple Master designs.
1327 Update all callers.
1328 (cff_parse_multiple_master): New function to rudimentarily parse
1329 operator.
1330 (cff_parser_run): Handle `T2' operator.
1331 * src/cff/cffparse.h: Updated.
1332 (CFF_ParserRec): Add `num_designs' field.
1333
1334 * src/cff/cffload.c: Updated.
1335
1336 * src/cff/cfftoken.h: Handle `MultipleMaster' operator.
1337
1338 * src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_designs' field.
1339
1340 * src/sfnt/sfobjs.c (sfnt_init_face): Don't handle `fvar' table for
1341 MM CFFs.
1342
Werner Lemberg4b3ea5c2016-02-09 08:08:17 +010013432016-02-09 Werner Lemberg <wl@gnu.org>
1344
1345 [docmaker] Don't emit trailing newlines.
1346
1347 * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_code):
1348 Use `rstrip'.
1349
Werner Lemberg950f1692016-02-07 11:39:54 +010013502016-02-07 Werner Lemberg <wl@gnu.org>
1351
Werner Lemberg44accb92016-02-08 19:51:40 +01001352 * Version 2.6.3 released.
1353 =========================
1354
1355
1356 Tag sources with `VER-2-6-3'.
1357
1358 * docs/VERSION.DLL: Update documentation and bump version number to
1359 2.6.3.
1360
1361 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1362 builds/windows/vc2005/index.html,
1363 builds/windows/vc2008/freetype.vcproj,
1364 builds/windows/vc2008/index.html,
1365 builds/windows/vc2010/freetype.vcxproj,
1366 builds/windows/vc2010/index.html,
1367 builds/windows/visualc/freetype.dsp,
1368 builds/windows/visualc/freetype.vcproj,
1369 builds/windows/visualc/index.html,
1370 builds/windows/visualce/freetype.dsp,
1371 builds/windows/visualce/freetype.vcproj,
1372 builds/windows/visualce/index.html,
1373 builds/wince/vc2005-ce/freetype.vcproj,
1374 builds/wince/vc2005-ce/index.html,
1375 builds/wince/vc2008-ce/freetype.vcproj,
1376 builds/wince/vc2008-ce/index.html: s/2.6.2/2.6.3/, s/262/263/.
1377
1378 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
1379
1380 * builds/unix/configure.raw (version_info): Set to 18:3:12.
Werner Lembergd80fe692016-07-05 15:40:19 +02001381 * CMakeLists.txt (VERSION_PATCH): Set to 3.
Werner Lemberg44accb92016-02-08 19:51:40 +01001382
1383 * docs/CHANGES: Updated.
1384
13852016-02-07 Werner Lemberg <wl@gnu.org>
1386
Werner Lemberg78371bd2016-02-07 21:06:59 +01001387 Fix another runtime error found by clang's sanitizer (#47082).
1388
1389 * src/base/ftstroke.c (ft_stroke_border_export): Properly handle
1390 empty input buffer.
1391
13922016-02-07 Werner Lemberg <wl@gnu.org>
1393
Werner Lemberg0d053ba2016-02-07 19:25:56 +01001394 Fix runtime errors found by clang's sanitizer (#47082).
1395
1396 * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c
1397 (FT_Outline_Copy), src/cache/ftcsbits.c (ftc_sbit_copy_bitmap):
1398 Properly handle empty input buffer.
1399
14002016-02-07 Werner Lemberg <wl@gnu.org>
1401
Werner Lemberga1460702016-02-07 11:42:37 +01001402 [cff] Minor.
1403
1404 * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_sqrt>:
1405 Remove dead code.
1406
14072016-02-07 Werner Lemberg <wl@gnu.org>
1408
Werner Lemberg950f1692016-02-07 11:39:54 +01001409 [cff] Implement missing operators in new engine (except `random').
1410
1411 * src/cff/cf2font.h (CF2_STORAGE_SIZE): New macro.
1412
1413 * src/cff/cf2intrp.c (cf2_interpT2CharString): Implement the
1414 following operators: abs, add, and, div, drop, dup, eq, exch, get,
1415 ifelse, index, mul, neg, not, or, put, roll, sqrt, sub.
1416
1417 * src/cff/cf2stack.h, src/cff/cf2stack.c (cf2_stack_roll): New
1418 auxiliary function for `roll' operator.
1419
Werner Lemberg5c8a8cb2016-02-06 08:03:03 +010014202016-02-06 Werner Lemberg <wl@gnu.org>
1421
1422 [cff] Fix some Type 2 operators in old CFF engine.
1423
1424 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Fix `eq'
1425 operator, add `not' and (unsupported) `blend' operators.
1426
Sebastian Rasmussenae7c55d2016-02-05 18:42:19 +010014272016-02-05 Sebastian Rasmussen <sebras@gmail.com>
1428
1429 Make direct call of `make install' work (#47072).
1430
1431 * builds/unix/unix-def.in (freetype-config): Make sure
1432 `freetype-config' is generated for both make targets (`all' and
1433 `install').
1434
Werner Lemberg710ac3d2016-02-05 12:47:29 +010014352016-02-05 Werner Lemberg <wl@gnu.org>
1436
1437 [base] Fix advance width loading for MM and GX fonts (#47064).
1438
1439 * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Return false for
1440 MM and GX fonts.
1441 Update callers.
1442
Werner Lembergcd346da2016-02-03 19:32:03 +010014432016-02-03 Werner Lemberg <wl@gnu.org>
1444
1445 [cff] Fix handling of face_index == -1 for pure CFF.
1446
1447 * src/cff/cffobjs.c (cff_face_init): Return correct number of faces.
1448
Werner Lembergbaa41ff2016-01-30 07:44:30 +010014492016-01-30 Werner Lemberg <wl@gnu.org>
1450
1451 [autofit] Minor tracing improvement.
1452
1453 * src/autofit/afhints.c (af_glyph_hints_dump_points): Insert newline
1454 at the start of a new contour.
1455
Nikolaus Waxweiler68750932016-01-28 12:24:36 +010014562016-01-28 Nikolaus Waxweiler <madigens@gmail.com>
1457
Nikolaus Waxweiler1d8d0b42016-01-28 14:11:14 +01001458 Remove unpatented hinter (3/3).
1459
1460 * include/freetype/config/ftoption.h
1461 (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove.
1462
1463 * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove
1464 `ignore_unpatented_hinter' field.
1465 Update users.
1466 (FT_DEBUG_HOOK_UNPATENTED_HINTING): Remove.
1467 Update users.
1468
1469 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove
1470 `unpatented_hinting' field.
1471 Update users.
1472
1473 * src/base/ftpatent.c (_tt_check_patents_in_range,
1474 _tt_check_patents_in_table, _tt_face_check_patents): Remove.
1475 (FT_Face_CheckTrueTypePatents, FT_Face_SetUnpatentedHinting):
1476 Replace code with dummies.
1477
Werner Lemberg0d053ba2016-02-07 19:25:56 +01001478 * src/truetype/ttobjs.c (tt_face_init): Remove now defunct code.
Nikolaus Waxweiler1d8d0b42016-01-28 14:11:14 +01001479 * src/truetype/ttobjs.h (TT_GraphicsState): Remove `both_x_axis'
1480 field.
1481
14822016-01-28 Nikolaus Waxweiler <madigens@gmail.com>
1483
Nikolaus Waxweiler5b7871b2016-01-28 12:27:46 +01001484 Remove unpatented hinter (2/3).
1485
1486 * devel/ftoption.h (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove.
1487
14882016-01-28 Nikolaus Waxweiler <madigens@gmail.com>
1489
Nikolaus Waxweiler68750932016-01-28 12:24:36 +01001490 Remove unpatented hinter (1/3).
1491
1492 * src/truetype/ttinterp.c [TT_CONFIG_OPTION_UNPATENTED_HINTING]:
1493 Remove all code related to this macro.
1494
Werner Lemberg8d810092016-01-28 10:13:24 +010014952016-01-28 Werner Lemberg <wl@gnu.org>
1496
1497 [autofit] Add blue-zone support for Kannada script.
1498
1499 This essentially moves the Kannada script from the `Indic' hinter to
1500 the `Latin' hinter.
1501
1502 * src/autofit/afblue.dat: Add blue zone data for Kannada.
1503
1504 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1505
1506 * src/autofit/afscript.h: Add Kannada standard characters and move
1507 data out of AF_CONFIG_OPTION_INDIC block.
1508
1509 * src/autofit/afranges.c: Move Kannada data out of
1510 AF_CONFIG_OPTION_INDIC block.
1511
1512 * src/autofit/afstyles.h: Update Kannada data; in particular, use
1513 AF_WRITING_SYSTEM_LATIN.
1514
Alexei Podtelezhnikove4c69d22016-01-22 23:35:49 -050015152016-01-22 Alexei Podtelezhnikov <apodtele@gmail.com>
1516
1517 Better access to 64-bit integers for C99 compilers.
1518
1519 * include/freetype/config/ftconfig.h [FT_LONG64]: Use
1520 __STDC_VERSION__ to define 64-bit integers.
1521 * builds/unix/ftconfig.in [FT_LONG64]: Ditto.
1522 * builds/vms/ftconfig.h [FT_LONG64]: Ditto.
1523
Werner Lembergfc4523b2016-01-21 06:20:20 +010015242016-01-21 Werner Lemberg <wl@gnu.org>
1525
1526 [gxvalid] Remove commented out code.
1527
1528 * src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Do it.
1529
Werner Lemberg24fbed02016-01-20 21:10:41 +010015302016-01-20 Werner Lemberg <wl@gnu.org>
1531
Werner Lemberg78371bd2016-02-07 21:06:59 +01001532 [autofit] Complete last autofit commit.
Werner Lembergfb672892016-01-20 21:13:16 +01001533
1534 Problem reported by Kostya Serebryany <kcc@google.com>.
1535
1536 * src/autofit/afshaper.c (af_shaper_get_coverage)
1537 [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Update signature.
1538
15392016-01-20 Werner Lemberg <wl@gnu.org>
1540
Werner Lemberg24fbed02016-01-20 21:10:41 +01001541 Still handle `__FTERRORS_H__'.
1542
1543 We need this for backwards compatibility.
1544
1545 Problem reported by John Emmas <johne53@tiscali.co.uk>.
1546
1547 * include/freetype/fterrors.h: Fix inclusion guard so that
1548 undefining either `FTERRORS_H_' or `__FTERRORS_H__' works as
1549 expected.
1550
Werner Lembergfc11af12016-01-19 19:15:54 +010015512016-01-19 Werner Lemberg <wl@gnu.org>
1552
Werner Lembergec776592016-01-19 19:33:57 +01001553 [autofit] Fix handling of default script.
1554
1555 Patch taken from ttfautohint, commit
1556 071ae2c00e0d67f9d19418f4fade1c23d27dc185.
1557
1558 There were two bugs.
1559
1560 - We now use non-standard script tags like `khms' for special
1561 purposes. However, HarfBuzz maps such tags to `DFLT', and
1562 without this commit the associated lookups were incorrectly
1563 assigned to the non-standard tags.
1564
1565 - Let's assume we have a Bengali font, and the font's `DFLT'
1566 script tag handles the necessary lookups for Bengali, too.
1567 Without this commit, the `DFLT' lookups were assigned to
1568 ttfautohint's default script (usually `latn') before the
1569 standard lookups for Bengali were handled.
1570
1571 We now have the following order while searching for covered
1572 glyph indices.
1573
1574 special features of scripts (e.g. `sups' for Cyrillic)
1575 Unicode mappings of scripts
1576 remaining features of scripts (especially important for Indic
1577 scripts)
1578 default features of default script
1579
1580 * src/autofit/afshaper.c, src/autofit/afshaper.h
1581 (af_shaper_get_coverage): Add boolean parameter to indicate default
1582 script.
1583 Update all callers.
1584
1585 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
1586 Fix search order for coverages.
1587
15882016-01-19 Werner Lemberg <wl@gnu.org>
1589
Werner Lembergfc11af12016-01-19 19:15:54 +01001590 Various minor clang fixes.
1591
1592 * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
1593 src/autofit/aflatin.c (af_latin_metrics_init_widths): Initialize
1594 `ch'.
1595
1596 * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Add cast.
1597
1598 * src/base/ftdbgmem.c (ft_mem_table_destroy): Add cast.
1599
1600 * src/base/fthash.c (hash_num_lookup): Add cast.
1601
1602 * src/base/fttrigon.c (ft_trig_downscale) [FT_LONG64]: Fix cast.
1603
1604 * src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Comment out
1605 redundant code.
1606
1607 * src/type1/t1driver.c (t1_get_ps_font_value) <PS_DICT_SUBR>: Add
1608 cast.
1609
1610 * src/type1/t1load.c (parse_subrs): Fix type of `count'.
1611
Derek B. Noonburg4cdfefd2016-01-19 07:12:44 +010016122016-01-19 Derek B. Noonburg <derekn@glyphandcog.com>
1613
1614 [truetype] Add another tricky font.
1615
1616 * src/truetype/ttobjs.c (TRICK_SFNT_IDS_NUM_FACES): Increase.
1617 (sfnt_id): Add variant of `DFKaiShu'.
1618
Alexei Podtelezhnikov32760d32016-01-14 23:31:08 -050016192016-01-14 Alexei Podtelezhnikov <apodtele@gmail.com>
1620
1621 [base] Empower `FT_Library_SetLcdFilterWeights'.
1622
1623 * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights): Enable filter
1624 in addition to setting weights.
1625 (FT_Library_SetLcdFilter): Clean out FT_FORCE_LIGHT_LCD_FILTER and
1626 FT_FORCE_LEGACY_LCD_FILTER.
1627 * include/freetype/ftlcdfil.h: Documentation update.
1628
Werner Lemberg37412ff2016-01-12 21:37:13 +010016292016-01-12 Werner Lemberg <wl@gnu.org>
1630
Werner Lembergc09a90a2016-01-12 22:28:14 +01001631 Don't use macro names that start with `_[A-Z]' [3/3].
1632
1633 Such macro names are reserved for both C and C++.
1634
1635 * src/cache/ftccache.h: s/_FTC_FACE_ID_HASH/FTC_FACE_ID_HASH/.
1636 Update all callers.
1637 (FTC_CACHE_LOOKUP_CMP): Replace `_XXX' with `XXX_'.
1638 * src/cache/ftcmru.c (FTC_MRULIST_LOOKUP_CMP): Ditto.
1639
16402016-01-12 Werner Lemberg <wl@gnu.org>
1641
Werner Lemberg9d0b76d2016-01-12 22:27:29 +01001642 Don't use macro names that start with `_[A-Z]' [2/3].
1643
1644 Such macro names are reserved for both C and C++.
1645
1646 * include/freetype/ftimage.h, src/raster/ftraster.c,
1647 src/smooth/ftgrays.c, src/smooth/ftgrays.h:
1648 s/_STANDALONE_/STANDALONE_/.
1649
16502016-01-12 Werner Lemberg <wl@gnu.org>
1651
Werner Lemberg758587d2016-01-12 22:20:06 +01001652 Don't use macro names that start with `_[A-Z]' [1/3].
1653
1654 Such macro names are reserved for both C and C++.
1655
1656 * src/bdf/bdflib.c: Replace macros of the form `_BDF_XXX' with
1657 `BDF_XXX_'.
1658
16592016-01-12 Werner Lemberg <wl@gnu.org>
1660
Werner Lemberg2e9d2662016-01-12 21:40:53 +01001661 Don't use macro names that contain `__' [2/2].
1662
1663 Such macro names are reserved for both C and C++.
1664
1665 * src/cache/*: s/__/_/.
1666
16672016-01-12 Werner Lemberg <wl@gnu.org>
1668
Werner Lemberg37412ff2016-01-12 21:37:13 +01001669 Don't use macro names that contain `__' [1/2].
1670
1671 Such macro names are reserved for both C and C++.
1672
Werner Lemberg2e9d2662016-01-12 21:40:53 +01001673 * */*: Replace macros of the form `__XXX_H__' with `XXX_H_'.
Werner Lemberg37412ff2016-01-12 21:37:13 +01001674
Jered Grayf53bab92016-01-10 12:03:36 +010016752016-01-10 Jered Gray <jegray@google.com>
1676
1677 [cff] Fix usage of `|' operator.
1678
1679 * src/cff/cf2intrp.c (cf2_interpT2CharString) [cf2_cmdEXTENDEDNMBR,
1680 default]: `|' is not guaranteed to be processed from left to right
1681 by the compiler. However, the code repeatedly calls
1682 `cf2_buf_readByte' to get the arguments to `|' ... Fix this.
1683
Werner Lemberg2e098122015-12-25 08:05:30 +010016842015-12-25 Werner Lemberg <wl@gnu.org>
1685
1686 [autofit] Make top-to-bottom hinting work in latin auto-hinter.
1687
1688 This improves rendering of scripts like Bengali or Devanagari.
1689
1690 * src/autofit/afhints.c (af_axis_hints_new_edge): Add parameter to
1691 pass top-to-bottom hinting flag. This makes the function sort edges
1692 in descending vertical position.
1693
1694 * src/autofit/afhints.c: Updated.
1695
1696 * src/autofit/aflatin.c (af_latin_hints_compute_edges,
1697 af_latin_hint_edges): Use `top_to_bottom_hinting' flag.
1698
1699 * src/autofit/afcjk.c (af_cjk_hints_compute_edges),
1700 src/autofit/aflatin2.c (af_latin2_hints_compute_edges): Updated.
1701
Werner Lemberg172db322015-12-24 08:17:51 +010017022015-12-24 Werner Lemberg <wl@gnu.org>
1703
1704 [autofit] Add hinting direction to `AF_ScriptClassRec'.
1705
1706 Still unused.
1707
1708 * src/autofit/afglobal.c (SCRIPT): Handle hinting direction.
1709
1710 * src/autofit/aftypes.h (AF_ScriptClassRec): Add
1711 `top_to_bottom_hinting' field.
1712 (AF_HINTING_BOTTOM_TO_TOP, AF_HINTING_TOP_TO_BOTTOM): New macros.
1713 (AF_DEFINE_SCRIPT_CLASS): Updated.
1714
Werner Lembergb0de5a82015-12-23 23:25:03 +010017152015-12-23 Werner Lemberg <wl@gnu.org>
1716
1717 [autofit] Start implementing hinting direction (up/down, down/up).
1718
1719 Right now, it does nothing.
1720
1721 * src/autofit/afscript.h: Add another parameter to `SCRIPT',
1722 specifying hinting direction.
1723
Alexei Podtelezhnikovc05a1c32016-06-21 23:12:54 -04001724 * src/autofit/afglobal.c, src/autofit/afglobal.h,
Werner Lembergb0de5a82015-12-23 23:25:03 +01001725 src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/afshaper.c,
1726 src/autofit/aftypes.h: Extend `SCRIPT' definitions.
1727
Werner Lemberg7ce6c432015-12-22 05:39:58 +010017282015-12-22 Werner Lemberg <wl@gnu.org>
1729
Werner Lemberg9c1a2b02015-12-22 12:05:46 +01001730 * src/type1/t1load.c (parse_subrs): Fix memory leak (#46744).
1731
17322015-12-22 Werner Lemberg <wl@gnu.org>
1733
Werner Lemberg7ce6c432015-12-22 05:39:58 +01001734 [base] Make hash interface symmetric.
1735
1736 Use `num' and `str' infixes everywhere.
1737
1738 * src/base/fthash.c (ft_hash_init): Renamed to...
1739 (hash_init): ... This.
1740 (ft_hash_str_init, ft_hash_num_init): New functions.
1741 (ft_hash_free): Renamed to...
1742 (ft_hash_str_free): ... This.
1743
1744 * include/freetype/internal/fthash.h: Updated.
1745
1746 * src/bdf/bdflib.c, src/type1/t1load.c, src/type1/t1objs.c: Updated.
1747
Werner Lemberg60d13bd2015-12-21 17:27:17 +010017482015-12-21 Werner Lemberg <wl@gnu.org>
1749
1750 [type1] Avoid shift of negative numbers (#46732).
1751
1752 * src/type1/t1load.c (parse_subrs): Do it.
1753
Werner Lemberg609546c2015-12-20 07:17:29 +010017542015-12-20 Werner Lemberg <wl@gnu.org>
1755
Werner Lembergbd4b8972015-12-20 19:36:04 +01001756 [type1, psaux] Handle large values of num_subrs correctly (#46692).
1757
1758 We now use a hash to map from subr indices to array elements holding
1759 the subroutines, if necessary.
1760
1761 * include/freetype/internal/t1types.h: Include FT_INTERNAL_HASH_H.
1762 (T1_FontRec): Add `subrs_hash' field.
1763
1764 * include/freetype/internal/psaux.h: Include FT_INTERNAL_HASH_H.
1765 (T1_DecoderRec): Add `subrs_hash' field.
1766
1767 * src/type1/t1load.h (T1_LoaderRec): Add `subrs_hash' field.
1768
1769 * src/type1/t1driver.c: Include FT_INTERNAL_HASH_H.
1770 (t1_ps_get_font_value) [PS_DICT_SUBR]: Look up hash if necessary.
1771
1772 * src/type1/t1load.c: Include FT_INTERNAL_HASH_H.
1773 (parse_subrs): Use hash for subr indices that exceed the allocated
1774 number of subr slots.
1775 (t1_init_loader): Remove unnecessary code.
1776 (t1_done_loader, T1_Open_Face): Updated.
1777
1778 * src/type1/t1gload.c (T1_Compute_Max_Advance, T1_Get_Advances,
1779 T1_Load_Glyph): Updated.
1780
1781 * src/type1/t1objs.c (T1_Face_Done): Updated.
1782
1783 * src/psaux/t1decode.c: Include FT_INTERNAL_HASH_H.
1784 (t1_decoder_parse_charstrings) [op_callsubr]: Look up hash if
1785 necessary.
1786
1787 * src/cid/cidgload.c (cid_load_glyph): Updated.
1788
17892015-12-20 Werner Lemberg <wl@gnu.org>
1790
Werner Lemberg1caf6292015-12-20 19:00:35 +01001791 [base] Thinko: Remove free function pointer.
1792
1793 We don't copy keys or values while hashing.
1794
1795 * include/freetype/internal/fthash.h (FT_Hash_FreeFunc): Removed.
1796 (FT_HashRec): Remove `free' field.
1797
1798 * src/base/fthash.c (hash_str_free): Removed.
1799 (ft_hash_init, ft_hash_free): Updated.
1800
18012015-12-20 Werner Lemberg <wl@gnu.org>
1802
Werner Lemberg76e79ec2015-12-20 09:03:15 +01001803 [base, bdf] Don't expose `FT_Hashnode' in hash functions.
1804
1805 * src/base/fthash.c (hash_lookup, ft_hash_str_lookup,
1806 ft_hash_num_lookup): Return pointer to `size_t' instead of
1807 `FT_Hashnode'.
1808
1809 * include/freetype/internal/fthash.h: Updated.
1810
1811 * src/bdf/bdflib.c (bdf_get_property, _bdf_add_property,
1812 bdf_get_font_property): Updated.
1813
18142015-12-20 Werner Lemberg <wl@gnu.org>
1815
Werner Lembergad306ea2015-12-20 08:33:21 +01001816 [base, bdf] Add number hashing.
1817
1818 * src/base/fthash.c (hash_num_lookup, hash_num_compare): New
1819 functions.
1820 (ft_hash_init): Add argument to select between number and string
1821 hashing.
1822 (ft_hash_num_insert, ft_hash_num_lookup): New functions.
1823
1824 * include/freetype/internal/fthash.h: Updated.
1825
1826 * src/bdf/bdflib.c (_bdf_parse_start): Updated.
1827
18282015-12-20 Werner Lemberg <wl@gnu.org>
1829
Werner Lemberg1b7549c2015-12-20 08:00:33 +01001830 [base] Introduce hash lookup, compare, and free function pointers.
1831
1832 * include/freetype/internal/fthash.c (FT_Hash_LookupFunc,
1833 FT_Hash_CompareFunc, FT_Hash_FreeFunc): New typedefs.
1834 (FT_HashRec): Add `lookup', `compare', and `free' fields.
1835
1836 * src/base/fthash.c (hash_str_lookup, hash_str_compare,
1837 hash_str_free): New functions.
1838 (ft_hash_init): Set function pointers.
1839 (hash_bucket, ft_hash_free): Use them.
1840
18412015-12-20 Werner Lemberg <wl@gnu.org>
1842
Werner Lemberg609546c2015-12-20 07:17:29 +01001843 [base, bdf] Use a union as a hash key.
1844
1845 We want to support both an integer and a string key later on.
1846
1847 * include/freetype/internal/fthash.h (FT_Hashkey): New union.
1848 (FT_HashnodeRec): Updated.
1849 (ft_hash_insert, ft_hash_lookup): Renamed to ...
1850 (ft_hash_str_insert, ft_hash_str_lookup): ... this.
1851
1852 * src/base/fthash.c (hash_bucket): Updated.
1853 (ft_hash_insert, ft_hash_lookup): Renamed to ...
1854 (hash_insert, hash_lookup): ... this.
1855 (ft_hash_str_insert, ft_hash_str_lookup): New wrapper functions.
1856
1857 * src/bdf/bdflib.c: Updated.
1858
Werner Lembergc98a40f2015-12-19 16:59:40 +010018592015-12-19 Werner Lemberg <wl@gnu.org>
1860
Werner Lemberg31343562015-12-19 17:02:13 +01001861 [bdf] Use new hash functions.
1862
1863 * src/bdf/bdf.h: Include FT_INTERNAL_HASH_H.
1864 (hashnode, hashtable): Removed.
1865 (bdf_font_t): Use `FT_HashRec' type for `proptbl'.
1866
1867 * src/bdf/bdflib.c: Remove all hash functions.
1868 Update code for new hash structure and function names.
1869
18702015-12-19 Werner Lemberg <wl@gnu.org>
1871
Werner Lembergc98a40f2015-12-19 16:59:40 +01001872 [bdf, base] Lift hash functions from bdf driver to base module.
1873
1874 * src/base/fthash.c, include/freetype/internal/fthash.h: New files,
1875 containing (massaged) code from `bdflib.c' and `bdf.h'.
1876
1877 * include/freetype/internal/internal.h (FT_INTERNAL_HASH_H): New
1878 macro.
1879
1880 * src/base/ftbase.c: Include `fthash.c'.
1881
1882 * src/base/Jamfile (_sources): Add `fthash'.
1883
1884 * src/base/rules.mk (BASE_SRC): Add `fthash.c'.
1885
1886 * docs/LICENSE.TXT: Updated.
1887
Werner Lemberg02451c72015-12-15 17:53:46 +010018882015-12-15 Werner Lemberg <wl@gnu.org>
1889
1890 [autofit] Add blue-zone support for Bengali script.
1891
1892 This essentially moves the Bengali script from the `Indic' hinter to
1893 the `Latin' hinter.
1894
1895 * src/autofit/afblue.dat: Add blue zone data for Bengali.
1896
1897 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1898
1899 * src/autofit/afscript.h: Add Bengali standard characters and move
1900 data out of AF_CONFIG_OPTION_INDIC block.
1901
1902 * src/autofit/afranges.c: Move Bengali data out of
1903 AF_CONFIG_OPTION_INDIC block.
1904
1905 * src/autofit/afstyles.h: Update Bengali data; in particular, use
1906 AF_WRITING_SYSTEM_LATIN.
1907
Ben Wagnera512b0f2015-12-14 09:19:52 +010019082015-12-14 Ben Wagner <bungeman@gmail.com>
1909
1910 [bdf] Remove dead code (#46625).
1911
1912 The BDF specification only allows decimal numbers, no octal or
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04001913 hexadecimal decoding is needed.
Ben Wagnera512b0f2015-12-14 09:19:52 +01001914
1915 * src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous,
1916 _bdf_atos): Remove unused code and parameters.
1917 Update all callers.
1918 (odigits): Remove.
1919
Werner Lemberg40992812015-12-14 07:51:25 +010019202015-12-14 Werner Lemberg <wl@gnu.org>
1921
1922 [base] Fix calls to `FT_Stream_Seek'.
1923
1924 * src/base/ftobjs.c (Mac_Read_sfnt_Resource, FT_Open_Face): Set
1925 `error'.
1926
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040019272015-12-14 Ben Wagner <bungeman@gmail.com>
Ben Wagnerf0cc1732015-12-14 07:00:41 +01001928
1929 [base] Check error when seeking to data supplied offset (#46635).
1930
1931 * src/base/ftobjs.c (open_face_PS_from_sfnt_stream):
Alexei Podtelezhnikov500bcbd2016-05-07 22:28:43 -04001932 `ft_lookup_PS_in_sfnt_stream' returns offset and length from
Ben Wagnerf0cc1732015-12-14 07:00:41 +01001933 user supplied data. Use of this these values must be checked.
1934
Werner Lembergd8f9a452015-12-13 15:54:17 +010019352015-12-13 Werner Lemberg <wl@gnu.org>
1936
1937 [autofit] Add support for Myanmar script.
1938
1939 * src/autofit/afblue.dat: Add blue zone data for Myanmar.
1940
1941 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1942
1943 * src/autofit/afscript.h: Add Myanmar standard characters.
1944
1945 * src/autofit/afranges.c: Add Myanmar data.
1946
1947 * src/autofit/afstyles.h: Add Myanmar data.
1948
Werner Lemberg79a42ad2015-12-12 07:27:14 +010019492015-12-12 Werner Lemberg <wl@gnu.org>
1950
Werner Lemberg868d5a02015-12-12 07:28:22 +01001951 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Minor.
1952
19532015-12-12 Werner Lemberg <wl@gnu.org>
1954
Werner Lemberg79a42ad2015-12-12 07:27:14 +01001955 * src/autofit/afscript.h: Avoid potential crash.
1956
Werner Lembergbbe84ed2015-12-10 09:33:41 +010019572015-12-10 Werner Lemberg <wl@gnu.org>
1958
Werner Lemberg4fe3b552015-12-11 08:08:48 +01001959 [autofit] Restore OpenType feature check.
1960
1961 This was removed while rewriting the HarfBuzz interface.
1962
1963 * src/autofit/afglobal.h (AF_FaceGlobalsRec): Add `hb_buf' field to
1964 hold internal HarfBuzz buffer, needed for feature comparison.
1965
1966 * src/autofit/afglobal.c (af_face_globals_new,
1967 af_face_globals_free): Initialize and destroy `hb_buf'.
1968
1969 * src/autofit/afshaper.c (af_shaper_get_cluster): Compare character
1970 (cluster) with and without applied feature.
1971
1972 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix tracing
1973 message.
1974
19752015-12-10 Werner Lemberg <wl@gnu.org>
1976
Werner Lembergbbe84ed2015-12-10 09:33:41 +01001977 [autofit] Remove redundant code.
1978
1979 * src/autofit/aflatin.c (af_latin_metrics_init_widths): Do it.
1980
Werner Lembergf02e1df2015-12-09 14:45:30 +010019812015-12-09 Werner Lemberg <wl@gnu.org>
1982
Werner Lembergdd305f32015-12-09 21:00:33 +01001983 [autofit] Thinko.
1984
1985 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Don't count
1986 empty blue zones (bug introduced 2015-12-06).
1987
19882015-12-09 Werner Lemberg <wl@gnu.org>
1989
Werner Lemberg0164d932015-12-09 20:04:18 +01001990 [autofit] Introduce subscript top blue zones.
1991
1992 This feature is mainly for Khmer: The idea is to avoid a clash
1993 between the top of subscript glyphs and the bottom of normal
1994 baseline glyphs.
1995
1996 This only works for character clusters mapped to multiple glyphs.
1997
1998 * src/autofit/afblue.dat: Add subscript top blue zone for Khmer.
1999
2000 * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_SUB_TOP): New
2001 macro.
2002
2003 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
2004
2005 * src/autofit/aflatin.h (AF_LATIN_IS_SUB_TOP_BLUE,
2006 AF_LATIN_BLUE_SUB_TOP): New macros.
2007
2008 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle new
2009 blue zone property.
2010 Update tracing messages.
2011 (af_latin_metrics_scale_dim): Handle new blue zone property.
2012 (af_latin_hints_compute_blue_edges): Updated.
2013
20142015-12-09 Werner Lemberg <wl@gnu.org>
2015
Werner Lembergf02e1df2015-12-09 14:45:30 +01002016 [autofit] Fix tracing message.
2017
2018 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Display
2019 inactive blue zones also.
2020
Werner Lembergf45c0bf2015-12-06 09:58:18 +010020212015-12-06 Werner Lemberg <wl@gnu.org>
2022
Werner Lembergc13526e2015-12-08 09:48:50 +01002023 * src/autofit/afblue.dat: Add more Khmer clusters.
2024
2025 Some fonts have incorrect ligatures; we need more samples to get a
2026 good mean value.
2027
2028 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
2029
20302015-12-06 Werner Lemberg <wl@gnu.org>
2031
Werner Lembergb38ca3c2015-12-06 19:48:31 +01002032 [autofit] Typos.
2033
2034 * src/autofit/afshaper.c (af_shaper_buf_create, af_shaper_get_elem)
2035 [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Make it compile.
2036
20372015-12-06 Werner Lemberg <wl@gnu.org>
2038
Werner Lembergfacb79a2015-12-06 19:34:59 +01002039 [autofit] Add support for Khmer script.
2040
2041 We split Khmer into two auto-hinter scripts: `Khmer' (`khmr') and
2042 `Khmer symbols' (`khms', U+19E0-U+19FF).
2043
2044 * src/autofit/afblue.dat: Add blue zone data for Khmer.
2045
2046 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
2047
2048 * src/autofit/afscript.h: Add Khmer standard characters.
2049
2050 * src/autofit/afranges.c: Add Khmer data.
2051
2052 * src/autofit/afstyles.h: Add Khmer data.
2053
20542015-12-06 Werner Lemberg <wl@gnu.org>
2055
Werner Lemberg24aa9c62015-12-06 18:52:41 +01002056 [autofit] Rewrite HarfBuzz interface to support character clusters.
2057
2058 Scripts like Khmer have blue zones that can't be directly
2059 represented by Unicode characters. Instead, it is necessary to let
2060 HarfBuzz convert character clusters into proper glyph representation
2061 forms, then deriving the blue zone information from the resulting
2062 glyphs.
2063
2064 * src/autofit/hbshim.c, src/autofit/hbshim.h: Replaced by...
2065 * src/autofit/afshaper.c, src/autofit/afshaper.h: ... these two new
2066 files, providing a new API to access HarfBuzz.
2067
2068 The new API manages a HarfBuzz buffer with `af_shaper_buf_create'
2069 and `af_shaper_buf_destroy'. The buffer receives a UTF8 encoded
2070 string with function `af_shaper_get_cluster', and the resulting
2071 glyph data (indices, advance widths, vertical offsets) can be
2072 iteratively accessed with function `af_shaper_get_elem'.
2073
2074 * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
2075 af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated.
2076
2077 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
2078 af_latin_metrics_init_blues, af_latin_metrics_check_digits):
2079 Updated.
2080
2081 * include/freetype/internal/fttrace.h: s/afharfbuzz/afshaper/.
2082
2083 * src/autofit/afglobal.c: s/hbshim.h/afshaper.h/.
2084 (af_face_globals_compute_style_coverage): Updated.
2085
Alexei Podtelezhnikovf46b2822016-04-11 23:22:57 -04002086 * src/autofit/afglobal.h: s/hbshim.h/afshaper.h/.
Werner Lemberg24aa9c62015-12-06 18:52:41 +01002087
2088 * src/autofit/autofit.c: s/hbshim.c/afshaper.c/.
2089
2090 * src/autofit/Jamfile, src/autofit/rules.mk (AUTOF_DRV_SRC):
2091 Updated.
2092
20932015-12-06 Werner Lemberg <wl@gnu.org>
2094
Werner Lembergde599942015-12-06 18:18:02 +01002095 [autofit] Prepare forthcoming changes.
2096
2097 This makes it easier to control the commits.
2098
2099 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Add dummy
2100 loop. No functional change.
2101
21022015-12-06 Werner Lemberg <wl@gnu.org>
2103
Werner Lembergf45c0bf2015-12-06 09:58:18 +01002104 [autofit] Use string of standard characters.
2105
2106 This is more flexible; additionally, it would allow character
2107 clusters.
2108
2109 * src/autofit/aftypes.h (SCRIPT, AF_DEFINE_SCRIPT_CLASS): Updated.
2110 (AF_ScriptClassRec): Replace `standard_char[123]' with
2111 `standard_charstring'.
2112
2113 * src/autofit/afscript.h: Replace last three character arguments
2114 of the `SCRIPT' calls with a string parameter, holding the standard
2115 characters (in UTF-8 encoding) separated with spaces.
2116
2117 * src/autofit/afglobal.c, src/autofit/afglobal.h,
2118 src/autofit/afpic.c, src/autofit/afranges.c, src/autofit/hbshim.c
2119 (SCRIPT): Updated.
2120
2121 * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
2122 src/autofit/aflatin.c (af_latin_metrics_init_widths): Updated.
2123
Werner Lemberg53696f02015-12-05 07:44:16 +010021242015-12-05 Werner Lemberg <wl@gnu.org>
2125
Werner Lemberga8a54c32015-12-05 13:26:44 +01002126 * src/autofit/afblue.dat: Separate blue zone characters with spaces.
2127
2128 Another preparation for character cluster support.
2129
2130 * src/autofit/afblue.c, src/autofit.afblue.h: Regenerated.
2131
21322015-12-05 Werner Lemberg <wl@gnu.org>
2133
Werner Lemberg453722d2015-12-05 13:20:30 +01002134 * src/tools/afblue.pl (convert_ascii_chars): Don't ignore spaces.
2135
2136 Instead, reduce multiple spaces to a single one. We need this later
2137 for supporting character clusters in `afblue.dat'.
2138
21392015-12-05 Werner Lemberg <wl@gnu.org>
2140
Werner Lembergf7e6d512015-12-05 13:08:45 +01002141 * src/autofit/afblue.hin (GET_UTF8_CHAR): Use `do...while(0)'.
2142
2143 * src/autofit/afblue.h: Regenerated.
2144
21452015-12-05 Werner Lemberg <wl@gnu.org>
2146
Werner Lemberg53696f02015-12-05 07:44:16 +01002147 * src/autofit/afwarp.c: s/INT_MIN/FT_INT_MIN/.
2148
Werner Lemberga4154732015-12-03 07:49:46 +010021492015-12-03 Werner Lemberg <wl@gnu.org>
2150
2151 * builds/unix/install.mk (install): Remove stale `ft2build.h'.
2152
Werner Lemberg5b05bc62015-12-01 12:09:02 +010021532015-12-01 Werner Lemberg <wl@gnu.org>
2154
2155 [type1] Avoid dangling pointer (#46572).
2156
2157 * src/type1/t1afm.c (T1_Read_Metrics): Properly reset
2158 `face->afm_data'.
2159
Alexei Podtelezhnikovf8c20572015-11-28 22:43:33 -050021602015-11-28 Alexei Podtelezhnikov <apodtele@gmail.com>
2161
2162 * include/freetype/ftlcdfil.h: Documentation tweak.
2163
Werner Lemberg4679bf82015-11-28 19:05:36 +010021642015-11-28 Werner Lemberg <wl@gnu.org>
2165
Werner Lemberg66cf29b2015-11-28 19:08:05 +01002166 * Version 2.6.2 released.
2167 =========================
2168
2169
2170 Tag sources with `VER-2-6-2'.
2171
2172 * docs/VERSION.DLL: Update documentation and bump version number to
2173 2.6.2.
2174
2175 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
2176 builds/windows/vc2005/index.html,
2177 builds/windows/vc2008/freetype.vcproj,
2178 builds/windows/vc2008/index.html,
2179 builds/windows/vc2010/freetype.vcxproj,
2180 builds/windows/vc2010/index.html,
2181 builds/windows/visualc/freetype.dsp,
2182 builds/windows/visualc/freetype.vcproj,
2183 builds/windows/visualc/index.html,
2184 builds/windows/visualce/freetype.dsp,
2185 builds/windows/visualce/freetype.vcproj,
2186 builds/windows/visualce/index.html,
2187 builds/wince/vc2005-ce/freetype.vcproj,
2188 builds/wince/vc2005-ce/index.html,
2189 builds/wince/vc2008-ce/freetype.vcproj,
2190 builds/wince/vc2008-ce/index.html: s/2.6.1/2.6.2/, s/261/262/.
2191
2192 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
2193
2194 * builds/unix/configure.raw (version_info): Set to 18:2:12.
2195 * CMakeLists.txt (VERSION_PATCH): Set to 2.
2196
2197 * docs/CHANGES: Updated.
2198
21992015-11-28 Werner Lemberg <wl@gnu.org>
2200
Werner Lemberg4679bf82015-11-28 19:05:36 +01002201 Fix C++ compilation.
2202
2203 * src/autofit/afloader.c: Include FT_INTERNAL_CALC_H.
2204
2205 * src/truetype/ttgload.c (load_truetype_glyph): Pacify compiler.
2206
Nikolaus Waxweiler01ce1c62015-11-28 12:04:28 +010022072015-11-28 Nikolaus Waxweiler <madigens@gmail.com>
2208
2209 Change default LCD filter to be normalized and color-balanced.
2210
2211 * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Update
2212 `default_filter'.
2213
Werner Lemberg98afe3f2015-11-28 11:58:49 +010022142015-11-28 Werner Lemberg <wl@gnu.org>
2215
2216 [docmaker] Allow references to section names.
2217
2218 In the reference, we show the section's title enclosed in single
2219 quotes.
2220
2221 * src/tools/docmaker/formatter.py (Formatter::__init__): Collect
2222 section names as identifiers.
2223
2224 * src/tools/docmaker/tohtml.py (section_title_header): Split into...
2225 (section_title_header1, section_title_header2): ... these two
2226 strings.
2227 (HtmlFormatter::make_block_url, make_html_word, html_source_quote):
2228 Handle sections.
2229 (HtmlFormatter::section_enter): Updated to add `id' HTML attribute.
2230
Tamas Kenez4854df62015-11-27 07:04:31 +010022312015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
2232
Tamas Kenez30fdfe62015-11-27 23:16:08 +01002233 [cmake] Add script to test the config module.
2234
2235 * builds/cmake/testbuild.sh: New file.
2236
22372015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
2238
Tamas Kenezc80620c2015-11-27 18:37:21 +01002239 * CMakeLists.txt: Create `freetype-config.cmake' config module.
2240
22412015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
2242
Tamas Kenez9d0544f2015-11-27 18:28:31 +01002243 * CMakeLists.txt: Set CMAKE_DEBUG_POSTFIX to `d'.
2244
22452015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
2246
Tamas Kenezda97b4c2015-11-27 07:11:42 +01002247 [cmake] Add better control of library dependencies.
2248
2249 * CMakeLists.txt: Add `WITH_*' variables to force/auto/omit
2250 ZLIB/BZip2/PNG/HarfBuzz.
2251
22522015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
2253
Alexei Podtelezhnikov6d070342016-06-20 01:09:18 -04002254 [cmake] Make `FindHarfBuzz' observe the REQUIRED option.
Tamas Kenez4854df62015-11-27 07:04:31 +01002255
2256 * builds/cmake/FindHarfBuzz.cmake: Implement it.
2257
Werner Lemberg5b3446b2015-11-27 06:47:13 +010022582015-11-27 Werner Lemberg <wl@gnu.org>
2259
2260 [cmake] Collect files specific to cmake in `builds/cmake'.
2261
2262 * builds/FindHarfBuzz.cmake: Move to ...
2263 * builds/cmake/FindHarfBuzz.cmake: ... this place.
2264
2265 * CMakeLists.txt (CMAKE_MODULE_PATH): Updated.
2266
Alexander Bock8f982b32015-11-27 06:34:39 +010022672015-11-27 Alexander Bock <alexander.j.bock@nasa.gov>
2268
2269 CMakeLists.txt: Honour new command line flag `FREETYPE_NO_DIST'.
2270
Werner Lemberg97b808f2015-11-26 14:29:17 +010022712015-11-26 Werner Lemberg <wl@gnu.org>
2272
2273 [docmaker] Allow `foo[bar]' as identifier.
2274
2275 We need this to handle equally named properties in different
2276 modules.
2277
2278 * src/tools/docmaker/content.py (re_identifier),
2279 src/tools/docmaker/sources.py (re_crossref): Allow `foo[bar]'.
2280
2281 * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word,
2282 HtmlFormatter::index_exit, HtmlFormatter::section_enter,
2283 HtmlFormatter::block_enter): Handle `foo[bar]'.
2284
Werner Lemberg4a150132015-11-25 07:53:49 +010022852015-11-25 Werner Lemberg <wl@gnu.org>
2286
2287 * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46480).
2288
2289 (_bdf_parse_glyphs): Always reset `p->glyph_name' after moving its
2290 contents.
2291
Werner Lemberg663f2d72015-11-21 06:30:43 +010022922015-11-21 Werner Lemberg <wl@gnu.org>
2293
2294 * include/freetype/internal/ftcalc.h: Don't use `register' keyword.
2295
2296 This fixes compiler warnings.
2297
2298 Reported by Behdad.
2299
Werner Lembergb96af122015-11-20 16:03:09 +010023002015-11-20 Werner Lemberg <wl@gnu.org>
2301
2302 Add `FT_LCD_FILTER_LEGACY1' enum value.
2303
2304 This does the same as `FT_LCD_FILTER_LEGACY'.
2305
2306 See
2307
2308 https://bugs.freedesktop.org/show_bug.cgi?id=92981
2309
2310 for the reasoning.
2311
2312 * include/freetype/ftlcdfil.h (FT_LcdFilter): New value
2313 `FT_LCD_FILTER_LEGACY1'.
2314
2315 * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Use it.
2316
Werner Lemberg94cacac2015-11-15 04:45:42 +010023172015-11-15 Werner Lemberg <wl@gnu.org>
2318
Werner Lemberg68fb4782015-11-15 13:06:48 +01002319 * src/autofit/afhints.c (af_get_segment_index): Fix it.
2320
2321 The old code was too simple, returning invalid values in most cases
2322 where a segment crosses the contour start.
2323
23242015-11-15 Werner Lemberg <wl@gnu.org>
2325
Werner Lemberg94cacac2015-11-15 04:45:42 +01002326 * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46439).
2327
Werner Lemberg75722f82015-11-11 09:55:16 +010023282015-11-11 Werner Lemberg <wl@gnu.org>
2329
2330 [cff, autofit] Switch off stem darkening by default.
2331
2332 * src/autofit/afmodule.c (af_autofitter_init), src/cff/cffobjs.c
2333 (cff_driver_init): Do it.
2334
Jan Alexander Steffens (heftig)ccd31882015-11-10 22:33:45 +010023352015-11-10 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
2336
2337 Allow native CFF hinter in FT_RENDER_MODE_LIGHT.
2338
2339 Both the native CFF hinter and the auto-hinter now have a very
2340 similar rendering style.
2341
2342 * include/freetype/freetype.h: Mention that FT_LOAD_TARGET_LIGHT no
2343 longer implies FT_LOAD_FORCE_AUTOHINT.
2344
2345 * include/freetype/ftmodapi.h (FT_MODULE_DRIVER_HINTS_LIGHTLY): New
2346 macro.
2347
2348 * include/freetype/internal/ftobjs.h (FT_DRIVER_HINTS_LIGHTLY): New
2349 macro.
2350
2351 * src/cff/cffdrivr.c (cff_driver_class): Use it.
2352
2353 * src/base/ftobjs.c (FT_Load_Glyph): Update auto-hinter selection
2354 logic.
2355
Werner Lemberg837285e2015-11-09 09:20:08 +010023562015-11-09 Werner Lemberg <wl@gnu.org>
2357
Werner Lemberg2985e4f2015-11-09 21:37:40 +01002358 * src/cid/cidload.c (cid_face_open): Fix GDBytes guard (#46408).
2359
23602015-11-09 Werner Lemberg <wl@gnu.org>
2361
Werner Lemberg837285e2015-11-09 09:20:08 +01002362 [truetype] Remove integer to pointer conversion compiler warning.
2363
2364 Problem reported by Alexei.
2365
2366 * src/truetype/ttgload.c (load_truetype_glyph): Use a solution found
2367 in the glib library to fix the issue.
2368
Behdad Esfahbodabb33122015-11-08 10:00:34 +010023692015-11-08 Behdad Esfahbod <behdad@behdad.org>
2370
2371 [sfnt] Accept version 3 of `EBLC' and `CBLC' tables also.
2372
2373 * src/sfnt/ttsbit.c (tt_face_load_sbit): Implement it.
2374
23752015-11-08 Philipp Knechtges <philipp-dev@knechtges.com>
Philipp Knechtgesbe32b162015-11-08 08:37:51 +01002376
2377 [autofit] Don't distort (latin) glyphs too much (#46195).
2378
2379 * src/autofit/aflatin.h (AF_LatinBlueRec): Add `ascender' and
2380 `descender' fields.
2381
2382 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Collect
2383 ascender and descender data for blue zones.
2384 (af_latin_metrics_scale_dim): Reject vertical scaling values that
2385 change the result by more than two pixels.
2386
Werner Lemberg0f0a6bb2015-11-05 13:48:11 +010023872015-11-05 Werner Lemberg <wl@gnu.org>
2388
2389 [sfnt] Ignore embedded bitmaps with zero size (#46379).
2390
2391 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Implement
2392 it.
2393
Werner Lemberg040edaf2015-11-04 07:35:51 +010023942015-11-04 Werner Lemberg <wl@gnu.org>
2395
Werner Lemberg758d55e2015-11-04 11:44:47 +01002396 [truetype] Catch infinite recursion in subglyphs (#46372).
2397
2398 * include/freetype/internal/tttypes.h (TT_LoaderRec): New field
2399 `composites'.
2400
2401 * src/truetype/ttgload.c: Include FT_LIST_H.
2402 (load_truetype_glyph): Add composite subglyph index to a list;
2403 abort if index is already in list.
2404 (tt_loader_init): Updated.
2405 (tt_loader_done): New function.
2406 (TT_Load_Glyph): Call `tt_loader_done'.
2407
24082015-11-04 Werner Lemberg <wl@gnu.org>
2409
Werner Lemberg040edaf2015-11-04 07:35:51 +01002410 [truetype] Better tracing of composite glyphs.
2411
2412 * src/truetype/ttgload.c (TT_Load_Composite_Glyph,
2413 load_truetype_glyph): Implement it.
2414
Werner Lembergaae88082015-11-03 17:30:36 +010024152015-11-03 Werner Lemberg <wl@gnu.org>
2416
2417 [sfnt] Protect against zero-size bitmaps (#46345).
2418
2419 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Check
2420 `glyph_size'.
2421
Nikolaus Waxweilerd682e512015-11-02 09:06:36 +010024222015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
2423
Nikolaus Waxweilerb6fd5bc2015-11-03 10:40:58 +01002424 * src/autofit/afloader.c (af_loader_load_g): Implement emboldening.
2425
24262015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
2427
Nikolaus Waxweilerbf2ba9e2015-11-02 13:12:34 +01002428 [autofit] Implement darkening computation function.
2429
2430 This is a crude adaption of the original `cf2_computeDarkening'
2431 function.
2432
2433 * src/autofit/afloader.c (af_intToFixed, af_fixedToInt,
2434 af_floatToFixed): New macros, taken from `cf2fixed.h'.
2435 (af_loader_compute_darkening): New function.
2436 * src/autofit/afloader.h: Updated.
2437
24382015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
2439
Nikolaus Waxweiler37c401a2015-11-02 09:32:26 +01002440 [autofit] Add functions to get standard widths for writing systems.
2441
2442 We need the computed standard horizontal and vertical widths for the
2443 emboldening calculation. This method provides a convenient way to
2444 extract it from writing-system-specific metrics structures, which
2445 all script definitions must implement.
2446
2447 * src/autofit/aftypes.h (AF_WritingSystem_GetStdWidthsFunc): New
2448 function type.
2449 (AF_WritingSystemClassRec): New member `style_metrics_getstdw'.
2450 (AF_DEFINE_WRITING_SYSTEM_CLASS): Updated.
2451
2452 * src/autofit/afcjk.c (af_cjk_get_standard_width): New function.
2453 (af_cjk_writing_system_class): Updated.
2454 * src/autofit/afdummy.c (af_dummy_writing_system_class): Updated.
2455 * src/autofit/afindic.c (af_cjk_get_standard_width): New function.
2456 (af_indic_writing_system_class): Updated.
2457 * src/autofit/aflatin.c (af_latin_get_standard_width): New function.
2458 (af_indic_writing_system_class): Updated.
2459 * src/autofit/aflatin.c (af_latin_get_standard_width): New function.
2460 (af_indic_writing_system_class): Updated.
2461
24622015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
2463
Nikolaus Waxweilerb2a85ad2015-11-02 09:20:32 +01002464 [autofit] Extend `AF_FaceGlobalsRec' to hold emboldening data.
2465
2466 * src/autofit/afglobal.h (AF_FaceGlobalsRec): Add fields.
2467
2468 * src/autofit/afglobal.c (af_face_globals_new): Initialize new
2469 fields.
2470 (af_face_globals_free): Reset new fields.
2471
24722015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
2473
Nikolaus Waxweilerd682e512015-11-02 09:06:36 +01002474 [autofit] Add stem-darkening properties.
2475
2476 Actual code follows in a later commit.
2477
2478 * include/freetype/ftautoh.h: Document `no-stem-darkening' and
2479 `darkening-parameters'.
2480
2481 * src/autofit/afmodule.h: New fields `no_stem_darkening' and
2482 `darken_params'.
2483
2484 * src/autofit/afmodule.c (af_property_set, af_property_get):
2485 Handle them.
2486 (af_autofitter_init): Initialize them.
2487
Ben Wagnerf0cc1732015-12-14 07:00:41 +010024882015-11-02 Ben Wagner <bungeman@gmail.com>
Werner Lembergbcf618b2015-11-02 06:50:49 +01002489
2490 [ftfuzzer] Add support for multiple files (patch #8779).
2491
2492 Currently, libFuzzer only supports mutation of a single file. We
2493 circumvent this problem by using an uncompressed tar archive as
2494 multiple-file input for the fuzzer.
2495
2496 This patch enables tests of `FT_Attach_Stream' and AFM/PFM parsing;
2497 a constructed tarball should contain a font file as the first
2498 element, and files to be attached as further elements.
2499
2500 * src/tools/ftfuzzer/ftfuzzer.cc: Include libarchive headers.
2501 (archive_read_entry_data, parse_data): New functions.
2502 (LLVMFuzzerTestOneInput): Updated.
2503
2504 * src/tools/ftfuzzer/ftmutator.cc: New file, providing a custom
2505 mutator for libFuzzer that can mutate tarballs in a sensible way.
2506
Werner Lemberg009cc152015-10-31 17:52:56 +010025072015-10-31 Werner Lemberg <wl@gnu.org>
2508
Werner Lemberg57cbb8c2015-10-31 18:47:26 +01002509 [sfnt] Fix cmap 14 validation (#46346).
2510
2511 * src/sfnt/ttcmap.c (tt_cmap14_validate): Check limit before
2512 accessing `numRanges' and `numMappings'.
2513 Fix size check for non-default UVS table.
2514
25152015-10-31 Werner Lemberg <wl@gnu.org>
2516
Werner Lemberg009cc152015-10-31 17:52:56 +01002517 [sfnt] Handle infinite recursion in bitmap strikes (#46344).
2518
2519 * src/sfnt/ttsbit.c (TT_SBitDecoder_LoadFunc,
2520 tt_sbit_decoder_load_bitmap, tt_sbit_decoder_load_byte_aligned,
2521 tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_png): Add
2522 argument for recursion depth.
2523 (tt_sbit_decoder_load_compound): Add argument for recursion depth.
2524 Increase recursion counter for recursive call.
2525 (tt_sbit_decoder_load_image): Add argument for recursion depth.
2526 Check recurse depth.
2527 (tt_face_load_sbit_image): Updated.
2528
Werner Lemberg017db032015-10-29 05:52:09 +010025292015-10-29 Werner Lemberg <wl@gnu.org>
2530
Werner Lemberg02cfd712015-10-29 20:50:57 +01002531 * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor.
2532
25332015-10-29 Werner Lemberg <wl@gnu.org>
2534
Werner Lemberg017db032015-10-29 05:52:09 +01002535 * CMakeLists.txt: Remove code to set MSVC's /FD compiler switch.
2536
2537 Problem reported by David Capello <davidcapello@gmail.com>; see
2538
2539 http://lists.nongnu.org/archive/html/freetype-devel/2015-10/msg00108.html
2540
2541 for details.
2542
Werner Lembergfba29fa2015-10-27 21:04:48 +010025432015-10-27 Werner Lemberg <wl@gnu.org>
2544
2545 [pfr] Add some safety guards (#46302).
2546
2547 * src/pfr/pfrload.h (PFR_CHECK): Rename to...
2548 (PFR_CHECK_SIZE): ... this.
2549 (PFR_SIZE): [!PFR_CONFIG_NO_CHECKS]: Define to PFR_CHECK_SIZE.
2550
Werner Lembergf45c0bf2015-12-06 09:58:18 +01002551 * src/pfr/pfrload.c (pfr_log_font_count): Check `count'.
Werner Lembergfba29fa2015-10-27 21:04:48 +01002552 (pfr_extra_item_load_kerning_pairs): Remove tracing message.
2553 (pfr_phy_font_load): Use PFR_CHECK_SIZE where appropriate.
2554 Allocate `chars' after doing a size checks.
2555
2556 * src/pfr/pfrsbit.c (pfr_load_bitmap_bits): Move test for invalid
2557 bitmap format to...
2558 (pfr_slot_load_bitmap): ... this function.
2559 Check bitmap size.
2560
Werner Lemberg6a19a7d2015-10-26 15:40:22 +010025612015-10-26 Werner Lemberg <wl@gnu.org>
2562
2563 [truetype] Fix sanitizing logic for `loca' (#46223).
2564
2565 * src/truetype/ttpload.c (tt_face_load_loca): A thinko caused an
2566 incorrect adjustment of the number of glyphs, most often using far
2567 too large values.
2568
Werner Lemberg7f00fa62015-10-25 10:59:59 +010025692015-10-25 Werner Lemberg <wl@gnu.org>
2570
2571 [autofit] Improve tracing.
2572
2573 * src/autofit/afhints.c (af_print_idx, af_get_segment_index,
2574 af_get_edge_index): New functions.
2575
2576 (af_glyph_hints_dump_points): Remove unnecessary `|', `[', and `]'.
2577 Add segment and edge index for each point.
2578 Slightly change printing order of some elements.
2579 Don't print `-1' but `--' for missing elements.
2580
2581 (af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Remove
2582 unnecessary `|', `[', and `]'.
2583 Don't print `-1' but `--' for missing elements.
2584
Werner Lemberg6f090112015-10-24 10:10:22 +020025852015-10-24 Werner Lemberg <wl@gnu.org>
2586
2587 [sfnt] Sanitize bitmap strike glyph height.
2588
2589 Problem reported by Nikolay Sivov <bunglehead@gmail.com>.
2590
2591 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Avoid zero value
2592 for `metrics->height' by applying some heuristics.
2593
Werner Lemberge93d3262015-10-22 10:17:20 +020025942015-10-22 Werner Lemberg <wl@gnu.org>
2595
2596 [sfnt, type42] Fix clang compiler warnings.
2597
2598 * src/sfnt/sfobjs.c (sfnt_init_face): Initialize `offset'.
2599
2600 * src/type42/t42parse.c (t42_parse_sfnts): Use proper cast.
2601
Werner Lembergf1c93432015-10-22 10:11:23 +020026022015-10-22 Dave Arnold <darnold@adobe.com>
2603 Werner Lemberg <wl@gnu.org>
2604
2605 [cff] Avoid overflow/module arithmetic.
2606
2607 This modifies the addition of subroutine number to subroutine bias
2608 from unsigned to signed, but does not change any results.
2609
2610 * src/cff/cf2ft.c (cf2_initGlobalRegionBuffer,
2611 cf2_initLocalRegionBuffer): Change variable names from (unsigned)
2612 `idx' to (signed) `subrNum', since it is not an index until after
2613 the bias is added.
2614 * src/cff/cf2ft.h: Updated.
2615
2616 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLSUBR>:
2617 Updated similarly.
2618
Werner Lemberg59ae73f2015-10-22 09:26:00 +020026192015-10-22 Werner Lemberg <wl@gnu.org>
2620
2621 [cid] Better check of `SubrCount' dictionary entry (#46272).
2622
2623 * src/cid/cidload.c (cid_face_open): Add more sanity tests for
2624 `fd_bytes', `gd_bytes', `sd_bytes', and `num_subrs'.
2625
Werner Lemberg87fefc52015-10-21 20:29:12 +020026262015-10-21 Werner Lemberg <wl@gnu.org>
2627
Werner Lemberge484d362015-10-21 20:48:27 +02002628 [base] Pacify compiler (#46266).
2629
2630 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Initialize `in' and
2631 `anchor'.
2632
26332015-10-21 Werner Lemberg <wl@gnu.org>
2634
Werner Lemberg87fefc52015-10-21 20:29:12 +02002635 [type42] Fix heap buffer overflow (#46269).
2636
2637 * src/type42/t42parse.c (t42_parse_sfnts): Fix off-by-one error in
2638 bounds checking.
2639
Dave Arnold748e3682015-10-21 13:58:43 +020026402015-10-21 Dave Arnold <darnold@adobe.com>
2641
Dave Arnold3cfd5122015-10-21 14:07:25 +02002642 [cff] Fix limit in assert for max hints.
2643
2644 * src/cff/cf2interp.c (cf2_hintmask_setAll): Allow mask equal to the
2645 limit (96 bits).
2646
26472015-10-21 Dave Arnold <darnold@adobe.com>
2648
Dave Arnold748e3682015-10-21 13:58:43 +02002649 [cff] Remove an assert (#46107).
2650
2651 * src/cff/cf2hints.c (cf2_hintmap_insertHint): Ignore paired edges
2652 in wrong order.
2653
Werner Lemberg649ca552015-10-21 07:01:45 +020026542015-10-21 Werner Lemberg <wl@gnu.org>
2655
Werner Lemberge6593382015-10-21 08:04:29 +02002656 [sfnt] Avoid unnecessarily large allocation for WOFFs (#46257).
2657
2658 * src/sfnt/sfobjs.c (woff_open_font): Use WOFF's `totalSfntSize'
2659 only after thorough checks.
2660 Add tracing messages.
2661
26622015-10-21 Werner Lemberg <wl@gnu.org>
2663
Werner Lemberg649ca552015-10-21 07:01:45 +02002664 [type42] Better check invalid `sfnts' array data (#46255).
2665
2666 * src/type42/t42parse.c (t42_parse_sfnts): Table lengths must be
2667 checked individually against available data size.
2668
Werner Lembergd47d3722015-10-20 12:24:36 +020026692015-10-20 Werner Lemberg <wl@gnu.org>
2670
Werner Lemberg3eccc3a2015-10-20 22:31:57 +02002671 [cid] Add a bunch of safety checks.
2672
2673 * src/cid/cidload.c (parse_fd_array): Check `num_dicts' against
2674 stream size.
2675 (cid_read_subrs): Check largest offset against stream size.
2676 (cid_parse_dict): Move safety check to ...
2677 (cid_face_open): ... this function.
2678 Also test length of binary data and values of `SDBytes',
2679 `SubrMapOffset', `SubrCount', `CIDMapOffset', and `CIDCount'.
2680
26812015-10-20 Werner Lemberg <wl@gnu.org>
2682
Werner Lembergd47d3722015-10-20 12:24:36 +02002683 [cid] Avoid segfault with malformed input (#46250).
2684
2685 * src/cid/cidload.c (cid_read_subrs): Return a proper error code for
2686 unsorted offsets.
2687
StudioEtrange5cf83a52015-10-20 07:19:44 +020026882015-10-20 StudioEtrange <nomorgan@gmail.com>
2689
2690 * CMakeLists.txt: Enable shared library builds on MinGW (#46233).
2691
Werner Lemberg3c582062015-10-20 06:57:28 +020026922015-10-20 Werner Lemberg <wl@gnu.org>
2693
2694 * src/type1/t1afm.c (T1_Read_Metrics): Fix memory leak (#46229).
2695
Ben Wagnerf0cc1732015-12-14 07:00:41 +010026962015-10-19 Ben Wagner <bungeman@gmail.com>
Bungemanba8a5282015-10-19 23:27:06 +02002697
2698 [cid] Better handle invalid glyph stream offsets (#46221).
2699
2700 * src/cid/cidgload.c (cid_load_glyph): Check minimum size of glyph
2701 length.
2702
Werner Lembergdcfc4d92015-10-18 16:47:06 +020027032015-10-18 Werner Lemberg <wl@gnu.org>
2704
Werner Lemberg24cee3a2015-10-19 23:00:28 +02002705 [psaux] Fix tracing of negative numbers.
2706
2707 Due to incorrect casting negative numbers were shown as very large
2708 (positive) integers on 64bit systems.
2709
2710 * src/psaux/t1decode.c (t1_decoder_parse_charstrings) <op_none>:
2711 Use division instead of shift.
2712
27132015-10-18 Werner Lemberg <wl@gnu.org>
2714
Werner Lemberg14213b52015-10-18 18:15:04 +02002715 [truetype] Improve TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46223).
2716
2717 * devel/ftoption.h, include/freetype/config/ftoption.h: Surround it
2718 with #ifndef ... #endif, as suggested in the tracker issue.
2719
27202015-10-18 Werner Lemberg <wl@gnu.org>
2721
Werner Lembergdcfc4d92015-10-18 16:47:06 +02002722 [truetype] Better protection against malformed `fpgm' (#46223).
2723
2724 * src/truetype/ttobjs.c (tt_size_init_bytecode): Don't execute a
2725 malformed `fpgm' table more than once.
2726
Werner Lemberg8edfcbe2015-10-17 08:11:16 +020027272015-10-17 Werner Lemberg <wl@gnu.org>
2728
Werner Lemberg7643b582015-10-17 15:51:29 +02002729 * src/cid/cidgload.c (cid_load_glyph): Fix memory leak.
2730
2731 Reported by Kostya Serebryany <kcc@google.com>.
2732
27332015-10-17 Werner Lemberg <wl@gnu.org>
2734
Werner Lembergb1857472015-10-17 14:21:41 +02002735 [bdf] Prevent memory leak (#46217).
2736
2737 * src/bdf/bdflib.c (_bdf_parse_glyphs) <STARTCHAR>: Check
2738 _BDF_GLYPH_BITS.
2739
27402015-10-17 Werner Lemberg <wl@gnu.org>
2741
Werner Lemberge1ca18d2015-10-17 11:51:27 +02002742 [bdf] Use stream size to adjust number of glyphs.
2743
2744 * src/bdf/bdflib.c (ACMSG17): New message macro.
2745 (_bdf_parse_t): Add member `size'.
2746 (bdf_load_font): Set `size'.
2747 (_bdf_parse_glyphs): Adjust `cnt' if necessary.
2748
27492015-10-17 Werner Lemberg <wl@gnu.org>
2750
Werner Lemberg0af21dc2015-10-17 09:29:52 +02002751 * src/cid/cidload.c (cid_parse_dict): Check `[FG]DBytes' size.
2752
27532015-10-17 Werner Lemberg <wl@gnu.org>
2754
Werner Lemberg0ba98da2015-10-17 09:11:02 +02002755 * src/cid/cidgload.c (cid_glyph_load): Check file offsets (#46222).
2756
27572015-10-17 Werner Lemberg <wl@gnu.org>
2758
Werner Lemberg8edfcbe2015-10-17 08:11:16 +02002759 [psaux] Fix heap buffer overflow (#46221).
2760
2761 * src/psaux/t1decode.c (t1_decoder_parse_charstring) <operator 12>:
2762 Fix limit check.
2763
27642015-10-17 Werner Lemberg <wl@gnu.org>
Werner Lemberga5ecfb42015-10-17 06:15:55 +02002765
2766 * src/cid/cidload.c (cid_parse_dict): Handle invalid input (#46220).
2767
27682015-10-15 Kostya Serebryany <kcc@google.com>
Kostya Serebryany266976b2015-10-15 22:15:53 -07002769
2770 [ftfuzzer] Add README.
2771
2772 * src/tools/ftfuzzer/README: New file.
2773
Ben Wagnerf0cc1732015-12-14 07:00:41 +010027742015-10-15 Ben Wagner <bungeman@gmail.com>
Bungeman65d89802015-10-15 23:50:16 +02002775
2776 [bdf] Fix memory leak (#46213).
2777
2778 * src/bdf/bdflib.c (bdf_load_font): Always go to label `Fail' in
2779 case of error.
2780
Werner Lemberg837ad9d2015-10-15 21:15:45 +020027812015-10-15 Werner Lemberg <wl@gnu.org>
2782
Werner Lemberg24a1fcd2015-10-15 21:50:15 +02002783 [truetype] Add TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46208).
2784
2785 * devel/ftoption.h, include/freetype/config/ftoption.h
2786 (TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES): New configuration macro.
2787
2788 * src/truetype/ttinterp.c (MAX_RUNNABLE_OPCODES): Removed.
2789 (TT_RunIns): Updated.
2790
27912015-10-15 Werner Lemberg <wl@gnu.org>
2792
Werner Lemberg837ad9d2015-10-15 21:15:45 +02002793 * src/truetype/ttinterp.c (TT_RunIns): Fix bytecode stack tracing.
2794
2795 The used indices were off by 1.
2796
Ben Wagnerf0cc1732015-12-14 07:00:41 +010027972015-10-15 Ben Wagner <bungeman@gmail.com>
Werner Lemberg8b76eaf2015-10-15 18:28:43 +02002798 Werner Lemberg <wl@gnu.org>
2799
2800 * src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211).
2801
Werner Lemberge03214e2015-10-15 16:58:13 +020028022015-10-15 Werner Lemberg <wl@gnu.org>
2803
2804 [base] Compute MD5 checksums only if explicitly requested.
2805
2806 This improves profiling accuracy.
2807
2808 * src/base/ftobjs.c (FT_Render_Glyph_Internal): Implement it.
2809
Werner Lemberg2a20c922015-10-14 15:23:15 +020028102015-10-14 Werner Lemberg <wl@gnu.org>
2811
2812 [base] Use `FT_' namespace for MD5 functions (#42366).
2813
2814 * src/base/ftobjs.c (MD5_*): Define as `FT_MD5_*'.
2815 Undefine HAVE_OPENSSL.
2816
Werner Lembergf96094e2015-10-13 07:13:56 +020028172015-10-13 Werner Lemberg <wl@gnu.org>
2818
Werner Lemberg85399152015-10-13 20:43:19 +02002819 [type1] Correctly handle missing MM axis names (#46202).
2820
2821 * src/type1/t1load.c (T1_Get_MM_Var): Implement it.
2822
28232015-10-13 Werner Lemberg <wl@gnu.org>
2824
Werner Lemberg58b61b62015-10-13 18:26:18 +02002825 [pcf] Quickly exit if font index < 0.
2826
2827 Similar to other font formats, this commit makes the parser no
2828 longer check the whole PCF file but only the header and the TOC if
2829 we just want to get the number of available faces (and a proper
2830 recognition of the font format).
2831
2832 * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
2833 Exit quickly if face_index < 0.
2834
2835 * src/pcfread.c (pcf_load_font): Add `face_index' argument.
2836 Exit quickly if face_index < 0.
2837
2838 * src/pcf/pcf.h: Updated.
2839
28402015-10-13 Werner Lemberg <wl@gnu.org>
2841
Werner Lembergbdb56bb2015-10-13 11:51:13 +02002842 [ftfuzzer] Handle TTCs and MM/GX variations.
2843
2844 This patch also contains various other improvements.
2845
2846 * src/tools/ftfuzzer/ftfuzzer.cc: Add preprocessor guard to reject
2847 pre-C++11 compilers.
2848 (FT_Global): New class. Use it to provide a global constructor and
2849 destructor for the `FT_Library' object.
2850 (setIntermediateAxis): New function to select an (arbitrary)
2851 instance.
2852 (LLVMFuzzerTestOneInput): Loop over all faces and named instances.
2853 Also call `FT_Set_Char_Size'.
2854
28552015-10-13 Werner Lemberg <wl@gnu.org>
2856
Werner Lemberg43a96eb2015-10-13 11:18:55 +02002857 [truetype] Refine some GX sanity tests.
2858
2859 Use the `gvar' table size instead of the remaining bytes in the
2860 stream.
2861
2862 * src/truetype/ttgxvar.h (GX_BlendRec): New field `gvar_size'.
2863
2864 * src/truetype/ttgxvar.c (ft_var_load_gvar): Set `gvar_size'.
2865 (ft_var_readpackedpoints, ft_var_readpackeddeltas: New argument
2866 `size'.
2867 (tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Updated.
2868
28692015-10-13 Werner Lemberg <wl@gnu.org>
2870
Werner Lemberg052f6c52015-10-13 08:24:32 +02002871 [truetype] Another GX sanity test.
2872
2873 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Check
2874 `tupleCount'.
2875 Add tracing message.
2876
28772015-10-13 Werner Lemberg <wl@gnu.org>
2878
Werner Lemberg7ef0d862015-10-13 08:14:20 +02002879 [truetype] Fix memory leak for broken GX fonts (#46188).
2880
2881 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix scope of
2882 deallocation.
2883
28842015-10-13 Werner Lemberg <wl@gnu.org>
2885
Werner Lembergf96094e2015-10-13 07:13:56 +02002886 [truetype] Fix commit from 2015-10-10.
2887
2888 * src/truetype/ttgxvar.c (ft_var_load_gvar): Add missing error
2889 handling body to condition.
2890
Werner Lembergb9880aa2015-10-12 10:13:26 +020028912015-10-12 Werner Lemberg <wl@gnu.org>
2892
2893 [unix] Make MKDIR_P actually work.
2894
2895 * builds/unix/configure.raw: Fix underquoting of `INSTALL' and
2896 `MKDIR_P'.
2897
2898 Problem reported by Dan Liddell <lddll@yahoo.com>.
2899
Werner Lemberg4f7f6f62015-10-11 07:55:25 +020029002015-10-11 Werner Lemberg <wl@gnu.org>
2901
2902 [sfnt] Improve extraction of number of named instances.
2903
2904 * src/sfnt/sfobjs.c (sfnt_init_face)
2905 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check number of instances against
2906 `fvar' table size.
2907
Alexei Podtelezhnikovc14ae9c2015-10-10 22:28:26 -040029082015-10-10 Alexei Podtelezhnikov <apodtele@gmail.com>
2909
2910 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix overflow
2911 (#46149).
2912
Werner Lembergd353f6e2015-10-10 06:54:46 +020029132015-10-10 Werner Lemberg <wl@gnu.org>
2914
Werner Lemberg8de39a72015-10-10 13:34:11 +02002915 [sfnt] Fix infinite loops with broken cmaps (#46167).
2916
2917 * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next): Take care
Werner Lemberga724dcf2015-10-11 05:50:07 +02002918 of border conditions (i.e., if the loops exit naturally).
Werner Lemberg8de39a72015-10-10 13:34:11 +02002919
29202015-10-10 Werner Lemberg <wl@gnu.org>
2921
Werner Lembergda346732015-10-10 10:21:27 +02002922 [truetype] More sanity tests for GX handling.
2923
2924 These tests should mainly help avoid unnecessarily large memory
2925 allocations in case of malformed fonts.
2926
2927 * src/truetype/ttgxvar.c (ft_var_readpackedpoints,
2928 ft_var_readpackeddeltas): Check number of points against stream
2929 size.
2930 (ft_var_load_avar): Check `pairCount' against table length.
2931 (ft_var_load_gvar): Check `globalCoordCount' and `glyphCount'
2932 against table length.
2933 (tt_face_vary_cvt): Check `tupleCount' and `offsetToData'.
2934 Fix trace.
2935 (TT_Vary_Apply_Glyph_Deltas): Fix trace.
2936 Free `sharedpoints' to avoid memory leak.
2937
29382015-10-10 Werner Lemberg <wl@gnu.org>
2939
Werner Lembergc220d8b2015-10-10 08:13:04 +02002940 [truetype] Better protection against malformed GX data (#46166).
2941
2942 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Correctly
2943 handle empty `localpoints' array.
2944
29452015-10-10 Werner Lemberg <wl@gnu.org>
2946
Werner Lembergd353f6e2015-10-10 06:54:46 +02002947 * src/pcf/pcfread.c (pcf_read_TOC): Check stream size (#46162).
2948
Werner Lembergc12956e2015-10-09 09:38:32 +020029492015-10-09 Werner Lemberg <wl@gnu.org>
2950
2951 * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use real stream size.
2952
Werner Lemberg12112242015-10-08 08:55:15 +020029532015-10-08 Werner Lemberg <wl@gnu.org>
2954
Werner Lembergd98053c2015-10-08 23:17:41 +02002955 [pcf] Protect against invalid number of TOC entries (#46159).
2956
2957 * src/pcf/pcfread.c (pcf_read_TOC): Check number of TOC entries
2958 against size of data stream.
2959
29602015-10-08 Werner Lemberg <wl@gnu.org>
2961
Werner Lemberg06c2d332015-10-08 21:31:57 +02002962 [type42] Protect against invalid number of glyphs (#46159).
2963
2964 * src/type42/t42parse.c (t42_parse_charstrings): Check number of
2965 `CharStrings' dictionary entries against size of data stream.
2966
29672015-10-08 Werner Lemberg <wl@gnu.org>
2968
Werner Lemberg983b00e2015-10-08 18:44:45 +02002969 [sfnt] Fix some signed overflows (#46149).
2970
2971 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
2972 <TT_SBIT_TABLE_TYPE_SBIX>: Use `FT_MulDiv'.
2973
29742015-10-08 Werner Lemberg <wl@gnu.org>
2975
Werner Lemberg12112242015-10-08 08:55:15 +02002976 [type1] Protect against invalid number of subroutines (#46150).
2977
2978 * src/type1/t1load.c (parse_subrs): Check number of
2979 `Subrs' dictionary entries against size of data stream.
2980
Kostya Serebryanydde84f22015-10-07 22:18:22 +020029812015-10-07 Kostya Serebryany <kcc@google.com>
2982
2983 [ftfuzzer] Add support for LLVM's LibFuzzer.
2984
2985 * src/tools/ftfuzzer/ftfuzzer.cc, src/tools/runinput.cc: New files.
2986
Alexei Podtelezhnikovc14ae9c2015-10-10 22:28:26 -040029872015-10-06 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov6eb61582015-10-06 22:39:54 -04002988
2989 [smooth] Faster alternative line renderer.
2990
2991 This implementation renders the entire line segment at once without
2992 subdividing it into scanlines. The main speed improvement comes from
2993 reducing the number of divisions to just two per line segment, which
2994 is a bare minimum to calculate cell coverage in a smooth rasterizer.
2995 Notably, the progression from cell to cell does not itself require any
2996 divisions at all. The speed improvement is more noticeable at larger
2997 sizes.
2998
2999 * src/smooth/ftgrays.c (gray_render_line): New implementation.
3000
Werner Lemberg066a4912015-10-06 07:55:32 +020030012015-10-06 Werner Lemberg <wl@gnu.org>
3002
3003 [cff] Return correct PS names from pure CFF (#46130).
3004
3005 * src/cff/cffdrivr.c (cff_get_ps_name): Use SFNT service only for
3006 SFNT.
3007
Werner Lemberg8cabd912015-10-04 08:18:01 +020030082015-10-04 Werner Lemberg <wl@gnu.org>
3009
Werner Lemberg30fe5e72015-10-04 13:08:08 +02003010 [base] Replace left shifts with multiplication (#46118).
3011
3012 * src/base/ftglyph.c (ft_bitmap_glyph_bbox, FT_Get_Glyph): Do it.
3013
30142015-10-04 Werner Lemberg <wl@gnu.org>
3015
Werner Lemberg8cabd912015-10-04 08:18:01 +02003016 * Version 2.6.1 released.
3017 =========================
3018
3019
3020 Tag sources with `VER-2-6-1'.
3021
3022 * docs/VERSION.DLL: Update documentation and bump version number to
3023 2.6.1.
3024
3025 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
3026 builds/windows/vc2005/index.html,
3027 builds/windows/vc2008/freetype.vcproj,
3028 builds/windows/vc2008/index.html,
3029 builds/windows/vc2010/freetype.vcxproj,
3030 builds/windows/vc2010/index.html,
3031 builds/windows/visualc/freetype.dsp,
3032 builds/windows/visualc/freetype.vcproj,
3033 builds/windows/visualc/index.html,
3034 builds/windows/visualce/freetype.dsp,
3035 builds/windows/visualce/freetype.vcproj,
3036 builds/windows/visualce/index.html,
3037 builds/wince/vc2005-ce/freetype.vcproj,
3038 builds/wince/vc2005-ce/index.html,
3039 builds/wince/vc2008-ce/freetype.vcproj,
3040 builds/wince/vc2008-ce/index.html: s/2.6/2.6.1/, s/26/261/.
3041
3042 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
3043
3044 * builds/unix/configure.raw (version_info): Set to 18:1:12.
3045 * CMakeLists.txt (VERSION_PATCH): Set to 1.
3046
3047 * src/autofit/afmodule.c [AF_DEBUG_AUTOFIT]: Ensure C linking for
3048 dumping functions.
3049
30502015-10-04 Werner Lemberg <wl@gnu.org>
Werner Lemberg53838ce2015-10-03 21:12:25 +02003051
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04003052 [bzip2, gzip] Avoid access of uninitialized memory (#46109).
Werner Lemberg53838ce2015-10-03 21:12:25 +02003053
Werner Lembergb260dc92015-10-04 07:39:22 +02003054 * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_input), src/gzip/ftgzip.c
3055 (ft_gzip_file_fill_input): In case of an error, adjust the limit to
3056 avoid copying uninitialized memory.
3057
30582015-10-03 Werner Lemberg <wl@gnu.org>
3059
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04003060 [bzip2, gzip] Avoid access of uninitialized memory (#46109).
Werner Lembergb260dc92015-10-04 07:39:22 +02003061
Werner Lemberg53838ce2015-10-03 21:12:25 +02003062 * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_output), src/gzip/ftgzip.c
3063 (ft_gzip_file_fill_output): In case of an error, adjust the limit to
3064 avoid copying uninitialized memory.
3065
Alexei Podtelezhnikove2dae8f2015-10-01 22:03:34 -040030662015-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
3067
3068 [smooth] Clean up worker.
3069
3070 * src/smooth/ftgrays.c (gray_TWorker): Remove never used fields.
3071
Werner Lemberg5f8f44d2015-10-01 14:16:03 +020030722015-10-01 Werner Lemberg <wl@gnu.org>
3073
Werner Lemberg90e437e2015-10-01 20:00:27 +02003074 [sfnt] Make `tt_cmap4_char_map_linear' more robust (#46078).
3075
3076 * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Take care of
3077 border conditions (i.e., if the loop exits naturally).
3078
30792015-10-01 Werner Lemberg <wl@gnu.org>
3080
Werner Lembergfab67b82015-10-01 16:47:05 +02003081 * src/autofit/afranges.c (af_deva_nonbase_uniranges): Fix ranges.
3082 They should be a subset of `af_deva_uniranges'.
3083
30842015-10-01 Werner Lemberg <wl@gnu.org>
3085
Werner Lemberg5f8f44d2015-10-01 14:16:03 +02003086 [sfnt] Make `tt_cmap4_char_map_linear' faster (#46078).
3087
3088 * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Use inner loop to
3089 reject too large glyph indices.
3090
Alexei Podtelezhnikov8bbcfb22015-09-30 23:08:53 -040030912015-09-30 Alexei Podtelezhnikov <apodtele@gmail.com>
3092
3093 [smooth] Clean up worker.
3094
3095 * src/smooth/ftgrays.c (gray_TWorker): Remove lightly used `last_ey'.
3096 (gray_start_cell, gray_render_line): Update.
3097
Werner Lemberg8651f372015-09-30 10:26:10 +020030982015-09-30 Werner Lemberg <wl@gnu.org>
3099
Werner Lembergdbd04262015-09-30 17:52:42 +02003100 [autofit] Replace `no-base' with `non-base'.
3101
3102 * src/autofit/*: Do it.
3103
31042015-09-30 Werner Lemberg <wl@gnu.org>
3105
Werner Lemberg2ff83a52015-09-30 14:44:29 +02003106 [sfnt] Rewrite `tt_cmap4_char_map_linear' (#46078).
3107
3108 * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Add code to better
3109 skip invalid segments.
3110 If searching the next character, provide a more efficient logic to
3111 speed up the code.
3112
31132015-09-30 Werner Lemberg <wl@gnu.org>
3114
Werner Lemberg8651f372015-09-30 10:26:10 +02003115 [truetype] Adjust number of glyphs for malformed `loca' tables.
3116
3117 * src/truetype/ttpload.c (tt_face_load_loca): Implement it.
3118
Werner Lemberg483007f2015-09-29 11:22:15 +020031192015-09-29 Werner Lemberg <wl@gnu.org>
3120
3121 [pshinter] Avoid harmless overflow (#45984).
3122
3123 * src/pshinter/pshglob.c (psh_blues_set_zones): Fix it.
3124
Werner Lemberga3046562015-09-28 09:45:56 +020031252015-09-28 Werner Lemberg <wl@gnu.org>
3126
3127 [autofit] Add support for Lao script.
3128
3129 Thanks to Danh Hong <danhhong@gmail.com> for guidance with blue zone
3130 characters!
3131
3132 * src/autofit/afblue.dat: Add blue zone data for Lao.
3133
3134 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3135
3136 * src/autofit/afscript.h: Add Lao standard characters.
3137
3138 * src/autofit/afranges.c: Add Lao data.
3139
3140 * src/autofit/afstyles.h: Add Lao data.
3141
suzuki toshiya8a05d252015-09-28 01:40:21 +090031422015-09-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
Werner Lembergf45c0bf2015-12-06 09:58:18 +01003143
suzuki toshiyafb5268c2015-09-28 02:01:43 +09003144 [base] Fix a leak by broken sfnt-PS or resource fork (#46028).
3145
3146 open_face_from_buffer() frees passed buffer if valid font
3147 is not found. But if copying to the buffer is failed,
3148 the allocated buffer should be freed within the caller.
3149
3150 * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Free
3151 the buffer `sfnt_ps' if an error caused before calling
3152 open_face_from_buffer().
3153 (Mac_Read_sfnt_Resource): Free the buffer `sfnt_data' if
3154 an error caused before calling open_face_from_buffer();
3155
31562015-09-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya8a05d252015-09-28 01:40:21 +09003157
3158 [mac] Fix buffer size calculation for LWFN font.
3159
3160 * src/base/ftmac.c (read_lwfn): Cast post_size to FT_ULong
3161 to prevent confused copy by too large chunk size.
3162
Alexei Podtelezhnikov3dffe8e2015-09-27 11:30:17 -040031632015-09-26 Alexei Podtelezhnikov <apodtele@gmail.com>
3164
3165 * src/smooth/ftgrays.c (PIXEL_MASK): Remove unused macro.
3166
Werner Lemberg41877532015-09-26 15:19:54 +020031672015-09-26 Werner Lemberg <wl@gnu.org>
3168
Werner Lemberg19188a92015-09-26 16:57:17 +02003169 [autofit] Minor tracing improvement.
3170
3171 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Don't emit
3172 blue zones header line if there are no blue zones.
3173
31742015-09-26 Werner Lemberg <wl@gnu.org>
3175
Werner Lemberg41877532015-09-26 15:19:54 +02003176 [bzip2, gzip, lzw] Harmonize function signatures with prototype.
3177
3178 Suggested by Hin-Tak Leung.
3179
3180 * src/bzip2/ftbzip2.c (ft_bzip2_stream_io), src/gzip/ftgzip.c
3181 (ft_gzip_stream_io), src/lzw/ftlzw.c (ft_lzw_stream_io): Do it.
3182
Hin-Tak Leung265ade82015-09-26 14:51:30 +020031832015-09-26 Hin-Tak Leung <htl10@users.sourceforge.net>
3184
3185 Add new FT_LOAD_COMPUTE_METRICS load flag.
3186
3187 * include/freetype/freetype.h (FT_LOAD_COMPUTE_METRICS): New macro.
3188 * src/truetype/ttgload.c (compute_glyph_metrics): Usage.
3189
Werner Lembergd57f2272015-09-26 08:44:26 +020031902015-09-26 Werner Lemberg <wl@gnu.org>
3191
3192 * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add cast.
3193
Werner Lemberg2439c512015-09-25 16:54:28 +020031942015-09-25 Werner Lemberg <wl@gnu.org>
3195
3196 [type1] Protect against invalid number of glyphs (#46029).
3197
3198 * src/type1/t1load.c (parse_charstrings): Check number of
3199 `CharStrings' dictionary entries against size of data stream.
3200
Werner Lembergc409eb12015-09-24 12:39:38 +020032012015-09-23 Werner Lemberg <wl@gnu.org>
3202
Werner Lemberg5339c752015-09-24 13:39:44 +02003203 [sfnt] Better checks for invalid cmaps (2/2) (#46019).
3204
3205 While the current code in `FT_Get_Next_Char' correctly rejects
3206 out-of-bounds glyph indices, it can be extremely slow for malformed
3207 cmaps that use 32bit values. This commit tries to improve that.
3208
3209 * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next,
3210 tt_cmap12_char_map_binary, tt_cmap13_next,
3211 tt_cmap13_char_map_binary): Reject glyph indices larger than or
3212 equal to the number of glyphs.
3213
32142015-09-23 Werner Lemberg <wl@gnu.org>
3215
Werner Lembergc409eb12015-09-24 12:39:38 +02003216 [base, sfnt] Better checks for invalid cmaps (1/2).
3217
3218 * src/base/ftobjs.c (FT_Get_Char_Index): Don't return out-of-bounds
3219 glyph indices.
3220 (FT_Get_First_Char): Updated.
3221
3222 * src/sfnt/ttcmap.c (tt_cmap6_char_next): Don't return character
3223 codes greater than 0xFFFF.
3224
3225 (tt_cmap8_char_index): Avoid integer overflow in computation of
3226 glyph index.
3227 (tt_cmap8_char_next): Avoid integer overflows in computation of
3228 both next character code and glyph index.
3229
3230 (tt_cmap10_char_index): Fix unsigned integer logic.
3231 (tt_cmap10_char_next): Avoid integer overflow in computation of
3232 next character code.
3233
3234 (tt_cmap12_next): Avoid integer overflows in computation of both
3235 next character code and glyph index.
3236 (tt_cmap12_char_map_binary): Ditto.
3237 (tt_cmap12_char_next): Simplify.
3238
3239 (tt_cmap13_char_map_binary): Avoid integer overflow in computation
3240 of next character code.
3241 (tt_cmap13_char_next): Simplify.
3242
suzuki toshiyae982f5b2015-09-21 23:07:22 +090032432015-09-21 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3244
Werner Lembergd7f456e2015-09-26 08:37:14 +02003245 [base] Check too long POST and sfnt resource (#45919).
suzuki toshiyae982f5b2015-09-21 23:07:22 +09003246
Werner Lembergd7f456e2015-09-26 08:37:14 +02003247 * src/base/ftbase.h (FT_MAC_RFORK_MAX_LEN): Maximum length of the
3248 resource fork for Mac OS. Resource forks larger than 16 MB can be
3249 written but can't be handled correctly, at least in Carbon routine.
3250 See https://support.microsoft.com/en-us/kb/130437.
suzuki toshiyae982f5b2015-09-21 23:07:22 +09003251
Werner Lembergd7f456e2015-09-26 08:37:14 +02003252 * src/base/ftobjs.c (Mac_Read_POST_Resource): No need to use `0x'
3253 prefix for `%p' formatter.
suzuki toshiyae982f5b2015-09-21 23:07:22 +09003254
Werner Lembergd7f456e2015-09-26 08:37:14 +02003255 * src/base/ftbase.c (Mac_Read_POST_Resource): Check the fragment and
3256 total size of the concatenated POST resource before buffer
3257 allocation.
3258 (Mac_Read_sfnt_Resource): Check the declared size of sfnt resource
suzuki toshiyae982f5b2015-09-21 23:07:22 +09003259 before buffer allocation.
suzuki toshiyae982f5b2015-09-21 23:07:22 +09003260
Werner Lembergd7f456e2015-09-26 08:37:14 +02003261 * src/base/ftmac.c (read_lwfn, FT_New_Face_From_SFNT): Check the
3262 total resource size before buffer allocation.
suzuki toshiyae982f5b2015-09-21 23:07:22 +09003263
Werner Lembergcb7a5122015-09-19 07:58:03 +020032642015-09-19 Werner Lemberg <wl@gnu.org>
3265
Werner Lemberg730b6d72015-09-19 12:41:12 +02003266 [sfnt] Improve handling of invalid SFNT table entries (#45987).
3267
3268 This patch fixes weaknesses in function `tt_face_load_font_dir'.
3269
3270 - It incorrectly assumed that valid tables are always at the
3271 beginning. As a consequence, some valid tables after invalid
3272 entries (which are ignored) were never seen.
3273
3274 - Duplicate table entries (this is, having the same tag) were not
3275 rejected.
3276
3277 - The number of valid tables was sometimes too large, leading to
3278 access of invalid tables.
3279
3280 * src/sfnt/ttload.c (check_table_dir): Add argument to return number
3281 of valid tables.
3282 Add another tracing message.
3283 (tt_face_load_font_dir): Only allocate table array for valid
3284 entries as returned by `check_table_dir'.
3285 Reject duplicate tables and adjust number of valid tables
3286 accordingly.
3287
32882015-09-19 Werner Lemberg <wl@gnu.org>
3289
Werner Lembergcb7a5122015-09-19 07:58:03 +02003290 [pcf] Improve `FT_ABS' fix from 2015-09-17 (#45999).
3291
3292 * src/pcf/pcfread.c (pcf_load_font): Do first the cast to FT_Short,
3293 then take the absolute value.
3294 Also apply FT_ABS to `height'.
3295
Werner Lemberg9db9add2015-09-17 13:42:59 +020032962015-09-17 Werner Lemberg <wl@gnu.org>
3297
Werner Lembergf28c95c2015-09-17 19:30:26 +02003298 [type42] Fix memory leak (#45989).
3299
3300 * src/type42/t42parse.c (t42_parse_charstrings): Allow only a single
3301 `CharStrings' array.
3302
33032015-09-17 Werner Lemberg <wl@gnu.org>
3304
Werner Lemberg4942c2b2015-09-17 17:56:53 +02003305 [psaux] Fix memory leak (#45986).
3306
3307 * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
3308 Free `temp' in case of error.
3309
33102015-09-17 Werner Lemberg <wl@gnu.org>
3311
Werner Lemberg7d364b72015-09-17 16:31:58 +02003312 [psaux] Improve tracing message.
3313
3314 * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
3315 Handle plural correctly.
3316
33172015-09-17 Werner Lemberg <wl@gnu.org>
3318
Werner Lembergc838c4f2015-09-17 16:22:40 +02003319 [pcf] Fix integer overflows (#45985).
3320
3321 * src/pcf/pcfread.c (pcf_load_font): Use FT_MulDiv.
3322
33232015-09-17 Werner Lemberg <wl@gnu.org>
3324
Werner Lemberg9db9add2015-09-17 13:42:59 +02003325 [pcf] Use FT_ABS for some property values (#45893).
3326
3327 * src/pcf/pcfread.c (pcf_load_font): Take absolute values for
3328 AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and
3329 RESOLUTION_Y. In tracing mode, add warnings.
3330
Werner Lembergbd0438a2015-09-16 18:05:43 +020033312015-09-16 Werner Lemberg <wl@gnu.org>
3332
3333 Minor fixes for some clang warnings.
3334
3335 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Cast, possible missing
3336 initialization.
3337
3338 * src/truetype/ttgload.c (TT_Process_Composite_Component): Cast.
3339
Werner Lemberg581c7e22015-09-15 06:49:06 +020033402015-09-15 Werner Lemberg <wl@gnu.org>
3341
Werner Lemberg19cb1122015-09-15 08:52:36 +02003342 [type1, type42] Fix memory leaks (#45966).
3343
3344 * src/type1/t1load.c (parse_blend_axis_types): Handle multiple axis
3345 names.
3346 (parse_blend_design_map): Allow only a single design map.
3347 (parse_encoding): Handle multiple encoding vectors.
3348
3349 * src/type42/t42parse.c (t42_parse_encoding): Handle multiple
3350 encoding vectors.
3351
33522015-09-15 Werner Lemberg <wl@gnu.org>
3353
Werner Lemberg7f0f4012015-09-15 07:23:53 +02003354 [truetype] Fix integer type (#45965).
3355
3356 * src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Implement it.
3357
33582015-09-15 Werner Lemberg <wl@gnu.org>
3359
Werner Lemberg577daf12015-09-15 07:10:16 +02003360 * src/pcf/pcfread.c (pcf_load_font): Fix integer overflow (#45964).
3361
33622015-09-15 Werner Lemberg <wl@gnu.org>
3363
Werner Lemberg581c7e22015-09-15 06:49:06 +02003364 [type1, type42] Check encoding array size (#45961).
3365
3366 * src/type1/t1load.c (parse_encoding), src/type42/t42parse.c
3367 (t42_parse_encoding): Do it.
3368
Alexei Podtelezhnikov3ea0d2c2015-09-13 23:19:34 -040033692015-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
3370
3371 * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Improve.
3372
Werner Lemberg7962a152015-09-14 00:38:26 +020033732015-09-14 Werner Lemberg <wl@gnu.org>
3374
3375 [type1] Fix another potential buffer overflow (#45955).
3376
3377 * src/type1/t1parse (T1_Get_Private_Dict): Assure that check for
3378 `eexec' doesn't exceed `limit'.
3379
Werner Lemberge40e8b32015-09-13 08:05:50 +020033802015-09-13 Werner Lemberg <wl@gnu.org>
3381
Werner Lembergff7d6402015-09-13 23:53:16 +02003382 Replace `mkinstalldirs' with AC_PROG_MKDIR_P.
3383
3384 * builds/unix/mkinstalldirs: Removed, no longer needed.
3385
3386 * builds/unix/configure.raw: Call `AC_PROG_MKDIR_P'.
3387 Update pwd call for `$INSTALL'.
3388
3389 * builds/unix/unix-def.in (MKINSTALLDIRS): Use `@MKDIR_P@'.
3390
3391 * autogen.sh: Updated.
3392
33932015-09-13 Werner Lemberg <wl@gnu.org>
3394
Werner Lemberg3df92aa2015-09-13 09:21:52 +02003395 [winfonts] Check alignment shift count for resource data (#45938).
3396
3397 * src/winfonts/winfnt.c (fnt_face_get_dll_font): Implement it.
3398
33992015-09-13 Werner Lemberg <wl@gnu.org>
3400
Werner Lemberge3058612015-09-13 08:41:43 +02003401 [type1] Fix potential buffer overflow (#45923).
3402
3403 * src/type1/t1parse.c (T1_Get_Private_Dict): Assure `cur' doesn't
3404 point to end of file buffer.
3405
34062015-09-13 Werner Lemberg <wl@gnu.org>
3407
Werner Lemberge40e8b32015-09-13 08:05:50 +02003408 [gzip] Fix access of small compressed files (#45937).
3409
3410 * src/gzip/ftgzip.c (ft_gzip_stream_close): Avoid memory leak.
3411
3412 (ft_gzip_get_uncompressed_file): Correct byte order while reading
3413 unsigned long value. Without this change, the whole optimization of
3414 accessing small files in `FT_Stream_OpenGzip' is never executed! As
3415 a consequence, access to PCF files in general (which are normally
3416 small files) should be much improved now as originally intended.
3417
Werner Lemberg23423bc2015-09-11 08:28:27 +020034182015-09-11 Werner Lemberg <wl@gnu.org>
3419
Werner Lembergdb5a4a92015-09-12 08:32:55 +02003420 [psaux] Fix potential buffer overflow (#45922).
3421
3422 * src/psaux/psobjs.c (ps_parser_skip_PS_token): If a token is
3423 enclosed in balanced expressions, ensure that the cursor position
3424 doesn't get larger than the current limit.
3425
34262015-09-11 Werner Lemberg <wl@gnu.org>
3427
Werner Lemberg19b82cf2015-09-11 20:25:32 +02003428 [base] Avoid crash while tracing `load_mac_face'.
3429
3430 Reported in Savannah bug #45919.
3431
3432 * src/base/ftobjs.c (load_mac_face): Honour FT_OPEN_MEMORY while
3433 tracing.
3434
34352015-09-11 Werner Lemberg <wl@gnu.org>
3436
Werner Lemberg23423bc2015-09-11 08:28:27 +02003437 [type42] Fix endless loop (#45920).
3438
3439 * src/type42/t42parse.c (t42_parse_encoding): Synchronize with
3440 type1's `parse_encoding'.
3441
Werner Lemberge5a27a72015-09-10 07:44:11 +020034422015-09-10 Werner Lemberg <wl@gnu.org>
3443
3444 [docmaker] Allow `-' in bold and italic markup.
3445
3446 * src/tools/docmaker/sources.py (re_italic, re_bold): Adjust
3447 accordingly.
3448
Alexei Podtelezhnikov09948e42015-09-09 21:30:15 -040034492015-09-09 Alexei Podtelezhnikov <apodtele@gmail.com>
3450
3451 * src/base/ftcalc.c (FT_RoundFix): Improve.
3452
Wojciech Mamrak822acb02015-09-09 07:59:10 +020034532015-09-09 Wojciech Mamrak <wmamrak@gmail.com>
3454
3455 * src/base/ftcalc.c (FT_CeilFix, FT_FloorFix): Normalize.
3456
3457 This commit makes the functions behave as expected, this is,
3458 rounding towards plus or minus infinity.
3459
Alexei Podtelezhnikovb002f682015-09-07 13:47:36 -040034602015-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
3461
3462 * src/smooth/ftgrays.c (gray_render_line): Simplify clipping.
3463
Alexei Podtelezhnikov5a6dc872015-09-04 23:14:46 -040034642015-09-04 Alexei Podtelezhnikov <apodtele@gmail.com>
3465
3466 [raster,smooth] Microoptimizations.
3467
3468 * src/raster/ftraster.c (Insert_Y_Turn, Finalize_Profile_Table,
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04003469 Bezier_Up, ): Use do-while loops.
Alexei Podtelezhnikov5a6dc872015-09-04 23:14:46 -04003470
3471 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line,
3472 gray_convert_glyph): Ditto.
3473
Werner Lemberg696b7122015-09-04 10:10:59 +020034742015-09-04 Werner Lemberg <wl@gnu.org>
3475
Werner Lembergd3cba0e2015-09-04 10:28:53 +02003476 [autofit] Redesign code ranges (2/2).
3477
3478 This commit adds two fallback scripts (`latb', `latp') and
3479 implements support for the no-base character ranges introduced in
3480 the previous commit.
3481
3482 * src/autofit/aftypes.h (AF_ScriptClassRec): Add
3483 `script_uni_nobase_ranges' field.
3484 (AF_DEFINE_SCRIPT_CLASS): Updated.
3485
3486 * src/autofit/afscript.h, src/autofit/afstyles.h: Add `latb' and
3487 `latp' fallback scripts.
3488
3489 * src/autofit/afblue.dat: Add blue zones for Latin subscript and
3490 superscript fallback scripts.
3491
3492 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3493
3494 * src/autofit/afglobal.h (AF_NOBASE): New style flag for no-base
3495 characters.
3496 (AF_STYLE_MASK): Updated.
3497
3498 * src/autofit/afglobal.c (SCRIPT): Updated.
3499 (af_face_globals_compute_style_coverage): Handle new style flag.
3500
3501 * src/autofit/aflatin.c (af_latin_hints_apply): Handle new style
3502 flag.
3503
3504 * src/autofit/afranges.h (SCRIPT): Use it to export no-base ranges.
3505
35062015-09-04 Werner Lemberg <wl@gnu.org>
3507
Werner Lemberg696b7122015-09-04 10:10:59 +02003508 [autofit] Redesign code ranges (1/2).
3509
3510 This patch introduces auxiliary code ranges that identify no-base
3511 characters; they refer to glyphs of a script that should be hinted
3512 without alignments to blue zones (mostly diacritics).
3513
3514 It also splits off ranges for fallback scripts that handle subscript
3515 and superscript characters not covered by OpenType features. For
3516 example, this greatly helps improve the hinting of various phonetic
3517 alphabets, which contain a large amount characters that look like
3518 superscript glyphs.
3519
3520 Finally, code ranges are updated to Unicode 8.0, and enclosed
3521 characters are removed in general since they normally look better if
3522 they stay unhinted.
3523
3524 * src/autofit/afranges.c (af_latn_uniranges): Updated to Unicode
3525 8.0.
3526 Split off superscript-like and subscript-like glyphs into...
3527
3528 (af_latb_uniranges, af_latp_uniranges): ... these two new arrays.
3529
3530 (af_xxxx_nobase_uniranges): New arrays that hold no-base characters
3531 of the corresponding character ranges.
3532
Werner Lemberg8cbbcf62015-09-03 06:47:30 +020035332015-09-03 Werner Lemberg <wl@gnu.org>
3534
3535 [autofit] Pass glyph index to hinting function.
3536
3537 No functionality change yet.
3538
3539 * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Pass
3540 glyph index.
3541
3542 * src/autofit/afcjk.c, src/autofit/afcjk.h (af_cjk_hints_apply),
3543 src/autofit/afdummy.c (af_dummy_hints_apply), src/autofit/afindic.c
3544 (af_indic_hints_apply), src/autofit/aflatin.c
3545 (af_latin_hints_apply), src/autofit/aflatin2.c
3546 (af_latin2_hints_apply), src/autofit/afloader.c (af_loader_load_g):
3547 Updated.
3548
Werner Lemberg87c81f02015-08-30 10:35:21 +020035492015-08-30 Werner Lemberg <wl@gnu.org>
3550
Werner Lemberg40103a32015-08-31 08:51:52 +02003551 [autofit] Code clean-up.
3552
3553 * src/autofit/afglobal.h (AF_STYLE_MASK): New macro.
3554 (AF_STYLE_UNASSIGNED): Use AF_STYLE_MASK for definition.
3555
3556 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
3557 Updated.
3558
35592015-08-30 Werner Lemberg <wl@gnu.org>
3560
Werner Lemberg87c81f02015-08-30 10:35:21 +02003561 [autofit] Make glyph style array use 16bit values.
3562
3563 * include/freetype/ftautoh.h (FT_Prop_GlyphToScriptMap): Use
3564 `FT_UShort' for `map' field.
3565
3566 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage,
3567 af_face_globals_new), src/autofit/hbshim.c, src/autofit/hbshim.h
3568 (af_get_coverage): Use FT_UShort for `glyph_styles' array.
3569
3570 * src/autofit/afglobal.h (AF_STYLE_UNASSIGNED, AF_DIGIT): Extend to
3571 16 bits.
3572 (AF_FaceGlobalsRec): Use `FT_UShort' for `glyph_styles' field.
3573
Werner Lemberg633d8ed2015-08-26 06:18:47 +020035742015-08-26 Werner Lemberg <wl@gnu.org>
3575
3576 * builds/unix/configure.raw: Need harfbuzz >= 0.9.21 (#45828).
3577
Werner Lemberg78b01402015-08-25 07:23:01 +020035782015-08-25 Werner Lemberg <wl@gnu.org>
3579
3580 [base] Improve kerning tracing and documentation.
3581
3582 * src/base/ftobjs.c (FT_Get_Kerning): Emit tracing message if
3583 scaled-down kerning values differ.
3584
Werner Lemberg91d59162015-08-18 06:04:36 +020035852015-08-18 Werner Lemberg <wl@gnu.org>
3586
3587 [raster] Remove last remnants of `raster5' driver.
3588
3589 * src/raster/ftrend1.h (ft_raster5_renderer_class): Removed.
3590
3591 * src/raster/rastpic.c, src/raster/rastpic.h
3592 (ft_raster5_renderer_class_pic_init,
3593 ft_raster5_renderer_class_pic_free): Removed.
3594
Alexei Podtelezhnikova0172d12015-08-17 22:58:59 -040035952015-08-17 Alexei Podtelezhnikov <apodtele@gmail.com>
3596
3597 [base] Improve emboldener (#45596).
3598
3599 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Correct displacement
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04003600 of zero-length segments.
Alexei Podtelezhnikova0172d12015-08-17 22:58:59 -04003601
Alexei Podtelezhnikov00d89952015-08-16 22:57:34 -040036022015-08-16 Alexei Podtelezhnikov <apodtele@gmail.com>
3603
Alexei Podtelezhnikov815c3242015-08-17 21:48:46 -04003604 [base] Reoptimize arithmetic.
Alexei Podtelezhnikov00d89952015-08-16 22:57:34 -04003605
3606 * src/base/ftcalc.c (FT_MulDiv, FT_MulFix) [!FT_LONG64]: Remove
3607 special cases that slow down the general use.
3608
pazerf0ed30e2015-08-15 06:53:09 +020036092015-08-15 pazer <ibemad@gmail.com>
3610
3611 Fix C++ compilation (#45762).
3612
3613 * src/base/ftstroke.c (ft_outline_glyph_class): Use
3614 FT_CALLBACK_TABLE.
3615
Alexei Podtelezhnikovae258aa2015-08-14 23:23:18 -040036162015-08-14 Alexei Podtelezhnikov <apodtele@gmail.com>
3617
3618 [truetype] Clean up.
3619
3620 * src/truetype/ttgload.c (TT_Process_Composite_Component): Use
3621 `FT_Outline_Transform' and `FT_Outline_Translate'.
3622 (translate_array): Dropped.
3623
Werner Lembergd0d7ee02015-08-14 14:30:58 +020036242015-08-14 Andreas Enge <andreas.enge@inria.fr>
3625
3626 * builds/unix/detect.mk (CONFIG_SHELL): Don't handle it (#44261).
3627
Werner Lemberg14d6b5d2015-08-13 15:22:17 +020036282015-08-13 Werner Lemberg <wl@gnu.org>
3629
3630 [truetype] Introduce named instance access to GX fonts.
3631
3632 For functions querying a face, bits 16-30 of the face index can hold
3633 the named instance index if we have a GX font. The indices start
3634 with value 1; value 0 indicates font access without GX variation
3635 data.
3636
3637 * include/freetype/freetype.h (FT_FaceRec): Update documentation.
3638 * include/freetype/internal/sfnt.h: Ditto.
3639
3640 * src/sfnt/sfobjs.c (sfnt_init_face)
3641 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Get number of named instances and
3642 do argument checks.
3643 (sfnt_load_face): Updated.
3644
3645 * src/truetype/ttobjs.c (tt_face_init)
3646 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Use named instance, overwriting
3647 the style name.
3648
3649 * src/base/ftobjs.c (open_face_from_buffer,
3650 open_face_PS_from_sfnt_stream): Updated.
3651 * src/bdf/bdfdrivr.c (BDF_Face_Init): Updated.
3652 * src/cff/cffload.c (cff_font_load): Updated.
3653
3654 * src/cff/cffobjs.c (cff_face_init): Make function exit early for
3655 pure CFF fonts if `font_index < 0'.
3656 Updated.
3657
3658 * src/cid/cidobjs.c (cid_face_init): Updated.
3659 * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
3660 * src/pfr/pfrobjs.c (pfr_face_init): Updated.
3661 * src/type1/t1objs.c (T1_Face_Init): Updated.
3662 * src/type42/t42objs.c (T42_Face_Init): Updated.
3663 * src/winfonts/winfnt.c (fnt_face_get_dll_font, FNT_Face_Init):
3664 Updated.
3665
3666 * docs/CHANGES: Updated.
3667
Alexei Podtelezhnikov4a466862015-08-12 23:45:40 -040036682015-08-12 Alexei Podtelezhnikov <apodtele@gmail.com>
3669
3670 [type1,cff,cid] Streamline font matrix application.
3671
3672 * src/type1/t1gload.c (T1_Load_Glyph): Directly modify advances only
3673 if font matrix is not trivial.
3674 * src/cff/cffgload.c (cff_slot_load): Ditto.
Alexei Podtelezhnikovf46b2822016-04-11 23:22:57 -04003675 * src/cid/cidgload.c (cid_slot_load_glyph): Ditto for advances and the
Alexei Podtelezhnikov4a466862015-08-12 23:45:40 -04003676 entire outline.
3677
Werner Lemberg7ebe6ac2015-08-11 06:47:25 +020036782015-08-11 Werner Lemberg <wl@gnu.org>
3679
3680 [builds/unix] Minor.
3681
3682 * builds/unix/configure.raw:
3683 s/lib{priv,staticconf}/libs{priv,staticconf}/ for orthogonality with
3684 similarly named uppercase variables.
3685
Alexei Podtelezhnikova37da212015-08-10 23:05:02 -040036862015-08-10 Alexei Podtelezhnikov <apodtele@gmail.com>
3687
3688 [type1,cid,type42] Minor improvements.
3689
3690 * src/type1/t1load.c (t1_parse_font_matrix): Scale units per EM only
3691 when necessary. Refresh comments.
3692 * src/cid/cidload.c (cid_parse_font_matrix): Ditto.
3693 * src/type42/t42parse.c (t42_parse_font_matrix): Refresh comments.
3694
Werner Lemberge5f44692015-08-08 07:45:03 +020036952015-08-08 Werner Lemberg <wl@gnu.org>
3696
Werner Lembergbd75a512015-08-08 08:39:45 +02003697 [type42] Fix glyph access.
3698
3699 This is a severe bug: We've missed one level of indirection, as
3700 described in the Type 42 specification. As a result, ftview
3701 sometimes showed incorrect glyphs for given glyph names, and even
3702 displayed `error 0x0006' (invalid argument!) in case the number of
3703 glyph indices differed between the Type 42 font and the embedded
3704 TTF.
3705
3706 Apparently, noone ever noticed it; this shows how much Type 42 fonts
3707 are in use...
3708
3709 * src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index
3710 to embedded TTF's glyph index.
3711
37122015-08-08 Werner Lemberg <wl@gnu.org>
3713
Werner Lemberge5f44692015-08-08 07:45:03 +02003714 [type42] Minor clean-up.
3715
3716 * src/type42/t42parse.c (t42_parse_font_matrix): Remove unused
3717 variable.
3718
Alexei Podtelezhnikovfd705122015-08-06 21:49:08 -040037192015-08-06 Alexei Podtelezhnikov <apodtele@gmail.com>
3720
3721 [type42] Parse FontMatrix according to specifications.
3722
3723 * src/type42/t42parse.c (t42_parse_font_matrix): Type 42 FontMatrix
3724 does not need scaling by 1000. Units_per_EM are taken from the
3725 embedded TrueType.
3726
Werner Lembergff406e22015-08-06 07:34:50 +020037272015-08-06 Werner Lemberg <wl@gnu.org>
3728
3729 [autofit] Improve Arabic hinting.
3730
3731 Problem reported by Titus Nemeth <tn@tntypography.eu> (by using
3732 ttfautohint).
3733
3734 * src/autofit/afblue.dat: Add neutral blue zone for the tatweel
3735 character.
3736
3737 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3738
Alexei Podtelezhnikov98e8e992015-08-06 00:06:14 -040037392015-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
3740
3741 [truetype] Clean up types.
3742
3743 * src/truetype/ttobjs.c (TT_Size): Move declaration from here.
3744 * include/freetype/internal/tttypes.h (TT_Size): ... to here.
3745 (TT_LoaderRec): Switch to appropriate types for `face' and `size'.
3746 * src/truetype/ttgload.c: Remove corresponding type casts.
3747 * src/truetype/ttsubpix.c: Ditto.
3748
Werner Lemberg15e2a4f2015-08-05 21:53:50 +020037492015-08-05 Werner Lemberg <wl@gnu.org>
3750
3751 [autofit] Improve recognition of flat vs. rounded segments.
3752
3753 Lower the flatness threshold from upem/8 to upem/14, making the
3754 auto-hinter accept shorter elements.
3755
3756 Synchronize flat/round stem selection algorithm with blue zone code.
3757
3758 * src/autofit/aflatin.c (FLAT_THRESHOLD): New macro.
3759 (af_latin_metrics_init_blues): Use it.
3760 (af_latin_hints_compute_segments): Collect information on maximum
3761 and minimum coordinates of `on' points; use this to add a constraint
3762 for the flat/round decision similar to
3763 `af_latin_metrics_init_blues'.
3764
Werner Lembergeb22ef22015-08-04 06:50:04 +020037652015-08-04 Werner Lemberg <wl@gnu.org>
3766
3767 Another left-shift bug (#45681).
3768
3769 * src/base/ftobjs.c (IsMacBinary): Only accept positive values for
3770 `dlen'.
3771
Alexei Podtelezhnikov7e6c3212015-08-03 23:26:13 -040037722015-08-03 Alexei Podtelezhnikov <apodtele@gmail.com>
3773
3774 [base] Fix `ft_corner_orientation'.
3775
3776 Remove casting from `FT_Long' to `FT_Int' that might change the sign
3777 of the return value and make it faster too.
3778
3779 * src/base/ftcalc.c (ft_corner_orientation): On 32-bit systems, stay
3780 with 32-bit arithmetic when safe. Use plain math on 64-bit systems.
3781 * src/pshinter/pshalgo.c: Remove old unused code.
3782
Werner Lembergca6a5cf2015-08-03 08:51:18 +020037832015-08-03 Werner Lemberg <wl@gnu.org>
3784
Werner Lemberg8dfc7602015-08-03 12:23:30 +02003785 * src/truetype/ttgload.c (load_truetype_glyph)
3786 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix crash for composite glyphs
3787 having a depth greater than 1.
3788
37892015-08-03 Werner Lemberg <wl@gnu.org>
3790
Werner Lembergca6a5cf2015-08-03 08:51:18 +02003791 Fix typo in clang bug from 2015-07-31 (#45678).
3792
3793 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Fix inequality.
3794
Werner Lemberg70e9d812015-08-02 09:42:12 +020037952015-08-02 Werner Lemberg <wl@gnu.org>
3796
Werner Lemberga82c45d2015-08-02 18:35:49 +02003797 * CMakeLists.txt: Improve shared library support.
3798
3799 Based on a patch from John Cary <cary@txcorp.com>.
3800
38012015-08-02 Werner Lemberg <wl@gnu.org>
3802
Werner Lemberg682c2712015-08-02 15:46:26 +02003803 * builds/unix/freetype-config.in (enable_shared): Remove. Unused.
3804
38052015-08-02 Werner Lemberg <wl@gnu.org>
3806
Werner Lemberg70e9d812015-08-02 09:42:12 +02003807 Fix more invalid left-shifts.
3808
3809 * src/pfr/pfrgload.c (pfr_glyph_load_compound): Use multiplication,
3810 not left-shift.
3811
3812 * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
3813 tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Use multiplication,
3814 not left-shift.
3815
Werner Lemberg5d1b8ab2015-07-31 21:49:07 +020038162015-07-31 Werner Lemberg <wl@gnu.org>
3817
Werner Lemberg6343ba22015-08-01 07:53:48 +02003818 Fix some bugs found by clang's `-fsanitize=undefined' (#45661).
3819
3820 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Only accept
3821 positive values from header.
3822 Check overflow.
3823
3824 * src/base/ftoutln.c (SCALED): Correctly handle left-shift of
3825 negative values.
3826
3827 * src/bdf/bdf.h (_bdf_glyph_modified, _bdf_set_glyph_modified,
3828 _bdf_clear_glyph_modified): Use unsigned long constant.
3829
3830 * src/bdf/bdfdrivr.c (BDF_Size_Select, BDF_Glyph_Load): Don't
3831 left-shift values that can be negative.
3832
3833 * src/pcf/pcfdrivr.c (PCF_Size_Select, PCF_Glyph_Load): Don't
3834 left-shift values that can be negative.
3835
3836 * src/raster/ftraster.c (SCALED): Correctly handle left-shift of
3837 negative values.
3838
3839 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Don't left-shift
3840 values that can be negative.
3841
3842 * src/truetype/ttgload.c (TT_Load_Composite_Glyph,
3843 compute_glyph_metrics, load_sbit_image): Don't left-shift values
3844 that can be negative.
3845
38462015-07-31 Werner Lemberg <wl@gnu.org>
3847
Werner Lemberg5d1b8ab2015-07-31 21:49:07 +02003848 Define FT_LONG_MAX.
3849
3850 * include/freetype/config/ftstdlib.h (FT_LONG_MAX): New macro.
3851 * src/cff/cf2arrst.c (cf2_arrstack_setNumElements): Use it.
3852
38532015-07-28 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov2b07a5a2015-07-28 23:14:30 -04003854
3855 * src/base/ftcalc.c (FT_Vector_NormLen): Clarify.
3856
Werner Lemberg5d1b8ab2015-07-31 21:49:07 +020038572015-07-27 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikove8b186e2015-07-27 23:22:34 -04003858
3859 * src/base/ftcalc.c (FT_Vector_NormLen): Explicate type conversions.
3860
Matthias Clasenb650dfb2015-07-26 21:08:34 +020038612015-07-26 Matthias Clasen <matthias.clasen@gmail.com>
3862
3863 [cff] Don't use `hmtx' table for LSB (#45520).
3864
3865 * src/cff/cffgload.c (cff_slot_load): Use `htmx' table for advance
3866 width only. Bug introduced 2015-04-10.
3867
Werner Lembergf9be5672015-07-09 15:10:31 +020038682015-07-09 Werner Lemberg <wl@gnu.org>
3869
3870 Better support of user-supplied C++ namespaces.
3871
3872 See
3873
3874 http://lists.nongnu.org/archive/html/freetype-devel/2015-07/msg00008.html
3875
3876 for a rationale.
3877
3878 * src/autofit/afpic.h, src/base/basepic.h, src/cff/cffpic.h,
3879 src/pshinter/pshpic.h, src/psnames/pspic.h, src/raster/rastpic.h,
3880 src/sfnt/sfntpic.h, src/smooth/ftspic.h, src/truetype/ttpic.h
3881 (FT_BEGIN_HEADER, FT_END_HEADER): Move macro calls to not enclose
3882 header files that contain FT_{BEGIN,END}_HEADER macros by
3883 themselves.
3884
3885 * src/autofit/aftypes.h [FT_DEBUG_AUTOFIT]: Include
3886 FT_CONFIG_STANDARD_LIBRARY_H earlier.
3887
Alexei Podtelezhnikovc05a1c32016-06-21 23:12:54 -04003888 * src/truetype/ttpic.h: Include FT_INTERNAL_PIC_H.
Werner Lembergf9be5672015-07-09 15:10:31 +02003889
Werner Lemberg1cdac102015-07-07 14:04:44 +020038902015-07-07 Werner Lemberg <wl@gnu.org>
3891
3892 [sfnt] Make `tt_face_get_name' member of the SFNT interface.
3893
3894 * include/freetype/internal/sfnt.h (TT_Get_Name_Func): New
3895 prototype.
3896 (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): New member `get_name'.
3897
3898 * src/sfnt/sfdriver.c (sfnt_interface): Updated.
3899
3900 * src/sfnt/sfobjs.c (tt_face_get_name): Tag it with `LOCAL_DEF'.
3901 * src/sfnt/sfobjs.h: Add prototype for it.
3902
Werner Lembergeb1bba92015-06-30 09:46:39 +020039032015-06-30 Werner Lemberg <wl@gnu.org>
3904
3905 Fix some clang compiler warnings.
3906
3907 * src/base/ftoutln.c (FT_Outline_EmboldenXY), src/cff/cf2intrp.c
3908 (cf2_interpT2CharString), src/truetype/ttgload.c
3909 (load_truetype_glyph), src/truetype/ttgxvar.c (tt_handle_deltas),
3910 src/truetype/ttinterp.c (Ins_INSTCTRL): Fix signedness issues.
3911
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040039122015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov884e4e62015-06-29 22:32:05 -04003913
Alexei Podtelezhnikov5aaabb42015-06-29 22:46:54 -04003914 [truetype] Speed up bytecode interpreter.
3915
3916 * src/truetype/ttinterp.c (Normalize): Use `FT_Vector_NormLen'.
3917
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040039182015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov5aaabb42015-06-29 22:46:54 -04003919
Alexei Podtelezhnikov9ef02bd2015-06-29 22:39:10 -04003920 [base] Speed up emboldening.
3921
Werner Lembergeb1bba92015-06-30 09:46:39 +02003922 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use
3923 `FT_Vector_NormLen'.
Alexei Podtelezhnikov9ef02bd2015-06-29 22:39:10 -04003924
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040039252015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov9ef02bd2015-06-29 22:39:10 -04003926
Alexei Podtelezhnikov884e4e62015-06-29 22:32:05 -04003927 [base] Implement fast vector normalization.
3928
3929 The function uses Newton's iterations instead of dividing vector
3930 components by its length, which needs a square root. This is,
3931 literally, a bit less accurate but a lot faster.
3932
3933 * src/base/ftcalc.c (FT_Vector_NormLen): New function.
3934
Werner Lemberg22479ca2015-06-28 10:26:33 +020039352015-06-28 Werner Lemberg <wl@gnu.org>
3936
Werner Lemberg7cdc77f2015-06-28 11:40:02 +02003937 * CMakeLists.txt: Always create `ftconfig.h'.
3938
3939 For non-UNIX builds, the file stays unmodified. However, it's
3940 better to have the main configuration files at the same place
3941 regardless of the OS.
3942
39432015-06-28 Werner Lemberg <wl@gnu.org>
3944
Werner Lemberg2c89e2c2015-06-28 11:06:47 +02003945 * CMakeLists.txt: Improve MSVC support (#43737).
3946
39472015-06-28 Werner Lemberg <wl@gnu.org>
3948
Werner Lemberg52c9b1a2015-06-28 11:03:10 +02003949 [cmake] Check for libraries and create `ftoption.h'.
3950
3951 * builds/FindHarfBuzz.cmake: New file, taken from
3952
3953 https://trac.webkit.org/browser/trunk/Source/cmake/FindHarfBuzz.cmake
3954
3955 * CMakeLists.Txt: Add path to local cmake modules.
3956 Find dependencies for zlib, bzip2, libpng, and harfbuzz.
3957 Create `ftoption.h' file.
3958 Set up include and linker stuff for libraries.
3959
39602015-06-28 Werner Lemberg <wl@gnu.org>
3961
Werner Lemberg97b757d2015-06-28 10:42:47 +02003962 * CMakeLists.txt: Fix creation of `ftconfig.h'.
3963 Check for UNIX header files using `check_include_file'.
3964 Set up correct header include directories.
3965
39662015-06-28 Werner Lemberg <wl@gnu.org>
3967
Werner Lemberg22479ca2015-06-28 10:26:33 +02003968 * CMakeLists.txt: Disallow in-source builds.
3969
Werner Lemberg802f6a92015-06-27 07:12:42 +020039702015-06-27 Werner Lemberg <wl@gnu.org>
3971
3972 * src/tools/docmaker/utils.py (check_output): Add missing `\n'.
3973
Werner Lemberg94c79c22015-06-26 06:46:59 +020039742015-06-26 Werner Lemberg <wl@gnu.org>
3975
Werner Lemberg802f6a92015-06-27 07:12:42 +02003976 * CMakeLists.txt: Select platform-dependent `ftdebug.c'.
Werner Lemberg94c79c22015-06-26 06:46:59 +02003977
Werner Lemberg392cf222015-06-25 13:04:57 +020039782015-06-25 Werner Lemberg <wl@gnu.org>
3979
Werner Lemberg68222dd2015-06-25 16:38:11 +02003980 * CMakeLists.txt: Use cmake functions for generating `ftconfig.h'.
3981 Additionally, do this for UNIX only.
3982
39832015-06-25 Werner Lemberg <wl@gnu.org>
3984
Werner Lemberg5ef5a4f2015-06-25 15:45:13 +02003985 * CMakeLists.txt (BASE_SRCS): Use `ftbase.c' and `psnames.c'.
3986
39872015-06-25 Werner Lemberg <wl@gnu.org>
3988
Werner Lemberg392cf222015-06-25 13:04:57 +02003989 Another adjustment to header locations.
3990
3991 This change is a result of a discussion thread on freetype-devel
3992
3993 http://lists.nongnu.org/archive/html/freetype-devel/2015-06/msg00041.html
3994
3995 Re-introduce the `freetype2' subdirectory for all FreeType header
3996 files after installation, and rename the `freetype2' subdirectory in
3997 the git repository to `freetype'.
3998
3999 * include/freetype2: Renamed to...
4000 * include/freetype: This.
4001
4002 * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
4003 PRIVATE_HEADERS): Updated.
4004 Update creation of `ftconfig.h'.
4005 Install generated `ftconfig.h'.
4006
4007 * Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.
4008
4009 * builds/amiga/include/config/ftconfig.h, builds/freetype.mk
4010 (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
4011 builds/unix/freetype2.in: Updated.
4012
4013 * builds/unix/freetype-config.in: Updated.
4014 * builds/unix/configure.raw: Don't check for `rmdir'.
4015 * builds/unix/unix-def.in (DELDIR): Use `rm -rf', which is portable
4016 according to the autoconf info manual.
4017 * builds/unix/install.mk (install, uninstall,
4018 distclean_project_unix): Update and simplify.
4019
4020 * builds/wince/*, builds/windows/*: Updated.
4021
4022 * devel/ft2build.h, include/ft2build.h: Updated.
4023
4024 * include/freetype2/config/ftheader.h,
4025 include/freetype2/internal/ftserv.h,
4026 include/freetype2/internal/internal.h: Update all header file
4027 macros.
4028
4029 * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.
4030
4031 * docs/*: Updated.
4032
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040040332015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com>
Werner Lemberg1982a882015-06-26 06:52:34 +02004034
4035 * src/bdf/bdflib.c (_bdf_parse_start): Disallow 0 bpp.
4036
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040040372015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com>
Werner Lemberg1982a882015-06-26 06:52:34 +02004038
4039 * src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing.
4040
Werner Lemberg59312682015-06-23 09:24:48 +020040412015-06-23 Werner Lemberg <wl@gnu.org>
4042
4043 s/TYPEOF/FT_TYPEOF/ (#45376).
4044
4045 * builds/unix/ftconfig.in, builds/vms/ftconfig.in,
4046 include/freetype2/config/ftconfig.h,
4047 include/freetype2/internal/ftobjs.h, src/autofit/afwarp.h: Do it.
4048
Werner Lemberg8502c982015-06-22 06:35:23 +020040492015-06-22 Werner Lemberg <wl@gnu.org>
4050
4051 Fix Savannah bug #45097.
4052
4053 We no longer `pollute' the namespace of possible header file names;
4054 instead we move `ft2build.h' up by one level so that it gets
4055 installed in the default include directory (e.g.,
4056 /usr/local/include). After this commit, only `ft2build.h' stays in
4057 the compiler's include path.
4058
4059 No visible changes for the user who follows the standard FreeType
4060 header inclusion rules.
4061
4062 * include/*: Move to ...
4063 * include/freetype2/*: This directory, except `ft2build.h'.
4064
4065 * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
4066 PRIVATE_HEADERS), Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.
4067
4068 * builds/amiga/include/config/ftconfig.h, builds/freetype.mk
4069 (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
4070 builds/unix/install.mk (install, uninstall),
4071 builds/unix/freetype2.in: Updated.
4072
4073 * builds/unix/freetype-config.in: Updated.
4074 Emit -I directory only if it is not `/usr/include'.
4075
4076 * builds/wince/*, builds/windows/*: Updated.
4077
4078 * devel/ft2build.h, include/ft2build.h: Updated.
4079
4080 * include/freetype2/config/ftheader.h,
4081 include/freetype2/internal/ftserv.h,
4082 include/freetype2/internal/internal.h: Update all header file
4083 macros.
4084
4085 * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.
4086
Werner Lemberg31d97df2015-06-21 19:12:12 +020040872015-06-21 Werner Lemberg <wl@gnu.org>
4088
4089 Make Jam support work again.
4090
4091 This is just very basic stuff and just a little bit tested on
4092 GNU/Linux only. I won't delve into this since I'm not a Jam user.
4093
4094 * Jamfile: Call `HDRMACRO' for `ftserv.h' also.
4095 (DEFINES): Replace with...
4096 (CCFLAGS): ... this.
4097
4098 * src/Jamfile: Don't call `HDRMACRO' for `internal.h'; this is
4099 already handled in the top-level Jamfile.
4100
4101 * src/autofit/Jamfile (DEFINES): Replace with...
4102 (CCFLAGS): ... this.
4103 (_sources): Add missing files.
4104
4105 * src/cache/Jamfile: Don't call `HDRMACRO' for `ftcache.h'; it no
4106 longer contains macro header definitions.
4107
4108 * src/base/Jamfile, src/cff/Jamfile, src/sfnt/Jamfile,
4109 src/truetype/Jamfile (_sources): Add missing files.
4110
Werner Lemberg1a147ac2015-06-16 10:20:07 +020041112015-06-16 Werner Lemberg <wl@gnu.org>
4112
4113 Fix Savannah bug #45326.
4114
4115 * src/sfnt/sfntpic.h (SFNT_SERVICES_GET): Remove duplicate
4116 definitions.
4117
Werner Lemberge1862302015-06-07 16:11:18 +020041182015-06-07 Werner Lemberg <wl@gnu.org>
4119
4120 * Version 2.6 released.
4121 =======================
4122
4123
4124 Tag sources with `VER-2-6'.
4125
4126 * docs/VERSION.DLL: Update documentation and bump version number to
4127 2.6.
4128
4129 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
4130 builds/windows/vc2005/index.html,
4131 builds/windows/vc2008/freetype.vcproj,
4132 builds/windows/vc2008/index.html,
4133 builds/windows/vc2010/freetype.vcxproj,
4134 builds/windows/vc2010/index.html,
4135 builds/windows/visualc/freetype.dsp,
4136 builds/windows/visualc/freetype.vcproj,
4137 builds/windows/visualc/index.html,
4138 builds/windows/visualce/freetype.dsp,
4139 builds/windows/visualce/freetype.vcproj,
4140 builds/windows/visualce/index.html,
4141 builds/wince/vc2005-ce/freetype.vcproj,
4142 builds/wince/vc2005-ce/index.html,
4143 builds/wince/vc2008-ce/freetype.vcproj,
4144 builds/wince/vc2008-ce/index.html: s/2.5.5/2.6/, s/255/26/.
4145
4146 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 6.
4147 (FREETYPE_PATCH): Set to 0.
4148
4149 * builds/unix/configure.raw (version_info): Set to 18:0:12.
Werner Lemberg8cabd912015-10-04 08:18:01 +02004150 * CMakeLists.txt (VERSION_MINOR): Set to 6.
4151 (VERSION_PATCH): Set to 0.
Werner Lemberge1862302015-06-07 16:11:18 +02004152
4153 * src/autofit/afmodule.c [!FT_MAKE_OPTION_SINGLE_OBJECT]: Add
4154 declarations for dumping functions.
4155
4156 * src/truetype/ttinterp.c (TT_New_Context): Pacify compiler.
4157
4158 * builds/toplevel.mk: Use `freetype.mk's code to compute the version
4159 string.
4160 Don't include a zero patch level in version string.
4161 * builds/freetype.mk: Remove code for computing the version string.
4162
Ashish Azad472119a2015-06-06 05:45:17 +020041632015-06-06 Ashish Azad <ashish.azad@samsung.com>
4164
4165 Fix Savannah bug #45260.
4166
4167 * src/pfr/pfrdrivr.c (pfr_get_kerning): Fix typo.
4168
Werner Lemberg75534a02015-06-03 00:54:09 +020041692015-06-03 Werner Lemberg <wl@gnu.org>
4170
4171 [truetype] Fix memory leak.
4172
4173 Problem reported by Grissiom <chaos.proton@gmail.com>; in
4174
4175 http://lists.nongnu.org/archive/html/freetype/2015-05/msg00013.html
4176
4177 there is an example code to trigger the bug.
4178
4179 * src/truetype/ttobjs.c (tt_size_init_bytecode): Free old `size'
4180 data before allocating again. Bug most probably introduced four
4181 years ago in version 2.4.3.
4182
41832015-06-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg54d04282015-06-01 12:12:06 +02004184
Werner Lembergd1ade6d2015-06-02 11:44:52 +02004185 [raster] Add more tracing.
4186
4187 * src/raster/ftraster.c (FT_TRACE7) [_STANDALONE_]: Define.
4188 (Vertical_Sweep_Span, Vertical_Sweep_Drop, Horizontal_Sweep_Span,
4189 Horizontal_Sweep_Drop, Render_Glyph): Add tracing calls.
4190
41912015-06-01 Werner Lemberg <wl@gnu.org>
4192
Werner Lemberg54d04282015-06-01 12:12:06 +02004193 [truetype] While tracing opcodes, show code position and stack.
4194
4195 * src/truetype/ttinterp.c: Change all existing TRACE7 calls to
4196 TRACE6.
4197 (opcode_name): Add string lengths.
4198 (TT_RunIns): Implement display of code position and stack.
4199
Werner Lembergcdee7d12015-05-31 11:54:42 +020042002015-05-31 Werner Lemberg <wl@gnu.org>
4201
Werner Lemberge9df4e42015-05-31 12:21:34 +02004202 [truetype] In GX, make private point numbers work correctly.
4203
4204 This is completely missing in Apple's documentation: If a `gvar'
4205 tuple uses private point numbers (this is, deltas are specified for
4206 some points only), the uncovered points must be interpolated for
4207 this tuple similar to the IUP bytecode instruction. Examples that
4208 need this functionality are glyphs `Oslash' and `Q' in Skia.ttf.
4209
4210 * src/truetype/ttgxvar.c (tt_delta_shift, tt_delta_interpolate,
4211 tt_handle_deltas): New functions.
4212 (TT_Vary_Get_Glyph_Deltas): Renamed to...
4213 (TT_Vary_Apply_Glyph_Deltas): ... this; it directly processes the
4214 points and does no longer return an array of deltas.
4215 Add tracing information.
4216 Call `tt_handle_deltas' to interpolate missing deltas.
4217 Also fix a minor memory leak in case of error.
4218
4219 * src/truetype/ttgxvar.h: Updated.
4220
4221 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
4222 load_truetype_glyph): Updated.
4223
42242015-05-31 Werner Lemberg <wl@gnu.org>
4225
Werner Lemberg9845c1d2015-05-31 11:57:31 +02004226 [truetype] In GX, make intermediate tuplets work at extrema.
4227
4228 * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix range condition.
4229
42302015-05-31 Werner Lemberg <wl@gnu.org>
4231
Werner Lembergcdee7d12015-05-31 11:54:42 +02004232 [truetype] Add tracing information to GX code.
4233
4234 * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
4235 ft_var_apply_tuple, TT_Get_MM_Var, TT_Set_MM_Blend,
4236 TT_Set_Var_Design, tt_face_vary_cvt): Do it.
4237
Werner Lemberg366b2ea2015-05-28 10:58:40 +020042382015-05-28 Werner Lemberg <wl@gnu.org>
4239
4240 * src/tools/apinames.c (names_dump): Fix invalid reference.
4241
4242 Problem reported by Guzman Mosqueda, Jose R
4243 <jose.r.guzman.mosqueda@intel.com>.
4244
Werner Lemberga5e1f6f2015-05-24 23:29:23 +020042452015-05-24 Werner Lemberg <wl@gnu.org>
4246
4247 [truetype] Fix commit from 2015-05-22.
4248
4249 * src/truetype/ttgload.c, src/truetype/ttinterp.c: Guard new code
4250 with `TT_CONFIG_OPTION_SUBPIXEL_HINTING'.
4251
4252 Problem reported by Nikolaus Waxweiler <madigens@gmail.com>.
4253
Werner Lembergbb435da2015-05-23 07:21:25 +020042542015-05-23 Werner Lemberg <wl@gnu.org>
4255
Werner Lemberg7f099482015-05-24 09:50:24 +02004256 [truetype] Fix return values of GETINFO bytecode instruction.
4257
4258 * src/truetype/ttinterp.h (TT_ExecContextRec): New fields
4259 `vertical_lcd' and `gray_cleartype'.
4260
4261 * src/truetype/ttgload.c (tt_loader_init): Initialize new fields.
4262 Change `symmetrical smoothing' to TRUE, since FreeType produces
4263 exactly this.
4264
4265 * src/truetype/ttinterp.c (Ins_GETINFO): Fix selector/return bit
4266 values for symmetrical smoothing, namely 11/18.
4267 Handle bits for vertical LCD subpixels (8/15) and Gray ClearType
4268 (12/19).
4269
42702015-05-23 Werner Lemberg <wl@gnu.org>
4271
Werner Lembergbb435da2015-05-23 07:21:25 +02004272 [truetype] Minor.
4273
4274 * src/truetype/ttinterp.h (TT_ExecContext):
4275 s/subpixel/subpixel_hinting.
4276
4277 * src/truetype/ttgload.c, src/truetype/ttgload.h: Updated.
4278
42792015-05-22 Werner Lemberg <wl@gnu.org>
Werner Lemberg790b8df2015-05-20 12:33:40 +02004280
Werner Lembergc61cad82015-05-22 22:02:15 +02004281 [truetype] Support selector index 3 of the INSTCTRL instruction.
4282
4283 This flag activates `native ClearType hinting', disabling backwards
4284 compatibility mode as described in Greg Hitchcocks whitepaper. In
4285 other words, it enables unrestricted functionality of all TrueType
4286 instructions in ClearType.
4287
4288 * src/truetype/ttgload.c (tt_get_metrics): Call `sph_set_tweaks'
4289 unconditionally.
4290 (tt_loader_init): Unset `ignore_x_mode' flag if bit 2 of
4291 `GS.instruct_control' is active.
4292
4293 * src/truetype/ttinterp.c (Ins_INSTCTRL): Handle selector index 3.
4294 (Ins_GETINFO): Updated.
4295
4296 * docs/CHANGES: Document it.
4297
42982015-05-20 Werner Lemberg <wl@gnu.org>
4299
Werner Lemberg790b8df2015-05-20 12:33:40 +02004300 [truetype] Minor.
4301
4302 * src/truetype/ttinterp.h (SetSuperRound): Fix type of `GridPeriod'
4303 argument.
4304
Werner Lemberg0a6b6ff2015-05-17 22:54:48 +020043052015-05-17 Werner Lemberg <wl@gnu.org>
4306
4307 [truetype] Fix loading of composite glyphs.
4308
4309 * src/truetype/ttgload.c (TT_Load_Composite_Glyph): If the
4310 ARGS_ARE_XY_VALUES flag is not set, handle argument values as
4311 unsigned. I trust `ttx' (which has exactly such code) that it does
4312 the right thing here...
4313
4314 The reason that noone has ever noticed this bug is probably the fact
4315 that point-aligned subglyphs are rare, as are subglyphs with a
4316 number of points in the range [128;255], which is quite large (or
4317 even in the range [32768;65535], which is extremely unlikely).
4318
Chris Liddelld65bf722015-05-12 07:16:46 +020043192015-05-12 Chris Liddell <chris.liddell@artifex.com>
4320
Chris Liddella87fb8c2015-05-12 07:27:35 +02004321 [cff] Make the `*curveto' operators more tolerant.
4322
4323 * src/cff/cf2intrp.c (cf2_interpT2CharString): The opcodes
4324 `vvcurveto', `hhcurveto', `vhcurveto', and `hvcurveto' all iterate,
4325 pulling values off the stack until the stack is exhausted.
4326 Implicitly the stack must be a multiple (or for subtly different
4327 behaviour) a multiple plus a specific number of extra values deep.
4328 If that's not the case, enforce it (as the old code did).
4329
43302015-05-12 Chris Liddell <chris.liddell@artifex.com>
4331
Chris Liddelld65bf722015-05-12 07:16:46 +02004332 [cff] fix incremental interface with new cff code.
4333
4334 * src/cff/cf2ft.c (cf2_getSeacComponent): When using the incremental
4335 interface to retrieve glyph data for a SEAC, it be left to the
4336 incremental interface callback to apply the encoding to raw
4337 character index (as it was in the previous code).
4338
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040043392015-04-29 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov40914952015-04-29 21:57:30 -04004340
4341 [autofit] Speed up IUP.
4342
4343 * src/autofit/afhints.c (af_iup_interp): Separate trivial snapping to
4344 the same position from true interpolation, use `scale' to reduce
4345 divisions.
4346
Werner Lemberg3cc076d2015-04-28 09:16:27 +020043472015-04-28 Werner Lemberg <wl@gnu.org>
4348
4349 [cff] Use `name' table for PS name if we have a SFNT-CFF.
4350
4351 This follows the OpenType 1.7 specification. See
4352
4353 http://tug.org/pipermail/tex-live/2015-April/036634.html
4354
4355 for a discussion.
4356
4357 * src/cff/cffdrivr.c (cff_get_ps_name): Use the `sfnt' service if we
4358 have an SFNT.
4359
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040043602015-04-27 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov40623a12015-04-27 22:27:00 -04004361
4362 [truetype] Speed up IUP.
4363
4364 * src/truetype/ttinterp.c (_iup_worker_interpolate): Separate trivial
4365 snapping to the same position from true interpolation.
4366
Werner Lemberg12661a52015-04-21 07:13:59 +020043672015-04-21 Werner Lemberg <wl@gnu.org>
4368
Werner Lemberg14df6b12015-04-22 11:14:35 +02004369 [autofit] By default, enable warping code but switch off warping.
4370
4371 Suggested by Behdad.
4372
4373 * include/config/ftoption.h: Define AF_CONFIG_OPTION_USE_WARPER.
4374
4375 * src/autofit/afmodule.c (af_autofitter_init): Initialize `warping'
4376 with `false'.
4377
43782015-04-21 Werner Lemberg <wl@gnu.org>
4379
Werner Lembergd164f702015-04-21 07:51:41 +02004380 * docs/CHANGES: Updated.
4381
43822015-04-21 Werner Lemberg <wl@gnu.org>
4383
Werner Lemberg12661a52015-04-21 07:13:59 +02004384 [autofit] Introduce `warping' property.
4385
4386 This code replaces the debugging hook from the previous commit with
4387 a better, more generic solution.
4388
4389 * include/ftautoh.h: Document it.
4390
4391 * src/autofit/afmodule.h (AF_ModuleRec)
4392 [AF_CONFIG_OPTION_USE_WARPER]: Add `warping' field.
4393
4394 * src/autofit/afmodule.c (_af_debug_disable_warper): Remove.
4395 (af_property_set, af_property_get, af_autofitter_init)
4396 [AF_CONFIG_OPTION_USE_WARPER]: Handle `warping' option.
4397
4398 * src/autofit/afhints.h (AF_HINTS_DO_WARP): Remove use of the no
4399 longer existing `_af_debug_disable_warper'.
4400
4401 * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
4402 (af_latin_hints_init), src/autofit/aflatin2.c (af_latin2_hints_init)
4403 [AF_CONFIG_OPTION_USE_WARPER]: Add `AF_SCALER_FLAG_NO_WARPER' to the
4404 scaler flags if warping is off.
4405
4406 * src/autofit/aftypes.h: Updated.
4407
Werner Lemberg58f48f02015-04-16 20:11:49 +020044082015-04-16 Werner Lemberg <wl@gnu.org>
4409
4410 [autofit] Add debugging hook to disable warper.
4411
4412 * src/autofit/afmodule.c (_af_debug_disable_warper)
4413 [FT_DEBUG_AUTOFIT]: New global variable.
4414
4415 * src/autofit/aftypes.h: Updated.
4416 (AF_SCALER_FLAG_NO_WARPER): New macro (not actively used yet).
4417
4418 * src/autofit/afhints.h (AF_HINTS_DO_WARP): New macro.
4419
Alexei Podtelezhnikovc6d99a42016-04-08 00:05:50 -04004420 * src/autofit/aflatin.c (af_latin_hints_apply)
Werner Lemberg58f48f02015-04-16 20:11:49 +02004421 [AF_CONFIG_OPTION_USE_WARPER]: Use `AF_HINTS_DO_WARP' to control use
4422 of warper.
4423
4424 * src/autofit/afcjk.c (af_cjk_hints_init, af_cjk_hints_apply)
4425 [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.
4426
4427 * src/autofit/aflatin2.c (af_latin2_hints_apply)
4428 [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.
4429
Werner Lemberg5cd21552015-04-10 07:01:01 +020044302015-04-10 Werner Lemberg <wl@gnu.org>
4431
4432 [cff] Update advance width handling to OpenType 1.7.
4433
4434 Problem reported by Behdad.
4435
4436 * src/cff/cffdrivr.c (cff_get_advances): Handle SFNT case
4437 separately.
4438
4439 * src/cff/cffgload.c (cff_slot_load): Use advance width and side
4440 bearing values from `hmtx' table if present.
4441
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040044422015-04-03 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov67b912d2015-04-03 22:38:11 -04004443
4444 * src/autofit/afhints.c (af_glyph_hints_reload): Use do-while loop.
4445
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040044462015-04-02 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov770b5d02015-04-02 23:15:36 -04004447
4448 * src/autofit/aflatin.c (af_latin_hint_edges): Reduce logic.
4449
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040044502015-04-01 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov886f4d02015-04-01 22:57:43 -04004451
4452 [autofit] Finish the thought.
4453
4454 * src/autofit/afhints.c (af_direction_compute): make sure the long arm
4455 is never negative so that its `FT_ABS' is not necessary.
4456
Werner Lemberg16217e52015-04-01 13:13:56 +020044572015-04-01 Werner Lemberg <wl@gnu.org>
4458
Werner Lemberga2fa6572015-04-01 15:55:41 +02004459 [autofit] Call dumper functions for tracing.
4460
4461 * src/autofit/afcjk.c (af_cjk_hints_apply): Remove dead code.
4462 * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor
4463 improvement.
4464 * src/autofit/afmodule.c (af_autofitter_load_glyph): Implement it.
4465
44662015-04-01 Werner Lemberg <wl@gnu.org>
4467
Werner Lembergdb8df792015-04-01 13:30:55 +02004468 [autofit] Make debugging stuff work again.
4469
4470 The interface to ftgrid was broken in the series of commits starting
4471 with
4472
4473 [autofit] Allocate AF_Loader on the stack instead of AF_Module.
4474
4475 from 2015-01-14.
4476
4477 * src/autofit/afmodule.c (_af_debug_hints_rec) [FT_DEBUG_AUTOFIT]:
4478 Use a global AF_GlyphHintsRec object for debugging.
4479 (af_autofitter_done, af_autofitter_load_glyph): Updated.
4480
4481 * src/autofit/afloader.c (af_loader_init, af_loader_done): Updated.
4482
44832015-04-01 Werner Lemberg <wl@gnu.org>
4484
Werner Lemberg16217e52015-04-01 13:13:56 +02004485 * src/autofit/afhints.c (af_glyph_hints_done): Fix minor thinko.
4486
Werner Lemberg10e2bb82015-03-29 13:32:47 +020044872015-03-29 Werner Lemberg <wl@gnu.org>
4488
Werner Lembergf353a382015-03-29 14:47:49 +02004489 [cff] Fix Savannah bug #44629.
4490
4491 * src/cff/cf2font.h (CF2_MAX_SUBR), src/cff/cffgload.h
4492 (CFF_MAX_SUBRS_CALLS): Set to 16.
4493
44942015-03-29 Werner Lemberg <wl@gnu.org>
4495
Werner Lemberg10e2bb82015-03-29 13:32:47 +02004496 [type1, truetype] Make the MM API more flexible w.r.t. `num_coords'.
4497
4498 This commit allows `num_coords' to be larger or smaller than the
4499 number of available axes while selecting a design instance, either
4500 ignoring excess data or using defaults if data is missing.
4501
4502 * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design):
4503 Implement it.
4504
4505 * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design,
4506 T1_Set_Var_Design): Ditto.
4507
45082015-03-29 Werner Lemberg <wl@gnu.org>
Werner Lemberg8ce30262015-03-27 08:33:47 +01004509
Werner Lembergdd5d6d72015-03-29 10:04:22 +02004510 [type1] Minor.
4511
4512 * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Use
4513 FT_THROW.
4514 (T1_Set_Var_Design): Use T1_MAX_MM_AXIS and FT_THROW.
4515
45162015-03-27 Werner Lemberg <wl@gnu.org>
4517
Werner Lemberg8ce30262015-03-27 08:33:47 +01004518 [cff] Trace charstring nesting levels.
4519
4520 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLGSUBR,
4521 cf2_cmdCALLSUBR, cf2_cmdRETURN>: Implement it.
4522
4523 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
4524 <cff_op_callsubr, cff_op_callgsubr, cff_op_return>: Ditto.
4525
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040045262015-03-21 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikovdac56442015-03-21 23:30:16 -04004527
4528 [base] Optimize `FT_Angle_Diff'.
4529
4530 Under normal circumstances we are usually close to the desired range
4531 of angle values, so that the remainder is not really necessary.
4532
4533 * src/base/fttrigon.c (FT_Angle_Diff): Use loops instead of remainder.
4534
4535 * src/autofit/aftypes.h (AF_ANGLE_DIFF): Ditto in the unused macro.
4536
Werner Lemberg6cc425d2015-03-21 06:51:07 +010045372015-03-21 Werner Lemberg <wl@gnu.org>
4538
4539 [truetype] Improve `gvar' handling.
4540
4541 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Correctly handle
4542 single-element runs. Cf. glyph `Q' in Skia.ttf with weights larger
4543 than the default.
4544
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040045452015-03-20 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov2d7284e2015-03-20 21:34:19 -04004546
4547 * src/base/fttrigon.c (FT_Vector_Rotate): Minor refactoring.
4548
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040045492015-03-17 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov6a171722015-03-17 22:43:08 -04004550
4551 Fix Savannah bug #44412 (part 2).
4552
4553 * src/base/fttrigon.c (FT_Sin, FT_Cos, FT_Tan): Call `FT_Vector_Unit'.
4554
Werner Lemberg06339952015-03-11 06:30:23 +010045552015-03-11 Werner Lemberg <wl@gnu.org>
4556
Werner Lembergd3284462015-03-11 16:45:58 +01004557 [autofit] Add support for Arabic script.
4558
4559 Thanks to Titus Nemeth <tn@tntypography.eu> for guidance!
4560
4561 * src/autofit/afblue.dat: Add blue zone data for Arabic.
4562
4563 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
4564
4565 * src/autofit/afscript.h: Add Arabic standard characters.
4566
4567 * src/autofit/afranges.c: Add Arabic data.
4568
4569 * src/autofit/afstyles.h: Add Arabic data.
4570
4571 * docs/CHANGES: Document it.
4572
45732015-03-11 Werner Lemberg <wl@gnu.org>
4574
Werner Lemberga4516382015-03-11 08:09:13 +01004575 Rename `svxf86nm.h' to `svfntfmt.h'; update related symbols.
4576
4577 * include/internal/ftserv.h (FT_SERVICE_XFREE86_NAME_H): Renamed
4578 to...
4579 (FT_SERVICE_FONT_FORMAT_H): This.
4580
4581 * include/internal/services/svfntfmt.h (FT_XF86_FORMAT_*): Renamed
4582 to ...
4583 (FT_FONT_FORMAT_*): This.
4584
4585 src/base/ftfntfmt.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
4586 src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/pfr/pfrdrivr.c,
4587 src/truetype/ttdriver.c, src/type1/t1driver.c,
4588 src/type42/t42drivr.c, src/winfonts/winfnt.c: Updated.
4589
45902015-03-11 Werner Lemberg <wl@gnu.org>
4591
Werner Lembergdd7028c2015-03-11 07:45:05 +01004592 [base] Rename `FT_XFREE86_H' to `FT_FONT_FORMATS_H'.
4593
4594 * include/config/ftheader.h: Implement it.
4595 * src/base/ftfntfmt.c, docs/CHANGES: Updated.
4596
45972015-03-11 Werner Lemberg <wl@gnu.org>
4598
Werner Lembergf4d1c112015-03-11 07:32:58 +01004599 [base] Rename `FT_Get_X11_Font_Format' to `FT_Get_Font_Format'.
4600
4601 * include/ftfntfmt.h, src/base/ftfntfmt.c: Implement it.
4602
4603 * docs/CHANGES: Updated.
4604
46052015-03-11 Werner Lemberg <wl@gnu.org>
4606
Werner Lembergcb0f7b62015-03-11 06:51:27 +01004607 Fix automatic copyright updating.
4608
4609 * src/tools/update-copyright: Make scanning of `no-copyright'
4610 actually work.
4611
4612 * src/tools/no-copyright: Don't include README in general.
4613
46142015-03-11 Werner Lemberg <wl@gnu.org>
4615
Werner Lemberg06339952015-03-11 06:30:23 +01004616 Rename `ftxf86.[ch]' to `ftfntfmt.[ch]'.
4617
4618 CMakeLists.txt, builds/amiga/makefile, builds/amiga/makefile.os4,
4619 builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt,
4620 builds/mac/FreeType.m68k_far.make.txt,
4621 builds/mac/FreeType.ppc_carbon.make.txt,
4622 builds/mac/FreeType.ppc_classic.make.txt, builds/symbian/bld.inf,
4623 builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj,
4624 builds/wince/vc2008-ce/freetype.vcproj,
4625 builds/windows/vc2005/freetype.vcproj,
4626 builds/windows/vc2008/freetype.vcproj,
4627 builds/windows/vc2010/freetype.vcxproj,
4628 builds/windows/vc2010/freetype.vcxproj.filters,
4629 builds/windows/visualc/freetype.dsp,
4630 builds/windows/visualc/freetype.vcproj,
4631 builds/windows/visualce/freetype.dsp,
4632 builds/windows/visualce/freetype.vcproj, docs/INSTALL.ANY,
4633 include/config/ftheader.h, include/ftfntfmt.h, modules.cfg,
4634 src/base/ftfntfmt.c, vms_make.com: Updated.
4635
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040046362015-03-10 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov6b832c82015-03-10 23:25:49 -04004637
4638 Fix Savannah bug #44412 (part 1).
4639
4640 * src/base/ftstroke.c (ft_stroker_inside): Handle near U-turns.
4641
Werner Lembergeee7d8b2015-03-10 11:15:15 +010046422015-03-10 Werner Lemberg <wl@gnu.org>
4643
4644 [base] Rename `FT_Bitmap_New' to `FT_Bitmap_Init'.
4645
4646 * include/ftbitmap.h, src/base/ftbitmap.c: Implement it.
4647 Update all callers.
4648
4649 * docs/CHANGES: Updated.
4650
Werner Lemberg493cc032015-03-06 05:38:31 +010046512015-03-06 Werner Lemberg <wl@gnu.org>
4652
4653 * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning.
4654
4655 Found by Alexei.
4656
Alexei Podtelezhnikov04e7c742016-06-04 23:05:59 -040046572015-03-05 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikovdd7498d2015-03-05 22:51:36 -05004658
4659 * src/base/ftstroke.c: Simplify.
4660
Werner Lemberg328b7922015-03-04 08:40:23 +010046612015-03-04 Werner Lemberg <wl@gnu.org>
4662
4663 [truetype] Some fixes and code refactoring in `ttgxvar.c'.
4664
4665 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix return value
4666 of `point_cnt' if two bytes are read.
4667 Use a more vertical coding style.
4668 (ft_var_readpackeddeltas): Use FT_UInt for `delta_cnt' parameter.
4669 Use a more vertical coding style.
4670
Werner Lemberga374c9c2015-03-03 11:23:45 +010046712015-03-03 Werner Lemberg <wl@gnu.org>
4672
4673 [autofit] Fix Savannah bug #44241.
4674
4675 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Reject glyphs
4676 with less than 3 points.
4677
Werner Lemberga07029e2015-03-02 06:54:08 +010046782015-03-02 Werner Lemberg <wl@gnu.org>
4679
4680 Simplify `TYPEOF' macro.
4681
4682 No need for two arguments.
4683
4684 * include/config/ftconfig.h, builds/unix/ftconfig.in,
4685 builds/vms/ftconfig.h (TYPEOF): Updated.
4686
4687 * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
4688 src/autofit/afwarp.h (AF_WARPER_FLOOR): Updated.
4689
46902015-03-01 Werner Lemberg <wl@gnu.org>
Werner Lemberg4b9234b2015-02-25 06:31:43 +01004691
Werner Lemberg851e8152015-03-01 19:27:09 +01004692 Various compiler warning fixes for `make multi'.
4693
4694 * src/autofit/afcjk.c (af_cjk_hints_compute_blue_edges),
4695 src/autofit/aflatin.c (af_latin_hint_compute_blue_edges,
4696 af_latin_hint_edges), src/autofit/aflatin2.c
4697 (af_latin2_hints_compute_blue_edges, af_latin2_hint_edges): Declare
4698 as `static'.
4699
4700 * src/cache/ftccmap.c (FTC_CMAP_QUERY_HASH, FTC_CMAP_NODE_HASH):
4701 Removed. Unused.
4702 * src/cache/ftcimage.c: Include FT_INTERNAL_OBJECTS_H.
4703 * src/cache/ftcmanag.c (FTC_LRU_GET_MANAGER): Removed. Unused.
4704
4705 * src/cff/cf2intrp.c: Include `cf2intrp.h'.
4706 * src/cff/cffdrivr.c (PAIR_TAG): Removed. Unused.
4707
4708 * src/gzip/ftgzip.c (NO_DUMMY_DECL): Removed. Unused.
4709
4710 * src/psaux/afmparse.c (afm_parser_read_int): Declare as `static'.
4711
4712 * src/pshinter/pshalgo.c (STRONGER, PSH_ZONE_MIN, PSH_ZONE_MAX):
4713 Removed. Unused.
4714
4715 * src/raster/ftraster.c (Render_Glyph): Declare as `static'.
4716
4717 * src/sfnt/ttpost.c (load_format_20): Fix signedness warning.
4718
4719 * src/truetype/ttdriver.c (PAIR_TAG): Removed. Unused.
4720 * src/truetype/ttsubpix.c (is_member_of_family_class,
4721 is_member_of_style_class): Declare as `static'.
4722
4723 * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Declare
4724 as `static'.
4725 * src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): Declare as
4726 `static'.
4727 (T1_FIELD_COUNT): Removed. Unused.
4728 * src/type1/t1parse.h (T1_Done_Table): Removed. Unused.
4729
4730 * src/type42/t42parse.c (T1_Done_Table): Removed. Unused.
4731
47322015-02-25 Werner Lemberg <wl@gnu.org>
4733
Werner Lemberg04c22372015-02-25 11:20:20 +01004734 [psaux] Signedness fixes.
4735
4736 * include/internal/psaux.h, src/psaux/afmparse.c,
4737 src/psaux/afmparse.h, src/psaux/psconv.c, src/psaux/psobjs.c,
4738 src/psaux/t1cmap.c, src/psaux/t1decode.c: Apply.
4739
47402015-02-25 Werner Lemberg <wl@gnu.org>
4741
Werner Lembergd25ec162015-02-25 09:19:59 +01004742 [otvalid] Signedness fixes.
4743
4744 * src/otvalid/otvcommn.c, src/otvalid/otvgdef.c,
4745 src/otvalid/otvgpos.c, src/otvalid/otvgsub.c, src/otvalid/otvmath.c:
4746 Apply.
4747
47482015-02-25 Werner Lemberg <wl@gnu.org>
4749
Werner Lemberg5c9d9bf2015-02-25 08:13:40 +01004750 * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Signedness fix.
4751
47522015-02-25 Werner Lemberg <wl@gnu.org>
4753
Werner Lemberg83d41812015-02-25 08:10:58 +01004754 [lzw] Signedness fixes.
4755
4756 * src/lzw/ftzopen.c, src/lzw/ftzopen.h: Apply.
4757
47582015-02-25 Werner Lemberg <wl@gnu.org>
4759
Werner Lemberg17b62912015-02-25 07:53:09 +01004760 [gxvalid] Signedness fixes.
4761
4762 * src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c,
4763 src/gxvalid/gxvcommn.h, src/gxvalid/gxvjust.c,
4764 src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c,
4765 src/gxvalid/gxvmort1.c, src/gxvalid/gxvmort2.c,
4766 src/gxvalid/gxvmorx.c, src/gxvalid/gxvmorx1.c,
4767 src/gxvalid/gxvmorx2.c, src/gxvalid/gxvopbd.c,
4768 src/gxvalid/gxvprop.c, src/gxvalid/gxvtrak.c: Apply.
4769
47702015-02-25 Werner Lemberg <wl@gnu.org>
4771
Werner Lemberg24e4e962015-02-25 06:57:16 +01004772 [cache] Signedness fixes.
4773
4774 * src/cache/ftcbasic.c, src/cache/ftccmap.c, src/cache/ftcimage.c,
4775 src/cache/ftcmanag.c, src/cache/ftcsbits.c: Apply.
4776
47772015-02-25 Werner Lemberg <wl@gnu.org>
4778
Werner Lemberg559727d2015-02-25 06:55:00 +01004779 Change dimension fields in `FTC_ImageTypeRec' to unsigned type.
4780
4781 This doesn't break ABI.
4782
4783 * include/ftcache.h (FTC_ImageTypeRec): Use unsigned types for
4784 `width' and `height'.
4785
4786 * docs/CHANGES: Document it.
4787
47882015-02-25 Werner Lemberg <wl@gnu.org>
4789
Werner Lemberg4b9234b2015-02-25 06:31:43 +01004790 [cache] Don't use `labs'.
4791
4792 This is the only place in FreeType where this function was used.
4793
4794 * include/config/ftstdlib.h (ft_labs): Remove.
4795
4796 * src/cache/ftcimage.c (ftc_inode_weight): Replace `ft_labs' with
4797 `FT_ABS'.
4798
Werner Lemberg4d1f7af2015-02-23 07:04:36 +010047992015-02-23 Werner Lemberg <wl@gnu.org>
4800
Werner Lemberg3aaebe32015-02-23 08:20:27 +01004801 [cache] Replace `FT_PtrDist' with `FT_Offset'.
4802
4803 * src/cache/ftccache.h (FTC_NodeRec): `FT_Offset' (a.k.a. `size_t')
4804 is a better choice for `hash' to hold a pointer than `FT_PtrDist'
4805 (a.k.a. `ptrdiff_t'), especially since the latter is signed,
4806 causing zillions of signedness warnings. [Note that `hash' was of
Werner Lemberg17b62912015-02-25 07:53:09 +01004807 type `FT_UInt32' before the change to `FT_PtrDist'.]
Werner Lemberg3aaebe32015-02-23 08:20:27 +01004808 Update all users.
4809
4810 * src/cache/ftcbasic.c, src/cache/ftccache.c, src/cache/ftccmap.c,
4811 src/cache/ftcglyph.c, src/cache/ftcglyph.h: Updated.
4812
48132015-02-23 Werner Lemberg <wl@gnu.org>
4814
Werner Lemberg4d1f7af2015-02-23 07:04:36 +01004815 [smooth, raster] Re-enable standalone compilation.
4816
4817 * src/raster/ftraster.c (FT_RENDER_POOL_SIZE, FT_MAX)
4818 [_STANDALONE_]: Define macros.
4819
4820 * src/smooth/ftgrays.c (FT_RENDER_POOL_SIZE, FT_MAX, FT_ABS,
4821 FT_HYPOT) [_STANDALONE_]: Define macros.
4822
Werner Lemberg03ccfd02015-02-22 08:25:16 +010048232015-02-22 Werner Lemberg <wl@gnu.org>
4824
Werner Lembergcb13e712015-02-23 06:41:52 +01004825 [smooth] Signedness fixes.
4826
4827 * src/smooth/ftgrays.c, src/smooth/ftsmooth.c: Apply.
4828
48292015-02-22 Werner Lemberg <wl@gnu.org>
4830
Werner Lemberga974e9a2015-02-22 21:02:13 +01004831 * src/raster/ftraster.c: Use the file's typedefs everywhere.
4832
48332015-02-22 Werner Lemberg <wl@gnu.org>
4834
Werner Lembergb0ebcdc2015-02-22 20:42:49 +01004835 * src/sfnt/ttpost.c (load_format_20): Fix error tracing message.
4836
4837 Bug introduced 6 commits earlier.
4838
48392015-02-22 Werner Lemberg <wl@gnu.org>
4840
Werner Lemberg22b1d5c2015-02-22 20:41:03 +01004841 [pshinter] Fix thinko.
4842
4843 * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Correctly
4844 check `count'.
4845 Bug introduced two commits earlier.
4846
48472015-02-22 Werner Lemberg <wl@gnu.org>
4848
Werner Lembergca96fe02015-02-22 20:05:04 +01004849 [raster] Signedness fixes.
4850
4851 * src/raster/ftraster.c, src/raster/ftrend1.c: Apply.
4852
48532015-02-22 Werner Lemberg <wl@gnu.org>
4854
Werner Lemberg452066c2015-02-22 15:59:02 +01004855 [pshinter] Signedness fixes.
4856
4857 * src/pshinter/pshalgo.c, src/pshinter/pshglob.c,
4858 src/pshinter/pshrec.c: Apply.
4859
48602015-02-22 Werner Lemberg <wl@gnu.org>
4861
Werner Lemberg41c2ed82015-02-22 15:57:47 +01004862 [pshinter] Use macros for (unsigned) flags, not enumerations.
4863
4864 * src/pshinter/pshalgo.h (PSH_Hint_Flags): Replace with macros.
4865 Updated.
4866 * src/pshinter/pshrec.h (PS_Hint_Flags): Replace with macros.
4867
48682015-02-22 Werner Lemberg <wl@gnu.org>
4869
Werner Lemberg25c2f882015-02-22 15:54:31 +01004870 * src/pshinter/pshrec.c: Simplify.
4871 (ps_hints_open, ps_hints_stem): Remove switch statement.
4872
48732015-02-22 Werner Lemberg <wl@gnu.org>
4874
Werner Lemberg01f08422015-02-22 12:03:28 +01004875 [sfnt] Signedness fixes.
4876
4877 * src/sfnt/pngshim.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap.c,
4878 src/sfnt/ttkern.c, src/sfnt/ttload.c, src/sfnt/ttpost.c,
4879 src/sfnt/ttsbit.c: Apply.
4880 * src/sfnt/sfdriver.c: Apply.
4881 (sfnt_get_ps_name): Simplify.
4882
48832015-02-22 Werner Lemberg <wl@gnu.org>
4884
Werner Lemberg3c374c82015-02-22 09:16:53 +01004885 [bdf] Signedness fixes.
4886
4887 * src/bdf/bdf.h, src/bdf/bdfdrivr.c, src/bdf/bdfdrivr.h,
4888 src/bdf/bdflib.c: Apply.
4889
48902015-02-22 Werner Lemberg <wl@gnu.org>
4891
Werner Lembergb13945a2015-02-22 09:15:47 +01004892 * src/bdf/bdflib.c (_bdf_atous): New function.
4893 (_bdf_parse_glyphs, _bdf_parse_start): Use it.
4894
48952015-02-22 Werner Lemberg <wl@gnu.org>
4896
Werner Lemberg03ccfd02015-02-22 08:25:16 +01004897 [pcf] Signedness fixes.
4898
4899 * src/pcf/pcf.h, src/pcf/pcfdrivr.c: Apply.
4900 * src/pcf/pcfread.c: Apply.
4901 (pcf_get_encodings): Ignore invalid negative encoding offsets.
4902
Werner Lemberg633a7292015-02-21 07:02:01 +010049032015-02-21 Werner Lemberg <wl@gnu.org>
4904
Werner Lemberg3d7e53f2015-02-21 11:30:54 +01004905 * src/winfonts/winfnt.c: Signedness fixes.
4906
49072015-02-21 Werner Lemberg <wl@gnu.org>
4908
Werner Lemberg7b6b4172015-02-21 10:39:34 +01004909 [type42] Signedness fixes.
4910
4911 * src/type42/t42parse.c, src/type42/t42parse.h,
4912 src/type42/t42types.h: Apply.
4913
49142015-02-21 Werner Lemberg <wl@gnu.org>
4915
Werner Lemberg8bfffb42015-02-21 09:52:29 +01004916 [pfr] Signedness fixes.
4917
4918 * src/pfr/pfrdrivr.c, src/pfr/pfrgload.c, src/pfr/pfrload.c,
4919 src/pfr/pfrload.h, src/pfr/pfrobjs.c, src/pfr/pfrsbit.c,
4920 src/pfr/pfrtypes.h: Apply.
4921
49222015-02-21 Werner Lemberg <wl@gnu.org>
4923
Werner Lemberg633a7292015-02-21 07:02:01 +01004924 [cff] Minor signedness fixes related to last commit.
4925
4926 * src/cff/cf2ft.c, src/cff/cf2intrp.c, src/cff/cffgload.c: Apply.
4927
Werner Lemberg3a8d0532015-02-20 08:35:32 +010049282015-02-20 Werner Lemberg <wl@gnu.org>
4929
Werner Lembergc00b05f2015-02-20 20:42:55 +01004930 [cff] Thinkos in bias handling.
4931
4932 Only the final result is always positive.
4933
4934 Bug introduced three commits earlier.
4935
4936 * src/cff/cffgload.c, src/cff/cffgload.h: Apply.
4937
49382015-02-20 Werner Lemberg <wl@gnu.org>
4939
Werner Lemberg2bf03eb2015-02-20 20:14:11 +01004940 [cid] Fix signedness issues and emit some better error codes.
4941
4942 * src/cid/cidgload.c, src/cid/cidload.h, src/cid/cidobjs.c,
4943 src/cid/cidparse.h: Apply.
4944 * src/cid/cidload.c: Apply.
4945 (parse_fd_array): Reject negative values for number of dictionaries.
4946 * src/cid/cidparse.c: Apply.
4947 (cid_parser_new): Reject negative values for hex data length.
4948
49492015-02-20 Werner Lemberg <wl@gnu.org>
4950
Werner Lembergeb05bfb2015-02-20 08:37:35 +01004951 [cff] Signedness fixes for new engine.
4952
4953 * src/cff/cf2arrst.c, src/cff/cf2fixed.h, src/cff/cf2ft.c,
4954 src/cff/cf2ft.h, src/cff/cf2hints.c, src/cff/cf2intrp.c: Apply.
4955
49562015-02-20 Werner Lemberg <wl@gnu.org>
4957
Werner Lemberg3a8d0532015-02-20 08:35:32 +01004958 [cff] Signedness fixes for basic infrastructure and old engine.
4959
4960 * include/internal/pshints.h, src/cff/cffdrivr.c,
4961 src/cff/cffgload.c, src/cff/cffgload.h, src/cff/cffload.c,
4962 src/cff/cffobjs.c, src/cff/cffparse.c, src/pshinter/pshrec.c: Apply.
4963
Werner Lemberg81e5ff52015-02-19 09:46:48 +010049642015-02-19 Werner Lemberg <wl@gnu.org>
4965
Werner Lemberg3a1df3e2015-02-19 15:42:48 +01004966 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Ignore `countSizePairs'.
4967
4968 This is hard-coded to value 2 in `fvar' version 1.0 (and no newer
4969 version exists), but some fonts set it incorrectly.
4970
4971 Problem reported by Adam Twardoch <adam@fontlab.com>.
4972
49732015-02-19 Werner Lemberg <wl@gnu.org>
4974
Werner Lemberg93a884c2015-02-19 14:11:16 +01004975 [cff] Emit better error code for invalid private dict size.
4976
4977 * src/cff/cffparse.c (cff_parse_private_dict): Reject negative
4978 values for size and offset.
4979
49802015-02-19 Werner Lemberg <wl@gnu.org>
4981
Werner Lembergb57bb112015-02-19 10:44:18 +01004982 [autofit] Fix signedness issues.
4983
4984 * src/autofit/afangles.c, src/autofit/afcjk.c,
4985 src/autofit/afglobal.c, src/autofit/afhints.c,
4986 src/autofit/aflatin.c, src/autofit/aflatin2.c, src/autofit/afwarp.c,
4987 src/autofit/hbshim.c: Apply.
4988
49892015-02-19 Werner Lemberg <wl@gnu.org>
4990
Werner Lemberg81e5ff52015-02-19 09:46:48 +01004991 [autofit] Use macros for (unsigned) flags, not enumerations.
4992
4993 This harmonizes with other code in FreeType (and reduces the number
4994 of necessary casts to avoid compiler warnings).
4995
4996 * src/autofit/afblue.hin: Make flag macros unsigned.
4997 * src/autofit/afblue.h: Regenerated.
4998
4999 * src/autofit/afcjk.h: Replace flag enumeration with macros.
5000 * src/autofit/afcjk.c: Updated.
5001
5002 * src/autofit/afhints.h (AF_Flags, AF_Edge_Flags): Replace with
5003 macros.
5004 * src/autofit/afhints.c: Updated.
5005
5006 * src/autofit/aflatin.h: Replace flag enumerations with macros.
5007 * src/autofit/aflatin.c, src/autofit/aflatin2.c: Updated.
5008
5009 * src/autofit/aftypes.h (AF_ScalerFlags): Replace with macros.
5010
Werner Lemberg6a0ded72015-02-18 08:51:22 +010050112015-02-18 Werner Lemberg <wl@gnu.org>
5012
Werner Lemberg3b5f3322015-02-18 11:45:22 +01005013 [type1] Fix signedness issues.
5014
5015 * include/internal/psaux.h, include/internal/t1types.h,
5016 src/psaux/psobjs.c, src/psaux/psobjs.h, src/psaux/t1decode.c,
5017 src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1parse.c: Apply.
5018
50192015-02-18 Werner Lemberg <wl@gnu.org>
5020
Werner Lemberg272e3cd2015-02-18 11:38:46 +01005021 [psaux, type1] Fix minor AFM issues.
5022
5023 * include/internal/t1types.h (AFM_KernPairRec): Make indices
5024 unsigned.
5025 Update users.
5026 (AFM_FontInfoRec): Make element counters unsigned.
5027 Update users.
5028 * src/psaux/afmparse.h (AFM_ValueRec): Add union member for unsigned
5029 int.
5030
5031 * src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs):
5032 Reject negative values for number of kerning elements.
5033
5034 * src/type1/t1afm.c, src/tools/test_afm.c: Updated.
5035
50362015-02-18 Werner Lemberg <wl@gnu.org>
5037
Werner Lemberg6bd7d282015-02-18 09:22:06 +01005038 Don't use `FT_PtrDist' for lengths.
5039
5040 Use FT_UInt instead.
5041
5042 * include/internal/psaux.h (PS_Table_FuncsRec, PS_TableRec,
5043 T1_DecoderRec): Do it.
5044
5045 * include/internal/t1types.h (T1_FontRec): Ditto.
5046
5047 * src/cid/cidload.c (cid_parse_dict): Updated.
5048 * src/pfr/pfrload.c (pfr_extra_item_load_font_id): Ditto.
5049 * src/psaux/psobjs.c (ps_table_add), src/psaux/psobjs.h: Ditto.
5050 * src/type1/t1load.c (parse_blend_axis_types, parse_encoding,
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04005051 parse_charstrings, parse_dict): Ditto.
Werner Lemberg6bd7d282015-02-18 09:22:06 +01005052 * src/type42/t42parse.c (t42_parse_encoding, t42_parse_charstrings,
5053 t42_parse_dict): Ditto.
5054
50552015-02-18 Werner Lemberg <wl@gnu.org>
5056
Werner Lemberg6a0ded72015-02-18 08:51:22 +01005057 * src/type1/t1driver.c (t1_ps_get_font_value): Clean up.
5058 This handles negative values better, avoiding many casts.
5059
Werner Lemberg0a33a392015-02-17 08:03:05 +010050602015-02-17 Werner Lemberg <wl@gnu.org>
5061
Werner Lembergd3240c52015-02-17 20:30:36 +01005062 [base] Fix Savannah bug #44284.
5063
5064 * src/base/ftcalc.c (FT_MulFix): Typos.
5065
50662015-02-17 Werner Lemberg <wl@gnu.org>
5067
Werner Lemberg1f7a4e12015-02-17 10:17:56 +01005068 [truetype] Finish compiler warning fixes for signedness issues.
5069
5070 * src/truetype/ttgxvar.c, src/truetype/ttsubpix.c,
5071 src/truetype/ttsubpix.h: Apply.
5072
50732015-02-17 Werner Lemberg <wl@gnu.org>
5074
Werner Lemberg9daea2c2015-02-17 09:27:56 +01005075 * src/truetype/ttsubpix.c: Adding missing `static' keywords.
5076
50772015-02-17 Werner Lemberg <wl@gnu.org>
5078
Werner Lembergd9c3f152015-02-17 09:21:26 +01005079 [truetype] More signedness fixes.
5080
5081 * include/internal/tttypes.h, src/truetype/ttinterp.h,
5082 src/truetype/ttobjs.h, src/truetype/ttinterp.c,
5083 src/truetype/ttobjs.c: Apply.
5084
50852015-02-17 Werner Lemberg <wl@gnu.org>
5086
Werner Lemberg0a33a392015-02-17 08:03:05 +01005087 [truetype] Various signedness fixes.
5088
5089 * include/internal/ftgloadr.h, src/truetype/ttpload.c: Apply.
5090
5091 * src/truetype/ttgload.c: Apply.
5092 (TT_Get_VMetrics): Protect against invalid ascenders and descenders
5093 while constructing advance height.
5094
Werner Lemberg587351b2015-02-16 07:03:22 +010050952015-02-16 Werner Lemberg <wl@gnu.org>
5096
Werner Lemberg76abc752015-02-16 22:00:27 +01005097 [base] Finish compiler warning fixes for signedness issues.
5098
5099 * src/base/ftglyph.c, src/base/ftlcdfil.c, src/base/ftstroke.c:
5100 Apply.
5101
51022015-02-16 Werner Lemberg <wl@gnu.org>
5103
Werner Lemberg10aa8582015-02-16 20:12:54 +01005104 * include/tttables.h (TT_OS2): `fsType' must be FT_UShort.
5105
51062015-02-16 Werner Lemberg <wl@gnu.org>
5107
Werner Lemberg2e814fc2015-02-16 20:05:08 +01005108 More minor signedness warning fixes.
5109
5110 * src/base/ftbbox.c, src/base/ftbitmap.c, src/base/fttrigon.c,
5111 src/base/ftutil.c: Apply.
5112
51132015-02-16 Werner Lemberg <wl@gnu.org>
5114
Werner Lemberg82235d02015-02-16 19:35:16 +01005115 Next round of minor compiler warning fixes.
5116
5117 * include/internal/ftrfork.h (FT_RFork_Ref): Change `offset' member
5118 type to `FT_Long'.
5119 (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Add `static' keyword.
5120
Werner Lemberg3aaebe32015-02-23 08:20:27 +01005121 * include/internal/ftstream.h (FT_Stream_Pos): Return `FT_ULong'.
Werner Lemberg82235d02015-02-16 19:35:16 +01005122
5123 * src/base/ftoutln.c, src/base/ftrfork.c, src/base/ftstream.c:
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04005124 Signedness fixes.
Werner Lemberg82235d02015-02-16 19:35:16 +01005125
51262015-02-16 Werner Lemberg <wl@gnu.org>
5127
Werner Lemberg3cfa4d12015-02-16 17:59:06 +01005128 Various minor signedness fixes.
5129
5130 * include/ftadvanc.h, include/internal/ftobjs.h,
5131 src/base/ftgloadr.c, src/base/ftobjs.c: Apply.
5132
51332015-02-16 Werner Lemberg <wl@gnu.org>
5134
Werner Lemberg6f325c22015-02-16 11:31:32 +01005135 New `TYPEOF' macro.
5136
5137 This helps suppress signedness warnings, avoiding issues with
5138 implicit conversion changes.
5139
5140 * include/config/ftconfig.h, builds/unix/ftconfig.in,
5141 builds/vms/ftconfig.h (TYPEOF): Define.
5142
5143 * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
5144 src/autofit/afwarp.h (AF_WARPER_FLOOR): Use it.
5145
51462015-02-16 Werner Lemberg <wl@gnu.org>
5147
Werner Lemberg1f377f02015-02-16 08:37:09 +01005148 * src/base/ftsystem.c: Use casts in standard C function wrappers.
5149 (ft_alloc, ft_realloc, ft_ansi_stream_io, FT_Stream_Open): Do it.
5150
51512015-02-16 Werner Lemberg <wl@gnu.org>
5152
Werner Lemberg0814b802015-02-16 07:29:53 +01005153 Fix Savannah bug #44261.
5154
5155 * builds/unix/detect.mk (setup) [unix]: Set `CONFIG_SHELL' in the
5156 environment also while calling the configure script.
5157
51582015-02-16 Werner Lemberg <wl@gnu.org>
5159
Werner Lemberg587351b2015-02-16 07:03:22 +01005160 * include/internal/ftmemory.h: Add some `FT_Offset' casts.
5161 (FT_MEM_SET, FT_MEM_COPY, FT_MEM_MOVE, FT_ARRAY_ZERO, FT_ARRAY_COPY,
5162 FT_MEM_MOVE): Do it.
5163
Werner Lemberg6d7d6362015-02-15 12:30:42 +010051642015-02-15 Werner Lemberg <wl@gnu.org>
5165
Werner Lemberg48186b82015-02-16 06:37:36 +01005166 [base] Clean up signedness issues in `ftdbgmem.c'.
5167
5168 Also fix other minor issues.
5169
5170 * src/base/ftdbgmem.c (FT_MemTableRec): Replace all FT_ULong types
5171 with FT_Long for consistency.
5172 (ft_mem_primes): Change type to `FT_Int'.
5173 (ft_mem_closest_prime, ft_mem_table_set): Updated.
5174
5175 (ft_mem_debug_panic, ft_mem_debug_alloc, ft_mem_debug_free,
5176 ft_mem_debug_realloc): Use `static' keyword and fix signedness
5177 warnings where necessary.
5178
5179 (ft_mem_table_resize, ft_mem_table_new, ft_mem_table_destroy,
5180 ft_mem_table_get_nodep, ft_mem_debug_init, FT_DumpMemory): Fix types
5181 and add or remove casts to avoid signedness warnings.
5182
51832015-02-15 Werner Lemberg <wl@gnu.org>
5184
Werner Lemberg6d7d6362015-02-15 12:30:42 +01005185 [base] Clean up signedness in arithmetic functions.
5186
5187 This makes the code more readable and reduces compiler warnings.
5188
5189 * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_MulFix,
5190 FT_DivFix): Convert input parameters to unsigned, do the
5191 computation, then convert the result back to signed.
5192 (ft_corner_orientation): Fix casts.
5193
Werner Lemberg92359bd2015-02-07 09:47:23 +010051942015-02-07 Werner Lemberg <wl@gnu.org>
5195
5196 [sfnt] Fix Savannah bug #44184.
5197
5198 * src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir): No
5199 longer reject `htmx' and `vmtx' tables with invalid length but
5200 sanitize them.
5201
Jon Anderson416d8792015-02-06 10:16:45 +010052022015-02-06 Jon Anderson <jon@websupergoo.com>
5203
5204 [truetype] Fix regression in the incremental glyph loader.
5205
5206 * src/truetype/ttgload.c (load_truetype_glyph): For incremental
5207 fonts, the glyph index may be greater than the number of glyphs
5208 indicated, so guard the check with a preprocessor conditional.
5209
Werner Lembergb6cb4992015-02-06 08:46:06 +010052102015-02-06 Werner Lemberg <wl@gnu.org>
5211
5212 [autofit] Fix potential memory leak.
5213
5214 While this doesn't show up with FreeType, exactly the same code
5215 leaks with ttfautohint's modified auto-hinter code (which gets used
5216 in a slightly different way).
5217
5218 It certainly doesn't harm since it is similar to already existing
5219 checks in the code for embedded arrays.
5220
5221 * src/autofit/afhints.c (af_glyph_hints_reload): Set `max_contours'
5222 and `max_points' for all cases.
5223
Werner Lemberg19146a52015-01-31 11:01:33 +010052242015-01-31 Werner Lemberg <wl@gnu.org>
5225
5226 [autofit] Add support for Thai script.
5227
5228 Thanks to Ben Mitchell <ben@rosettatype.com> for guidance with blue
5229 zone characters!
5230
5231 * src/autofit/afblue.dat: Add blue zone data for Thai.
5232
5233 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
5234
5235 * src/autofit/afscript.h: Add Thai standard characters.
5236
5237 * src/autofit/afranges.c: Add Thai data.
5238
5239 * src/autofit/afstyles.h: Add Thai data.
5240
Behdad Esfahbod264b5e42015-01-23 21:23:55 +010052412015-01-23 Behdad Esfahbod <behdad@behdad.org>
5242
5243 [raster] Handle `FT_RASTER_FLAG_AA' correctly.
5244
5245 This fixes a breakage caused by the commit `[raster] Remove
5246 5-level gray AA mode from monochrome rasterizer.'.
5247
Werner Lembergd2c531e2015-01-23 22:37:42 +01005248 Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de>.
Behdad Esfahbod264b5e42015-01-23 21:23:55 +01005249
5250 * src/raster/ftraster.c (ft_black_render): Handle
5251 `FT_RASTER_FLAG_AA'.
5252
5253 * src/raster/ftrend1.c (ft_raster1_render): Remove gray AA mode
5254 remnants.
5255
Werner Lemberg79a5ac62015-01-18 07:30:04 +010052562015-01-18 Werner Lemberg <wl@gnu.org>
5257
5258 * src/base/ftobjs.c (FT_New_Library): Fix compiler warning.
5259
Chris Liddell942aa5f2015-01-18 07:29:48 +010052602015-01-18 Chris Liddell <chris.liddell@artifex.com>
5261
5262 [raster] Fix Savannah bug #44022.
5263
5264 Add fallback for glyphs with degenerate bounding boxes.
5265
5266 If a glyph has only one very narrow feature, the bbox can end up
5267 with either the width or height of the bbox being 0, in which case
5268 no raster memory is allocated and no attempt is made to render the
5269 glyph. This is less than ideal when the drop-out compensation in
5270 the rendering code would actually result in the glyph being
5271 rendered.
5272
5273 This problem can be observed with the `I' glyph (gid 47) in the
5274 Autodesk RomanS TrueType font.
5275
5276 * src/raster/ftrend1.c (ft_raster1_render): Add a fallback if either
5277 dimension is zero to explicitly round up/down (instead of simply
5278 round).
5279
Werner Lemberg50be00d2015-01-17 20:38:31 +010052802015-01-17 Werner Lemberg <wl@gnu.org>
5281
5282 Add some tools to handle yearly copyright notice updates.
5283
5284 We are now following the GNU guidelines: A new release automatically
5285 means that the copyright year of all affected files gets updated; it
5286 is no longer used to track years of modification changes.
5287
5288 * src/tools/update-copyright-year: New Perl script.
5289 * src/tools/update-copyright: New shell script that calls
5290 `update-copyright-year' on all files.
5291 * src/tools/no-copyright: Exceptions that should not be handled by
5292 `update-copyright'
5293
Werner Lemberg4eff8542015-01-14 20:06:19 +010052942015-01-14 Werner Lemberg <wl@gnu.org>
5295
5296 * docs/CHANGES: Updated, using a description from Behdad.
5297
Behdad Esfahbod3f9b3d82015-01-14 15:48:12 +010052982015-01-14 Behdad Esfahbod <behdad@behdad.org>
5299
Behdad Esfahbod48c86622015-01-14 19:38:36 +01005300 * src/autofit/afmodule.c (af_autofitter_done): Fix compiler warning.
5301
53022015-01-14 Behdad Esfahbod <behdad@behdad.org>
5303
Behdad Esfahbod56ddafa2015-01-14 19:36:02 +01005304 [autofit] Add embedded array of segments and edges.
5305
5306 Avoids multiple mallocs per typical glyphs.
5307
5308 With this and recent changes to avoid mallocs, the thread-safe
5309 stack-based loader is now as fast as the previous model that had one
5310 cached singleton.
5311
5312 * src/autofit/afhints.h (AF_SEGMENTS_EMBEDDED, AF_EDGES_EMBEDDED):
5313 New macros.
5314 (AF_AxisHintsRec): Add two arrays for segments and edges.
5315
5316 * src/autofit/afhints.c (af_axis_hints_new_segment): Only allocate
5317 data if number of segments exceeds given threshold value.
5318 (af_axis_hints_new_edge): Only allocate data if number of edges
5319 exceeds given threshold value.
5320 (af_glyph_hints_done): Updated.
5321
53222015-01-14 Behdad Esfahbod <behdad@behdad.org>
5323
Behdad Esfahbod6f16b102015-01-14 19:26:49 +01005324 [autofit] Add embedded arrays for points and contours.
5325
5326 This avoids at least two malloc calls for typical glyphs.
5327
5328 * src/autofit/afhints.h (AF_POINTS_EMBEDDED, AF_CONTOURS_EMBEDDED):
5329 New macros.
5330 (AF_GlyphHintsRec): Add two arrays for contours and points.
5331
5332 * src/autofit/afhints.c (af_glyph_hints_init, af_glyph_hints_done):
5333 Updated.
5334 (af_glyph_hints_reload): Only allocate data if number of contours or
5335 points exceeds given threshold values.
5336
53372015-01-14 Behdad Esfahbod <behdad@behdad.org>
5338
Behdad Esfahbodc2733652015-01-14 19:16:12 +01005339 [autofit] Allocate hints object on the stack.
5340
5341 This avoids one malloc per load.
5342
5343 * src/autofit/afloader.h (AF_LoaderRec): Change type of `hints' to
5344 `AF_GlyphHints'.
5345 Update prototype.
5346
5347 * src/autofit/afloader.c (af_loader_init): Use `AF_GlyphHints'
5348 parameter instead of `FT_Memory'.
5349 (af_loader_done): Directly reset `load_hints'.
5350 (af_loader_load_g): Updated.
5351
5352 * src/autofit/afmodule.c (af_autofitter_load_glyph): Use local
5353 `hints' object.
5354
53552015-01-14 Behdad Esfahbod <behdad@behdad.org>
5356
Behdad Esfahboda4117fb2015-01-14 19:07:54 +01005357 [autofit] Reuse slot glyph loader.
5358
5359 No need to create a new glyph loader; we can reuse the one from
5360 `slot->internal->loader'. It's hard to tell why it was written that
5361 way originally, but new code looks sound and correct to me, and
5362 avoids lots of allocations.
5363
5364 * src/autofit/afloader.c (af_loader_init): Change return type to
5365 `void'.
5366 Don't call `FT_GlyphLoader_New'.
5367 (af_loader_reset): Don't call `FT_GlyphLoader_Rewind'.
5368 (af_loader_load_g): Update code to use `internal->loader', which
5369 doesn't need copying of data.
5370
5371 * src/autofit/afloader.h (AF_LoaderRec): Remove `gloader' member.
5372 Update prototype.
5373
5374 * src/autofit/afmodule.c (af_autofitter_load_glyph): Updated.
5375
53762015-01-14 Behdad Esfahbod <behdad@behdad.org>
5377
Behdad Esfahbodae6699f2015-01-14 18:55:39 +01005378 [autofit] Remove (unused) support for composite glyphs.
5379
5380 We never have to deal with composite glyphs in the autohinter, as
5381 those will be loaded into FORMAT_OUTLINE by the recursed
5382 `FT_Load_Glyph' function.
5383
5384 In the rare cases that FT_LOAD_NO_RECURSE is set, it will imply
5385 FT_LOAD_NO_SCALE as per `FT_Load_Glyph', which then implies
5386 FT_LOAD_NO_HINTING:
5387
5388 /* resolve load flags dependencies */
5389
5390 if ( load_flags & FT_LOAD_NO_RECURSE )
5391 load_flags |= FT_LOAD_NO_SCALE |
5392 FT_LOAD_IGNORE_TRANSFORM;
5393
5394 if ( load_flags & FT_LOAD_NO_SCALE )
5395 {
5396 load_flags |= FT_LOAD_NO_HINTING |
5397 FT_LOAD_NO_BITMAP;
5398
5399 load_flags &= ~FT_LOAD_RENDER;
5400 }
5401
5402 and as such the auto-hinter is never called. Thus, the recursion in
5403 `af_loader_load_g' never actually happens. So remove the depth
5404 counter as well.
5405
5406 * src/autofit/afloader.c (af_loader_load_g): Remove `depth'
5407 parameter.
5408 <FT_GLYPH_FORMAT_COMPOSITE>: Remove associated code.
5409 (af_loader_load_glyph): Updated.
5410
54112015-01-14 Behdad Esfahbod <behdad@behdad.org>
5412
Behdad Esfahbodc242fe42015-01-14 18:48:14 +01005413 [raster] Fix uninitialized memory access.
5414
5415 Apparently `ras.cProfile' might be uninitialized. This will be the
5416 case if `ras.top == ras.cProfile->offset', as can be seen in
5417 `End_Profile'. The overshoot code introduced in a change `Fix B/W
5418 rasterization of subglyphs with different drop-out modes.' (from
5419 2009-06-18) violated this, accessing `ras.cProfile->flags'
5420 unconditionally just before calling `End_Profile' (which then
5421 detected that `cProfile' is uninitialized and didn't touch it).
5422
5423 This was harmless, and was not detected by valgrind before because
5424 the objects were allocated on the `raster_pool', which was always
5425 initialized. With recent change to allocate raster buffers on the
5426 stack, valgrind now reported this invalid access.
5427
5428 * src/raster/ftraster.c (Convert_Glyph): Don't access an
5429 uninitialized `cProfile'.
5430
54312015-01-14 Behdad Esfahbod <behdad@behdad.org>
5432
Behdad Esfahbodb2ba6862015-01-14 18:43:13 +01005433 [smooth] Fix uninitialized memory access.
5434
5435 Looks like `ras.span_y' could always be used without initialization.
5436 This was never detected by valgrind before because the library-wide
5437 `raster_pool' was used for the worker object and `raster_pool' was
5438 originally zero'ed. But subsequent reuses of it were using `span_y'
5439 uninitialized. With the recent change to not use `render_pool' and
5440 allocate worker and buffer on the stack, valgrind now detects this
5441 uninitialized access.
5442
5443 * src/smooth/ftgrays.c (gray_raster_render): Initialize
5444 `ras.span_y'.
5445
54462015-01-14 Behdad Esfahbod <behdad@behdad.org>
5447
Behdad Esfahbod603292d2015-01-14 18:35:56 +01005448 [base] Don't initialize unused `driver->glyph_loader'.
5449
5450 * src/base/ftobjs.c (Destroy_Driver): Don't call
5451 `FT_GlyphLoader_Done'.
5452 (FT_Add_Module): Don't call `FT_GlyphLoader_New'.
5453
54542015-01-14 Behdad Esfahbod <behdad@behdad.org>
5455
Behdad Esfahbod51634252015-01-14 18:30:59 +01005456 [base] Don't allocate `library->raster_pool' anymore.
5457
5458 It's unused after the following commits:
5459
5460 [raster] Allocate render pool for mono rasterizer on the stack.
5461 [raster] Remove 5-level gray AA mode from monochrome rasterizer.
5462
5463 The value of FT_RENDER_POOL_SIZE still serves the purpose it used to
5464 serve, which is, to adjust the pool size. But the pool is now
5465 allocated on the stack on demand.
5466
5467 * src/base/ftobjs.c (FT_New_Library, FT_Done_Library): Implement.
5468
54692015-01-14 Behdad Esfahbod <behdad@behdad.org>
5470
Behdad Esfahbod6dfdaf42015-01-14 18:21:13 +01005471 [base] Do not reorder library->renderers upon use.
5472
5473 Instead of keeping `library->renderers' in a MRU order, just leave
5474 it as-is. The MRU machinery wasn't thread-safe.
5475
5476 With this patch, rasterizing glyphs from different faces from
5477 different threads doesn't fail choosing rasterizer
5478 (FT_Err_Cannot_Render_Glyph).
5479
5480 Easiest to see that crash was to add a `printf' (or otherwise let
5481 thread yield in FT_Throw with debugging enabled).
5482
5483 * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c
5484 (FT_Outline_Render): Don't call `FT_Set_Renderer'.
5485
54862015-01-14 Behdad Esfahbod <behdad@behdad.org>
5487
Behdad Esfahboda773c302015-01-14 18:16:20 +01005488 [raster] Allocate render pool for mono rasterizer on the stack.
5489
5490 Instead of using the `render_pool' member of `FT_Library' that is
5491 provided down to the rasterizer, completely ignore that and allocate
5492 needed objects on the stack instead.
5493
5494 With this patch, rasterizing glyphs from different faces from
5495 different threads doesn't crash in the monochrome rasterizer.
5496
5497 * src/raster/ftraster.c (black_TRaster): Remove `buffer',
5498 `buffer_size', and `worker' members.
5499
5500 (ft_black_render): Create `buffer' locally.
5501 (ft_black_reset): Updated.
5502
55032015-01-14 Behdad Esfahbod <behdad@behdad.org>
5504
Behdad Esfahbod8dc86352015-01-14 18:06:22 +01005505 [raster] Remove 5-level gray AA mode from monochrome rasterizer.
5506
5507 It was off by default and couldn't be turned on at runtime. And the
5508 smooth rasterizer superceded it over ten years ago. No point in
5509 keeping. Comments suggested that it was there for compatibility
5510 with FreeType 1.
5511
5512 550 lines down.
5513
5514 * src/raster/ftraster.c (FT_RASTER_OPTION_ANTI_ALIASING,
5515 RASTER_GRAY_LINES): Remove macros and all associated code.
5516
5517 (black_TWorker): Remove `gray_min_x' and `gray_max_x'.
5518 (black_TRaster): Remove `grays' and `gray_width'.
5519
5520 (Vertical_Sweep_Init, Vertical_Sweep_Span, Vertical_Sweep_Drop,
5521 ft_black_render): Updated.
5522
5523 * src/raster/ftrend1.c (ft_raster1_render): Simplify code.
5524 (ft_raster5_renderer_class): Removed.
5525
55262015-01-14 Behdad Esfahbod <behdad@behdad.org>
5527
Behdad Esfahbod747ae2c2015-01-14 17:54:26 +01005528 [smooth] Allocate render pool for smooth rasterizer on the stack.
5529
5530 Instead of using the `render_pool' member of `FT_Library' that is
5531 provided down to the rasterizer, completely ignore that and allocate
5532 needed objects on the stack instead.
5533
5534 With this patch, rasterizing glyphs from different faces from
5535 different threads doesn't crash in the smooth rasterizer.
5536
5537 Bugs:
5538
5539 https://bugzilla.redhat.com/show_bug.cgi?id=678397
5540 https://bugzilla.redhat.com/show_bug.cgi?id=1004315
5541 https://bugzilla.redhat.com/show_bug.cgi?id=1165471
5542 https://bugs.freedesktop.org/show_bug.cgi?id=69034
5543
5544 * src/smooth/ftgrays.c (gray_TRaster): Remove `buffer',
5545 `buffer_size', `band_size', and `worker' members.
5546
5547 (gray_raster_render): Create `buffer', `buffer_size', and
5548 `band_size' locally.
5549 (gray_raster_reset): Updated.
5550
55512015-01-14 Behdad Esfahbod <behdad@behdad.org>
5552
Behdad Esfahbod531d4632015-01-14 17:46:55 +01005553 [truetype] Allocate TT_ExecContext in TT_Size instead of TT_Driver.
5554
5555 Previously the code had stipulation for using a per-TT_Size exec
5556 context if `size->debug' was true. But there was no way that
5557 `size->debug' could *ever* be true. As such, the code was always
5558 using the singleton `TT_ExecContext' that was stored in `TT_Driver'.
5559 This was, clearly, not threadsafe.
5560
5561 With this patch, loading glyphs from different faces from different
5562 threads doesn't crash in the bytecode loader code.
5563
5564 * src/truetype/ttobjs.h (TT_SizeRec): Remove `debug' member.
5565 (TT_DriverRec): Remove `context' member.
5566
5567 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Remove
5568 `TT_ExecContext' code related to a global `TT_Driver' object.
5569
5570 (tt_driver_done): Don't remove `TT_ExecContext' object here but ...
5571 (tt_size_done_bytecode): ... here.
5572
5573 (tt_driver_init): Don't create `TT_ExecContext' object here but ...
5574 (tt_size_init_bytecode): ... here, only on demand.
5575
5576 * src/truetype/ttinterp.c (TT_Run_Context): Remove defunct debug
5577 code.
5578 (TT_New_Context): Remove `TT_ExecContext' code related to a global
5579 `TT_Driver' object.
5580
5581 * src/truetype/ttinterp.h: Updated.
5582
5583 * src/truetype/ttgload.c (TT_Hint_Glyph, tt_loader_init): Updated.
5584
55852015-01-14 Behdad Esfahbod <behdad@behdad.org>
5586
Behdad Esfahbod89bc8d42015-01-14 16:01:19 +01005587 [autofit] Allocate AF_Loader on the stack instead of AF_Module.
5588
5589 Stop sharing a global `AF_Loader'. Allocate one on the stack during
5590 glyph load.
5591
5592 Right now this results in about 25% slowdown, to be fixed in a
5593 following commit.
5594
5595 With this patch loading glyphs from different faces from different
5596 threads doesn't immediately crash in the autohinting loader code.
5597
5598 Bugs:
5599
5600 https://bugzilla.redhat.com/show_bug.cgi?id=1164941
5601
5602 * src/autofit/afloader.c (af_loader_init): Pass
5603 `AF_Loader' and `FT_Memory' instead of `AF_Module' as arguments.
5604 (af_loader_reset, af_loader_load_glyph): Also pass `loader' as
5605 argument.
5606 (af_loader_done): Use `AF_Loader' instead of `AF_Module' as
5607 argument.
5608
5609 * src/autofit/afmodule.c (af_autofitter_init): Don't call
5610 `af_loader_init'.
5611 (af_autofitter_done): Don't call `af_loader_done'.
5612 (af_autofitter_load_glyph): Use a local `AF_Loader' object.
5613
5614 * src/autofit/afloader.h: Include `afmodule.h'.
5615 Update prototypes.
5616 Move typedef for `AF_Module' to...
5617
5618 * src/autofit/afmodule.h: ... this place.
5619 No longer include `afloader.h'.
5620
56212015-01-14 Behdad Esfahbod <behdad@behdad.org>
5622
Behdad Esfahbod3f9b3d82015-01-14 15:48:12 +01005623 * src/type42/t42objs.h (T42_DriverRec): Remove unused member.
5624
Werner Lemberg36d03c92015-01-12 11:26:30 +010056252015-01-12 Werner Lemberg <wl@gnu.org>
5626
5627 Fix Savannah bug #43976.
5628
5629 Assure that FreeType's internal include directories are found before
5630 `CPPFLAGS' (which might be set by the user in the environment), and
5631 `CPPFLAGS' before `CFLAGS'.
5632
5633 * builds/freetype.mk (FT_CFLAGS): Don't add `INCLUDE_FLAGS'.
5634 (FT_COMPILE): Make this a special variable for compiling only the
5635 files handled in `freetype.mk'.
5636 (.c.$O): Removed, unused.
5637
5638 * src/*/rules.mk (*_COMPILE): Fix order of include directories.
5639
Werner Lembergd03a67a2015-01-11 08:39:14 +010056402015-01-11 Werner Lemberg <wl@gnu.org>
5641
Alexei Podtelezhnikovc6d99a42016-04-08 00:05:50 -04005642 [truetype] Prettifying.
Werner Lemberg95b57052015-01-11 09:50:49 +01005643
5644 * src/truetype/ttinterp.c (project, dualproj, fast_project,
5645 fast_dualproj): Rename to...
5646 (PROJECT, DUALPROJ, FAST_PROJECT, FAST_DUALPROJ): ... this.
5647
56482015-01-11 Werner Lemberg <wl@gnu.org>
5649
Werner Lembergea173c02015-01-11 08:58:54 +01005650 * src/truetype/ttinterp.c (Ins_JROT, Ins_JROF): Simplify.
5651
5652 Based on a patch from Behdad.
5653
56542015-01-11 Werner Lemberg <wl@gnu.org>
5655
Werner Lemberg628578c2015-01-11 08:53:31 +01005656 * src/truetype/ttinterp.c (Ins_SxVTL): Simplify function call.
5657
56582015-01-11 Werner Lemberg <wl@gnu.org>
5659
Werner Lemberg08e79092015-01-11 08:45:50 +01005660 * src/truetype/ttinterp.c (Normalize): Remove unused argument.
5661
56622015-01-11 Werner Lemberg <wl@gnu.org>
5663
Werner Lembergd03a67a2015-01-11 08:39:14 +01005664 [truetype] More macro expansions.
5665
Werner Lemberg4aaadf42015-01-11 08:42:28 +01005666 * src/truetype/ttinterp.c (FT_UNUSED_EXEC): Remove macro by
5667 expansion.
5668
56692015-01-11 Werner Lemberg <wl@gnu.org>
5670
5671 [truetype] More macro expansions.
5672
Werner Lembergd03a67a2015-01-11 08:39:14 +01005673 * src/truetype/ttinterp.c (INS_ARG): Remove macro by expansion,
Alexei Podtelezhnikovbbb60962016-04-07 01:29:44 -04005674 adjusting function calls where necessary.
Werner Lembergd03a67a2015-01-11 08:39:14 +01005675 (FT_UNUSED_ARG): Removed, no longer needed.
5676
Werner Lemberg1b4d68c2015-01-10 19:56:28 +010056772015-01-10 Werner Lemberg <wl@gnu.org>
5678
Werner Lembergeb341362015-01-11 00:23:27 +01005679 [truetype] More macro expansions.
5680
5681 Based on a patch from Behdad.
5682
5683 * src/truetype/ttinterp.c (DO_*): Expand macros into corresponding
5684 `Ins_*' functions.
5685 (TT_RunIns): Replace `DO_*' macros with `Ins_*' function calls.
5686 (ARRAY_BOUND_ERROR): Remove second definition, which is no longer
5687 needed.
5688 (Ins_SVTCA, Ins_SPVTCA, Ins_SFVTCA): Replaced with...
5689 (Ins_SxyTCA): New function.
5690
56912015-01-10 Werner Lemberg <wl@gnu.org>
5692
Werner Lemberg01be1302015-01-10 23:05:37 +01005693 [truetype] Remove TT_CONFIG_OPTION_INTERPRETER_SWITCH.
5694
5695 Behdad suggested this code simplification, and nobody objected...
5696
5697 * include/config/ftoption.h, devel/ftoption.h
5698 (TT_CONFIG_OPTION_INTERPRETER_SWITCH): Remove.
5699
5700 * src/truetype/ttinterp.c [TT_CONFIG_OPTION_INTERPRETER_SWITCH]:
5701 Remove related code.
5702 (ARRAY_BOUND_ERROR): Use do-while loop.
5703
57042015-01-10 Werner Lemberg <wl@gnu.org>
5705
Werner Lembergfae0c812015-01-10 20:23:10 +01005706 [truetype] More macro expansions.
5707
Werner Lemberg6cc1f122015-01-10 21:56:59 +01005708 * src/truetype/ttinterp.c, src/truetype/ttinterp.h (EXEC_ARG_,
5709 EXEC_ARG): Remove by replacing with expansion.
5710
57112015-01-10 Werner Lemberg <wl@gnu.org>
5712
5713 [truetype] More macro expansions.
5714
Werner Lemberg24681452015-01-10 21:53:48 +01005715 Based on a patch from Behdad.
5716
5717 * src/truetype/ttinterp.c (SKIP_Code, GET_ShortIns, NORMalize,
5718 SET_SuperRound, ROUND_None, INS_Goto_CodeRange, CUR_Func_move,
5719 CUR_Func_move_orig, CUR_Func_round, CUR_Func_cur_ppem,
5720 CUR_Func_read_cvt, CUR_Func_write_cvt, CUR_Func_move_cvt,
5721 CURRENT_Ratio, INS_SxVTL, COMPUTE_Funcs, COMPUTE_Round,
5722 COMPUTE_Point_Displacement, MOVE_Zp2_Point): Remove by replacing
5723 with expansion.
5724
5725 (Cur_Func_project, CUR_Func_dualproj, CUR_fast_project,
5726 CUR_fast_dualproj): Replace with macros `project', `dualproj',
5727 `fast_project', `fast_dualproj'.
5728
57292015-01-10 Werner Lemberg <wl@gnu.org>
5730
5731 [truetype] More macro expansions.
5732
Werner Lembergfae0c812015-01-10 20:23:10 +01005733 * src/truetype/ttinterp.c (EXEC_OP_, EXEC_OP): Remove by replacing
5734 with expansion.
5735
57362015-01-10 Werner Lemberg <wl@gnu.org>
5737
Werner Lemberg5a752f32015-01-10 20:08:35 +01005738 [truetype] Remove code for static TrueType interpreter.
5739
5740 This is a follow-up patch.
5741
5742 * src/truetype/ttinterp.c, src/truetype/ttinterp.h
5743 [TT_CONFIG_OPTION_STATIC_INTERPRETER,
5744 TT_CONFIG_OPTION_STATIC_RASTER]: Remove macros and related code.
5745
57462015-01-10 Werner Lemberg <wl@gnu.org>
5747
Werner Lemberg1b4d68c2015-01-10 19:56:28 +01005748 * src/truetype/ttinterp.c (CUR): Remove by replacing with expansion.
5749
5750 This starts a series of patches that simplifies the code of the
5751 bytecode interpreter.
5752
Werner Lembergf6aa0892013-05-10 07:58:47 +02005753
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00005754----------------------------------------------------------------------------
5755
Werner Lemberg9adeab62016-01-13 11:54:10 +01005756Copyright 2015-2016 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00005757David Turner, Robert Wilhelm, and Werner Lemberg.
5758
5759This file is part of the FreeType project, and may only be used, modified,
5760and distributed under the terms of the FreeType project license,
5761LICENSE.TXT. By continuing to use, modify, or distribute this file you
5762indicate that you have read the license and understand and accept it
5763fully.
5764
5765
5766Local Variables:
5767version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00005768coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00005769End: