blob: b8a99e2abc7290e03128d0aadc572f62c967dd1f [file] [log] [blame]
Werner Lembergf96094e2015-10-13 07:13:56 +020012015-10-13 Werner Lemberg <wl@gnu.org>
2
Werner Lembergbdb56bb2015-10-13 11:51:13 +02003 [ftfuzzer] Handle TTCs and MM/GX variations.
4
5 This patch also contains various other improvements.
6
7 * src/tools/ftfuzzer/ftfuzzer.cc: Add preprocessor guard to reject
8 pre-C++11 compilers.
9 (FT_Global): New class. Use it to provide a global constructor and
10 destructor for the `FT_Library' object.
11 (setIntermediateAxis): New function to select an (arbitrary)
12 instance.
13 (LLVMFuzzerTestOneInput): Loop over all faces and named instances.
14 Also call `FT_Set_Char_Size'.
15
162015-10-13 Werner Lemberg <wl@gnu.org>
17
Werner Lemberg43a96eb2015-10-13 11:18:55 +020018 [truetype] Refine some GX sanity tests.
19
20 Use the `gvar' table size instead of the remaining bytes in the
21 stream.
22
23 * src/truetype/ttgxvar.h (GX_BlendRec): New field `gvar_size'.
24
25 * src/truetype/ttgxvar.c (ft_var_load_gvar): Set `gvar_size'.
26 (ft_var_readpackedpoints, ft_var_readpackeddeltas: New argument
27 `size'.
28 (tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Updated.
29
302015-10-13 Werner Lemberg <wl@gnu.org>
31
Werner Lemberg052f6c52015-10-13 08:24:32 +020032 [truetype] Another GX sanity test.
33
34 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Check
35 `tupleCount'.
36 Add tracing message.
37
382015-10-13 Werner Lemberg <wl@gnu.org>
39
Werner Lemberg7ef0d862015-10-13 08:14:20 +020040 [truetype] Fix memory leak for broken GX fonts (#46188).
41
42 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix scope of
43 deallocation.
44
452015-10-13 Werner Lemberg <wl@gnu.org>
46
Werner Lembergf96094e2015-10-13 07:13:56 +020047 [truetype] Fix commit from 2015-10-10.
48
49 * src/truetype/ttgxvar.c (ft_var_load_gvar): Add missing error
50 handling body to condition.
51
Werner Lembergb9880aa2015-10-12 10:13:26 +0200522015-10-12 Werner Lemberg <wl@gnu.org>
53
54 [unix] Make MKDIR_P actually work.
55
56 * builds/unix/configure.raw: Fix underquoting of `INSTALL' and
57 `MKDIR_P'.
58
59 Problem reported by Dan Liddell <lddll@yahoo.com>.
60
Werner Lemberg4f7f6f62015-10-11 07:55:25 +0200612015-10-11 Werner Lemberg <wl@gnu.org>
62
63 [sfnt] Improve extraction of number of named instances.
64
65 * src/sfnt/sfobjs.c (sfnt_init_face)
66 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check number of instances against
67 `fvar' table size.
68
Alexei Podtelezhnikovc14ae9c2015-10-10 22:28:26 -0400692015-10-10 Alexei Podtelezhnikov <apodtele@gmail.com>
70
71 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix overflow
72 (#46149).
73
Werner Lembergd353f6e2015-10-10 06:54:46 +0200742015-10-10 Werner Lemberg <wl@gnu.org>
75
Werner Lemberg8de39a72015-10-10 13:34:11 +020076 [sfnt] Fix infinite loops with broken cmaps (#46167).
77
78 * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next): Take care
Werner Lemberga724dcf2015-10-11 05:50:07 +020079 of border conditions (i.e., if the loops exit naturally).
Werner Lemberg8de39a72015-10-10 13:34:11 +020080
812015-10-10 Werner Lemberg <wl@gnu.org>
82
Werner Lembergda346732015-10-10 10:21:27 +020083 [truetype] More sanity tests for GX handling.
84
85 These tests should mainly help avoid unnecessarily large memory
86 allocations in case of malformed fonts.
87
88 * src/truetype/ttgxvar.c (ft_var_readpackedpoints,
89 ft_var_readpackeddeltas): Check number of points against stream
90 size.
91 (ft_var_load_avar): Check `pairCount' against table length.
92 (ft_var_load_gvar): Check `globalCoordCount' and `glyphCount'
93 against table length.
94 (tt_face_vary_cvt): Check `tupleCount' and `offsetToData'.
95 Fix trace.
96 (TT_Vary_Apply_Glyph_Deltas): Fix trace.
97 Free `sharedpoints' to avoid memory leak.
98
992015-10-10 Werner Lemberg <wl@gnu.org>
100
Werner Lembergc220d8b2015-10-10 08:13:04 +0200101 [truetype] Better protection against malformed GX data (#46166).
102
103 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Correctly
104 handle empty `localpoints' array.
105
1062015-10-10 Werner Lemberg <wl@gnu.org>
107
Werner Lembergd353f6e2015-10-10 06:54:46 +0200108 * src/pcf/pcfread.c (pcf_read_TOC): Check stream size (#46162).
109
Werner Lembergc12956e2015-10-09 09:38:32 +02001102015-10-09 Werner Lemberg <wl@gnu.org>
111
112 * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use real stream size.
113
Werner Lemberg12112242015-10-08 08:55:15 +02001142015-10-08 Werner Lemberg <wl@gnu.org>
115
Werner Lembergd98053c2015-10-08 23:17:41 +0200116 [pcf] Protect against invalid number of TOC entries (#46159).
117
118 * src/pcf/pcfread.c (pcf_read_TOC): Check number of TOC entries
119 against size of data stream.
120
1212015-10-08 Werner Lemberg <wl@gnu.org>
122
Werner Lemberg06c2d332015-10-08 21:31:57 +0200123 [type42] Protect against invalid number of glyphs (#46159).
124
125 * src/type42/t42parse.c (t42_parse_charstrings): Check number of
126 `CharStrings' dictionary entries against size of data stream.
127
1282015-10-08 Werner Lemberg <wl@gnu.org>
129
Werner Lemberg983b00e2015-10-08 18:44:45 +0200130 [sfnt] Fix some signed overflows (#46149).
131
132 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
133 <TT_SBIT_TABLE_TYPE_SBIX>: Use `FT_MulDiv'.
134
1352015-10-08 Werner Lemberg <wl@gnu.org>
136
Werner Lemberg12112242015-10-08 08:55:15 +0200137 [type1] Protect against invalid number of subroutines (#46150).
138
139 * src/type1/t1load.c (parse_subrs): Check number of
140 `Subrs' dictionary entries against size of data stream.
141
Kostya Serebryanydde84f22015-10-07 22:18:22 +02001422015-10-07 Kostya Serebryany <kcc@google.com>
143
144 [ftfuzzer] Add support for LLVM's LibFuzzer.
145
146 * src/tools/ftfuzzer/ftfuzzer.cc, src/tools/runinput.cc: New files.
147
Alexei Podtelezhnikovc14ae9c2015-10-10 22:28:26 -04001482015-10-06 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov6eb61582015-10-06 22:39:54 -0400149
150 [smooth] Faster alternative line renderer.
151
152 This implementation renders the entire line segment at once without
153 subdividing it into scanlines. The main speed improvement comes from
154 reducing the number of divisions to just two per line segment, which
155 is a bare minimum to calculate cell coverage in a smooth rasterizer.
156 Notably, the progression from cell to cell does not itself require any
157 divisions at all. The speed improvement is more noticeable at larger
158 sizes.
159
160 * src/smooth/ftgrays.c (gray_render_line): New implementation.
161
Werner Lemberg066a4912015-10-06 07:55:32 +02001622015-10-06 Werner Lemberg <wl@gnu.org>
163
164 [cff] Return correct PS names from pure CFF (#46130).
165
166 * src/cff/cffdrivr.c (cff_get_ps_name): Use SFNT service only for
167 SFNT.
168
Werner Lemberg8cabd912015-10-04 08:18:01 +02001692015-10-04 Werner Lemberg <wl@gnu.org>
170
Werner Lemberg30fe5e72015-10-04 13:08:08 +0200171 [base] Replace left shifts with multiplication (#46118).
172
173 * src/base/ftglyph.c (ft_bitmap_glyph_bbox, FT_Get_Glyph): Do it.
174
1752015-10-04 Werner Lemberg <wl@gnu.org>
176
Werner Lemberg8cabd912015-10-04 08:18:01 +0200177 * Version 2.6.1 released.
178 =========================
179
180
181 Tag sources with `VER-2-6-1'.
182
183 * docs/VERSION.DLL: Update documentation and bump version number to
184 2.6.1.
185
186 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
187 builds/windows/vc2005/index.html,
188 builds/windows/vc2008/freetype.vcproj,
189 builds/windows/vc2008/index.html,
190 builds/windows/vc2010/freetype.vcxproj,
191 builds/windows/vc2010/index.html,
192 builds/windows/visualc/freetype.dsp,
193 builds/windows/visualc/freetype.vcproj,
194 builds/windows/visualc/index.html,
195 builds/windows/visualce/freetype.dsp,
196 builds/windows/visualce/freetype.vcproj,
197 builds/windows/visualce/index.html,
198 builds/wince/vc2005-ce/freetype.vcproj,
199 builds/wince/vc2005-ce/index.html,
200 builds/wince/vc2008-ce/freetype.vcproj,
201 builds/wince/vc2008-ce/index.html: s/2.6/2.6.1/, s/26/261/.
202
203 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
204
205 * builds/unix/configure.raw (version_info): Set to 18:1:12.
206 * CMakeLists.txt (VERSION_PATCH): Set to 1.
207
208 * src/autofit/afmodule.c [AF_DEBUG_AUTOFIT]: Ensure C linking for
209 dumping functions.
210
2112015-10-04 Werner Lemberg <wl@gnu.org>
Werner Lemberg53838ce2015-10-03 21:12:25 +0200212
213 [bzip2, gzip] Avoid access of unitialized memory (#46109).
214
Werner Lembergb260dc92015-10-04 07:39:22 +0200215 * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_input), src/gzip/ftgzip.c
216 (ft_gzip_file_fill_input): In case of an error, adjust the limit to
217 avoid copying uninitialized memory.
218
2192015-10-03 Werner Lemberg <wl@gnu.org>
220
221 [bzip2, gzip] Avoid access of unitialized memory (#46109).
222
Werner Lemberg53838ce2015-10-03 21:12:25 +0200223 * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_output), src/gzip/ftgzip.c
224 (ft_gzip_file_fill_output): In case of an error, adjust the limit to
225 avoid copying uninitialized memory.
226
Alexei Podtelezhnikove2dae8f2015-10-01 22:03:34 -04002272015-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
228
229 [smooth] Clean up worker.
230
231 * src/smooth/ftgrays.c (gray_TWorker): Remove never used fields.
232
Werner Lemberg5f8f44d2015-10-01 14:16:03 +02002332015-10-01 Werner Lemberg <wl@gnu.org>
234
Werner Lemberg90e437e2015-10-01 20:00:27 +0200235 [sfnt] Make `tt_cmap4_char_map_linear' more robust (#46078).
236
237 * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Take care of
238 border conditions (i.e., if the loop exits naturally).
239
2402015-10-01 Werner Lemberg <wl@gnu.org>
241
Werner Lembergfab67b82015-10-01 16:47:05 +0200242 * src/autofit/afranges.c (af_deva_nonbase_uniranges): Fix ranges.
243 They should be a subset of `af_deva_uniranges'.
244
2452015-10-01 Werner Lemberg <wl@gnu.org>
246
Werner Lemberg5f8f44d2015-10-01 14:16:03 +0200247 [sfnt] Make `tt_cmap4_char_map_linear' faster (#46078).
248
249 * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Use inner loop to
250 reject too large glyph indices.
251
Alexei Podtelezhnikov8bbcfb22015-09-30 23:08:53 -04002522015-09-30 Alexei Podtelezhnikov <apodtele@gmail.com>
253
254 [smooth] Clean up worker.
255
256 * src/smooth/ftgrays.c (gray_TWorker): Remove lightly used `last_ey'.
257 (gray_start_cell, gray_render_line): Update.
258
Werner Lemberg8651f372015-09-30 10:26:10 +02002592015-09-30 Werner Lemberg <wl@gnu.org>
260
Werner Lembergdbd04262015-09-30 17:52:42 +0200261 [autofit] Replace `no-base' with `non-base'.
262
263 * src/autofit/*: Do it.
264
2652015-09-30 Werner Lemberg <wl@gnu.org>
266
Werner Lemberg2ff83a52015-09-30 14:44:29 +0200267 [sfnt] Rewrite `tt_cmap4_char_map_linear' (#46078).
268
269 * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Add code to better
270 skip invalid segments.
271 If searching the next character, provide a more efficient logic to
272 speed up the code.
273
2742015-09-30 Werner Lemberg <wl@gnu.org>
275
Werner Lemberg8651f372015-09-30 10:26:10 +0200276 [truetype] Adjust number of glyphs for malformed `loca' tables.
277
278 * src/truetype/ttpload.c (tt_face_load_loca): Implement it.
279
Werner Lemberg483007f2015-09-29 11:22:15 +02002802015-09-29 Werner Lemberg <wl@gnu.org>
281
282 [pshinter] Avoid harmless overflow (#45984).
283
284 * src/pshinter/pshglob.c (psh_blues_set_zones): Fix it.
285
Werner Lemberga3046562015-09-28 09:45:56 +02002862015-09-28 Werner Lemberg <wl@gnu.org>
287
288 [autofit] Add support for Lao script.
289
290 Thanks to Danh Hong <danhhong@gmail.com> for guidance with blue zone
291 characters!
292
293 * src/autofit/afblue.dat: Add blue zone data for Lao.
294
295 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
296
297 * src/autofit/afscript.h: Add Lao standard characters.
298
299 * src/autofit/afranges.c: Add Lao data.
300
301 * src/autofit/afstyles.h: Add Lao data.
302
suzuki toshiya8a05d252015-09-28 01:40:21 +09003032015-09-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiyafb5268c2015-09-28 02:01:43 +0900304
305 [base] Fix a leak by broken sfnt-PS or resource fork (#46028).
306
307 open_face_from_buffer() frees passed buffer if valid font
308 is not found. But if copying to the buffer is failed,
309 the allocated buffer should be freed within the caller.
310
311 * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Free
312 the buffer `sfnt_ps' if an error caused before calling
313 open_face_from_buffer().
314 (Mac_Read_sfnt_Resource): Free the buffer `sfnt_data' if
315 an error caused before calling open_face_from_buffer();
316
3172015-09-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya8a05d252015-09-28 01:40:21 +0900318
319 [mac] Fix buffer size calculation for LWFN font.
320
321 * src/base/ftmac.c (read_lwfn): Cast post_size to FT_ULong
322 to prevent confused copy by too large chunk size.
323
Alexei Podtelezhnikov3dffe8e2015-09-27 11:30:17 -04003242015-09-26 Alexei Podtelezhnikov <apodtele@gmail.com>
325
326 * src/smooth/ftgrays.c (PIXEL_MASK): Remove unused macro.
327
Werner Lemberg41877532015-09-26 15:19:54 +02003282015-09-26 Werner Lemberg <wl@gnu.org>
329
Werner Lemberg19188a92015-09-26 16:57:17 +0200330 [autofit] Minor tracing improvement.
331
332 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Don't emit
333 blue zones header line if there are no blue zones.
334
3352015-09-26 Werner Lemberg <wl@gnu.org>
336
Werner Lemberg41877532015-09-26 15:19:54 +0200337 [bzip2, gzip, lzw] Harmonize function signatures with prototype.
338
339 Suggested by Hin-Tak Leung.
340
341 * src/bzip2/ftbzip2.c (ft_bzip2_stream_io), src/gzip/ftgzip.c
342 (ft_gzip_stream_io), src/lzw/ftlzw.c (ft_lzw_stream_io): Do it.
343
Hin-Tak Leung265ade82015-09-26 14:51:30 +02003442015-09-26 Hin-Tak Leung <htl10@users.sourceforge.net>
345
346 Add new FT_LOAD_COMPUTE_METRICS load flag.
347
348 * include/freetype/freetype.h (FT_LOAD_COMPUTE_METRICS): New macro.
349 * src/truetype/ttgload.c (compute_glyph_metrics): Usage.
350
Werner Lembergd57f2272015-09-26 08:44:26 +02003512015-09-26 Werner Lemberg <wl@gnu.org>
352
353 * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add cast.
354
Werner Lemberg2439c512015-09-25 16:54:28 +02003552015-09-25 Werner Lemberg <wl@gnu.org>
356
357 [type1] Protect against invalid number of glyphs (#46029).
358
359 * src/type1/t1load.c (parse_charstrings): Check number of
360 `CharStrings' dictionary entries against size of data stream.
361
Werner Lembergc409eb12015-09-24 12:39:38 +02003622015-09-23 Werner Lemberg <wl@gnu.org>
363
Werner Lemberg5339c752015-09-24 13:39:44 +0200364 [sfnt] Better checks for invalid cmaps (2/2) (#46019).
365
366 While the current code in `FT_Get_Next_Char' correctly rejects
367 out-of-bounds glyph indices, it can be extremely slow for malformed
368 cmaps that use 32bit values. This commit tries to improve that.
369
370 * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next,
371 tt_cmap12_char_map_binary, tt_cmap13_next,
372 tt_cmap13_char_map_binary): Reject glyph indices larger than or
373 equal to the number of glyphs.
374
3752015-09-23 Werner Lemberg <wl@gnu.org>
376
Werner Lembergc409eb12015-09-24 12:39:38 +0200377 [base, sfnt] Better checks for invalid cmaps (1/2).
378
379 * src/base/ftobjs.c (FT_Get_Char_Index): Don't return out-of-bounds
380 glyph indices.
381 (FT_Get_First_Char): Updated.
382
383 * src/sfnt/ttcmap.c (tt_cmap6_char_next): Don't return character
384 codes greater than 0xFFFF.
385
386 (tt_cmap8_char_index): Avoid integer overflow in computation of
387 glyph index.
388 (tt_cmap8_char_next): Avoid integer overflows in computation of
389 both next character code and glyph index.
390
391 (tt_cmap10_char_index): Fix unsigned integer logic.
392 (tt_cmap10_char_next): Avoid integer overflow in computation of
393 next character code.
394
395 (tt_cmap12_next): Avoid integer overflows in computation of both
396 next character code and glyph index.
397 (tt_cmap12_char_map_binary): Ditto.
398 (tt_cmap12_char_next): Simplify.
399
400 (tt_cmap13_char_map_binary): Avoid integer overflow in computation
401 of next character code.
402 (tt_cmap13_char_next): Simplify.
403
suzuki toshiyae982f5b2015-09-21 23:07:22 +09004042015-09-21 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
405
Werner Lembergd7f456e2015-09-26 08:37:14 +0200406 [base] Check too long POST and sfnt resource (#45919).
suzuki toshiyae982f5b2015-09-21 23:07:22 +0900407
Werner Lembergd7f456e2015-09-26 08:37:14 +0200408 * src/base/ftbase.h (FT_MAC_RFORK_MAX_LEN): Maximum length of the
409 resource fork for Mac OS. Resource forks larger than 16 MB can be
410 written but can't be handled correctly, at least in Carbon routine.
411 See https://support.microsoft.com/en-us/kb/130437.
suzuki toshiyae982f5b2015-09-21 23:07:22 +0900412
Werner Lembergd7f456e2015-09-26 08:37:14 +0200413 * src/base/ftobjs.c (Mac_Read_POST_Resource): No need to use `0x'
414 prefix for `%p' formatter.
suzuki toshiyae982f5b2015-09-21 23:07:22 +0900415
Werner Lembergd7f456e2015-09-26 08:37:14 +0200416 * src/base/ftbase.c (Mac_Read_POST_Resource): Check the fragment and
417 total size of the concatenated POST resource before buffer
418 allocation.
419 (Mac_Read_sfnt_Resource): Check the declared size of sfnt resource
suzuki toshiyae982f5b2015-09-21 23:07:22 +0900420 before buffer allocation.
suzuki toshiyae982f5b2015-09-21 23:07:22 +0900421
Werner Lembergd7f456e2015-09-26 08:37:14 +0200422 * src/base/ftmac.c (read_lwfn, FT_New_Face_From_SFNT): Check the
423 total resource size before buffer allocation.
suzuki toshiyae982f5b2015-09-21 23:07:22 +0900424
Werner Lembergcb7a5122015-09-19 07:58:03 +02004252015-09-19 Werner Lemberg <wl@gnu.org>
426
Werner Lemberg730b6d72015-09-19 12:41:12 +0200427 [sfnt] Improve handling of invalid SFNT table entries (#45987).
428
429 This patch fixes weaknesses in function `tt_face_load_font_dir'.
430
431 - It incorrectly assumed that valid tables are always at the
432 beginning. As a consequence, some valid tables after invalid
433 entries (which are ignored) were never seen.
434
435 - Duplicate table entries (this is, having the same tag) were not
436 rejected.
437
438 - The number of valid tables was sometimes too large, leading to
439 access of invalid tables.
440
441 * src/sfnt/ttload.c (check_table_dir): Add argument to return number
442 of valid tables.
443 Add another tracing message.
444 (tt_face_load_font_dir): Only allocate table array for valid
445 entries as returned by `check_table_dir'.
446 Reject duplicate tables and adjust number of valid tables
447 accordingly.
448
4492015-09-19 Werner Lemberg <wl@gnu.org>
450
Werner Lembergcb7a5122015-09-19 07:58:03 +0200451 [pcf] Improve `FT_ABS' fix from 2015-09-17 (#45999).
452
453 * src/pcf/pcfread.c (pcf_load_font): Do first the cast to FT_Short,
454 then take the absolute value.
455 Also apply FT_ABS to `height'.
456
Werner Lemberg9db9add2015-09-17 13:42:59 +02004572015-09-17 Werner Lemberg <wl@gnu.org>
458
Werner Lembergf28c95c2015-09-17 19:30:26 +0200459 [type42] Fix memory leak (#45989).
460
461 * src/type42/t42parse.c (t42_parse_charstrings): Allow only a single
462 `CharStrings' array.
463
4642015-09-17 Werner Lemberg <wl@gnu.org>
465
Werner Lemberg4942c2b2015-09-17 17:56:53 +0200466 [psaux] Fix memory leak (#45986).
467
468 * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
469 Free `temp' in case of error.
470
4712015-09-17 Werner Lemberg <wl@gnu.org>
472
Werner Lemberg7d364b72015-09-17 16:31:58 +0200473 [psaux] Improve tracing message.
474
475 * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
476 Handle plural correctly.
477
4782015-09-17 Werner Lemberg <wl@gnu.org>
479
Werner Lembergc838c4f2015-09-17 16:22:40 +0200480 [pcf] Fix integer overflows (#45985).
481
482 * src/pcf/pcfread.c (pcf_load_font): Use FT_MulDiv.
483
4842015-09-17 Werner Lemberg <wl@gnu.org>
485
Werner Lemberg9db9add2015-09-17 13:42:59 +0200486 [pcf] Use FT_ABS for some property values (#45893).
487
488 * src/pcf/pcfread.c (pcf_load_font): Take absolute values for
489 AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and
490 RESOLUTION_Y. In tracing mode, add warnings.
491
Werner Lembergbd0438a2015-09-16 18:05:43 +02004922015-09-16 Werner Lemberg <wl@gnu.org>
493
494 Minor fixes for some clang warnings.
495
496 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Cast, possible missing
497 initialization.
498
499 * src/truetype/ttgload.c (TT_Process_Composite_Component): Cast.
500
Werner Lemberg581c7e22015-09-15 06:49:06 +02005012015-09-15 Werner Lemberg <wl@gnu.org>
502
Werner Lemberg19cb1122015-09-15 08:52:36 +0200503 [type1, type42] Fix memory leaks (#45966).
504
505 * src/type1/t1load.c (parse_blend_axis_types): Handle multiple axis
506 names.
507 (parse_blend_design_map): Allow only a single design map.
508 (parse_encoding): Handle multiple encoding vectors.
509
510 * src/type42/t42parse.c (t42_parse_encoding): Handle multiple
511 encoding vectors.
512
5132015-09-15 Werner Lemberg <wl@gnu.org>
514
Werner Lemberg7f0f4012015-09-15 07:23:53 +0200515 [truetype] Fix integer type (#45965).
516
517 * src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Implement it.
518
5192015-09-15 Werner Lemberg <wl@gnu.org>
520
Werner Lemberg577daf12015-09-15 07:10:16 +0200521 * src/pcf/pcfread.c (pcf_load_font): Fix integer overflow (#45964).
522
5232015-09-15 Werner Lemberg <wl@gnu.org>
524
Werner Lemberg581c7e22015-09-15 06:49:06 +0200525 [type1, type42] Check encoding array size (#45961).
526
527 * src/type1/t1load.c (parse_encoding), src/type42/t42parse.c
528 (t42_parse_encoding): Do it.
529
Alexei Podtelezhnikov3ea0d2c2015-09-13 23:19:34 -04005302015-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
531
532 * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Improve.
533
Werner Lemberg7962a152015-09-14 00:38:26 +02005342015-09-14 Werner Lemberg <wl@gnu.org>
535
536 [type1] Fix another potential buffer overflow (#45955).
537
538 * src/type1/t1parse (T1_Get_Private_Dict): Assure that check for
539 `eexec' doesn't exceed `limit'.
540
Werner Lemberge40e8b32015-09-13 08:05:50 +02005412015-09-13 Werner Lemberg <wl@gnu.org>
542
Werner Lembergff7d6402015-09-13 23:53:16 +0200543 Replace `mkinstalldirs' with AC_PROG_MKDIR_P.
544
545 * builds/unix/mkinstalldirs: Removed, no longer needed.
546
547 * builds/unix/configure.raw: Call `AC_PROG_MKDIR_P'.
548 Update pwd call for `$INSTALL'.
549
550 * builds/unix/unix-def.in (MKINSTALLDIRS): Use `@MKDIR_P@'.
551
552 * autogen.sh: Updated.
553
5542015-09-13 Werner Lemberg <wl@gnu.org>
555
Werner Lemberg3df92aa2015-09-13 09:21:52 +0200556 [winfonts] Check alignment shift count for resource data (#45938).
557
558 * src/winfonts/winfnt.c (fnt_face_get_dll_font): Implement it.
559
5602015-09-13 Werner Lemberg <wl@gnu.org>
561
Werner Lemberge3058612015-09-13 08:41:43 +0200562 [type1] Fix potential buffer overflow (#45923).
563
564 * src/type1/t1parse.c (T1_Get_Private_Dict): Assure `cur' doesn't
565 point to end of file buffer.
566
5672015-09-13 Werner Lemberg <wl@gnu.org>
568
Werner Lemberge40e8b32015-09-13 08:05:50 +0200569 [gzip] Fix access of small compressed files (#45937).
570
571 * src/gzip/ftgzip.c (ft_gzip_stream_close): Avoid memory leak.
572
573 (ft_gzip_get_uncompressed_file): Correct byte order while reading
574 unsigned long value. Without this change, the whole optimization of
575 accessing small files in `FT_Stream_OpenGzip' is never executed! As
576 a consequence, access to PCF files in general (which are normally
577 small files) should be much improved now as originally intended.
578
Werner Lemberg23423bc2015-09-11 08:28:27 +02005792015-09-11 Werner Lemberg <wl@gnu.org>
580
Werner Lembergdb5a4a92015-09-12 08:32:55 +0200581 [psaux] Fix potential buffer overflow (#45922).
582
583 * src/psaux/psobjs.c (ps_parser_skip_PS_token): If a token is
584 enclosed in balanced expressions, ensure that the cursor position
585 doesn't get larger than the current limit.
586
5872015-09-11 Werner Lemberg <wl@gnu.org>
588
Werner Lemberg19b82cf2015-09-11 20:25:32 +0200589 [base] Avoid crash while tracing `load_mac_face'.
590
591 Reported in Savannah bug #45919.
592
593 * src/base/ftobjs.c (load_mac_face): Honour FT_OPEN_MEMORY while
594 tracing.
595
5962015-09-11 Werner Lemberg <wl@gnu.org>
597
Werner Lemberg23423bc2015-09-11 08:28:27 +0200598 [type42] Fix endless loop (#45920).
599
600 * src/type42/t42parse.c (t42_parse_encoding): Synchronize with
601 type1's `parse_encoding'.
602
Werner Lemberge5a27a72015-09-10 07:44:11 +02006032015-09-10 Werner Lemberg <wl@gnu.org>
604
605 [docmaker] Allow `-' in bold and italic markup.
606
607 * src/tools/docmaker/sources.py (re_italic, re_bold): Adjust
608 accordingly.
609
Alexei Podtelezhnikov09948e42015-09-09 21:30:15 -04006102015-09-09 Alexei Podtelezhnikov <apodtele@gmail.com>
611
612 * src/base/ftcalc.c (FT_RoundFix): Improve.
613
Wojciech Mamrak822acb02015-09-09 07:59:10 +02006142015-09-09 Wojciech Mamrak <wmamrak@gmail.com>
615
616 * src/base/ftcalc.c (FT_CeilFix, FT_FloorFix): Normalize.
617
618 This commit makes the functions behave as expected, this is,
619 rounding towards plus or minus infinity.
620
Alexei Podtelezhnikovb002f682015-09-07 13:47:36 -04006212015-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
622
623 * src/smooth/ftgrays.c (gray_render_line): Simplify clipping.
624
Alexei Podtelezhnikov5a6dc872015-09-04 23:14:46 -04006252015-09-04 Alexei Podtelezhnikov <apodtele@gmail.com>
626
627 [raster,smooth] Microoptimizations.
628
629 * src/raster/ftraster.c (Insert_Y_Turn, Finalize_Profile_Table,
630 Beziier_Up, ): Use do-while loops.
631
632 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line,
633 gray_convert_glyph): Ditto.
634
Werner Lemberg696b7122015-09-04 10:10:59 +02006352015-09-04 Werner Lemberg <wl@gnu.org>
636
Werner Lembergd3cba0e2015-09-04 10:28:53 +0200637 [autofit] Redesign code ranges (2/2).
638
639 This commit adds two fallback scripts (`latb', `latp') and
640 implements support for the no-base character ranges introduced in
641 the previous commit.
642
643 * src/autofit/aftypes.h (AF_ScriptClassRec): Add
644 `script_uni_nobase_ranges' field.
645 (AF_DEFINE_SCRIPT_CLASS): Updated.
646
647 * src/autofit/afscript.h, src/autofit/afstyles.h: Add `latb' and
648 `latp' fallback scripts.
649
650 * src/autofit/afblue.dat: Add blue zones for Latin subscript and
651 superscript fallback scripts.
652
653 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
654
655 * src/autofit/afglobal.h (AF_NOBASE): New style flag for no-base
656 characters.
657 (AF_STYLE_MASK): Updated.
658
659 * src/autofit/afglobal.c (SCRIPT): Updated.
660 (af_face_globals_compute_style_coverage): Handle new style flag.
661
662 * src/autofit/aflatin.c (af_latin_hints_apply): Handle new style
663 flag.
664
665 * src/autofit/afranges.h (SCRIPT): Use it to export no-base ranges.
666
6672015-09-04 Werner Lemberg <wl@gnu.org>
668
Werner Lemberg696b7122015-09-04 10:10:59 +0200669 [autofit] Redesign code ranges (1/2).
670
671 This patch introduces auxiliary code ranges that identify no-base
672 characters; they refer to glyphs of a script that should be hinted
673 without alignments to blue zones (mostly diacritics).
674
675 It also splits off ranges for fallback scripts that handle subscript
676 and superscript characters not covered by OpenType features. For
677 example, this greatly helps improve the hinting of various phonetic
678 alphabets, which contain a large amount characters that look like
679 superscript glyphs.
680
681 Finally, code ranges are updated to Unicode 8.0, and enclosed
682 characters are removed in general since they normally look better if
683 they stay unhinted.
684
685 * src/autofit/afranges.c (af_latn_uniranges): Updated to Unicode
686 8.0.
687 Split off superscript-like and subscript-like glyphs into...
688
689 (af_latb_uniranges, af_latp_uniranges): ... these two new arrays.
690
691 (af_xxxx_nobase_uniranges): New arrays that hold no-base characters
692 of the corresponding character ranges.
693
Werner Lemberg8cbbcf62015-09-03 06:47:30 +02006942015-09-03 Werner Lemberg <wl@gnu.org>
695
696 [autofit] Pass glyph index to hinting function.
697
698 No functionality change yet.
699
700 * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Pass
701 glyph index.
702
703 * src/autofit/afcjk.c, src/autofit/afcjk.h (af_cjk_hints_apply),
704 src/autofit/afdummy.c (af_dummy_hints_apply), src/autofit/afindic.c
705 (af_indic_hints_apply), src/autofit/aflatin.c
706 (af_latin_hints_apply), src/autofit/aflatin2.c
707 (af_latin2_hints_apply), src/autofit/afloader.c (af_loader_load_g):
708 Updated.
709
Werner Lemberg87c81f02015-08-30 10:35:21 +02007102015-08-30 Werner Lemberg <wl@gnu.org>
711
Werner Lemberg40103a32015-08-31 08:51:52 +0200712 [autofit] Code clean-up.
713
714 * src/autofit/afglobal.h (AF_STYLE_MASK): New macro.
715 (AF_STYLE_UNASSIGNED): Use AF_STYLE_MASK for definition.
716
717 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
718 Updated.
719
7202015-08-30 Werner Lemberg <wl@gnu.org>
721
Werner Lemberg87c81f02015-08-30 10:35:21 +0200722 [autofit] Make glyph style array use 16bit values.
723
724 * include/freetype/ftautoh.h (FT_Prop_GlyphToScriptMap): Use
725 `FT_UShort' for `map' field.
726
727 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage,
728 af_face_globals_new), src/autofit/hbshim.c, src/autofit/hbshim.h
729 (af_get_coverage): Use FT_UShort for `glyph_styles' array.
730
731 * src/autofit/afglobal.h (AF_STYLE_UNASSIGNED, AF_DIGIT): Extend to
732 16 bits.
733 (AF_FaceGlobalsRec): Use `FT_UShort' for `glyph_styles' field.
734
Werner Lemberg633d8ed2015-08-26 06:18:47 +02007352015-08-26 Werner Lemberg <wl@gnu.org>
736
737 * builds/unix/configure.raw: Need harfbuzz >= 0.9.21 (#45828).
738
Werner Lemberg78b01402015-08-25 07:23:01 +02007392015-08-25 Werner Lemberg <wl@gnu.org>
740
741 [base] Improve kerning tracing and documentation.
742
743 * src/base/ftobjs.c (FT_Get_Kerning): Emit tracing message if
744 scaled-down kerning values differ.
745
Werner Lemberg91d59162015-08-18 06:04:36 +02007462015-08-18 Werner Lemberg <wl@gnu.org>
747
748 [raster] Remove last remnants of `raster5' driver.
749
750 * src/raster/ftrend1.h (ft_raster5_renderer_class): Removed.
751
752 * src/raster/rastpic.c, src/raster/rastpic.h
753 (ft_raster5_renderer_class_pic_init,
754 ft_raster5_renderer_class_pic_free): Removed.
755
Alexei Podtelezhnikova0172d12015-08-17 22:58:59 -04007562015-08-17 Alexei Podtelezhnikov <apodtele@gmail.com>
757
758 [base] Improve emboldener (#45596).
759
760 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Correct displacement
761 of zero-lenght segments.
762
Alexei Podtelezhnikov00d89952015-08-16 22:57:34 -04007632015-08-16 Alexei Podtelezhnikov <apodtele@gmail.com>
764
Alexei Podtelezhnikov815c3242015-08-17 21:48:46 -0400765 [base] Reoptimize arithmetic.
Alexei Podtelezhnikov00d89952015-08-16 22:57:34 -0400766
767 * src/base/ftcalc.c (FT_MulDiv, FT_MulFix) [!FT_LONG64]: Remove
768 special cases that slow down the general use.
769
pazerf0ed30e2015-08-15 06:53:09 +02007702015-08-15 pazer <ibemad@gmail.com>
771
772 Fix C++ compilation (#45762).
773
774 * src/base/ftstroke.c (ft_outline_glyph_class): Use
775 FT_CALLBACK_TABLE.
776
Alexei Podtelezhnikovae258aa2015-08-14 23:23:18 -04007772015-08-14 Alexei Podtelezhnikov <apodtele@gmail.com>
778
779 [truetype] Clean up.
780
781 * src/truetype/ttgload.c (TT_Process_Composite_Component): Use
782 `FT_Outline_Transform' and `FT_Outline_Translate'.
783 (translate_array): Dropped.
784
Werner Lembergd0d7ee02015-08-14 14:30:58 +02007852015-08-14 Andreas Enge <andreas.enge@inria.fr>
786
787 * builds/unix/detect.mk (CONFIG_SHELL): Don't handle it (#44261).
788
Werner Lemberg14d6b5d2015-08-13 15:22:17 +02007892015-08-13 Werner Lemberg <wl@gnu.org>
790
791 [truetype] Introduce named instance access to GX fonts.
792
793 For functions querying a face, bits 16-30 of the face index can hold
794 the named instance index if we have a GX font. The indices start
795 with value 1; value 0 indicates font access without GX variation
796 data.
797
798 * include/freetype/freetype.h (FT_FaceRec): Update documentation.
799 * include/freetype/internal/sfnt.h: Ditto.
800
801 * src/sfnt/sfobjs.c (sfnt_init_face)
802 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Get number of named instances and
803 do argument checks.
804 (sfnt_load_face): Updated.
805
806 * src/truetype/ttobjs.c (tt_face_init)
807 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Use named instance, overwriting
808 the style name.
809
810 * src/base/ftobjs.c (open_face_from_buffer,
811 open_face_PS_from_sfnt_stream): Updated.
812 * src/bdf/bdfdrivr.c (BDF_Face_Init): Updated.
813 * src/cff/cffload.c (cff_font_load): Updated.
814
815 * src/cff/cffobjs.c (cff_face_init): Make function exit early for
816 pure CFF fonts if `font_index < 0'.
817 Updated.
818
819 * src/cid/cidobjs.c (cid_face_init): Updated.
820 * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
821 * src/pfr/pfrobjs.c (pfr_face_init): Updated.
822 * src/type1/t1objs.c (T1_Face_Init): Updated.
823 * src/type42/t42objs.c (T42_Face_Init): Updated.
824 * src/winfonts/winfnt.c (fnt_face_get_dll_font, FNT_Face_Init):
825 Updated.
826
827 * docs/CHANGES: Updated.
828
Alexei Podtelezhnikov4a466862015-08-12 23:45:40 -04008292015-08-12 Alexei Podtelezhnikov <apodtele@gmail.com>
830
831 [type1,cff,cid] Streamline font matrix application.
832
833 * src/type1/t1gload.c (T1_Load_Glyph): Directly modify advances only
834 if font matrix is not trivial.
835 * src/cff/cffgload.c (cff_slot_load): Ditto.
836 * sff/cid/cidgload.c (cid_slot_load_glyph): Ditto for advances and the
837 entire outline.
838
Werner Lemberg7ebe6ac2015-08-11 06:47:25 +02008392015-08-11 Werner Lemberg <wl@gnu.org>
840
841 [builds/unix] Minor.
842
843 * builds/unix/configure.raw:
844 s/lib{priv,staticconf}/libs{priv,staticconf}/ for orthogonality with
845 similarly named uppercase variables.
846
Alexei Podtelezhnikova37da212015-08-10 23:05:02 -04008472015-08-10 Alexei Podtelezhnikov <apodtele@gmail.com>
848
849 [type1,cid,type42] Minor improvements.
850
851 * src/type1/t1load.c (t1_parse_font_matrix): Scale units per EM only
852 when necessary. Refresh comments.
853 * src/cid/cidload.c (cid_parse_font_matrix): Ditto.
854 * src/type42/t42parse.c (t42_parse_font_matrix): Refresh comments.
855
Werner Lemberge5f44692015-08-08 07:45:03 +02008562015-08-08 Werner Lemberg <wl@gnu.org>
857
Werner Lembergbd75a512015-08-08 08:39:45 +0200858 [type42] Fix glyph access.
859
860 This is a severe bug: We've missed one level of indirection, as
861 described in the Type 42 specification. As a result, ftview
862 sometimes showed incorrect glyphs for given glyph names, and even
863 displayed `error 0x0006' (invalid argument!) in case the number of
864 glyph indices differed between the Type 42 font and the embedded
865 TTF.
866
867 Apparently, noone ever noticed it; this shows how much Type 42 fonts
868 are in use...
869
870 * src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index
871 to embedded TTF's glyph index.
872
8732015-08-08 Werner Lemberg <wl@gnu.org>
874
Werner Lemberge5f44692015-08-08 07:45:03 +0200875 [type42] Minor clean-up.
876
877 * src/type42/t42parse.c (t42_parse_font_matrix): Remove unused
878 variable.
879
Alexei Podtelezhnikovfd705122015-08-06 21:49:08 -04008802015-08-06 Alexei Podtelezhnikov <apodtele@gmail.com>
881
882 [type42] Parse FontMatrix according to specifications.
883
884 * src/type42/t42parse.c (t42_parse_font_matrix): Type 42 FontMatrix
885 does not need scaling by 1000. Units_per_EM are taken from the
886 embedded TrueType.
887
Werner Lembergff406e22015-08-06 07:34:50 +02008882015-08-06 Werner Lemberg <wl@gnu.org>
889
890 [autofit] Improve Arabic hinting.
891
892 Problem reported by Titus Nemeth <tn@tntypography.eu> (by using
893 ttfautohint).
894
895 * src/autofit/afblue.dat: Add neutral blue zone for the tatweel
896 character.
897
898 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
899
Alexei Podtelezhnikov98e8e992015-08-06 00:06:14 -04009002015-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
901
902 [truetype] Clean up types.
903
904 * src/truetype/ttobjs.c (TT_Size): Move declaration from here.
905 * include/freetype/internal/tttypes.h (TT_Size): ... to here.
906 (TT_LoaderRec): Switch to appropriate types for `face' and `size'.
907 * src/truetype/ttgload.c: Remove corresponding type casts.
908 * src/truetype/ttsubpix.c: Ditto.
909
Werner Lemberg15e2a4f2015-08-05 21:53:50 +02009102015-08-05 Werner Lemberg <wl@gnu.org>
911
912 [autofit] Improve recognition of flat vs. rounded segments.
913
914 Lower the flatness threshold from upem/8 to upem/14, making the
915 auto-hinter accept shorter elements.
916
917 Synchronize flat/round stem selection algorithm with blue zone code.
918
919 * src/autofit/aflatin.c (FLAT_THRESHOLD): New macro.
920 (af_latin_metrics_init_blues): Use it.
921 (af_latin_hints_compute_segments): Collect information on maximum
922 and minimum coordinates of `on' points; use this to add a constraint
923 for the flat/round decision similar to
924 `af_latin_metrics_init_blues'.
925
Werner Lembergeb22ef22015-08-04 06:50:04 +02009262015-08-04 Werner Lemberg <wl@gnu.org>
927
928 Another left-shift bug (#45681).
929
930 * src/base/ftobjs.c (IsMacBinary): Only accept positive values for
931 `dlen'.
932
Alexei Podtelezhnikov7e6c3212015-08-03 23:26:13 -04009332015-08-03 Alexei Podtelezhnikov <apodtele@gmail.com>
934
935 [base] Fix `ft_corner_orientation'.
936
937 Remove casting from `FT_Long' to `FT_Int' that might change the sign
938 of the return value and make it faster too.
939
940 * src/base/ftcalc.c (ft_corner_orientation): On 32-bit systems, stay
941 with 32-bit arithmetic when safe. Use plain math on 64-bit systems.
942 * src/pshinter/pshalgo.c: Remove old unused code.
943
Werner Lembergca6a5cf2015-08-03 08:51:18 +02009442015-08-03 Werner Lemberg <wl@gnu.org>
945
Werner Lemberg8dfc7602015-08-03 12:23:30 +0200946 * src/truetype/ttgload.c (load_truetype_glyph)
947 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix crash for composite glyphs
948 having a depth greater than 1.
949
9502015-08-03 Werner Lemberg <wl@gnu.org>
951
Werner Lembergca6a5cf2015-08-03 08:51:18 +0200952 Fix typo in clang bug from 2015-07-31 (#45678).
953
954 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Fix inequality.
955
Werner Lemberg70e9d812015-08-02 09:42:12 +02009562015-08-02 Werner Lemberg <wl@gnu.org>
957
Werner Lemberga82c45d2015-08-02 18:35:49 +0200958 * CMakeLists.txt: Improve shared library support.
959
960 Based on a patch from John Cary <cary@txcorp.com>.
961
9622015-08-02 Werner Lemberg <wl@gnu.org>
963
Werner Lemberg682c2712015-08-02 15:46:26 +0200964 * builds/unix/freetype-config.in (enable_shared): Remove. Unused.
965
9662015-08-02 Werner Lemberg <wl@gnu.org>
967
Werner Lemberg70e9d812015-08-02 09:42:12 +0200968 Fix more invalid left-shifts.
969
970 * src/pfr/pfrgload.c (pfr_glyph_load_compound): Use multiplication,
971 not left-shift.
972
973 * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
974 tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Use multiplication,
975 not left-shift.
976
Werner Lemberg5d1b8ab2015-07-31 21:49:07 +02009772015-07-31 Werner Lemberg <wl@gnu.org>
978
Werner Lemberg6343ba22015-08-01 07:53:48 +0200979 Fix some bugs found by clang's `-fsanitize=undefined' (#45661).
980
981 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Only accept
982 positive values from header.
983 Check overflow.
984
985 * src/base/ftoutln.c (SCALED): Correctly handle left-shift of
986 negative values.
987
988 * src/bdf/bdf.h (_bdf_glyph_modified, _bdf_set_glyph_modified,
989 _bdf_clear_glyph_modified): Use unsigned long constant.
990
991 * src/bdf/bdfdrivr.c (BDF_Size_Select, BDF_Glyph_Load): Don't
992 left-shift values that can be negative.
993
994 * src/pcf/pcfdrivr.c (PCF_Size_Select, PCF_Glyph_Load): Don't
995 left-shift values that can be negative.
996
997 * src/raster/ftraster.c (SCALED): Correctly handle left-shift of
998 negative values.
999
1000 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Don't left-shift
1001 values that can be negative.
1002
1003 * src/truetype/ttgload.c (TT_Load_Composite_Glyph,
1004 compute_glyph_metrics, load_sbit_image): Don't left-shift values
1005 that can be negative.
1006
10072015-07-31 Werner Lemberg <wl@gnu.org>
1008
Werner Lemberg5d1b8ab2015-07-31 21:49:07 +02001009 Define FT_LONG_MAX.
1010
1011 * include/freetype/config/ftstdlib.h (FT_LONG_MAX): New macro.
1012 * src/cff/cf2arrst.c (cf2_arrstack_setNumElements): Use it.
1013
10142015-07-28 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov2b07a5a2015-07-28 23:14:30 -04001015
1016 * src/base/ftcalc.c (FT_Vector_NormLen): Clarify.
1017
Werner Lemberg5d1b8ab2015-07-31 21:49:07 +020010182015-07-27 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikove8b186e2015-07-27 23:22:34 -04001019
1020 * src/base/ftcalc.c (FT_Vector_NormLen): Explicate type conversions.
1021
Matthias Clasenb650dfb2015-07-26 21:08:34 +020010222015-07-26 Matthias Clasen <matthias.clasen@gmail.com>
1023
1024 [cff] Don't use `hmtx' table for LSB (#45520).
1025
1026 * src/cff/cffgload.c (cff_slot_load): Use `htmx' table for advance
1027 width only. Bug introduced 2015-04-10.
1028
Werner Lembergf9be5672015-07-09 15:10:31 +020010292015-07-09 Werner Lemberg <wl@gnu.org>
1030
1031 Better support of user-supplied C++ namespaces.
1032
1033 See
1034
1035 http://lists.nongnu.org/archive/html/freetype-devel/2015-07/msg00008.html
1036
1037 for a rationale.
1038
1039 * src/autofit/afpic.h, src/base/basepic.h, src/cff/cffpic.h,
1040 src/pshinter/pshpic.h, src/psnames/pspic.h, src/raster/rastpic.h,
1041 src/sfnt/sfntpic.h, src/smooth/ftspic.h, src/truetype/ttpic.h
1042 (FT_BEGIN_HEADER, FT_END_HEADER): Move macro calls to not enclose
1043 header files that contain FT_{BEGIN,END}_HEADER macros by
1044 themselves.
1045
1046 * src/autofit/aftypes.h [FT_DEBUG_AUTOFIT]: Include
1047 FT_CONFIG_STANDARD_LIBRARY_H earlier.
1048
1049 * src/truetype/ttpic.h: Include FT_INTERNL_PIC_H.
1050
Werner Lemberg1cdac102015-07-07 14:04:44 +020010512015-07-07 Werner Lemberg <wl@gnu.org>
1052
1053 [sfnt] Make `tt_face_get_name' member of the SFNT interface.
1054
1055 * include/freetype/internal/sfnt.h (TT_Get_Name_Func): New
1056 prototype.
1057 (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): New member `get_name'.
1058
1059 * src/sfnt/sfdriver.c (sfnt_interface): Updated.
1060
1061 * src/sfnt/sfobjs.c (tt_face_get_name): Tag it with `LOCAL_DEF'.
1062 * src/sfnt/sfobjs.h: Add prototype for it.
1063
Werner Lembergeb1bba92015-06-30 09:46:39 +020010642015-06-30 Werner Lemberg <wl@gnu.org>
1065
1066 Fix some clang compiler warnings.
1067
1068 * src/base/ftoutln.c (FT_Outline_EmboldenXY), src/cff/cf2intrp.c
1069 (cf2_interpT2CharString), src/truetype/ttgload.c
1070 (load_truetype_glyph), src/truetype/ttgxvar.c (tt_handle_deltas),
1071 src/truetype/ttinterp.c (Ins_INSTCTRL): Fix signedness issues.
1072
Alexei Podtelezhnikov884e4e62015-06-29 22:32:05 -040010732015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com>
1074
Alexei Podtelezhnikov5aaabb42015-06-29 22:46:54 -04001075 [truetype] Speed up bytecode interpreter.
1076
1077 * src/truetype/ttinterp.c (Normalize): Use `FT_Vector_NormLen'.
1078
10792015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com>
1080
Alexei Podtelezhnikov9ef02bd2015-06-29 22:39:10 -04001081 [base] Speed up emboldening.
1082
Werner Lembergeb1bba92015-06-30 09:46:39 +02001083 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use
1084 `FT_Vector_NormLen'.
Alexei Podtelezhnikov9ef02bd2015-06-29 22:39:10 -04001085
10862015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com>
1087
Alexei Podtelezhnikov884e4e62015-06-29 22:32:05 -04001088 [base] Implement fast vector normalization.
1089
1090 The function uses Newton's iterations instead of dividing vector
1091 components by its length, which needs a square root. This is,
1092 literally, a bit less accurate but a lot faster.
1093
1094 * src/base/ftcalc.c (FT_Vector_NormLen): New function.
1095
Werner Lemberg22479ca2015-06-28 10:26:33 +020010962015-06-28 Werner Lemberg <wl@gnu.org>
1097
Werner Lemberg7cdc77f2015-06-28 11:40:02 +02001098 * CMakeLists.txt: Always create `ftconfig.h'.
1099
1100 For non-UNIX builds, the file stays unmodified. However, it's
1101 better to have the main configuration files at the same place
1102 regardless of the OS.
1103
11042015-06-28 Werner Lemberg <wl@gnu.org>
1105
Werner Lemberg2c89e2c2015-06-28 11:06:47 +02001106 * CMakeLists.txt: Improve MSVC support (#43737).
1107
11082015-06-28 Werner Lemberg <wl@gnu.org>
1109
Werner Lemberg52c9b1a2015-06-28 11:03:10 +02001110 [cmake] Check for libraries and create `ftoption.h'.
1111
1112 * builds/FindHarfBuzz.cmake: New file, taken from
1113
1114 https://trac.webkit.org/browser/trunk/Source/cmake/FindHarfBuzz.cmake
1115
1116 * CMakeLists.Txt: Add path to local cmake modules.
1117 Find dependencies for zlib, bzip2, libpng, and harfbuzz.
1118 Create `ftoption.h' file.
1119 Set up include and linker stuff for libraries.
1120
11212015-06-28 Werner Lemberg <wl@gnu.org>
1122
Werner Lemberg97b757d2015-06-28 10:42:47 +02001123 * CMakeLists.txt: Fix creation of `ftconfig.h'.
1124 Check for UNIX header files using `check_include_file'.
1125 Set up correct header include directories.
1126
11272015-06-28 Werner Lemberg <wl@gnu.org>
1128
Werner Lemberg22479ca2015-06-28 10:26:33 +02001129 * CMakeLists.txt: Disallow in-source builds.
1130
Werner Lemberg802f6a92015-06-27 07:12:42 +020011312015-06-27 Werner Lemberg <wl@gnu.org>
1132
1133 * src/tools/docmaker/utils.py (check_output): Add missing `\n'.
1134
Werner Lemberg94c79c22015-06-26 06:46:59 +020011352015-06-26 Werner Lemberg <wl@gnu.org>
1136
Werner Lemberg802f6a92015-06-27 07:12:42 +02001137 * CMakeLists.txt: Select platform-dependent `ftdebug.c'.
Werner Lemberg94c79c22015-06-26 06:46:59 +02001138
Werner Lemberg392cf222015-06-25 13:04:57 +020011392015-06-25 Werner Lemberg <wl@gnu.org>
1140
Werner Lemberg68222dd2015-06-25 16:38:11 +02001141 * CMakeLists.txt: Use cmake functions for generating `ftconfig.h'.
1142 Additionally, do this for UNIX only.
1143
11442015-06-25 Werner Lemberg <wl@gnu.org>
1145
Werner Lemberg5ef5a4f2015-06-25 15:45:13 +02001146 * CMakeLists.txt (BASE_SRCS): Use `ftbase.c' and `psnames.c'.
1147
11482015-06-25 Werner Lemberg <wl@gnu.org>
1149
Werner Lemberg392cf222015-06-25 13:04:57 +02001150 Another adjustment to header locations.
1151
1152 This change is a result of a discussion thread on freetype-devel
1153
1154 http://lists.nongnu.org/archive/html/freetype-devel/2015-06/msg00041.html
1155
1156 Re-introduce the `freetype2' subdirectory for all FreeType header
1157 files after installation, and rename the `freetype2' subdirectory in
1158 the git repository to `freetype'.
1159
1160 * include/freetype2: Renamed to...
1161 * include/freetype: This.
1162
1163 * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
1164 PRIVATE_HEADERS): Updated.
1165 Update creation of `ftconfig.h'.
1166 Install generated `ftconfig.h'.
1167
1168 * Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.
1169
1170 * builds/amiga/include/config/ftconfig.h, builds/freetype.mk
1171 (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
1172 builds/unix/freetype2.in: Updated.
1173
1174 * builds/unix/freetype-config.in: Updated.
1175 * builds/unix/configure.raw: Don't check for `rmdir'.
1176 * builds/unix/unix-def.in (DELDIR): Use `rm -rf', which is portable
1177 according to the autoconf info manual.
1178 * builds/unix/install.mk (install, uninstall,
1179 distclean_project_unix): Update and simplify.
1180
1181 * builds/wince/*, builds/windows/*: Updated.
1182
1183 * devel/ft2build.h, include/ft2build.h: Updated.
1184
1185 * include/freetype2/config/ftheader.h,
1186 include/freetype2/internal/ftserv.h,
1187 include/freetype2/internal/internal.h: Update all header file
1188 macros.
1189
1190 * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.
1191
1192 * docs/*: Updated.
1193
Werner Lemberg1982a882015-06-26 06:52:34 +020011942015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com>
1195
1196 * src/bdf/bdflib.c (_bdf_parse_start): Disallow 0 bpp.
1197
11982015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com>
1199
1200 * src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing.
1201
Werner Lemberg59312682015-06-23 09:24:48 +020012022015-06-23 Werner Lemberg <wl@gnu.org>
1203
1204 s/TYPEOF/FT_TYPEOF/ (#45376).
1205
1206 * builds/unix/ftconfig.in, builds/vms/ftconfig.in,
1207 include/freetype2/config/ftconfig.h,
1208 include/freetype2/internal/ftobjs.h, src/autofit/afwarp.h: Do it.
1209
Werner Lemberg8502c982015-06-22 06:35:23 +020012102015-06-22 Werner Lemberg <wl@gnu.org>
1211
1212 Fix Savannah bug #45097.
1213
1214 We no longer `pollute' the namespace of possible header file names;
1215 instead we move `ft2build.h' up by one level so that it gets
1216 installed in the default include directory (e.g.,
1217 /usr/local/include). After this commit, only `ft2build.h' stays in
1218 the compiler's include path.
1219
1220 No visible changes for the user who follows the standard FreeType
1221 header inclusion rules.
1222
1223 * include/*: Move to ...
1224 * include/freetype2/*: This directory, except `ft2build.h'.
1225
1226 * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
1227 PRIVATE_HEADERS), Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.
1228
1229 * builds/amiga/include/config/ftconfig.h, builds/freetype.mk
1230 (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
1231 builds/unix/install.mk (install, uninstall),
1232 builds/unix/freetype2.in: Updated.
1233
1234 * builds/unix/freetype-config.in: Updated.
1235 Emit -I directory only if it is not `/usr/include'.
1236
1237 * builds/wince/*, builds/windows/*: Updated.
1238
1239 * devel/ft2build.h, include/ft2build.h: Updated.
1240
1241 * include/freetype2/config/ftheader.h,
1242 include/freetype2/internal/ftserv.h,
1243 include/freetype2/internal/internal.h: Update all header file
1244 macros.
1245
1246 * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.
1247
Werner Lemberg31d97df2015-06-21 19:12:12 +020012482015-06-21 Werner Lemberg <wl@gnu.org>
1249
1250 Make Jam support work again.
1251
1252 This is just very basic stuff and just a little bit tested on
1253 GNU/Linux only. I won't delve into this since I'm not a Jam user.
1254
1255 * Jamfile: Call `HDRMACRO' for `ftserv.h' also.
1256 (DEFINES): Replace with...
1257 (CCFLAGS): ... this.
1258
1259 * src/Jamfile: Don't call `HDRMACRO' for `internal.h'; this is
1260 already handled in the top-level Jamfile.
1261
1262 * src/autofit/Jamfile (DEFINES): Replace with...
1263 (CCFLAGS): ... this.
1264 (_sources): Add missing files.
1265
1266 * src/cache/Jamfile: Don't call `HDRMACRO' for `ftcache.h'; it no
1267 longer contains macro header definitions.
1268
1269 * src/base/Jamfile, src/cff/Jamfile, src/sfnt/Jamfile,
1270 src/truetype/Jamfile (_sources): Add missing files.
1271
Werner Lemberg1a147ac2015-06-16 10:20:07 +020012722015-06-16 Werner Lemberg <wl@gnu.org>
1273
1274 Fix Savannah bug #45326.
1275
1276 * src/sfnt/sfntpic.h (SFNT_SERVICES_GET): Remove duplicate
1277 definitions.
1278
Werner Lemberge1862302015-06-07 16:11:18 +020012792015-06-07 Werner Lemberg <wl@gnu.org>
1280
1281 * Version 2.6 released.
1282 =======================
1283
1284
1285 Tag sources with `VER-2-6'.
1286
1287 * docs/VERSION.DLL: Update documentation and bump version number to
1288 2.6.
1289
1290 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1291 builds/windows/vc2005/index.html,
1292 builds/windows/vc2008/freetype.vcproj,
1293 builds/windows/vc2008/index.html,
1294 builds/windows/vc2010/freetype.vcxproj,
1295 builds/windows/vc2010/index.html,
1296 builds/windows/visualc/freetype.dsp,
1297 builds/windows/visualc/freetype.vcproj,
1298 builds/windows/visualc/index.html,
1299 builds/windows/visualce/freetype.dsp,
1300 builds/windows/visualce/freetype.vcproj,
1301 builds/windows/visualce/index.html,
1302 builds/wince/vc2005-ce/freetype.vcproj,
1303 builds/wince/vc2005-ce/index.html,
1304 builds/wince/vc2008-ce/freetype.vcproj,
1305 builds/wince/vc2008-ce/index.html: s/2.5.5/2.6/, s/255/26/.
1306
1307 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 6.
1308 (FREETYPE_PATCH): Set to 0.
1309
1310 * builds/unix/configure.raw (version_info): Set to 18:0:12.
Werner Lemberg8cabd912015-10-04 08:18:01 +02001311 * CMakeLists.txt (VERSION_MINOR): Set to 6.
1312 (VERSION_PATCH): Set to 0.
Werner Lemberge1862302015-06-07 16:11:18 +02001313
1314 * src/autofit/afmodule.c [!FT_MAKE_OPTION_SINGLE_OBJECT]: Add
1315 declarations for dumping functions.
1316
1317 * src/truetype/ttinterp.c (TT_New_Context): Pacify compiler.
1318
1319 * builds/toplevel.mk: Use `freetype.mk's code to compute the version
1320 string.
1321 Don't include a zero patch level in version string.
1322 * builds/freetype.mk: Remove code for computing the version string.
1323
Ashish Azad472119a2015-06-06 05:45:17 +020013242015-06-06 Ashish Azad <ashish.azad@samsung.com>
1325
1326 Fix Savannah bug #45260.
1327
1328 * src/pfr/pfrdrivr.c (pfr_get_kerning): Fix typo.
1329
Werner Lemberg75534a02015-06-03 00:54:09 +020013302015-06-03 Werner Lemberg <wl@gnu.org>
1331
1332 [truetype] Fix memory leak.
1333
1334 Problem reported by Grissiom <chaos.proton@gmail.com>; in
1335
1336 http://lists.nongnu.org/archive/html/freetype/2015-05/msg00013.html
1337
1338 there is an example code to trigger the bug.
1339
1340 * src/truetype/ttobjs.c (tt_size_init_bytecode): Free old `size'
1341 data before allocating again. Bug most probably introduced four
1342 years ago in version 2.4.3.
1343
13442015-06-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg54d04282015-06-01 12:12:06 +02001345
Werner Lembergd1ade6d2015-06-02 11:44:52 +02001346 [raster] Add more tracing.
1347
1348 * src/raster/ftraster.c (FT_TRACE7) [_STANDALONE_]: Define.
1349 (Vertical_Sweep_Span, Vertical_Sweep_Drop, Horizontal_Sweep_Span,
1350 Horizontal_Sweep_Drop, Render_Glyph): Add tracing calls.
1351
13522015-06-01 Werner Lemberg <wl@gnu.org>
1353
Werner Lemberg54d04282015-06-01 12:12:06 +02001354 [truetype] While tracing opcodes, show code position and stack.
1355
1356 * src/truetype/ttinterp.c: Change all existing TRACE7 calls to
1357 TRACE6.
1358 (opcode_name): Add string lengths.
1359 (TT_RunIns): Implement display of code position and stack.
1360
Werner Lembergcdee7d12015-05-31 11:54:42 +020013612015-05-31 Werner Lemberg <wl@gnu.org>
1362
Werner Lemberge9df4e42015-05-31 12:21:34 +02001363 [truetype] In GX, make private point numbers work correctly.
1364
1365 This is completely missing in Apple's documentation: If a `gvar'
1366 tuple uses private point numbers (this is, deltas are specified for
1367 some points only), the uncovered points must be interpolated for
1368 this tuple similar to the IUP bytecode instruction. Examples that
1369 need this functionality are glyphs `Oslash' and `Q' in Skia.ttf.
1370
1371 * src/truetype/ttgxvar.c (tt_delta_shift, tt_delta_interpolate,
1372 tt_handle_deltas): New functions.
1373 (TT_Vary_Get_Glyph_Deltas): Renamed to...
1374 (TT_Vary_Apply_Glyph_Deltas): ... this; it directly processes the
1375 points and does no longer return an array of deltas.
1376 Add tracing information.
1377 Call `tt_handle_deltas' to interpolate missing deltas.
1378 Also fix a minor memory leak in case of error.
1379
1380 * src/truetype/ttgxvar.h: Updated.
1381
1382 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
1383 load_truetype_glyph): Updated.
1384
13852015-05-31 Werner Lemberg <wl@gnu.org>
1386
Werner Lemberg9845c1d2015-05-31 11:57:31 +02001387 [truetype] In GX, make intermediate tuplets work at extrema.
1388
1389 * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix range condition.
1390
13912015-05-31 Werner Lemberg <wl@gnu.org>
1392
Werner Lembergcdee7d12015-05-31 11:54:42 +02001393 [truetype] Add tracing information to GX code.
1394
1395 * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
1396 ft_var_apply_tuple, TT_Get_MM_Var, TT_Set_MM_Blend,
1397 TT_Set_Var_Design, tt_face_vary_cvt): Do it.
1398
Werner Lemberg366b2ea2015-05-28 10:58:40 +020013992015-05-28 Werner Lemberg <wl@gnu.org>
1400
1401 * src/tools/apinames.c (names_dump): Fix invalid reference.
1402
1403 Problem reported by Guzman Mosqueda, Jose R
1404 <jose.r.guzman.mosqueda@intel.com>.
1405
Werner Lemberga5e1f6f2015-05-24 23:29:23 +020014062015-05-24 Werner Lemberg <wl@gnu.org>
1407
1408 [truetype] Fix commit from 2015-05-22.
1409
1410 * src/truetype/ttgload.c, src/truetype/ttinterp.c: Guard new code
1411 with `TT_CONFIG_OPTION_SUBPIXEL_HINTING'.
1412
1413 Problem reported by Nikolaus Waxweiler <madigens@gmail.com>.
1414
Werner Lembergbb435da2015-05-23 07:21:25 +020014152015-05-23 Werner Lemberg <wl@gnu.org>
1416
Werner Lemberg7f099482015-05-24 09:50:24 +02001417 [truetype] Fix return values of GETINFO bytecode instruction.
1418
1419 * src/truetype/ttinterp.h (TT_ExecContextRec): New fields
1420 `vertical_lcd' and `gray_cleartype'.
1421
1422 * src/truetype/ttgload.c (tt_loader_init): Initialize new fields.
1423 Change `symmetrical smoothing' to TRUE, since FreeType produces
1424 exactly this.
1425
1426 * src/truetype/ttinterp.c (Ins_GETINFO): Fix selector/return bit
1427 values for symmetrical smoothing, namely 11/18.
1428 Handle bits for vertical LCD subpixels (8/15) and Gray ClearType
1429 (12/19).
1430
14312015-05-23 Werner Lemberg <wl@gnu.org>
1432
Werner Lembergbb435da2015-05-23 07:21:25 +02001433 [truetype] Minor.
1434
1435 * src/truetype/ttinterp.h (TT_ExecContext):
1436 s/subpixel/subpixel_hinting.
1437
1438 * src/truetype/ttgload.c, src/truetype/ttgload.h: Updated.
1439
14402015-05-22 Werner Lemberg <wl@gnu.org>
Werner Lemberg790b8df2015-05-20 12:33:40 +02001441
Werner Lembergc61cad82015-05-22 22:02:15 +02001442 [truetype] Support selector index 3 of the INSTCTRL instruction.
1443
1444 This flag activates `native ClearType hinting', disabling backwards
1445 compatibility mode as described in Greg Hitchcocks whitepaper. In
1446 other words, it enables unrestricted functionality of all TrueType
1447 instructions in ClearType.
1448
1449 * src/truetype/ttgload.c (tt_get_metrics): Call `sph_set_tweaks'
1450 unconditionally.
1451 (tt_loader_init): Unset `ignore_x_mode' flag if bit 2 of
1452 `GS.instruct_control' is active.
1453
1454 * src/truetype/ttinterp.c (Ins_INSTCTRL): Handle selector index 3.
1455 (Ins_GETINFO): Updated.
1456
1457 * docs/CHANGES: Document it.
1458
14592015-05-20 Werner Lemberg <wl@gnu.org>
1460
Werner Lemberg790b8df2015-05-20 12:33:40 +02001461 [truetype] Minor.
1462
1463 * src/truetype/ttinterp.h (SetSuperRound): Fix type of `GridPeriod'
1464 argument.
1465
Werner Lemberg0a6b6ff2015-05-17 22:54:48 +020014662015-05-17 Werner Lemberg <wl@gnu.org>
1467
1468 [truetype] Fix loading of composite glyphs.
1469
1470 * src/truetype/ttgload.c (TT_Load_Composite_Glyph): If the
1471 ARGS_ARE_XY_VALUES flag is not set, handle argument values as
1472 unsigned. I trust `ttx' (which has exactly such code) that it does
1473 the right thing here...
1474
1475 The reason that noone has ever noticed this bug is probably the fact
1476 that point-aligned subglyphs are rare, as are subglyphs with a
1477 number of points in the range [128;255], which is quite large (or
1478 even in the range [32768;65535], which is extremely unlikely).
1479
Chris Liddelld65bf722015-05-12 07:16:46 +020014802015-05-12 Chris Liddell <chris.liddell@artifex.com>
1481
Chris Liddella87fb8c2015-05-12 07:27:35 +02001482 [cff] Make the `*curveto' operators more tolerant.
1483
1484 * src/cff/cf2intrp.c (cf2_interpT2CharString): The opcodes
1485 `vvcurveto', `hhcurveto', `vhcurveto', and `hvcurveto' all iterate,
1486 pulling values off the stack until the stack is exhausted.
1487 Implicitly the stack must be a multiple (or for subtly different
1488 behaviour) a multiple plus a specific number of extra values deep.
1489 If that's not the case, enforce it (as the old code did).
1490
14912015-05-12 Chris Liddell <chris.liddell@artifex.com>
1492
Chris Liddelld65bf722015-05-12 07:16:46 +02001493 [cff] fix incremental interface with new cff code.
1494
1495 * src/cff/cf2ft.c (cf2_getSeacComponent): When using the incremental
1496 interface to retrieve glyph data for a SEAC, it be left to the
1497 incremental interface callback to apply the encoding to raw
1498 character index (as it was in the previous code).
1499
Alexei Podtelezhnikov40914952015-04-29 21:57:30 -040015002015-04-29 Alexei Podtelezhnikov <apodtele@gmail.com>
1501
1502 [autofit] Speed up IUP.
1503
1504 * src/autofit/afhints.c (af_iup_interp): Separate trivial snapping to
1505 the same position from true interpolation, use `scale' to reduce
1506 divisions.
1507
Werner Lemberg3cc076d2015-04-28 09:16:27 +020015082015-04-28 Werner Lemberg <wl@gnu.org>
1509
1510 [cff] Use `name' table for PS name if we have a SFNT-CFF.
1511
1512 This follows the OpenType 1.7 specification. See
1513
1514 http://tug.org/pipermail/tex-live/2015-April/036634.html
1515
1516 for a discussion.
1517
1518 * src/cff/cffdrivr.c (cff_get_ps_name): Use the `sfnt' service if we
1519 have an SFNT.
1520
Alexei Podtelezhnikov40623a12015-04-27 22:27:00 -040015212015-04-27 Alexei Podtelezhnikov <apodtele@gmail.com>
1522
1523 [truetype] Speed up IUP.
1524
1525 * src/truetype/ttinterp.c (_iup_worker_interpolate): Separate trivial
1526 snapping to the same position from true interpolation.
1527
Werner Lemberg12661a52015-04-21 07:13:59 +020015282015-04-21 Werner Lemberg <wl@gnu.org>
1529
Werner Lemberg14df6b12015-04-22 11:14:35 +02001530 [autofit] By default, enable warping code but switch off warping.
1531
1532 Suggested by Behdad.
1533
1534 * include/config/ftoption.h: Define AF_CONFIG_OPTION_USE_WARPER.
1535
1536 * src/autofit/afmodule.c (af_autofitter_init): Initialize `warping'
1537 with `false'.
1538
15392015-04-21 Werner Lemberg <wl@gnu.org>
1540
Werner Lembergd164f702015-04-21 07:51:41 +02001541 * docs/CHANGES: Updated.
1542
15432015-04-21 Werner Lemberg <wl@gnu.org>
1544
Werner Lemberg12661a52015-04-21 07:13:59 +02001545 [autofit] Introduce `warping' property.
1546
1547 This code replaces the debugging hook from the previous commit with
1548 a better, more generic solution.
1549
1550 * include/ftautoh.h: Document it.
1551
1552 * src/autofit/afmodule.h (AF_ModuleRec)
1553 [AF_CONFIG_OPTION_USE_WARPER]: Add `warping' field.
1554
1555 * src/autofit/afmodule.c (_af_debug_disable_warper): Remove.
1556 (af_property_set, af_property_get, af_autofitter_init)
1557 [AF_CONFIG_OPTION_USE_WARPER]: Handle `warping' option.
1558
1559 * src/autofit/afhints.h (AF_HINTS_DO_WARP): Remove use of the no
1560 longer existing `_af_debug_disable_warper'.
1561
1562 * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
1563 (af_latin_hints_init), src/autofit/aflatin2.c (af_latin2_hints_init)
1564 [AF_CONFIG_OPTION_USE_WARPER]: Add `AF_SCALER_FLAG_NO_WARPER' to the
1565 scaler flags if warping is off.
1566
1567 * src/autofit/aftypes.h: Updated.
1568
Werner Lemberg58f48f02015-04-16 20:11:49 +020015692015-04-16 Werner Lemberg <wl@gnu.org>
1570
1571 [autofit] Add debugging hook to disable warper.
1572
1573 * src/autofit/afmodule.c (_af_debug_disable_warper)
1574 [FT_DEBUG_AUTOFIT]: New global variable.
1575
1576 * src/autofit/aftypes.h: Updated.
1577 (AF_SCALER_FLAG_NO_WARPER): New macro (not actively used yet).
1578
1579 * src/autofit/afhints.h (AF_HINTS_DO_WARP): New macro.
1580
1581 * src/autofi/aflatin.c (af_latin_hints_apply)
1582 [AF_CONFIG_OPTION_USE_WARPER]: Use `AF_HINTS_DO_WARP' to control use
1583 of warper.
1584
1585 * src/autofit/afcjk.c (af_cjk_hints_init, af_cjk_hints_apply)
1586 [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.
1587
1588 * src/autofit/aflatin2.c (af_latin2_hints_apply)
1589 [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.
1590
Werner Lemberg5cd21552015-04-10 07:01:01 +020015912015-04-10 Werner Lemberg <wl@gnu.org>
1592
1593 [cff] Update advance width handling to OpenType 1.7.
1594
1595 Problem reported by Behdad.
1596
1597 * src/cff/cffdrivr.c (cff_get_advances): Handle SFNT case
1598 separately.
1599
1600 * src/cff/cffgload.c (cff_slot_load): Use advance width and side
1601 bearing values from `hmtx' table if present.
1602
Alexei Podtelezhnikov67b912d2015-04-03 22:38:11 -040016032015-04-03 Alexei Podtelezhnikov <apodtele@gmail.com>
1604
1605 * src/autofit/afhints.c (af_glyph_hints_reload): Use do-while loop.
1606
Alexei Podtelezhnikov770b5d02015-04-02 23:15:36 -040016072015-04-02 Alexei Podtelezhnikov <apodtele@gmail.com>
1608
1609 * src/autofit/aflatin.c (af_latin_hint_edges): Reduce logic.
1610
16112015-04-01 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov886f4d02015-04-01 22:57:43 -04001612
1613 [autofit] Finish the thought.
1614
1615 * src/autofit/afhints.c (af_direction_compute): make sure the long arm
1616 is never negative so that its `FT_ABS' is not necessary.
1617
Werner Lemberg16217e52015-04-01 13:13:56 +020016182015-04-01 Werner Lemberg <wl@gnu.org>
1619
Werner Lemberga2fa6572015-04-01 15:55:41 +02001620 [autofit] Call dumper functions for tracing.
1621
1622 * src/autofit/afcjk.c (af_cjk_hints_apply): Remove dead code.
1623 * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor
1624 improvement.
1625 * src/autofit/afmodule.c (af_autofitter_load_glyph): Implement it.
1626
16272015-04-01 Werner Lemberg <wl@gnu.org>
1628
Werner Lembergdb8df792015-04-01 13:30:55 +02001629 [autofit] Make debugging stuff work again.
1630
1631 The interface to ftgrid was broken in the series of commits starting
1632 with
1633
1634 [autofit] Allocate AF_Loader on the stack instead of AF_Module.
1635
1636 from 2015-01-14.
1637
1638 * src/autofit/afmodule.c (_af_debug_hints_rec) [FT_DEBUG_AUTOFIT]:
1639 Use a global AF_GlyphHintsRec object for debugging.
1640 (af_autofitter_done, af_autofitter_load_glyph): Updated.
1641
1642 * src/autofit/afloader.c (af_loader_init, af_loader_done): Updated.
1643
16442015-04-01 Werner Lemberg <wl@gnu.org>
1645
Werner Lemberg16217e52015-04-01 13:13:56 +02001646 * src/autofit/afhints.c (af_glyph_hints_done): Fix minor thinko.
1647
Werner Lemberg10e2bb82015-03-29 13:32:47 +020016482015-03-29 Werner Lemberg <wl@gnu.org>
1649
Werner Lembergf353a382015-03-29 14:47:49 +02001650 [cff] Fix Savannah bug #44629.
1651
1652 * src/cff/cf2font.h (CF2_MAX_SUBR), src/cff/cffgload.h
1653 (CFF_MAX_SUBRS_CALLS): Set to 16.
1654
16552015-03-29 Werner Lemberg <wl@gnu.org>
1656
Werner Lemberg10e2bb82015-03-29 13:32:47 +02001657 [type1, truetype] Make the MM API more flexible w.r.t. `num_coords'.
1658
1659 This commit allows `num_coords' to be larger or smaller than the
1660 number of available axes while selecting a design instance, either
1661 ignoring excess data or using defaults if data is missing.
1662
1663 * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design):
1664 Implement it.
1665
1666 * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design,
1667 T1_Set_Var_Design): Ditto.
1668
16692015-03-29 Werner Lemberg <wl@gnu.org>
Werner Lemberg8ce30262015-03-27 08:33:47 +01001670
Werner Lembergdd5d6d72015-03-29 10:04:22 +02001671 [type1] Minor.
1672
1673 * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Use
1674 FT_THROW.
1675 (T1_Set_Var_Design): Use T1_MAX_MM_AXIS and FT_THROW.
1676
16772015-03-27 Werner Lemberg <wl@gnu.org>
1678
Werner Lemberg8ce30262015-03-27 08:33:47 +01001679 [cff] Trace charstring nesting levels.
1680
1681 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLGSUBR,
1682 cf2_cmdCALLSUBR, cf2_cmdRETURN>: Implement it.
1683
1684 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
1685 <cff_op_callsubr, cff_op_callgsubr, cff_op_return>: Ditto.
1686
Alexei Podtelezhnikovdac56442015-03-21 23:30:16 -040016872015-03-21 Alexei Podtelezhnikov <apodtele@gmail.com>
1688
1689 [base] Optimize `FT_Angle_Diff'.
1690
1691 Under normal circumstances we are usually close to the desired range
1692 of angle values, so that the remainder is not really necessary.
1693
1694 * src/base/fttrigon.c (FT_Angle_Diff): Use loops instead of remainder.
1695
1696 * src/autofit/aftypes.h (AF_ANGLE_DIFF): Ditto in the unused macro.
1697
Werner Lemberg6cc425d2015-03-21 06:51:07 +010016982015-03-21 Werner Lemberg <wl@gnu.org>
1699
1700 [truetype] Improve `gvar' handling.
1701
1702 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Correctly handle
1703 single-element runs. Cf. glyph `Q' in Skia.ttf with weights larger
1704 than the default.
1705
Alexei Podtelezhnikov2d7284e2015-03-20 21:34:19 -040017062015-03-20 Alexei Podtelezhnikov <apodtele@gmail.com>
1707
1708 * src/base/fttrigon.c (FT_Vector_Rotate): Minor refactoring.
1709
Alexei Podtelezhnikov6a171722015-03-17 22:43:08 -040017102015-03-17 Alexei Podtelezhnikov <apodtele@gmail.com>
1711
1712 Fix Savannah bug #44412 (part 2).
1713
1714 * src/base/fttrigon.c (FT_Sin, FT_Cos, FT_Tan): Call `FT_Vector_Unit'.
1715
Werner Lemberg06339952015-03-11 06:30:23 +010017162015-03-11 Werner Lemberg <wl@gnu.org>
1717
Werner Lembergd3284462015-03-11 16:45:58 +01001718 [autofit] Add support for Arabic script.
1719
1720 Thanks to Titus Nemeth <tn@tntypography.eu> for guidance!
1721
1722 * src/autofit/afblue.dat: Add blue zone data for Arabic.
1723
1724 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1725
1726 * src/autofit/afscript.h: Add Arabic standard characters.
1727
1728 * src/autofit/afranges.c: Add Arabic data.
1729
1730 * src/autofit/afstyles.h: Add Arabic data.
1731
1732 * docs/CHANGES: Document it.
1733
17342015-03-11 Werner Lemberg <wl@gnu.org>
1735
Werner Lemberga4516382015-03-11 08:09:13 +01001736 Rename `svxf86nm.h' to `svfntfmt.h'; update related symbols.
1737
1738 * include/internal/ftserv.h (FT_SERVICE_XFREE86_NAME_H): Renamed
1739 to...
1740 (FT_SERVICE_FONT_FORMAT_H): This.
1741
1742 * include/internal/services/svfntfmt.h (FT_XF86_FORMAT_*): Renamed
1743 to ...
1744 (FT_FONT_FORMAT_*): This.
1745
1746 src/base/ftfntfmt.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
1747 src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/pfr/pfrdrivr.c,
1748 src/truetype/ttdriver.c, src/type1/t1driver.c,
1749 src/type42/t42drivr.c, src/winfonts/winfnt.c: Updated.
1750
17512015-03-11 Werner Lemberg <wl@gnu.org>
1752
Werner Lembergdd7028c2015-03-11 07:45:05 +01001753 [base] Rename `FT_XFREE86_H' to `FT_FONT_FORMATS_H'.
1754
1755 * include/config/ftheader.h: Implement it.
1756 * src/base/ftfntfmt.c, docs/CHANGES: Updated.
1757
17582015-03-11 Werner Lemberg <wl@gnu.org>
1759
Werner Lembergf4d1c112015-03-11 07:32:58 +01001760 [base] Rename `FT_Get_X11_Font_Format' to `FT_Get_Font_Format'.
1761
1762 * include/ftfntfmt.h, src/base/ftfntfmt.c: Implement it.
1763
1764 * docs/CHANGES: Updated.
1765
17662015-03-11 Werner Lemberg <wl@gnu.org>
1767
Werner Lembergcb0f7b62015-03-11 06:51:27 +01001768 Fix automatic copyright updating.
1769
1770 * src/tools/update-copyright: Make scanning of `no-copyright'
1771 actually work.
1772
1773 * src/tools/no-copyright: Don't include README in general.
1774
17752015-03-11 Werner Lemberg <wl@gnu.org>
1776
Werner Lemberg06339952015-03-11 06:30:23 +01001777 Rename `ftxf86.[ch]' to `ftfntfmt.[ch]'.
1778
1779 CMakeLists.txt, builds/amiga/makefile, builds/amiga/makefile.os4,
1780 builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt,
1781 builds/mac/FreeType.m68k_far.make.txt,
1782 builds/mac/FreeType.ppc_carbon.make.txt,
1783 builds/mac/FreeType.ppc_classic.make.txt, builds/symbian/bld.inf,
1784 builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj,
1785 builds/wince/vc2008-ce/freetype.vcproj,
1786 builds/windows/vc2005/freetype.vcproj,
1787 builds/windows/vc2008/freetype.vcproj,
1788 builds/windows/vc2010/freetype.vcxproj,
1789 builds/windows/vc2010/freetype.vcxproj.filters,
1790 builds/windows/visualc/freetype.dsp,
1791 builds/windows/visualc/freetype.vcproj,
1792 builds/windows/visualce/freetype.dsp,
1793 builds/windows/visualce/freetype.vcproj, docs/INSTALL.ANY,
1794 include/config/ftheader.h, include/ftfntfmt.h, modules.cfg,
1795 src/base/ftfntfmt.c, vms_make.com: Updated.
1796
Alexei Podtelezhnikov6b832c82015-03-10 23:25:49 -040017972015-03-10 Alexei Podtelezhnikov <apodtele@gmail.com>
1798
1799 Fix Savannah bug #44412 (part 1).
1800
1801 * src/base/ftstroke.c (ft_stroker_inside): Handle near U-turns.
1802
Werner Lembergeee7d8b2015-03-10 11:15:15 +010018032015-03-10 Werner Lemberg <wl@gnu.org>
1804
1805 [base] Rename `FT_Bitmap_New' to `FT_Bitmap_Init'.
1806
1807 * include/ftbitmap.h, src/base/ftbitmap.c: Implement it.
1808 Update all callers.
1809
1810 * docs/CHANGES: Updated.
1811
Werner Lemberg493cc032015-03-06 05:38:31 +010018122015-03-06 Werner Lemberg <wl@gnu.org>
1813
1814 * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning.
1815
1816 Found by Alexei.
1817
Alexei Podtelezhnikovdd7498d2015-03-05 22:51:36 -050018182015-03-05 Alexei Podtelezhnikov <apodtele@gmail.com>
1819
1820 * src/base/ftstroke.c: Simplify.
1821
Werner Lemberg328b7922015-03-04 08:40:23 +010018222015-03-04 Werner Lemberg <wl@gnu.org>
1823
1824 [truetype] Some fixes and code refactoring in `ttgxvar.c'.
1825
1826 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix return value
1827 of `point_cnt' if two bytes are read.
1828 Use a more vertical coding style.
1829 (ft_var_readpackeddeltas): Use FT_UInt for `delta_cnt' parameter.
1830 Use a more vertical coding style.
1831
Werner Lemberga374c9c2015-03-03 11:23:45 +010018322015-03-03 Werner Lemberg <wl@gnu.org>
1833
1834 [autofit] Fix Savannah bug #44241.
1835
1836 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Reject glyphs
1837 with less than 3 points.
1838
Werner Lemberga07029e2015-03-02 06:54:08 +010018392015-03-02 Werner Lemberg <wl@gnu.org>
1840
1841 Simplify `TYPEOF' macro.
1842
1843 No need for two arguments.
1844
1845 * include/config/ftconfig.h, builds/unix/ftconfig.in,
1846 builds/vms/ftconfig.h (TYPEOF): Updated.
1847
1848 * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
1849 src/autofit/afwarp.h (AF_WARPER_FLOOR): Updated.
1850
18512015-03-01 Werner Lemberg <wl@gnu.org>
Werner Lemberg4b9234b2015-02-25 06:31:43 +01001852
Werner Lemberg851e8152015-03-01 19:27:09 +01001853 Various compiler warning fixes for `make multi'.
1854
1855 * src/autofit/afcjk.c (af_cjk_hints_compute_blue_edges),
1856 src/autofit/aflatin.c (af_latin_hint_compute_blue_edges,
1857 af_latin_hint_edges), src/autofit/aflatin2.c
1858 (af_latin2_hints_compute_blue_edges, af_latin2_hint_edges): Declare
1859 as `static'.
1860
1861 * src/cache/ftccmap.c (FTC_CMAP_QUERY_HASH, FTC_CMAP_NODE_HASH):
1862 Removed. Unused.
1863 * src/cache/ftcimage.c: Include FT_INTERNAL_OBJECTS_H.
1864 * src/cache/ftcmanag.c (FTC_LRU_GET_MANAGER): Removed. Unused.
1865
1866 * src/cff/cf2intrp.c: Include `cf2intrp.h'.
1867 * src/cff/cffdrivr.c (PAIR_TAG): Removed. Unused.
1868
1869 * src/gzip/ftgzip.c (NO_DUMMY_DECL): Removed. Unused.
1870
1871 * src/psaux/afmparse.c (afm_parser_read_int): Declare as `static'.
1872
1873 * src/pshinter/pshalgo.c (STRONGER, PSH_ZONE_MIN, PSH_ZONE_MAX):
1874 Removed. Unused.
1875
1876 * src/raster/ftraster.c (Render_Glyph): Declare as `static'.
1877
1878 * src/sfnt/ttpost.c (load_format_20): Fix signedness warning.
1879
1880 * src/truetype/ttdriver.c (PAIR_TAG): Removed. Unused.
1881 * src/truetype/ttsubpix.c (is_member_of_family_class,
1882 is_member_of_style_class): Declare as `static'.
1883
1884 * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Declare
1885 as `static'.
1886 * src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): Declare as
1887 `static'.
1888 (T1_FIELD_COUNT): Removed. Unused.
1889 * src/type1/t1parse.h (T1_Done_Table): Removed. Unused.
1890
1891 * src/type42/t42parse.c (T1_Done_Table): Removed. Unused.
1892
18932015-02-25 Werner Lemberg <wl@gnu.org>
1894
Werner Lemberg04c22372015-02-25 11:20:20 +01001895 [psaux] Signedness fixes.
1896
1897 * include/internal/psaux.h, src/psaux/afmparse.c,
1898 src/psaux/afmparse.h, src/psaux/psconv.c, src/psaux/psobjs.c,
1899 src/psaux/t1cmap.c, src/psaux/t1decode.c: Apply.
1900
19012015-02-25 Werner Lemberg <wl@gnu.org>
1902
Werner Lembergd25ec162015-02-25 09:19:59 +01001903 [otvalid] Signedness fixes.
1904
1905 * src/otvalid/otvcommn.c, src/otvalid/otvgdef.c,
1906 src/otvalid/otvgpos.c, src/otvalid/otvgsub.c, src/otvalid/otvmath.c:
1907 Apply.
1908
19092015-02-25 Werner Lemberg <wl@gnu.org>
1910
Werner Lemberg5c9d9bf2015-02-25 08:13:40 +01001911 * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Signedness fix.
1912
19132015-02-25 Werner Lemberg <wl@gnu.org>
1914
Werner Lemberg83d41812015-02-25 08:10:58 +01001915 [lzw] Signedness fixes.
1916
1917 * src/lzw/ftzopen.c, src/lzw/ftzopen.h: Apply.
1918
19192015-02-25 Werner Lemberg <wl@gnu.org>
1920
Werner Lemberg17b62912015-02-25 07:53:09 +01001921 [gxvalid] Signedness fixes.
1922
1923 * src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c,
1924 src/gxvalid/gxvcommn.h, src/gxvalid/gxvjust.c,
1925 src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c,
1926 src/gxvalid/gxvmort1.c, src/gxvalid/gxvmort2.c,
1927 src/gxvalid/gxvmorx.c, src/gxvalid/gxvmorx1.c,
1928 src/gxvalid/gxvmorx2.c, src/gxvalid/gxvopbd.c,
1929 src/gxvalid/gxvprop.c, src/gxvalid/gxvtrak.c: Apply.
1930
19312015-02-25 Werner Lemberg <wl@gnu.org>
1932
Werner Lemberg24e4e962015-02-25 06:57:16 +01001933 [cache] Signedness fixes.
1934
1935 * src/cache/ftcbasic.c, src/cache/ftccmap.c, src/cache/ftcimage.c,
1936 src/cache/ftcmanag.c, src/cache/ftcsbits.c: Apply.
1937
19382015-02-25 Werner Lemberg <wl@gnu.org>
1939
Werner Lemberg559727d2015-02-25 06:55:00 +01001940 Change dimension fields in `FTC_ImageTypeRec' to unsigned type.
1941
1942 This doesn't break ABI.
1943
1944 * include/ftcache.h (FTC_ImageTypeRec): Use unsigned types for
1945 `width' and `height'.
1946
1947 * docs/CHANGES: Document it.
1948
19492015-02-25 Werner Lemberg <wl@gnu.org>
1950
Werner Lemberg4b9234b2015-02-25 06:31:43 +01001951 [cache] Don't use `labs'.
1952
1953 This is the only place in FreeType where this function was used.
1954
1955 * include/config/ftstdlib.h (ft_labs): Remove.
1956
1957 * src/cache/ftcimage.c (ftc_inode_weight): Replace `ft_labs' with
1958 `FT_ABS'.
1959
Werner Lemberg4d1f7af2015-02-23 07:04:36 +010019602015-02-23 Werner Lemberg <wl@gnu.org>
1961
Werner Lemberg3aaebe32015-02-23 08:20:27 +01001962 [cache] Replace `FT_PtrDist' with `FT_Offset'.
1963
1964 * src/cache/ftccache.h (FTC_NodeRec): `FT_Offset' (a.k.a. `size_t')
1965 is a better choice for `hash' to hold a pointer than `FT_PtrDist'
1966 (a.k.a. `ptrdiff_t'), especially since the latter is signed,
1967 causing zillions of signedness warnings. [Note that `hash' was of
Werner Lemberg17b62912015-02-25 07:53:09 +01001968 type `FT_UInt32' before the change to `FT_PtrDist'.]
Werner Lemberg3aaebe32015-02-23 08:20:27 +01001969 Update all users.
1970
1971 * src/cache/ftcbasic.c, src/cache/ftccache.c, src/cache/ftccmap.c,
1972 src/cache/ftcglyph.c, src/cache/ftcglyph.h: Updated.
1973
19742015-02-23 Werner Lemberg <wl@gnu.org>
1975
Werner Lemberg4d1f7af2015-02-23 07:04:36 +01001976 [smooth, raster] Re-enable standalone compilation.
1977
1978 * src/raster/ftraster.c (FT_RENDER_POOL_SIZE, FT_MAX)
1979 [_STANDALONE_]: Define macros.
1980
1981 * src/smooth/ftgrays.c (FT_RENDER_POOL_SIZE, FT_MAX, FT_ABS,
1982 FT_HYPOT) [_STANDALONE_]: Define macros.
1983
Werner Lemberg03ccfd02015-02-22 08:25:16 +010019842015-02-22 Werner Lemberg <wl@gnu.org>
1985
Werner Lembergcb13e712015-02-23 06:41:52 +01001986 [smooth] Signedness fixes.
1987
1988 * src/smooth/ftgrays.c, src/smooth/ftsmooth.c: Apply.
1989
19902015-02-22 Werner Lemberg <wl@gnu.org>
1991
Werner Lemberga974e9a2015-02-22 21:02:13 +01001992 * src/raster/ftraster.c: Use the file's typedefs everywhere.
1993
19942015-02-22 Werner Lemberg <wl@gnu.org>
1995
Werner Lembergb0ebcdc2015-02-22 20:42:49 +01001996 * src/sfnt/ttpost.c (load_format_20): Fix error tracing message.
1997
1998 Bug introduced 6 commits earlier.
1999
20002015-02-22 Werner Lemberg <wl@gnu.org>
2001
Werner Lemberg22b1d5c2015-02-22 20:41:03 +01002002 [pshinter] Fix thinko.
2003
2004 * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Correctly
2005 check `count'.
2006 Bug introduced two commits earlier.
2007
20082015-02-22 Werner Lemberg <wl@gnu.org>
2009
Werner Lembergca96fe02015-02-22 20:05:04 +01002010 [raster] Signedness fixes.
2011
2012 * src/raster/ftraster.c, src/raster/ftrend1.c: Apply.
2013
20142015-02-22 Werner Lemberg <wl@gnu.org>
2015
Werner Lemberg452066c2015-02-22 15:59:02 +01002016 [pshinter] Signedness fixes.
2017
2018 * src/pshinter/pshalgo.c, src/pshinter/pshglob.c,
2019 src/pshinter/pshrec.c: Apply.
2020
20212015-02-22 Werner Lemberg <wl@gnu.org>
2022
Werner Lemberg41c2ed82015-02-22 15:57:47 +01002023 [pshinter] Use macros for (unsigned) flags, not enumerations.
2024
2025 * src/pshinter/pshalgo.h (PSH_Hint_Flags): Replace with macros.
2026 Updated.
2027 * src/pshinter/pshrec.h (PS_Hint_Flags): Replace with macros.
2028
20292015-02-22 Werner Lemberg <wl@gnu.org>
2030
Werner Lemberg25c2f882015-02-22 15:54:31 +01002031 * src/pshinter/pshrec.c: Simplify.
2032 (ps_hints_open, ps_hints_stem): Remove switch statement.
2033
20342015-02-22 Werner Lemberg <wl@gnu.org>
2035
Werner Lemberg01f08422015-02-22 12:03:28 +01002036 [sfnt] Signedness fixes.
2037
2038 * src/sfnt/pngshim.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap.c,
2039 src/sfnt/ttkern.c, src/sfnt/ttload.c, src/sfnt/ttpost.c,
2040 src/sfnt/ttsbit.c: Apply.
2041 * src/sfnt/sfdriver.c: Apply.
2042 (sfnt_get_ps_name): Simplify.
2043
20442015-02-22 Werner Lemberg <wl@gnu.org>
2045
Werner Lemberg3c374c82015-02-22 09:16:53 +01002046 [bdf] Signedness fixes.
2047
2048 * src/bdf/bdf.h, src/bdf/bdfdrivr.c, src/bdf/bdfdrivr.h,
2049 src/bdf/bdflib.c: Apply.
2050
20512015-02-22 Werner Lemberg <wl@gnu.org>
2052
Werner Lembergb13945a2015-02-22 09:15:47 +01002053 * src/bdf/bdflib.c (_bdf_atous): New function.
2054 (_bdf_parse_glyphs, _bdf_parse_start): Use it.
2055
20562015-02-22 Werner Lemberg <wl@gnu.org>
2057
Werner Lemberg03ccfd02015-02-22 08:25:16 +01002058 [pcf] Signedness fixes.
2059
2060 * src/pcf/pcf.h, src/pcf/pcfdrivr.c: Apply.
2061 * src/pcf/pcfread.c: Apply.
2062 (pcf_get_encodings): Ignore invalid negative encoding offsets.
2063
Werner Lemberg633a7292015-02-21 07:02:01 +010020642015-02-21 Werner Lemberg <wl@gnu.org>
2065
Werner Lemberg3d7e53f2015-02-21 11:30:54 +01002066 * src/winfonts/winfnt.c: Signedness fixes.
2067
20682015-02-21 Werner Lemberg <wl@gnu.org>
2069
Werner Lemberg7b6b4172015-02-21 10:39:34 +01002070 [type42] Signedness fixes.
2071
2072 * src/type42/t42parse.c, src/type42/t42parse.h,
2073 src/type42/t42types.h: Apply.
2074
20752015-02-21 Werner Lemberg <wl@gnu.org>
2076
Werner Lemberg8bfffb42015-02-21 09:52:29 +01002077 [pfr] Signedness fixes.
2078
2079 * src/pfr/pfrdrivr.c, src/pfr/pfrgload.c, src/pfr/pfrload.c,
2080 src/pfr/pfrload.h, src/pfr/pfrobjs.c, src/pfr/pfrsbit.c,
2081 src/pfr/pfrtypes.h: Apply.
2082
20832015-02-21 Werner Lemberg <wl@gnu.org>
2084
Werner Lemberg633a7292015-02-21 07:02:01 +01002085 [cff] Minor signedness fixes related to last commit.
2086
2087 * src/cff/cf2ft.c, src/cff/cf2intrp.c, src/cff/cffgload.c: Apply.
2088
Werner Lemberg3a8d0532015-02-20 08:35:32 +010020892015-02-20 Werner Lemberg <wl@gnu.org>
2090
Werner Lembergc00b05f2015-02-20 20:42:55 +01002091 [cff] Thinkos in bias handling.
2092
2093 Only the final result is always positive.
2094
2095 Bug introduced three commits earlier.
2096
2097 * src/cff/cffgload.c, src/cff/cffgload.h: Apply.
2098
20992015-02-20 Werner Lemberg <wl@gnu.org>
2100
Werner Lemberg2bf03eb2015-02-20 20:14:11 +01002101 [cid] Fix signedness issues and emit some better error codes.
2102
2103 * src/cid/cidgload.c, src/cid/cidload.h, src/cid/cidobjs.c,
2104 src/cid/cidparse.h: Apply.
2105 * src/cid/cidload.c: Apply.
2106 (parse_fd_array): Reject negative values for number of dictionaries.
2107 * src/cid/cidparse.c: Apply.
2108 (cid_parser_new): Reject negative values for hex data length.
2109
21102015-02-20 Werner Lemberg <wl@gnu.org>
2111
Werner Lembergeb05bfb2015-02-20 08:37:35 +01002112 [cff] Signedness fixes for new engine.
2113
2114 * src/cff/cf2arrst.c, src/cff/cf2fixed.h, src/cff/cf2ft.c,
2115 src/cff/cf2ft.h, src/cff/cf2hints.c, src/cff/cf2intrp.c: Apply.
2116
21172015-02-20 Werner Lemberg <wl@gnu.org>
2118
Werner Lemberg3a8d0532015-02-20 08:35:32 +01002119 [cff] Signedness fixes for basic infrastructure and old engine.
2120
2121 * include/internal/pshints.h, src/cff/cffdrivr.c,
2122 src/cff/cffgload.c, src/cff/cffgload.h, src/cff/cffload.c,
2123 src/cff/cffobjs.c, src/cff/cffparse.c, src/pshinter/pshrec.c: Apply.
2124
Werner Lemberg81e5ff52015-02-19 09:46:48 +010021252015-02-19 Werner Lemberg <wl@gnu.org>
2126
Werner Lemberg3a1df3e2015-02-19 15:42:48 +01002127 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Ignore `countSizePairs'.
2128
2129 This is hard-coded to value 2 in `fvar' version 1.0 (and no newer
2130 version exists), but some fonts set it incorrectly.
2131
2132 Problem reported by Adam Twardoch <adam@fontlab.com>.
2133
21342015-02-19 Werner Lemberg <wl@gnu.org>
2135
Werner Lemberg93a884c2015-02-19 14:11:16 +01002136 [cff] Emit better error code for invalid private dict size.
2137
2138 * src/cff/cffparse.c (cff_parse_private_dict): Reject negative
2139 values for size and offset.
2140
21412015-02-19 Werner Lemberg <wl@gnu.org>
2142
Werner Lembergb57bb112015-02-19 10:44:18 +01002143 [autofit] Fix signedness issues.
2144
2145 * src/autofit/afangles.c, src/autofit/afcjk.c,
2146 src/autofit/afglobal.c, src/autofit/afhints.c,
2147 src/autofit/aflatin.c, src/autofit/aflatin2.c, src/autofit/afwarp.c,
2148 src/autofit/hbshim.c: Apply.
2149
21502015-02-19 Werner Lemberg <wl@gnu.org>
2151
Werner Lemberg81e5ff52015-02-19 09:46:48 +01002152 [autofit] Use macros for (unsigned) flags, not enumerations.
2153
2154 This harmonizes with other code in FreeType (and reduces the number
2155 of necessary casts to avoid compiler warnings).
2156
2157 * src/autofit/afblue.hin: Make flag macros unsigned.
2158 * src/autofit/afblue.h: Regenerated.
2159
2160 * src/autofit/afcjk.h: Replace flag enumeration with macros.
2161 * src/autofit/afcjk.c: Updated.
2162
2163 * src/autofit/afhints.h (AF_Flags, AF_Edge_Flags): Replace with
2164 macros.
2165 * src/autofit/afhints.c: Updated.
2166
2167 * src/autofit/aflatin.h: Replace flag enumerations with macros.
2168 * src/autofit/aflatin.c, src/autofit/aflatin2.c: Updated.
2169
2170 * src/autofit/aftypes.h (AF_ScalerFlags): Replace with macros.
2171
Werner Lemberg6a0ded72015-02-18 08:51:22 +010021722015-02-18 Werner Lemberg <wl@gnu.org>
2173
Werner Lemberg3b5f3322015-02-18 11:45:22 +01002174 [type1] Fix signedness issues.
2175
2176 * include/internal/psaux.h, include/internal/t1types.h,
2177 src/psaux/psobjs.c, src/psaux/psobjs.h, src/psaux/t1decode.c,
2178 src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1parse.c: Apply.
2179
21802015-02-18 Werner Lemberg <wl@gnu.org>
2181
Werner Lemberg272e3cd2015-02-18 11:38:46 +01002182 [psaux, type1] Fix minor AFM issues.
2183
2184 * include/internal/t1types.h (AFM_KernPairRec): Make indices
2185 unsigned.
2186 Update users.
2187 (AFM_FontInfoRec): Make element counters unsigned.
2188 Update users.
2189 * src/psaux/afmparse.h (AFM_ValueRec): Add union member for unsigned
2190 int.
2191
2192 * src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs):
2193 Reject negative values for number of kerning elements.
2194
2195 * src/type1/t1afm.c, src/tools/test_afm.c: Updated.
2196
21972015-02-18 Werner Lemberg <wl@gnu.org>
2198
Werner Lemberg6bd7d282015-02-18 09:22:06 +01002199 Don't use `FT_PtrDist' for lengths.
2200
2201 Use FT_UInt instead.
2202
2203 * include/internal/psaux.h (PS_Table_FuncsRec, PS_TableRec,
2204 T1_DecoderRec): Do it.
2205
2206 * include/internal/t1types.h (T1_FontRec): Ditto.
2207
2208 * src/cid/cidload.c (cid_parse_dict): Updated.
2209 * src/pfr/pfrload.c (pfr_extra_item_load_font_id): Ditto.
2210 * src/psaux/psobjs.c (ps_table_add), src/psaux/psobjs.h: Ditto.
2211 * src/type1/t1load.c (parse_blend_axis_types, parse_encoding,
2212 parse_chharstrings, parse_dict): Ditto.
2213 * src/type42/t42parse.c (t42_parse_encoding, t42_parse_charstrings,
2214 t42_parse_dict): Ditto.
2215
22162015-02-18 Werner Lemberg <wl@gnu.org>
2217
Werner Lemberg6a0ded72015-02-18 08:51:22 +01002218 * src/type1/t1driver.c (t1_ps_get_font_value): Clean up.
2219 This handles negative values better, avoiding many casts.
2220
Werner Lemberg0a33a392015-02-17 08:03:05 +010022212015-02-17 Werner Lemberg <wl@gnu.org>
2222
Werner Lembergd3240c52015-02-17 20:30:36 +01002223 [base] Fix Savannah bug #44284.
2224
2225 * src/base/ftcalc.c (FT_MulFix): Typos.
2226
22272015-02-17 Werner Lemberg <wl@gnu.org>
2228
Werner Lemberg1f7a4e12015-02-17 10:17:56 +01002229 [truetype] Finish compiler warning fixes for signedness issues.
2230
2231 * src/truetype/ttgxvar.c, src/truetype/ttsubpix.c,
2232 src/truetype/ttsubpix.h: Apply.
2233
22342015-02-17 Werner Lemberg <wl@gnu.org>
2235
Werner Lemberg9daea2c2015-02-17 09:27:56 +01002236 * src/truetype/ttsubpix.c: Adding missing `static' keywords.
2237
22382015-02-17 Werner Lemberg <wl@gnu.org>
2239
Werner Lembergd9c3f152015-02-17 09:21:26 +01002240 [truetype] More signedness fixes.
2241
2242 * include/internal/tttypes.h, src/truetype/ttinterp.h,
2243 src/truetype/ttobjs.h, src/truetype/ttinterp.c,
2244 src/truetype/ttobjs.c: Apply.
2245
22462015-02-17 Werner Lemberg <wl@gnu.org>
2247
Werner Lemberg0a33a392015-02-17 08:03:05 +01002248 [truetype] Various signedness fixes.
2249
2250 * include/internal/ftgloadr.h, src/truetype/ttpload.c: Apply.
2251
2252 * src/truetype/ttgload.c: Apply.
2253 (TT_Get_VMetrics): Protect against invalid ascenders and descenders
2254 while constructing advance height.
2255
Werner Lemberg587351b2015-02-16 07:03:22 +010022562015-02-16 Werner Lemberg <wl@gnu.org>
2257
Werner Lemberg76abc752015-02-16 22:00:27 +01002258 [base] Finish compiler warning fixes for signedness issues.
2259
2260 * src/base/ftglyph.c, src/base/ftlcdfil.c, src/base/ftstroke.c:
2261 Apply.
2262
22632015-02-16 Werner Lemberg <wl@gnu.org>
2264
Werner Lemberg10aa8582015-02-16 20:12:54 +01002265 * include/tttables.h (TT_OS2): `fsType' must be FT_UShort.
2266
22672015-02-16 Werner Lemberg <wl@gnu.org>
2268
Werner Lemberg2e814fc2015-02-16 20:05:08 +01002269 More minor signedness warning fixes.
2270
2271 * src/base/ftbbox.c, src/base/ftbitmap.c, src/base/fttrigon.c,
2272 src/base/ftutil.c: Apply.
2273
22742015-02-16 Werner Lemberg <wl@gnu.org>
2275
Werner Lemberg82235d02015-02-16 19:35:16 +01002276 Next round of minor compiler warning fixes.
2277
2278 * include/internal/ftrfork.h (FT_RFork_Ref): Change `offset' member
2279 type to `FT_Long'.
2280 (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Add `static' keyword.
2281
Werner Lemberg3aaebe32015-02-23 08:20:27 +01002282 * include/internal/ftstream.h (FT_Stream_Pos): Return `FT_ULong'.
Werner Lemberg82235d02015-02-16 19:35:16 +01002283
2284 * src/base/ftoutln.c, src/base/ftrfork.c, src/base/ftstream.c:
2285 Signedess fixes.
2286
22872015-02-16 Werner Lemberg <wl@gnu.org>
2288
Werner Lemberg3cfa4d12015-02-16 17:59:06 +01002289 Various minor signedness fixes.
2290
2291 * include/ftadvanc.h, include/internal/ftobjs.h,
2292 src/base/ftgloadr.c, src/base/ftobjs.c: Apply.
2293
22942015-02-16 Werner Lemberg <wl@gnu.org>
2295
Werner Lemberg6f325c22015-02-16 11:31:32 +01002296 New `TYPEOF' macro.
2297
2298 This helps suppress signedness warnings, avoiding issues with
2299 implicit conversion changes.
2300
2301 * include/config/ftconfig.h, builds/unix/ftconfig.in,
2302 builds/vms/ftconfig.h (TYPEOF): Define.
2303
2304 * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
2305 src/autofit/afwarp.h (AF_WARPER_FLOOR): Use it.
2306
23072015-02-16 Werner Lemberg <wl@gnu.org>
2308
Werner Lemberg1f377f02015-02-16 08:37:09 +01002309 * src/base/ftsystem.c: Use casts in standard C function wrappers.
2310 (ft_alloc, ft_realloc, ft_ansi_stream_io, FT_Stream_Open): Do it.
2311
23122015-02-16 Werner Lemberg <wl@gnu.org>
2313
Werner Lemberg0814b802015-02-16 07:29:53 +01002314 Fix Savannah bug #44261.
2315
2316 * builds/unix/detect.mk (setup) [unix]: Set `CONFIG_SHELL' in the
2317 environment also while calling the configure script.
2318
23192015-02-16 Werner Lemberg <wl@gnu.org>
2320
Werner Lemberg587351b2015-02-16 07:03:22 +01002321 * include/internal/ftmemory.h: Add some `FT_Offset' casts.
2322 (FT_MEM_SET, FT_MEM_COPY, FT_MEM_MOVE, FT_ARRAY_ZERO, FT_ARRAY_COPY,
2323 FT_MEM_MOVE): Do it.
2324
Werner Lemberg6d7d6362015-02-15 12:30:42 +010023252015-02-15 Werner Lemberg <wl@gnu.org>
2326
Werner Lemberg48186b82015-02-16 06:37:36 +01002327 [base] Clean up signedness issues in `ftdbgmem.c'.
2328
2329 Also fix other minor issues.
2330
2331 * src/base/ftdbgmem.c (FT_MemTableRec): Replace all FT_ULong types
2332 with FT_Long for consistency.
2333 (ft_mem_primes): Change type to `FT_Int'.
2334 (ft_mem_closest_prime, ft_mem_table_set): Updated.
2335
2336 (ft_mem_debug_panic, ft_mem_debug_alloc, ft_mem_debug_free,
2337 ft_mem_debug_realloc): Use `static' keyword and fix signedness
2338 warnings where necessary.
2339
2340 (ft_mem_table_resize, ft_mem_table_new, ft_mem_table_destroy,
2341 ft_mem_table_get_nodep, ft_mem_debug_init, FT_DumpMemory): Fix types
2342 and add or remove casts to avoid signedness warnings.
2343
23442015-02-15 Werner Lemberg <wl@gnu.org>
2345
Werner Lemberg6d7d6362015-02-15 12:30:42 +01002346 [base] Clean up signedness in arithmetic functions.
2347
2348 This makes the code more readable and reduces compiler warnings.
2349
2350 * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_MulFix,
2351 FT_DivFix): Convert input parameters to unsigned, do the
2352 computation, then convert the result back to signed.
2353 (ft_corner_orientation): Fix casts.
2354
Werner Lemberg92359bd2015-02-07 09:47:23 +010023552015-02-07 Werner Lemberg <wl@gnu.org>
2356
2357 [sfnt] Fix Savannah bug #44184.
2358
2359 * src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir): No
2360 longer reject `htmx' and `vmtx' tables with invalid length but
2361 sanitize them.
2362
Jon Anderson416d8792015-02-06 10:16:45 +010023632015-02-06 Jon Anderson <jon@websupergoo.com>
2364
2365 [truetype] Fix regression in the incremental glyph loader.
2366
2367 * src/truetype/ttgload.c (load_truetype_glyph): For incremental
2368 fonts, the glyph index may be greater than the number of glyphs
2369 indicated, so guard the check with a preprocessor conditional.
2370
Werner Lembergb6cb4992015-02-06 08:46:06 +010023712015-02-06 Werner Lemberg <wl@gnu.org>
2372
2373 [autofit] Fix potential memory leak.
2374
2375 While this doesn't show up with FreeType, exactly the same code
2376 leaks with ttfautohint's modified auto-hinter code (which gets used
2377 in a slightly different way).
2378
2379 It certainly doesn't harm since it is similar to already existing
2380 checks in the code for embedded arrays.
2381
2382 * src/autofit/afhints.c (af_glyph_hints_reload): Set `max_contours'
2383 and `max_points' for all cases.
2384
Werner Lemberg19146a52015-01-31 11:01:33 +010023852015-01-31 Werner Lemberg <wl@gnu.org>
2386
2387 [autofit] Add support for Thai script.
2388
2389 Thanks to Ben Mitchell <ben@rosettatype.com> for guidance with blue
2390 zone characters!
2391
2392 * src/autofit/afblue.dat: Add blue zone data for Thai.
2393
2394 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
2395
2396 * src/autofit/afscript.h: Add Thai standard characters.
2397
2398 * src/autofit/afranges.c: Add Thai data.
2399
2400 * src/autofit/afstyles.h: Add Thai data.
2401
Behdad Esfahbod264b5e42015-01-23 21:23:55 +010024022015-01-23 Behdad Esfahbod <behdad@behdad.org>
2403
2404 [raster] Handle `FT_RASTER_FLAG_AA' correctly.
2405
2406 This fixes a breakage caused by the commit `[raster] Remove
2407 5-level gray AA mode from monochrome rasterizer.'.
2408
Werner Lembergd2c531e2015-01-23 22:37:42 +01002409 Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de>.
Behdad Esfahbod264b5e42015-01-23 21:23:55 +01002410
2411 * src/raster/ftraster.c (ft_black_render): Handle
2412 `FT_RASTER_FLAG_AA'.
2413
2414 * src/raster/ftrend1.c (ft_raster1_render): Remove gray AA mode
2415 remnants.
2416
Werner Lemberg79a5ac62015-01-18 07:30:04 +010024172015-01-18 Werner Lemberg <wl@gnu.org>
2418
2419 * src/base/ftobjs.c (FT_New_Library): Fix compiler warning.
2420
Chris Liddell942aa5f2015-01-18 07:29:48 +010024212015-01-18 Chris Liddell <chris.liddell@artifex.com>
2422
2423 [raster] Fix Savannah bug #44022.
2424
2425 Add fallback for glyphs with degenerate bounding boxes.
2426
2427 If a glyph has only one very narrow feature, the bbox can end up
2428 with either the width or height of the bbox being 0, in which case
2429 no raster memory is allocated and no attempt is made to render the
2430 glyph. This is less than ideal when the drop-out compensation in
2431 the rendering code would actually result in the glyph being
2432 rendered.
2433
2434 This problem can be observed with the `I' glyph (gid 47) in the
2435 Autodesk RomanS TrueType font.
2436
2437 * src/raster/ftrend1.c (ft_raster1_render): Add a fallback if either
2438 dimension is zero to explicitly round up/down (instead of simply
2439 round).
2440
Werner Lemberg50be00d2015-01-17 20:38:31 +010024412015-01-17 Werner Lemberg <wl@gnu.org>
2442
2443 Add some tools to handle yearly copyright notice updates.
2444
2445 We are now following the GNU guidelines: A new release automatically
2446 means that the copyright year of all affected files gets updated; it
2447 is no longer used to track years of modification changes.
2448
2449 * src/tools/update-copyright-year: New Perl script.
2450 * src/tools/update-copyright: New shell script that calls
2451 `update-copyright-year' on all files.
2452 * src/tools/no-copyright: Exceptions that should not be handled by
2453 `update-copyright'
2454
Werner Lemberg4eff8542015-01-14 20:06:19 +010024552015-01-14 Werner Lemberg <wl@gnu.org>
2456
2457 * docs/CHANGES: Updated, using a description from Behdad.
2458
Behdad Esfahbod3f9b3d82015-01-14 15:48:12 +010024592015-01-14 Behdad Esfahbod <behdad@behdad.org>
2460
Behdad Esfahbod48c86622015-01-14 19:38:36 +01002461 * src/autofit/afmodule.c (af_autofitter_done): Fix compiler warning.
2462
24632015-01-14 Behdad Esfahbod <behdad@behdad.org>
2464
Behdad Esfahbod56ddafa2015-01-14 19:36:02 +01002465 [autofit] Add embedded array of segments and edges.
2466
2467 Avoids multiple mallocs per typical glyphs.
2468
2469 With this and recent changes to avoid mallocs, the thread-safe
2470 stack-based loader is now as fast as the previous model that had one
2471 cached singleton.
2472
2473 * src/autofit/afhints.h (AF_SEGMENTS_EMBEDDED, AF_EDGES_EMBEDDED):
2474 New macros.
2475 (AF_AxisHintsRec): Add two arrays for segments and edges.
2476
2477 * src/autofit/afhints.c (af_axis_hints_new_segment): Only allocate
2478 data if number of segments exceeds given threshold value.
2479 (af_axis_hints_new_edge): Only allocate data if number of edges
2480 exceeds given threshold value.
2481 (af_glyph_hints_done): Updated.
2482
24832015-01-14 Behdad Esfahbod <behdad@behdad.org>
2484
Behdad Esfahbod6f16b102015-01-14 19:26:49 +01002485 [autofit] Add embedded arrays for points and contours.
2486
2487 This avoids at least two malloc calls for typical glyphs.
2488
2489 * src/autofit/afhints.h (AF_POINTS_EMBEDDED, AF_CONTOURS_EMBEDDED):
2490 New macros.
2491 (AF_GlyphHintsRec): Add two arrays for contours and points.
2492
2493 * src/autofit/afhints.c (af_glyph_hints_init, af_glyph_hints_done):
2494 Updated.
2495 (af_glyph_hints_reload): Only allocate data if number of contours or
2496 points exceeds given threshold values.
2497
24982015-01-14 Behdad Esfahbod <behdad@behdad.org>
2499
Behdad Esfahbodc2733652015-01-14 19:16:12 +01002500 [autofit] Allocate hints object on the stack.
2501
2502 This avoids one malloc per load.
2503
2504 * src/autofit/afloader.h (AF_LoaderRec): Change type of `hints' to
2505 `AF_GlyphHints'.
2506 Update prototype.
2507
2508 * src/autofit/afloader.c (af_loader_init): Use `AF_GlyphHints'
2509 parameter instead of `FT_Memory'.
2510 (af_loader_done): Directly reset `load_hints'.
2511 (af_loader_load_g): Updated.
2512
2513 * src/autofit/afmodule.c (af_autofitter_load_glyph): Use local
2514 `hints' object.
2515
25162015-01-14 Behdad Esfahbod <behdad@behdad.org>
2517
Behdad Esfahboda4117fb2015-01-14 19:07:54 +01002518 [autofit] Reuse slot glyph loader.
2519
2520 No need to create a new glyph loader; we can reuse the one from
2521 `slot->internal->loader'. It's hard to tell why it was written that
2522 way originally, but new code looks sound and correct to me, and
2523 avoids lots of allocations.
2524
2525 * src/autofit/afloader.c (af_loader_init): Change return type to
2526 `void'.
2527 Don't call `FT_GlyphLoader_New'.
2528 (af_loader_reset): Don't call `FT_GlyphLoader_Rewind'.
2529 (af_loader_load_g): Update code to use `internal->loader', which
2530 doesn't need copying of data.
2531
2532 * src/autofit/afloader.h (AF_LoaderRec): Remove `gloader' member.
2533 Update prototype.
2534
2535 * src/autofit/afmodule.c (af_autofitter_load_glyph): Updated.
2536
25372015-01-14 Behdad Esfahbod <behdad@behdad.org>
2538
Behdad Esfahbodae6699f2015-01-14 18:55:39 +01002539 [autofit] Remove (unused) support for composite glyphs.
2540
2541 We never have to deal with composite glyphs in the autohinter, as
2542 those will be loaded into FORMAT_OUTLINE by the recursed
2543 `FT_Load_Glyph' function.
2544
2545 In the rare cases that FT_LOAD_NO_RECURSE is set, it will imply
2546 FT_LOAD_NO_SCALE as per `FT_Load_Glyph', which then implies
2547 FT_LOAD_NO_HINTING:
2548
2549 /* resolve load flags dependencies */
2550
2551 if ( load_flags & FT_LOAD_NO_RECURSE )
2552 load_flags |= FT_LOAD_NO_SCALE |
2553 FT_LOAD_IGNORE_TRANSFORM;
2554
2555 if ( load_flags & FT_LOAD_NO_SCALE )
2556 {
2557 load_flags |= FT_LOAD_NO_HINTING |
2558 FT_LOAD_NO_BITMAP;
2559
2560 load_flags &= ~FT_LOAD_RENDER;
2561 }
2562
2563 and as such the auto-hinter is never called. Thus, the recursion in
2564 `af_loader_load_g' never actually happens. So remove the depth
2565 counter as well.
2566
2567 * src/autofit/afloader.c (af_loader_load_g): Remove `depth'
2568 parameter.
2569 <FT_GLYPH_FORMAT_COMPOSITE>: Remove associated code.
2570 (af_loader_load_glyph): Updated.
2571
25722015-01-14 Behdad Esfahbod <behdad@behdad.org>
2573
Behdad Esfahbodc242fe42015-01-14 18:48:14 +01002574 [raster] Fix uninitialized memory access.
2575
2576 Apparently `ras.cProfile' might be uninitialized. This will be the
2577 case if `ras.top == ras.cProfile->offset', as can be seen in
2578 `End_Profile'. The overshoot code introduced in a change `Fix B/W
2579 rasterization of subglyphs with different drop-out modes.' (from
2580 2009-06-18) violated this, accessing `ras.cProfile->flags'
2581 unconditionally just before calling `End_Profile' (which then
2582 detected that `cProfile' is uninitialized and didn't touch it).
2583
2584 This was harmless, and was not detected by valgrind before because
2585 the objects were allocated on the `raster_pool', which was always
2586 initialized. With recent change to allocate raster buffers on the
2587 stack, valgrind now reported this invalid access.
2588
2589 * src/raster/ftraster.c (Convert_Glyph): Don't access an
2590 uninitialized `cProfile'.
2591
25922015-01-14 Behdad Esfahbod <behdad@behdad.org>
2593
Behdad Esfahbodb2ba6862015-01-14 18:43:13 +01002594 [smooth] Fix uninitialized memory access.
2595
2596 Looks like `ras.span_y' could always be used without initialization.
2597 This was never detected by valgrind before because the library-wide
2598 `raster_pool' was used for the worker object and `raster_pool' was
2599 originally zero'ed. But subsequent reuses of it were using `span_y'
2600 uninitialized. With the recent change to not use `render_pool' and
2601 allocate worker and buffer on the stack, valgrind now detects this
2602 uninitialized access.
2603
2604 * src/smooth/ftgrays.c (gray_raster_render): Initialize
2605 `ras.span_y'.
2606
26072015-01-14 Behdad Esfahbod <behdad@behdad.org>
2608
Behdad Esfahbod603292d2015-01-14 18:35:56 +01002609 [base] Don't initialize unused `driver->glyph_loader'.
2610
2611 * src/base/ftobjs.c (Destroy_Driver): Don't call
2612 `FT_GlyphLoader_Done'.
2613 (FT_Add_Module): Don't call `FT_GlyphLoader_New'.
2614
26152015-01-14 Behdad Esfahbod <behdad@behdad.org>
2616
Behdad Esfahbod51634252015-01-14 18:30:59 +01002617 [base] Don't allocate `library->raster_pool' anymore.
2618
2619 It's unused after the following commits:
2620
2621 [raster] Allocate render pool for mono rasterizer on the stack.
2622 [raster] Remove 5-level gray AA mode from monochrome rasterizer.
2623
2624 The value of FT_RENDER_POOL_SIZE still serves the purpose it used to
2625 serve, which is, to adjust the pool size. But the pool is now
2626 allocated on the stack on demand.
2627
2628 * src/base/ftobjs.c (FT_New_Library, FT_Done_Library): Implement.
2629
26302015-01-14 Behdad Esfahbod <behdad@behdad.org>
2631
Behdad Esfahbod6dfdaf42015-01-14 18:21:13 +01002632 [base] Do not reorder library->renderers upon use.
2633
2634 Instead of keeping `library->renderers' in a MRU order, just leave
2635 it as-is. The MRU machinery wasn't thread-safe.
2636
2637 With this patch, rasterizing glyphs from different faces from
2638 different threads doesn't fail choosing rasterizer
2639 (FT_Err_Cannot_Render_Glyph).
2640
2641 Easiest to see that crash was to add a `printf' (or otherwise let
2642 thread yield in FT_Throw with debugging enabled).
2643
2644 * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c
2645 (FT_Outline_Render): Don't call `FT_Set_Renderer'.
2646
26472015-01-14 Behdad Esfahbod <behdad@behdad.org>
2648
Behdad Esfahboda773c302015-01-14 18:16:20 +01002649 [raster] Allocate render pool for mono rasterizer on the stack.
2650
2651 Instead of using the `render_pool' member of `FT_Library' that is
2652 provided down to the rasterizer, completely ignore that and allocate
2653 needed objects on the stack instead.
2654
2655 With this patch, rasterizing glyphs from different faces from
2656 different threads doesn't crash in the monochrome rasterizer.
2657
2658 * src/raster/ftraster.c (black_TRaster): Remove `buffer',
2659 `buffer_size', and `worker' members.
2660
2661 (ft_black_render): Create `buffer' locally.
2662 (ft_black_reset): Updated.
2663
26642015-01-14 Behdad Esfahbod <behdad@behdad.org>
2665
Behdad Esfahbod8dc86352015-01-14 18:06:22 +01002666 [raster] Remove 5-level gray AA mode from monochrome rasterizer.
2667
2668 It was off by default and couldn't be turned on at runtime. And the
2669 smooth rasterizer superceded it over ten years ago. No point in
2670 keeping. Comments suggested that it was there for compatibility
2671 with FreeType 1.
2672
2673 550 lines down.
2674
2675 * src/raster/ftraster.c (FT_RASTER_OPTION_ANTI_ALIASING,
2676 RASTER_GRAY_LINES): Remove macros and all associated code.
2677
2678 (black_TWorker): Remove `gray_min_x' and `gray_max_x'.
2679 (black_TRaster): Remove `grays' and `gray_width'.
2680
2681 (Vertical_Sweep_Init, Vertical_Sweep_Span, Vertical_Sweep_Drop,
2682 ft_black_render): Updated.
2683
2684 * src/raster/ftrend1.c (ft_raster1_render): Simplify code.
2685 (ft_raster5_renderer_class): Removed.
2686
26872015-01-14 Behdad Esfahbod <behdad@behdad.org>
2688
Behdad Esfahbod747ae2c2015-01-14 17:54:26 +01002689 [smooth] Allocate render pool for smooth rasterizer on the stack.
2690
2691 Instead of using the `render_pool' member of `FT_Library' that is
2692 provided down to the rasterizer, completely ignore that and allocate
2693 needed objects on the stack instead.
2694
2695 With this patch, rasterizing glyphs from different faces from
2696 different threads doesn't crash in the smooth rasterizer.
2697
2698 Bugs:
2699
2700 https://bugzilla.redhat.com/show_bug.cgi?id=678397
2701 https://bugzilla.redhat.com/show_bug.cgi?id=1004315
2702 https://bugzilla.redhat.com/show_bug.cgi?id=1165471
2703 https://bugs.freedesktop.org/show_bug.cgi?id=69034
2704
2705 * src/smooth/ftgrays.c (gray_TRaster): Remove `buffer',
2706 `buffer_size', `band_size', and `worker' members.
2707
2708 (gray_raster_render): Create `buffer', `buffer_size', and
2709 `band_size' locally.
2710 (gray_raster_reset): Updated.
2711
27122015-01-14 Behdad Esfahbod <behdad@behdad.org>
2713
Behdad Esfahbod531d4632015-01-14 17:46:55 +01002714 [truetype] Allocate TT_ExecContext in TT_Size instead of TT_Driver.
2715
2716 Previously the code had stipulation for using a per-TT_Size exec
2717 context if `size->debug' was true. But there was no way that
2718 `size->debug' could *ever* be true. As such, the code was always
2719 using the singleton `TT_ExecContext' that was stored in `TT_Driver'.
2720 This was, clearly, not threadsafe.
2721
2722 With this patch, loading glyphs from different faces from different
2723 threads doesn't crash in the bytecode loader code.
2724
2725 * src/truetype/ttobjs.h (TT_SizeRec): Remove `debug' member.
2726 (TT_DriverRec): Remove `context' member.
2727
2728 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Remove
2729 `TT_ExecContext' code related to a global `TT_Driver' object.
2730
2731 (tt_driver_done): Don't remove `TT_ExecContext' object here but ...
2732 (tt_size_done_bytecode): ... here.
2733
2734 (tt_driver_init): Don't create `TT_ExecContext' object here but ...
2735 (tt_size_init_bytecode): ... here, only on demand.
2736
2737 * src/truetype/ttinterp.c (TT_Run_Context): Remove defunct debug
2738 code.
2739 (TT_New_Context): Remove `TT_ExecContext' code related to a global
2740 `TT_Driver' object.
2741
2742 * src/truetype/ttinterp.h: Updated.
2743
2744 * src/truetype/ttgload.c (TT_Hint_Glyph, tt_loader_init): Updated.
2745
27462015-01-14 Behdad Esfahbod <behdad@behdad.org>
2747
Behdad Esfahbod89bc8d42015-01-14 16:01:19 +01002748 [autofit] Allocate AF_Loader on the stack instead of AF_Module.
2749
2750 Stop sharing a global `AF_Loader'. Allocate one on the stack during
2751 glyph load.
2752
2753 Right now this results in about 25% slowdown, to be fixed in a
2754 following commit.
2755
2756 With this patch loading glyphs from different faces from different
2757 threads doesn't immediately crash in the autohinting loader code.
2758
2759 Bugs:
2760
2761 https://bugzilla.redhat.com/show_bug.cgi?id=1164941
2762
2763 * src/autofit/afloader.c (af_loader_init): Pass
2764 `AF_Loader' and `FT_Memory' instead of `AF_Module' as arguments.
2765 (af_loader_reset, af_loader_load_glyph): Also pass `loader' as
2766 argument.
2767 (af_loader_done): Use `AF_Loader' instead of `AF_Module' as
2768 argument.
2769
2770 * src/autofit/afmodule.c (af_autofitter_init): Don't call
2771 `af_loader_init'.
2772 (af_autofitter_done): Don't call `af_loader_done'.
2773 (af_autofitter_load_glyph): Use a local `AF_Loader' object.
2774
2775 * src/autofit/afloader.h: Include `afmodule.h'.
2776 Update prototypes.
2777 Move typedef for `AF_Module' to...
2778
2779 * src/autofit/afmodule.h: ... this place.
2780 No longer include `afloader.h'.
2781
27822015-01-14 Behdad Esfahbod <behdad@behdad.org>
2783
Behdad Esfahbod3f9b3d82015-01-14 15:48:12 +01002784 * src/type42/t42objs.h (T42_DriverRec): Remove unused member.
2785
Werner Lemberg36d03c92015-01-12 11:26:30 +010027862015-01-12 Werner Lemberg <wl@gnu.org>
2787
2788 Fix Savannah bug #43976.
2789
2790 Assure that FreeType's internal include directories are found before
2791 `CPPFLAGS' (which might be set by the user in the environment), and
2792 `CPPFLAGS' before `CFLAGS'.
2793
2794 * builds/freetype.mk (FT_CFLAGS): Don't add `INCLUDE_FLAGS'.
2795 (FT_COMPILE): Make this a special variable for compiling only the
2796 files handled in `freetype.mk'.
2797 (.c.$O): Removed, unused.
2798
2799 * src/*/rules.mk (*_COMPILE): Fix order of include directories.
2800
Werner Lembergd03a67a2015-01-11 08:39:14 +010028012015-01-11 Werner Lemberg <wl@gnu.org>
2802
Werner Lemberg95b57052015-01-11 09:50:49 +01002803 [truetype] Prettyfing.
2804
2805 * src/truetype/ttinterp.c (project, dualproj, fast_project,
2806 fast_dualproj): Rename to...
2807 (PROJECT, DUALPROJ, FAST_PROJECT, FAST_DUALPROJ): ... this.
2808
28092015-01-11 Werner Lemberg <wl@gnu.org>
2810
Werner Lembergea173c02015-01-11 08:58:54 +01002811 * src/truetype/ttinterp.c (Ins_JROT, Ins_JROF): Simplify.
2812
2813 Based on a patch from Behdad.
2814
28152015-01-11 Werner Lemberg <wl@gnu.org>
2816
Werner Lemberg628578c2015-01-11 08:53:31 +01002817 * src/truetype/ttinterp.c (Ins_SxVTL): Simplify function call.
2818
28192015-01-11 Werner Lemberg <wl@gnu.org>
2820
Werner Lemberg08e79092015-01-11 08:45:50 +01002821 * src/truetype/ttinterp.c (Normalize): Remove unused argument.
2822
28232015-01-11 Werner Lemberg <wl@gnu.org>
2824
Werner Lembergd03a67a2015-01-11 08:39:14 +01002825 [truetype] More macro expansions.
2826
Werner Lemberg4aaadf42015-01-11 08:42:28 +01002827 * src/truetype/ttinterp.c (FT_UNUSED_EXEC): Remove macro by
2828 expansion.
2829
28302015-01-11 Werner Lemberg <wl@gnu.org>
2831
2832 [truetype] More macro expansions.
2833
Werner Lembergd03a67a2015-01-11 08:39:14 +01002834 * src/truetype/ttinterp.c (INS_ARG): Remove macro by expansion,
2835 adjusting funtion calls where necessary.
2836 (FT_UNUSED_ARG): Removed, no longer needed.
2837
Werner Lemberg1b4d68c2015-01-10 19:56:28 +010028382015-01-10 Werner Lemberg <wl@gnu.org>
2839
Werner Lembergeb341362015-01-11 00:23:27 +01002840 [truetype] More macro expansions.
2841
2842 Based on a patch from Behdad.
2843
2844 * src/truetype/ttinterp.c (DO_*): Expand macros into corresponding
2845 `Ins_*' functions.
2846 (TT_RunIns): Replace `DO_*' macros with `Ins_*' function calls.
2847 (ARRAY_BOUND_ERROR): Remove second definition, which is no longer
2848 needed.
2849 (Ins_SVTCA, Ins_SPVTCA, Ins_SFVTCA): Replaced with...
2850 (Ins_SxyTCA): New function.
2851
28522015-01-10 Werner Lemberg <wl@gnu.org>
2853
Werner Lemberg01be1302015-01-10 23:05:37 +01002854 [truetype] Remove TT_CONFIG_OPTION_INTERPRETER_SWITCH.
2855
2856 Behdad suggested this code simplification, and nobody objected...
2857
2858 * include/config/ftoption.h, devel/ftoption.h
2859 (TT_CONFIG_OPTION_INTERPRETER_SWITCH): Remove.
2860
2861 * src/truetype/ttinterp.c [TT_CONFIG_OPTION_INTERPRETER_SWITCH]:
2862 Remove related code.
2863 (ARRAY_BOUND_ERROR): Use do-while loop.
2864
28652015-01-10 Werner Lemberg <wl@gnu.org>
2866
Werner Lembergfae0c812015-01-10 20:23:10 +01002867 [truetype] More macro expansions.
2868
Werner Lemberg6cc1f122015-01-10 21:56:59 +01002869 * src/truetype/ttinterp.c, src/truetype/ttinterp.h (EXEC_ARG_,
2870 EXEC_ARG): Remove by replacing with expansion.
2871
28722015-01-10 Werner Lemberg <wl@gnu.org>
2873
2874 [truetype] More macro expansions.
2875
Werner Lemberg24681452015-01-10 21:53:48 +01002876 Based on a patch from Behdad.
2877
2878 * src/truetype/ttinterp.c (SKIP_Code, GET_ShortIns, NORMalize,
2879 SET_SuperRound, ROUND_None, INS_Goto_CodeRange, CUR_Func_move,
2880 CUR_Func_move_orig, CUR_Func_round, CUR_Func_cur_ppem,
2881 CUR_Func_read_cvt, CUR_Func_write_cvt, CUR_Func_move_cvt,
2882 CURRENT_Ratio, INS_SxVTL, COMPUTE_Funcs, COMPUTE_Round,
2883 COMPUTE_Point_Displacement, MOVE_Zp2_Point): Remove by replacing
2884 with expansion.
2885
2886 (Cur_Func_project, CUR_Func_dualproj, CUR_fast_project,
2887 CUR_fast_dualproj): Replace with macros `project', `dualproj',
2888 `fast_project', `fast_dualproj'.
2889
28902015-01-10 Werner Lemberg <wl@gnu.org>
2891
2892 [truetype] More macro expansions.
2893
Werner Lembergfae0c812015-01-10 20:23:10 +01002894 * src/truetype/ttinterp.c (EXEC_OP_, EXEC_OP): Remove by replacing
2895 with expansion.
2896
28972015-01-10 Werner Lemberg <wl@gnu.org>
2898
Werner Lemberg5a752f32015-01-10 20:08:35 +01002899 [truetype] Remove code for static TrueType interpreter.
2900
2901 This is a follow-up patch.
2902
2903 * src/truetype/ttinterp.c, src/truetype/ttinterp.h
2904 [TT_CONFIG_OPTION_STATIC_INTERPRETER,
2905 TT_CONFIG_OPTION_STATIC_RASTER]: Remove macros and related code.
2906
29072015-01-10 Werner Lemberg <wl@gnu.org>
2908
Werner Lemberg1b4d68c2015-01-10 19:56:28 +01002909 * src/truetype/ttinterp.c (CUR): Remove by replacing with expansion.
2910
2911 This starts a series of patches that simplifies the code of the
2912 bytecode interpreter.
2913
Werner Lembergf6aa0892013-05-10 07:58:47 +02002914
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00002915----------------------------------------------------------------------------
2916
Werner Lemberga724dcf2015-10-11 05:50:07 +02002917Copyright 2015 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00002918David Turner, Robert Wilhelm, and Werner Lemberg.
2919
2920This file is part of the FreeType project, and may only be used, modified,
2921and distributed under the terms of the FreeType project license,
2922LICENSE.TXT. By continuing to use, modify, or distribute this file you
2923indicate that you have read the license and understand and accept it
2924fully.
2925
2926
2927Local Variables:
2928version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00002929coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00002930End: