blob: 16e6c7d8d45c5882a37a74d404a1fa2e7781bae8 [file] [log] [blame]
Dave Arnold3a2cb0f2013-09-29 16:17:02 +020012013-09-29 Dave Arnold <darnold@adobe.com>
2
3 Fix Savannah bug #39295.
4
5 The bug was caused by switching to the initial hintmap (the one in
6 effect when `moveto' executes) just before drawing the final element
7 in the charstring. This ensured that the path was closed (in both
8 Character Space and Device Space). But if the final element was a
9 curve and if the final hintmap was different enough from the initial
10 one, then the curve was visibly distorted.
11
12 The first part of the fix is to draw the final curve using the final
13 hintmap as specified by the charstring. This corrects the
14 distortion but does not ensure closing in Device Space. It may
15 require the rasterizer to automatically generate an extra closing
16 line. Depending on the hintmap differences, this line could be from
17 zero to a couple pixels in length.
18
19 The second part of the fix covers the case where the charstring
20 subpath is closed with an explicit line. We now modify that line's
21 end point to avoid the distortion.
22
23 Some glyphs in the bug report font (TexGyreHeros-Regular) that show
24 the change are:
25
26 25ppem S (98)
27 24ppem eight (52)
28 25.5ppem p (85)
29
30 Curves at the *end* of a subpath are no longer distorted. However,
31 some of these glyphs have bad hint substitutions in the middle of a
32 subpath, and these are not affected.
33
34 The patch has been tested with a set of 106 fonts that shipped with
35 Adobe Creative Suite 4, together with 756 Open Source CFF fonts from
36 Google Fonts. There are 1.5 million glyphs, of which some 20k are
37 changed with the fix. A sampling of a few hundred of these changes
38 have been examined more closely, and the changes look good (or at
39 least acceptable).
40
41 * src/cff/cf2hints.h (CF2_GlyphPathRec): New element `pathIsClosing'
42 to indicate that we synthesize a closepath line.
43
44 * src/cff/cf2hints.c (cf2_glyphpath_init): Updated.
45 (cf2_glyphpath_pushPrevElem): If closing, use first hint map (for
46 `lineto' operator) and adjust hint zone.
47 For synthesized closing lines, use end point in first hint zone.
48 (cf2_glyphpath_lineTo): Take care of synthesized closing lines. In
49 particular, shift the detection of zero-length lines from character
50 space to device space.
51 (cf2_glyphpath_closeOpenPath): Remove assertion.
52 Updated.
53
Werner Lembergb75a8b82013-09-25 09:46:36 +0200542013-09-25 Werner Lemberg <wl@gnu.org>
55
56 * src/autofit/aflatin.c (af_{grek,cyrl}_uniranges): Fix arrays.
57
suzuki toshiyaac0f4452013-09-25 10:57:17 +0900582013-09-25 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
59
60 [bdf, pcf] Refuse non-zero face_index.
Werner Lemberg964317e2013-09-25 09:22:40 +020061
suzuki toshiyaac0f4452013-09-25 10:57:17 +090062 Suggested by Akira Tagoh, see
63
64 http://lists.gnu.org/archive/html/freetype/2013-09/msg00030.html
65
Werner Lemberg964317e2013-09-25 09:22:40 +020066 * src/bdf/bdfdrivr.c (BDF_Face_Init): Return `Invalid_Argument'
67 error if the font could be opened but non-zero `face_index' is
68 given.
suzuki toshiyaac0f4452013-09-25 10:57:17 +090069 * src/pcf/pcfdrivr.c (PCF_Face_Init): Ditto.
70
71 * src/type42/t42objs.c (T42_Face_Init): Remove unrequired FT_UNUSED
Werner Lemberg964317e2013-09-25 09:22:40 +020072 macro for `face_index' because it is validated later.
suzuki toshiyaac0f4452013-09-25 10:57:17 +090073
Werner Lemberg4de77872013-09-23 22:10:08 +0200742013-09-23 Werner Lemberg <wl@gnu.org>
75
76 Fix Savannah bug #40090.
77
78 * src/autofit/afcjk.c (af_cjk_metrics_scale): Revert commit
79 306f8c5d (from 2013-08-25) affecting this function.
80
Werner Lemberg5a4c5a52013-09-22 22:37:26 +0200812013-09-22 Werner Lemberg <wl@gnu.org>
82
83 [autofit] Disunify Cyrillic and Greek handling from Latin.
84
85 * src/autofit/afscript.h: Add Cyrillic and Greek.
86
87 * src/autofit/afblue.dat (AF_BLUE_STRINGSET_GREK,
88 AF_BLUE_STRINGSET_CYRL): Add blue zones for Greek and Cyrillic.
89 (AF_BLUE_STRINGSET_LATN): Fix typo.
90 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
91
92 * src/autofit/aflatin.c (af_grek_uniranges, af_cyrl_uniranges): New
93 arrays.
94 (af_grek_script_class, af_cyrl_script_class): New scripts.
95 * src/autofit/aflatin.h: Updated.
96
Werner Lemberg2cca9662013-09-20 07:23:34 +0200972013-09-20 Werner Lemberg <wl@gnu.org>
98
99 * docs/CHANGES: Updated.
100
Behdad Esfahbod31e726d2013-09-20 07:20:53 +02001012013-09-20 Behdad Esfahbod <behdad@behdad.org>
102
103 Fix vertical size of emboldened glyphs.
104
105 Cf. https://bugzilla.gnome.org/show_bug.cgi?id=686709
106
107 * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Adjust `horiBearingY'
108 also.
109
Alexei Podtelezhnikov52381c12013-09-11 23:25:56 -04001102013-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
111
112 * include/freetype/ftoutln.h: Correct FT_Outline_Get_Orientation
113 algorithm description.
114
Werner Lemberg3f542492013-09-11 23:08:31 +02001152013-09-11 Werner Lemberg <wl@gnu.org>
116
117 [autofit] Improve Hebrew rendering.
118
119 This change introduces a new blue zone property
120 `AF_BLUE_PROPERTY_LATIN_LONG' to make the auto-hinter ignore short
121 top segments.
122
123 * src/autofit/afblue.dat: Fix Hebrew blue strings.
124 Use AF_BLUE_PROPERTY_LATIN_LONG for AF_BLUE_STRING_HEBREW_TOP.
125
126 * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_LONG): New macro.
127
128 * src/autofit/afblue.c, src/autofit/afblue.h: Updated.
129
130 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle
131 `AF_LATIN_IS_LONG_BLUE'.
132
133 * src/autofit/aflatin.h (AF_LATIN_IS_LONG_BLUE): New macro.
134
Werner Lemberg85a7fdf2013-08-29 21:03:05 +02001352013-08-28 Behdad Esfahbod <behdad@google.com>
136
137 [sfnt] Fix frame access while reading WOFF table directory.
138
139 * src/sfnt/sfobjs.c (woff_open_font): Using single memory frame
140 while reading the directory entries for the whole loop.
141
1422013-08-29 Werner Lemberg <wl@gnu.org>
Werner Lembergd689d1c2013-08-29 17:53:40 +0200143 Behdad Esfahbod <behdad@google.com>
144
145 Implement support for WOFF containers.
146
147 We simply synthesize a SFNT from the WOFF, create a memory stream
148 for the new data, and load the SFNT as usual.
149
150 Does NOT add any API to access WOFF metadata or private blocks.
151
152 * include/freetype/internal/tttypes.h (WOFF_HeaderRec,
153 WOFF_TableRec): New structures.
154
155 * include/freetype/tttags.h (TTAG_wOFF): New macro.
156
157 * src/base/ftobjs.c (FT_Open_Face): Set `stream' after calling
158 `open_face'.
159
160 * src/sfnt/sfobjs.c [FT_CONFIG_OPTION_SYSTEM_ZLIB]: Include
161 `FT_GZIP_H'.
162 (WRITE_BYTE, WRITE_USHORT, WRITE_ULONG): New temporary macros for
163 writing to a stream.
164 (sfnt_stream_close, compare_offsets, woff_open_font): New functions.
165 (sfnt_open_font): Handle `TTAG_wOFF'.
166 (sfnt_init_face): Set `stream' after calling `sfnt_open_font'.
167
168 * src/truetype/ttobjs.c (tt_face_init): Set `stream' after calling
169 `sfnt->init_face'.
170
171 * src/base/ftobjs.c (open_face): Use a pointer to FT_Stream as an
172 argument so that a changed stream survives.
173 Update callers.
174
1752013-08-28 Werner Lemberg <wl@gnu.org>
Werner Lemberge0f39ae2013-08-28 17:34:01 +0200176
Werner Lembergdc240522013-08-29 17:53:24 +0200177 [gzip] New function `FT_Gzip_Uncompress'.
178
179 This is modeled after zlib's `uncompress' function. We need this
180 for WOFF support.
181
182 * include/freetype/ftgzip.h, src/gzip/ftgzip.c (FT_Gzip_Uncompress):
183 New function.
184
185 * src/gzip/rules.mk: Rewrite to better reflect dependencies.
186
1872013-08-28 Werner Lemberg <wl@gnu.org>
188
Werner Lemberg5195ecd2013-08-28 17:41:21 +0200189 [autofit] Fix `make multi' compilation.
190
191 * src/autofit/afblue.cin, src/autofit/afblue.c: Don't include
192 `afblue.h' but `aftypes.h'.
193 * src/autofit/afcjk.c: Don't include `aftypes.h' but `afglobal.h'.
194
1952013-08-28 Werner Lemberg <wl@gnu.org>
196
Werner Lemberge0f39ae2013-08-28 17:34:01 +0200197 [autofit] Fix C++ compilation.
198
199 * src/autofit/afglobal.c (af_face_globals_get_metrics),
200 src/autofit/afdummy.c (af_dflt_script_class), src/autofit/afindic.c
201 (af_deva_script_class): Use proper casts.
202
Behdad Esfahbodbd3849e2013-08-27 21:43:38 +02002032013-08-27 Behdad Esfahbod <behdad@google.com>
204
Behdad Esfahbodc799dd62013-08-27 21:46:03 +0200205 * src/sfnt/ttload.c (tt_face_load_font_dir): Fix sign typos.
206
2072013-08-27 Behdad Esfahbod <behdad@google.com>
208
Behdad Esfahbodbd3849e2013-08-27 21:43:38 +0200209 FT_Open_Face: Improve external stream handling.
210
211 If the font's `clazz->init_face' function wants to swap to new
212 stream, handling of whether original stream was external could
213 result to either memory leak or double free. Mark externality into
214 face flags before calling `init_face' such that the clazz can handle
215 external streams properly.
216
217 * src/base/ftobjs.c (FT_Open_Face): Move code to set
218 FT_FACE_FLAG_EXTERNAL_STREAM to...
219 (open_face): This function.
220
Werner Lemberg5e53db22013-08-27 18:37:39 +02002212013-08-27 Werner Lemberg <wl@gnu.org>
222
Werner Lembergbcd8c0b2013-08-27 21:36:03 +0200223 Remove `FT_SqrtFixed' function.
224
225 It's no longer used.
226
227 * include/freetype/internal/ftcalc.h, src/base/ftcalc.c: Do it.
228
2292013-08-27 Werner Lemberg <wl@gnu.org>
230
Werner Lemberg5e53db22013-08-27 18:37:39 +0200231 [autofit] While tracing, report script names instead of ID values.
232
233 * src/autofit/afglobal.c (af_script_names) [FT_DEBUG_LEVEL_TRACE]:
234 New array.
235 * src/autofit/afglobal.h: Updated.
236
237 * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
238 af_cjk_hint_edges): Use `af_script_names'.
239 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
240 af_latin_hint_edges): Ditto.
241
Werner Lemberg92f5a042013-08-26 09:22:27 +02002422013-08-26 Werner Lemberg <wl@gnu.org>
243
Werner Lemberg278f64b2013-08-26 20:20:03 +0200244 [autofit] Report used script while hinting a glyph.
245
246 * src/autofit/afcjk.c (af_cjk_hint_edges), src/autofit/aflatin.c
247 (af_latin_hint_edges): Implement it.
248
2492013-08-26 Werner Lemberg <wl@gnu.org>
250
Werner Lemberg371f5c32013-08-26 20:11:24 +0200251 [autofit] Add support for Hebrew script.
252
253 * src/autofit/afblue.dat: Add blue strings for Hebrew.
254 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
255
256 * src/autofit/aflatin.c (af_hebr_uniranges): New array.
257 (af_hebr_script_class): New script.
258 * src/autofit/aflatin.h, src/autofit/afscript.h: Updated.
259
2602013-08-26 Werner Lemberg <wl@gnu.org>
261
Werner Lemberg098121d2013-08-26 18:54:05 +0200262 [autofit] Improve tracing messages.
263
264 * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Mention script
265 ID in tracing message.
266 (af_cjk_metrics_init_blues): Initialize `axis' outside of the inner
267 loop.
268 Improve tracing messages.
269 (af_cjk_hint_edges) [FT_DEBUG_LEVEL_TRACE]: New variable
270 `num_actions' to count hinting actions.
271 Improve tracing messages.
272
273 * src/autofit/aflatin.c (af_latin_metrics_init_widths): Mention
274 script ID in tracing message.
275 (af_latin_metrics_init_blues, af_latin_hint_edges): Improve tracing
276 messages.
277
2782013-08-26 Werner Lemberg <wl@gnu.org>
279
Werner Lembergffee64a2013-08-26 12:55:48 +0200280 Better tracing of loaded glyphs.
281
Dave Arnold3a2cb0f2013-09-29 16:17:02 +0200282 Previously, the loading of a glyph was traced at level 4, if at all.
Werner Lembergffee64a2013-08-26 12:55:48 +0200283 With this change, all font loading routines emit a tracing message
284 at level 1, making it easier to select tracing output (for example
285 using F2_DEBUG="any:1 afhints:7 aflatin:7").
286
287 * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Add tracing message.
288 * src/cff/cffdrivr.c (cff_glyph_load): Ditto.
289 * src/cff/cffgload.c (cff_decoder_prepare): Improve tracing
290 messages.
291 * src/cid/cidgload.c (cid_load_glyph): Use level 1 for tracing
292 message.
293 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Ditto.
294 * src/pfr/pfrobjs.c (pfr_slot_load): Add tracing message.
295 * src/truetype/ttgload.c (TT_Load_Glyph): Ditto.
296 * src/type1/t1gload.c (T1_Load_Glyph): Ditto.
297 * src/type42/t42objs.c (T42_GlyphSlot_Load): Ditto.
298 * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
299
3002013-08-26 Werner Lemberg <wl@gnu.org>
301
Werner Lemberg33655a92013-08-26 09:58:50 +0200302 [autofit] Fix script selection.
303
304 * src/autofit/afglobal.c (af_face_globals_get_metrics): Use
305 `AF_SCRIPT_DFLT', not value 0.
306 Simplify code.
307
308 * src/autofit/afscript.h: Sort by script name.
309
3102013-08-26 Werner Lemberg <wl@gnu.org>
311
Werner Lemberg92f5a042013-08-26 09:22:27 +0200312 [autofit] Make `dummy' hinter work as expected.
313
314 * src/autofit/afdummy.c (af_dummy_hints_init): Properly set scaling
315 information.
316 (af_dummy_hints_apply): Scale the glyphs.
317
Werner Lemberg8b8be782013-08-25 08:01:41 +02003182013-08-25 Werner Lemberg <wl@gnu.org>
319
Werner Lembergc1eb4452013-08-25 19:47:26 +0200320 [autofit] Make `cjk' module use blue stringsets.
321
322 * src/autofit/afcjk.c (AF_CJK_MAX_TEST_CHARACTERS): Removed.
323 (af_cjk_hani_blue_chars): Removed.
324 (AF_CJK_BLUE_TYPE_*): Removed.
325 (af_cjk_metrics_init_blues): Replace AF_CJK_MAX_TEST_CHARACTERS with
326 AF_BLUE_STRING_MAX_LEN.
327 Change loops to use offsets (in file `afblue.h') into the new arrays
Dave Arnold3a2cb0f2013-09-29 16:17:02 +0200328 `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
Werner Lembergc1eb4452013-08-25 19:47:26 +0200329 Instead of three dimensions (as used in the old blue string array)
330 we now use properties to do the same, saving one loop nesting level.
331
332 * src/autofit/afcjk.h: Remove old enumeration values superseded by
333 the new data in `afblue.h'.
334 (AF_CJK_IS_TOP_BLUE, AF_CJK_IS_HORIZ_BLUE, AF_CJK_IS_FILLED_BLUE,
335 AF_CJK_IS_RIGHT_BLUE): New macros, to be used in
336 `af_cjk_metrics_init_blues'.
337 (AF_CJK_BLUE_IS_RIGHT): Remove this now redundant enum value.
338 (AF_CJK_BLUE_IS_TOP): Renamed to...
339 (AF_CJK_BLUE_TOP): This.
340 (AF_CJK_MAX_BLUES): Remove.
341 (AF_CJKAxisRec): Updated.
342
3432013-08-25 Werner Lemberg <wl@gnu.org>
344
Werner Lemberg5c4a23a2013-08-25 19:29:07 +0200345 [autofit] Typo.
346
347 * src/autofit/afblue.hin, src/autofit/afblue.c (GET_UTF8_CHAR): Use
348 cast.
349
3502013-08-25 Werner Lemberg <wl@gnu.org>
351
Werner Lemberg306f8c52013-08-25 13:07:08 +0200352 [autofit] Synchronize `cjk' with `latin' module (and vice versa).
353
354 * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Add tracing
355 messages.
356 (af_cjk_metrics_init_blues): Don't pass blue string array as
357 argument but use the global array directly.
358 Use `outline' directly.
359 Update and add tracing messages.
360 (af_cjk_metrics_init): Simplify code.
361 (af_cjk_metrics_scale_dim): Improve tracing message.
362 (af_cjk_metrics_scale): Synchronize.
363
364 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
365 af_latin_metrics_init_blues): Improve and add tracing messages.
366
3672013-08-25 Werner Lemberg <wl@gnu.org>
368
Werner Lemberg0975d682013-08-25 08:37:47 +0200369 [autofit] Make `latin' module use blue stringsets.
370
371 * src/autofit/aflatin.c (AF_LATIN_MAX_TEST_CHARACTERS): Removed.
372 (af_latin_blue_chars): Removed.
373 (af_latin_metrics_init_blues): Replace AF_LATIN_MAX_TEST_CHARACTERS
374 with AF_BLUE_STRING_MAX_LEN.
375 Change loops to use offsets (in file `afblue.h') into the new arrays
376 `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
377 Use `AF_LATIN_IS_SMALL_TOP_BLUE' macro.
378
379 * src/autofit/aflatin.h: Remove old enumeration values superseded by
380 the new data in `afblue.h'.
381 (AF_LATIN_IS_TOP_BLUE): Updated definition.
382 (AF_LATIN_IS_SMALL_TOP_BLUE): New macro.
383 (AF_LATIN_MAX_BLUES): Remove.
384 (AF_LatinAxisRec): Updated.
385
3862013-08-25 Werner Lemberg <wl@gnu.org>
387
Werner Lembergdb3e5b92013-08-25 08:23:22 +0200388 [autofit] Add blue stringsets.
389
390 * src/autofit/aftypes.h: Include `afblue.h'.
391 (AF_ScriptClassRec): Add `blue_stringset' field.
392 (AF_DEFINE_SCRIPT_CLASS): Updated.
393
394 * src/autofit/autofit.c: Include `afblue.c'.
395
396 * src/autofit/afcjk.c (af_hani_script_class), src/autofit/afdummy.c
397 (af_dflt_script_class), src/autofit/afindic.c
398 (af_deva_script_class), src/autofit/aflatin.c
399 (af_latn_script_class), src/autofit/aflatin2.c
400 (af_ltn2_script_class): Updated.
401
402 * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afblue.c'.
403
4042013-08-25 Werner Lemberg <wl@gnu.org>
405
Werner Lemberg8b8be782013-08-25 08:01:41 +0200406 [autofit] Introduce data file for blue strings.
407
408 The idea is to have a central file which gets processed by a Perl
409 script to create proper `.c' and `.h' files using templates. There
410 are two other reasons to do that:
411
412 . The data file should be easily readable. We use UTF-8 encoding
413 which then gets converted to single bytes.
414
415 . Since the number of supported scripts will increase soon, the
416 current usage of blue string arrays is a waste of space. Using
417 the Perl script it is possible to imitate jagged arrays,
418 defining enumeration constants as offsets into the arrays.
419
420 This commit only adds files without changing any functionality.
421
422 * src/autofit/afblue.dat: New data file.
423 * src/tools/afblue.pl: New Perl script for processing `afblue.dat'.
424
425 * src/autofit/afblue.cin, src/autofit/afblue.hin: New template files
426 for...
427 * src/autofit/afblue.c, src/autofit/afblue.c: New source files.
428 To avoid a dependency on Perl, we add them too.
429
Alexei Podtelezhnikovfc32e1c2013-08-19 22:57:05 -04004302013-08-19 Alexei Podtelezhnikov <apodtele@gmail.com>
431
Werner Lemberg71c0ad62013-08-27 21:30:09 +0200432 [base] Enable new algorithm for `BBox_Cubic_Check'.
Alexei Podtelezhnikovfc32e1c2013-08-19 22:57:05 -0400433
Werner Lemberg71c0ad62013-08-27 21:30:09 +0200434 * src/base/ftbbox.c: Enable new BBox_Cubic_Check algorithm, remove
435 the old one.
436 Improve comments.
Alexei Podtelezhnikovfc32e1c2013-08-19 22:57:05 -0400437
Werner Lemberg6bfa2632013-08-18 18:34:05 +02004382013-08-18 Werner Lemberg <wl@gnu.org>
439
Werner Lemberg4af44442013-08-18 18:46:30 +0200440 * builds/unix/unix-def.in (freetype2.pc): Don't set executable bit.
441
4422013-08-18 Werner Lemberg <wl@gnu.org>
443
Werner Lemberg6bfa2632013-08-18 18:34:05 +0200444 Fix Savannah bug #39804.
445
446 * builds/unix/configure.raw (LIBPNG): Define and export.
447 * builds/unix/freetype-config.in, builds/unix/freetype2.in: Handle
448 libpng.
449
Alexei Podtelezhnikov32a7d872013-08-17 22:19:21 -04004502013-08-17 Alexei Podtelezhnikov <apodtele@gmail.com>
451
452 [base] Clean up BBox_Conic_Check.
453
454 * src/base/ftbbox.c (BBox_Conic_Check): Remove redundant checks for
455 extremum at the segment ends, which are already within the bbox.
Dave Arnold3a2cb0f2013-09-29 16:17:02 +0200456 Slightly modify calculations.
Alexei Podtelezhnikov32a7d872013-08-17 22:19:21 -0400457
Alexei Podtelezhnikov1a9c3d12013-08-15 22:51:42 -04004582013-08-15 Alexei Podtelezhnikov <apodtele@gmail.com>
459
460 [base] Finish experimental (disabled) BBox_Cubic_Check implementation.
461
462 * src/base/ftbbox.c (BBox_Cubic_Check): Scale arguments to improve
Dave Arnold3a2cb0f2013-09-29 16:17:02 +0200463 accuracy and avoid overflows.
Alexei Podtelezhnikov1a9c3d12013-08-15 22:51:42 -0400464
Alexei Podtelezhnikov61a65512013-08-13 22:28:57 -04004652013-08-13 Alexei Podtelezhnikov <apodtele@gmail.com>
466
467 [base] Refactor experimental (disabled) BBox_Cubic_Check.
468
469 * src/base/ftbbox.c (BBox_Cubic_Check): Implement the minimum search
Alexei Podtelezhnikov1a9c3d12013-08-15 22:51:42 -0400470 as the mirror image of the maximum search implemented here...
471 (update_max): New function.
Alexei Podtelezhnikov61a65512013-08-13 22:28:57 -0400472
John Tytgat9bcfab82013-08-06 08:55:19 +02004732013-08-06 John Tytgat <John.Tytgat@esko.com>
474
475 Fix Savannah bug #39702.
476
477 * src/cff/cffload.c (cff_index_get_pointers): Check for `cur_offset
478 != 0'; this stronger test is mandated by the CFF specification.
479 Fix test for INDEX structures which have one or more empty entries
480 at the end.
481
Werner Lembergcc25e3a2013-08-05 08:46:15 +02004822013-08-05 Werner Lemberg <wl@gnu.org>
483
Werner Lemberga32682f2013-08-06 00:21:46 +0200484 Fix gcc pragmas, part 2.
485
486 * src/truetype/ttinterp.c (TT_MulFix14_long_long,
487 TT_DotFix14_long_long): `#pragma gcc diagnostic {push,pop}' has been
488 introduced with gcc version 4.6.
489
4902013-08-05 Werner Lemberg <wl@gnu.org>
491
Werner Lemberg69e524d2013-08-05 23:38:32 +0200492 Fix gcc pragmas.
493
494 * src/truetype/ttinterp.c (TT_MulFix14_long_long,
495 TT_DotFix14_long_long): Older gcc versions don't accept diagnostic
496 pragmas within a function body.
497
4982013-08-05 Werner Lemberg <wl@gnu.org>
499
Werner Lemberg9e6de362013-08-05 16:37:21 +0200500 Fix Savannah bug #39700.
501
502 * builds/unix/ftconfig.h: Synchronize with
503 `include/freetype/config/ftconfig.h'.
504
505 * builds/vms/ftconfig.h: Ditto.
506 Make the differences to the master `ftconfig.h' file as small as
507 possible for easier maintainance.
508
5092013-08-05 Werner Lemberg <wl@gnu.org>
510
Werner Lembergcc25e3a2013-08-05 08:46:15 +0200511 [autofit] Improve handling of `near' points.
512
513 Points which are very near to each other are now marked as such.
514 The `weak' flag is then computed by using the `in' vector of the
515 first and the `out' vector of the last point of a group of near
516 points.
517
518 For example, this fixes the rendering of glyph `Oslash' in
519 `Roboto-Thin.ttf'.
520
521 * src/autofit/afhints.h (AF_Flags): New value `AF_FLAGS_NEAR'.
522
523 * src/autofit/afhints.c (af_glyph_hints_reload): Introduce
524 the heuristic value `near_limit' to decide whether the current point
525 is near to the previous one, then set `AF_FLAG_NEAR' accordingly.
526 Store good `in' vector (of last non-near point) in
527 `last_good_in_{x,y}' and use it as an argument to
528 `ft_corner_is_flat' if necessary.
529
Werner Lemberg74a9b672013-08-02 14:53:32 +02005302013-08-02 Werner Lemberg <wl@gnu.org>
531
Werner Lemberg0d28a7d2013-08-02 22:59:43 +0200532 * include/freetype/ftcffdrv.h: Improve documentation.
533 This is based on blog entries from David Lemon and Dave Arnold (both
534 from Adobe) with kind permission. Dave also helped in
535 proof-reading.
536
5372013-08-02 Werner Lemberg <wl@gnu.org>
538
Werner Lemberg456cc442013-08-02 20:25:21 +0200539 [autofit] Move declaration of scripts into separate file.
540
541 This has the benefit that we don't need to duplicate the data at
542 different places.
543
544 * src/autofit/afscript.h: New file.
545
546 * src/autofit/aftypes.h (AF_Script): Include `afscript.h' to define
547 the enumeration values.
548
549 * src/autofit/afglobal.c: Include `afscript.h' to get the script
550 specific header files.
551 (af_script_classes): Include `afscript.h' to fill this array.
552
553 * src/autofit/afpic.c: Include `afscript.h' to get the script
554 specific header files.
555 (autofit_module_class_pic_init): Include `afscript.h' for
556 initialization.
557 * src/autofit/afpic.h (AF_SCRIPT_CLASSES_COUNT,
558 AF_SCRIPT_CLASSES_REC_COUNT): Removed. Use `AF_SCRIPT_MAX' instead.
559
560 * src/autofit/rules.mk (AUTOF_DRV_H): Updated.
561
5622013-08-02 Werner Lemberg <wl@gnu.org>
563
Werner Lemberg773601d2013-08-02 19:51:17 +0200564 [autofit] Move declaration of writing systems into separate file.
565
566 This has the benefit that we don't need to duplicate the data at
567 different places.
568
569 * src/autofit/afwrtsys.h: New file.
570
571 * src/autofit/aftypes.h (AF_WritingSystem): Include `afwrtsys.h' to
572 define the enumeration values.
573
574 * src/autofit/afglobal.c: Include `afwrtsys.h' to get the writing
575 system specific header files.
576 Include `afpic.h'.
577 (af_writing_system_classes): Include `afwrtsys.h' to fill this
578 array.
579
580 * src/autofit/afpic.c: Include `afwrtsys.h' to get the writing
581 system specific header files.
582 (autofit_module_class_pic_init): Include `afwrtsys.h' for
583 initialization.
584 * src/autofit/afpic.h (AF_WRITING_SYSTEM_CLASSES_COUNT,
585 AF_WRITING_SYSTEM_CLASSES_REC_COUNT): Removed. Use
586 `AF_WRITING_SYSTEM_MAX' instead.
587
5882013-08-02 Werner Lemberg <wl@gnu.org>
589
Werner Lemberg74a9b672013-08-02 14:53:32 +0200590 [sfnt] Fix compilation with g++.
591
592 * src/sfnt/pngshim.c (error_callback, read_data_from_FT_stream): Use
593 cast.
594 (Load_SBit_Png): Pacify compiler.
595
Werner Lemberg89a529f2013-08-02 14:50:23 +02005962013-08-02 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
597 Werner Lemberg <wl@gnu.org>
598
599 [autofit] Fix `make multi'.
600
601 * include/freetype/config/ftconfig.h (FT_LOCAL_ARRAY,
602 FT_LOCAL_ARRAY_DEF): New macros.
603
604 * src/autofit/afglobal.c (af_writing_system_classes,
605 af_script_classes): Use FT_LOCAL_ARRAY_DEF.
606 * src/autofit/afglobal.h: Declare `af_writing_system_classes' and
607 `af_script_classes'.
608 * src/autofit/afloader.c: Include `afpic.h'.
609
Werner Lemberge8ed2d62013-08-01 12:20:20 +02006102013-08-01 Werner Lemberg <wl@gnu.org>
611
612 Another round of cppcheck nitpicks.
613
614 The call was (from the top-level of the FreeType tree):
615
616 cppcheck --force \
617 --enable=all \
618 -I /usr/include \
619 -I /usr/local/include \
620 -I /usr/lib/gcc/i586-suse-linux/4.7/include \
621 -I include \
622 -I include/freetype \
623 -I include/freetype/config \
624 -I include/freetype/internal \
625 -DFT2_BUILD_LIBRARY \
626 . &> cppcheck.log
627
628 using cppcheck git commit f7e93f99.
629
630 Note that cppcheck still can't handle `#include FOO' (with `FOO' a
631 macro).
632
633 */* Improve variable scopes.
634 */* Remove redundant initializations which get overwritten.
635
636 * src/gxvalid/*: Comment out redundant code or guard it with
637 FT_DEBUG_LEVEL_TRACE.
638
Werner Lemberg5d6a3602013-07-30 23:17:04 +02006392013-07-30 Werner Lemberg <wl@gnu.org>
640
Werner Lemberg72f5ff52013-07-31 22:49:29 +0200641 [autofit] Introduce `writing systems'.
642
643 This patch adds a new top level to the auto-hinter's script class
644 hierarchy. It defines `writing systems' which can contain multiple
645 scripts.
646
647 For example, the `latin' writing system (in file `aflatin.c') is
648 able to support scripts like Latin, Cyrillic, Armenian, etc., which
649 can be handled similarly.
650
651 Scripts are now named using four-letter OpenType tags.
652
653 * src/autofit/aftypes.h (AF_ScriptClassRec): Move relevant members
654 to...
655 (AF_WritingSystemClassRec): This new structure. It holds pointers
656 to functions which can be shared among related scripts.
657 (AF_WritingSystem): New enumeration.
658 (AF_Script): Revised values using four-letter tags.
659 (AF_DEFINE_WRITING_SYSTEM_CLASS): New macro.
660 (AF_DEFINE_SCRIPT_CLASS): Updated.
661
662 * src/autofit/afglobal.c (af_writing_system_classes): New global,
663 constant array.
664 (af_script_classes): Updated.
665 (af_face_globals_free): Updated.
666 Remove assertion.
667 (af_face_globals_get_metrics): Updated.
668
669 * src/autofit/afglobal.h (AF_SCRIPT_FALLBACK)
670 [!AF_CONFIG_OPTION_CJK]: Handle this case.
671
672 * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
673 Updated.
674
675 * src/autofit/afpic.c (autofit_module_class_pic_init): Updated;
676 initialize structures for both writing systems and scripts.
677 * src/autofit/afpic.h: Updated.
678 (AF_WRITING_SYSTEM_CLASSES_GET): New macro.
679
680 * src/autofit/afcjk.c (af_cjk_writing_system_class): New writing
681 system.
682 (af_cjk_uniranges): Renamed to...
683 (af_hani_uniranges): This.
684 (af_cjk_script_class): Reduced and renamed to...
685 (af_hani_script_class): This.
686 * src/autofit/afcjk.h: Updated.
687
688 * src/autofit/afdummy.c (af_dummy_writing_system_class): New writing
689 system.
690 (af_dummy_script_class): Reduced and renamed to...
691 (af_dflt_script_class): This.
692 * src/autofit/afdummy.h: Updated.
693
694 * src/autofit/afindic.c (af_indic_writing_system_class): New writing
695 system.
696 (af_indic_uniranges): Renamed to...
697 (af_deva_uniranges): This.
698 (af_indic_script_class): Reduced and renamed to...
699 (af_deva_script_class): This.
700 * src/autofit/afcjk.h: Updated.
701
702 * src/autofit/aflatin.c (af_latin_writing_system_class): New writing
703 system.
704 (af_latin_uniranges): Renamed to...
705 (af_latn_uniranges): This.
706 (af_latin_script_class): Reduced and renamed to...
707 (af_latn_script_class): This.
708 * src/autofit/aflatin.h: Updated.
709
710 * src/autofit/aflatin2.c (af_latin2_writing_system_class): New
711 writing system.
712 (af_latin2_uniranges): Renamed to...
713 (af_ltn2_uniranges): This.
714 Synchronize ranges with `latin'.
715 (af_latin2_script_class): Reduced and renamed to...
716 (af_ltn2_script_class): This.
717 * src/autofit/aflatin2.h: Updated.
718
7192013-07-30 Werner Lemberg <wl@gnu.org>
720
Werner Lemberg5d6a3602013-07-30 23:17:04 +0200721 [autofit] Variable renaming.
722
723 * src/autofit/aftypes.h (AF_ScriptMetricsRec):
724 s/clazz/script_class/.
725 Update all users.
726
suzuki toshiya2b29ed62013-07-30 13:55:29 +09007272013-07-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
728
729 Ignore libpng-config under cross-building configuration,
730 because it will return the flags for the hosting environment.
731
732 * builds/unix/configure.raw: Ignore libpng-config when
733 `cross_compiling' == yes.
734
suzuki toshiyaf2e7f1e2013-07-30 13:32:57 +09007352013-07-30 Behdad Esfahbod <behdad@google.com>
736
737 Prevent division by zero by a transparent color.
738
739 * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra):
740 Return 0 immediately, when alpha channel is zero.
741
Behdad Esfahbod21c32b02013-07-25 21:53:18 +02007422013-07-25 Behdad Esfahbod <behdad@google.com>
743
744 Add FT_FACE_FLAG_COLOR and FT_HAS_COLOR.
745
746 Also disambiguate Google's color bitmap tables.
747
748 * include/freetype/freetype.h (FT_FACE_FLAG_COLOR, FT_HAS_COLOR):
749 New macros.
750
751 * include/freetype/internal/tttypes.h (TT_SbitTableType): Add
752 TT_SBIT_TABLE_TYPE_CBLC.
753
754 * src/sfnt/sfobjs.c (sfnt_load_face): Handle FT_FACE_FLAG_COLOR.
755
756 * src/sfnt/ttsbit.c (tt_face_load_sbit,
757 tt_face_load_strike_metrics, tt_face_load_sbit_image): Handle
758 TT_SBIT_TABLE_TYPE_CBLC.
759
suzuki toshiyab4725cb2013-07-24 14:25:39 +09007602013-07-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
761
762 [sfnt] Fix for `make multi' target.
763
764 * src/sfnt/pngshim.c (Load_SBit_Png): Use FT_LOCAL_DEF().
765
Werner Lemberg6a7df622013-07-20 10:48:37 +02007662013-07-20 Werner Lemberg <wl@gnu.org>
767
768 * docs/INSTALL.GNU: Updated.
769
Behdad Esfahbodff269522013-07-20 08:02:39 +02007702013-07-20 Behdad Esfahbod <behdad@google.com>
771
772 [sfnt] Fix `sbix' table version handling.
773
774 * src/sfnt/ttsbit.c (tt_face_load_sbit) [TT_SBIT_TABLE_TYPE_SBIX]:
775 USHORT version numbers are to be considered as `minor'.
776
Werner Lemberg05c14212013-07-19 23:11:23 +02007772013-07-19 Werner Lemberg <wl@gnu.org>
778
779 [autofit] Fix segment classification for blue zones.
780
781 The old code (essentially unchanged since the very beginning)
782 incorrectly handled this configuration
783
784 x -o- x
785 / \
786 / \
787 / \
788 o o
789
790 as flat and this
791
792 o o
793 / /
794 x| x|
795 | |
796 o---------------o
797
Dave Arnold3a2cb0f2013-09-29 16:17:02 +0200798 as round. (`o' and `x' are on and off points, respectively).
Werner Lemberg05c14212013-07-19 23:11:23 +0200799
800 This is a major change which should improve the rendering results
Dave Arnold3a2cb0f2013-09-29 16:17:02 +0200801 enormously for many TrueType fonts, especially in the range approx.
Werner Lemberg05c14212013-07-19 23:11:23 +0200802 20-40ppem, fixing the appearance of many overshoots.
803
804 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Look at the
805 first and last points of the segment, not the points right before
806 and after.
807
8082013-07-19 Behdad Esfahbod <behdad@google.com>
Werner Lemberg01705392013-07-18 13:13:12 +0200809
Behdad Esfahbod778a7e62013-07-19 14:28:28 +0200810 [sfnt] `sbix' fix-ups.
811
812 * src/sfnt/sfobjs.c (sfnt_load_face): Apple's `sbix' color bitmaps
813 are rendered scaled and then the `glyf' outline rendered on top. We
814 don't support that yet, so just ignore the `glyf' outline and
815 advertise it as a bitmap-only font.
816
817 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
818 [TT_SBIT_TABLE_TYPE_SBIX]: Return metrics in 26.6 units.
819 (tt_face_load_sbix_image): Typo.
820
8212013-07-18 Behdad Esfahbod <behdad@google.com>
822
Werner Lemberg01705392013-07-18 13:13:12 +0200823 [sfnt] Add support for Apple's `sbix' color bitmap table.
824
825 * include/freetype/internal/tttypes.h (TT_SBit_MetricsRec): Widen
826 fields to FT_Short and FT_UShort, respectively.
827 (TT_SBitTableType): New enumeration.
828 (TT_FaceRec): Add `sbit_table_type' field.
829
830 * include/freetype/tttags.h (TTAG_sbix): New macro.
831
832 * src/sfnt/pngshim.c (Load_SBit_Png): Pass a more generic
833 FT_GlyphSlot argument instead FT_Bitmap.
834 Add flag to control map and metrics handling.
835 Update all users.
836
837 * src/sfnt/ttsbit.c: Include `ttmtx.h'.
838 (tt_face_load_eblc): Renamed to...
839 (tt_face_load_sbit): This.
840 Handlic `sbix' bitmaps.
841 (tt_face_free_eblc): Renamed to...
842 (tt_face_load_sbit): This.
843 Updated.
844 (tt_face_load_strike_metrics): Handle `sbix' bitmaps.
845 (tt_face_load_sbix_image): New function.
846 (tt_sbit_decoder_alloc_bitmap, tt_sbit_decoder_load_image,
847 tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
848 tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
849 tt_sbit_decoder_load_image, tt_sbit_decoder_load_bitmap): Don't pass
850 and handle load flags.
851 (tt_sbit_decoder_load_bitmap) [!FT_CONFIG_OPTION_USE_PNG]: Better
852 handle formats 17-19.
853 Move color to grayscale conversion to...
854 (tt_face_load_sbit_image): Here.
855 Handle `sbix' bitmaps.
856
857 * src/sfnt/pngshim.h: Updated.
858 * src/sfnt/ttsbit.h: Updated.
859 * src/sfnt/sfdriver.c: Updated.
860
Werner Lemberg274207e2013-07-18 12:38:57 +02008612013-07-18 Werner Lemberg <wl@gnu.org>
862
863 [sfnt] Ignore invalid magic number in `head' or `bhed'.
864
865 Other font engines seem to ignore it also. Problem reported by
866 Hin-Tak Leung <htl10@users.sourceforge.net>.
867
868 * src/sfnt/ttload.c (check_table_dir): Don't abort but warn only if
869 we have an invalid magic number.
870
Werner Lemberg9a7951d2013-07-16 15:25:24 +02008712013-07-16 Werner Lemberg <wl@gnu.org>
872
873 [smooth] Fix segfault caused by previous commit.
874
875 * src/smooth/ftgrays.c (gray_set_cell): Always compute
876 `ras.invalid'.
877
David Turnera5f33ee2013-07-16 12:40:03 +02008782013-07-16 David Turner <digit@google.com>
879
David Turner89929ec2013-07-16 13:36:07 +0200880 [smooth] Improve performance.
881
Dave Arnold3a2cb0f2013-09-29 16:17:02 +0200882 Provide a work-around for an ARM-specific performance bug in GCC.
David Turner89929ec2013-07-16 13:36:07 +0200883 This speeds up the rasterizer by more than 5%.
884
885 Also slightly optimize `set_gray_cell' and `gray_record_cell' (which
886 also improves performance on other platforms by a tiny bit (<1%).
887
888 * src/smooth/ftgrays.c (FT_DIV_MOD): New macro.
889 Use it where appropriate.
890
891 (gray_record_cell, gray_set_cell, gray_move_to,
892 gray_convert_glyph_inner): Streamline condition handling.
893
8942013-07-16 David Turner <digit@google.com>
895
David Turnerf66d48e2013-07-16 13:18:00 +0200896 [truetype] Add assembler code for TT_MulFix14 and TT_DotFix14.
897
898 This patch provides slightly optimized versions for ARM, x86, and
899 x86_64 CPUs if built with GCC.
900
901 Also remove some dead code.
902
903 * src/truetype/ttinterp.c (TT_MulFix14_arm, TT_MulFix14_long_long,
904 TT_DotFix14_long_long): New functions.
905
9062013-07-16 David Turner <digit@google.com>
907
David Turnerb2890882013-07-16 12:52:18 +0200908 Optimize FT_MulFix for x86_64 GCC builds.
909
910 This patch provides an optimized `FT_MulFix' implementation for
911 x86_64 machines when FreeType is built with GCC, or compatible
912 compilers like Clang.
913
914 Example:
915 bin/ftbench -p -t 5 -s 14 -f 0008 Arial.ttf
916
917 Before:
918
919 Load 4.863 us/op
920 Load_Advances (Normal) 4.816 us/op
921 Load_Advances (Fast) 0.028 us/op
922 Render 2.753 us/op
923 Get_Glyph 0.463 us/op
924 Get_CBox 0.077 us/op
925 Get_Char_Index 0.023 us/op
926 Iterate CMap 13.898 us/op
927 New_Face 12.368 us/op
928 Embolden 0.028 us/op
929 Get_BBox 0.302 us/op
930
931 After:
932
933 Load 4.617 us/op
934 Load_Advances (Normal) 4.645 us/op
935 Load_Advances (Fast) 0.027 us/op
936 Render 2.789 us/op
937 Get_Glyph 0.460 us/op
938 Get_CBox 0.077 us/op
939 Get_Char_Index 0.024 us/op
940 Iterate CMap 13.403 us/op
941 New_Face 12.278 us/op
942 Embolden 0.028 us/op
943 Get_BBox 0.301 us/op
944
945 * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
946 (FT_MulFix_x86_64): New function.
947
9482013-07-16 David Turner <digit@google.com>
949
David Turnera5f33ee2013-07-16 12:40:03 +0200950 Speed up ARMv7 support.
951
952 When building for ARMv7 with thumb2 instructions, the optimized
953 `FT_MulFix_arm' assembly routine was not being used.
954
955 The reason for this is in the `ftconfig.h' header, namely:
956
957 - The assembly routine uses the `smull' instruction which is not
958 available when generating Thumb-1 machine code. It is available
959 in Thumb-2 mode, though.
960
961 - The header was written a long time ago before Thumb-2 became
962 widely popular (e.g. with Android). So it simply doesn't use the
963 assembly routine if the `__thumb__' built-in macro is defined.
964
965 - When compiling in Thumb-2 mode, the compiler will define both
966 `__thumb__' and `__thumb2__'.
967
968 By checking for `(__thumb2__ || !__thumb__)', we ensure that the
969 assembly routine is only avoided when generating Thumb-1 code.
970
971 Given that this is performance-sensitive function, this improves
972 `ftbench' as follows on a Galaxy Nexus:
973
974 Before (us/op) After (us/op)
975
976 - loading Arial.ttf glyphs at 14 ppem [1]
977
978 Load 34.285 33.098
979
980 - same operation with the light auto-hinter [2]
981
982 Load 31.317 29.590
983
984 - same operation without hinting [3]
985
986 Load 6.143 5.376
987
988 - loading Arial.ttf advances at 14 ppem [4]
989
990 Load_Advances (normal) 34.216 33.016
991 Load_Advances (fast) 0.176 0.176
992
993 [1] ftbench -t 5 -p -s 14 -b a -f 0008 Arial.ttf
994 [2] ftbench -t 5 -p -s 14 -b a -r 1 -f 0028 Arial.ttf
995 [3] ftbench -t 5 -p -s 14 -b a -f 000a Arial.ttf
996 [4] ftbench -t 5 -p -s 14 -b b -f 0008 Arial.ttf
997
998 * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
999 (FT_MULFIX_ASSEMBLER): Fix handling for ARMv7.
1000
Werner Lemberge12fc772013-06-28 07:57:32 +020010012013-06-28 Werner Lemberg <wl@gnu.org>
1002
1003 * docs/CHANGES: Updated.
1004
Werner Lemberg680c1d42013-06-27 17:21:59 +020010052013-06-27 Werner Lemberg <wl@gnu.org>
1006
1007 * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix bitmap width guard.
1008
Werner Lembergc7cc9eb2013-06-25 07:24:02 +020010092013-06-25 Werner Lemberg <wl@gnu.org>
1010
Werner Lembergb8850fc2013-06-26 12:22:10 +02001011 [cff] Add darkening limit to `darkening-parameters'.
1012
1013 * src/cff/cffdrivr.c (cff_property_set): Add check.
1014
10152013-06-25 Werner Lemberg <wl@gnu.org>
1016
Werner Lemberg89ca1fd2013-06-25 23:28:02 +02001017 [cff] Add `darkening-parameters' property.
1018
1019 * include/freetype/ftcffdrv.h: Document it.
1020
1021 * src/cff/cffdrivr.c (cff_property_set, cff_property_get): Handle
1022 `darkening-parameters' property.
1023
1024 * src/cff/cf2font.h (CF2_FontRec): Add `darkenParams' array.
1025
1026 * src/cff/cf2font.c (cf2_computeDarkening): Add `darkenParams'
1027 argument and use it.
1028 Update all callers.
1029
1030 * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Copy
1031 `darken_params' values.
1032
1033 * src/cff/cffobjs.h (CFF_DriverRec): Add `darken_params' array.
1034
1035 * src/cff/cffobjs.c (cff_driver_init): Set default values for
1036 `darken_params'.
1037
10382013-06-25 Werner Lemberg <wl@gnu.org>
1039
Werner Lembergfad93262013-06-25 10:41:37 +02001040 [docmaker] Code shuffling.
1041
1042 * src/tools/docmaker/tohtml.py (re_url): Move regexp...
1043 * src/tools/docmaker/sources.py: ... to this file.
1044
10452013-06-25 Werner Lemberg <wl@gnu.org>
1046
Werner Lemberg8bdc4072013-06-25 10:20:53 +02001047 [docmaker] Remove unused functions.
1048
1049 * src/tools/docmaker/content.py (DocMarkup.get_start,
1050 DocBlock.get_markup_name): Removed.
1051 * src/tools/docmaker/tohtml.py (html_quote0, dump_html_code,
1052 HtmlFormatter.make_html_words): Removed.
1053
10542013-06-25 Werner Lemberg <wl@gnu.org>
1055
Werner Lembergffb8b472013-06-25 09:09:30 +02001056 * builds/freetype.mk (dll): Remove target.
1057
1058 Problem reported by Jörg Günnewig <joerg.guennewig@googlemail.com>.
1059
10602013-06-25 Werner Lemberg <wl@gnu.org>
1061
Werner Lembergc7cc9eb2013-06-25 07:24:02 +02001062 [docmaker] Recognise URLs.
1063
1064 * src/tools/docmaker/tohtml.py (re_url): New regular expression.
1065 (make_html_para): Use it.
1066
Werner Lemberg25b7da52013-06-19 10:23:36 +020010672013-06-19 Werner Lemberg <wl@gnu.org>
1068
Werner Lembergfe4f5712013-06-19 23:27:47 +02001069 * Version 2.5.0.1 released.
1070 ===========================
1071
1072
1073 Tag sources with `VER-2-5-0-1'.
1074
1075 * include/freetype/config/ftoption.h: Undefine
1076 CFF_CONFIG_OPTION_OLD_ENGINE.
1077 * devel/ftoption.h: Define CFF_CONFIG_OPTION_OLD_ENGINE.
1078
10792013-06-19 Werner Lemberg <wl@gnu.org>
1080
Werner Lemberg609f0ca2013-06-19 14:41:47 +02001081 * builds/unix/install.mk (install): Don't create `cache' directory.
1082
1083 Found by Peter Breitenlohner <peb@mppmu.mpg.de>.
1084
10852013-06-19 Werner Lemberg <wl@gnu.org>
1086
Werner Lemberg25b7da52013-06-19 10:23:36 +02001087 * Version 2.5.0 released.
1088 =========================
1089
1090
1091 Tag sources with `VER-2-5-0'.
1092
1093 * docs/VERSION.DLL: Update documentation and bump version number to
1094 2.5.0.
1095
1096 * README, Jamfile (RefDoc),
1097 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
1098 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
1099 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
1100 builds/win32/visualc/freetype.dsp,
1101 builds/win32/visualc/freetype.vcproj,
1102 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
1103 builds/win32/visualce/freetype.vcproj,
1104 builds/win32/visualce/index.html,
1105 builds/wince/vc2005-ce/freetype.vcproj,
1106 builds/wince/vc2005-ce/index.html,
1107 builds/wince/vc2008-ce/freetype.vcproj,
1108 builds/wince/vc2008-ce/index.html: s/2.4.12/2.5.0/, s/2412/250/.
1109
1110 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 5.
1111 (FREETYPE_PATCH): Set to 0.
1112
1113 * builds/unix/configure.raw (version_info): Set to 16:2:10.
1114
1115 * src/base/ftobjs.c (FT_Open_Face): Pacify compiler.
1116 * src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIRP): Ditto.
1117
Werner Lembergf56691a2013-06-18 10:17:48 +020011182013-06-18 Werner Lemberg <wl@gnu.org>
1119
1120 Fix Savannah bug #39269.
1121
1122 * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Free memory in
1123 case of reacollocation failures.
1124
Andrew Church67cf7a82013-06-18 09:35:34 +020011252013-06-18 Andrew Church <achurch+savannah@achurch.org>
1126
1127 Fix Savannah bug #39266.
1128
1129 If memory allocations fail at certain points while opening a font,
1130 FreeType can either crash due to a NULL dereference or leak memory.
1131
1132 * include/freetype/internal/ftobjs.c (FT_Face_InternalRec,
1133 FT_LibraryRec): Make `refcount' a signed integer. If, for example,
1134 FT_Open_Face() fails in a memory allocation before the face's
1135 reference count is set to 1, a subsequent `FT_Done_Library' call
1136 would otherwise loop over `FT_Done_Face' 2^32 times before freeing
1137 the face.
1138
1139 * src/base/ftobjs.c (open_face): Initialize `stream' and friends
1140 earlier.
1141 (FT_Open_Face) <Fail>: Behave correctly if `node' is NULL.
1142 (FT_Destroy_Module) <Fail>: Check that `renderer_clazz' is valid.
1143
11442013-06-14 Werner Lemberg <wl@gnu.org>
Werner Lembergd7e34442013-06-14 18:33:39 +02001145
1146 * src/smooth/ftgrays.c One final pragma to silence 64-bit MSVC.
1147
Dave Arnoldcb23a622013-06-13 07:46:32 +020011482013-06-06 Dave Arnold <darnold@adobe.com>
1149 Werner Lemberg <wl@gnu.org>
1150
1151 [cff] Add code to Adobe's engine to handle ppem > 2000.
1152
1153 * src/cff/cffgload.c (cff_slot_load): If we get
1154 FT_Err_Glyph_Too_Big, retry unhinted and scale up later on.
1155
Andrew Church67cf7a82013-06-18 09:35:34 +020011562013-06-12 Werner Lemberg <wl@gnu.org>
Werner Lemberg25b6e602013-06-12 11:06:34 +02001157
Werner Lemberg294ce112013-06-12 23:33:11 +02001158 Another try on pragmas.
1159
1160 * include/freetype/internal/ftdebug.h: Move pragmas to...
1161 * include/freetype/internal/internal.h: ... this file since it gets
1162 included by all source files.
1163 * include/freetype/internal/ftserv.h: Remove pragma which has no
1164 effect.
1165
Dave Arnoldcb23a622013-06-13 07:46:32 +020011662013-06-12 Werner Lemberg <wl@gnu.org>
Werner Lemberg294ce112013-06-12 23:33:11 +02001167
Werner Lemberg25b6e602013-06-12 11:06:34 +02001168 * include/freetype/internal/ftdebug.h: Disable MSVC warning C4127.
1169
1170 This partially undoes commit 3f6e0e0c.
1171
Werner Lembergc06889e2013-06-12 10:58:06 +020011722013-06-12 Werner Lemberg <wl@gnu.org>
1173
1174 More compiler warning fixes.
1175
1176 */*: Use cast to `FT_Bool' (or `Bool') where appropriate.
1177
Werner Lemberg99e60d82013-06-10 01:44:37 +020011782013-06-10 Werner Lemberg <wl@gnu.org>
1179
Werner Lemberg5e094c62013-06-10 14:59:21 +02001180 [truetype] Improve handling of broken sbit advance widths.
1181
1182 * src/truetype/ttgload.c (TT_Load_Glyph): Use the glyph's (scaled)
1183 `linearHoriAdvance' if the sbit's `horiAdvance' value is zero.
1184
1185 Cf. font `Fixedsys Excelsior' v3.01 (FSEX300.ttf), glyph A, 16ppem.
1186
11872013-06-10 Werner Lemberg <wl@gnu.org>
1188
Werner Lemberga25ecfd2013-06-10 12:57:16 +02001189 [sfnt] Improve embedded bitmap tracing.
1190
1191 * src/base/ftobjs.c (FT_Request_Size): Move trace message regarding
1192 bitmap strike match to...
1193 (FT_Match_Size): This function.
1194
1195 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics,
1196 tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
1197 tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
1198 tt_sbit_decoder_load_image): Decorate with tracing messages.
1199
12002013-06-10 Werner Lemberg <wl@gnu.org>
1201
Werner Lemberg99e60d82013-06-10 01:44:37 +02001202 Fix Savannah bug #39160.
1203
1204 * src/truetype/ttinterp.c (Ins_SDPVTL): Set projection vector too
1205 for the degenerate case.
1206
Werner Lemberg2ba871b2013-06-09 08:20:54 +020012072013-06-09 David Turner <digit@google.com>
1208
1209 * src/cache/ftcmanag.c (FTC_Manager_Reset): Add missing cache flush.
1210
1211 This code, present since eight(!) years in the unused `CACHE'
1212 branch, has been forgotten to apply to the master branch. It's
1213 really amazing that noone has ever complained since
1214 `FTC_Manager_Reset' is pretty useless without flushing the cache.
1215
Werner Lemberg85fd84b2013-06-07 17:10:21 +020012162013-06-07 Werner Lemberg <wl@gnu.org>
1217
Werner Lemberg3f6e0e02013-06-07 18:10:40 +02001218 Add and improve pragmas for MSVC compiler.
1219
1220 * include/freetype/internal/ftdebug.h: Remove pragmas.
1221 * include/freetype/internal/ftserv.h: Use push and pop for pragmas.
1222 * include/freetype/internal/ftvalid.h: Handle warning C4324.
1223 * src/base/ftobjs.c: Use push and pop for pragmas.
1224 * src/gzip/ftgzip.c: Handle warning C4244.
1225
12262013-06-07 Werner Lemberg <wl@gnu.org>
1227
Werner Lemberg85fd84b2013-06-07 17:10:21 +02001228 [cff] s/cf2_getGlyphWidth/cf2_getGlyphOutline/.
1229
1230 * src/cff/cf2font.c, src/cff/cf2font.h, src/cff/cf2ft.c: Do it.
1231
Werner Lemberg4447b2c2013-06-06 21:28:36 +020012322013-06-06 Dave Arnold <darnold@adobe.com>
1233
1234 [cff] Add early exit feature for width-only calls.
1235
1236 This is for `FT_Get_Advance'.
1237
1238 There are 7 places where the spec says the width can be defined:
1239
1240 hstem/hstemhm
1241 vstem/vstemhm
1242 cntrmask/hintmask
1243 hmoveto
1244 vmoveto
1245 rmoveto
1246 endchar
1247
1248 * src/cff/cf2intrp.c (cf2_doStems): Exit early for width-only calls,
1249 if possible.
1250
1251 (cf2_interpT2CharString) <cf2_cmdHSTEM>, <cf2_cmdVSTEM>,
1252 <cf2_cmdVMOVETO>, <cf2_cmdENDCHAR>, <cf2_cmdHINTMASK>,
1253 <cf2_cmdRMOVETO>, <cf2_cmdHMOVETO>: Exit early for width-only calls.
1254
Werner Lembergbadf3172013-06-06 09:16:38 +020012552013-06-06 Werner Lemberg <wl@gnu.org>
1256
1257 Next round of compiler fixes.
1258
1259 * builds/win32/ftdebug.c, builds/wince/ftdebug.c (ft_debug_init):
1260 Add proper cast.
1261
1262 * include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Fix
1263 cast.
1264 * include/freetype/internal/ftstream.h: Decorate stream and frame
1265 macros with `FT_Long' and `FT_ULong' as appropriate.
1266
1267 * src/base/ftrfork.c (raccess_guess_darwin_hfsplus,
1268 raccess_guess_darwin_newvfs): Use cast.
1269
1270 * src/bdf/bdflib.c (_bdf_set_default_spacing): Use cast.
1271
1272 * src/cache/ftcmanag.c (FTC_Manager_Check): Fix cast.
1273 * src/cache/ftcmanag.h (FTC_ManagerRec): Ditto.
1274
1275 * src/cff/cf2arrst.c (cf2_arrstack_setNum_Elements): Use cast.
1276 * src/cff/cf2ft.c (cf2_freeSeacComponent): Ditto.
1277 * src/cff/cffobjs.c (remove_subset_prefix, remove_style): Ditto.
1278
1279 * src/cid/cidparse.c (cid_parser_new): Use cast.
1280
1281 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Use cast.
1282
1283 * src/psaux/psobjs.c (reallocate_t1_table): Fix argument type.
1284
1285 * src/raster/ftraster.c (ft_black_reset): Use cast.
1286
1287 * src/truetype/ttgxvar.c (FT_Stream_FTell): Use cast.
1288 (ALL_POINTS): Fix cast.
1289
1290 * src/type1/t1driver.c (t1_ps_get_font_value): Add casts.
1291 * src/type1/t1parse.c (T1_Get_Private_Dict): Add cast.
1292
Dave Arnoldc3782492013-06-05 19:57:55 +020012932013-06-05 Dave Arnold <darnold@adobe.com>
1294
1295 Fix more MSVC Win32 compiler warnings.
1296
1297 * src/base/ftobjs.c: Fix typo in MS pragma.
1298
1299 * src/base/bdflib.c (_bdf_set_default_spacing, _bdf_add_property):
1300 `lineno' is only used in debug mode.
1301
1302 * src/cff/cf2ft.c (cf2_builder_moveTo): `params' is only used in
1303 debug mode.
1304
Werner Lemberg45392b72013-06-05 13:43:20 +020013052013-06-05 Werner Lemberg <wl@gnu.org>
1306
1307 Fix compiler warnings.
1308
1309 * include/freetype/internal/ftmemory.h: Decorate memory allocation
1310 macros with `FT_Long' where appropriate.
1311 Remove duplicate of FT_MEM_QRENEW_ARRAY definition.
1312
1313 * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use
1314 cast.
1315
1316 * src/base/ftobjs.c: Add warning disabling pragma for MSVC while
1317 including `md5.c'.
1318
1319 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdESC>: Add
1320 cast.
1321
1322 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Fix casts.
1323 (tt_sbit_decoder_load_bitmap): Beautification.
1324
1325 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Initialize
1326 variables (earlier).
1327
1328 * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Pacify compiler.
1329
1330 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use unsigned constants
1331 where appropriate.
1332
1333 * src/type1/t1load.c (T1_Get_MM_Var): Ditto.
1334
Werner Lembergdc624ca2013-06-04 10:30:48 +020013352013-06-04 Werner Lemberg <wl@gnu.org>
1336
Werner Lembergd9634982013-06-04 20:18:57 +02001337 * src/cff/cf2font.c (cf2_getGlyphWidth): Initialize `advWidth'.
1338
1339 Problem reported by Ingmar Sittl <ingmar.sittl@elektrobit.com>.
1340
13412013-06-04 Werner Lemberg <wl@gnu.org>
1342
Werner Lembergdc624ca2013-06-04 10:30:48 +02001343 Apply fixes for cppcheck nitpicks.
1344
1345 http://cppcheck.sourceforge.net/
1346
Werner Lemberg8d8508e2013-06-04 13:09:01 +02001347 The call was (from the top-level of the FreeType tree):
1348
1349 cppcheck --force \
1350 --enable=all \
1351 -I include \
1352 -I include/freetype/ \
1353 -I include/freetype/config/ \
1354 -I include/freetype/internal/ \
1355 . &> cppcheck.log
1356
Werner Lembergdc624ca2013-06-04 10:30:48 +02001357 Note that the current version heavily chokes on FreeType, delivering
Werner Lemberg8d8508e2013-06-04 13:09:01 +02001358 many wrong results. I will report those issues to the cppcheck team
Werner Lembergdc624ca2013-06-04 10:30:48 +02001359 so that a newer version gives improved results hopefully.
1360
1361 */* Improve variable scopes.
1362 */* Remove redundant initializations which get overwritten.
1363
Werner Lemberge8ed2d62013-08-01 12:20:20 +02001364 * src/base/ftmac.c, builds/mac/ftmac.c (count_faces_scalable):
Werner Lembergdc624ca2013-06-04 10:30:48 +02001365 Remove unused variable.
1366
1367 * src/base/ftdbgmem.c (ft_mem_table_destroy): `table' can't be zero.
1368
1369 * src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt1_entry_validate):
1370 Remove functionless code.
1371
1372 * src/tools/ftrandom.c (main): Fix memory leak.
1373
Werner Lemberg2429dc32013-06-03 12:41:58 +020013742013-06-03 Werner Lemberg <wl@gnu.org>
1375
1376 Add CFF_CONFIG_OPTION_OLD_ENGINE configuration option.
1377
1378 This controls whether the old FreeType CFF engine gets compiled into
1379 FreeType. It is now disabled by default.
1380
1381 * devel/ftoption.h, include/freetype/config/ftoption.h
1382 (CFF_CONFIG_OPTION_OLD_ENGINE): New macro.
1383
1384 * src/cff/cffdrivr.c (cff_property_set), src/cff/cffgload.c
1385 (CFF_Operator, cff_argument_counts, cff_builder_add_point,
1386 cff_operator_seac, cff_decoder_parse_charstrings, cff_slot_load),
1387 src/cff/cffgload.h, src/cff/cffobjs.c (cff_driver_init): Use
1388 CFF_CONFIG_OPTION_OLD_ENGINE to guard the affected code.
1389
1390 * docs/CHANGES: Updated.
1391
Werner Lembergf9cceeb2013-06-02 23:38:13 +020013922013-06-02 Werner Lemberg <wl@gnu.org>
1393
1394 Fix PNG library handling.
1395
1396 * builds/unix/configure.raw: Don't use LIBPNG_LIBS but
1397 LIBPNG_LDFLAGS.
1398
Behdad Esfahbod760d3422013-05-29 11:36:18 +020013992013-05-23 Behdad Esfahbod <behdad@google.com>
1400
1401 Add support for color embedded bitmaps (eg. color emoji).
1402
1403 A new load flag, FT_LOAD_COLOR, makes FreeType load color
1404 embedded-bitmaps, following this draft specification
1405
1406 https://color-emoji.googlecode.com/git/specification/v1.html
1407
1408 which defines two new SFNT tables, `CBDT' and `CBLC' (named and
1409 modeled after `EBDT' and `EBLC', respectively). The color bitmaps
1410 are stored in the new FT_PIXEL_MODE_BGRA format to represent BGRA
1411 pre-multiplied sRGB images. If PNG support is available, PNG color
1412 images as defined in the same proposed specification are supported
1413 also.
1414
1415 Note that color bitmaps are converted to grayscale if client didn't
1416 ask for color.
1417
1418 * builds/unix/configure.raw: Search for libpng.
1419 Add `--without-png' option.
1420
1421 * devel/ftoption.h, include/freetype/config/ftoption.h
1422 (FT_CONFIG_OPTION_USE_PNG): New macro.
1423
1424 * include/freetype/freetype.h (FT_LOAD_COLOR): New load flag.
1425
1426 * include/freetype/ftimage.h (FT_Pixel_Mode): Add
1427 `FT_PIXEL_MODE_BGRA'.
1428
1429 * include/freetype/tttags.h (TTAG_CBDT, TTAG_CBLC): New tags.
1430
1431 * src/base/ftbitmap.c (FT_Bitmap_Embolden): Updated.
1432 (ft_gray_for_premultiplied_srgb_bgra): New function.
1433 (FT_Bitmap_Convert): Handle FT_PIXEL_MODE_BGRA.
1434
1435 * src/sfnt/pngshim.c, src/sfnt/pngshim.h: New files.
1436
1437 * src/sfnt/sfnt.c: Include `pngshim.c'.
1438
1439 * src/sfnt/ttsbit.c: Include FT_BITMAP_H and `pngshim.h'
1440 (tt_face_load_eblc): Load `CBLC'.
1441 (tt_sbit_decoder_init): Load `CBDT'.
1442 (tt_sbit_decoder_alloc_bitmap): Pass load flags to select between
1443 color and grayscale bitmaps.
1444 Set `num_grays'. This is used by `ftview' to choose the blending
1445 algorithm.
1446 (tt_sbit_decoder_load_byte_aligned,
1447 tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_compound,
1448 tt_sbit_decoder_load_image): Pass load flag.
1449 s/write/pwrite/.
1450 Don't call `tt_sbit_decoder_alloc_bitmap'.
1451 Updated.
1452 (tt_sbit_decoder_load_png) [FT_CONFIG_OPTION_USE_PNG]: New function.
1453 (tt_sbit_decoder_load_bitmap): Pass load flag.
1454 Handle new glyph formats 17, 18, and 19.
1455 Call `tt_sbit_decoder_alloc_bitmap'.
1456 Flatten color bitmaps if necessary.
1457 (tt_face_load_sbit_image): Updated.
1458
1459 * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `pngshim.c'.
1460
1461 * docs/CHANGES: Updated.
1462
Guenter41e44802013-05-24 11:38:09 +020014632013-05-24 Guenter <info@gknw.net>
1464
1465 Apply Savannah patch #8055.
1466
1467 Make `apinames' create an import file for NetWare.
1468
1469 * src/tools/apinames.c (PROGRAM_VERSION): Set to 0.2.
1470 (OutputFormat): Add `OUTPUT_NETWARE_IMP'.
1471 (names_dump): Handle it.
1472 (usage): Updated.
1473 (main): Handle new command line flag `-wN'.
1474
Behdad Esfahbod2d6e1fb2013-05-23 08:01:20 +020014752013-05-23 Behdad Esfahbod <behdad@behdad.org>
1476
1477 Compilation fix.
1478
1479 * src/truetype/ttinterp.c (TT_RunIns)
1480 [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Make it work.
1481
Infinality18f35ed2013-05-21 20:51:15 -050014822013-05-22 Infinality <infinality@infinality.net>
1483
Infinality3c783c12013-05-21 21:03:00 -05001484 [truetype] Formatting and an additional subpixel tweak.
1485
1486 * src/truetype/ttinterp.c (Ins_SHPIX): Formatting fix.
1487 * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules):
1488 Revert previous modification for Verdana clones.
1489
14902013-05-22 Infinality <infinality@infinality.net>
1491
Infinality18f35ed2013-05-21 20:51:15 -05001492 [truetype] Adjust subpixel zp2 moves and tweak rules.
1493
1494 These modifications fix thin diagonal stems in some legacy fonts.
1495
1496 * src/truetype/ttinterp.c (Direct_Move_X): Remove unused macro.
1497 (Move_Zp2_Point): Don't always disable x moves for subpixel rendering.
1498 (Ins_SHP): Disable x moves here for subpixel rendering.
1499 (Ins_SHPIX): Only disable x moves in compatibility mode.
1500 Split out zp2 move reversals and reorder conditional respectively.
1501
1502 * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules): Fix oversight.
1503 Only adjust Verdana clones for 17 ppem.
1504 (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Courier New.
1505 (ALWAYS_SKIP_DELTAP_Rules): Found additional cases for Arial `s'.
1506
Infinality63bfa832013-05-20 07:38:21 +020015072013-05-20 Infinality <infinality@infinality.net>
1508
1509 [truetype] Simplify and improve subpixel function detection.
1510
1511 Some small enhancements have allowed the removal of many macros and
1512 the simplification of existing rules in `ttsubpix.c'.
1513
1514 * src/truetype/ttsubpix.h (SPH_TWEAK_ALLOW_X_DMOVEX,
1515 SPH_TWEAK_ALLOW_X_MOVE_ZP2,
1516 SPH_TWEAK_DELTAP_SKIP_EXAGGERATED_VALUES,
1517 SPH_TWEAK_SKIP_INLINE_DELTAS, SPH_TWEAK_MIRP_CVT_ZERO): Removed.
1518 (SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP): New rule macro.
1519
1520 * src/truetype/ttsubpix.c: Updated affected rules.
1521
1522 * src/truetype/ttinterp.c (Direct_Move_X): Updated.
1523 (INS_FDEF): Add additional function detection.
1524 (INS_ENDF): Set runtime flag.
1525 (Ins_CALL): Skip the call under certain conditions.
1526 Remove bad code.
1527 (Ins_LOOPCALL): Skip the call under certain conditions.
1528 Remove bad code.
1529 (Move_Zp2_Point): Updated.
1530 (Ins_SHPIX): Updated.
1531 Skip the move under some situations.
1532 (Ins_MIAP): Improve conditions.
1533 (Ins_MIRP): Updated.
1534 (Ins_DELTAP): Skip move under certain conditions.
1535 Simplify conditions.
1536 (TT_RunIns): Updated.
1537 Add code to handle new function detection.
1538 Trace messages.
1539
Werner Lembergfd664692013-05-17 17:40:27 +020015402013-05-17 Werner Lemberg <wl@gnu.org>
1541
1542 Update more FT_Err_XXX macros using FT_ERR and FT_THROW;
1543
1544 * builds/amiga/src/base/ftsystem.c, builds/mac/ftmac.c,
1545 builds/unix/ftsystem.c, builds/vms/ftsystem.c: Do it.
1546
Werner Lembergf04951a2013-05-17 13:51:07 +020015472013-05-15 Werner Lemberg <wl@gnu.org>
1548
1549 [truetype] Add `interpreter-version' property.
1550
1551 This makes the option TT_CONFIG_OPTION_SUBPIXEL_HINTING controllable
1552 at runtime.
1553
Werner Lemberg27991332013-05-17 14:00:26 +02001554 * include/freetype/ftttdrv.h: New file.
1555
1556 * include/freetype/config/ftheader.h (FT_TRUETYPE_DRIVER_H): New
1557 macro.
1558
Werner Lembergf04951a2013-05-17 13:51:07 +02001559 * src/truetype/ttdriver.c: Include FT_TRUETYPE_DRIVER_H.
1560 (tt_property_set, tt_property_get): Fill templates.
1561
1562 * src/truetype/ttobjs.h (TT_DriverRec): Add `interpreter_version'
1563 member.
1564 Remove unused `extension_component' member.
1565
1566 * src/truetype/ttgload.c: Include FT_TRUETYPE_DRIVER_H.
1567 (tt_get_metrics, TT_Hint_Glyph, TT_Process_Simple_Glyph,
1568 compute_glyph_metrics, tt_loader_init): Use `interpreter_version'.
1569
1570 * src/truetype/ttinterp.c: Include FT_TRUETYPE_DRIVER_H.
1571 (SUBPIXEL_HINTING): New macro to check `interpreter_version' flag.
1572 Update all affected functions to use it.
1573 Use TT_INTERPRETER_VERSION_XXX where appropriate.
1574
1575 * src/truetype/ttobjs.c: Include FT_TRUETYPE_DRIVER_H.
1576 (tt_driver_init): Initialize `interpreter_version'.
1577
1578 * src/truetype/ttsubpix.c: Include FT_TRUETYPE_DRIVER_H.
1579 Use TT_INTERPRETER_VERSION_XXX where appropriate.
1580
Werner Lemberg7441dd82013-05-13 09:12:46 +020015812013-05-13 Werner Lemberg <wl@gnu.org>
1582
Werner Lemberg6650be72013-05-13 10:05:29 +02001583 [truetype] Avoid empty source file.
1584
1585 * src/truetype/ttsubpix.c [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]:
1586 Provide dummy typedef.
1587
15882013-05-13 Werner Lemberg <wl@gnu.org>
1589
Werner Lemberg7441dd82013-05-13 09:12:46 +02001590 * src/cff/cf2font.c (cf2_getGlyphWidth): Fix uninitialized variable.
1591
1592 Fix suggested by Vaibhav Nagarnaik <vnagarnaik@gmail.com>.
1593
Brian Nixon8d6025c2013-05-13 09:06:42 +020015942013-05-13 Brian Nixon <bnixon@yahoo.com>
1595
1596 Fix Savannah bug #38970.
1597
1598 * src/base/ftdebug.c, builds/win32/ftdebug.c,
1599 builds/wince/ftdebug.c, builds/amiga/src/base/ftdebug.c
1600 (ft_debug_init): Don't read past the environment variable FT2_DEBUG.
1601
Werner Lembergd51ac9c2013-05-12 06:00:27 +020016022013-05-12 Werner Lemberg <wl@gnu.org>
1603
Werner Lembergcd888752013-05-12 15:08:57 +02001604 [truetype] Add framework for TrueType properties.
1605
1606 * src/truetype/ttdrivr.c: Include FT_SERVICE_PROPERTIES_H.
1607 (tt_property_set, tt_property_get): New functions, still empty.
1608 Define `tt_service_properties' service.
1609 Update `tt_services'.
1610
1611 * src/truetype/ttpic.h: Include FT_SERVICE_PROPERTIES_H.
1612 (TT_SERVICE_PROPERTIES_GET): New macro.
1613 (TTModulePIC): Add `tt_service_properties'.
1614
16152013-05-12 Werner Lemberg <wl@gnu.org>
1616
Werner Lembergb112fa42013-05-12 07:29:04 +02001617 Fix Savannah bug #38967.
1618
1619 * src/base/ftcalc.c (FT_DivFix) [FT_LONG64]: Fix cast.
1620
16212013-05-12 Werner Lemberg <wl@gnu.org>
1622
Werner Lembergcbcf33d2013-05-12 07:27:48 +02001623 Introduce unsigned 64bit type (if available).
1624
1625 * include/freetype/config/ftconfig.h: Define FT_UINT64 if available.
1626 [FT_LONG64]: Provide FT_UInt64.
1627
1628 * builds/unix/ftconfig.in: Synchronized.
1629
16302013-05-12 Werner Lemberg <wl@gnu.org>
1631
Werner Lembergd51ac9c2013-05-12 06:00:27 +02001632 Fix Savannah bug #38968.
1633
1634 * include/freetype/ftmodapi.h: Add `FT_EXPORT' to
1635 FT_Property_{Set,Get}.
1636 * src/base/ftobjs.c: Add `FT_EXPORT_DEF' to
1637 FT_Property_{Set,Get}.
1638
Werner Lembergf6aa0892013-05-10 07:58:47 +020016392013-05-10 Werner Lemberg <wl@gnu.org>
1640
Werner Lembergea2b4752013-05-10 08:04:33 +02001641 [sfnt] Clean up bitmap code.
1642
1643 * src/sfnt/ttsbit.c: Deleted.
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02001644 * src/sfnt/ttsbit0.c: Renamed to `ttsbit.c'.
Werner Lembergea2b4752013-05-10 08:04:33 +02001645 * rules.mk (SFNT_DRV_H): Updated.
1646
16472013-05-10 Werner Lemberg <wl@gnu.org>
1648
Werner Lembergf6aa0892013-05-10 07:58:47 +02001649 */* [FT_CONFIG_OPTION_OLD_INTERNALS]: Remove macro and guarded code.
1650
Werner Lembergccbdc3c2013-05-08 09:17:56 +020016512013-05-08 Werner Lemberg <wl@gnu.org>
1652
Werner Lembergcecf93e2013-05-08 11:39:16 +02001653 * Version 2.4.12 released.
1654 ==========================
1655
1656
1657 Tag sources with `VER-2-4-12'.
1658
1659 * docs/VERSION.DLL: Update documentation and bump version number to
1660 2.4.12.
1661
1662 * README, Jamfile (RefDoc),
1663 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
1664 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
1665 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
1666 builds/win32/visualc/freetype.dsp,
1667 builds/win32/visualc/freetype.vcproj,
1668 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
1669 builds/win32/visualce/freetype.vcproj,
1670 builds/win32/visualce/index.html,
1671 builds/wince/vc2005-ce/freetype.vcproj,
1672 builds/wince/vc2005-ce/index.html,
1673 builds/wince/vc2008-ce/freetype.vcproj,
1674 builds/wince/vc2008-ce/index.html: s/2.4.11/2.4.12/, s/2411/2412/.
1675
1676 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 12.
1677
1678 * builds/unix/configure.raw (version_info): Set to 16:1:10.
1679
16802013-05-08 Werner Lemberg <wl@gnu.org>
1681
Werner Lemberg2688a6c2013-05-08 10:00:49 +02001682 * docs/CHANGES: Updated.
1683
16842013-05-08 Werner Lemberg <wl@gnu.org>
1685
Werner Lembergccbdc3c2013-05-08 09:17:56 +02001686 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Typo.
1687
Werner Lemberg073a0e22013-05-05 10:41:20 +020016882013-05-05 Werner Lemberg <wl@gnu.org>
1689
Werner Lemberg26568612013-05-05 17:50:22 +02001690 Synchronize `ftconfig.h'.
1691
1692 * builds/unix/ftconfig.in: Updated.
1693
16942013-05-05 Werner Lemberg <wl@gnu.org>
1695
Werner Lembergdd192ef2013-05-05 16:13:01 +02001696 Fix compilation with C++.
1697
1698 * src/base/md5.c (body): Use proper cast.
1699
17002013-05-05 Werner Lemberg <wl@gnu.org>
1701
Werner Lembergd135e272013-05-05 10:44:21 +02001702 Fix 64bit compilation issues.
1703
1704 * include/freetype/config/ftconfig.h [FT_LONG64]: Typedef
1705 `FT_Int64' here.
1706
1707 * src/base/ftcalc.c: Remove typedef of `FT_Int64'.
1708 (FT_DivFix): Fix cast.
1709 * src/base/fttrigon.c: Remove typedef of `FT_Int64'.
1710
17112013-05-05 Werner Lemberg <wl@gnu.org>
1712
Werner Lemberg073a0e22013-05-05 10:41:20 +02001713 [raster] Fix clang issues.
1714
1715 Fix suggested by <octoploid@yandex.com>.
1716
1717 * src/raster/ftraster.c (ULong): New typedef.
1718 (SCALED): Add proper cast.
1719
Werner Lembergafaeeee2013-05-04 14:05:24 +020017202013-05-04 Werner Lemberg <wl@gnu.org>
1721
Werner Lemberge6e83622013-05-04 18:57:56 +02001722 Fix clang fixes.
1723
1724 * src/base/fttrigon.c (ft_trig_prenorm, FT_Vector_Rotate): Use
1725 correct types.
1726
1727 * src/cff/cf2intrp.c (cf2_interpT2CharString) <default>: Force
1728 unsigned for computations.
1729 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Ditto.
1730 * src/cff/cffparse.c (cff_parse_integer): Ditto.
1731
1732 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto.
1733
17342013-05-04 Werner Lemberg <wl@gnu.org>
1735
Werner Lemberg77c39b12013-05-04 18:04:07 +02001736 [cff] Make Adobe CFF engine work correctly on 64bit hosts.
1737
1738 Reported by numerous people on the `freetype-devel' list. Without
1739 this fix, glyphs aren't properly aligned on a common baseline.
1740
1741 On 64bit systems, `FT_Pos' expands to `long int', having a width of
1742 64bit. `CF2_Fixed' expands to `int' which is normally 32bit wide on
1743 64bit hosts also. Wrong casts filled up the blues arrays with
1744 incorrect values. Note that all blues values are accessed with the
1745 `cf2_blueToFixed' macro which handles the 64bit to 32bit conversion.
1746
1747 * src/cff/cf2ft.h (cf2_getBlueValues, cf2_getOtherBlues,
1748 cf2_getFamilyBlues, cf2_getFamilyOtherBlues): Use `FT_Pos' for
1749 `data', not `CF2_Fixed'.
1750 * src/cff/cf2ft.c (cf2_getBlueValues, cf2_getOtherBlues,
1751 cf2_getFamilyBlues, cf2_getFamilyOtherBlues): Updated.
1752 * src/cff/cf2blues.c (cf2_blues_init): Updated.
1753
17542013-05-04 Werner Lemberg <wl@gnu.org>
1755
Werner Lemberg94152812013-05-04 16:40:12 +02001756 More fixes for clang's `sanitize' feature.
1757
1758 * src/base/ftcalc.c (FT_DivFix): Use unsigned values for
1759 computations which use the left shift operator and convert to signed
1760 as the last step.
1761 * src/base/fttrigon.c (ft_trig_prenorm, FT_Vector_Rotate,
1762 FT_Vector_Length, FT_Vector_Polarize): Ditto.
1763
1764 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Simplify.
1765 * src/cff/cffload.c (cff_subfont_load): Fix constant.
1766 * src/cff/cffparse.c (cff_parse_integer, cff_parse_real, do_fixed,
1767 cff_parse_fixed_dynamic): Use unsigned values for computations which
1768 use the left shift operator and convert to signed as the last step.
1769
1770 * src/cid/cidload.c (cid_get_offset): Ditto.
1771
1772 * src/psaux/psconv.c (PS_Conv_ToFixed): Ditto.
1773 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto.
1774
1775 * src/truetype/ttinterp.c (TT_MulFix14, TT_DotFix14): Ditto.
1776
17772013-05-04 Werner Lemberg <wl@gnu.org>
1778
Werner Lembergafaeeee2013-05-04 14:05:24 +02001779 Fix errors reported by clang's `sanitize' feature.
1780
1781 * include/freetype/internal/ftstream.h: Simplify and fix integer
1782 extraction macros.
1783 (FT_INT8_, FT_BYTE_I16, FT_BYTE_I32, FT_INT8_I16, FT_INT8_I32,
1784 FT_INT8_I32, FT_INT8_U32): Removed.
1785 (FT_PEEK_SHORT, FT_PEEK_LONG, FT_PEEK_OFF3, FT_PEEK_SHORT_LE,
1786 FT_PEEK_LONG_LE, FT_PEEK_OFF3_LE): Use unsigned values for
1787 computations and convert to signed as the last step.
1788
1789 * src/cff/cf2fixed.h (cf2_intToFixed, cf2_fixedToInt,
1790 cf2_fracToFixed): Avoid shifts of negative values.
1791 (cf2_intToFrac, cf2_fixedToFrac, cf2_fixedTo26Dot6): Removed,
1792 unused.
1793
1794 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdEXTENDEDNMBR,
1795 default>: Use unsigned values for computations and convert to signed
1796 as the last step.
1797 Use proper types in tracing messages.
1798
1799 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Use unsigned
1800 values for computation of operands and convert to signed as the last
1801 step.
1802 Use proper type in tracing message.
1803
Werner Lemberg99033fe2013-05-03 17:39:24 +020018042013-05-03 Werner Lemberg <wl@gnu.org>
1805
1806 * src/cff/cf2blues.c: Remove dead code.
1807
18082013-05-02 Chris Liddell <chris.liddell@artifex.com>
Chris Liddell9bf75e02013-05-02 11:09:15 +02001809
1810 * src/cff/cffgload.c: Include FT_CFF_DRIVER_H.
1811
Werner Lemberg689d68e2013-04-27 08:09:35 +020018122013-04-27 Werner Lemberg <wl@gnu.org>
Werner Lemberg234b9872013-04-26 14:10:12 +02001813
1814 * docs/CHANGES: Updated.
Werner Lemberg29f1a922013-04-27 09:46:10 +02001815 * README: Improved.
Werner Lemberg234b9872013-04-26 14:10:12 +02001816
Werner Lemberg06474c32013-04-13 18:53:28 +020018172013-04-13 Werner Lemberg <wl@gnu.org>
1818
1819 [cff] Add a new Type 2 interpreter and hinter.
1820
1821 This work, written by Dave Arnold <darnold@adobe.com> and fully
1822 integrated into FreeType by me, is a donation by Adobe in
1823 collaboration with Google. It is vastly superior to the old CFF
1824 engine, and it will replace it soon. Right now, it is still off by
1825 default, and you have to explicitly select it using the new
1826 `hinting-engine' property of the cff driver.
1827
1828 For convenience, (most of) the new files are committed separately.
1829
1830 * include/freetype/config/ftheader.h (FT_CFF_DRIVER_H): New macro.
1831 * include/freetype/ftcffdrv.h: New file to access CFF driver
1832 properties.
1833 * include/freetype/fterrdef.h (FT_Err_Glyph_Too_Big): New error
1834 code.
1835 * include/freetype/internal/fttrace.h: Add `cf2blues', `cf2hints',
1836 and `cf2interp'.
1837
1838 * src/cff/cffgload.h (CFF_SubFont): New member `current_subfont'.
1839 * src/cff/cffobjs.h (CFF_DriverRec): New members `hinting_engine'
1840 and `no_stem_darkening'.
1841 * src/cff/cfftypes.h (CFF_FontRec): New member `cf2_instance'.
1842
1843 * src/cff/cff.c: Include new files.
1844 * src/cff/cffdrivr.c (cff_property_set, cff_property_get): Handle
1845 `hinting-engine' and `no-stem-darkening' properties (only the Adobe
1846 engine listens to them).
1847 * src/cff/cffgload.c: Include `cf2ft.h'.
1848 (cff_decoder_prepare): Initialize `current_subfont'.
1849 (cff_build_add_point): Handle Adobe engine which uses 16.16
1850 coordinates.
1851 (cff_slot_load): Handle FT_LOAD_NO_SCALE and FT_LOAD_NO_HINTING
1852 separately.
1853 Choose rendering engine based on `hinting_engine' property.
1854 * src/cff/cffload.c (cff_font_done): Call finalizer of the Adobe
1855 engine.
1856 * src/cff/cffobjs.c: Include FT_CFF_DRIVER_H.
1857 (cff_driver_init): Set default property values.
1858
1859 * src/cff/rules.mk (CFF_DRV_SRC, CFF_DRV_H): Add new files.
1860
1861 * src/cff/cf2*.*: New files, containing the Adobe engine.
1862
Werner Lembergfc185ef2013-04-12 19:48:06 +020018632013-04-12 Werner Lemberg <wl@gnu.org>
1864
Werner Lemberg831dac82013-04-12 21:13:49 +02001865 [cff] Minor code administration issues.
1866
1867 * src/cff/cffgload.c (check_points): Rename to...
1868 (cff_check_points): ...this and make it FT_LOCAL.
1869 (cff_builder_add_point, cff_builder_add_point1,
1870 cff_builder_start_point, cff_builder_close_contour,
1871 cff_lookup_glyph_by_stdcharcode, cff_get_glyph_data,
1872 cff_free_glyph_data): Make them FT_LOCAL.
1873
1874 * src/cff/cffgload.h: Updated.
1875
18762013-04-12 Werner Lemberg <wl@gnu.org>
1877
Werner Lemberg2dc26622013-04-12 20:11:38 +02001878 Add output bitmap checksums.
1879
1880 Use `FT2_DEBUG=bitmap:3' for tracing.
1881
1882 * src/base/md5.c, src/base/md5.h: New files, taken from
1883
1884 http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
1885
1886 * include/freetype/internal/fttrace.h: Add `bitmap'.
1887
1888 * src/base/ftobjs.c [FT_DEBUG_LEVEL_TRACE]: Include `md5.c'
1889
1890 (FT_Render_Glyph_Internal) [FT_DEBUG_LEVEL_TRACE]: For tracing,
1891 convert resulting bitmap to a uniform format and compute a checksum.
1892 Use `bitmap' category for the tracing message.
1893
1894 * src/base/rules.mk (BASE_H): Updated.
1895
1896 * docs/LICENSE.TXT: Updated.
1897
18982013-04-12 Werner Lemberg <wl@gnu.org>
1899
Werner Lemberg831dac82013-04-12 21:13:49 +02001900 [cff] Add framework for CFF properties.
Werner Lembergfc185ef2013-04-12 19:48:06 +02001901
1902 * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC7):
1903 New macro.
1904
1905 * src/cff/cffdrivr.c: Include FT_SERVICE_PROPERTIES_H.
Werner Lembergcd888752013-05-12 15:08:57 +02001906 (cff_property_set, cff_property_get): New functions, still empty.
Werner Lembergfc185ef2013-04-12 19:48:06 +02001907 Define `cff_service_properties' service.
1908 Update `cff_services'.
1909
1910 * src/cff/cffpic.h: Include FT_SERVICE_PROPERTIES_H.
1911 (CFF_SERVICE_PROPERTIES_GET): New macro.
Werner Lembergcd888752013-05-12 15:08:57 +02001912 (CffModulePIC): Add `cff_service_properties'.
Werner Lembergfc185ef2013-04-12 19:48:06 +02001913
Werner Lemberg04e547b2013-04-03 07:37:56 +020019142013-04-03 Werner Lemberg <wl@gnu.org>
1915
Werner Lemberg831dac82013-04-12 21:13:49 +02001916 [bdf] Fix Savannah bug #38589.
Werner Lemberg04e547b2013-04-03 07:37:56 +02001917
1918 * src/bdf/bdflib.c (_bdf_readstream): Thinko.
1919
Werner Lemberg2f7ccb22013-03-31 09:04:38 +020019202013-03-31 Werner Lemberg <wl@gnu.org>
1921
1922 * configure: Use egrep, not grep.
1923
1924 Problem reported Mojca Miklavec <mojca.miklavec.lists@gmail.com>.
1925
Werner Lemberga7059272013-03-29 19:35:39 +010019262013-03-29 Werner Lemberg <wl@gnu.org>
1927
1928 * include/freetype/ftlcdfil.h: Add description of color filtering.
1929
Werner Lemberg94720c22013-03-29 19:37:49 +01001930 Based on a contribution from Antti S. Lankila <alankila@bel.fi>
1931 (Savannah bug #38607).
Werner Lemberga7059272013-03-29 19:35:39 +01001932
Werner Lembergfbb07732013-03-23 14:06:54 +010019332013-03-23 Werner Lemberg <wl@gnu.org>
1934
1935 [autofit] Minor.
1936
1937 * src/autofit/afmodule.c (af_property_set): Typo.
1938 (af_autofitter_init, af_autofitter_done): Use cast.
1939
Werner Lembergeb624d72013-03-21 22:58:28 +010019402013-03-21 Werner Lemberg <wl@gnu.org>
1941
1942 * configure: Automatically test for `gmake' also.
1943
1944 Suggested by Mojca Miklavec <mojca.miklavec.lists@gmail.com>.
1945
Peter Breitenlohner63463b932013-03-21 19:58:40 +010019462013-03-21 Peter Breitenlohner <peb@mppmu.mpg.de>
1947
1948 Respect CONFIG_SHELL from the environment.
1949
1950 Some large packages using FreeType have to use a broken (deficient)
1951 /bin/sh. The configure scripts (as generated by Autoconf) are
1952 clever enough to find a better shell and put that one into the
1953 environment variable CONFIG_SHELL. If that environment variable is
1954 already set the script skips the test and assumes to be already
1955 running under a good shell.
1956
1957 * builds/unix/detect.mk: Honour CONFIG_SHELL.
1958 * builds/unix/unix-def.in (SHELL): Define.
1959
Werner Lemberg6f1e3452013-03-21 09:00:27 +010019602013-03-21 Werner Lemberg <wl@gnu.org>
1961
1962 Fix Savannah patch #7971.
1963
1964 * configure: Handle MAKE environment variable also.
1965
Werner Lemberg8b4459b2013-03-17 07:44:35 +010019662013-03-17 Werner Lemberg <wl@gnu.org>
1967
Werner Lembergb114b7c2013-03-17 22:42:07 +01001968 Fix Savannah bug #38538.
1969
1970 * builds/amiga/src/base/ftdebug.c, builds/win32/ftdebug.c,
1971 builds/wince/ftdebug.c (FT_Throw): Add function.
1972
19732013-03-17 Werner Lemberg <wl@gnu.org>
1974
Werner Lemberg831dac82013-04-12 21:13:49 +02001975 [raster] Remove dead code.
Werner Lemberg706fc832013-03-17 08:09:17 +01001976
1977 * src/raster/rastpic.c (ft_raster1_renderer_class_pic_init)
1978 src/smooth/ftspic.c (ft_smooth_renderer_class_pic_init): Do it.
1979
19802013-03-17 Werner Lemberg <wl@gnu.org>
1981
Werner Lemberg8b4459b2013-03-17 07:44:35 +01001982 * src/pshinter/pshpic.h (GET_PIC): Use correct container.
1983
Werner Lembergf619abf2013-03-15 08:16:25 +010019842013-03-15 Werner Lemberg <wl@gnu.org>
1985
1986 * include/freetype/ftmoderr.h: Fix commit from 2013-03-11.
1987
1988 The previous version was not backwards compatible. Reported by
1989 Behdad.
1990
Werner Lemberge3c93012013-03-14 11:21:17 +010019912013-03-14 Werner Lemberg <wl@gnu.org>
1992
Werner Lemberg89f50642013-03-14 17:50:49 +01001993 */*: Use FT_ERR_EQ, FT_ERR_NEQ, and FT_ERR where appropriate.
1994
1995 FT_Err_XXX and friends are no longer directly used in the source
1996 code.
1997
19982013-03-14 Werner Lemberg <wl@gnu.org>
1999
Werner Lemberg52339dc2013-03-14 15:49:49 +01002000 New error management macros.
2001
2002 * include/freetype/fterrors.h (FT_ERR_XCAT, FT_ERR_CAT): Move to...
2003 * include/freetype/fttypes.h: ... this file.
2004 (FT_ERR, FT_ERR_EQ, FT_ERR_NEQ, FT_MODERR_EQ, FT_MODERR_NEQ): New
2005 macros.
2006
2007 * include/freetype/freetype.h: Updated.
2008
20092013-03-14 Werner Lemberg <wl@gnu.org>
2010
Werner Lemberge3c93012013-03-14 11:21:17 +01002011 */*: Use FT_Err_Ok only.
2012
2013 This is a purely mechanical conversion.
2014
20152013-03-14 Werner Lemberg <wl@gnu.org>
Werner Lembergc58ce3b2013-03-13 11:06:39 +01002016
Werner Lemberg059bc332013-03-14 10:27:35 +01002017 */*: Use `FT_THROW'.
2018
2019 This is essentially a mechanical conversion, adding inclusion of
2020 `FT_INTERNAL_DEBUG_H' where necessary, and providing the macros for
2021 stand-alone compiling modes of the rasterizer modules.
2022
2023 To convert the remaining occurrences of FT_Err_XXX and friends it is
2024 necessary to rewrite the code. Note, however, that it doesn't harm
2025 if some cases are not handled since FT_THROW is a no-op.
2026
20272013-03-13 Werner Lemberg <wl@gnu.org>
2028
Werner Lembergc58ce3b2013-03-13 11:06:39 +01002029 Introduce `FT_THROW' macro.
2030
2031 The idea is to replace code like
2032
2033 return FT_Err_Foo_Bar;
2034
2035 or
2036
2037 return CFF_Err_Foo_Bar;
2038
2039 with
2040
2041 return FT_THROW( Foo_Bar );
2042
2043 The FT_THROW macro has two functions:
2044
2045 . It hides the module specific prefix.
2046
2047 . In debug mode, it calls the empty function `FT_Throw' which can
2048 be thus used to set a breakpoint.
2049
2050 * include/freetype/internal/ftdebug.h (FT_THROW): New macro.
2051 (FT_Throw): New prototype.
2052 * src/base/ftdebug.c (FT_Throw): New function.
2053
Werner Lembergdbc6e3f2013-03-12 11:42:20 +010020542013-03-12 Werner Lemberg <wl@gnu.org>
2055
2056 Remove `FT_KEEP_ERR_PREFIX'.
2057
2058 The idea is to always have FT_ERR_PREFIX available internally.
2059
2060 * include/freetype/fterrors.h: Use FT2_BUILD_LIBRARY to guard
2061 undefinition of FT_ERR_PREFIX
2062
2063 * src/gxvalid/gxverror.h, src/otvalid/otverror.h,
2064 src/sfnt/sferrors.h: Updated.
2065
Werner Lembergd6bc5242013-03-11 09:50:53 +010020662013-03-11 Werner Lemberg <wl@gnu.org>
2067
Werner Lembergc879f242013-03-11 10:11:57 +01002068 [gxvalid] Fix module error.
2069
2070 * src/gxvalid/gxverror.h (FT_ERR_BASE): Define as
2071 FT_Mod_Err_GXvalid.
2072 * include/freetype/ftmoderr.h: Add module error for `GXvalid'.
2073
20742013-03-11 Werner Lemberg <wl@gnu.org>
2075
Werner Lembergd6bc5242013-03-11 09:50:53 +01002076 Always use module related error codes.
2077
2078 * src/cff/cffobjs.c (cff_face_init), src/type1/t1objs.c
2079 (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Use
2080 `FT_ERROR_BASE'.
2081
2082 * src/type1/t1load.c (parse_encoding): Use
2083 T1_Err_Unknown_File_Format.
2084
Werner Lemberg2d882542013-03-08 21:23:45 +010020852013-03-08 Werner Lemberg <wl@gnu.org>
2086
2087 [cff] Set `linear{Hori,Vert}Advance' for embedded bitmaps also.
2088
Werner Lemberg737bbb02013-03-08 21:25:45 +01002089 Problem reported by Khaled Hosny <khaledhosny@eglug.org>.
2090
Werner Lemberg2d882542013-03-08 21:23:45 +01002091 * src/cff/cffgload.c (cff_slot_load): Implement it.
2092
Alexei Podtelezhnikov2ba18ba2013-02-22 23:58:57 -050020932013-02-23 Alexei Podtelezhnikov <apodtele@gmail.com>
2094
2095 [base] Fix commit ab02d9e8.
2096
2097 * src/base/ftbbox.c (BBox_Cubic_Check): Change scaling to msb of 22.
2098
Alexei Podtelezhnikovf9434db2013-02-19 21:27:18 -050020992013-02-19 Alexei Podtelezhnikov <apodtele@gmail.com>
2100
2101 [base] New bisecting BBox_Cubic_Check (disabled).
2102
2103 * src/base/ftbbox.c (BBox_Cubic_Check): New bisecting algorithm
2104 for extremum search built around simple condition that defines
2105 which half contains the extremum.
2106
Alexei Podtelezhnikov0e536672013-02-18 20:41:56 -050021072013-02-18 Alexei Podtelezhnikov <apodtele@gmail.com>
2108
2109 [tools] Update BBox testing tool.
2110
2111 * src/tools/test_bbox.c: Add another cubic outline with exact BBox.
2112 (REPEAT): Increase the number of benchmarking cycles.
2113 (profile_outline): Tweak output formatting.
2114
Werner Lembergbcca86a2013-02-08 12:49:41 +010021152013-02-02 Werner Lemberg <wl@gnu.org>
2116
2117 Fix Savannah bug #38235.
2118
2119 * builds/unix/configure.raw: Don't generate `freetype-config' and
2120 `freetype.pc'.
2121
2122 * builds/unix/unix-def.in (FT2_EXTRA_LIBS, LIBBZ2, LIBZ,
2123 build_libtool_libs, ft_version): New variables to be substituted.
2124 (freetype-config, freetype.pc): New rules to generate those files.
2125
2126 * builds/unix/freetype-config.in: Remove code for handling `rpath'.
2127 The use of $rpath has been accidentally removed in a patch from
2128 2009-12-22, and apparently noone has missed it since.
2129 Use `%' instead of `@' as a variable substitution marker.
2130 Use quotes.
2131
2132 * builds/unix/freetype.in: Use `%' instead of `@' as a variable
2133 substitution marker.
2134 Use quotes.
2135
Werner Lemberga2c7eb12013-02-07 19:49:12 +010021362013-02-07 Werner Lemberg <wl@gnu.org>
2137
2138 * src/truetype/ttobjs.c (tt_size_run_prep): Reset more GS variables.
2139
2140 BTW, Greg agrees that the OpenType specification is missing the list
2141 of GS variables which will always be reset to the default values
2142 after the `prep' table has been executed.
2143
Werner Lembergbfcc3752013-02-06 08:47:29 +010021442013-02-06 Werner Lemberg <wl@gnu.org>
2145
2146 * src/truetype/ttobjs.c (tt_size_run_prep): Reset reference points.
2147
2148 Up to now, we simply took a snapshot of the Graphics State after the
2149 `prep' table has been executed, and right before a glyph's bytecode
2150 was run it got reloaded. However, as Greg Hitchcock has told us in
2151 private communication, reference points get reset to zero in the MS
2152 rasterizer and we follow in due course. While reasonable, this is
2153 undocumented behaviour.
2154
2155 Most notably, this fixes the rendering of Arial's `x' glyph in
2156 subpixel hinting mode.
2157
Werner Lemberg00dfa332013-02-05 19:23:16 +010021582013-02-05 Werner Lemberg <wl@gnu.org>
2159
2160 [truetype] A better fix for Savannah bug #38211.
2161
2162 * src/truetype/ttinterp.c (Ins_IP): Implement identical behaviour to
2163 MS rasterizer if rp1 == rp2 (confirmed by Greg Hitchcock).
2164
Alexei Podtelezhnikov0eb63162013-02-01 20:24:00 -050021652013-02-01 Alexei Podtelezhnikov <apodtele@gmail.com>
2166
2167 [pcf] Streamline parsing of PCF encoding table.
2168
2169 * src/pcf/pcfread.c (pcf_get_encodings): Use simpler double for-loop.
2170 Reallocate array instead of using temporary storage.
2171
Werner Lemberg40633202013-02-01 12:55:44 +010021722013-02-01 Werner Lemberg <wl@gnu.org>
2173
Werner Lemberg3b1f2062013-02-01 23:45:04 +01002174 Fix Savannah bug #38227.
2175
2176 * builds/unix/freetype-config.in: Set LC_ALL.
2177
21782013-02-01 Werner Lemberg <wl@gnu.org>
2179
Werner Lemberg30f1e6c2013-02-01 14:50:08 +01002180 Fix Savannah bug #38221.
2181
2182 This complements commit 83c0ebab.
2183
2184 * src/base/ftcalc.c (FT_MulDiv_No_Round): Don't enclose with
2185 `TT_USE_BYTECODE_INTERPRETER'.
2186
21872013-02-01 Werner Lemberg <wl@gnu.org>
2188
Werner Lemberg40633202013-02-01 12:55:44 +01002189 [truetype] Fix Savannah bug #38211.
2190
2191 * src/truetype/ttinterp.c (Ins_IP): Make FreeType behave identical
2192 to other interpreters if rp1 == rp2 (which is invalid).
2193
Alexei Podtelezhnikovab02d9e2013-01-28 06:35:19 -050021942013-01-28 Alexei Podtelezhnikov <apodtele@gmail.com>
2195
2196 [base] Small optimization of BBox calculation.
2197
2198 * src/base/ftbbox.c (BBox_Cubic_Check): Use FT_MSB function in
2199 scaling algorithm.
2200
Infinalitya5fe3592013-01-26 12:29:52 -060022012013-01-26 Infinality <infinality@infinality.net>
2202
Infinalityc574d722013-01-26 17:40:44 -06002203 [truetype] Minor formatting fix.
2204
2205 * src/truetype/ttinterp.c: Updated.
2206 (DO_RS): Fix indentation.
2207
22082013-01-26 Infinality <infinality@infinality.net>
2209
Infinality97ba5102013-01-26 17:05:40 -06002210 [truetype] Fix rasterizer_version logic in sph.
2211
2212 * src/truetype/ttsubpix.c: Updated.
2213 (ALWAYS_SKIP_DELTAP_Rules): Remove rule for Trebuchet MS.
Werner Lemberg6b9034f2013-01-28 13:56:23 +01002214 (sph_set_tweaks): Fix `rasterizer_version' logic.
Infinality97ba5102013-01-26 17:05:40 -06002215
22162013-01-26 Infinality <infinality@infinality.net>
2217
Infinalitya5fe3592013-01-26 12:29:52 -06002218 [truetype] Align more to ClearType whitepaper for sph.
2219
2220 * include/freetype/internal/tttypes.h (TT_FaceRec): Add flags
Werner Lemberg6b9034f2013-01-28 13:56:23 +01002221 for detected opcode patterns and compatibility mode.
Infinalitya5fe3592013-01-26 12:29:52 -06002222
2223 * src/truetype/ttgload.c (tt_loader_init): Complete conditional.
2224
Werner Lemberg6b9034f2013-01-28 13:56:23 +01002225 * src/truetype/ttinterp.c: Updated.
2226 Remove SPH_DEBUG and replace with FT_TRACE7.
Infinalitya5fe3592013-01-26 12:29:52 -06002227 (DO_RS): More conditions.
Werner Lemberg6b9034f2013-01-28 13:56:23 +01002228 (Ins_FDEF): Add more opcode detection patterns.
2229 More specific conditions when flagging an fdef.
2230 Make compatibility mode only turn on when delta fdefs are found.
2231 (Ins_CALL, Ins_LOOPCALL): Set flags for currently executed fdef.
2232 (Ins_SHPIX): Remove logic to handle ttfautohinted fonts.
2233 Simplify conditionals where possible.
2234 Use `&' instead of `%' operator for dumb compilers.
2235 (Ins_MIAP): Adjust twilight zone conditional.
2236 Ensure `ignore_x_mode' is on when testing sph conditionals.
2237 (Ins_MIRP): Ensure `ignore_x_mode' is on when testing sph
2238 conditionals.
2239 Do cvt cutin always when `ignore_x_mode' is active.
2240 Remove test for ttfautohinted fonts.
2241 (Ins_DELTAP): Ensure `ignore_x_mode' is on when testing sph
2242 conditionals.
2243 Do cvt cutin always when `ignore_x_mode' is active.
2244 Remove test for ttfautohinted fonts.
2245 Use `&' instead of `%' operator for dumb compilers.
Infinalitya5fe3592013-01-26 12:29:52 -06002246 (Ins_GETINFO): Remove SPH_DEBUG and replace with FT_TRACE7.
2247
2248 * src/truetype/ttinterp.h: Updated.
Werner Lemberg6b9034f2013-01-28 13:56:23 +01002249 (TT_ExecContextRec): Remove compatibility_mode variable.
2250 Add variable to indicate when executing in special fdefs for sph.
Infinalitya5fe3592013-01-26 12:29:52 -06002251
2252 * src/truetype/ttobjs.h: Updated.
2253 (TT_DefRecord): Add flags to identify special fdefs for sph.
2254 (TT_SizeRec): Remove unnecessary ttfautohinted variable.
2255
2256 * src/truetype/ttsubpix.c: Updated.
Werner Lemberg6b9034f2013-01-28 13:56:23 +01002257 (COMPATIBILITY_MODE_Rules): Remove all. Auto-detected now.
2258 (PIXEL_HINTING_Rules): Remove all. Unnecessary after fixes.
Infinalitya5fe3592013-01-26 12:29:52 -06002259 (SKIP_NONPIXEL_Y_MOVES_Rules): Remove Ubuntu.
2260 (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Arial Bold `N'.
Werner Lemberg6b9034f2013-01-28 13:56:23 +01002261 (SKIP_OFFPIXEL_Y_MOVES_Rules): Remove all. Happens automatically
2262 now.
Infinalitya5fe3592013-01-26 12:29:52 -06002263 (ROUND_NONPIXEL_Y_MOVES_Rules): Remove Ubuntu.
2264 (ROUND_NONPIXEL_Y_MOVES_Rules_Exceptions): Remove all.
2265 (NORMAL_ROUND_Rules): Remove Verdana.
2266 (NO_DELTAP_AFTER_IUP_Rules): Remove all.
Werner Lemberg6b9034f2013-01-28 13:56:23 +01002267 (sph_set_tweaks): Performance fix. Don't run prep always.
2268 Adjust conditional for sph_compatibility_mode.
Infinalitya5fe3592013-01-26 12:29:52 -06002269
2270 * src/truetype/ttsubpix.h: Add new fdef flags for sph.
2271
Alexei Podtelezhnikov610ee582013-01-25 23:33:00 -050022722013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
2273
2274 [base] Fix broken emboldening at small sizes.
2275
2276 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Do not attempt to
2277 normalize zero-length vectors.
2278
Werner Lembergf41ee052013-01-25 16:41:24 +010022792013-01-25 Werner Lemberg <wl@gnu.org>
2280
2281 Fix Savannah bug #38167.
2282
2283 This fixes commit 83c0ebab from 2012-06-27.
2284
2285 * src/truetype/ttinterp.h:
2286 s/TT_CONFIG_OPTION_BYTECODE_INTERPRETER/TT_USE_BYTECODE_INTERPRETER/.
2287
Xi Wangba931be2013-01-25 00:57:09 +010022882013-01-25 Xi Wang <xi.wang@gmail.com>
2289
2290 [sfnt] Fix broken pointer overflow checks.
2291
2292 Many compilers such as gcc and clang optimize away pointer overflow
Werner Lemberg77c39b12013-05-04 18:04:07 +02002293 checks `p + n < p', because pointer overflow is undefined behavior.
Xi Wangba931be2013-01-25 00:57:09 +01002294 Use a safe form `n > p_limit - p' instead.
2295
2296 Also avoid possible integer overflow issues, for example, using
2297 `num_glyphs > ( p_limit - p ) / 2' rather than `num_glyphs * 2'
2298 given a large `num_glyphs'.
2299
2300 * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Implement it.
2301
Werner Lemberg817caa92013-01-25 00:40:56 +010023022013-01-25 Werner Lemberg <wl@gnu.org>
2303
Xi Wangba931be2013-01-25 00:57:09 +01002304 [base] Fix `make multi'.
Werner Lemberg817caa92013-01-25 00:40:56 +01002305
2306 * src/base/ftoutln.c, src/base/fttrigon.c: Include
2307 FT_INTERNAL_CALC_H.
2308
David 'Digit' Turner72447192013-01-25 00:36:35 +010023092013-01-25 David 'Digit' Turner <digit@google.com>
2310
2311 [truetype] Fix C++ compilation.
2312
2313 * src/truetype/ttsubpix.h: Updated.
2314 (SPH_X_SCALING_RULES_SIZE): Moved and renamed to...
2315 * src/truetype/ttsubpix.c (X_SCALING_RULES_SIZE): This.
2316 (sph_X_SCALING_Rules): Removed.
2317 (scale_test_tweak): Make function static.
2318 (sph_test_tweak_x_scaling): New function.
2319
2320 * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Updated.
2321
Werner Lemberg87dc86d2013-01-24 08:39:43 +010023222013-01-23 Werner Lemberg <wl@gnu.org>
2323
Werner Lemberge9f330a2013-01-24 09:12:56 +01002324 [base] Make `FT_Hypot' really internal.
2325
2326 * include/freetype/fttrigon.h (FT_Hypot): Move to...
2327 * include/freetype/internal/ftcalc.h: This file.
2328
2329 * src/base/fttrigon.c (FT_Hypot): Move to...
2330 * src/base/ftcalc.c: This file.
2331 Include FT_TRIGONOMETRY_H.
2332
2333 * src/truetype/ttgload.c: Don't include FT_TRIGONOMETRY_H.
2334
23352013-01-23 Werner Lemberg <wl@gnu.org>
2336
Werner Lemberg87dc86d2013-01-24 08:39:43 +01002337 [truetype] Revert change from 2013-01-22.
2338
2339 FreeType's `height' value is the baseline-to-baseline distance...
2340
2341 * src/truetype/ttobjs.c (tt_size_reset): Undo.
2342
Alexei Podtelezhnikov869fb8c2013-01-23 19:43:28 -050023432013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
2344
Werner Lemberge9f330a2013-01-24 09:12:56 +01002345 [base, truetype] New internal `FT_Hypot' function.
Alexei Podtelezhnikovb6de8e62013-01-23 23:31:41 -05002346
2347 * include/freetype/fttrigon.h (FT_Hypot): Declare it.
2348 * src/base/fttrigon.c (FT_Hypot): Define it.
2349 * src/truetype/ttgload.c (TT_Process_Composite_Component): Use it
2350 instead of explicit expressions.
2351 * src/truetype/ttinterp.c (Current_Ratio, Normalize): Use it instead
2352 of TT_VecLen.
2353 (TT_VecLen): Removed.
2354
23552013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
2356
Alexei Podtelezhnikove1a2ac12013-01-23 19:51:28 -05002357 [base] Fix integer overflow.
2358
Alexei Podtelezhnikovda11e5e2013-01-23 20:11:40 -05002359 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Normalize incoming and
2360 outgoing vectors and use fixed point arithmetic.
2361
23622013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
2363
2364 [base] Fix integer overflow.
2365
Alexei Podtelezhnikove1a2ac12013-01-23 19:51:28 -05002366 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Scale the
2367 coordinates down to avoid overflow.
2368
23692013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
2370
Alexei Podtelezhnikov869fb8c2013-01-23 19:43:28 -05002371 [base] Split out MSB function.
2372
2373 * src/base/fttrigon.c (ft_trig_prenorm): Borrow from here.
2374 * include/freetype/internal/ftcalc.h (FT_MSB): Declare here.
2375 * src/base/ftcalc.c (FT_MSB): Define here.
2376
Werner Lemberge0469372013-01-22 11:07:07 +010023772013-01-22 Werner Lemberg <wl@gnu.org>
2378
2379 [truetype] Fix font height.
2380
2381 * src/truetype/ttobjs.c (tt_size_reset): The Windows rendering
2382 engine uses rounded values of the ascender and descender to compute
2383 the TrueType font height.
2384
Werner Lembergcd3f8712013-01-16 19:56:08 +010023852013-01-16 Behdad Esfahbod <behdad@behdad.org>
2386
2387 [sfnt] Fix optimized sbit loader.
2388
2389 It was not taking bit_depth into consideration when blitting!
2390
2391 * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_byte_aligned,
2392 * tt_sbit_decoder_load_bit_aligned): Handle bit
2393 depth.
2394
David Turner3a406122013-01-16 19:48:31 +010023952013-01-16 David 'Digit' Turner <digit@google.com>
2396
2397 [truetype] Improve sub-pixel code.
2398
2399 This patches fixes many issues with the ttsubpix implementation.
2400
2401 1. Data tables are defined, instead of declared, in the header, and
2402 thus copied into each source file that includes it.
2403
2404 2. These tables were defined as global, mutable, visible variables,
2405 and thus costing private RAM to every process that loads the
2406 library (> 50 KB / process, this is huge!).
2407
2408 Additionally, this also made the library export the symbols
2409 completely needlessly.
2410
2411 3. Missing `sph_' and `SPH_' prefixes to some of the definitions.
2412
2413 Note that this doesn't try to fix the incredibly inefficient storage
2414 format for the data tables used by the code. This one will require
2415 another pass in the future.
2416
2417 * src/truetype/ttinterp.h (MAX_NAME_SIZE, MAX_CLASS_MEMBERS):
2418 Renamed to...
2419 (SPH_MAX_NAME_SIZE, SPH_MAX_CLASS_MEMBERS): This.
2420 Update all users.
2421
2422 (SPH_TweakRule, SPH_ScaleRule): Decorate with `const' where
2423 appropriate.
2424
2425 (Font_Class): Rename to...
2426 (SPH_Font_Class): This. Decorate with `const' where appropriate.
2427
2428 * src/truetype/ttsubpix.h (scale_test_tweak, sph_test_tweak):
2429 Decorate arguments with `const' where appropriate.
2430
2431 Move font tweaking tables to...
2432
2433 * src/truetype/ttsubpic.c: This file and decorate them with `static'
2434 and `const' where appropriate.
2435
2436 (X_SCALING_Rules, X_SCALING_RULES_SIZE): Renamed to...
2437 (spu_X_SCALING_Rules, SPH_X_SCALING_RULES_SIZE): This.
2438 Update all users.
2439
Alexei Podtelezhnikov081aba32013-01-12 22:36:37 -050024402013-01-12 Alexei Podtelezhnikov <apodtele@gmail.com>
2441
Alexei Podtelezhnikov0e0fdc52013-01-12 23:05:55 -05002442 [truetype] Improve accuracy of normalization of short vectors.
2443
2444 Unit vector components are stored as 2.14 fixed-point numbers. In
2445 order to calculate all 14 bits accurately, a short vector to be
2446 normalized has to be upscaled to at least 14 bits before its length
2447 is calculated. This has been safe since accurate CORDIC algorithms
2448 were adopted.
2449
2450 * src/truetype/ttinterp.c (Normalize): Scale short vectors by 0x4000.
2451
24522013-01-12 Alexei Podtelezhnikov <apodtele@gmail.com>
2453
Alexei Podtelezhnikov081aba32013-01-12 22:36:37 -05002454 [truetype] Kill very old vector normalization hacks.
2455
2456 Back in the days, vector length calculations were not very accurate
2457 and the vector normalization function, Normalize, had to meticulously
2458 correct the errors for long vectors [commit b7ef2b096867]. It was no
2459 longer necessary after accurate CORDIC algorithms were adopted, but
2460 the code remained. It is time to kill it.
2461
2462 * src/truetype/ttinterp.c (Normalize): Remove error compensation.
2463 (TT_VecLen): Remove any mention of old less accurate implementation.
2464
Werner Lemberge4ecce32013-01-11 09:02:22 +010024652013-01-11 Werner Lemberg <wl@gnu.org>
2466
2467 Disable FT_CONFIG_OPTION_OLD_INTERNALS.
2468
2469 After the next release we are going to remove the code completely.
2470
2471 * devel/ftoption.h, include/freetype/config/ftoption.h
2472 (FT_CONFIG_OPTION_OLD_INTERNALS): Comment out.
2473 * docs/CHANGES: Document it.
2474
Alexei Podtelezhnikovad9d5c92013-01-10 22:29:07 -050024752013-01-10 Alexei Podtelezhnikov <apodtele@gmail.com>
2476
2477 [base] Update the overflow protection bit.
2478
Werner Lemberg53c0cb52013-01-11 08:29:22 +01002479 The recent optimizations of CORDIC iterations drastically reduce the
2480 expansion factor. Vector components with MSB of 29 are now safe
2481 from overflow.
Alexei Podtelezhnikovad9d5c92013-01-10 22:29:07 -05002482
2483 * src/base/fttrigon.c (FT_TRIG_SAFE_MSB): New macro.
2484 (ft_trig_prenorm): Use it and remove dead code.
2485
Alexei Podtelezhnikov6b83a362013-01-09 00:25:32 -050024862013-01-09 Alexei Podtelezhnikov <apodtele@gmail.com>
2487
2488 [base, pshinter] Use FT_ABS, FT_MIN, and FT_MAX for readability.
2489
2490 * src/base/ftbbox.c: Updated.
2491 * src/base/ftobjs.c: Updated.
2492 * src/base/fttrigon.c: Updated.
2493 * src/pshinter/pshalgo.c: Updated.
2494 * src/pshinter/pshrec.c: Updated.
2495
Alexei Podtelezhnikov09dbb052013-01-08 23:29:44 -050024962013-01-08 Alexei Podtelezhnikov <apodtele@gmail.com>
2497
2498 [base] Clean up trigonometric core.
2499
2500 * src/base/fttrigon.c: Document the algorithm in a large comment.
2501 (FT_TRIG_COSCALE): Remove macro.
2502 (FT_Tan: Use `FT_TRIG_SCALE' instead.
2503 (FT_Cos, FT_Vector_Unit): Ditto and round the return values.
2504
Alexei Podtelezhnikovb4ac30b2013-01-02 22:21:37 -050025052013-01-02 Alexei Podtelezhnikov <apodtele@gmail.com>
2506
Alexei Podtelezhnikov5dd96572013-01-02 23:45:14 -05002507 [base] Use rounding in CORDIC iterations.
2508
2509 * src/base/fttrigon.c (ft_trig_pseudo_rotate,
2510 ft_trig_pseudo_polarize): Improve accuracy by rounding.
2511
25122013-01-02 Alexei Podtelezhnikov <apodtele@gmail.com>
2513
Alexei Podtelezhnikovb4ac30b2013-01-02 22:21:37 -05002514 [base] Reduce trigonometric algorithms.
2515
2516 After we get within 45 degrees by means of true 90-degree rotations,
2517 we can remove initial 45-degree CORDIC iteration and start from
2518 atan(1/2) pseudorotation, reducing expansion factor thereby.
2519
2520 * src/base/fttrigon.c (FT_TRIG_SCALE, FT_TRIG_COSCALE): Update macros.
2521 (ft_trig_pseudo_rotate, ft_trig_pseudo_polarize): Update.
2522
2523 * src/tools/cordic.py: Bring up to date with trigonometric core.
2524
2525 * docs/CHANGES: Old typo.
2526
25272013-01-02 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov50e634a2013-01-02 20:31:56 -05002528
2529 * src/pshinter/pshalgo.h: Remove unused code.
2530
Werner Lemberg7d6dc902012-12-27 01:08:24 +010025312012-12-27 Werner Lemberg <wl@gnu.org>
2532
2533 * src/truetype/ttgload.c (tt_loader_init): Add more tracing.
2534
Werner Lemberg2ef0a192012-12-23 21:14:37 +010025352012-12-23 Werner Lemberg <wl@gnu.org>
2536
2537 [type1] Fix handling of /FontBBox in MM fonts.
2538 Problem reported by Del Merritt <del@alum.mit.edu>
2539
2540 If we have
2541
2542 /FontBBox { { 11 12 13 14 15 16 17 18 }
2543 { 21 22 23 24 25 26 27 28 }
2544 { 31 32 33 34 35 36 37 38 }
2545 { 41 42 43 44 45 46 47 48 } }
2546
2547 in the /Blend dictionary, then the first BBox is { 11 21 31 41 },
2548 the second { 12 22 32 42 }, etc.
2549
2550 * include/freetype/internal/psaux.h (T1_FieldType): Add
2551 `T1_FIELD_TYPE_MM_BBOX' (for temporary use).
2552
2553 * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
2554 Implement it.
2555
Alexei Podtelezhnikovcbf3fb32012-12-21 14:20:25 -050025562012-12-21 Alexei Podtelezhnikov <apodtele@gmail.com>
2557
2558 * src/tools/cordic.py: Bring up to date with trigonometric core.
2559
Werner Lemberg3ffb8222012-12-21 16:45:27 +010025602012-12-21 Werner Lemberg <wl@gnu.org>
2561
2562 Check parameters of `FT_Outline_New'.
2563 Problem reported by Robin Watts <robin.watts@artifex.com>.
2564
2565 * src/base/ftoutln.c (FT_Outline_New_Internal): Ensure that
2566 `numContours' and `numPoints' fit into FT_Outline's `n_points' and
2567 `n_contours', respectively.
2568
Werner Lembergc6a66b42012-12-20 08:31:56 +010025692012-12-20 Werner Lemberg <wl@gnu.org>
2570
2571 * Version 2.4.11 released.
2572 ==========================
2573
2574
2575 Tag sources with `VER-2-4-11'.
2576
2577 * docs/CHANGES, docs/release: Updated.
2578
2579 * docs/VERSION.DLL: Update documentation and bump version number to
2580 2.4.11.
2581
2582 * README, Jamfile (RefDoc),
2583 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
2584 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
2585 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
2586 builds/win32/visualc/freetype.dsp,
2587 builds/win32/visualc/freetype.vcproj,
2588 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
2589 builds/win32/visualce/freetype.vcproj,
2590 builds/win32/visualce/index.html,
2591 builds/wince/vc2005-ce/freetype.vcproj,
2592 builds/wince/vc2005-ce/index.html,
2593 builds/wince/vc2008-ce/freetype.vcproj,
2594 builds/wince/vc2008-ce/index.html: s/2.4.10/2.4.11/, s/2410/2411/.
2595
Werner Lembergcecf93e2013-05-08 11:39:16 +02002596 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 11.
Werner Lembergc6a66b42012-12-20 08:31:56 +01002597
2598 * builds/unix/configure.raw (version_info): Set to 16:0:10.
2599
2600 * builds/toplevel.mk (dist): Don't include `.mailmap'.
2601
Alexei Podtelezhnikovd7383b72012-12-20 01:03:22 -050026022012-12-20 Alexei Podtelezhnikov <apodtele@gmail.com>
2603
2604 [base] Improve trigonometric core.
2605
2606 FreeType used to rely on a 24-step iteration CORDIC algorithm to
2607 calculate trigonometric functions and rotate vectors. It turns out
2608 that once the vector is in the right half-plane, the initial rotation
2609 by 63 degrees is not necessary. The algorithm is perfectly capable
2610 to converge to any angle starting from the second 45 degree rotation.
2611 This patch removes the first rotation and makes it a 23-step CORDIC
2612 algorithm.
2613
2614 * src/base/fttrigon.c (FT_TRIG_SCALE, FT_TRIG_COSCALE): Update macro
2615 values.
2616 (ft_trig_pseudo_rotate, ft_trig_pseudo_polarize): Remove initial
2617 rotation.
2618
Werner Lemberg768590a2012-12-20 06:08:23 +010026192012-12-19 Werner Lemberg <wl@gnu.org>
2620
2621 * src/base/ftobjs.c (ft_property_do): Fix compiler warning.
2622
Alexei Podtelezhnikov06174db2012-12-19 22:46:27 -050026232012-12-19 Alexei Podtelezhnikov <apodtele@gmail.com>
2624
Alexei Podtelezhnikov32fc4162012-12-19 23:05:32 -05002625 * src/base/ftrfork.c (FT_Raccess_Guess): Switch to FT_Int counters.
2626
26272012-12-19 Alexei Podtelezhnikov <apodtele@gmail.com>
2628
Alexei Podtelezhnikov06174db2012-12-19 22:46:27 -05002629 [base] Clean up trigonometric core.
2630
2631 * src/base/fttrrigon.c (ft_trig_pseudo_polarize): Align algorithm
2632 with `ft_trig_pseudo_rotate'.
2633
Infinality1749ae22012-12-18 07:23:09 -060026342012-12-18 Infinality <infinality@infinality.net>
2635
2636 [truetype] Minor performance enhancement.
2637
2638 * src/truetype/ttgload.c: (TT_Process_Simple_Glyph): Use FT_MulFix
2639 instead of FT_MulDiv.
2640
Infinality94b79e72012-12-17 19:17:30 -060026412012-12-17 Infinality <infinality@infinality.net>
2642
2643 [truetype] Remove unusued code and variables.
2644
2645 * src/truetype/ttinterp.c: Updated.
2646 (Ins_FDEF): Remove opcode patterns that are not being used.
2647
Werner Lemberga9f6f852012-12-17 09:08:09 +010026482012-12-16 Werner Lemberg <wl@gnu.org>
2649
2650 Various compiler warning fixes.
2651
2652 * include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Use
2653 `logical not' operator instead of negation. The idea is that `~'
2654 returns exactly the data type enforced by the cast to a pointer (be
2655 it 32bit or 64bit or whatever), while a negative integer has not
2656 this flexibility.
2657 * src/cache/ftccmap.c (FTC_CMAP_UNKNOWN): Ditto.
2658 * src/truetype/ttgxvar.c (ALL_POINTS, TT_Get_MM_Var): Ditto.
2659 * src/type/t1load.c (T1_Get_MM_Var): Ditto.
2660 (parse_blend_axis_types): Use cast.
2661 * src/bdf/bdflib.c (_bdf_readstream): Use cast.
2662
Infinality71f242c2012-12-16 19:52:01 -060026632012-12-16 Infinality <infinality@infinality.net>
2664
2665 [truetype] Remove unusued code and variables. Add minor fixes.
2666
2667 * src/truetype/ttsubpix.h: Updated.
2668 (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Trebuchet MS.
2669 (ALLOW_X_DMOVEX_Rules): Remove Arial characters.
2670 (ALLOW_X_DMOVE_Rules): Remove Arial characters.
2671 (RASTERIZER_35_Rules): Verdana no longer needs to be here.
2672 (SKIP_IUP_Rules): Formatting fix.
2673 (DELTAP_SKIP_EXAGGERATED_VALUES_Rules): Remove Segoe UI.
2674 (COMPATIBLE_WIDTHS_Rules): Add Monaco and Trebuchet MS.
2675 (X_SCALING_Rules): Add misc. corrective fixes.
2676
2677 * src/truetype/ttgload.c: (TT_Process_Simple_Glyph): Adjust correction
2678 factor for emboldening during scaling.
2679
2680 * src/truetype/ttinterp.h: Updated.
2681 (TT_ExecContextRec): Remove unused variables.
2682
2683 * src/truetype/ttobjs.h: Updated.
2684 (TT_SizeRec): Add ttfautohinted variable.
2685
2686 * src/truetype/ttinterp.c: Updated.
2687 (Ins_FDEF): Rework code to fix bugs and add more detection.
2688 (Ins_CALL): Remove unused code.
2689 (Ins_LOOPCALL): Remove unused code.
2690 (TT_RunIns): Remove unusued code.
2691 (Ins_SHPIX): Add logic to handle ttfautohinted fonts.
2692 (Ins_MIRP): Don't round x in cut-in calculation. Add logic to handle
2693 ttfautohinted fonts.
2694
Werner Lemberga9f6f852012-12-17 09:08:09 +010026952012-12-16 Werner Lemberg <wl@gnu.org>
Werner Lemberg309b8b32012-12-16 19:08:36 +01002696
2697 [sfnt] Fix Savannah bug #37936.
2698
2699 * src/sfnt/ttload.c (tt_face_load_gasp): Avoid memory leak.
2700
Alexei Podtelezhnikov8ac5c5c2012-12-15 23:33:55 -050027012012-12-15 Alexei Podtelezhnikov <apodtele@gmail.com>
2702
2703 [base] Fix 11-year old bug.
2704
2705 Since the initial commit (ebe85f59) the value of FT_TRIG_SCALE has
2706 always been slightly less than the correct value, which has been
2707 given in the comment as a hexadecimal. As a result, vector lengths
2708 were underestimated and rotated vectors were shortened.
2709
2710 * src/base/fttrigon.c (FT_TRIG_SCALE): Fix macro value.
2711
Werner Lemberg9b6b5752012-12-15 01:34:41 +010027122012-12-15 Werner Lemberg <wl@gnu.org>
2713
Werner Lemberg7f2e4f42012-12-15 09:39:41 +01002714 [bdf] Fix Savannah bug #37907.
2715
2716 * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Normalize
2717 negative second parameter of `ENCODING' field also.
2718
27192012-12-15 Werner Lemberg <wl@gnu.org>
2720
Werner Lemberg07bdb6e2012-12-15 02:02:23 +01002721 [bdf] Fix Savannah bug #37906.
2722
Werner Lemberg7f2e4f42012-12-15 09:39:41 +01002723 * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Use correct array
2724 size for checking `glyph_enc'.
Werner Lemberg07bdb6e2012-12-15 02:02:23 +01002725
27262012-12-15 Werner Lemberg <wl@gnu.org>
2727
Werner Lemberg9b6b5752012-12-15 01:34:41 +01002728 [bdf] Fix Savannah bug #37905.
2729
Werner Lemberg7f2e4f42012-12-15 09:39:41 +01002730 * src/bdf/bdflib.c (_bdf_parse_start) <STARTPROPERTIES>: Reset
2731 `props_size' to zero in case of allocation error; this value gets
2732 used in a loop in `bdf_free_font'.
Werner Lemberg9b6b5752012-12-15 01:34:41 +01002733
Alexei Podtelezhnikov65d65722012-12-10 06:59:29 -050027342012-12-10 Alexei Podtelezhnikov <apodtele@gmail.com>
2735
2736 [truetype] Scale F_dot_P down.
2737
2738 The dot product between freeVector and projVector or cosine of
2739 the angle between these FT_F2Dot14 unit vectors used to be scaled up
2740 by 4 and routinely occupied 32 bits in an FT_Long field F_dot_P.
Werner Lemberg53c0cb52013-01-11 08:29:22 +01002741 This patch scales the value down by 2^14 instead, which simplifies
Alexei Podtelezhnikov65d65722012-12-10 06:59:29 -05002742 its use throughout the bytecode interpreter.
2743
2744 This does not lead to the loss of precision because the lower bits
2745 are unreliable anyway. Consider two unit vectors (1,0) and (.6,.8)
2746 for which the true value of F_dot_P is .6 * 0x40000000 = 0x26666666.
2747 These vectors are stored as (0x4000,0) and (0x2666,0x3333) after
2748 rounding and F_dot_P is assigned 0x26660000. The lower bits were
2749 already lost while rounding the unit vector components.
2750
2751 Besides code simplification, this change can lead to better
2752 performance when FT_MulDiv with the scaled-down F_dot_P is less
2753 likely to use the costly 64-bit path. We are not changing the type
Werner Lemberg53c0cb52013-01-11 08:29:22 +01002754 of F_dot_P to FT_F2Dot14 at this point.
Alexei Podtelezhnikov65d65722012-12-10 06:59:29 -05002755
2756 * src/truetype/ttinterp.c (Compute_Funcs): Scale F_dot_P down by 14
2757 bits and modify its use accordingly.
2758 (Direct_Move, Direct_Move_Orig, Compute_Point_Displacement): Modify
2759 the use of F_dot_P field.
2760 * src/truetype/ttobjs.c (tt_size_run_fpgm): Change arbitrary
2761 assignment of F_dot_P to its theoretical maximum in case we decide
2762 to scale back its type later.
2763
Johnson Y. Yan06d69162012-12-09 00:07:51 +010027642012-12-09 Johnson Y. Yan <yinsen_yan@foxitsoftware.com>
2765
2766 [type1] Another fix for 2012-09-17 commit.
2767
2768 * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Correctly set
2769 `limit' value.
2770
Alexei Podtelezhnikov5ad05f92012-12-06 00:27:20 -050027712012-12-06 Alexei Podtelezhnikov <apodtele@gmail.com>
2772
Alexei Podtelezhnikovcece4d32012-12-06 20:23:38 -05002773 [truetype] Tweak the previous commit.
2774
2775 * src/truetype/ttinterp.c (Current_Ratio): Put unit vector
2776 components as the second TT_MulFix14 arguments. This is required
2777 on 16-bit systems.
2778
27792012-12-06 Alexei Podtelezhnikov <apodtele@gmail.com>
2780
Alexei Podtelezhnikov5ad05f92012-12-06 00:27:20 -05002781 [truetype] Microoptimizations in bytecode interpreter.
2782
2783 * src/truetype/ttinterp.c (TT_DivFix14): New macro.
2784 (Normalize): Use it here.
2785 (Current_Ratio): Use TT_MulFix14 instead of FT_MulDiv.
2786 (Ins_SHPIX): Cancel out two TT_MulFix14 calls.
2787
Alexei Podtelezhnikovb50088b2012-12-05 23:05:47 -050027882012-12-05 Alexei Podtelezhnikov <apodtele@gmail.com>
2789
2790 [truetype] Cosmetic improvement in bytecode interpreter.
2791
2792 * src/truetype/ttinterp.c: Use explicit calls to FT_MulDiv,
2793 FT_MulFix, and FT_DivFix instead of macros.
2794
John Tytgat54d43a32012-12-05 11:14:41 +010027952012-12-03 John Tytgat <John.Tytgat@esko.com>
2796
2797 [pshinter] Clamp BlueScale value.
2798
2799 This is Savannah bug #37856.
2800
2801 * src/pshinter/pshglob.c (psh_calc_max_height): New function.
2802 (psh_globals_new): Use it to limit BlueScale value to
2803 `1 / max_of_blue_zone_heights'.
2804
Alexei Podtelezhnikov4ae9cbb2012-12-01 23:36:02 -050028052012-12-01 Alexei Podtelezhnikov <apodtele@gmail.com>
2806
2807 [truetype, type1] Revise the use of FT_MulDiv.
2808
2809 * src/truetype/ttgxvar.c: Updated.
2810 * src/truetype/ttobjs.c: Updated.
2811 * src/type1/t1load.c: Updated.
2812
Werner Lemberg7e8e1762012-11-30 13:45:47 +010028132012-11-30 Werner Lemberg <wl@gnu.org>
2814
2815 [configure] Preserve customized `ftoption.h'.
2816
2817 Problem reported by Del Merritt <del@alum.mit.edu>.
2818
2819 * builds/unix/configure.raw <cpp computation of bit length>: Don't
2820 remove existing FreeType configuration files.
2821
Werner Lembergb731c822012-11-30 15:22:03 +010028222012-11-29 John Tytgat <John.Tytgat@esko.com>
Werner Lemberg337fcb62012-11-29 21:10:10 +01002823
2824 [type1] Fix Savannah bug #37831.
2825
2826 The bug report also contains a patch.
2827
2828 * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Really fix
2829 change from 2012-09-17.
2830
Alexei Podtelezhnikov6a126e12012-11-28 23:32:02 -050028312012-11-28 Alexei Podtelezhnikov <apodtele@gmail.com>
2832
2833 [truetype] Fix formatting and typo.
2834
Alexei Podtelezhnikov72e976d2012-11-27 21:18:34 -050028352012-11-27 Alexei Podtelezhnikov <apodtele@gmail.com>
2836
Alexei Podtelezhnikov79180ad2012-11-27 21:36:20 -05002837 [cid, type1, type42] Clean up units_per_EM calculations.
2838
2839 * src/cid/cidload.c (cid_parse_font_matrix): Updated.
2840 * src/type1/t1load.c (t1_parse_font_matrix): Updated.
2841 * src/type42/t42parse.c (t42_parse_font_matrix): Updated.
2842
Alexei Podtelezhnikov79180ad2012-11-27 21:36:20 -050028432012-11-27 Alexei Podtelezhnikov <apodtele@gmail.com>
2844
Alexei Podtelezhnikov72e976d2012-11-27 21:18:34 -05002845 [ftstroke] Minor improvement.
2846
2847 * src/base/ftstroke.c: Replace nested FT_DivFix and FT_MulFix with
2848 FT_MulDiv.
2849
Werner Lembergfa22ec12012-11-17 11:45:24 +010028502012-11-17 Werner Lemberg <wl@gnu.org>
2851
2852 * src/base/fttrigon.c (ft_trig_downscale): Make 64bit version work.
2853
Alexei Podtelezhnikov0690d3d2012-11-15 20:50:59 -050028542012-11-15 Alexei Podtelezhnikov <apodtele@gmail.com>
2855
2856 [base] Fix integer overflows in dd5718c7d67a.
2857
2858 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use FT_MulDiv.
2859
Werner Lemberg3a553402012-11-15 16:37:05 +010028602012-11-15 Werner Lemberg <wl@gnu.org>
2861
2862 [autofit] Trace stem widths.
2863
2864 * src/autofit/aflatin.c (af_latin_metrics_init_widths): Add some
2865 FT_TRACE calls.
2866
Werner Lemberg55127272012-11-13 09:22:11 +010028672012-11-13 Werner Lemberg <wl@gnu.org>
2868
2869 [cff] Add support for OpenType Collections (OTC).
2870
2871 * src/cff/cffload.c (cff_font_load): Separate subfont and face
2872 index handling to load both pure CFFs with multiple subfonts and
2873 OTCs (with multiple faces where each face holds exactly one
2874 subfont).
2875 * src/cff/cffobjs.c (cff_face_init): Updated.
2876
Werner Lemberg1a37e412012-11-12 11:01:07 +010028772012-11-12 Werner Lemberg <wl@gnu.org>
2878
2879 [autofit] Minor improvement.
2880
2881 * src/autofit/aflatin.c (af_latin_hints_compute_blue_edges): Fix
2882 loop.
2883
Werner Lembergf966da82012-11-10 12:42:18 +010028842012-11-10 Werner Lemberg <wl@gnu.org>
2885
2886 [autofit] Improve tracing.
2887
2888 * src/autofit/aflatin.c (af_latin_hint_edges)
2889 [FT_DEBUG_LEVEL_TRACE]: Count number of actions and emit something
2890 if there weren't any.
2891
Alexei Podtelezhnikovdd5718c2012-11-04 00:57:57 -040028922012-11-04 Alexei Podtelezhnikov <apodtele@gmail.com>
2893
2894 [base] Fortify emboldening code against egregious distortions.
2895
2896 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Threshold emboldening
2897 strength when it leads to segment collapse.
2898
Alexei Podtelezhnikov48ce2262012-11-03 22:27:27 -040028992012-11-03 Alexei Podtelezhnikov <apodtele@gmail.com>
2900
2901 [base] Clean up emboldening code and improve comments there.
2902
2903 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Replace sequential
2904 calls to FT_MulFix and FT_DivFix with FT_MulDiv.
2905 Mention that bisectors are used to figure out the shift direction.
2906
Werner Lemberg118c6022012-10-24 12:26:20 +020029072012-10-24 Werner Lemberg <wl@gnu.org>
2908
Werner Lemberg553bb3c2012-10-24 14:22:14 +02002909 [autofit] Add standard character to `AF_ScriptClassRec' structure.
2910
2911 * src/autofit/aftypes.h (AF_ScriptClassRec): Add `standard_char'
2912 member.
2913 (AF_DEFINE_SCRIPT_CLASS): Updated.
2914
2915 * src/autofit/aflatin.c (af_latin_metrics_init_widths): Use it.
2916 (af_latin_metrics_init, af_latin_script_class): Updated.
2917
2918 * src/autofit/aflatin.c (af_latin2_metrics_init_widths): Use it.
2919 (af_latin2_metrics_init, af_latin2_script_class): Updated.
2920
2921 * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Use it.
2922 (af_cjk_metrics_init, af_cjk_script_class): Updated.
2923
2924 * src/autofit/afindic.c (af_indic_metrics_init,
2925 af_indic_script_class): Updated.
2926
2927 * src/autofit/afcjk.h, src/autofit/aflatin.h: Updated.
2928
2929 * src/autofit/afdummy.c: Updated.
2930
29312012-10-24 Werner Lemberg <wl@gnu.org>
2932
Werner Lemberg118c6022012-10-24 12:26:20 +02002933 [autofit] Only use Unicode CMap.
2934
2935 * src/autofit/aflatin.c (af_latin_metrics_init): Implement it, to be
Werner Lemberg553bb3c2012-10-24 14:22:14 +02002936 in sync with `af_face_globals_compute_script_coverage'.
Werner Lemberg118c6022012-10-24 12:26:20 +02002937
Werner Lembergfdcbaf12012-10-21 10:40:12 +020029382012-10-21 Werner Lemberg <wl@gnu.org>
2939
Werner Lemberg8e82a962012-10-21 11:02:50 +02002940 [psaux] Improve parsing of invalid numbers.
2941
2942 * src/psaux/psconv.c (PS_Conv_Strtol): Always parse complete number,
2943 even in case of overflow.
2944 (PS_Conv_ToInt): Only increase cursor if parsing was successful.
2945 (PS_Conv_ToFixed): Ditto.
2946 Trace underflow and data error.
2947
29482012-10-21 Werner Lemberg <wl@gnu.org>
2949
Werner Lembergfdcbaf12012-10-21 10:40:12 +02002950 [smooth] Improve tracing.
2951
2952 * src/smooth/ftgrays.c (gray_sweep): Trace last sweep line of
2953 current band also.
2954
Alexei Podtelezhnikov24e897d2012-10-20 22:23:01 -040029552012-10-20 Alexei Podtelezhnikov <apodtele@gmail.com>
2956
Werner Lembergfdcbaf12012-10-21 10:40:12 +02002957 [truetype] Cheaper way to threshold angles between vectors.
Alexei Podtelezhnikov24e897d2012-10-20 22:23:01 -04002958
2959 * src/truetype/ttinterp.c (Ins_ISECT): Thresholding tangent is a lot
Werner Lemberg53c0cb52013-01-11 08:29:22 +01002960 cheaper than thresholding sine.
Werner Lembergfdcbaf12012-10-21 10:40:12 +02002961
Werner Lembergad4eecc2012-10-20 21:27:17 +020029622012-10-20 Werner Lemberg <wl@gnu.org>
2963
2964 [cff] Improve parsing of invalid real numbers.
2965
2966 * src/cff/cffparse.c (cff_parse_real): Always parse complete number,
2967 even in case of overflow or underflow.
2968 Also trace one more underflow.
2969
Andreas Pehnack1e168832012-10-20 11:42:22 +020029702012-10-20 Andreas Pehnack <andreas.pehnack@me.com>
2971
2972 [sfnt] Load pure CFF fonts wrapped in SFNT container.
2973
2974 Such fonts only have a `cmap' and a `CFF' table.
2975
2976 * src/sfnt/ttload.c (tt_face_load_font_dir): Don't call
2977 `check_table_dir' if font signature is `OTTO'.
2978
Werner Lembergdda1e932012-10-20 08:34:57 +020029792012-10-20 Werner Lemberg <wl@gnu.org>
2980
Werner Lembergeaf0afb2012-10-20 11:27:25 +02002981 [psaux] Fix some value overflows and improve tracing.
2982
2983 * src/psaux/psconv.c: Include FT_INTERNAL_DEBUG_H.
2984 (FT_COMPONENT): Define.
2985 (PS_Conv_Strtol): Return FT_Long.
2986 Handle bad data and overflow.
2987 Emit some tracing messages in case of error.
2988 (PS_Conv_ToInt): Return FT_Long.
2989 (PS_Conv_ToFixed): Updated.
2990 * src/psaux/psconv.h: Updated.
2991
2992 * include/freetype/internal/fttrace.h: Add `psconv'.
2993
29942012-10-20 Werner Lemberg <wl@gnu.org>
2995
Werner Lembergdda1e932012-10-20 08:34:57 +02002996 [autofit] Fix `make multi CC=c++'.
2997
2998 * src/autofit/aflatin.c, src/autofit/aflatin2.c: Include
2999 `afglobal.h'.
3000 * src/autofit/afloader.c: Fix order of header files.
3001 * src/autofit/afmodule.c: Include `afglobal.h' and `aferrors.h'.
3002
Werner Lemberg4404ec42012-10-19 09:06:53 +020030032012-10-19 Werner Lemberg <wl@gnu.org>
3004
3005 [cff] Fix more value errors and improve tracing.
3006
3007 * src/cff/cffparse.c (cff_parse_integer): Emit tracing message in
3008 case of error.
3009 (cff_parse_real): Handle and trace overflow, underflow, and bad data
3010 consistently.
3011 (do_fixed): New helper function, handling and tracing overflow.
3012 (cff_parse_fixed, cff_parse_fixed_scaled): Use `do_fixed'.
3013
Werner Lemberg0708b232012-10-17 21:38:19 +020030142012-10-17 Werner Lemberg <wl@gnu.org>
3015
3016 [psaux] Fix some value overflows.
3017
3018 * src/psaux/psconv.c (PS_Conv_ToFixed): Implement it.
3019
Bram Tassyns76accc12012-10-17 19:55:20 +020030202012-10-17 Bram Tassyns <BramT@enfocus.com>
3021
3022 [cff] Fix value overflow.
3023
3024 * src/cff/cffparse.c (cff_parse_fixed_scaled): Implement it.
3025
Werner Lemberg2df16762012-10-17 11:34:22 +020030262012-10-17 Werner Lemberg <wl@gnu.org>
3027
3028 [truetype] Fix Savannah bug #37572.
3029
3030 * src/truetype/ttinterp.c (Ins_ISECT): Use angle between vectors to
3031 avoid grazing intersections. The previous threshold was too coarse,
3032 incorrectly rejecting short but valid vectors.
3033
Gilles Espinassebe81ec22012-09-30 08:42:30 +020030342012-09-30 Gilles Espinasse <g.esp@free.fr>
3035
3036 Remove useless `rm' detection.
3037
3038 `rm -f' is directly used in the `configure' script created by
3039 autoconf, thus no availability test is necessary.
3040
3041 * builds/unix/configure.raw (RMF): Remove test.
3042 * builds/unix/unix-def.in (DELETE): Updated.
3043
Werner Lemberg156ba422012-09-29 10:08:01 +020030442012-09-29 Werner Lemberg <wl@gnu.org>
3045
Werner Lembergbf745002012-09-29 22:40:40 +02003046 [autofit] Minor optimization.
3047
3048 * src/autofit/afglobals.c (af_face_globals_compute_script_coverage):
3049 Add loop condition.
3050
30512012-09-29 Werner Lemberg <wl@gnu.org>
3052
Werner Lemberg156ba422012-09-29 10:08:01 +02003053 [autofit] Fix thinko.
3054
3055 * src/autofit/aftypes.h (AF_SCRIPT):
3056 s/AF_SCRIPT_NONE/AF_SCRIPT_DUMMY/. We already use `AF_SCRIPT_NONE'
3057 as a bit mask.
3058
3059 * src/autofit/afdummy.c: Updated.
3060
Werner Lemberg842c4ea2012-09-18 15:23:41 +020030612012-09-18 Werner Lemberg <wl@gnu.org>
3062
Werner Lemberg3683fb52012-09-18 23:31:05 +02003063 [autofit] Implement `increase-x-height' property.
3064
3065 * include/freetype/ftautoh.h (FT_Prop_IncreaseXHeight): New
3066 structure.
3067
3068 * include/autofit/afmodule.c (af_property_get_face_globals): New
3069 function, re-using code from `af_property_get'.
3070 (af_property_set, af_property_get): Handle `increase-x-height'.
3071 Updated.
3072
30732012-09-18 Werner Lemberg <wl@gnu.org>
3074
Werner Lembergd180ac72012-09-18 23:26:37 +02003075 [autofit] Implement Infinality's `increase glyph heights'.
3076
3077 This is an improved version of a similar fix contained in the
3078 so-called `Infinality patch', taken from
3079
3080 http://www.infinality.net/fedora/linux/zips/freetype-infinality-2.4.10-20120616_01-x86_64.tar.bz2
3081
3082 which addresses various enhancements of the auto-hinter. Without
3083 properties to control a module's metadata it wasn't possible to
3084 adapt the patches because everything was originally controlled by
3085 environment variables which I consider not suitable in general.
3086
3087 A patch to control `increase_x_height' follows.
3088
3089 * src/autofit/afglobal.h (AF_PROP_INCREASE_X_HEIGHT_MIN,
3090 AF_PROP_INCREASE_X_HEIGHT_MAX): New macros.
3091 (AF_FaceGlobalsRec): Add `increase_x_height' member.
3092 * src/autofit/afglobal.c (af_face_globals_new): Initialize it.
3093
3094 * src/autofit/aflatin.c (af_latin_metrics_scale_dim),
3095 * src/autofit/aflatin2.c (af_latin2_metrics_scale_dim): Implement
3096 handling of `increase_x_height'.
3097
30982012-09-18 Werner Lemberg <wl@gnu.org>
3099
Werner Lemberg842c4ea2012-09-18 15:23:41 +02003100 [autofit] Add hierarchical property access to some structures.
3101
3102 * src/autofit/afglobal.h: Include `afmodule.h'.
3103 (AF_FaceGlobalsRec): Add `module' member.
3104 (AF_FaceGlobals): Typedef moved to...
3105 * src/autofit/aftypes.h: Here.
3106 (AF_ScriptMetricsRec): Add `globals' member.
3107
3108 * src/autofit/afglobal.c (af_face_globals_new,
3109 af_face_globals_compute_script_coverage,
3110 af_face_globals_get_metrics): Updated.
3111
3112 * src/autofit/afloader.c (af_loader_reset), src/autofit/afmodule.c
3113 (af_property_get): Updated.
3114
Werner Lembergebda8b32012-09-17 20:59:31 +020031152012-09-17 Werner Lemberg <wl@gnu.org>
3116
Werner Lemberg273e2b72012-09-18 13:27:27 +02003117 [type1] Fix Savannah bug #37350.
Werner Lembergebda8b32012-09-17 20:59:31 +02003118
3119 * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Check for ASCII
3120 storage only if we actually have at least four bytes.
3121
Werner Lemberg073a4ce2012-09-15 09:10:06 +020031222012-09-15 Werner Lemberg <wl@gnu.org>
3123
Werner Lembergd4ec0072012-09-15 18:26:28 +02003124 [autofit] Implement `fallback-script' property.
3125
3126 * src/autofit/afglobal.c: s/default_script/fallback_script/.
3127 * src/autofit/afglobal.h: s/AF_SCRIPT_DEFAULT/AF_SCRIPT_FALLBACK/.
3128
3129 * src/autofit/afmodule.c: s/default_script/fallback_script/.
3130 (af_property_set, af_property_get): Implement `fallback-script'.
3131 * src/autofit/afmodule.h: s/default_script/fallback_script/.
3132
3133 * include/freetype/ftautoh.h: Document it.
3134
31352012-09-15 Werner Lemberg <wl@gnu.org>
3136
Werner Lemberg44e1f0d2012-09-15 11:11:18 +02003137 [autofit] Correct previous Unicode 6.1.0 change.
3138
3139 The auto-hinter's latin module only handles latin ligatures in the
3140 `Alphabetical Presentation Forms' block.
3141
3142 * src/autofit/aflatin.c (af_latin_uniranges): Fix it.
3143
31442012-09-15 Werner Lemberg <wl@gnu.org>
3145
Werner Lembergce92c5f2012-09-15 10:56:15 +02003146 * src/autofit/afmodule.c: s/FT_Err_/AF_Err_/.
3147
31482012-09-15 Werner Lemberg <wl@gnu.org>
3149
Werner Lembergd0014f22012-09-15 10:33:43 +02003150 [autofit] Make default script a global property.
3151
3152 * src/autofit/afmodule.h (AF_ModuleRec): Add `default_script' field.
3153
3154 * src/autofit/afglobal.c (af_face_globals_compute_script_coverage,
3155 af_face_globals_new), src/autofit/afloader.c (af_loader_reset),
3156 src/autofit/afmodule.c (af_property_get) <glyph-to-script-map>,
3157 af_autofitter_init:
3158 Handle default script.
3159
3160 * src/autofit/afglobal.h: Updated.
3161
31622012-09-15 Werner Lemberg <wl@gnu.org>
3163
Werner Lemberg073a4ce2012-09-15 09:10:06 +02003164 Use `FT_Module' instead of `FT_Library' argument in property funcs.
3165
3166 This internal change simplifies access to global module data.
3167
3168 * include/freetype/internal/services/svprop.h
3169 (FT_Properties_SetFunc, FT_Properties_GetFunc): Change accordingly.
3170
3171 * src/base/ftobjs.c (ft_property_do), src/autofit/afmodule.c
3172 (af_property_set, af_property_get): Updated.
3173
Werner Lemberg688da8e2012-09-14 07:55:15 +020031742012-09-14 Werner Lemberg <wl@gnu.org>
3175
Werner Lemberg8ae2a652012-09-14 14:10:01 +02003176 [autofit] Update to Unicode 6.1.0.
3177
3178 * src/autofit/afcjk.c (af_cjk_uniranges), src/autofit/aflatin.c
3179 (af_latin_uniranges): Add and fix ranges.
3180
31812012-09-14 Werner Lemberg <wl@gnu.org>
3182
Werner Lemberg95dae1c2012-09-14 12:26:57 +02003183 [autofit] Pass `AF_Module' instead of `AF_Loader'.
3184
3185 We want to access the (not yet existing) module's global data later
3186 on.
3187
3188 * src/autofit/afloader.c: Include `afmodule.h'.
3189 (af_loader_init, af_loader_reset, af_loader_done,
3190 af_loader_load_glyph): Change accordingly.
3191 * src/autofit/afmodule.c (AF_ModuleRec): Move to `afmodule.h'.
3192 Updated.
3193
3194 * src/autofit/afmodule.h: Include `afloader.h'.
3195 (AF_ModuleRec): Define here.
3196 * src/autofit/afloader.h (AF_Module): Define here.
3197 Updated.
3198
31992012-09-14 Werner Lemberg <wl@gnu.org>
3200
Werner Lemberg6d29c5c2012-09-14 11:57:36 +02003201 [autofit] Fix `make multi'.
3202
3203 * include/freetype/internal/fttrace.h: Add `afmodule'.
3204 * src/autofit/afmodule.c: Include FT_INTERNAL_DEBUG_H.
3205 (FT_COMPONENT): Define.
3206
32072012-09-14 Werner Lemberg <wl@gnu.org>
3208
Werner Lemberg688da8e2012-09-14 07:55:15 +02003209 * src/autofit/afmodule.c: s/FT_Autofitter/AF_Module/.
3210
Werner Lemberg7bbbcbf2012-09-12 17:45:39 +020032112012-09-12 Werner Lemberg <wl@gnu.org>
3212
3213 [autofit] Minor reorganization.
3214
3215 * src/autofit/afglobal.c (AF_SCRIPT_LIST_DEFAULT,
3216 AF_SCRIPT_LIST_NONE, AF_DIGIT): Move to...
3217 * src/autofit/afglobal.h (AF_SCRIPT_DEFAULT, AF_SCRIPT_LIST_NONE,
3218 AF_DIGIT): This and update code.
3219
Werner Lemberg2be60cf2012-09-01 22:31:43 +020032202012-09-01 Werner Lemberg <wl@gnu.org>
3221
3222 [autofit] Implement `glyph-to-script-map' property.
3223
3224 * include/freetype/ftautoh.h: New public header file.
3225 * include/freetype/config/ftheader.h (FT_AUTOHINTER_H): New macro.
3226
3227 * src/autofit/afglobal.c (AF_FaceGlobalsRec): Move structure to...
3228 * src/autofit/afglobal.h: This header file.
3229 * src/autofit/afmodule.c: Include FT_AUTOHINTER_H.
3230 (af_property_get): Handle `glyph-to-script-map'.
3231
Werner Lemberg7f316f22012-08-31 00:20:29 +020032322012-08-31 Werner Lemberg <wl@gnu.org>
3233
3234 [autofit] Implement properties service framework.
3235
3236 No properties are added yet.
3237
3238 * src/autofit/afmodule.c: Include FT_SERVICE_PROPERTIES_H.
3239 (af_property_set, af_property_get): New dummy functions.
3240 (af_service_properties, af_services, af_get_interface): Provide
3241 service setup.
3242 (autofit_moduleclass): Add service interface.
3243
3244 * src/autofit/afpic.c: Add necessary forward declarations.
3245 (autofit_module_class_pic_init): Add code for service addition.
3246 (autofit_module_pic_free): Add code for service removal.
3247 * src/autofit/afpic.h (AF_SERVICES_GET, AF_SERVICE_PROPERTIES_GET):
3248 New macros which provide necessary syntactical sugar for PIC
3249 support.
3250
Werner Lemberg0f8fd882012-08-30 23:31:55 +020032512012-08-30 Werner Lemberg <wl@gnu.org>
3252
3253 Implement properties to control FreeType modules.
3254
3255 * include/freetype/fterrdef.h (FT_Err_Missing_Property): New error
3256 code.
3257 * include/freetype/ftmodapi.h (FT_Property_Set, FT_Property_Get):
3258 New API.
3259
3260 * include/freetype/internal/services/svprop.h: New file.
3261 * include/freetype/internal/ftserv.h (FT_SERVICE_PROPERTIES_H): New
3262 macro.
3263
3264 * src/base/ftobjs.c: Include FT_SERVICE_PROPERTIES_H.
3265 (ft_property_do, FT_Property_Set, FT_Property_Get): New functions.
3266
Werner Lemberg590344c2012-08-29 09:16:56 +020032672012-08-29 Werner Lemberg <wl@gnu.org>
3268
3269 [docmaker] Allow `-' in tags and identifiers.
3270
3271 * src/tools/docmaker/content.py (re_identifier),
3272 src/tools/docmaker/sources.py (re_markup_tag1, re_markup_tag2,
3273 re_crossref): Add `-' in patterns.
3274
Werner Lembergd0841ea2012-08-27 06:57:05 +020032752012-08-27 Werner Lemberg <wl@gnu.org>
3276
Werner Lemberg328aa3b2012-08-27 11:23:41 +02003277 [FT_CONFIG_OPTION_PIC] Fix g++ 4.6.2 compiler warnings.
3278
3279 * include/freetype/internal/ftdriver.h (FT_DEFINE_DRIVER),
3280 include/freetype/internal/ftobjs.h (FT_DEFINE_RENDERER,
3281 FT_DEFINE_MODULE), include/freetype/internal/ftserv.h
3282 (FT_DEFINE_SERVICEDESCREC1, FT_DEFINE_SERVICEDESCREC2,
3283 FT_DEFINE_SERVICEDESCREC3, FT_DEFINE_SERVICEDESCREC4,
3284 FT_DEFINE_SERVICEDESCREC5, FT_DEFINE_SERVICEDESCREC6),
3285 src/autofit/afpic.c (autofit_module_class_pic_init),
3286 src/base/basepic.c (ft_base_pic_init), src/base/ftinit.c
3287 (ft_create_default_module_classes), src/cff/cffparse.c
3288 (FT_Create_Class_cff_field_handlers), src/cff/cffpic.c
3289 (cff_driver_class_pic_init), src/pshinter/pshpic.c
3290 (pshinter_module_class_pic_init), src/psnames/pspic.c
3291 (psnames_module_class_pic_init), src/raster/rastpic.c
3292 (ft_raster1_renderer_class_pic_init), src/sfnt/sfntpic.c
3293 (sfnt_module_class_pic_init), src/sfnt/ttcmap.c
3294 (FT_Create_Class_tt_cmap_classes), src/smooth/ftspic.c
3295 (ft_smooth_renderer_class_pic_init), src/truetype/ttpic.c
3296 (tt_driver_class_pic_init): Initialize allocation variable.
3297
32982012-08-27 Werner Lemberg <wl@gnu.org>
3299
Werner Lemberg06e31e92012-08-27 09:35:22 +02003300 [truetype] Fix compilation warning.
3301
3302 * src/truetype/ttgload.c (IS_HINTED): Move macro to...
3303 * src/truetype/ttobjs.h: This header file.
3304
33052012-08-27 Werner Lemberg <wl@gnu.org>
3306
Werner Lembergd9bf44a2012-08-27 08:41:43 +02003307 [autofit, cff, pshinter, psnames] More renamings for orthogonality.
3308
3309 * src/autofit/afmodule.c, src/autofit/afpic.h:
3310 s/AF_AUTOFITTER_/AF_/.
3311
3312 * src/cff/cffdrivr.c, src/cff/cffobjs.c, src/cff/cffparse.c,
3313 src/cff/cffpic.h: s/FT_CFF_/CFF_/.
3314
3315 * src/pshinter/pshmod.c, src/pshinter/pshpic.h:
3316 s/FT_PSHINTER_/PSHINTER_/.
3317
3318 * src/psnames/psmodule.c, src/psnames/pspic.h:
3319 s/FT_PSCMAPS/PSCMAPS_/.
3320
33212012-08-27 Werner Lemberg <wl@gnu.org>
3322
Werner Lemberg0c633e32012-08-27 07:43:28 +02003323 [sfnt, truetype] More renamings for orthogonality.
3324
3325 * src/sfnt/sfdriver.c, src/sfnt/sfntpic.h, src/sfnt/ttcmap.c,
3326 src/truetype/ttdriver.c, src/truetype/ttpic.h: s/FT_SFNT_/SFNT_/,
3327 s/FT_TT_/TT_/, s/GET_CMAP_INFO_GET/CMAP_INFO_GET/.
3328
33292012-08-27 Werner Lemberg <wl@gnu.org>
3330
Werner Lembergd0841ea2012-08-27 06:57:05 +02003331 [autofit] Some macro and variable renamings for orthogonality.
3332
3333 * include/freetype/internal/autohint.h, src/base/ftobjs.c,
3334 src/autofit/afmodule.c, src/autofit/afpic.c, src/autofit/afpic.h:
3335 s/SERVICE/INTERFACE/, s/service/interface/, s/Service/Interface/.
3336
Werner Lembergb355b562012-08-26 14:00:11 +020033372012-08-26 Werner Lemberg <wl@gnu.org>
3338
3339 Fix Savannah bug #37178.
3340
3341 * src/base/ftobjs.c (FT_Open_Face): Initialize `error' with
3342 `FT_Err_Missing_Module' before loop to indicate `no valid drivers'.
3343
Werner Lemberg04affa22012-08-17 09:28:28 +020033442012-08-17 Werner Lemberg <wl@gnu.org>
3345
3346 * src/base/ftsynth.c (FT_GlyphSlot_Oblique): Fix shear angle.
3347
3348 The old value was far too large (more than 20°). The new one
3349 corresponds to 12°, quite common in typography.
3350
Alexei Podtelezhnikov9ea55c72012-08-12 11:14:46 -040033512012-08-12 Alexei Podtelezhnikov <apodtele@gmail.com>
3352
Werner Lemberg273e2b72012-09-18 13:27:27 +02003353 [smooth] Fix Savannah bug #37017.
Alexei Podtelezhnikov9ea55c72012-08-12 11:14:46 -04003354
3355 * src/smooth/ftgrays.c (gray_render_cubic): Use a different set of
3356 checks when detecting super curvy splines to be split.
3357
Werner Lemberge194d7c2012-08-05 10:58:02 +020033582012-08-05 Werner Lemberg <wl@gnu.org>
3359
Werner Lemberg5b995a82012-08-05 11:11:44 +02003360 [autofit] Improve recognition of flat segments.
3361
3362 Problem reported by Brad Dunzer <BDunzer@extensis.com>.
3363
3364 * src/autofit/aflatin.c (af_latin_metrics_init_blues): We have
3365 a flat segment if the horizontal distance of best on-points is
3366 larger than a given threshold.
3367
33682012-08-05 Werner Lemberg <wl@gnu.org>
3369
Werner Lemberge194d7c2012-08-05 10:58:02 +02003370 [autofit] Variable renamings.
3371
3372 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Replace
3373 `glyph' with `outline'.
3374 s/best_first/best_contour_first/.
3375 s/best_last/best_contour_last/.
3376
Werner Lemberg5cdeb3c2012-07-31 20:17:13 +020033772012-07-31 Werner Lemberg <wl@gnu.org>
3378
Werner Lemberg273e2b72012-09-18 13:27:27 +02003379 [type1] Fix Savannah bug #37000.
Werner Lemberg5cdeb3c2012-07-31 20:17:13 +02003380
3381 * src/type1/t1load.c (parse_encoding): Fix order of checks.
3382
Werner Lemberg6b440422012-07-18 10:39:18 +020033832012-07-17 Werner Lemberg <wl@gnu.org>
3384
Werner Lemberg273e2b72012-09-18 13:27:27 +02003385 [psaux] Fix Savannah bug #36833.
Werner Lemberg6b440422012-07-18 10:39:18 +02003386
3387 * src/psaux/t1decode.c (t1operator_seac): `seac' is not a valid
3388 operator if we want metrics only.
3389
Werner Lemberg01b508f2012-07-18 10:38:54 +020033902012-07-16 Werner Lemberg <wl@gnu.org>
3391
Werner Lemberg273e2b72012-09-18 13:27:27 +02003392 [type1] Fix Savannah bug #36832.
Werner Lemberg01b508f2012-07-18 10:38:54 +02003393
3394 * src/type1/t1load.c (parse_charstrings): Reject negative number of
3395 glyphs.
3396
Werner Lemberga8c24352012-07-18 10:38:37 +020033972012-07-13 Werner Lemberg <wl@gnu.org>
3398
Werner Lemberg273e2b72012-09-18 13:27:27 +02003399 [type1] Fix Savannah bug #36829.
Werner Lemberga8c24352012-07-18 10:38:37 +02003400
3401 * src/type1/t1load.c (parse_encoding): Check cursor position after
3402 call to T1_Skip_PS_Token.
3403
Alexei Podtelezhnikov9ea55c72012-08-12 11:14:46 -040034042012-07-12 Alexei Podtelezhnikov <apodtele@gmail.com>
3405
3406 Revert the last commit 45337b07.
3407
Werner Lemberg309b8b32012-12-16 19:08:36 +01003408 * src/base/ftstroke.c (FT_Stroker_New): Revert the previous change.
Alexei Podtelezhnikov9ea55c72012-08-12 11:14:46 -04003409
Alexei Podtelezhnikov45337b02012-07-11 22:12:13 -040034102012-07-11 Alexei Podtelezhnikov <apodtele@gmail.com>
3411
3412 [ftstroke] Fix uninitialized return value.
3413
3414 * src/base/ftstroke.c (FT_Stroker_New): Return FT_Err_Ok instead.
3415
Werner Lemberge7454a42012-07-11 12:05:58 +020034162012-07-11 Werner Lemberg <wl@gnu.org>
3417
Werner Lemberg6b440422012-07-18 10:39:18 +02003418 [smooth] Avoid memory leak in case of failure.
Werner Lemberge7454a42012-07-11 12:05:58 +02003419
3420 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use flags to
3421 indicate what to clean up after finishing the function, with and
3422 without errors.
3423
Werner Lemberg5a0af492012-07-09 08:19:25 +020034242012-07-09 Werner Lemberg <wl@gnu.org>
3425
Werner Lemberg26472b42012-07-09 09:55:50 +02003426 Fix compilation with MSVC 5.0.
3427
3428 Problem reported by Peter Breitenlohner and Akira Kakuto.
3429
3430 * include/freetype/config/ftstdlib.h (ft_setjmp): Updated.
3431 * src/sfnt/ttcmap.c (tt_face_build_cmaps): Remove cast.
3432
34332012-07-09 Werner Lemberg <wl@gnu.org>
3434
Werner Lemberg5a0af492012-07-09 08:19:25 +02003435 [autofit] Improve debugging messages; do some code cleanup.
3436
3437 * src/autofit/aflatin.c (af_latin_align_linked_edge,
3438 af_latin_hint_edges): Synchronize with formatting used in the
3439 ttfautohint project.
3440
Gilles Espinasse9123404c2012-07-07 11:17:02 +020034412012-07-07 Gilles Espinasse <g.esp@free.fr>
3442
3443 Fix strict-aliasing warning.
3444
3445 * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Avoid double cast.
3446
Dave Thomasfec113d2012-07-07 10:57:30 +020034472012-07-07 Dave Thomas <dave.thomas@metaforic.com>
3448
3449 [ARM] Fix FT_MulFix_arm.
3450
3451 * include/freetype/config/ftconfig.h (FT_MulFix_arm) [__arm__]:
3452 Avoid ADDS instruction to clobber condition codes.
3453
Werner Lembergb6978dd2012-07-06 19:38:44 +020034542012-07-06 Werner Lemberg <wl@gnu.org>
3455
3456 [autofit] Do some code cleanup.
3457
3458 * src/autofit/afglobal.c (af_face_globals_new): Simplify.
3459
3460 * src/autofit/afhints.c: Use `FT_TRACE7' instead of `printf'
3461 everywhere.
3462 (FT_COMPONENT): New macro.
3463 (af_glyph_hints_done): Simplify.
3464
3465 * include/freetype/internal/fttrace.h: Updated.
3466
Werner Lembergfd5ae952012-07-05 10:30:41 +020034672012-07-05 Werner Lemberg <wl@gnu.org>
3468
3469 [autofit] Improve output of debugging information.
3470
3471 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Print more
3472 data; report no data.
3473 (af_glyph_hints_dump_edges): Report no data.
3474
Werner Lemberg09e9b592012-07-04 13:00:06 +020034752012-07-04 Werner Lemberg <wl@gnu.org>
3476
Werner Lemberg273e2b72012-09-18 13:27:27 +02003477 [autofit] Fix Savannah bug #36091.
Werner Lemberg52103062012-07-04 17:20:33 +02003478
3479 * src/autofit/aflatin.c (af_latin_metrics_init_blues),
3480 src/autofit/aflatin2.c (af_latin2_metrics_init_blues): Change the
3481 constraint for testing round vs. flat segment: Accept either a
3482 small distance or a small angle.
3483
34842012-07-04 Werner Lemberg <wl@gnu.org>
3485
Werner Lemberg09e9b592012-07-04 13:00:06 +02003486 [autofit] Beautify blue zone tracing.
3487
3488 * src/autofit/aflatin.c (af_latin_metrics_init_blues),
3489 src/autofit/aflatin2.c (af_latin2_metrics_init_blues): Implement it.
3490
Werner Lembergd4cbbf32012-07-03 11:01:53 +020034912012-07-03 Werner Lemberg <wl@gnu.org>
3492
Werner Lemberg2a9c4552012-07-03 11:54:12 +02003493 [autofit] Quantize stem widths.
3494
3495 * src/autofit/afangles.c (af_sort_widths): Rename to...
3496 (af_sort_and_quantize_widths): This.
3497 Add code to avoid stem widths which are almost identical.
3498 * src/autofit/aftypes.h, src/autofit/aflatin.c, src/autofit/afcjk.c:
3499 Updated.
3500
35012012-07-03 Werner Lemberg <wl@gnu.org>
3502
Werner Lembergd4cbbf32012-07-03 11:01:53 +02003503 [autofit] Minor speed-up.
3504
3505 * src/autofit/afangles (af_sort_pos, af_sort_widths): Don't swap
3506 elements if they are equal.
3507
Werner Lembergad866e22012-06-30 07:59:28 +020035082012-06-30 Gilles Espinasse <g.esp@free.fr>
3509
3510 Fix `checking if gcc static flag -static works' test.
3511
3512 On my linux build tree, I receive yes answer in in every package I
3513 build except freetype for this test checking if gcc static flag
3514 `-static' works
3515
3516 On freetype, no is received, unless bzip2 and zlib are disabled using
3517
3518 ./configure --without-bzip2 --without-zlib
3519
3520 The reason is that bzip2 and zlib tests add `-lz' and `-lbz2' to
3521 LDFLAGS and this broke static flag test.
3522
3523 * builds/unix/configure.raw: Update CFLAGS and LDFLAGS only after
3524 LT_INIT has run.
3525
Infinalityd0a827b2012-06-28 20:34:26 -050035262012-06-28 Infinality <infinality@infinality.net>
3527
3528 [truetype] Fix various artifacts.
3529
3530 Verdana was broken in the original Infinality commit. Also
3531 includes other minor fixes.
3532
3533 * src/truetype/ttsubpix.h: Updated. Removed unused macros.
3534 (RASTERIZER_35_Rules): Add Verdana.
3535 (SKIP_NONPIXEL_Y_MOVES_Rules): Add Tahoma `s'.
3536 (MIRP_CVT_ZERO_Rules): Remove Verdana.
3537 (ALWAYS_SKIP_DELTAP_Rules): Add Russian char 0x438.
3538 (COMPATIBLE_WIDTHS_Rules): Rearrange some rules.
3539 (X_SCALING_Rules): Adjust Verdana `a' at 12 and 13 ppem.
Alexei Podtelezhnikov5ad05f92012-12-06 00:27:20 -05003540
Infinalityd0a827b2012-06-28 20:34:26 -05003541 * src/truetype/ttsubpix.c: Updated.
3542 (sph_set_tweaks): Re-execute fpgm always.
3543
Gilles Espinasse34de9d22012-06-28 06:45:26 +020035442012-06-28 Gilles Espinasse <g.esp@free.fr>
3545
3546 Fix CFLAGS and LDFLAGS share configure test.
3547
3548 * builds/unix/configure.raw: Fix typo.
3549
Werner Lembergb3953aa2012-06-28 06:23:12 +020035502012-06-28 Werner Lemberg <wl@gnu.org>
3551
3552 [truetype] Set the `subpixel_positioned' flag unconditionally.
3553
3554 This is how the code currently behaves.
3555
3556 * src/truetype/ttgload.c (tt_loader_init): Do it.
3557
Werner Lemberg83c0eba2012-06-27 08:16:06 +020035582012-06-27 Werner Lemberg <wl@gnu.org>
3559
3560 Fix conditional compilation.
3561
Werner Lemberg12470962012-06-27 08:44:30 +02003562 * src/base/basepic.c: Use FT_CONFIG_OPTION_MAC_FONTS.
3563
35642012-06-27 Werner Lemberg <wl@gnu.org>
3565
3566 Fix conditional compilation.
3567
Werner Lemberg83c0eba2012-06-27 08:16:06 +02003568 * include/freetype/internal/ftcalc.h (FT_MulDiv_No_Round): Don't
3569 enclose with `TT_USE_BYTECODE_INTERPRETER'; we now need the function
3570 elsewhere also.
3571
3572 * src/autofit/afcjk.h: Use AF_CONFIG_OPTION_CJK.
3573
3574 * src/truetype/ttgload.c (tt_loader_init): Fix compiler warning.
3575
3576 * src/truetype/ttinterp.c (Ins_MSIRP): Fix compiler warning.
3577
3578 * src/truetype/ttinterp.h: Use
3579 TT_CONFIG_OPTION_BYTECODE_INTERPRETER.
3580
Infinalityed6508c2012-06-26 17:20:27 -050035812012-06-26 Infinality <infinality@infinality.net>
3582
3583 [truetype] Remove unused rounding functionality.
3584
3585 The subpixel hinting patch contained the concept of an adjustable
3586 number of gridlines per pixel. This is no longer used due to x
3587 being completely ignored instead. This will return some of the
3588 code to its existing state prior to the original Infinality
3589 commit.
3590
3591 * include/freetype/internal/ftobjs.h (FT_PIX_FLOOR_GRID,
3592 FT_PIX_ROUND_GRID, FT_PIX_CEIL_GRID): Removed.
3593
3594 * src/truetype/ttinterp.c: Updated.
3595 (Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid,
3596 Round_Up_To_Grid, Round_To_Double_Grid, Round_Super, Round_Super_45,
3597 SetSuperRound): Remove parameter to handle the number of grid lines per
3598 pixel.
3599 (SET_SuperRound, ROUND_None, CUR_Func_round): Updated.
3600 (DO_SROUND, DOS45ROUND, DO_ODD, DO_EVEN): Updated.
3601 (DO_ROUND, DO_NROUND): Updated.
3602 (Move_Zp2_Point, Ins_SHPIX, Ins_MSIRP, Ins_MDAP, Ins_MIAP,
3603 Ins_MDRP, Ins_MIRP): Perform Round_None instead of calling a modified
3604 rounding function. Remove gridlines_per_pixel. Create a local
Werner Lemberg83c0eba2012-06-27 08:16:06 +02003605 variable to store control value cutin. Simplify the conditional for
Infinalityed6508c2012-06-26 17:20:27 -05003606 ignore_x_mode. Adjust rounding calls to pass only two values.
3607
Werner Lemberg56751532012-06-25 10:58:20 +020036082012-06-25 Werner Lemberg <wl@gnu.org>
3609
3610 [cff] Fix Savannah bug #36705.
3611
3612 Handle numbers like 2.001 correctly.
3613
3614 * src/cff/cffparse.c (cff_parse_real): Avoid negative values for
3615 `shift'.
3616
Infinality79e36ba2012-06-18 10:36:06 +020036172012-06-18 Infinality <infinality@infinality.net>
3618
3619 [truetype] Support subpixel hinting.
3620
3621 This is the large, famous `Infinality' patch to support ClearType
3622 bytecode which has been available from
3623 http://www.infinality.net/blog/ for some time, and which has been
3624 refined over the last years. While still experimental, it is now
3625 mature enough to be included directly into FreeType.
3626
3627 Most of the code is based on the ClearType whitepaper written by
3628 Greg Hitchcock
3629
3630 http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
3631
3632 which gives a detailed overview of the necessary changes to the
3633 Microsoft rasterizer so that older fonts are supported. However, a
3634 lot of details are still missing, and this patches provides a
3635 framework to easily handle rendering issues down to the glyph level
3636 of certain fonts.
3637
3638 Note that ClearType support is not completely implemented! In
3639 particular, full support for the options `compatible_widths',
3640 `symmetrical_smoothing, and `bgr' (via the GETINFO bytecode
3641 instruction) is missing.
3642
3643 * src/truetype/ttsubpix.c: New file, providing code to handle
3644 `tweaks', this is, rules for certain glyphs in certain fonts
3645 (including wildcards) which need a special treatment.
3646
3647 * src/truetype/ttsubpix.h: New file, holding the tweaking rules.
3648
3649 * include/freetype/config/ftoption.h, src/devel/ftoption.h
3650 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): New macro.
3651
3652 * include/freetype/internal/ftobjs.h (FT_PIX_FLOOR_GRID,
3653 FT_PIX_ROUND_GRID, FT_PIX_CEIL_GRID): New macros.
3654
3655 * src/truetype/truetype.c [TT_USE_BYTECODE_INTERPRETER]: Include
3656 `ttsubpix.c'.
3657
3658 * src/truetype/ttgload.c: Include `ttsubpix.h'.
3659 [All changes below are guarded by TT_CONFIG_OPTION_SUBPIXEL_HINTING.]
3660
3661 (tt_get_metrics): Set tweak flags.
3662 (TT_Hint_Glyph): Call `FT_Outline_EmboldenXY' if necessary.
3663 (TT_Process_Simple_Glyph): Compensate emboldening if necessary.
3664 (compute_glyph_metrics): Handle `compatible widths' option.
3665 (tt_loader_init): Handle ClearType GETINFO information bits.
3666
3667 * src/truetype/rules.mk (TT_DRC_SRC): Updated.
3668
3669 * src/truetype/ttinterp.c: Include `ttsubpix.h'.
3670 [Where necessary, changes below are guarded by
3671 TT_CONFIG_OPTION_SUBPIXEL_HINTING.]
3672
3673 (Direct_Move, Direct_Move_X): Extended.
3674 (Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid,
3675 Round_Up_To_Grid, Round_To_Double_Grid, Round_Super, Round_Super_45,
3676 SetSuperRound): Add parameter to handle the number of grid lines per
3677 pixel.
3678 (SET_SuperRound, ROUND_None, CUR_Func_round): Updated.
3679 (DO_SROUND, DOS45ROUND, DO_ODD, DO_EVEN): Updated.
3680 (DO_ROUND, DO_NROUND): Updated.
3681 (DO_RS): Take care of `Typeman' bytecode patterns.
3682 (Ins_FDEF): Add some debugging code. Commented out.
3683 (Ins_ENDF): Restore state.
3684 (Ins_CALL, Ins_LOOPCALL): Handle inline delta functions.
3685 (Ins_MD): Handle `Vacuform' rounds.
3686 (Move_Zp2_Point, Ins_SHPIX, Ins_MSIRP, Ins_MDAP, Ins_MIAP,
3687 Ins_MDRP, Ins_MIRP): Handle tweaks.
3688 (Ins_ALIGNRP): Add tweak guard.
3689 (Ins_IUP, Ins_DELTAP): Handle tweaks.
3690 (Ins_GETINFO): Handle new ClearType bits.
3691 (TT_RunIns): Handle tweaks.
3692
3693 * src/truetype/ttinterp.h: Updated.
3694 (SPH_TweakRule, SPH_ScaleRule): New structures for tweaks.
3695 (TT_ExecContextRec): Add members for subpixel hinting support.
3696
3697 * src/truetype/ttobjs.h (TT_DefRecord): Add `inline_delta' member.
3698
Werner Lemberg320613e2012-06-15 06:45:12 +020036992012-06-15 Werner Lemberg <wl@gnu.org>
3700
3701 * Version 2.4.10 released.
3702 =========================
3703
3704
3705 Tag sources with `VER-2-4-10'.
3706
3707 * docs/VERSION.DLL: Update documentation and bump version number to
3708 2.4.10.
3709
3710 * README, Jamfile (RefDoc),
3711 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
3712 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
3713 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
3714 builds/win32/visualc/freetype.dsp,
3715 builds/win32/visualc/freetype.vcproj,
3716 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
3717 builds/win32/visualce/freetype.vcproj,
3718 builds/win32/visualce/index.html,
3719 builds/wince/vc2005-ce/freetype.vcproj,
3720 builds/wince/vc2005-ce/index.html,
3721 builds/wince/vc2008-ce/freetype.vcproj,
3722 builds/wince/vc2008-ce/index.html: s/2.4.9/2.4.10/, s/249/2410/.
3723
3724 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 10.
3725
3726 * builds/unix/configure.raw (version_info): Set to 15:0:9.
3727
Alexei Podtelezhnikovcea9d7a2012-06-15 06:33:46 +020037282012-06-15 Alexei Podtelezhnikov <apodtele@gmail.com>
3729
3730 * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Improve spacing.
3731
3732 * docs/CHANGES: Updated.
3733
suzuki toshiyaa03cb012012-06-14 17:56:01 +090037342012-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3735
3736 * builds/exports.mk: Add CCexe_CFLAGS and CCexe_LDFLAGS.
3737
3738 to pass special compiler/linker flags under cross development.
3739 Suggested by Savannah bug #36367.
3740
3741 ChangeLog on 2010-07-15 saying as they were removed was wrong
3742 for the official trunk of FreeType2. This commit is the first
3743 introduction of them.
3744
Werner Lemberg2d67e9b2012-06-14 08:46:04 +020037452012-06-14 Werner Lemberg <wl@gnu.org>
3746
3747 * docs/CHANGES: Updated.
3748
suzuki toshiya6c7c3de2012-06-14 01:38:20 +090037492012-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3750
3751 [truetype] Add new versions of NEC FA family to tricky font list.
3752
3753 NEC FA family dated in 1996 have different checksum.
3754 Reported by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>; see
3755
3756 http://lists.gnu.org/archive/html/freetype-devel/2012-06/msg00023.html
3757
3758 * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): 4 sets
3759 of fpgm & prep table checksums for FA-Gothic, FA-Minchou,
3760 FA-RoundedGothicM, FA-RoundedGothicB are added. The family
3761 names in sample PDF are truncated, thus the list of the
3762 family names in tt_check_trickyness_family() is not updated yet.
3763
Werner Lemberg495bd3c2012-06-06 13:24:04 +020037642012-06-06 Werner Lemberg <wl@gnu.org>
3765
3766 [ftraster] Fix rounding issue causing visual artifacts.
3767
3768 Problem reported by jola <hans-jochen.lau@lhsystems.com>; see
3769
3770 http://lists.gnu.org/archive/html/freetype-devel/2012-05/msg00036.html
3771
3772 * src/raster/ftraster.c (SMulDiv_No_Round): New macro.
3773 (Line_Up): Use it.
3774 * src/raster/ftmisc.h (FT_MulDiv_No_Round): Copied from `ftcalc.c'.
3775
Alexei Podtelezhnikov2bdd0942012-05-28 23:11:03 +020037762012-05-28 Alexei Podtelezhnikov <apodtele@gmail.com>
3777
3778 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Simplify.
3779
3780 We now use the cross product of the direction vectors to compute the
3781 outline's orientation.
3782
Werner Lembergaa6895c2012-05-28 22:55:54 +020037832012-05-28 Werner Lemberg <wl@gnu.org>
3784
3785 * docs/CHANGES: Updated.
3786
Alexei Podtelezhnikovf875fc72012-05-28 22:34:58 +020037872012-05-28 Alexei Podtelezhnikov <apodtele@gmail.com>
3788
3789 New function FT_Outline_EmboldenXY.
3790
3791 * include/freetype/ftoutln.h (FT_Outline_EmboldenXY): Define it.
3792
3793 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Implement it, using a
3794 simplified embolding algorithm.
3795 (FT_Outline_Embolden): Make it a special case of
3796 `FT_Outline_EmboldenXY'
3797
Werner Lemberg8dc17bb2012-05-07 11:24:48 +020037982012-05-07 Werner Lemberg <wl@gnu.org>
3799
3800 [type1] Fix Savannah bug #36386.
3801
3802 * src/type1/t1load.c (t1_load_keyword): Ignore keyword if context is
3803 not valid.
3804
Werner Lemberg9c6d1ac2012-04-07 06:39:25 +020038052012-04-07 Werner Lemberg <wl@gnu.org>
3806
3807 Remove compiler warning.
3808
3809 * src/truetype/ttgload.c (TT_Load_Glyph)
3810 [!TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Access `glyph->face' directly.
3811
Werner Lemberg8be32d22012-03-28 12:21:50 +020038122012-03-28 Werner Lemberg <wl@gnu.org>
3813
3814 [autofit] Properly copy scaler flags to script metrics object.
3815
3816 Without this patch, only the dummy and cjk autohinter modules get
3817 them (since they copy the whole scaler object).
3818
3819 * src/autofit/aflatin.c (af_latin_metrics_scale),
3820 src/autofit/aflatin2.c (af_latin2_metrics_scale): Implement it.
3821
Alexei Podtelezhnikov0c5789f2012-03-22 07:05:40 +010038222012-03-22 Alexei Podtelezhnikov <apodtele@gmail.com>
3823
3824 [bdflib] Remove redundant macro.
3825
3826 * src/bdf/bdflib.c (isdigok): Remove and replace with sbitset, which
3827 is exactly the same.
3828
suzuki toshiyaf0b19412012-03-21 15:42:14 +090038292012-03-20 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3830
Werner Lemberg2d67e9b2012-06-14 08:46:04 +02003831 [configure] Fix Savannah bug #35644.
suzuki toshiyaf0b19412012-03-21 15:42:14 +09003832
3833 * builds/unix/configure.raw: Check `-ansi' flag works even if gcc
3834 is used. Bionic libc headers for Android lose the consistency
3835 when they are parsed with __STDC_VERSION__ older than 199901L or
3836 __STRICT_ANSI__.
3837
Werner Lemberg37b5c922012-03-20 07:23:12 +010038382012-03-20 Werner Lemberg <wl@gnu.org>
3839
3840 [bdf] Improvement to Savannah bug #35656.
3841
3842 * src/bdf/bdflib.c (isdigok): Add cast, as suggested in report.
3843
Werner Lembergb43e0f42012-03-17 07:42:43 +010038442012-03-17 Chris Liddell <chris.liddell@artifex.com>
3845
3846 [type1] Fix Savannah bug #35847.
3847
3848 * src/type1/t1load.c (parse_subrs): Fix the loop exit condition;
3849 we want to exit when we have run out of data.
3850
Werner Lemberg649c6732012-03-16 21:12:41 +010038512012-03-16 Werner Lemberg <wl@gnu.org>
3852
Werner Lembergb43e0f42012-03-17 07:42:43 +01003853 [bdf] Really fix Savannah bug #35658.
Werner Lemberg649c6732012-03-16 21:12:41 +01003854
3855 * src/bdf/bdflib.c (_bdf_list_split): Add one more `field' initializer.
3856
Werner Lembergad05bac2012-03-14 18:34:36 +010038572012-03-14 Yann Droneaud <yann@droneaud.fr>
3858
3859 [sfnt] Make arrays static like all others.
3860
3861 * src/sfnt/ttload.c (tt_face_load_maxp, tt_face_load_os2),
3862 src/sfnt/ttmtx.c (tt_face_load_hhea): Add `static' keyword to frame
3863 fields.
3864
Huw Daviesbf06b622012-03-14 14:44:46 +010038652012-03-14 Huw Davies <huw@codeweavers.com>
3866
Huw Davies3650f802012-03-14 18:29:57 +01003867 [sfnt] A refinement of the previous commit.
3868
3869 * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
3870 tt_name_entry_ascii_from_other): Stop at null byte.
3871
38722012-03-14 Huw Davies <huw@codeweavers.com>
3873
Huw Daviesbf06b622012-03-14 14:44:46 +01003874 [sfnt] Add `name' table compatibility to MS Windows.
3875
3876 * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
3877 tt_name_entry_ascii_from_other): Don't replace `\0' with question
3878 marks when converting strings.
3879
Werner Lemberg9a55cb72012-03-14 14:40:03 +010038802012-03-14 Werner Lemberg <wl@gnu.org>
3881
Werner Lemberg273e2b72012-09-18 13:27:27 +02003882 [type1] Fix Savannah bug #35833.
Werner Lemberg9a55cb72012-03-14 14:40:03 +01003883
3884 Based on the patch given in the bug report.
3885
3886 * src/type1/t1load.c (IS_INCREMENTAL): New macro.
3887 (read_binary_data): Add parameter `incremental'.
3888 Update all callers using `IS_INCREMENTAL'.
3889
Werner Lemberg10364092012-03-11 15:20:32 +010038902012-03-11 Werner Lemberg <wl@gnu.org>
3891
3892 [autofit] Return correct linear advance width values.
3893
3894 This was quite a subtle bug which accidentally showed up with glyph
3895 `afii10023' of arial.ttf (version 2.76). This glyph is a composite;
3896 the first component, `E', has an advance width of 1366 font units,
3897 while the advance width of the composite itself (which looks like
3898 uppercase `E' with dieresis) is 1367 font units. I think this is
3899 actually a bug in the font itself, because there is no reason that
3900 this glyph has not the same width as uppercase `E' without the
3901 dieresis. Anyway, it helped identify this problem.
3902
3903 Using the TrueType hinter, the correct value (1367) of `afii10023'
3904 was returned, but the autohinter mysteriously returned 1366.
3905
3906 Digging in the code showed that the autohinter recursively calls
3907 FT_Load_Glyph to load the glyph, adding the FT_LOAD_NO_SCALE load
3908 flag. However, the `linearHoriAdvance' field is still returned as a
3909 scaled value. To avoid scaling twice, the old code in autofit reset
3910 `linearHoriAdvance', using the `horiAdvance' field. This seemed to
3911 work since FT_LOAD_NO_SCALE was in use, but it failed actually,
3912 because `horiAdvance' is defined as the distance of the first
3913 subglyph's phantom points, which in turn are initialized using the
3914 advance width of the first subglyph. And as the given example
3915 shows, these widths can differ.
3916
3917 * src/autofit/afloader.c (af_loader_load_g): Temporarily set
3918 FT_LOAD_LINEAR_DESIGN while calling FT_Load_Glyph to get unscaled
3919 values for the linear advance widths.
3920
Werner Lemberge1899bc2012-03-10 09:28:24 +010039212012-03-10 Werner Lemberg <wl@gnu.org>
3922
3923 [truetype] Fix SSW instruction.
3924
3925 * src/truetype/ttinterp.c (DO_SSW): SSW *does* use font units. For
3926 verification, it took some time to find a font which actually uses
3927 this instruction.
3928
Vinnie Falco9e287892012-03-10 07:31:58 +010039292012-03-09 Vinnie Falco <vinnie.falco@gmail.com>
3930
3931 Prepare source code for amalgamation.
3932
Werner Lemberge1899bc2012-03-10 09:28:24 +01003933 * include/freetype/freetype.h: Swap order of preprocessor blocks.
Vinnie Falco9e287892012-03-10 07:31:58 +01003934
Werner Lembergc4cad302012-03-08 20:11:37 +010039352012-03-08 Werner Lemberg <wl@gnu.org>
3936
Werner Lemberg50ed33e2012-03-08 21:02:06 +01003937 * Version 2.4.9 released.
3938 =========================
3939
3940
3941 Tag sources with `VER-2-4-9'.
3942
3943 * docs/CHANGES: Updated.
3944
3945 * docs/VERSION.DLL: Update documentation and bump version number to
3946 2.4.9.
3947
3948 * README, Jamfile (RefDoc),
3949 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
3950 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
3951 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
3952 builds/win32/visualc/freetype.dsp,
3953 builds/win32/visualc/freetype.vcproj,
3954 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
3955 builds/win32/visualce/freetype.vcproj,
3956 builds/win32/visualce/index.html,
3957 builds/wince/vc2005-ce/freetype.vcproj,
3958 builds/wince/vc2005-ce/index.html,
3959 builds/wince/vc2008-ce/freetype.vcproj,
3960 builds/wince/vc2008-ce/index.html: s/2.4.8/2.4.9/, s/248/249/.
3961
3962 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 9.
3963
3964 * builds/unix/configure.raw (version_info): Set to 14:1:8.
3965
39662012-03-08 Werner Lemberg <wl@gnu.org>
3967
Werner Lembergc4cad302012-03-08 20:11:37 +01003968 [bdf] Add missing overflow check.
3969
3970 * src/bdf/bdflib.c (_bdf_parse_glyphs) <BITMAP>: Add threshold for
3971 `glyph->bpr'.
3972
Vinnie Falco26dfeb62012-03-08 06:04:03 +010039732012-03-07 Vinnie Falco <vinnie.falco@gmail.com>
3974
3975 Prepare source code for amalgamation.
3976
Werner Lemberge1899bc2012-03-10 09:28:24 +01003977 * src/autofit/aferrors.h, src/bdf/bdferror.h, src/bzip2/ftbzip2.c,
3978 src/cache/ftcerror.h, src/cff/cfferrs.h, src/cid/ciderrs.h,
3979 src/gxvalid/gxverror.h, src/gzip/ftgzip.c, src/lzw/ftlzw.c,
3980 src/otvalid/otverror.h, src/pcf/pcferror.h, src/pfr/pfrerror.h,
3981 src/psaux/psauxerr.h, src/pshinter/pshnterr.h,
3982 src/psnames/psnamerr.h, src/raster/rasterrs.h, src/sfnt/sferrors.h,
3983 src/smooth/ftsmerrs.h, src/truetype/tterrors.h,
3984 src/type1/t1errors.h, src/type42/t42error.h, src/winfonts/fnterrs.h:
Vinnie Falco26dfeb62012-03-08 06:04:03 +01003985 Add #undef FT_ERR_PREFIX before #define FT_ERR_PREFIX.
3986
Werner Lembergceed93e2012-03-03 07:03:08 +010039872012-03-03 Werner Lemberg <wl@gnu.org>
3988
Werner Lembergba679572012-03-03 12:27:18 +01003989 Fix Savannah bug #35660.
3990
3991 For some divisions, we use casts to 32bit entities. Always guard
3992 against division by zero with these casts also.
3993
3994 * src/base/ftcalc.c (ft_div64by32): Remove redundant cast.
3995 (FT_MulDiv, FT_MulDiv_No_Round): Add 32bit cast.
3996 (FT_DivFix): Add 32bit cast (this omission triggered the bug).
3997
39982012-03-03 Werner Lemberg <wl@gnu.org>
3999
Werner Lembergceed93e2012-03-03 07:03:08 +01004000 [psaux] Fix handling of track kerning.
4001
4002 * src/psaux/afmparse.c (afm_parse_track_kern): Don't inverse sign
4003 for `min_kern'. It is indeed quite common that track kerning
4004 *increases* spacing for very small sizes.
4005
Werner Lemberg0fc8deb2012-03-02 16:09:51 +010040062012-03-02 Werner Lemberg <wl@gnu.org>
4007
4008 [truetype] Fix Savannah bug #35689.
4009
4010 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check first outline
4011 point.
4012
Werner Lemberga33c0132012-03-01 14:04:30 +010040132012-03-01 Werner Lemberg <wl@gnu.org>
4014
Werner Lemberg6ac022d2012-03-01 16:43:20 +01004015 [bdf] Fix Savannah bug #35656.
4016
4017 * src/bdf/bdflib.c (_bdf_parse_glyphs) <_BDF_BITMAP>: Check validity
4018 of nibble characters instead of accessing `a2i' array.
4019
40202012-03-01 Werner Lemberg <wl@gnu.org>
4021
Werner Lemberg7d35a7d2012-03-01 16:11:33 +01004022 [winfonts] Fix Savannah bug #35659.
4023
4024 * src/winfonts/winfnt.c (FNT_Face_Init): Check number of glyphs.
4025
40262012-03-01 Werner Lemberg <wl@gnu.org>
4027
Werner Lembergd9c16592012-03-01 15:15:00 +01004028 [bdf] Fix Savannah bug #35658.
4029
4030 * src/bdf/bdflib.c (_bdf_list_split): Initialize `field' elements
4031 properly.
4032
40332012-03-01 Werner Lemberg <wl@gnu.org>
4034
Werner Lemberg292144b2012-03-01 14:54:47 +01004035 [psaux] Fix Savannah bug #35657.
4036
4037 If in function `skip_spaces' the routine `skip_comment' comes to the
4038 end of buffer, `cur' is still increased by one, so we need to check
4039 for `p >= limit' and not `p == limit'.
4040
4041 * src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed,
4042 PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Fix boundary checking.
4043
40442012-03-01 Werner Lemberg <wl@gnu.org>
4045
Werner Lemberga33c0132012-03-01 14:04:30 +01004046 [truetype] Fix Savannah bug #35646.
4047
4048 * src/truetype/ttinterp.c (Ins_MIRP): Typo, present since ages. The
4049 code is now in sync with the other operators (e.g. MSIRP) which
4050 modify twilight points.
4051
40522012-03-01 Werner Lemberg <wl@gnu.org>
Werner Lemberg9eacbb82012-02-29 14:47:47 +01004053
Werner Lembergcee5d592012-03-01 09:26:03 +01004054 [bdf] Fix Savannah bug #35643.
4055
4056 * src/bdf/bdflib.c (_bdf_list_ensure): Bring code in sync with
4057 comment before `_bdf_list_split', this is, really allocate at least
4058 five `field' elements.
4059
Werner Lemberga33c0132012-03-01 14:04:30 +010040602012-03-01 Werner Lemberg <wl@gnu.org>
Werner Lembergcee5d592012-03-01 09:26:03 +01004061
Werner Lemberg4086fb72012-03-01 08:55:40 +01004062 [bdf] Fix Savannah bug #35641.
4063
4064 * src/bdf/bdflib.c (_bdf_parse_glyphs) <DWIDTH, BBX>: Abort if
4065 _BDF_ENCODING isn't set. We need this because access to the `glyph'
4066 variable might be undefined otherwise.
4067
Werner Lemberga33c0132012-03-01 14:04:30 +010040682012-03-01 Werner Lemberg <wl@gnu.org>
Werner Lemberg4086fb72012-03-01 08:55:40 +01004069
Werner Lemberg5dddcc42012-03-01 07:52:24 +01004070 [truetype] Fix Savannah bug #35640.
4071
4072 * src/truetype/ttinterp.c (SkipCode, TT_RunIns): Fix boundary check
4073 for NPUSHB and NPUSHW instructions.
4074
40752012-02-29 Werner Lemberg <wl@gnu.org>
4076
Werner Lemberg96cddb82012-02-29 17:58:57 +01004077 [truetype] Fix Savannah bug #35601.
4078
4079 * src/truetype/ttinterp.c (Ins_SHZ): Use number of points instead of
4080 last point for loop.
4081 Also remove redundant boundary check.
4082
40832012-02-29 Werner Lemberg <wl@gnu.org>
4084
Werner Lemberg9290fa92012-02-29 17:29:07 +01004085 [truetype] Remove redundant check.
4086
Werner Lemberg96cddb82012-02-29 17:58:57 +01004087 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Remove redundant
Werner Lemberg9290fa92012-02-29 17:29:07 +01004088 second check for ordered contour start points.
4089
40902012-02-29 Werner Lemberg <wl@gnu.org>
4091
Werner Lemberg9eacbb82012-02-29 14:47:47 +01004092 [truetype] Make SHC instruction behave similar to MS rasterizer.
4093
4094 * src/truetype/ttinterp.c (Ins_SHC): Handle virtual contour in
4095 twilight zone.
4096
Alexei Podtelezhnikovb25265c2012-02-29 13:45:24 +010040972012-02-29 Alexei Podtelezhnikov <apodtele@gmail.com>
4098
4099 Avoid modulo operators against a power-of-two denominator.
4100
4101 * src/afcjk.c (af_hint_normal_stem), src/base/ftoutln.c
4102 (ft_contour_has), src/cff/cffgload.c (cff_decoder_parse_charstrings)
4103 <cff_op_vvcurveto, cff_op_hhcurveto, cff_op_hvcurveto>,
4104 src/gxvalid/gxvcommn.c (GXV_32BIT_ALIGNMENT_VALIDATE),
4105 src/gxvalid/gxvfeat.c (gxv_feat_setting_validate): Replace `%' with
4106 `&' operator.
4107
Werner Lemberg5621fdd2012-02-29 13:33:33 +010041082012-02-29 Werner Lemberg <wl@gnu.org>
4109
4110 [autofit] Don't synchronize digit widths for light rendering mode.
4111
4112 We don't hint horizontally in this mode.
4113
4114 * src/autofit/afloader.c (af_loader_load_g) <Hint_Metrics>:
4115 Implement it.
4116
Alexei Podtelezhnikovc18c1882012-02-28 07:52:04 +010041172012-02-26 Alexei Podtelezhnikov <apodtele@gmail.com>
4118
4119 [type42] Minor code optimization (again).
4120
4121 * src/type42/t42parse.c (t42_parse_sfnts): Simplify previous change.
4122
Werner Lembergfcbc82e2012-02-26 20:54:19 +010041232012-02-26 Mateusz Jurczyk <mjurczyk@google.com>
4124 Werner Lemberg <wl@gnu.org>
4125
4126 [smooth] Fix Savannah bug #35604.
4127
4128 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use `FT_Pos'
4129 instead of `FT_UInt' for some variables and update comparisons
4130 accordingly. A detailed analysis can be found in the bug report.
4131
Werner Lembergc42848e2012-02-26 19:44:04 +010041322012-02-26 Alexei Podtelezhnikov <apodtele@gmail.com>
4133
4134 [type42] Minor code optimization.
4135
4136 * src/type42/t42parse.c (t42_parse_sfnts): Use bitmask instead of
4137 modulo operator.
4138
Werner Lemberg58cbc462012-02-26 05:26:56 +010041392012-02-26 Werner Lemberg <wl@gnu.org>
4140
Werner Lembergbd633342012-02-26 08:46:05 +01004141 * docs/CHANGES: Updated.
4142
41432012-02-26 Werner Lemberg <wl@gnu.org>
4144
Werner Lembergd9577ad2012-02-26 08:03:57 +01004145 [type1] Fix Savannah bug #35608.
4146
4147 * src/type1/t1parse.c (T1_Get_Private_Dict): Reject too short
4148 dictionaries.
4149
41502012-02-26 Werner Lemberg <wl@gnu.org>
4151
Werner Lemberg03242f52012-02-26 06:52:56 +01004152 [bdf] Support `ENCODING -1 <n>' format.
4153
4154 * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Implement it.
4155
41562012-02-26 Werner Lemberg <wl@gnu.org>
4157
Werner Lemberg28dd2c42012-02-26 06:18:58 +01004158 [bdf] Fix Savannah bug #35607.
4159
4160 * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Normalize
4161 negative encoding values.
4162
41632012-02-26 Werner Lemberg <wl@gnu.org>
4164
Werner Lemberg58cbc462012-02-26 05:26:56 +01004165 [type1] Fix Savannah bug #35606.
4166
4167 * src/type1/t1load.c (parse_subrs): Add proper guards for `strncmp'.
4168
4169 * src/psaux/psobjs.c (ps_parser_skip_PS_token): Emit error message
4170 only if cur < limit.
4171
Werner Lemberg0b1c0c62012-02-25 10:23:04 +010041722012-02-25 Werner Lemberg <wl@gnu.org>
4173
Werner Lembergc776fc12012-02-25 14:21:01 +01004174 [pcf] Fix Savannah bug #35603.
4175
4176 * src/pcf/pcfread.c (pcf_get_properties): Assure final zero byte in
4177 `strings' array.
4178
41792012-02-25 Werner Lemberg <wl@gnu.org>
4180
Werner Lemberg82365c02012-02-25 13:22:40 +01004181 [type42] Fix Savannah bug #35602.
4182
4183 * src/type42/t42parse.c (t42_parse_sfnts): Check `string_size' more
4184 thoroughly.
4185
41862012-02-25 Werner Lemberg <wl@gnu.org>
4187
Werner Lemberg0b1c0c62012-02-25 10:23:04 +01004188 [bdf] Fix Savannah bugs #35599 and #35600.
4189
4190 * src/bdf/bdflib.c (ACMSG16): New warning message.
4191 (_bdf_parse_glyphs) <_BDF_BITMAP>: Check line length.
4192
Werner Lemberg320d4972012-02-24 18:06:46 +010041932012-02-24 Werner Lemberg <wl@gnu.org>
4194
4195 [bdf] Fix Savannah bugs #35597 and #35598.
4196
4197 * src/bdf/bdflib.c (_bdf_is_atom): Fix handling of property value.
4198
Werner Lemberg1b99d0a2012-02-24 10:54:07 +010041992012-02-24  Vinnie Falco <vinnie.falco@gmail.com>
4200
Werner Lemberg6b5b6f32012-02-24 12:26:25 +01004201 Prepare source code for amalgamation (6/6).
4202
4203 * src/cff/cffdrivr.c: s/Load_Glyph/cff_glyph_load/.
4204
4205 * src/cid/cidload.c: s/parse_font_matrix/cid_parse_font_matrix/.
4206 s/t1_init_loader/cid_init_loader/.
4207 s/t1_done_loader/cid_done_loader/.
4208
4209 * src/pxaux/t1cmap.c: s/t1_get_glyph_name/psaux_get_glyph_name/.
4210
4211 * src/truetype/ttdriver.c: s/Load_Glyph/tt_glyph_load/.
4212
4213 * src/type1/t1load.c: s/parse_font_matrix/t1_parse_font_matrix/.
4214
42152012-02-24  Vinnie Falco <vinnie.falco@gmail.com>
4216
Werner Lemberg1b99d0a2012-02-24 10:54:07 +01004217 Prepare source code for amalgamation (5/6).
4218
4219 * include/freetype/fterrors.h: Undefine FT_KEEP_ERR_PREFIX after
4220 using it.
4221
Vinnie Falco95111432012-02-22 07:01:35 +010042222012-02-22  Vinnie Falco <vinnie.falco@gmail.com>
4223
4224 Prepare source code for amalgamation (4/6).
4225
4226 * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine RAS_ARG,
4227 RAS_ARGS, RAS_VAR, and RAS_VARS before defining it.
4228
4229 * src/smooth/ftgrays.c: s/TRaster/black_TRaster/,
4230 s/PRaster/black_PRaster/.
4231 * src/raster/ftraster.c: s/TRaster/gray_TRaster/,
4232 s/PRaster/gray_PRaster/.
4233
Vinnie Falco126405a2012-02-21 08:48:39 +010042342012-02-20  Vinnie Falco <vinnie.falco@gmail.com>
4235
Vinnie Falcod55f16d2012-02-21 09:21:19 +01004236 Prepare source code for amalgamation (3/6).
4237
4238 * src/smooth/ftgrays.c: s/TWorker/black_TWorker/,
4239 s/PWorker/black_PWorker/.
4240 * src/raster/ftraster.c: s/TWorker/gray_TWorker/,
Vinnie Falco95111432012-02-22 07:01:35 +01004241 s/PWorker/gray_PWorker/.
Vinnie Falcod55f16d2012-02-21 09:21:19 +01004242
42432012-02-20  Vinnie Falco <vinnie.falco@gmail.com>
4244
Vinnie Falco5ccebc42012-02-21 08:54:55 +01004245 Prepare source code for amalgamation (2/6).
4246
4247 * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine FLOOR,
4248 CEILING, TRUNC, and SCALED before defining it.
4249
42502012-02-20  Vinnie Falco <vinnie.falco@gmail.com>
4251
Vinnie Falco126405a2012-02-21 08:48:39 +01004252 Prepare source code for amalgamation (1/6).
4253
4254 See discussion starting at
4255
4256 http://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00037.html
4257
4258 * src/smooth/ftgrays.c: s/TBand/gray_TBand/.
4259 * src/raster/ftraster.c: s/TBand/black_TBand/.
4260
Werner Lemberg63486782012-02-17 14:55:27 +010042612012-02-17 Alexei Podtelezhnikov <apodtele@gmail.com>
4262
4263 [autofit] Fix outline flags.
4264
4265 * src/autofit/afloader.c (af_loader_load_g): Don't reassign
4266 `outline.flags' so that this information is preserved. See
4267 discussion starting at
4268
4269 http://lists.gnu.org/archive/html/freetype-devel/2012-02/msg00046.html
4270
Werner Lembergf24d0792012-02-11 09:37:46 +010042712012-02-11 Werner Lemberg <wl@gnu.org>
4272
Werner Lembergb4e06812012-02-11 20:56:10 +01004273 [truetype] Fix Savannah bug #35466.
4274
4275 Jump instructions are now bound to the current function. The MS
4276 Windows rasterizer behaves the same, as confirmed by Greg Hitchcock.
4277
4278 * src/truetype/ttinterp.h (TT_CallRec): Add `Cur_End' element.
4279 * src/truetype/ttobjs.h (TT_DefRecord): Add `end' element.
4280
4281 * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Check upper
4282 bound of jump address.
4283 (Ins_FDEF, Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns): Updated.
4284
42852012-02-11 Werner Lemberg <wl@gnu.org>
4286
Werner Lemberg185606a2012-02-11 14:34:05 +01004287 We don't use `extensions'.
4288
4289 * include/freetype/internal/ftobjs.h (FT_DriverRec): Remove
4290 `extensions' field.
4291
42922012-02-11 Werner Lemberg <wl@gnu.org>
4293
Werner Lembergf24d0792012-02-11 09:37:46 +01004294 Clean up `generic' fields.
4295
4296 * include/freetype/internal/ftobjs.h (FT_ModuleRec, FT_LibraryRec):
4297 Remove `generic' field since users can't access it.
4298
4299 * src/base/ftobjs.c (FT_Done_GlyphSlot): Call `generic.finalizer' as
4300 advertised in the documentation of FT_Generic.
4301 (Destroy_Module, FT_Done_Library): Updated to changes in `ftobjs.h'.
4302
Werner Lemberg0b7daff2012-02-07 08:52:41 +010043032012-02-07 Werner Lemberg <wl@gnu.org>
4304
Werner Lemberge343e872012-02-07 09:40:11 +01004305 [autofit] Harmonize function arguments.
4306
4307 * src/autofit/afloader.c, src/autofit/afloader.h: Use `FT_Int32' for
4308 `load_flags'.
4309
43102012-02-07 Werner Lemberg <wl@gnu.org>
4311
Werner Lemberg0b7daff2012-02-07 08:52:41 +01004312 * src/cff/cffobjs.c (cff_face_init): Remove unnecessary casts.
4313
suzuki toshiyac7c4d682012-01-17 15:13:50 +090043142012-01-17 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4315
suzuki toshiya7b02b702012-01-17 16:20:02 +09004316 [gxvalid] Fix Savannah bug #35286.
4317
4318 Patch submitted by anonymous reporter.
4319
4320 * src/gxvalid/gxvcommn.c (gxv_XStateTable_subtable_setup):
4321 gxv_set_length_by_ulong_offset() must be called with 3, not 4,
4322 the number of the subtables in the state tables; classTable,
4323 stateArray, entryTable.
4324
43252012-01-17 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4326
suzuki toshiyac7c4d682012-01-17 15:13:50 +09004327 [raccess] Modify for PIC build.
4328
4329 Based on the patch provided by Erik Dahlstrom <ed@opera.com>,
4330 http://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00010.html
4331
4332 Also `raccess_guess_table[]' and `raccess_rule_by_darwin_vfs()'
4333 are renamed with `ft_' suffixes.
4334
4335 * src/base/ftbase.h: `raccess_rule_by_darwin_vfs()' is renamed
4336 to `ft_raccess_rule_by_darwin_vfs()'.
4337 * src/base/ftobjs.c: Ditto.
4338
4339 * src/base/ftrfork.c: Declarations of FT_RFork_Rule,
4340 raccess_guess_rec, are moved to...
4341 * include/freetype/internal/ftrfork.h: Here.
4342
4343 * include/freetype/internal/ftrfork.h:
4344 FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END} macros are defined
4345 to replace raccess_guess_table[] in both of PIC and non-PIC
4346 modes.
4347 * src/base/ftrfork.c: raccess_guess_table[] array is rewritten
4348 by FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END}.
4349
4350 * src/base/basepic.h (BasePIC): Add `ft_raccess_guess_table'
4351 storage. (FT_RACCESS_GUESS_TABLE_GET): New macro to retrieve
4352 the function pointer from `ft_raccess_guess_table' storage in
4353 `BasePIC' structure.
4354 * src/base/ftrfork.c (FT_Raccess_Guess): Rewritten with
4355 FT_RACCESS_GUESS_TABLE_GET.
4356 (raccess_get_rule_type_from_rule_index): Add `library' as the
4357 first argument to the function, to retrieve the storage of
4358 `ft_raccess_guess_table' from it. Also `raccess_guess_table'
4359 is replaced by FT_RACCESS_GUESS_TABLE_GET.
4360 (ft_raccess_rule_by_darwin_vfs): Ditto.
4361
suzuki toshiya4880a0e2012-01-16 18:51:15 +090043622012-01-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4363
suzuki toshiya1749d8b2012-01-17 02:00:24 +09004364 Remove trailing spaces.
4365
43662012-01-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4367
suzuki toshiyac24f77a2012-01-16 21:13:05 +09004368 Formatting PIC related sources.
4369
4370 * src/autofit/afpic.c: Harmonize to FT2 coding conventions.
4371 * src/base/basepic.c: Ditto.
4372 * src/base/ftpic.c: Ditto.
4373 * src/cff/cffpic.c: Ditto.
4374 * src/pshinter/pshpic.c: Ditto.
4375 * src/psnames/pspic.c: Ditto.
4376 * src/raster/rastpic.c: Ditto.
4377 * src/sfnt/sfntpic.c: Ditto.
4378 * src/smooth/ftspic.c: Ditto.
4379 * src/truetype/ttpic.c: Ditto.
4380
43812012-01-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4382
Werner Lembergbd633342012-02-26 08:46:05 +01004383 [autofit] Fix the inclusion of `aflatin2.h' in PIC file.
suzuki toshiya8a5cea22012-01-16 20:41:53 +09004384
Werner Lembergbd633342012-02-26 08:46:05 +01004385 * src/autofit/afpic.c: Include `aflatin2.h' when
suzuki toshiya8a5cea22012-01-16 20:41:53 +09004386 FT_OPTION_AUTOFIT2 is defined, as afglobal.c does so.
4387 Unconditionally inclusion causes declared but unimplemented
4388 warning by GCC 4.6.
4389
43902012-01-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4391
suzuki toshiya4880a0e2012-01-16 18:51:15 +09004392 [cff] Remove redundant declarations of cff_cmap_XXX_class_rec.
4393
4394 * src/cff/cffpic.c: The declarations of
4395 FT_Init_Class_cff_cmap_encoding_class_rec() and
4396 FT_Init_Class_cff_cmap_unicode_class_rec() are removed.
4397 They can be obtained by the inclusion of cffcmap.h.
4398 cffcmap.h invokes FT_DECLARE_CMAP_CLASS() and it declares
4399 FT_Init_Class_cff_cmap_encoding_class_rec() etc in PIC mode.
4400
suzuki toshiyae38acb02012-01-15 20:05:22 +090044012012-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4402
suzuki toshiya3c966812012-01-15 23:35:31 +09004403 Fix redundant declaration warning in PIC mode.
4404
4405 Originally FT_DEFINE_{DRIVER,MODULE,RENDERER}() macros were
4406 designed to declare xxx_pic_{free,init} by themselves.
4407 Because these macros are used at the end of the module
4408 interface (e.g. ttdriver.c) and the wrapper source to build
4409 a module as a single object (e.g. truetype.c) includes
4410 the PIC file (e.g. ttpic.c) before the module interface,
4411 these macros are expanded AFTER xxx_pic_{free,init} body
4412 when the modules are built as single object.
4413 The declaration after the implementation causes the redundant
4414 declaration warnings, so the declarations are moved to module
4415 PIC headers (e.g. ttpic.h). Separating to other header files
4416 are needed for multi build.
4417
4418 * include/freetype/internal/ftdriver.h (FT_DEFINE_DRIVER):
4419 Remove class_##_pic_free and class_##_pic_init declarations.
4420 * include/freetype/internal/ftobjs.h (FT_DEFINE_RENDERER,
4421 FT_DEFINE_MODULE): Ditto.
4422
4423 * src/base/basepic.h: Insert a comment and fix coding style.
4424 * src/autofit/afpic.h: Declare autofit_module_class_pic_{free,
4425 init}.
4426 * src/cff/cffpic.h: Declare cff_driver_class_pic_{free,init}.
4427 * src/pshinter/pshpic.h: Declare pshinter_module_class_pic_{free,
4428 init}.
4429 * src/psnames/pspic.h: Declare psnames_module_class_pic_{free,
4430 init}.
4431 * src/raster/rastpic.h: Declare
4432 ft_raster{1,5}_renderer_class_pic_{free,init}
4433 * src/sfnt/sfntpic.h: Declare sfnt_module_class_pic_{free,init}.
4434 * src/smooth/ftspic.h: Declare
4435 ft_smooth_{,lcd_,lcdv_}renderer_class_pic_{free,init}.
4436 * src/truetype/ttpic.h: Declare tt_driver_class_pic_{free,init}.
4437
44382012-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4439
suzuki toshiyae38acb02012-01-15 20:05:22 +09004440 Make pspic.c to include module error header to fix multi build.
4441
4442 * src/psnames/pspic.c: Include `psnamerr.h'.
4443
suzuki toshiya0614feb2012-01-15 01:29:41 +090044442012-01-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4445
suzuki toshiya09f3e412012-01-15 02:48:47 +09004446 [base] Fix a dereference of uninitialized variable in PIC mode.
4447
4448 * src/base/ftglyph.c (FT_Glyph_To_Bitmap): `glyph' must be
4449 set before derefering to obtain `library'. The initialization
4450 of `clazz', `glyph', `library' and NULL pointer check are
4451 reordered to minimize PIC conditonals.
4452
44532012-01-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4454
suzuki toshiyae38acb02012-01-15 20:05:22 +09004455 [base] Insert explicit cast for GCC 4.6 in PIC mode.
suzuki toshiya0614feb2012-01-15 01:29:41 +09004456
4457 * src/base/ftinit.c (FT_Add_Default_Modules): Under PIC
4458 configuration, FT_DEFAULT_MODULES_GET returns
4459 FT_Module_Class** pointer, GCC 4.6 warns that
4460 const FT_Module_Class* const* variable is warned as
4461 inappropriate to store it. To calm it, explicit cast is
4462 inserted. Also `library' is checked to prevent the NULL
4463 pointer dereference in FT_DEFAULT_MODULES_GET.
4464
suzuki toshiya4b733512012-01-14 06:32:50 +090044652012-01-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4466
suzuki toshiya226f3612012-01-14 06:40:03 +09004467 Fix PIC build broken by d9145241fe378104ba4c12a42534549faacc92e6.
4468
4469 Under PIC configuration, FT_{CFF,PSCMAPS,SFNT,TT}_SERVICES_GET
4470 take no arguments but derefer the variable named `library'
4471 internally.
4472
4473 * src/cff/cffdrivr.c (cff_get_interface): Declare `library' and
4474 set it if non-NULL driver is passed.
4475 * src/truetype/ttdriver.c (tt_get_interface): Ditto.
4476
4477 * src/sfnt/sfdriver.c (sfnt_get_interface): Declare `library'
4478 under PIC configuration, and set it if non-NULL module is given.
4479 * src/psnames/psmodule.c (psnames_get_interface): Ditto.
4480
44812012-01-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4482
Werner Lembergbd633342012-02-26 08:46:05 +01004483 Make PIC files include module error headers, to use the error codes
4484 with per-module prefix.
suzuki toshiya4b733512012-01-14 06:32:50 +09004485
4486 * src/autofit/afpic.c: Include `aferrors.h'.
4487 * src/cff/cffpic.c: Include `cfferrs.h'.
4488 * src/pshinter/pshpic.c: Include `pshnterr.h'.
4489 * src/raster/rastpic.c: Include `rasterrs.h'.
4490 * src/sfnt/sfntpic.c: Include `sferrors.h'.
4491 * src/smooth/ftspic.c: Include `ftsmerrs.h'.
4492 * src/truetype/ttpic.c: Include `tterrors.h'.
4493
Tobias Ringström21472de2012-01-04 18:27:16 +010044942012-01-04 Tobias Ringström <tobias@ringis.se>
4495
4496 [truetype] Fix IP instruction if x_ppem != y_ppem.
4497
4498 * src/truetype/ttinterp.c (Ins_IP): Scale `orus' coordinates
4499 properly.
4500
Werner Lembergc017f072012-01-02 22:33:42 +010045012012-01-02 Werner Lemberg <wl@gnu.org>
4502
4503 Fix tracing message for `loca' table.
4504
4505 * src/truetype/ttpload.c (tt_face_get_location): Don't emit a
4506 warning message if the last `loca' entry references an empty glyph.
4507
Werner Lemberg5cb35642011-12-10 23:16:04 +010045082011-12-10 Werner Lemberg <wl@gnu.org>
4509
4510 Add some variable initializations.
4511 Reported by Richard COOK <rscook@unicode.org>.
4512
4513 * src/type1/t1driver.c (t1_ps_get_font_value): Initialize `val'.
4514 * src/smooth/ftgrays.c (gray_render_conic): Initialize `levels'
4515 earlier.
4516
Werner Lemberg96fcf872011-12-08 11:22:07 +010045172011-12-08 Werner Lemberg <wl@gnu.org>
4518
Werner Lemberg2fb22d52011-12-08 11:55:06 +01004519 Fix serious scaling bug in `FT_Get_Advances'.
4520
4521 * src/base/ftadvanc.c (FT_Get_Advances): Advance values returned by
4522 `FT_Load_Glyph' must be simply multiplied by 1024.
4523
45242011-12-08 Werner Lemberg <wl@gnu.org>
4525
Werner Lemberg96fcf872011-12-08 11:22:07 +01004526 * src/bdf/bdflib.c (_bdf_parse_start): Drop redundant error tracing.
4527
suzuki toshiya714ee562011-12-02 21:14:18 +090045282011-12-02 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4529
4530 [mac] Unify DARWIN_NO_CARBON with FT_MACINTOSH.
4531
4532 Originally FT_MACINTOSH was a pure auto macro and DARWIN_NO_CARBON
4533 was a configurable macro to disable Carbon-dependent code. Because
4534 now configure script sets DARWIN_NO_CARBON by default and disables
4535 Darwin & Carbon-dependent codes, these macros can be unified.
4536 FT_MACINTOSH (undefined by default) is kept and DARWIN_NO_CARBON
4537 (defined by default) is removed, because DARWIN_NO_CARBON violates
Vinnie Falco26dfeb62012-03-08 06:04:03 +01004538 FT_XXX naming convention of public macros, and a macro configured by
suzuki toshiya714ee562011-12-02 21:14:18 +09004539 default is not portable for the building without configure (e.g.
4540 make devel).
4541
4542 * builds/unix/configure.raw: Define FT_MACINTOSH if Carbon-based
4543 old Mac font support is requested and Carbon is available.
4544 * builds/unix/ftconfig.in: Undefine FT_MACINTOSH when the support
4545 for Mac OS X without Carbon (e.g. Mac OS X 10.4 for ppc64) is
4546 requested.
4547 * include/freetype/config/ftconfig.in: Ditto.
4548 * builds/vms/ftconfig.h: Ditto.
4549
4550 * src/base/ftbase.h: Remove DARWIN_NO_CARBON.
4551 * src/base/ftbase.c: Ditto.
4552 * src/base/ftobjs.c: Ditto.
4553 * src/base/ftrfork.c: Ditto.
4554
4555 * src/base/ftmac.c: Compile the body if FT_MACINTOSH is defined
4556 (same with TT_USE_BYTECODE_INTERPRETER in ttinterp.c).
4557 * builds/mac/ftmac.c: Ditto.
4558
4559 * builds/mac/FreeType.m68k_cfm.make.txt: Define FT_MACINTOSH.
4560 * builds/mac/FreeType.m68k_far.make.txt: Ditto.
4561 * builds/mac/FreeType.ppc_classic.make.txt: Ditto.
4562 * builds/mac/FreeType.ppc_carbon.make.txt: Ditto.
4563
suzuki toshiyaeba27812011-11-30 22:40:43 +090045642011-11-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4565
suzuki toshiya2968bd62011-11-30 23:25:38 +09004566 Fix Savannah bug #34728 (`make devel' on Mac OS X).
4567
4568 * builds/toplevel.mk: Check `/dev/null' to identify the Unix-
4569 like systems without `init' nor `hurd' (e.g. Mac OS X >= 10.4).
4570 * builds/unix/detect.mk: Ditto.
4571
45722011-11-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4573
suzuki toshiyaeba27812011-11-30 22:40:43 +09004574 [apinames] Fix the overflow of signed integer hash.
4575
4576 * src/tools/apinames.c (names_add): Change the type of `h' from
4577 int to unsigned int, to prevent undefined behaviour in the
4578 overflow of signed integers (overflow of unsigned int is defined
4579 to be wrap around). Found by clang test suggested by Sean
4580 McBride.
4581
Werner Lemberg910b5442011-11-30 13:08:28 +010045822011-11-30 Werner Lemberg <wl@gnu.org>
4583
Werner Lemberg628bebe2011-11-30 13:55:56 +01004584 [winfonts] Remove casts.
4585
4586 * src/winfonts/winfnt.c (winfnt_driver_class): Remove all casts and
4587 update affected functions.
4588 (FNT_Size_Select): Fix number of arguments.
4589
45902011-11-30 Werner Lemberg <wl@gnu.org>
4591
Werner Lemberg5a7a5932011-11-30 13:38:51 +01004592 [type42] Remove casts.
4593
4594 * src/type42/t42driver.c (t42_driver_class): Remove all casts and
4595 update affected functions.
4596
4597 * src/type42/t42objs.c, src/type42/t42objs.h: Updated for t42driver
4598 changes.
4599
46002011-11-30 Werner Lemberg <wl@gnu.org>
4601
Werner Lemberg910b5442011-11-30 13:08:28 +01004602 [type1] Remove casts.
4603
4604 * src/type1/t1driver.c (t1_driver_class): Remove all casts and
4605 update affected functions.
4606
4607 * src/type1/t1gload.c, src/type1/t1gload.h, src/type1/t1objs.c:
4608 Updated for t1driver changes.
4609 src/type1/t1objs.h (T1_Driver): Remove unused typedef.
4610 Updated for t1driver changes.
4611
Werner Lemberg6e0d4cd2011-11-27 09:21:03 +010046122011-11-27 Werner Lemberg <wl@gnu.org>
4613
Werner Lemberged54e432011-11-27 16:39:53 +01004614 [bdf] Fix Savannah bug #34896.
4615
4616 ENCODING now covers the whole Unicode range.
4617
4618 Note, however, that this change is quite expensive since it
4619 increases the size of three arrays by almost 400kByte in total. The
4620 right fix is to replace the logic with something smarter.
4621 Additionally, there exist very old BDFs for three-byte CCCII
4622 encoding which exceeds the range of Unicode (another reason to have
4623 a smarter logic).
4624
4625 * src/bdf/bdf.h (bdf_font_t): Increase size of `nmod' and `umod'
4626 arrays.
4627 * src/bdf/bdflib.c (bdf_parse_t): Increase size of `have' array.
4628
46292011-11-27 Werner Lemberg <wl@gnu.org>
4630
Werner Lemberg6e0d4cd2011-11-27 09:21:03 +01004631 [bdf] Improve tracing.
4632
4633 * src/bdf/bdflib.c (DBGMSG1, DBGMSG2): New macros.
4634 (_bdf_parse_glyphs): Use them.
4635
Werner Lemberg930e9bf2011-11-26 13:38:26 +010046362011-11-26 Werner Lemberg <wl@gnu.org>
4637
Werner Lemberg70cf8c52011-11-26 20:09:39 +01004638 Improve tracing.
4639
4640 * src/bdf/bdfdrivr.c (BDF_Face_Done), src/pcf/pcfdrivr.c
4641 (PCF_Face_Done): Remove tracing message.
4642
4643 * src/bdf/bdfdrivr.c (BDF_Face_Init), src/cff/cffobjs.c
4644 (cff_face_init), src/cid/cidobjs.c (cid_face_init),
4645 src/pfr/pfrobjs.c (pfr_face_init), src/sfnt/sfobjs.c
4646 (sfnt_init_face), src/truetype/ttobjs.c (tt_face_init),
4647 src/type1/t1objs.c (T1_Face_Init), src/type42/t42objs.c
4648 (T42_Face_Init), src/winfonts/winfnt.c (FNT_Face_Init): Add
4649 `greeting' message.
4650
4651 * src/sfnt/sfobjs.c (sfnt_open_font), src/type42/t42objs.c
4652 (T42_Open_Face): Improve tracing.
4653
46542011-11-26 Werner Lemberg <wl@gnu.org>
4655
Werner Lemberg3630bf72011-11-26 18:20:24 +01004656 [cid] Fix error code.
4657
4658 * src/cid/cidparse.c (cid_parser_new): Do it.
4659
46602011-11-26 Werner Lemberg <wl@gnu.org>
4661
Werner Lembergd05d56f2011-11-26 18:13:09 +01004662 [cff] Fix error code.
4663
4664 * src/cff/cffload.c (cff_font_load): Do it.
4665
46662011-11-26 Werner Lemberg <wl@gnu.org>
4667
Werner Lemberg930e9bf2011-11-26 13:38:26 +01004668 Add new error code FT_Err_Missing_Module.
4669
4670 Previously, FreeType misleadingly returned
4671 FT_Err_Unknown_File_Format if a module was missing (or a test was
4672 missing completely).
4673
4674 * include/freetype/fterrdef.h (FT_Err_Missing_Module): Define.
4675
Werner Lembergf8f576d2011-11-26 18:07:30 +01004676 * src/cff/cffobjs.c (cff_face_init), src/cff/cffdrivr.c
4677 (cff_get_glyph_name), src/cid/cidobjs.c (cid_face_init),
4678 src/sfnt/sfobjs.c (sfnt_init_face), src/truetype/ttobjs.c
4679 (tt_face_init), src/type1/t1objs.c (T1_Face_Init),
4680 src/type42/t42objs.c (T42_Face_Init, T42_Driver_Init): Updated.
Werner Lemberg930e9bf2011-11-26 13:38:26 +01004681
4682 * src/type1/t1afm.c (T1_Read_Metrics), src/type/t1objs.c
4683 (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Remove now
4684 redundant test for `psaux'.
4685
Werner Lemberge01406b2011-11-25 09:44:28 +010046862011-11-25 Werner Lemberg <wl@gnu.org>
4687
4688 [bdf] Add more error messages.
4689
4690 * src/bdf/bdflib.c (_bdf_set_default_spacing, _bdf_add_property):
4691 Add line number argument.
4692 Update all callers.
4693 (ERRMSG5, ERRMSG6, ERRMSG7, ERRMSG8, ERRMSG9): New macros.
4694 (_bdf_readstream, _bdf_set_default_spacing, _bdf_add_property,
4695 _bdf_parse_glyphs, _bdf_parse_start): Add error messages.
4696
Werner Lembergfd905c02011-11-24 12:53:38 +010046972011-11-24 Werner Lemberg <wl@gnu.org>
4698
4699 * include/freetype/fterrors.h: Remove dead code.
4700
Werner Lemberg9d7f0952011-11-14 20:37:12 +010047012011-11-15 Werner Lemberg <wl@gnu.org>
4702
Werner Lembergbb18bf72011-11-15 08:34:54 +01004703 * docs/releases: Updated.
4704
47052011-11-15 Werner Lemberg <wl@gnu.org>
4706
Werner Lemberg9d7f0952011-11-14 20:37:12 +01004707 * Version 2.4.8 released.
4708 =========================
4709
4710
4711 Tag sources with `VER-2-4-8'.
4712
4713 * docs/CHANGES: Updated.
4714
4715 * docs/VERSION.DLL: Update documentation and bump version number to
4716 2.4.8.
4717
4718 * README, Jamfile (RefDoc),
4719 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
4720 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
4721 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
4722 builds/win32/visualc/freetype.dsp,
4723 builds/win32/visualc/freetype.vcproj,
4724 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
4725 builds/win32/visualce/freetype.vcproj,
4726 builds/win32/visualce/index.html,
4727 builds/wince/vc2005-ce/freetype.vcproj,
4728 builds/wince/vc2005-ce/index.html,
4729 builds/wince/vc2008-ce/freetype.vcproj,
4730 builds/wince/vc2008-ce/index.html: s/2.4.7/2.4.8/, s/247/248/.
4731
4732 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 8.
4733
4734 * builds/unix/configure.raw (version_info): Set to 14:0:8.
4735
Chris Liddell8b90cf02011-11-13 16:30:59 +010047362011-11-13 Chris Liddell <chris.liddell@artifex.com>
4737
4738 Add FT_Get_PS_Font_Value() API.
4739
4740 This allows a Type 1 font face to be interrogated to retrieve most
4741 of the dictionary keys (keys not relevant to FreeType's Type 1
4742 interpreter are not available).
4743
4744 * include/freetype/internal/services/svpsinfo.h
4745 (PS_GetFontValueFunc): New typedef.
4746 (PSInfo): Add `ps_get_font_value'.
4747 (FT_DEFINE_SERVICE_PSINFOREC): Updated.
4748
4749 * include/freetype/internal/t1types.h (T1_EncodingType): Moved to...
4750 * include/freetype/t1tables.h: Here.
4751 (PS_Dict_Keys): New enumeration.
4752 (FT_Get_PS_Font_Value): New declaration.
4753
4754 * src/base/fttype1.c (FT_Get_PS_Font_Value): New function.
4755
4756 * src/type1/t1driver.c (t1_ps_get_font_value): This new function
4757 does the real job.
4758 (t1_service_ps_info): Add it.
4759
4760 * src/cff/cffdrivr.c (cff_service_ps_info), src/cid/cidriver.c
4761 (cid_service_ps_info), src/type42/t42drivr.c (t42_service_ps_info):
4762 Updated.
4763
Braden Thomas14a16e32011-11-08 08:27:42 +010047642011-11-08 Braden Thomas <bthomas@apple.com>
4765
4766 [cid] Various loading fixes.
4767
4768 * src/cid/cidload.c (cid_load_keyword) <default>,
4769 (parse_font_matrix, parse_expansion_factor): Correctly check number
4770 of dictionaries.
4771 (cid_read_subrs): Protect against invalid values of `num_subrs'.
4772 Assure that the elements of the `offsets' array are ascending.
4773
Werner Lembergb2874fd2011-11-05 08:39:58 +010047742011-11-05 Werner Lemberg <wl@gnu.org>
4775
4776 * README: We use copyright ranges also.
4777
4778 According to
4779
4780 http://www.gnu.org/prep/maintain/html_node/Copyright-Notices.html
4781
4782 this should be mentioned explicitly.
4783
suzuki toshiyadbe330b2011-10-30 12:31:03 +090047842011-10-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4785
suzuki toshiya94ada3d2011-10-30 14:03:13 +09004786 [raccess] Supplement for previous fix.
4787
4788 * src/base/ftbase.h (raccess_rule_by_darwin_vfs): Do not declare
4789 it on native Mac OS X.
4790 * src/base/ftrfork.c (raccess_get_rule_type_from_rule_index):
4791 Hide raccess_get_rule_type_from_rule_index() on native Mac OS X
4792 too.
4793
47942011-10-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4795
suzuki toshiyadbe330b2011-10-30 12:31:03 +09004796 [raccess] Hide raccess_rule_by_darwin_vfs() on native Mac OS X.
4797
4798 * src/base/ftrfork.c (raccess_rule_by_darwin_vfs): Do not
4799 compile on native Mac OS X because it is not used.
4800
Werner Lembergf4ec60f2011-10-25 20:25:32 +020048012011-10-25 Werner Lemberg <wl@gnu.org>
4802
4803 [truetype] Fix MD instruction for twilight zone.
4804
4805 * src/truetype/ttinterp.c (Ins_MD): Without this fix, the MD
4806 instruction applied to original coordinates of twilight points
4807 always returns zero.
4808
Werner Lemberg016eba92011-10-18 13:34:32 +020048092011-10-18 Werner Lemberg <wl@gnu.org>
4810
4811 * Version 2.4.7 released.
4812 =========================
4813
4814
4815 Tag sources with `VER-2-4-7'.
4816
4817 * docs/CHANGES: Updated.
4818
4819 * docs/VERSION.DLL: Update documentation and bump version number to
4820 2.4.7.
4821
4822 * README, Jamfile (RefDoc),
4823 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
4824 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
4825 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
4826 builds/win32/visualc/freetype.dsp,
4827 builds/win32/visualc/freetype.vcproj,
4828 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
4829 builds/win32/visualce/freetype.vcproj,
4830 builds/win32/visualce/index.html,
4831 builds/wince/vc2005-ce/freetype.vcproj,
4832 builds/wince/vc2005-ce/index.html,
4833 builds/wince/vc2008-ce/freetype.vcproj,
4834 builds/wince/vc2008-ce/index.html: s/2.4.6/2.4.7/, s/246/247/.
4835
Werner Lemberg9d7f0952011-11-14 20:37:12 +01004836 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 7.
Werner Lemberg016eba92011-10-18 13:34:32 +02004837
4838 * builds/unix/configure.raw (version_info): Set to 13:2:7.
4839
Kal Conley298608d2011-10-15 09:09:59 +020048402011-10-15 Kal Conley <kcconley@gmail.com>
4841
Kal Conley72185cb2011-10-15 09:33:11 +02004842 Fix handling of transformations if no renderer is present.
4843
4844 * src/base/ftobjs.c (FT_Load_Glyph): Thinko.
4845
48462011-10-15 Kal Conley <kcconley@gmail.com>
4847
Kal Conley298608d2011-10-15 09:09:59 +02004848 Fix conditions for autohinting.
4849
4850 * src/base/ftobjs.c (FT_Load_Glyph): Handle
4851 FT_LOAD_IGNORE_TRANSFORM.
4852
suzuki toshiyafaddba42011-10-08 01:30:49 +090048532011-10-07 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4854
4855 [gxvalid] Fix a bug to detect too large offset in morx table.
4856
4857 * src/gxvalid/gxvmorx2.c
4858 (gxv_morx_subtable_type2_ligActionIndex_validate): Fix a bug
4859 that too large positive offset cannot be detected.
4860
Werner Lemberg9c98fbf2011-10-01 09:25:55 +020048612011-10-01 Braden Thomas <bthomas@apple.com>
4862
4863 Handle some border cases.
4864
4865 * include/freetype/config/ftstdlib.h (FT_USHORT_MAX): New macro.
4866
4867 * src/base/ftbitmap.c (FT_Bitmap_Convert): Protect against invalid
4868 value of `target->rows'.
4869
4870 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add check for
4871 flex start.
4872
4873 * src/raster/ftrend1.c (ft_raster1_render): Check `width' and
4874 `height'.
4875
4876 * src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Protect against
4877 invalid values in `localpoints' array.
4878
Werner Lemberg6ae8bde2011-10-01 08:55:20 +020048792011-10-01 Werner Lemberg <wl@gnu.org>
4880
4881 [psnames] Handle zapfdingbats.
4882 Problem reported by Nicolas Rougier <Nicolas.Rougier@inria.fr>.
4883
4884 * src/tools/glnames.py (adobe_glyph_list): Add data from AGL's
4885 `zapfdingbats.txt' file.
4886
4887 * src/psnames/pstables.h: Regenerated.
4888
48892011-09-27 Simon Bünzli <zeniko@gmail.com>
Werner Lembergbfc20c72011-09-27 17:35:09 +02004890
Werner Lemberg273e2b72012-09-18 13:27:27 +02004891 [type1] Fix Savannah bug #34189.
Werner Lembergbfc20c72011-09-27 17:35:09 +02004892
4893 * src/type1/t1load.c (T1_Open_Face): Initialize
4894 `face->len_buildchar'.
4895
Werner Lemberg34d28182011-09-26 08:59:21 +020048962011-09-26 Werner Lemberg <wl@gnu.org>
4897
4898 [cff] Dump SIDs while tracing.
4899
4900 * src/cff/cffobjs.c (cff_face_init): Do it.
4901
4902 * src/cff/cffparse.c (cff_parser_run) [FT_DEBUG_LEVEL_TRACE]
4903 <cff_kind_string>: Identify as SID.
4904
Werner Lemberg34eca6e2011-09-17 09:46:46 +020049052011-09-17 Werner Lemberg <wl@gnu.org>
4906
4907 Remove unused FT_ALIGNMENT macro.
4908
4909 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
4910 include/freetype/config/ftconfig.h: Do it.
4911
Werner Lemberge9e93d12011-09-17 09:21:25 +020049122011-09-17 Alexei Podtelezhnikov <apodtele@gmail.com>
4913
4914 [smooth] Slightly optimize conic and cubic flatterners.
4915
4916 * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
4917 out some code from the main loop to speed it up.
4918
Tomas Hoger86c3c692011-09-11 09:08:40 +020049192011-09-11 Tomas Hoger <thoger@redhat.com>
4920
Tomas Hoger487913d2011-09-11 09:18:10 +02004921 Slightly improve LZW_CLEAR handling.
4922
4923 * src/lzw/ftzopen.c (ft_lzwstate_io) <FT_LZW_PHASE_CODE>:
4924 Ensure that subsequent (modulo garbage byte(s)) LZW_CLEAR codes are
4925 handled as clear codes. This also re-sets old_code and old_char to
4926 predictable values, which is a little better than using `random'
4927 ones if the code following LZW_CLEAR is invalid.
4928
49292011-09-11 Tomas Hoger <thoger@redhat.com>
4930
Tomas Hoger83cb6c02011-09-11 09:13:45 +02004931 Add explicit LZW decompression stack size limit.
4932
4933 Stack larger than 1<<LZW_MAX_BITS is never needed if prefix table is
Werner Lemberged54e432011-11-27 16:39:53 +01004934 constructed correctly. It's even less than that, see e.g.
Tomas Hoger83cb6c02011-09-11 09:13:45 +02004935 libarchive code comment for a better size upper bound:
4936
4937 http://code.google.com/p/libarchive/source/browse/trunk/libarchive/archive_read_support_filter_compress.c?r=3635#121
4938
4939 This patch adds explicit stack size limit, enforced when stack is
4940 realloced.
4941
4942 An alternative is to ensure that code < state->prefix[code - 256]
4943 when traversing prefix table. Such check is less efficient and
4944 should not be required if prefix table is constructed correctly in
4945 the first place.
4946
4947 * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Implement it.
4948
49492011-09-11 Tomas Hoger <thoger@redhat.com>
4950
Tomas Hoger86c3c692011-09-11 09:08:40 +02004951 Protect against loops in the prefix table.
4952
4953 LZW decompressor did not sufficiently check codes read from the
4954 input LZW stream. A specially-crafted or corrupted input could
4955 create a loop in the prefix table, which leads to memory usage
4956 spikes, as there's no decompression stack size limit.
4957
4958 * src/lzw/ftzopen.c (ft_lzwstate_io) <FT_LZW_PHASE_START>: First
4959 code in valid LZW stream must be 0..255.
4960 <FT_LZW_PHASE_CODE>: In the special KwKwK case, code == free_ent,
4961 code > free_ent is invalid.
4962
Werner Lemberg57b6a612011-09-09 19:05:54 +020049632011-09-09 Werner Lemberg <wl@gnu.org>
4964
4965 Better tracing of metrics.
4966
4967 * src/base/ftobjs.c (FT_Request_Size, FT_Select_Size): Decorate with
4968 FT_TRACE.
4969
Werner Lembergbb211ce2011-09-07 15:01:20 +020049702011-09-07 Werner Lemberg <wl@gnu.org>
4971
Werner Lemberg273e2b72012-09-18 13:27:27 +02004972 [cff] Fix Savannah bug #33816.
Werner Lembergbb211ce2011-09-07 15:01:20 +02004973
4974 * src/cff/cfftypes.h (CFF_FontRecDictRec): New member
4975 `has_font_matrix'.
4976 * src/cff/cffparse.c (cff_parse_font_matrix): Set it.
4977 Update tracing output.
4978 * src/cff/cffobjs.c (cff_face_init): Use it so that the heuristics
4979 can be removed.
4980
Werner Lemberg51ca7712011-08-30 07:42:19 +020049812011-08-30 Werner Lemberg <wl@gnu.org>
4982
4983 Better tracing of metrics.
4984
4985 * src/base/ftobjs.c (FT_Select_Metrics, FT_Request_Metrics):
4986 Decorate with FT_TRACE.
4987
Werner Lemberg35ab70c2011-08-25 13:41:16 +020049882011-08-25 Werner Lemberg <wl@gnu.org>
4989
4990 [cff] Better tracing of the parsing process.
4991
4992 * src/cff/cffload.c (cff_subfont_load, cff_font_load): Decorate with
4993 FT_TRACE.
4994
4995 * src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox,
4996 cff_parse_private_dict, cff_parse_cid_ros): Updated.
4997 (CFF_FIELD_NUM, CFF_FIELD_FIXED, CFF_FIELD_FIXED_1000,
4998 CFF_FIELD_STRING, CFF_FIELD_BOOL, CFF_FIELD_CALLBACK, CFF_FIELD,
4999 CFF_FIELD_DELTA): Add argument for ID.
5000 (cff_parser_run): Decorate with FT_TRACE.
5001
5002 * src/cff/cffparse.h (CFF_Field_Handler) [FT_DEBUG_LEVEL_TRACE]: Add
5003 `id' member.
5004
5005 * src/cff/cfftoken.h: Add IDs to all fields.
5006
Werner Lembergc3fb9812011-08-16 16:04:33 +020050072011-08-16 Werner Lemberg <wl@gnu.org>
5008
5009 Fix Savannah bug #34022.
5010
5011 * README, docs/INSTALL: Remove references to UPGRADE.UNIX.
5012
Werner Lembergfa5c2e92011-08-15 17:46:40 +020050132011-08-15 Werner Lemberg <wl@gnu.org>
5014
5015 Fix Savannah bug #34018.
5016
Werner Lembergc3fb9812011-08-16 16:04:33 +02005017 * docs/UPGRADE.UNIX: Removed. Obsolete.
Werner Lembergfa5c2e92011-08-15 17:46:40 +02005018
David Bevan864c4262011-08-15 17:34:01 +020050192011-08-15 David Bevan <david.bevan@pb.com>
5020
5021 Fix Savannah bug #33992.
5022
5023 * src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix border case.
5024
Werner Lembergbad01602011-08-12 19:50:13 +020050252011-08-12 Werner Lemberg <wl@gnu.org
5026
5027 [truetype] Fix degenerate case in S{P,F,DP}VTL opcodes.
5028
5029 * src/truetype/ttinterp.c (Ins_SxVTL): Handle p1 == p2 specially.
5030 (Ins_SDPVTL): Handle v1 == v2 specially.
5031
Werner Lembergb91e7852011-08-09 17:48:44 +020050322011-08-09 Werner Lemberg <wl@gnu.org>
5033
Werner Lemberg273e2b72012-09-18 13:27:27 +02005034 [cff] Fix Savannah bug #33975.
Werner Lembergb91e7852011-08-09 17:48:44 +02005035
5036 * src/cff/cffparse.c (cff_parse_font_matrix): Fix typo.
5037
Werner Lemberge7d42362011-07-29 06:15:20 +020050382011-07-29 Werner Lemberg <wl@gnu.org>
5039
Werner Lemberg29a79652011-07-29 06:23:27 +02005040 * Version 2.4.6 released.
5041 =========================
5042
5043
5044 Tag sources with `VER-2-4-6'.
5045
5046 * docs/CHANGES: Updated.
5047
5048 * docs/VERSION.DLL: Update documentation and bump version number to
5049 2.4.6.
5050
5051 * README, Jamfile (RefDoc),
5052 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
5053 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
5054 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
5055 builds/win32/visualc/freetype.dsp,
5056 builds/win32/visualc/freetype.vcproj,
5057 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
5058 builds/win32/visualce/freetype.vcproj,
5059 builds/win32/visualce/index.html,
5060 builds/wince/vc2005-ce/freetype.vcproj,
5061 builds/wince/vc2005-ce/index.html,
5062 builds/wince/vc2008-ce/freetype.vcproj,
5063 builds/wince/vc2008-ce/index.html: s/2.4.5/2.4.6/, s/245/246/.
5064
5065 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 6.
5066
5067 * builds/unix/configure.raw (version_info): Set to 13:1:7.
5068
50692011-07-29 Werner Lemberg <wl@gnu.org>
5070
Werner Lemberge7d42362011-07-29 06:15:20 +02005071 [cff] Add some more tracing infos.
5072
5073 * src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox,
5074 cff_parse_cid_ros): Add tracing.
5075
Dirk Müllerb03c4a02011-07-22 05:24:11 +020050762011-07-22 Dirk Müller <dmueller@suse.de>
5077
5078 [psaux, type1] Fix null pointer dereferences.
5079
5080 Found with font fuzzying.
5081
5082 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Check
5083 `decoder->buildchar'.
5084
5085 * src/type1/t1load.c (t1_load_keyword): Check `blend->num_designs'.
5086
Chris Morgan3abf6172011-07-20 06:48:08 +020050872011-07-20 Chris Morgan <cmorgan@cybexintl.com>
5088
5089 Add FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT.
5090
5091 Useful for embedded systems which don't need file stream support.
5092
5093 * src/base/ftsystem.c, src/base/ftobjs.c (FT_Stream_New): Implement
5094 it.
5095
Elton Chung77f04ce2011-07-20 06:30:20 +020050962011-07-20 Elton Chung <elton328@gmail.com>
5097
5098 * src/base/ftpatent.c (FT_Face_SetUnpatentedHinting): Fix typo.
5099
Steven Chub0962ac2011-07-16 09:12:42 +020051002011-07-16 Steven Chu <steven.f.chu@gmail.com>
5101
5102 [truetype] Fix metrics on size request for scalable fonts.
5103
5104 * src/truetype/ttdriver.c (tt_size_request): Fix copying metrics
5105 from TT_Size to FT_Size if scalable font.
5106
Werner Lemberge7d42362011-07-29 06:15:20 +02005107 See
5108
5109 http://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00049.html
5110
5111 for some comparison images.
5112
Matthias Drochner143799d2011-07-14 07:35:51 +020051132011-07-14 Matthias Drochner <M.Drochner@fz-juelich.de>.
5114
5115 [psaux] Fix potential sign extension problems.
5116
5117 When shifting right a signed value, it is not defined by the
5118 C standard whether one gets a sign extension or not. Use a macro to
5119 do an explicit cast from a signed short (assuming that this is
5120 16bit) to an int.
5121
5122 * src/psaux/t1decode.c (Fix2Int): New macro.
5123 Use it where appropriate.
5124
Werner Lemberg60f83712011-07-14 07:34:12 +020051252011-07-14 Werner Lemberg <wl@gnu.org>
5126
5127 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
5128 <op_callothersubr>: Better handling of subroutine index 0.
5129 From Matthias Drochner <M.Drochner@fz-juelich.de>.
5130
Алексей Подтележниковdc33b4a2011-07-10 07:08:51 +020051312011-07-10 Алексей Подтележников <apodtele@gmail.com>
5132
5133 [psaux] Optimize previous commit.
5134
5135 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
5136 <op_callothersubr>: Move error check down to avoid testing twice for
5137 good cases.
5138
Werner Lembergc46b1e22011-07-08 13:46:42 +020051392011-07-08 Werner Lemberg <wl@gnu.org>
5140
5141 [psaux] Add better argument check for `callothersubr'.
5142
5143 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
5144 <op_callothersubr>: Reject negative arguments.
5145
Werner Lembergf0957442011-07-07 14:10:39 +020051462011-07-07 Werner Lemberg <wl@gnu.org>
5147
5148 [sfnt] Try harder to find non-zero values for ascender and descender.
5149
5150 * src/sfnt/sfobjs.c (sfnt_load_face): Consult `OS/2' table in case
5151 the `hhea' table's values are zero.
5152
Werner Lembergf4b63322011-07-03 11:24:46 +020051532011-07-03 Werner Lemberg <wl@gnu.org>
5154
5155 Fix previous commit.
5156
5157 We want to unset FT_FACE_FLAG_SCALABLE only if there are bitmap
5158 strikes in the font.
5159
5160 * src/truetype/ttobjs.c (tt_face_init): Implement it.
5161
5162 * docs/CHANGES: Updated.
5163
Just Fill Bugs07598332011-07-02 18:41:36 +020051642011-07-02 Just Fill Bugs <mozbugbox@yahoo.com.au>
5165
Werner Lemberg273e2b72012-09-18 13:27:27 +02005166 [truetype] Fix Savannah bug #33246.
Just Fill Bugs07598332011-07-02 18:41:36 +02005167
5168 * src/truetype/ttobjs.c (tt_check_single_notdef): New function.
5169 (tt_face_init): Use it to test FT_FACE_FLAG_SCALABLE.
5170
Werner Lemberg9ae6c7c2011-07-02 12:15:10 +020051712011-07-02 Werner Lemberg <wl@gnu.org>
5172
5173 * docs/CHANGES: Updated.
5174
David Bevanaecbfe12011-07-02 12:09:52 +020051752011-07-02 David Bevan <david.bevan@pb.com>
5176
5177 [ftstroke] Major revision.
5178
5179 The main problems
5180 -----------------
5181
5182 o If FT_STROKER_LINEJOIN_BEVEL was specified, unlimited miter
5183 joins (not bevel joins) were generated. Indeed, the meanings of
5184 `miter' and `bevel' were incorrectly reversed (consistently) in
5185 both the code and comments.
5186
5187 o The way bevel joins were constructed (whether specified
5188 explicitly, or created as a result of exceeding the miter limit)
5189 did not match what is required for stroked text in PostScript or
5190 PDF.
5191
5192 The main fixes
5193 --------------
5194
5195 o The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected.
5196
5197 o A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has been
5198 introduced to support PostScript and PDF miter joins.
5199
5200 o FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an
5201 alias for FT_STROKER_LINEJOIN_MITER.
5202
5203 Additionally, a variety of stroking errors have been fixed. These
5204 would cause various artifacts (including points `at infinity'),
5205 especially when stroking poor quality fonts.
5206
5207 See
5208
5209 http://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00001.html
5210
5211 for example documents. The FreeType stroker now produces results
5212 very similar to that produced by GhostScript and Distiller for these
5213 fonts.
5214
5215 Other problems
5216 --------------
5217
5218 The following problems have been resolved:
5219
5220 o Inside corners could be generated incorrectly. Intersecting the
5221 inside corner could cause a missing triangular area and other
5222 effects.
5223
5224 The intersection point can only be used if the join is between
5225 two lines and both lines are long enough. The `optimization'
5226 condition in `ft_stroker_inside' has been corrected; this
5227 requires the line length to be passed into various functions and
5228 stored in `FT_StrokerRec'.
5229
5230 o Incorrect cubic curves could be generated. The angle
5231 calculations in `FT_Stroker_CubicTo' have been corrected to
5232 handle the case of the curve crossing the +/-PI direction.
5233
5234 o If the border radius was greater than the radius of curvature of
5235 a curve, then the negative sector would end up outside (not
5236 inside) the border. This situation is now recognized and the
5237 negative sector is circumnavigated in the opposite direction.
5238 (If round line joins are being used, this code is disabled
5239 because the line join will always cover the negative sector.)
5240
5241 o When a curve is split, the arcs may not join smoothly (especially
5242 if the curve turns sharply back on itself). Changes in
5243 direction between adjacent arcs were not handled. A round
5244 corner is now added if the deviation from one arc to the next is
5245 greater than a suitable threshold.
5246
5247 o The current direction wasn't retained if a the outline contained
5248 a zero length lineto or a curve that was determined to be
5249 `basically a point'. This could cause a spurious join to be
5250 added.
5251
5252 o Cubics with close control points could be mishandled. All eight
5253 cases are now distinguished correctly.
5254
5255 Other improvements
5256 ------------------
5257
5258 o Borders for cubic curves could be too `flat'.
5259 FT_SMALL_CUBIC_THRESHOLD has been reduced a little to prevent
5260 this.
5261
5262 o The handling and use of movable points has been simplified a
5263 little.
5264
5265 o Various values are now computed only if the results are actually
5266 needed.
5267
5268 o The directions of the outer and inner borders have been swapped,
5269 as recommended by Graham Asher.
5270
5271 * src/base/ftstroke.c: Revised.
5272 * include/freetype/ftstroke.h: Updated.
5273
Werner Lembergee5d3b52011-06-30 15:08:15 +020052742011-06-30 İsmail Dönmez <ismail@namtrac.org>
5275
5276 * builds/toplevel.mk: We use git, not CVS, thus skip `.gitignore'.
5277
Werner Lemberg96ddc672011-06-29 09:15:54 +020052782011-06-29 Werner Lemberg <wl@gnu.org>
5279
Werner Lemberg273e2b72012-09-18 13:27:27 +02005280 [bdf] Fix Savannah bug #33663.
Werner Lemberg96ddc672011-06-29 09:15:54 +02005281
5282 * src/bdf/bdflib.c (_bdf_parse_glyphs): Handle negative values for
5283 ENCODING correctly.
5284
Werner Lemberg54f187a2011-06-29 10:01:42 +02005285 * docs/CHANGES: Document it.
5286
Werner Lembergda9dbf82011-06-25 07:16:22 +020052872011-06-24 Werner Lemberg <wl@gnu.org>
5288
5289 * Version 2.4.5 released.
5290 =========================
5291
5292
5293 Tag sources with `VER-2-4-5'.
5294
5295 * docs/CHANGES: Updated.
5296
5297 * docs/VERSION.DLL: Update documentation and bump version number to
5298 2.4.5
5299
5300 * README, Jamfile (RefDoc),
5301 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
5302 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
5303 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
5304 builds/win32/visualc/freetype.dsp,
5305 builds/win32/visualc/freetype.vcproj,
5306 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
5307 builds/win32/visualce/freetype.vcproj,
5308 builds/win32/visualce/index.html,
5309 builds/wince/vc2005-ce/freetype.vcproj,
5310 builds/wince/vc2005-ce/index.html,
5311 builds/wince/vc2008-ce/freetype.vcproj,
5312 builds/wince/vc2008-ce/index.html: s/2.4.4/2.4.5/, s/244/245/.
5313
5314 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
5315
5316 * builds/unix/configure.raw (version_info): Set to 13:0:7.
5317
Werner Lemberg4696dde2011-06-20 19:09:02 +020053182011-06-20 Werner Lemberg <wl@gnu.org>
5319
5320 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Fix change
5321 from 2011-05-04.
5322
suzuki toshiyac63c6f72011-06-19 22:54:40 +090053232011-06-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5324
suzuki toshiyac7e80282011-06-19 23:00:11 +09005325 [gxvalid] make the `prop' validation tracing verbose.
5326
5327 * src/gxvalid/gxvprop.c: Add tracing messages for errors.
5328
53292011-06-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5330
suzuki toshiyac63c6f72011-06-19 22:54:40 +09005331 [autogen.sh] Reflect environment variable LIBTOOLIZE.
5332
Werner Lembergea79b842011-06-18 08:06:57 +020053332011-06-18 Werner Lemberg <wl@gnu.org>
5334
5335 Update license documentation.
5336
5337 * docs/GPL.TXT: Renamed to...
5338 * docs/GPLv2.TXT: This.
5339
5340 * docs/LICENSE.TXT: Updated.
5341
suzuki toshiya248aa632011-06-14 23:47:21 +090053422011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5343
suzuki toshiyae62c8762011-06-15 02:48:33 +09005344 Fix g++4.6 compiler warnings in module drivers.
5345
5346 The background is same with previous commit.
5347
5348 * src/truetype/ttgxvar.c (ft_var_readpackedpoints):
5349 Init `points'. (TT_Vary_Get_Glyph_Deltas): Init
5350 `delta_xy'. (TT_Get_MM_Var): Init `mmvar'.
5351 * src/type1/t1load.c (T1_Get_MM_Var): Ditto.
5352 * src/cff/cffdrivr.c (cff_ps_get_font_info): Init
5353 `font_info'.
5354 * src/cff/cffload.c (cff_index_get_pointers): Init `t'.
5355 (cff_font_load): Init `sub'.
5356 * src/cff/cffobjs.c (cff_size_init): Init `internal'.
5357 (cff_face_init): Init `cff'.
5358 * src/pfr/pfrload.c (pfr_extra_item_load_stem_snaps):
5359 Init `snaps'.
5360 * src/pcf/pcfread.c (pcf_get_properties): Init `properties'.
5361 (pcf_get_bitmaps): Init `offsets'. (pcf_get_encodings):
5362 Init `tmpEncoding'.
5363 * src/sfnt/ttload.c (tt_face_load_gasp): Init `gaspranges'.
5364 * src/sfnt/ttsbit.c (Load_SBit_Image): Init `components'.
5365 * src/cache/ftcmru.c (FTC_MruList_New): Init `node'.
5366 * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Init `zip' and
5367 `zip_buff'.
5368 * src/lzw/ftlzw.c (FT_Stream_OpenLZW): Init `zip'.
5369 * src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Init `zip'.
5370
53712011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5372
suzuki toshiya65a44982011-06-15 01:44:24 +09005373 [base] Fix g++4.6 compiler warnings in src/base/*.c.
5374
suzuki toshiyadc185ee2011-06-15 02:36:52 +09005375 Passing uninitialized pointer to FT_NEW() families is
suzuki toshiya65a44982011-06-15 01:44:24 +09005376 not problematic theoretically (as far as the returned
5377 pointer is checked before writing), but g++4.6 dislikes
5378 it and warns by -Wuninitialized. Initialize them by NULL.
5379
5380 * src/base/ftobjs.c (FT_Stream_New): Init `stream'.
5381 (new_memory_stream): Ditto.
5382 (FT_New_GlyphSlot): Init `slot'.
5383 (FT_CMap_New): Init `cmap'.
5384 (open_face_PS_from_sfnt_stream): Init `sfnt_ps'.
5385 (Mac_Read_POST_Resource): Init `pfb_data'.
5386 (Mac_Read_sfnt_Resource): Init `sfnt_data'.
5387 * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets):
5388 Init `offsets_internal' and `ref'.
5389 (raccess_guess_darwin_hfsplus): Init `newpath'.
5390 (raccess_guess_darwin_newvfs): Ditto.
5391 * src/base/ftbitmap.c (ft_bitmap_assure_buffer):
5392 Init `buffer'.
5393 * src/base/ftstroke.c (FT_Stroker_New): Init `stroker'.
5394
53952011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5396
suzuki toshiya75b91a42011-06-15 01:10:33 +09005397 [gxvalid] Cleanup.
5398
5399 Some invalid, overrunning, unrecommended non-zero values
5400 are cared in paranoid validation mode only. There are
5401 many lines looking like:
5402
5403 if ( valid->root->level >= FT_VALIDATE_PARANOID )
5404 FT_INVALID_xxx;
5405
5406 To simplify them, GXV_SET_ERR_IF_PARANOID( err ) is
5407 introduced for more paranoid validation in future.
5408
5409 * src/gxvalid/gxvcommn.h (IS_PARANOID_VALIDATION):
5410 New macro to assure valid->root->level is more or
5411 equal to FT_VALIDATE_PARANOID. (GXV_SET_ERR_IF_PARANOID):
5412 New macro to raise an error if in paranoid validation.
5413 * src/gxvalid/gxvcommn.c: Use GXV_SET_ERR_IF_PARANOID().
5414 * src/gxvalid/gxvfeat.c: Ditto.
5415 * src/gxvalid/gxvjust.c: Ditto.
5416 * src/gxvalid/gxvkern.c: Ditto.
5417 * src/gxvalid/gxvmort.c: Ditto.
5418 * src/gxvalid/gxvmort0.c: Ditto.
5419 * src/gxvalid/gxvmort1.c: Ditto.
5420 * src/gxvalid/gxvmort2.c: Ditto.
5421 * src/gxvalid/gxvmorx1.c: Ditto.
5422 * src/gxvalid/gxvmorx2.c: Ditto.
5423
54242011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5425
suzuki toshiyaf6f9b662011-06-14 23:55:23 +09005426 [gxvalid] Fix gcc4.6 compiler warnings in gxvtrak.c.
5427
5428 * src/gxvalid/gxvtrak.c (gxv_trak_trackTable_validate):
5429 Check different entries pointing same traking value.
5430 (gxv_trak_validate): Remove unused variable `table_size'.
5431
54322011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5433
suzuki toshiya05fc72c2011-06-14 23:54:10 +09005434 [gxvalid] Fix gcc4.6 compiler warnings in gxvmorx*.c.
5435
5436 * src/gxvalid/gxvmorx.c (gxv_morx_subtables_validate):
5437 Conditionalize unvalidated variable `subFeatureFlags'.
5438 (gxv_morx_chain_validate): Conditionalize unvalidated
5439 variable `defaultFlags'.
5440
5441 * src/gxvalid/gxmorx0.c
5442 (gxv_morx_subtable_type0_entry_validate):
5443 Conditionalize unvalidated variables; `markFirst',
5444 `dontAdvance', `markLast', `verb'.
5445
5446 * src/gxvalid/gxmorx1.c
5447 (gxv_morx_subtable_type1_entry_validate): Conditionalize
5448 unvalidated variables; `setMark', `dontAdvance'.
5449
5450 * src/gxvalid/gxvmorx2.c
5451 (gxv_morx_subtable_type2_ligActionOffset_validate):
5452 Conditionalize unvalidated variables; `last', `store'.
5453 Checking for overrunning offset is added.
5454 (gxv_morx_subtable_type2_entry_validate):
5455 Conditionalize unvalidated variables; `setComponent',
5456 `dontAdvance', `performAction'.
5457 (gxv_morx_subtable_type2_ligatureTable_validate):
5458 Check if the GID for ligature does not exceed the
5459 max GID in `maxp' table.
5460
5461 * src/gxvalid/gxvmort5.c
5462 (gxv_morx_subtable_type5_InsertList_validate):
5463 Conditionalize unvalidated loading of `insert_glyphID'
5464 array. (gxv_morx_subtable_type5_entry_validate):
5465 Conditionalize unvalidated variables; `setMark',
5466 `dontAdvance', `currentIsKashidaLike',
5467 `markedIsKashidaLike', `currentInsertBefore',
5468 `markedInsertBefore'.
5469
54702011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5471
suzuki toshiya56be3ac2011-06-14 23:53:12 +09005472 [gxvalid] Fix gcc4.6 compiler warnings in gxvmort*.c.
5473
5474 * src/gxvalid/gxvmort.c (gxv_mort_subtables_validate):
5475 Conditionalize unvalidated variable `subFeatureFlags'.
5476 (gxv_mort_chain_validate): Conditionalize unvalidated
5477 variable `defaultFlags'.
5478
5479 * src/gxvalid/gxmort0.c
5480 (gxv_mort_subtable_type0_entry_validate): Check the
5481 conflict of the marks for the glyphs.
5482
5483 * src/gxvalid/gxmort1.c
5484 (gxv_mort_subtable_type1_offset_to_subst_validate):
5485 Local variables `min_gid', `max_gid' are replaced by
5486 variables in the validator.
5487 (gxv_mort_subtable_type1_entry_validate): Conditionalize
5488 unvalidated variables; `setMark', `dontAdvance'.
5489 (gxv_mort_subtable_type1_substTable_validate):
5490 Validate the GID by the min/max GIDs in the validator.
5491
5492 * src/gxvalid/gxvmort2.c
5493 (gxv_mort_subtable_type2_ligActionOffset_validate):
5494 Conditionalize unvalidated variables; `last', `store'.
5495 Checking for overrunning offset is added.
5496 (gxv_mort_subtable_type2_entry_validate):
5497 Conditionalize unvalidated variables; `setComponent',
5498 `dontAdvance'.
5499 (gxv_mort_subtable_type2_ligatureTable_validate):
5500 Check if the GID for ligature does not exceed the
5501 max GID in `maxp' table.
5502
5503 * src/gxvalid/gxvmort5.c
5504 (gxv_mort_subtable_type5_InsertList_validate):
5505 Conditionalize unvalidated loading of `insert_glyphID'
5506 array. (gxv_mort_subtable_type5_entry_validate):
5507 Conditionalize unvalidated variables; `setMark',
5508 `dontAdvance', `currentIsKashidaLike',
5509 `markedIsKashidaLike', `currentInsertBefore',
5510 `markedInsertBefore'.
5511
55122011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5513
suzuki toshiya20c126c2011-06-14 23:50:39 +09005514 [gxvalid] Fix gcc4.6 compiler warnings in gxvkern.c.
5515
5516 * src/gxvalid/gxvkern.c
5517 (gxv_kern_subtable_fmt0_pairs_validate): Conditionalize
5518 unvalidated variable `kernValue'.
5519 (gxv_kern_subtable_fmt1_entry_validate): Conditionalize
5520 unvalidated variables; `push', `dontAdvance', `kernAction',
5521 `kernValue'.
5522 (gxv_kern_coverage_new_apple_validate): Conditionalize
5523 trace-only variables; `kernVertical', `kernCrossStream',
5524 `kernVariation'.
5525 (gxv_kern_coverage_classic_apple_validate): Conditionalize
5526 trace-only variables; `horizontal', `cross_stream'.
5527 (gxv_kern_coverage_classic_microsoft_validate):
5528 Conditionalize trace-only variables; `horizontal',
5529 `minimum', `cross_stream', `override'.
5530 (gxv_kern_subtable_validate): Conditionalize trace-only
5531 variables; `version', `tupleIndex'.
5532
55332011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5534
suzuki toshiyace015ec2011-06-14 23:49:34 +09005535 [gxvalid] Fix gcc4.6 compiler warnings in gxvjust.c.
5536
5537 * src/gxvalid/gxvjust.c (gxv_just_check_max_gid):
5538 New function to unify the checks of too large GID.
5539 (gxv_just_wdp_entry_validate): Conditionalize unvalidated
5540 variables; `beforeGrowLimit', `beforeShrinkGrowLimit',
5541 `afterGrowLimit', `afterShrinkGrowLimit', `growFlags',
5542 `shrinkFlags'. Additional check for non-zero values in
5543 unused storage `justClass' is added.
5544 (gxv_just_actSubrecord_type0_validate): Conditionalize
5545 unvalidated variable `order'. GID is checked by
5546 gxv_just_check_max_gid(). Additional check for upside-down
5547 relationship between `lowerLimit' and `upperLimit' is added.
5548 (gxv_just_actSubrecord_type1_validate): GID is checked by
5549 gxv_just_check_max_gid().
5550 (gxv_just_actSubrecord_type2_validate): Conditionalize
5551 unvalidated variable `substThreshhold'. GID is checked by
5552 gxv_just_check_max_gid().
5553 (gxv_just_actSubrecord_type5_validate): GID is checked by
5554 gxv_just_check_max_gid().
5555 (gxv_just_classTable_entry_validate): Conditionalize
5556 unvalidated variables; `setMark', `dontAdvance',
5557 `markClass', `currentClass'.
5558
55592011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5560
suzuki toshiya248aa632011-06-14 23:47:21 +09005561 [gxvalid] Preparation to fix gcc4.6 compiler warnings.
5562
5563 * src/gxvalid/gxvcommn.h (GXV_LOAD_TRACE_VARS): New macro to
5564 conditionalize the variable which is only used for trace messages.
5565 Automatically set by FT_DEBUG_LEVEL_TRACE.
5566 (GXV_LOAD_UNUSED_VARS): New macro to conditionalize the loading of
5567 unvalidated variables. Undefined by default to calm gcc4.6 warning.
5568 (GXV_ValidatorRec.{min_gid,max_gid}): New variables to hold defined
5569 GID ranges, for the comparison of GID ranges in different subtables.
5570
Werner Lemberg58d1a5e2011-06-08 09:32:56 +020055712011-06-08 Werner Lemberg <wl@gnu.org>
5572
5573 [autofit] Remove unused structure member.
5574
David Bevanaecbfe12011-07-02 12:09:52 +02005575 * src/autofit/afhints.h (AF_SegmentRec): Remove `contour'.
Werner Lemberg58d1a5e2011-06-08 09:32:56 +02005576 * src/autofit/aflatin.c (af_latin_hints_compute_segments),
5577 src/autofit/aflatin2.c (af_latin2_hints_compute_segments): Updated.
5578
Werner Lemberg71cc1a82011-05-30 07:20:37 +020055792011-05-30 Werner Lemberg <wl@gnu.org>
5580
Werner Lemberg6b19fd52011-05-30 07:27:59 +02005581 Fix g++ 4.6 compilation.
5582
5583 * src/autofit/afhints.c (af_glyph_hints_dump_segments,
5584 af_glyph_hints_dump_edges): Use cast.
5585
55862011-05-30 Werner Lemberg <wl@gnu.org>
5587
Werner Lemberg71cc1a82011-05-30 07:20:37 +02005588 Fix gcc 4.6 compiler warnings.
5589
5590 * src/autofit/afcjk.c (af_cjk_metrics_init_blues): Use casts and
5591 remove unused variables.
5592 * src/autofit/aflatin.c (af_latin_hints_compute_edges): Comment out
5593 `up_dir'.
5594 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use `height_org'
5595 and `width_org' conditionalized.
5596
suzuki toshiyac32d54c2011-05-29 01:33:34 +090055972011-05-28 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5598
Werner Lembergfe0f16d2011-06-01 10:36:04 +02005599 [mac] Conditionalize the inclusion of `AvailabilityMacros.h'.
suzuki toshiyac32d54c2011-05-29 01:33:34 +09005600
David Bevanaecbfe12011-07-02 12:09:52 +02005601 The native SDK on earliest Mac OS X (10.0-10.1) did not have
Werner Lembergfe0f16d2011-06-01 10:36:04 +02005602 `AvailabilityMacros.h'. To prevent the inclusion of missing
suzuki toshiyac32d54c2011-05-29 01:33:34 +09005603 header file, ECANCELED (introduced in 10.2) in POSIX header
5604 file <errno.h> is checked to detect the system version.
5605
5606 * include/freetype/config/ftconfig.h: Conditionalize the
Werner Lembergfe0f16d2011-06-01 10:36:04 +02005607 inclusion of `AvailabilityMacros.h'.
suzuki toshiyac32d54c2011-05-29 01:33:34 +09005608 * builds/unix/ftconfig.in: Ditto.
5609 * builds/vms/ftconfig.h: Ditto.
5610
Werner Lemberg735e5ab2011-05-27 10:22:42 +020056112011-05-27 Werner Lemberg <wl@gnu.org>
5612
5613 [autofit] Improve tracing of hinting process.
5614
5615 * src/autofit/aflatin.c (af_latin_hint_edges): Add tracing message
5616 `ADJUST'.
5617
56182011-05-26 Werner Lemberg <wl@gnu.org>
5619
5620 [autofit] Fix trace message.
5621
5622 * src/autofit/aflatin.c (af_latin_hint_edges): Show correct value in
5623 tracing message.
5624
Daniel Zimmermann3ad8f352011-05-24 06:22:32 +020056252011-05-24 Daniel Zimmermann <netzimme@googlemail.com>
5626
5627 Reduce warnings for MS Visual Studio 2010.
5628
5629 * src/autofit/afhints.c (af_glyph_hints_get_num_segments,
5630 af_glyph_hints_get_segment_offset) [!FT_DEBUG_AUTOFIT]: Provide
5631 return value.
5632 * src/cff/cffgload.c (cff_slot_load): Add cast.
5633 * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): Use proper
5634 loop variable type.
5635
suzuki toshiyaebd14a52011-05-16 12:47:25 +090056362011-05-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5637
5638 Automake component `builds/unix/install-sh' is removed.
5639
5640 * builds/unix/install-sh: Removed. It is not needed to
5641 include repository, because autogen.sh installs it.
5642 * builds/unix/.gitignore: Register install-sh.
5643
sssa4e8f9de2011-05-12 14:30:15 +090056442011-05-12 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5645
5646 [autofit] Make trace message for CJK bluezone more verbose.
5647
suzuki toshiya084abf02011-05-08 19:07:13 +090056482011-05-08 Just Fill Bugs <mozbugbox@yahoo.com.au>
5649 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5650
5651 [autofit] Add bluezones for CJK Ideographs.
5652
5653 To remove extremas of vertical strokes of CJK Ideographs at
5654 low resolution and make the top and bottom horizontal stems
5655 aligned, bluezones for CJK Ideographs are calculated from
5656 sample glyphs. At present, vertical bluezones (bluezones
5657 to align vertical stems) are disabled by default. For detail, see
5658 http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00070.html
5659 http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00092.html
5660 http://lists.gnu.org/archive/html/freetype-devel/2011-05/msg00001.html
5661
5662 * include/freetype/internal/fttrace.h: New trace component `afcjk'.
5663 * src/autofit/afcjk.h (AF_CJK{Blue,Axis,Metric}Rec): Add CJK version
5664 for AF_Latin{Blue,Axis,Metric}Rec.
5665 (af_cjk_metrics_check_digits): Ditto, shared with Indic module.
5666 (af_cjk_metrics_init_widths): Ditto.
5667 (af_cjk_metrics_init): Take AF_CJKMetric instead of AF_LatinMetric.
5668 (af_cjk_metrics_scale): Ditto (declaration).
5669 (af_cjk_hints_init): Ditto (declaration).
5670 (af_cjk_hints_apply): Ditto (declaration).
5671 * src/autofit/afcjk.c (af_cjk_metrics_scale): Ditto (body).
5672 (af_cjk_hints_init): Ditto (body).
5673 (af_cjk_hints_apply): Ditto (body).
5674 (af_cjk_metrics_init_widths): Duplicate af_latin_metrics_init_widths.
5675 (af_cjk_metrics_check_digits): Duplicate af_latin_metrics_check_digits.
5676 (af_cjk_metrics_init): Call CJK bluezone initializer.
David Bevanaecbfe12011-07-02 12:09:52 +02005677 (af_cjk_metrics_scale_dim): Add code to scale bluezones.
suzuki toshiya084abf02011-05-08 19:07:13 +09005678 (af_cjk_hints_compute_blue_edges): New function, CJK version of
5679 af_latin_hints_compute_blue_edges.
5680 (af_cjk_metrics_init_blues): New function, CJK version of
5681 af_latin_metrics_init_blues.
5682 (af_cjk_hints_edges): Add code to align the edge stems to blue zones.
5683
5684 * src/autofit/afindic.c (af_indic_metrics_init): Take AF_CJKMetric
5685 instead of AF_LatinMetric, and initialize as af_cjk_metrics_init.
5686 However bluezones are not initialized.
5687 (af_indic_metrics_scale): Take AF_CJKMetric instead of AF_LatinMetric.
5688 (af_indic_hints_init): Ditto.
5689 (af_indic_hints_apply): Ditto.
5690
5691 * docs/CHANGES: Note about CJK bluezone support.
5692
Werner Lembergd2e82aa2011-05-06 19:04:30 +020056932011-05-06 Werner Lemberg <wl@gnu.org>
5694
5695 [autofit] Remove unused struct member.
5696
5697 * src/autofit/aflatin.h (AF_LatinAxis): Remove `control_overshoot'.
5698
Werner Lemberga3a0f572011-05-04 06:14:30 +020056992011-05-04 Werner Lemberg <wl@gnu.org>
5700
5701 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Simplify.
5702
Werner Lemberg3a0844c2011-05-01 13:44:44 +020057032011-05-01 Just Fill Bugs <mozbugbox@yahoo.com.au>
5704 Werner Lemberg <wl@gnu.org>
5705
5706 [autofit] Add more debugging functions.
5707
5708 * src/autofit/afhints.c (af_glyph_hints_get_num_segments,
5709 af_glyph_hints_get_segment_offset): New functions.
5710
suzuki toshiya7c6da3d2011-05-01 19:06:24 +090057112011-05-01 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5712
5713 Add new option `--disable-mmap' to configure script.
5714
David Bevanaecbfe12011-07-02 12:09:52 +02005715 * builds/unix/configure.raw: New option `--disable-mmap'
suzuki toshiya7c6da3d2011-05-01 19:06:24 +09005716 is added. It is for the developers to simulate the systems
5717 without mmap() (like 4.3BSD, minix etc) on POSIX systems.
5718
suzuki toshiya1e89d152011-04-30 17:55:57 +090057192011-04-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5720
Werner Lemberg3ae2c702011-06-24 13:18:41 +02005721 [truetype] Always recalculate the sfnt table checksum.
suzuki toshiya58cb3592011-05-01 00:47:43 +09005722
5723 * src/truetype/ttobjs.c (tt_get_sfnt_checksum): Recalculate
Werner Lemberg3ae2c702011-06-24 13:18:41 +02005724 the sfnt table checksum even if non-zero value is written in
suzuki toshiya58cb3592011-05-01 00:47:43 +09005725 the TrueType font header. Some bad PDF generators write
Werner Lemberg3ae2c702011-06-24 13:18:41 +02005726 wrong values. For details see examples and benchmark tests
suzuki toshiya58cb3592011-05-01 00:47:43 +09005727 of the latency by recalculation:
5728 http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00091.html
5729 http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00096.html
5730
57312011-04-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5732
suzuki toshiya1e89d152011-04-30 17:55:57 +09005733 [truetype] Register a set of tricky fonts, NEC FA family.
5734
5735 * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids):
5736 Add 8 checksum sets for NEC FA family. For the tricky fonts
5737 without some tables (e.g. NEC FA fonts lack cvt table),
Werner Lemberg3ae2c702011-06-24 13:18:41 +02005738 extra check is added to assure that a zero-length table in the
suzuki toshiya1e89d152011-04-30 17:55:57 +09005739 registry is not included in the font.
5740
suzuki toshiya89208862011-04-30 00:11:07 +090057412011-04-29 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5742
5743 [truetype] Fix a bug in the sfnt table checksum getter.
5744
5745 * src/truetype/ttobjs.c (tt_get_sfnt_checksum): Check the
5746 return value of face->goto_table() correctly.
5747
Werner Lembergb9aa1f12011-04-28 09:09:45 +020057482011-04-28 Werner Lemberg <wl@gnu.org>
5749
5750 [autofit] Improve tracing messages.
5751
5752 * src/autofit/aflatin.c (af_latin_metrics_init_blues,
5753 af_latin_align_linked_edge, af_latin_hint_edges): Do it.
5754
suzuki toshiyaabc47aa2011-04-25 23:51:04 +090057552011-04-25 Kan-Ru Chen <kanru@kanru.info>
5756
5757 [truetype] Always check the checksum to identify tricky fonts.
5758
suzuki toshiya86b7b2f2011-04-26 03:46:12 +09005759 Because some PDF generators mangle the family name badly,
5760 the trickyness check by the checksum should be invoked always.
5761 For sample PDF, see
suzuki toshiyaabc47aa2011-04-25 23:51:04 +09005762 http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00073.html
5763
suzuki toshiya86b7b2f2011-04-26 03:46:12 +09005764 * src/truetype/ttobjs.c (tt_check_trickyness): Even when
5765 tt_check_trickyness_family() finds no trickyness,
5766 tt_check_trickyness_sfnt_ids() is invoked.
suzuki toshiyaabc47aa2011-04-25 23:51:04 +09005767
suzuki toshiya233f9d52011-04-22 10:14:07 +090057682011-04-22 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5769
5770 [autofit] Add more Indic scripts with hanging baseline.
5771
5772 * src/autofit/afindic.c (af_indic_uniranges): Tibetan, Limbu,
5773 Sundanese, Meetei Mayak, Syloti Nagri and Sharada scripts are
5774 added.
5775
Behdad Esfahbod8c82ec52011-04-21 08:21:37 +020057762011-04-21 Behdad Esfahbod <behdad@behdad.org>
5777
5778 Always ignore global advance.
5779
5780 This makes FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH redundant,
5781 deprecated, and ignored. The new behavior is what every major user
5782 of FreeType has been requesting. Global advance is broken in many
5783 CJK fonts. Just ignoring it by default makes most sense.
5784
5785 * src/truetype/ttdriver.c (tt_get_advances),
5786 src/truetype/ttgload.c (TT_Get_HMetrics, TT_Get_VMetrics,
5787 tt_get_metrics, compute_glyph_metrics, TT_Load_Glyph),
5788 src/truetype/ttgload.h: Implement it.
5789
5790 * docs/CHANGES: Updated.
5791
suzuki toshiyaa345c0e2011-04-21 10:58:33 +090057922011-04-21 rainy6144 <rainy6144@gmail.com>
5793
5794 [autofit] Blur CJK stems if too many to preserve their gaps.
Behdad Esfahbod8c82ec52011-04-21 08:21:37 +02005795
suzuki toshiyaa345c0e2011-04-21 10:58:33 +09005796 When there are too many stems to preserve their gaps in the
5797 rasterization of CJK Ideographs at a low resolution, blur the
5798 stems instead of showing clumped stems. See
5799 http://lists.gnu.org/archive/html/freetype-devel/2011-02/msg00011.html
5800 http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00046.html
Behdad Esfahbod8c82ec52011-04-21 08:21:37 +02005801 for details.
suzuki toshiyaa345c0e2011-04-21 10:58:33 +09005802
5803 * src/autofit/afcjk.c (af_cjk_hint_edges): Store the position of
5804 the previous stem by `has_last_stem' and `last_stem_pos', and skip
5805 a stem if the current and previous stem are too near to preserve
5806 the gap.
5807
Werner Lemberg149f5432011-04-18 15:09:38 +020058082011-04-18 Werner Lemberg <wl@gnu.org>
5809
Werner Lembergd503b1b2011-04-18 19:05:28 +02005810 Integrate autofitter debugging stuff.
5811
5812 * devel/ftoption.h, include/freetype/config/ftoption.h
5813 (FT_DEBUG_AUTOFIT): New macro.
5814
5815 * include/freetype/internal/fttrace.h: Add trace components for
5816 autofitter.
5817
5818 * src/autofit/aftypes.h (AF_LOG): Removed.
5819 (_af_debug): Removed.
5820
5821 * src/autofit/*: s/AF_DEBUG/FT_DEBUG_AUTOFIT/.
5822 s/AF_LOG/FT_TRACE5/.
5823 Define FT_COMPONENT where necessary.
5824
58252011-04-18 Werner Lemberg <wl@gnu.org>
5826
Werner Lemberg149f5432011-04-18 15:09:38 +02005827 Synchronize config files.
5828
5829 * builds/unix/ftconfig.in: Copy missing assembler routines from
5830 include/freetype/config/ftconfig.h.
5831
Werner Lemberg9b008752011-04-13 13:37:37 +020058322011-04-13 Werner Lemberg <wl@gnu.org>
5833
Werner Lemberg273e2b72012-09-18 13:27:27 +02005834 [psaux] Fix Savannah bug #33047.
Werner Lemberg9b008752011-04-13 13:37:37 +02005835
5836 Patch submitted by anonymous reporter.
5837
5838 * src/psaux/psobjs.c (ps_table_add): Use FT_PtrDist for pointer
5839 difference.
5840
Kan-Ru Chen21b1a0d2011-04-12 09:26:43 +020058412011-04-11 Kan-Ru Chen <kanru@kanru.info>
5842
5843 Fix reading of signed integers from files on 64bit platforms.
5844
5845 Previously, signed integers were converted to unsigned integers, but
5846 this can fail because of sign extension. For example, 0xa344a1eb
5847 becomes 0xffffffffa344a1eb.
5848
5849 We now do the reverse which is always correct because the integer
5850 size is the same during the cast from unsigned to signed.
5851
5852 * include/freetype/internal/ftstream.h, src/base/ftstream.c
5853 (FT_Stream_Get*): Replace with...
5854 (FT_Stream_GetU*): Functions which read unsigned integers.
5855 Update all macros accordingly.
5856
5857 * src/gzip/ftgzip.c (ft_gzip_get_uncompressed_size): Updated.
5858
Werner Lemberg7f03a242011-04-07 07:20:38 +020058592011-04-07 Werner Lemberg <wl@gnu.org>
5860
5861 Update Unicode ranges for CJK autofitter; in particular, add Hangul.
5862
5863 * src/autofit/afcjk.c (af_cjk_uniranges): Update to Unicode 6.0.
5864
Werner Lemberg948a8fb2011-04-04 13:02:08 +020058652011-04-04 Werner Lemberg <wl@gnu.org>
5866
5867 Fix formatting of autofit debug dumps.
5868
5869 * src/autofit/afhints.c (af_glyph_hints_dump_points,
5870 af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Adjust
5871 column widths.
5872
Werner Lembergef115512011-03-30 09:29:05 +020058732011-03-30 Werner Lemberg <wl@gnu.org>
5874
5875 * src/autofit/aftypes.h (AF_OutlineRec): Removed, unused.
5876
Werner Lemberg360646c2011-03-24 09:29:23 +010058772011-03-24 Werner Lemberg <wl@gnu.org>
5878
5879 * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 256.
Werner Lembergef115512011-03-30 09:29:05 +02005880 This limit is given on p. 37 of Adobe Technical Note #5014.
Werner Lemberg360646c2011-03-24 09:29:23 +01005881
Werner Lemberg01caf4a2011-03-23 05:19:59 +010058822011-03-23 Werner Lemberg <wl@gnu.org>
5883
Werner Lemberg575078d2011-04-18 15:33:17 +02005884 * src/truetype/ttpload.c (tt_face_load_loca): Fix mismatch warning.
Werner Lemberg01caf4a2011-03-23 05:19:59 +01005885
Werner Lembergaf7b8b12011-03-20 07:51:57 +010058862011-03-20 Werner Lemberg <wl@gnu.org>
5887
5888 * src/sfnt/sfobjs.c (sfnt_open_font): Check number of TTC subfonts.
5889
Werner Lemberg8bd77f92011-03-19 15:27:04 +010058902011-03-19 Werner Lemberg <wl@gnu.org>
5891
5892 More C++ compilation fixes.
5893
5894 * src/autofit/afhints.c (af_glyph_hints_dump_points,
5895 af_glyph_hints_dump_segments, af_glyph_hints_dump_edges)
5896 [__cplusplus]: Protect with `extern "C"'.
5897
Werner Lembergc7f26a12011-03-19 02:28:21 +010058982011-03-18 Werner Lemberg <wl@gnu.org>
5899
5900 C++ compilation fixes.
5901
5902 * src/autofit/aflatin.c (af_latin_hints_apply), src/autofit/afcjk.c
5903 (af_cjk_hints_apply): Use cast for `dim'.
5904
Alexei Podtelezhnikov8fb88412011-03-17 20:24:57 +010059052011-03-17 Alexei Podtelezhnikov <apodtele@gmail.com>
5906
5907 A better fix for Savannah bug #32671.
5908
5909 * src/smooth/ftgrays.c (gray_render_conic): Clean up code and
5910 replace WHILE loop with a more natural DO-WHILE construct.
5911
Werner Lemberg437fb8e2011-03-16 08:54:02 +010059122011-03-16 Werner Lemberg <wl@gnu.org>.
5913
5914 * src/base/ftstroke.c (FT_StrokerRec): Remove unused `valid' field.
5915 Suggested by Graham Asher.
5916
Werner Lembergcecd9122011-03-09 06:18:28 +010059172011-03-09 Werner Lemberg <wl@gnu.org>
5918
5919 Make FT_Sfnt_Table_Info return the number of SFNT tables.
5920
5921 * src/sfnt/sfdriver.c (sfnt_table_info): Implement it.
5922 * include/freetype/tttables.h: Update documentation.
5923 * docs/CHANGES: Updated.
5924
59252011-03-07 Bram Tassyns <bramt@enfocus.be>
Bram Tassyns3fd158d2011-03-07 09:33:53 +01005926
Werner Lemberg273e2b72012-09-18 13:27:27 +02005927 [cff] Fix Savannah bug #27988.
Bram Tassyns3fd158d2011-03-07 09:33:53 +01005928
5929 * src/cff/cffobjs.c (remove_style): New function.
5930 (cff_face_init): Use it to strip off the style part of the family
5931 name.
5932
Werner Lemberg9c111b02011-03-07 06:07:53 +010059332011-03-07 Werner Lemberg <wl@gnu.org>
5934
5935 * docs/CHANGES: Updated.
5936
Werner Lemberg6c045532011-03-07 05:40:42 +010059372011-03-07 Alexei Podtelezhnikov <apodtele@gmail.com>
5938
5939 Quick fix for Savannah bug #32671.
5940
5941 This isn't the optimal solution yet, but it restores the previous
5942 rendering quality (more or less).
5943
5944 * src/smooth/ftgrays.c (gray_render_conic): Do more splitting.
5945
Werner Lembergc9bdfa72011-03-06 18:35:37 +010059462011-03-06 Werner Lemberg <wl@gnu.org>
5947
5948 Fix autohinting fallback.
5949
5950 * src/base/ftobjs.c (FT_Load_Glyph): Assure that we only check TTFs,
5951 ignoring CFF-based OTFs.
5952
Werner Lemberg576fc2c2011-03-02 03:52:36 +010059532011-02-27 Werner Lemberg <wl@gnu.org>
5954
5955 Add AF_CONFIG_OPTION_USE_WARPER to control the autofit warper.
5956
5957 * devel/ftoption.h, include/freetype/config/ftoption.h
5958 (AF_CONFIG_OPTION_USE_WARPER): New macro.
5959 * src/autofit/aftypes.h (AF_USE_WARPER): Remove.
5960
5961 * src/autofit/*: s/AF_USE_WARPER/AF_CONFIG_OPTION_USE_WARPER/.
5962
5963 * src/autofit/afwarp.c [!AF_CONFIG_OPTION_USE_WARPER]: Replace dummy
5964 variable assignment with a typedef.
5965
Werner Lembergb7fc0c72011-02-26 18:36:21 +010059662011-02-26 Werner Lemberg <wl@gnu.org>
5967
5968 [autofit] Slight simplifications.
5969
5970 * src/autofit/aflatin.c (af_latin_hints_link_segments): Remove
5971 test which always returns false.
5972 (af_latin_hints_compute_blue_edges): Remove redundant assignment.
5973
Werner Lembergf42cc532011-02-24 05:18:46 +010059742011-02-24 Werner Lemberg <wl@gnu.org>
5975
Werner Lemberge7d1fb32011-02-24 20:01:00 +01005976 * docs/PROBLEMS: Mention rendering differences on different
5977 platforms.
5978 Suggested and worded by Jason Owen <jason.a.owen@gmail.com>.
5979
59802011-02-24 Werner Lemberg <wl@gnu.org>
5981
Werner Lemberg6c286892011-02-24 05:52:14 +01005982 [autofit] Comment out unused code.
5983
5984 * src/autofit/aflatin.c, src/autofit/aflatin2.c
5985 (af_latin_hints_compute_edges): Do it.
5986
59872011-02-24 Werner Lemberg <wl@gnu.org>
5988
Werner Lembergf42cc532011-02-24 05:18:46 +01005989 * src/autofit/afhints.h (AF_GlyphHints): Remove unused field.
5990
suzuki toshiyaae6d1d72011-02-20 19:13:25 +090059912011-02-20 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5992
Werner Lemberg575078d2011-04-18 15:33:17 +02005993 [cache] Fix an off-by-one bug in `FTC_Manager_RemoveFaceID'.
suzuki toshiyaae6d1d72011-02-20 19:13:25 +09005994 Found by <ychen1392001@yahoo.com.cn>, see detail in
5995
5996 http://lists.gnu.org/archive/html/freetype/2011-01/msg00023.html
5997
5998 * src/cache/ftccache.c (FTC_Cache_RemoveFaceID): Check the node
5999 buckets[cache->p + cache->mask] too.
6000
Kevin Koflerff809502011-02-19 23:09:26 +010060012011-02-19 Kevin Kofler <kevin.kofler@chello.at>
6002
6003 Fall back to autohinting if a TTF/OTF doesn't contain any bytecode.
6004 This is Savannah patch #7471.
6005
6006 * src/base/ftobjs.c (FT_Load_Glyph): Implement it.
6007
John Tytgat18fffa42011-02-19 07:11:17 +010060082011-02-19 John Tytgat <John.Tytgat@esko.com>
6009
6010 [cff] Fix subset prefix removal.
Kevin Koflerff809502011-02-19 23:09:26 +01006011 This is Savannah patch #7465.
John Tytgat18fffa42011-02-19 07:11:17 +01006012
6013 * src/cff/cffobjs.c (remove_subset_prefix): Update length after
6014 subset prefix removal.
6015
Bradley Graingerd2731e12011-02-12 12:41:50 -080060162011-02-13 Bradley Grainger <bgrainger@logos.com>
6017
Bradley Grainger70f7db12011-02-12 12:51:36 -08006018 Add inline assembly version of FT_MulFix for MSVC.
6019
6020 * include/freetype/config/ftconfig.h: Ported the FT_MulFix_i386
6021 function from GNU inline assembly syntax (see #ifdef __GNUC__ block
6022 above) to MASM syntax for Microsoft Visual C++.
6023
60242011-02-13 Bradley Grainger <bgrainger@logos.com>
6025
Bradley Graingerd2731e12011-02-12 12:41:50 -08006026 Add project and solution files in Visual Studio 2010 format.
6027
6028 * builds/win32/.gitignore: Ignore user-specific cache files.
6029 * builds/win32/vc2010/: Add VS2010 project & solution files, created
6030 by upgrading builds/win32/vc2008/freetype.vcproj.
6031 * objs/.gitignore: Ignore Visual Studio output files.
6032
Werner Lemberg18931a52011-02-01 07:08:43 +010060332011-02-01 Werner Lemberg <wl@gnu.org>
6034
Werner Lemberg713faec2011-02-03 19:47:13 +01006035 * src/autofit/afdummy.c: Include `aferrors.h'.
Werner Lemberg3ae2c702011-06-24 13:18:41 +02006036 Problem reported by Chris Liddell <chris.liddell@artifex.com>.
Werner Lemberg713faec2011-02-03 19:47:13 +01006037
60382011-02-01 Werner Lemberg <wl@gnu.org>
6039
Werner Lemberg75df7062011-02-01 07:36:27 +01006040 [cff] Ignore unknown operators in charstrings.
6041 Patch suggested by Miles.Lau <sunliang_liu@foxitsoftware.com>.
6042
6043 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Emit tracing
6044 message for unknown operators and continue instead of exiting with a
6045 syntax error.
6046
60472011-02-01 Werner Lemberg <wl@gnu.org>
6048
Werner Lemberg18931a52011-02-01 07:08:43 +01006049 [truetype] FT_LOAD_PEDANTIC now affects `prep' and `fpgm' also.
6050
6051 * src/truetype/ttgload.c (tt_loader_init): Handle
6052 `FT_LOAD_PEDANTIC'.
6053 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep,
6054 tt_size_init_bytecode, tt_size_ready_bytecode): New argument to
6055 handle pedantic mode.
6056 * src/truetype/ttobjs.h: Updated.
6057
Werner Lemberg96f04562011-01-31 10:24:32 +010060582011-01-31 Werner Lemberg <wl@gnu.org>
6059
Werner Lembergf1a981b2011-01-31 22:26:53 +01006060 [truetype] Protect jump instructions against endless loops.
6061
6062 * src/truetype/interp.c (DO_JROT, DO_JMPR, DO_JROF): Exit with error
6063 if offset is zero.
6064
60652011-01-31 Werner Lemberg <wl@gnu.org>
6066
Werner Lembergd6a213f2011-01-31 18:51:07 +01006067 [truetype] Improve handling of invalid references.
6068
6069 * src/truetype/interp.c: Set even more TT_Err_Invalid_Reference
6070 error codes only if pedantic hinting is active. At the same time,
6071 try to provide sane values which hopefully allow useful
6072 continuation. Exception to this is CALL and LOOPCALL – due to
6073 possible stack corruption it is necessary to bail out.
6074
60752011-01-31 Werner Lemberg <wl@gnu.org>
6076
Werner Lemberg96f04562011-01-31 10:24:32 +01006077 [truetype] Improve handling of stack underflow.
6078
6079 * src/truetype/ttinterp.c (TT_RunIns, Ins_FLIPPT, Ins_DELTAP,
Bram Tassyns3fd158d2011-03-07 09:33:53 +01006080 Ins_DELTAC): Exit with error only if `pedantic_hinting' is set.
Werner Lemberg96f04562011-01-31 10:24:32 +01006081 Otherwise, try to do something sane.
6082
Werner Lemberg06822512011-01-30 16:38:09 +010060832011-01-30 Werner Lemberg <wl@gnu.org>
6084
6085 * src/sfnt/ttmtx.c (tt_face_load_hmtx): Fix tracing message.
6086
LIU Sun-Liangc61b3592011-01-30 16:29:45 +010060872011-01-30 LIU Sun-Liang <sunliang_liu@foxitsoftware.com>
6088
6089 [truetype]: Fix behaviour of MIAP for invalid arguments.
6090
6091 * src/truetype/ttinterp.c (Ins_MIAP): Set reference points even in
6092 case of error.
6093
Werner Lembergdcdb3162011-01-18 07:35:26 +010060942011-01-18 Werner Lemberg <wl@gnu.org>
6095
6096 [truetype] Fix handling of MIRP instruction.
6097
6098 Thanks to Greg Hitchcock who explained the issue.
6099
6100 * src/truetype/ttinterp.c (Ins_MIRP): Replace a `>=' operator with
6101 `>' since the description in the specification is incorrect.
6102 This fixes, for example, glyph `two' in font `Helvetica Neue LT Com
6103 65 medium' at 15ppem.
6104
suzuki toshiya17f54bc2011-01-15 21:53:32 +090061052011-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6106
6107 Fix ARM assembly code in include/freetype/config/ftconfig.h.
6108
6109 * include/freetype/config/ftconfig.h (FT_MulFix_arm):
6110 Copy the maintained code from builds/unix/ftconfig.in.
6111 Old GNU binutils could not accept the reduced syntax
6112 `orr %0, %2, lsl #16'. Un-omitted syntax like RVCT,
6113 `orr %0, %0, %2, lsl #16' is better. Reported by
6114 Johnson Y. Yan. The bug report by Qt developers is
6115 considered too.
6116
6117 http://bugreports.qt.nokia.com/browse/QTBUG-6521
6118
Werner Lemberg21bdca72011-01-15 09:46:13 +010061192011-01-15 Werner Lemberg <wl@gnu.org>
6120
6121 [raster] Make bbox handling the same as with Microsoft's rasterizer.
6122
6123 Right before B/W rasterizing, the bbox gets simply rounded to
6124 integers. This fixes, for example, glyph `three' in font `Helvetica
6125 Neue LT Com 65 Medium' at 11ppem.
6126
6127 Thanks to Greg Hitchcock who explained this behaviour.
6128
6129 * src/raster/ftrend1.c (ft_raster1_render): Implement it.
6130
suzuki toshiyac68a82d2011-01-15 13:21:32 +090061312011-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6132
suzuki toshiyaa2ef6642011-01-15 13:33:28 +09006133 Copy -mcpu=* & -march=* options from CFLAGS to LDFLAGS.
6134
6135 * builds/unix/configure.raw: Consider recent gcc-standard
6136 flags to specify architecture in CFLAGS & LDFLAGS
6137 harmonization. Requested by Savannah bug #32114, to
6138 support multilib feature of BuildRoot SDK correctly.
6139
61402011-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6141
suzuki toshiyac68a82d2011-01-15 13:21:32 +09006142 Fix off-by-one bug in CFLAGS & LDFLAGS harmonizer.
6143
6144 * builds/unix/configure.raw: Some important options that
6145 included in CFLAGS but not in LDFLAGS are copied to
6146 LDFLAGS, but the last option in CFLAGS was not checked.
6147
Werner Lemberg29bc3102011-01-13 12:22:55 +010061482011-01-13 Werner Lemberg <wl@gnu.org>
6149
Werner Lemberg0039d012011-01-14 19:44:29 +01006150 [raster] Add undocumented drop-out rule to the other bbox side also.
6151
6152 * src/raster/ftraster.c (Vertical_Sweep_Drop,
6153 Horizontal_Sweep_Drop): Implement it.
6154
61552011-01-13 Werner Lemberg <wl@gnu.org>
6156
Werner Lembergc02485c2011-01-13 21:55:08 +01006157 [raster] Reduce jitter value.
6158
6159 This catches a rendering problem with glyph `x' from Tahoma at
6160 10ppem. It seems that the increase of the precision in the change
6161 from 2009-06-11 makes a larger jitter value unnecessary.
6162
6163 * src/raster/ftraster.c (Set_High_Precision): Implement it.
6164
61652011-01-13 Werner Lemberg <wl@gnu.org>
6166
Werner Lemberg29bc3102011-01-13 12:22:55 +01006167 [raster] Handle drop-outs at glyph borders according to Microsoft.
6168
6169 If a drop-out rule would switch on a pixel outside of the glyph's
6170 bounding box, use the right (or top) pixel instead. This is an
6171 undocumented feature, but some fonts like `Helvetica Neue LT Com 65
6172 Medium' heavily rely on it.
6173
6174 Thanks to Greg Hitchcock who explained this behaviour.
6175
6176 * src/raster/ftraster.c (Vertical_Sweep_Drop,
6177 Horizontal_Sweep_Drop): Implement it.
6178
suzuki toshiya6b3bef22011-01-09 23:11:18 +090061792011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya0de5b372011-01-09 20:31:22 +09006180
suzuki toshiya5e7ad202011-01-09 23:09:36 +09006181 [cache] Fix Savannah bug #31923, patch drafted by Harsha.
6182
6183 When a node comparator changes the cached nodes during the
6184 search of a node matching with queried properties, the
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006185 pointers obtained before the function should be updated to
suzuki toshiya5e7ad202011-01-09 23:09:36 +09006186 prevent the dereference to freed or reallocated nodes.
6187 To minimize the rescan of the linked list, the update is
6188 executed when the comparator notifies the change of cached
6189 nodes. This change depends previous change:
6190 38b272ffbbdaae276d636aec4ef84af407d16181
6191
6192 * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Rescan the
6193 top node if the cached nodes are changed.
6194 * src/cache/ftccache.c (FTC_Cache_Lookup): Ditto.
6195
suzuki toshiya6b3bef22011-01-09 23:11:18 +090061962011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya5e7ad202011-01-09 23:09:36 +09006197
suzuki toshiya38b272f2011-01-09 22:49:07 +09006198 [cache] Notice if a cache query induced the node list change.
6199
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006200 Some node comparators (comparing the cache node contents and the
6201 properties specified by the query) can flush the cache node to
6202 prevent the cache inflation. The change may invalidate the pointers
6203 to the node obtained before the node comparison, so it should be
6204 noticed to the caller. The problem caused by the cache node
6205 changing is reported by Harsha, see Savannah bug #31923.
suzuki toshiya38b272f2011-01-09 22:49:07 +09006206
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006207 * src/cache/ftccache.h (FTC_Node_CompareFunc): Add new argument
6208 `FT_Bool* list_changed' to indicate the change of the cached nodes
6209 to the caller.
6210 (FTC_CACHE_LOOKUP_CMP): Watch the change of the cached nodes by
6211 `_list_changed'.
suzuki toshiya38b272f2011-01-09 22:49:07 +09006212 (FTC_CACHE_TRYLOOP_END): Take new macro argument `_list_changed'
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006213 and update it when `FTC_Manager_FlushN' flushes any nodes.
suzuki toshiya38b272f2011-01-09 22:49:07 +09006214
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006215 * src/cache/ftccback.h (ftc_snode_compare): Updated to fit with new
6216 FTC_Node_CompareFunc type.
6217 (ftc_gnode_compare): Ditto.
suzuki toshiya38b272f2011-01-09 22:49:07 +09006218
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006219 * src/cache/ftcbasic.c: Include FT_INTERNAL_OBJECTS_H to use
6220 TRUE/FALSE macros.
6221 (ftc_basic_gnode_compare_faceid): New argument `FT_Bool*
6222 list_changed' to indicate the change of the cache nodes (anyway, it
6223 is always FALSE).
suzuki toshiya38b272f2011-01-09 22:49:07 +09006224
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006225 * src/cache/ftccmap.c: Include FT_INTERNAL_OBJECTS_H to use
6226 TRUE/FALSE macros.
6227 (ftc_cmap_node_compare): New argument `FT_Bool* list_changed' to
6228 indicate the change of the cache nodes (anyway, it is always FALSE).
suzuki toshiya38b272f2011-01-09 22:49:07 +09006229 (ftc_cmap_node_remove_faceid): Ditto.
6230
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006231 * src/cache/ftccache.c (FTC_Cache_NewNode): Pass a NULL pointer to
6232 `FTC_CACHE_TRYLOOP_END', because the result is not needed.
6233 (FTC_Cache_Lookup): Watch the change of the cache nodes by
6234 `list_changed'.
6235 (FTC_Cache_RemoveFaceID): Ditto.
suzuki toshiya38b272f2011-01-09 22:49:07 +09006236
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006237 * src/cache/ftcglyph.c: Include FT_INTERNAL_OBJECTS_H to use
6238 TRUE/FALSE macros.
6239 (ftc_gnode_compare): New argument `FT_Bool* list_changed' to
6240 indicate the change of the cache nodes (anyway, it is always FALSE).
6241 (FTC_GNode_Compare): New argument `FT_Bool* list_changed' to be
6242 passed to `ftc_gnode_compare'.
suzuki toshiya38b272f2011-01-09 22:49:07 +09006243 * src/cache/ftcglyph.h (FTC_GNode_Compare): Ditto.
6244
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006245 * src/cache/ftcsbits.c (ftc_snode_compare): New argument `FT_Bool*
6246 list_changed' to indicate the change of the cache nodes, anyway. It
6247 is updated by `FTC_CACHE_TRYLOOP'.
6248 (FTC_SNode_Compare): New argument `FT_Bool* list_changed' to be
6249 passed to `ftc_snode_compare'.
suzuki toshiya38b272f2011-01-09 22:49:07 +09006250 * src/cache/ftcsbits.h (FTC_SNode_Compare): Ditto.
6251
suzuki toshiya6b3bef22011-01-09 23:11:18 +090062522011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya38b272f2011-01-09 22:49:07 +09006253
Werner Lemberg575078d2011-04-18 15:33:17 +02006254 [cache] Fit `FTC_GNode_Compare' to `FTC_Node_CompareFunc'.
suzuki toshiya62d116f2011-01-09 22:38:10 +09006255
6256 * src/cache/ftcglyph.h (FTC_GNode_Compare): Add the 3rd
6257 argument `FTC_Cache cache' to fit FTC_Node_CompareFunc
6258 prototype.
6259 * src/cache/ftcglyph.c (FTC_GNode_Compare): Ditto. Anyway,
Werner Lemberg575078d2011-04-18 15:33:17 +02006260 `cache' is not used by its child `ftc_gnode_compare'.
suzuki toshiya62d116f2011-01-09 22:38:10 +09006261
suzuki toshiya6b3bef22011-01-09 23:11:18 +090062622011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya62d116f2011-01-09 22:38:10 +09006263
suzuki toshiya9a2e2552011-01-09 21:09:58 +09006264 [cache] Deduplicate the code to get the top node by a hash.
6265
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006266 There are several duplicated code fragments getting the top node
suzuki toshiya9a2e2552011-01-09 21:09:58 +09006267 from a cache by a given hash, like:
6268
6269 idx = hash & cache->mask;
6270 if ( idx < cache->p )
6271 idx = hash & ( cache->mask * 2 + 1 );
6272 pnode = cache->buckets + idx;
6273
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006274 To remove duplication, a cpp-macro to do same work
6275 `FTC_NODE__TOP_FOR_HASH' is introduced. For non-inlined
Werner Lemberg575078d2011-04-18 15:33:17 +02006276 configuration, non-`ftc_get_top_node_for_hash' is also introduced.
suzuki toshiya9a2e2552011-01-09 21:09:58 +09006277
6278 * src/cache/ftccache.h (FTC_NODE__TOP_FOR_HASH): Declare
6279 and implement inlined version.
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006280 (FTC_CACHE_LOOKUP_CMP): Use `FTC_NODE__TOP_FOR_HASH'.
6281 * src/cache/ftccache.c (ftc_get_top_node_for_hash): Non-inlined
6282 version.
6283 (ftc_node_hash_unlink): Use `FTC_NODE__TOP_FOR_HASH'.
suzuki toshiya9a2e2552011-01-09 21:09:58 +09006284 (ftc_node_hash_link): Ditto.
6285 (FTC_Cache_Lookup): Ditto.
6286
suzuki toshiya6b3bef22011-01-09 23:11:18 +090062872011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya9a2e2552011-01-09 21:09:58 +09006288
suzuki toshiya52a1e472011-01-09 20:47:37 +09006289 [cache] inline-specific functions are conditionalized.
6290
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006291 * src/cache/ftcglyph.c (FTC_GNode_Compare): Conditionalized for
6292 inlined configuration. This function is a thin wrapper of
6293 `ftc_gnode_compare' for inlined `FTC_CACHE_LOOKUP_CMP' (see
6294 `nodecmp' argument). Under non-inlined configuration,
6295 `ftc_gnode_compare' is invoked by `FTC_Cache_Lookup', via
6296 `FTC_Cache->clazz.node_compare'.
suzuki toshiya52a1e472011-01-09 20:47:37 +09006297
6298 * src/cache/ftcglyph.h (FTC_GNode_Compare): Ditto.
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006299 * src/cache/ftcsbits.c (FTC_SNode_Compare): Ditto, for
6300 `ftc_snode_compare'.
suzuki toshiya52a1e472011-01-09 20:47:37 +09006301 * src/cache/ftcsbits.h (FTC_SNode_Compare): Ditto.
6302
suzuki toshiya6b3bef22011-01-09 23:11:18 +090063032011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya52a1e472011-01-09 20:47:37 +09006304
suzuki toshiya0de5b372011-01-09 20:31:22 +09006305 [cache] Correct a type mismatch under non-inlined config.
6306
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006307 * src/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP): `FTC_GCache_Lookup'
6308 takes the node via a pointer `FTC_Node*', differently from cpp-macro
6309 `FTC_CACHE_LOOKUP_CMP'.
suzuki toshiya0de5b372011-01-09 20:31:22 +09006310
suzuki toshiya6b3bef22011-01-09 23:11:18 +090063112011-01-06 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya34f4b202011-01-06 11:19:50 +09006312
6313 Update Jamfile to include Bzip2 support.
6314
6315 * Jamfile: Include src/bzip2 to project.
6316 Comments for lzw, gzip, bzip2 are changed to clarify that
6317 they are for compressed PCF fonts, not others.
6318 (e.g. compressed BDF fonts are not supported yet)
6319
suzuki toshiya6b3bef22011-01-09 23:11:18 +090063202011-01-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya19099592011-01-06 02:05:43 +09006321
suzuki toshiya55e6a6f2011-01-06 02:55:42 +09006322 Update Symbian project files to include Bzip2 support.
6323
Werner Lemberg575078d2011-04-18 15:33:17 +02006324 Currently, it provides `FT_Stream_OpenBzip2' that returns
suzuki toshiya55e6a6f2011-01-06 02:55:42 +09006325 unimplemented error always, to prevent unresolved symbol
6326 error for the applications designed for Unix systems.
6327
6328 * builds/symbian/bld.inf: Include ftbzip2.h.
6329 * builds/symbian/freetype.mmp: Include ftbzip2.c.
6330
suzuki toshiya6b3bef22011-01-09 23:11:18 +090063312011-01-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya55e6a6f2011-01-06 02:55:42 +09006332
suzuki toshiya017b4d52011-01-06 02:49:19 +09006333 Update classic MacOS makefiles to include Bzip2 support.
6334
Werner Lemberg575078d2011-04-18 15:33:17 +02006335 Currently, it provides `FT_Stream_OpenBzip2' that returns
suzuki toshiya017b4d52011-01-06 02:49:19 +09006336 unimplemented error always, to prevent unresolved symbol
6337 error for the applications designed for Unix systems.
6338
6339 * builds/mac/FreeType.m68k_cfm.make.txt: Include ftbzip2.c.o.
6340 * builds/mac/FreeType.m68k_far.make.txt: Ditto.
6341 * builds/mac/FreeType.ppc_carbon.make.txt: Include ftbzip2.c.x.
suzuki toshiya29cb6a62011-01-06 02:53:21 +09006342 * builds/mac/FreeType.ppc_classic.make.txt: Ditto.
suzuki toshiya017b4d52011-01-06 02:49:19 +09006343
suzuki toshiya6b3bef22011-01-09 23:11:18 +090063442011-01-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya017b4d52011-01-06 02:49:19 +09006345
suzuki toshiyabe683e72011-01-06 02:44:53 +09006346 Update Amiga makefiles to include Bzip2 support.
6347
Werner Lemberg575078d2011-04-18 15:33:17 +02006348 Currently, it provides `FT_Stream_OpenBzip2' that returns
suzuki toshiyabe683e72011-01-06 02:44:53 +09006349 unimplemented error always, to prevent unresolved symbol
6350 error for the applications designed for Unix systems.
6351
6352 * builds/amiga/makefile: Include bzip2.ppc.o built from ftbzip2.c.
6353 * builds/amiga/makefile.os4: Include bzip2.o built from ftbzip2.c.
6354 * builds/amiga/smakefile: Ditto.
6355
suzuki toshiya6b3bef22011-01-09 23:11:18 +090063562011-01-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiyabe683e72011-01-06 02:44:53 +09006357
suzuki toshiya41d7e4a2011-01-06 02:34:07 +09006358 Update pkg-config tools to reflect Bzip2 support.
6359
6360 * builds/unix/freetype-config.in: Include `-lbz2' to
6361 --libs output, if built with Bzip2 support.
6362 * builds/unix/freetype2.in: Ditto.
6363
suzuki toshiya6b3bef22011-01-09 23:11:18 +090063642011-01-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya41d7e4a2011-01-06 02:34:07 +09006365
suzuki toshiya19099592011-01-06 02:05:43 +09006366 * builds/unix/configure.raw: Remove `SYSTEM_BZ2LIB' macro.
6367
6368 SYSTEM_ZLIB is used to switch the builtin zlib source
6369 or system zlib source out of FreeType2. But ftbzip2
6370 module has no builtin bzip2 library and always requires
6371 system bzip2 library. Thus SYSTEM_BZ2LIB is always yes,
6372 it is not used.
6373
Werner Lembergf3ce2372011-01-03 07:11:54 +010063742011-01-03 Werner Lemberg <wl@gnu.org>
6375
6376 */rules.mk: Handle `*pic.c' files.
6377
Werner Lembergfe42a652010-12-31 17:47:09 +010063782010-12-31 Werner Lemberg <wl@gnu.org>
6379
Werner Lemberg91843df2010-12-31 19:30:53 +01006380 * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 64.
6381 Problem reported by Tom Bishop <wenlin@wenlin.com>.
6382
63832010-12-31 Werner Lemberg <wl@gnu.org>
6384
Werner Lembergfe42a652010-12-31 17:47:09 +01006385 Improve bzip2 support.
6386
6387 * include/freetype/ftmoderr.h: Add bzip2.
6388
6389 * docs/INSTALL.ANY, docs/CHANGES: Updated.
6390
6391 * src/pcf/README: Updated.
6392 * include/freetype/internal/pcftypes.h: Obsolete, removed.
6393
Joel Klingheded913c22010-12-31 16:59:33 +010063942010-12-31 Joel Klinghed <the_jk@yahoo.com>
6395
6396 Add bzip2 compression support to handle *.pcf.bz2 files.
6397
6398 * builds/unix/configure.raw: Test for libbz2 library.
6399
6400 * devel/ftoption.h, include/freetype/config/ftoption.h
6401 (FT_CONFIG_OPTION_USE_BZIP2): Define.
6402 * include/freetype/config/ftheader.h (FT_BZIP2_H): Define.
6403
6404 * include/freetype/ftbzip2.h: New file.
6405
6406 * src/bzip2/*: New files.
6407
6408 * src/pcf/pcf.h: s/gzip_/comp_/.
6409 * src/pcf/pcfdrvr.c: Include FT_BZIP2_H.
6410 s/gzip_/comp_/.
6411 (PCF_Face_Init): Handle bzip2 compressed files.
6412
6413 * docs/formats.txt, modules.cfg: Updated.
6414
Harsha7774ac62010-12-25 16:34:56 +010064152010-12-25 Harsha <mm.harsha@gmail.com>
6416
6417 Apply Savannah patch #7422.
6418
Joel Klingheded913c22010-12-31 16:59:33 +01006419 If we encounter a space in a string then the sbit buffer is NULL,
Harsha7774ac62010-12-25 16:34:56 +01006420 height and width are 0s. So the check in ftc_snode_compare will
6421 always pass for spaces (comparision with 255). Here the comments
6422 above the condition are proper but the implementation is not. When
6423 we create an snode I think it is the proper way to initialize the
6424 width to 255 and then put a check for being equal to 255 in snode
6425 compare function.
6426
6427 * src/cache/ftcsbits.c (FTC_SNode_New): Initialize sbit widths with
6428 value 255.
6429 (ftc_snode_compare): Fix condition.
6430
Werner Lemberg312d26a2010-12-13 20:17:26 +010064312010-12-13 Werner Lemberg <wl@gnu.org>
6432
6433 Fix parameter handling of `FT_Set_Renderer'.
6434 Reported by Kirill Tishin <siege@bk.ru>.
6435
6436 * src/base/ftobjs.c (FT_Set_Renderer): Increment `parameters'.
6437
Werner Lemberg396b11b2010-12-09 23:16:18 +010064382010-12-09 Werner Lemberg <wl@gnu.org>
6439
6440 [cff] Allow `hlineto' and `vlineto' without arguments.
6441
6442 We simply ignore such instructions. This is invalid, but it doesn't
6443 harm; and indeed, there exist such subsetted fonts in PDFs.
6444
6445 Reported by Albert Astals Cid <aacid@kde.org>.
6446
6447 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
6448 [cff_op_hlineto]: Ignore instruction if there aren't any arguments
6449 on the stack.
6450
Werner Lemberg9ec31ce2010-11-28 16:07:49 +010064512010-11-28 Werner Lemberg <wl@gnu.org>
6452
6453 * Version 2.4.4 released.
6454 =========================
6455
6456
6457 Tag sources with `VER-2-4-4'.
6458
6459 * docs/CHANGES: Updated.
6460
6461 * docs/VERSION.DLL: Update documentation and bump version number to
6462 2.4.4
6463
6464 * README, Jamfile (RefDoc),
6465 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
6466 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
6467 builds/win32/visualc/freetype.dsp,
6468 builds/win32/visualc/freetype.vcproj,
6469 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
6470 builds/win32/visualce/freetype.vcproj,
6471 builds/win32/visualce/index.html,
6472 builds/wince/vc2005-ce/freetype.vcproj,
6473 builds/wince/vc2005-ce/index.html,
6474 builds/wince/vc2008-ce/freetype.vcproj,
6475 builds/wince/vc2008-ce/index.html: s/2.4.3/2.4.4/, s/243/244/.
6476
6477 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
6478
6479 * builds/unix/configure.raw (version_info): Set to 12:2:6.
6480
Алексей Подтележников7c4ac3c2010-11-28 08:23:40 +010064812010-11-28 Alexei Podtelezhnikov <apodtele@gmail.com>
6482
6483 [ftsmooth]: Minor code simplification.
6484
6485 * src/smooth/ftgrays (gray_render_cubic): Do only one comparison
6486 instead of two.
6487
Johnson Y. Yan9073e7c2010-11-26 11:58:08 +010064882010-11-26 Johnson Y. Yan <yinsen_yan@foxitsoftware.com>
6489
6490 [truetype] Better multi-threading support.
6491
6492 * src/truetype/ttinterp.c (TT_Load_Context): Reset glyph zone
6493 references.
6494
John Tytgated7d1a52010-11-23 19:30:38 +010064952010-11-23 John Tytgat <John.Tytgat@esko.com>
6496
6497 * src/psaux/t1decode.c (t1_decoder_parse_charstring): Expand
6498 start_point, check_points, add_point, add_point1, close_contour
6499 macros.
6500 Remove add_contour macro.
6501 Return error code from t1_builder_start_point and
6502 t1_builder_check_points when there was one (instead of returning 0).
6503
suzuki toshiya9f5dd612010-11-23 02:47:10 +090065042010-11-22 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6505
6506 [truetype] Identify the tricky fonts by cvt/fpgm/prep checksums.
6507 Some Latin TrueType fonts are still expected to be unhinted.
6508 Fix Savannah bug #31645.
6509
6510 * src/truetype/ttobjs.c (tt_check_trickyness): Divided to...
6511 (tt_check_trickyness_family): this checking family name, and
6512 (tt_check_trickyness_sfnt_ids): this checking cvt/fpgm/prep.
6513 (tt_get_sfnt_checksum): Function to retrieve the sfnt checksum
6514 for specified subtable even if cleared by lazy PDF generators.
6515 (tt_synth_sfnt_checksum): Function to calculate the checksum.
6516
Werner Lembergfa764cf2010-11-18 13:08:52 +010065172010-11-18 Werner Lemberg <wl@gnu.org>
6518
Werner Lembergec4372f2010-11-18 20:34:22 +01006519 [truetype] Fix `loca' handling for inconsistent number of glyphs.
6520 Reported by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>.
6521
6522 * src/truetype/ttpload.c (tt_face_load_loca): While sanitizing,
6523 handle case where `loca' is the last table in the font.
6524
65252010-11-18 Werner Lemberg <wl@gnu.org>
6526
Werner Lembergfa764cf2010-11-18 13:08:52 +01006527 [sfnt] Ignore all errors while loading `OS/2' table.
6528 Suggested by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>.
6529
6530 * src/sfnt/sfobjs.c (sfnt_load_face): Do it.
6531
Johnson Y. Yanb70d8a02010-11-18 10:36:59 +010065322010-11-18 Johnson Y. Yan <yinsen_yan@foxitsoftware.com>
6533
6534 [type1] Fix matrix normalization.
6535
6536 * src/type1/t1load.c (parse_font_matrix): Handle sign of scaling
6537 factor.
6538
Werner Lembergf689bf72010-11-18 10:28:16 +010065392010-11-18 Werner Lemberg <wl@gnu.org>
6540
Johnson Y. Yanb70d8a02010-11-18 10:36:59 +01006541 [type1] Improve guard against malformed data.
Werner Lembergf689bf72010-11-18 10:28:16 +01006542 Based on a patch submitted by Johnson Y. Yan
6543 <yinsen_yan@foxitsoftware.com>
6544
6545 * src/type1/t1load.c (read_binary_data): Check `size'.
6546
Werner Lemberg05012ad2010-11-17 11:47:53 +010065472010-11-17 Werner Lemberg <wl@gnu.org>
6548
6549 [sfnt] While tracing, output table checksums also.
6550
6551 * src/sfnt/ttload.c (tt_face_load_font_dir): Do it.
6552
suzuki toshiyaac093902010-11-04 23:26:11 +090065532010-11-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6554
Werner Lemberg575078d2011-04-18 15:33:17 +02006555 [UVS] Fix `find_variant_selector_charmap', Savannah bug #31545.
suzuki toshiyaac093902010-11-04 23:26:11 +09006556
Werner Lemberg575078d2011-04-18 15:33:17 +02006557 Since 2010-07-04, `find_variant_selector_charmap' returns
suzuki toshiyaac093902010-11-04 23:26:11 +09006558 the first cmap subtable always under rogue-compatible
6559 configuration, it causes NULL pointer dereference and
6560 make UVS-related functions crashed.
6561
6562 * src/base/ftobjs.c (Fix find_variant_selector_charmap):
6563 Returns UVS cmap correctly.
6564
Alexei Podtelezhnikov6aee6902010-11-02 16:01:03 +010065652010-11-01 Alexei Podtelezhnikov <apodtele@gmail.com>
6566
6567 [ftsmooth] Improve rendering.
6568
6569 * src/smooth/ftsmooth.c (gray_render_conic): Since version 2.4.3,
6570 cubic deviations have been estimated _after_ UPSCALE, whereas
6571 conic ones have been evaluated _before_ UPSCALE, which produces
6572 inferior rendering results. Fix this.
6573 Partially undo change from 2010-10-15 by using ONE_PIXEL/4; this has
6574 been tested with demo images sent to the mailing list. See
6575
6576 http://lists.gnu.org/archive/html/freetype-devel/2010-10/msg00055.html
6577
6578 and later mails in this thread.
6579
Werner Lembergf0987ab2010-10-28 08:33:28 +020065802010-10-28 Werner Lemberg <wl@gnu.org>
6581
Werner Lemberg6a96bbe2010-10-28 08:51:15 +02006582 [ftraster] Minor fixes.
6583
6584 Reported by Tom Bishop <wenlin@wenlin.com>.
6585
6586 * src/raster/ftraster.c (ULong): Remove unused typedef.
6587 (TWorker): Remove unused variable `precision_mask'.
6588
65892010-10-28 Werner Lemberg <wl@gnu.org>
6590
Werner Lembergf0987ab2010-10-28 08:33:28 +02006591 [ftraster] Fix rendering.
6592
6593 Problem reported by Tom Bishop <wenlin@wenlin.com>; see
6594 thread starting with
6595
6596 http://lists.gnu.org/archive/html/freetype/2010-10/msg00049.html
6597
6598 * src/raster/ftraster.c (Line_Up): Replace FMulDiv with SMulDiv
6599 since the involved multiplication exceeds 32 bits.
6600
suzuki toshiya875439c2010-10-25 15:43:01 +090066012010-10-25 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6602
Werner Lemberg575078d2011-04-18 15:33:17 +02006603 Revert a change of `_idx' type in `FTC_CACHE_LOOKUP_CMP'.
suzuki toshiya875439c2010-10-25 15:43:01 +09006604
6605 * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Revert
6606 the type of `_idx' from FT_PtrDist (by previous change)
6607 to original FT_UFast, to match with FT_CacheRec.
6608
suzuki toshiya46c371c2010-10-25 00:14:13 +090066092010-10-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6610
suzuki toshiya3512a712010-10-25 02:07:52 +09006611 [cache] Change the hash types to FT_PtrDist.
6612
6613 On LLP64 platforms (e.g. Win64), FT_ULong (32-bit)
6614 variables are inappropriate to calculate hash values
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006615 from the memory address (64-bit). The hash variables
suzuki toshiya3512a712010-10-25 02:07:52 +09006616 are extended from FT_ULong to FT_PtrDist and new
6617 hashing macro functions are introduced. The hash
6618 values on 16-bit memory platforms are changed, but
6619 ILP32 and LP64 are not changed. The hash value in
6620 the cache subsystem is not reverted to the memory
6621 address, so using signed type FT_PtrDist is safe.
6622
6623 * src/cache/ftccache.h (_FTC_FACE_ID_HASH): New hash
Werner Lemberg575078d2011-04-18 15:33:17 +02006624 function to replace `FTC_FACE_ID_HASH' for portability.
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006625 * src/cache/ftcmanag.h (FTC_SCALER_HASH): Replace
Werner Lemberg575078d2011-04-18 15:33:17 +02006626 `FTC_FACE_ID_HASH' by `_FTC_FACE_ID_HASH'.
suzuki toshiya3512a712010-10-25 02:07:52 +09006627 * src/cache/ftccmap.c (FTC_CMAP_HASH): Ditto.
6628
6629 * src/cache/ftccache.h (FTC_NodeRec): The type of the
6630 member `hash' is changed from FT_UInt32 to FT_PtrDist.
6631
6632 * src/cache/ftccache.h (FTC_Cache_Lookup): The type of the
6633 argument `hash' is changed from FT_UInt32 to FT_PtrDist.
6634 (FTC_Cache_NewNode): Ditto.
6635 * src/cache/ftccache.c (ftc_cache_add): Ditto.
6636 (FTC_Cache_Lookup): Ditto. (FTC_Cache_NewNode): Ditto.
6637 * src/cache/ftcglyph.h (FTC_GCache_Lookup): Ditto.
6638 * src/cache/ftcglyph.c (FTC_GCache_Lookup): Ditto.
6639
6640 * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): The type
6641 of the internal variable `hash' is changed to FT_PtrDist
6642 from FT_UInt32. (FTC_ImageCache_LookupScaler): Ditto.
6643 (FTC_SBitCache_Lookup): Ditto.
6644 (FTC_SBitCache_LookupScaler): Ditto.
6645 * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Ditto.
6646 * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Ditto.
6647 Also the type of the internal variable `_idx' is changed to
suzuki toshiya875439c2010-10-25 15:43:01 +09006648 FT_PtrDist from FT_UFast for better pointer calculation.
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006649
suzuki toshiya3512a712010-10-25 02:07:52 +090066502010-10-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6651
suzuki toshiya61590b72010-10-25 01:12:09 +09006652 [cache] Hide internal macros incompatible with LLP64.
6653
Werner Lemberg575078d2011-04-18 15:33:17 +02006654 `FT_POINTER_TO_ULONG', `FTC_FACE_ID_HASH', and
6655 `FTC_IMAGE_TYPE_HASH' are enclosed by
suzuki toshiya61590b72010-10-25 01:12:09 +09006656 FT_CONFIG_OPTION_OLD_INTERNALS and hidden from
6657 normal clients.
6658
6659 For the history of these macros, see the investigation:
6660 http://lists.gnu.org/archive/html/freetype/2010-10/msg00022.html
6661
66622010-10-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6663
Werner Lemberg575078d2011-04-18 15:33:17 +02006664 Change the type of `FT_MEM_VAL' from FT_ULong to FT_PtrDist.
suzuki toshiyab8b498f2010-10-25 00:35:59 +09006665
6666 On LLP64 platforms (e.g. Win64), unsigned long (32-bit)
Werner Lemberg575078d2011-04-18 15:33:17 +02006667 cannot cover the memory address (64-bit). `FT_MEM_VAL' is
suzuki toshiyab8b498f2010-10-25 00:35:59 +09006668 used for hashing only and not dereferred, so using signed
6669 type FT_PtrDist is safe.
6670
6671 * src/base/ftdbgmem.c (FT_MEM_VAL): Change the type of the
6672 return value from FT_ULong to FT_PtrDist.
6673 (ft_mem_table_resize): The type of hash is changed to
6674 FT_PtrDist. (ft_mem_table_get_nodep): Ditto.
6675
66762010-10-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6677
suzuki toshiya46c371c2010-10-25 00:14:13 +09006678 Replace "%lx" for memory address by "%p", LLP64 platforms.
6679
6680 On LLP64 platforms (e.g. Win64), long (32-bit) cannot cover
6681 the memory address (64-bit). Also the casts from the pointer
6682 type to long int should be removed to preserve the address
6683 correctly.
6684
6685 * src/raster/ftraster.c (New_Profile): Replace "%lx" by "%p".
6686 (End_Profile) Ditto.
6687 * src/truetype/ttinterp.c (Init_Context): Ditto.
6688
Werner Lemberg34d61e82010-10-15 20:44:15 +020066892010-10-15 Alexei Podtelezhnikov <apodtele@gmail.com>
6690
6691 Fix thinko in spline flattening.
6692
6693 FT_MAX_CURVE_DEVIATION is dependent on the value of ONE_PIXEL.
6694
6695 * src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): Remove it and
6696 replace it everywhere with ONE_PIXEL/8.
6697
suzuki toshiya4b718712010-10-13 16:21:59 +090066982010-10-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6699
suzuki toshiya463ddda2010-10-13 17:20:27 +09006700 [raccess] Skip unrequired resource access rules by Darwin VFS.
6701
6702 When a resource fork access rule by Darwin VFS could open the
6703 resource fork but no font is found in it, the rest of rules
6704 by Darwin VFS are skipped. It reduces the warnings of the
6705 deprecated resource fork access method by recent Darwin kernel.
6706 Fix MacPorts ticket #18859:
6707 http://trac.macports.org/ticket/18859
6708
6709 * src/base/ftobjs.c (load_face_in_embedded_rfork):
Werner Lemberg575078d2011-04-18 15:33:17 +02006710 When `FT_Stream_New' returns FT_Err_Cannot_Open_Stream, it
6711 means that the file is possible to be `fopen'-ed but zero-sized.
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006712 Also there is a case that the resource fork is not zero-sized,
suzuki toshiya463ddda2010-10-13 17:20:27 +09006713 but no supported font exists in it. If a rule by Darwin VFS
6714 falls into such cases, there is no need to try other Darwin VFS
6715 rules anymore. Such cases are marked by vfs_rfork_has_no_font.
6716 If it is TRUE, the Darwin VFS rules are skipped.
6717
67182010-10-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6719
suzuki toshiyac081a4a2010-10-13 17:05:42 +09006720 [raccess] Grouping resource access rules based on Darwin VFS.
6721
6722 MacOS X/Darwin kernel supports a few tricky methods to access
6723 a resource fork via ANSI C or POSIX interface. Current resource
6724 fork accessor tries all possible methods to support all kernels.
6725 But if a method could open a resource fork but no font is found,
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006726 there is no need to try other methods older than tested method.
suzuki toshiyac081a4a2010-10-13 17:05:42 +09006727 To determine whether the rule index is for Darwin VFS, a local
Werner Lemberg575078d2011-04-18 15:33:17 +02006728 function `ftrfork.c::raccess_rule_by_darwin_vfs' is introduced.
suzuki toshiyac081a4a2010-10-13 17:05:42 +09006729 To use this function in ftobjs.c etc but it should be inlined,
6730 it is exposed by ftbase.h.
6731
6732 * src/base/ftrfork.c (FT_RFork_Rule): New enum type to identify
6733 the rules to access the resource fork.
6734 (raccess_guess_rec): New structure to bind the rule function and
6735 rule enum type.
6736 (FT_Raccess_Guess): The list of the rule functions is replaced by
6737 (raccess_guess_table): This. This is exposed to be used by other
6738 intra module functions.
6739 (raccess_rule_by_darwin_vfs): A function to return a boolean
6740 if the rule specified by the rule index is based on Darwin VFS.
6741
67422010-10-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6743
suzuki toshiya4b718712010-10-13 16:21:59 +09006744 Prevent to open a FT_Stream for zero-sized file on non-Unix.
6745
6746 builds/unix/ftsystem.c prevents to open an useless stream from
6747 zero-sized file and returns FT_Err_Cannot_Open_Stream, but the
6748 stream drivers for ANSI C, Amiga and VMS return useless streams.
6749 For cross-platform consistency, all stream drivers should act
6750 same.
6751
6752 * src/base/ftsystem.c (FT_Stream_Open): If the size of the opened
6753 file is zero, FT_Err_Cannot_Open_Stream is returned.
6754 * builds/amiga/src/base/ftsystem.c (FT_Stream_Open): Ditto.
6755 * src/vms/ftsystem.c (FT_Stream_Open): Ditto.
6756
Werner Lemberg59eb9f82010-10-12 07:49:17 +020067572010-10-12 Werner Lemberg <wl@gnu.org>
6758
Werner Lemberg273e2b72012-09-18 13:27:27 +02006759 [truetype] Fix Savannah bug #31310.
Werner Lemberg59eb9f82010-10-12 07:49:17 +02006760
6761 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Protect against
6762 invalid `runcnt' values.
6763
Chris Liddellbc4ed482010-10-08 18:40:18 +020067642010-10-08 Chris Liddell <chris.liddell@artifex.com>
6765
Werner Lemberg273e2b72012-09-18 13:27:27 +02006766 [sfnt] Fix Savannah bug #31275.
Chris Liddellbc4ed482010-10-08 18:40:18 +02006767
6768 * src/sfnt/ttpost.c: Include FT_INTERNAL_DEBUG_H.
6769
Werner Lemberg0edf0982010-10-06 11:52:27 +020067702010-10-06 Werner Lemberg <wl@gnu.org>
6771
6772 [truetype] Improve error handling of `SHZ' bytecode instruction.
6773 Problem reported by Chris Evans <scarybeasts@gmail.com>.
6774
6775 * src/truetype/ttinterp.c (Ins_SHZ): Check `last_point'.
6776
Werner Lemberg94d540e2010-10-05 12:28:15 +020067772010-10-05 Werner Lemberg <wl@gnu.org>
6778
6779 Fix Savannah bug #31253.
6780 Patch submitted by an anonymous reporter.
6781
6782 * configure: Use `awk' instead of `sed' to manipulate output of `ls
6783 -id'.
6784
Werner Lemberg75eeb322010-10-03 20:17:27 +020067852010-10-03 Werner Lemberg <wl@gnu.org>
6786
Werner Lemberga5a32c12010-10-03 20:36:03 +02006787 * Version 2.4.3 released.
6788 =========================
6789
6790
6791 Tag sources with `VER-2-4-3'.
6792
6793 * docs/CHANGES: Updated.
6794
6795 * docs/VERSION.DLL: Update documentation and bump version number to
6796 2.4.3
6797
6798 * README, Jamfile (RefDoc),
6799 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
6800 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
6801 builds/win32/visualc/freetype.dsp,
6802 builds/win32/visualc/freetype.vcproj,
6803 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
6804 builds/win32/visualce/freetype.vcproj,
6805 builds/win32/visualce/index.html,
6806 builds/wince/vc2005-ce/freetype.vcproj,
6807 builds/wince/vc2005-ce/index.html,
6808 builds/wince/vc2008-ce/freetype.vcproj,
6809 builds/wince/vc2008-ce/index.html: s/2.4.2/2.4.3/, s/242/243/.
6810
6811 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
6812
6813 * builds/unix/configure.raw (version_info): Set to 12:1:6.
6814
68152010-10-03 Werner Lemberg <wl@gnu.org>
6816
Werner Lemberg75eeb322010-10-03 20:17:27 +02006817 Avoid `configure' issues with symbolic links.
6818 Based on a patch from Alexander Stohr <Alexander.Stohr@gmx.de>.
6819
6820 * configure: Compare directories using `ls -id'.
6821 Check existence of `reference' subdirectory before creating it.
6822
Werner Lemberg0e6fc092010-10-02 09:05:46 +020068232010-10-02 Werner Lemberg <wl@gnu.org>
6824
Werner Lemberg273e2b72012-09-18 13:27:27 +02006825 [sfnt] Fix Savannah bug #31088 (sort of).
Werner Lemberg3987b152010-10-02 11:46:19 +02006826
6827 * src/sfnt/ttload.c (tt_face_load_maxp): Always allocate at least 64
6828 function entries.
6829
68302010-10-02 Werner Lemberg <wl@gnu.org>
6831
Werner Lemberg0e6fc092010-10-02 09:05:46 +02006832 [smooth] Fix splitting of cubics for negative values.
6833
6834 Reported by Róbert Márki <gsmiko@gmail.com>; see
6835 http://lists.gnu.org/archive/html/freetype/2010-09/msg00019.html.
6836
6837 * src/smooth/ftgrays.c (gray_render_cubic): Fix thinko.
6838
suzuki toshiya5edc2f32010-10-01 08:15:55 +020068392010-10-01 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6840
Werner Lemberg273e2b72012-09-18 13:27:27 +02006841 [truetype] Fix Savannah bug #31040.
suzuki toshiya5edc2f32010-10-01 08:15:55 +02006842
6843 * src/truetype/ttinterp.c (free_buffer_in_size): Remove.
6844 (TT_RunIns): Updated.
6845
suzuki toshiyad2b8b8d2010-09-20 19:06:23 +090068462010-09-20 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6847
6848 [sfnt] Make error message filling NULL names less verbose.
6849
6850 * src/sfnt/ttpost.c (load_format_20): Showing 1 summary message
6851 when we fill `post' names by NULL, instead of per-entry message.
6852
Graham Ashere0a9a932010-09-20 09:29:23 +020068532010-09-20 Graham Asher <graham.asher@btinternet.com>
6854 David Bevan <david.bevan@pb.com>
6855
6856 [smooth] Fix and improve spline flattening.
Werner Lemberg297ff852010-10-03 20:22:23 +02006857
Graham Ashere0a9a932010-09-20 09:29:23 +02006858 This fixes the flattening of cubic, S-shaped curves and speeds up
6859 the handling of both the conic and cubic arcs.
6860
6861 See the discussions on the freetype-devel mailing list in late
6862 August and September 2010 for details.
6863
6864 * src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): New macro.
6865 (TWorker): Remove `conic_level' and `cubic_level' elements.
6866 (gray_render_conic): Simplify algorithm.
6867 (gray_render_cubic): New algorithm; details are given in the code
6868 comments.
6869 (gray_convert_glyph): Remove heuristics.
6870
Werner Lembergd38ba0c2010-09-19 20:51:19 +020068712010-09-19 Werner Lemberg <wl@gnu.org>
6872
6873 Minor fixes.
6874
6875 * src/cff/cffload.c (cff_charset_compute_cids): `charset->sids[i]'
6876 is `FT_UShort'.
6877 (cff_index_access_element): Don't use additions in comparison.
6878 * src/sfnt/ttpost.c (load_format_20): Make `post_limit' of type
6879 `FT_Long'.
6880 Don't use additions in comparison.
6881 Improve tracing messages.
6882 (load_format_25, load_post_names): Make `post_limit' of type
6883 `FT_Long'.
6884
suzuki toshiya900e7e02010-09-20 01:03:36 +090068852010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
Werner Lemberg297ff852010-10-03 20:22:23 +02006886
suzuki toshiya73aa20c2010-09-20 01:30:38 +09006887 [cff] Truncate the element length at the end of the stream.
6888 See Savannah bug #30975.
Werner Lemberg297ff852010-10-03 20:22:23 +02006889
Werner Lembergd38ba0c2010-09-19 20:51:19 +02006890 * src/cff/cffload.c (cff_index_access_element): `off2', the offset
Werner Lemberg1a414642010-10-03 20:23:04 +02006891 to the next element is truncated at the end of the stream to prevent
6892 invalid I/O. As `off1', the offset to the requested element has
Werner Lemberg575078d2011-04-18 15:33:17 +02006893 been checked by `FT_STREAM_SEEK', `off2' should be checked
Werner Lemberg1a414642010-10-03 20:23:04 +02006894 similarly.
suzuki toshiya73aa20c2010-09-20 01:30:38 +09006895
68962010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya900e7e02010-09-20 01:03:36 +09006897
suzuki toshiyad2d843a2010-09-20 01:28:17 +09006898 [cff] Ignore CID > 0xFFFFU.
6899 See Savannah bug #30975.
6900
6901 * src/cff/cffload.c (cff_charset_compute_cids): Ignore CID if
Werner Lembergd38ba0c2010-09-19 20:51:19 +02006902 greater than 0xFFFFU. CFF font spec does not mention maximum CID in
6903 the font, but PostScript and PDF spec define that maximum CID is
6904 0xFFFFU.
suzuki toshiyad2d843a2010-09-20 01:28:17 +09006905
69062010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6907
Werner Lemberg575078d2011-04-18 15:33:17 +02006908 [cff] Make trace message in` cff_charset_load' verbose.
suzuki toshiyaa0f43f22010-09-20 01:26:56 +09006909 See Savannah bug #30975.
6910
Werner Lembergd38ba0c2010-09-19 20:51:19 +02006911 * src/cff/cffload.c (cff_charset_load): Report the original `nleft'
6912 and truncated `nleft'.
suzuki toshiyaa0f43f22010-09-20 01:26:56 +09006913
69142010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6915
suzuki toshiyab3e19542010-09-20 01:22:34 +09006916 [cff] Correct `max_cid' from CID array length to max CID.
6917 See Savannah bug #30975.
6918
6919 * src/cff/cffload.c (cff_charset_compute_cids): Don't increment
Werner Lembergd38ba0c2010-09-19 20:51:19 +02006920 max_cid after detecting max CID. The array CFF_Charset->cids is
6921 allocated by max_cid + 1.
6922 (cff_charset_cid_to_gindex): Permit CID is less than or equal to
6923 CFF_Charset->max_cid.
suzuki toshiyab3e19542010-09-20 01:22:34 +09006924 * src/cff/cffobjs.c (cff_face_init): FT_Face->num_glyphs is
6925 calculated as CFF_Charset->max_cid + 1.
6926
69272010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6928
suzuki toshiya643d49d2010-09-20 01:07:57 +09006929 [truetype] Sanitize the broken offsets in `loca'.
Werner Lembergd38ba0c2010-09-19 20:51:19 +02006930 See Savannah bug #31040.
suzuki toshiya643d49d2010-09-20 01:07:57 +09006931
6932 * src/truetype/ttpload.c (tt_face_get_location): If `pos1', the
6933 offset to the requested entry in `glyf' exceeds the end of the
Werner Lembergd38ba0c2010-09-19 20:51:19 +02006934 table, return offset=0, length=0. If `pos2', the offset to the next
6935 entry in `glyf' exceeds the end of the table, truncate the entry
6936 length at the end of `glyf' table.
suzuki toshiya643d49d2010-09-20 01:07:57 +09006937
69382010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6939
suzuki toshiya900e7e02010-09-20 01:03:36 +09006940 [sfnt] Prevent overrunning in `post' table parser.
Werner Lembergd38ba0c2010-09-19 20:51:19 +02006941 See Savannah bug #31040.
suzuki toshiya900e7e02010-09-20 01:03:36 +09006942
Werner Lembergd38ba0c2010-09-19 20:51:19 +02006943 * src/sfnt/ttpost.c (load_post_names): Get the length of `post'
Werner Lemberg575078d2011-04-18 15:33:17 +02006944 table and pass the limit of `post' table to `load_format_20' and
6945 `load_format_25'.
Werner Lembergd38ba0c2010-09-19 20:51:19 +02006946 (load_format_20): Stop the parsing when we reached at the limit of
6947 `post' table. If more glyph names are required, they are filled by
6948 NULL names.
suzuki toshiya900e7e02010-09-20 01:03:36 +09006949
suzuki toshiyadb053ec2010-09-17 23:20:00 +090069502010-09-17 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6951
6952 [truetype] Don't duplicate size->twilight structure to be freed.
Werner Lembergd38ba0c2010-09-19 20:51:19 +02006953 See Savannah bug #31040 for detail.
suzuki toshiyadb053ec2010-09-17 23:20:00 +09006954
6955 * src/truetype/ttinterp.c (free_buffer_in_size): Don't duplicate
6956 FT_GlyphZoneRec size->twilight to be freed. If duplicated,
Werner Lemberg575078d2011-04-18 15:33:17 +02006957 `FT_FREE' erases the duplicated pointers only and leave original
suzuki toshiyadb053ec2010-09-17 23:20:00 +09006958 pointers. They can cause the double-free crash when the burst
Werner Lemberg575078d2011-04-18 15:33:17 +02006959 errors occur in TrueType interpreter and `free_buffer_in_size' is
Werner Lembergd38ba0c2010-09-19 20:51:19 +02006960 invoked repeatedly.
suzuki toshiyadb053ec2010-09-17 23:20:00 +09006961
Werner Lembergafd89d32010-09-15 13:02:35 +020069622010-09-15 Werner Lemberg <wl@gnu.org>
6963
6964 Make bytecode debugging with FontForge work again.
6965
6966 * src/truetype/ttinterp.c (TT_RunIns): Don't call
6967 `free_buffer_in_size' in case of error if a debugger is active.
6968
Werner Lemberg6abb9232010-09-14 09:02:10 +020069692010-09-14 Werner Lemberg <wl@gnu.org>
6970
6971 Improve tracing messages.
6972
6973 * src/truetype/ttinterp.c (TT_RunIns): Improve wording of tracing
6974 message.
6975 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Add
6976 tracing message.
6977 * src/truetype/ttgload.c (tt_loader_init): Add tracing message.
6978 * src/cache/ftcsbits.c (ftc_snode_load): Emit tracing message if
6979 glyph doesn't fit into a small bitmap container.
6980
Werner Lemberg5220ef52010-09-13 07:32:22 +020069812010-09-13 Werner Lemberg <wl@gnu.org>
6982
6983 Fix minor issues reported by <muktha.narayan@wipro.com>.
6984
6985 * src/autofit/aflatin.c (af_latin_compute_stem_width): Remove
6986 redundant conditional check.
6987 * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Ditto.
6988 * src/cff/cffload.c (cff_encoding_load): Remove conditional check
6989 which always evaluates to `true'.
6990 * src/pshinter/pshalgo.c (ps_glyph_interpolate_strong_points):
6991 Ditto.
6992 * src/truetype/ttinterp.c (Ins_IUP): Ditto.
6993 * src/cid/cidgload.c (cid_slot_load_glyph): Don't check for NULL if
6994 value is already dereferenced.
6995 * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix check of `face'.
6996
suzuki toshiya0eb657b2010-08-31 13:29:05 +090069972010-08-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6998
suzuki toshiyafd0cdb72010-08-31 18:32:03 +09006999 Ignore the environmental setting of LIBTOOL.
7000 Patch is suggested by Adrian Bunk, to prevent unexpected
7001 reflection of environmental LIBTOOL. See:
7002 http://savannah.nongnu.org/patch/?7290
7003
7004 * builds/unix/unix-cc.in: LIBTOOL is unconditionally set to
7005 $(FT_LIBTOOL_DIR)/libtool. FT_LIBTOOL_DIR is set to $(BUILD_DIR)
7006 by default.
7007 * configure: When configured for the building out of source tee,
7008 FT_LIBTOOL_DIR is set to $(OBJ_DIR).
7009
70102010-08-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7011
suzuki toshiya0eb657b2010-08-31 13:29:05 +09007012 [truetype] Decrease the trace level catching the interpreter error.
7013
7014 * src/truetype/ttinterp.c (TT_RunIns): Decrease the trace level
7015 showing the error when the interpreter returns with an error,
Werner Lemberg575078d2011-04-18 15:33:17 +02007016 from` FT_TRACE7' to `FT_TRACE1'.
suzuki toshiya0eb657b2010-08-31 13:29:05 +09007017
suzuki toshiya29e044a2010-08-31 01:23:30 +090070182010-08-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7019
7020 [truetype] Prevent bytecode reuse after the interpretation error.
7021
7022 * src/truetype/ttinterp.c (free_buffer_in_size): New function to
7023 free the buffer allocated during the interpretation of this glyph.
7024 (TT_RunIns): Unset FT_Face->size->{cvt_ready,bytecode_ready} if
7025 an error occurs in the bytecode interpretation. The interpretation
7026 of invalid bytecode may break the function definitions and referring
7027 them in later interpretation is danger. By unsetting these flags,
7028 `fpgm' and `prep' tables are executed again in next interpretation.
7029
Werner Lemberg5220ef52010-09-13 07:32:22 +02007030 This fixes Savannah bug #30798, reported by Robert Święcki.
suzuki toshiya29e044a2010-08-31 01:23:30 +09007031
Werner Lemberg0e95b3d2010-08-29 10:46:26 +020070322010-08-29 Werner Lemberg <wl@gnu.org>
7033
Werner Lemberg12cf0312010-08-29 11:02:24 +02007034 [ftraster] Pacify compiler.
7035
7036 * src/raster/ftraster.c (ft_black_new) [_STANDALONE_]: `memory' is
7037 not used.
7038
70392010-08-29 Werner Lemberg <wl@gnu.org>
7040
Werner Lemberg0e95b3d2010-08-29 10:46:26 +02007041 [cff] Allow SIDs >= 65000.
7042
7043 * src/cff/cffload.c (cff_charset_load): Fix change from 2009-03-20:
7044 The threshold for SIDs is not applicable here. I misinterpreted the
7045 `SID values 65000 and above are available for implementation use'
7046 sentence in the CFF specification.
7047
7048 Problem reported by Ivan Ninčić <inincic@pdftron.com>.
7049
suzuki toshiya8b05b5d2010-08-28 21:16:26 +090070502010-08-28 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7051
suzuki toshiya0eb9b1f2010-08-28 21:41:16 +09007052 Force hinting when the font lacks its familyname.
Werner Lemberg0e95b3d2010-08-29 10:46:26 +02007053
7054 In Type42 or Type11 font embedded in PostScript & PDF, TrueType sfnt
7055 stream may lack `name' table because they are not required. Hinting
7056 for nameless fonts is safer for PDFs including embedded Chinese
7057 fonts. Written by David Bevan, see:
suzuki toshiya0eb9b1f2010-08-28 21:41:16 +09007058
7059 http://lists.gnu.org/archive/html/freetype-devel/2010-08/msg00021.html
7060 http://lists.freedesktop.org/archives/poppler/2010-August/006310.html
7061
Werner Lemberg0e95b3d2010-08-29 10:46:26 +02007062 * src/truetype/ttobjs.c (tt_check_trickyness): If a NULL pointer by
7063 nameless font is given, TRUE is returned to enable hinting.
suzuki toshiya0eb9b1f2010-08-28 21:41:16 +09007064
70652010-08-28 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7066
suzuki toshiya8b05b5d2010-08-28 21:16:26 +09007067 Register yet another tricky TrueType font.
7068
7069 * src/truetype/ttobjs.c (tt_check_trickyness): Add `HuaTianKaiTi?',
7070 a Kaishu typeface paired with `HuaTianSongTi?' by Huatian
7071 Information Industry.
7072
Teijo Kinnunenebaeb642010-08-17 07:40:55 +020070732010-08-17 Teijo Kinnunen <Teijo.Kinnunen@nuance.com>
7074
Werner Lemberg273e2b72012-09-18 13:27:27 +02007075 [cache] Fix Savannah bug #30788.
Teijo Kinnunenebaeb642010-08-17 07:40:55 +02007076
7077 * src/cache/ftccache.c (FTC_Cache_Clear): Check `cache->buckets' for
7078 NULL too.
7079
Werner Lemberga205b3c2010-08-10 02:59:12 +020070802010-08-10 Werner Lemberg <wl@gnu.org>
7081
7082 Try to fix Savannah bug #30717 (and probably #30719 too).
7083
7084 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Add another
7085 overflow test for `width' and `height'.
7086
Werner Lemberg6a8691e2010-08-06 22:00:38 +020070872010-08-06 Werner Lemberg <wl@gnu.org>
7088
7089 * Version 2.4.2 released.
7090 =========================
7091
7092
7093 Tag sources with `VER-2-4-2'.
7094
7095 * docs/CHANGES: Updated.
7096
7097 * docs/VERSION.DLL: Update documentation and bump version number to
7098 2.4.2
7099
7100 * README, Jamfile (RefDoc),
7101 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
7102 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
7103 builds/win32/visualc/freetype.dsp,
7104 builds/win32/visualc/freetype.vcproj,
7105 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
7106 builds/win32/visualce/freetype.vcproj,
7107 builds/win32/visualce/index.html,
7108 builds/wince/vc2005-ce/freetype.vcproj,
7109 builds/wince/vc2005-ce/index.html,
7110 builds/wince/vc2008-ce/freetype.vcproj,
7111 builds/wince/vc2008-ce/index.html: s/2.4.1/2.4.2/, s/241/242/.
7112
7113 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
7114
7115 * builds/unix/configure.raw (version_info): Set to 12:0:6.
7116
suzuki toshiya44524152010-08-07 01:46:56 +090071172010-08-06 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7118
7119 Fix Savannah bug #30648.
7120
7121 * src/base/ftobjs.c (FT_Done_Library): Specify the order of font
Werner Lembergba954402010-08-06 20:07:36 +02007122 drivers during the face closing process. Type42 faces should be
7123 closed before TrueType faces, because a Type42 face refers to
7124 another internal TrueType face which is created from sfnt[] array on
7125 the memory.
suzuki toshiya44524152010-08-07 01:46:56 +09007126
Yuriy Kaminskiyc9de9cb2010-08-06 08:20:28 +020071272010-08-06 Yuriy Kaminskiy <yumkam@mail.ru>
7128
7129 [raster] Fix valgrind warning.
7130
7131 * src/raster/ftraster.c (Decompose_Curve) <default>: Access point[0]
7132 only if we don't hit `limit'.
7133
suzuki toshiya81f34722010-08-06 14:11:54 +090071342010-08-06 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7135
7136 Fix Savannah bug #30658.
7137
Werner Lembergba954402010-08-06 20:07:36 +02007138 * src/base/ftobjs.c (Mac_Read_POST_Resource): Check that the total
suzuki toshiya81f34722010-08-06 14:11:54 +09007139 length of collected POST segments does not overrun the allocated
7140 buffer.
7141
Werner Lemberg948076c2010-08-06 01:39:26 +020071422010-08-06 Yuriy Kaminskiy <yumkam@mail.ru>
7143
7144 Fix conditional usage of FT_MulFix_i386.
7145 With -ansi flag, gcc does not define `i386', only `__i386__'.
7146
7147 * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in:
7148 s/i386/__i386__/.
7149
Werner Lembergc06da1a2010-08-05 23:15:26 +020071502010-08-05 Werner Lemberg <wl@gnu.org>
7151
Werner Lemberg273e2b72012-09-18 13:27:27 +02007152 [truetype] Fix Savannah bug #30657.
Werner Lemberg346f1862010-08-06 00:47:57 +02007153
7154 * src/truetype/ttinterp.c (BOUNDSL): New macro.
7155 Change `BOUNDS' to `BOUNDSL' where appropriate.
7156
7157 * src/truetype/ttinterp.h (TT_ExecContextRec): Fix type of
7158 `cvtSize'.
7159
71602010-08-05 Werner Lemberg <wl@gnu.org>
7161
Werner Lemberg273e2b72012-09-18 13:27:27 +02007162 [type42] Fix Savannah bug #30656.
Werner Lembergc06da1a2010-08-05 23:15:26 +02007163
7164 * src/type42/t42parse.c (t42_parse_sfnts): Protect against negative
7165 string_size.
7166 Fix comparison.
7167
suzuki toshiyad9b3e392010-08-05 17:10:32 +090071682010-08-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7169
7170 [cff] Don't use any values in decoder after parsing error.
7171
7172 * src/cff/cffgload.c (cff_slot_load): Skip the evaluations
Werner Lemberg575078d2011-04-18 15:33:17 +02007173 of the values in decoder, if `cff_decoder_parse_charstrings'
suzuki toshiyad9b3e392010-08-05 17:10:32 +09007174 returns any error.
7175
Werner Lemberg32dc43a2010-08-04 15:21:20 +020071762010-08-04 Werner Lemberg <wl@gnu.org>
7177
Werner Lemberg45a3c762010-08-04 15:54:55 +02007178 Fix Savannah bug #30644.
7179
7180 * src/base/ftstream.c (FT_Stream_EnterFrame): Fix comparison.
7181
71822010-08-04 Werner Lemberg <wl@gnu.org>
7183
Werner Lemberg32dc43a2010-08-04 15:21:20 +02007184 `make devel' fails if FT_CONFIG_OPTION_OLD_INTERNALS is set.
7185
7186 * devel/ftoption.h: Synchronize with
7187 include/freetype/config/ftoption.h.
7188
suzuki toshiyad9b3e392010-08-05 17:10:32 +090071892010-08-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
Suzuki, Toshiya (鈴木俊哉)11d65e82010-08-04 14:43:29 +02007190
7191 [cff] Improve stack overflow test.
7192
7193 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Check stack
7194 after execution of operations too.
7195
Werner Lembergb69c6ac2010-07-18 06:20:09 +020071962010-07-18 Werner Lemberg <wl@gnu.org>
7197
Werner Lembergfe3433c2010-07-18 18:41:47 +02007198 Add reference counters and to FT_Library and FT_Face objects.
7199
7200 * include/freetype/freetype.h (FT_Reference_Face): New function.
7201 * include/freetype/ftmodapi.h (FT_Rererence_Library): New function.
7202
7203 * include/freetype/internal/ftobjs.h (FT_Face_InternalRec,
7204 FT_LibraryRec): New field `refcount'.
7205
7206 * src/base/ftobjs.c (FT_Open_Face, FT_New_Library): Handle
7207 `refcount'.
7208 (FT_Reference_Face, FT_Reference_Library): Implement new functions.
7209 (FT_Done_Face, FT_Done_Library): Handle `refcount'.
7210
7211 * docs/CHANGES: Updated.
7212
72132010-07-18 Werner Lemberg <wl@gnu.org>
7214
Werner Lembergb69c6ac2010-07-18 06:20:09 +02007215 * Version 2.4.1 released.
7216 =========================
7217
7218
7219 Tag sources with `VER-2-4-1'.
7220
7221 * docs/CHANGES: Updated.
7222
7223 * docs/VERSION.DLL: Update documentation and bump version number to
7224 2.4.1.
7225
7226 * README, Jamfile (RefDoc),
7227 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
7228 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
7229 builds/win32/visualc/freetype.dsp,
7230 builds/win32/visualc/freetype.vcproj,
7231 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
7232 builds/win32/visualce/freetype.vcproj,
7233 builds/win32/visualce/index.html,
7234 builds/wince/vc2005-ce/freetype.vcproj,
7235 builds/wince/vc2005-ce/index.html,
7236 builds/wince/vc2008-ce/freetype.vcproj,
7237 builds/wince/vc2008-ce/index.html: s/2.4.0/2.4.1/, s/240/241/.
7238
7239 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
7240
7241 * builds/unix/configure.raw (version_info): Set to 11:1:5.
7242
Werner Lemberg2de6b8a2010-07-17 13:39:50 +020072432010-07-17 Werner Lemberg <wl@gnu.org>
7244
7245 [cff] Final try to fix `hintmask' and `cntrmask' limit check.
7246
7247 Problem reported by Tobias Wolf <towolf@gmail.com>.
7248
7249 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
7250 <cff_op_hintmask>: Sigh. I'm apparently too silly to fix this
7251 correctly in less than three tries.
7252
Werner Lembergc8f5b982010-07-12 21:13:22 +020072532010-07-12 Werner Lemberg <wl@gnu.org>
7254
Werner Lemberg15ffc352010-07-12 22:07:16 +02007255 * Version 2.4.0 released.
7256 =========================
7257
7258
7259 Tag sources with `VER-2-4-0'.
7260
7261 * docs/CHANGES: Updated.
7262
7263 * docs/VERSION.DLL: Update documentation and bump version number to
7264 2.4.0.
7265
7266 * README, Jamfile (RefDoc),
7267 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
7268 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
7269 builds/win32/visualc/freetype.dsp,
7270 builds/win32/visualc/freetype.vcproj,
7271 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
7272 builds/win32/visualce/freetype.vcproj,
7273 builds/win32/visualce/index.html,
7274 builds/wince/vc2005-ce/freetype.vcproj,
7275 builds/wince/vc2005-ce/index.html,
7276 builds/wince/vc2008-ce/freetype.vcproj,
7277 builds/wince/vc2008-ce/index.html: s/2.3.12/2.4.0/, s/2312/240/.
7278
7279 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 4.
7280 (FREETYPE_PATCH): Set to 0.
7281
7282 * builds/unix/configure.raw (version_info): Set to 11:0:5.
7283
72842010-07-12 Werner Lemberg <wl@gnu.org>
7285
Werner Lembergc8f5b982010-07-12 21:13:22 +02007286 Remove C++ warnings.
7287
7288 */*: Initialize pointers where necessary to make g++ happy.
7289
malcf4e6c152010-07-12 20:57:54 +020072902010-07-12 malc <av1474@comtv.ru>
Werner Lemberg072afbd2010-07-13 06:26:46 +02007291 Richard Henderson <rth@redhat.com>
malcf4e6c152010-07-12 20:57:54 +02007292
7293 Fix type-punning issues with C++.
7294
7295 * include/freetype/internal/ftmemory.h (FT_ASSIGNP) [__cplusplus]:
7296 Emulate a `typeof' operator with an inline template which uses
7297 `static_cast'.
7298
Werner Lembergebfd4542010-07-11 09:28:21 +020072992010-07-11 Werner Lemberg <wl@gnu.org>
7300
7301 Fix C++ compilation issue.
7302
7303 * src/tools/apinames.c (names_dump) <OUTPUT_WATCOM_LBC>: Fix
malcf4e6c152010-07-12 20:57:54 +02007304 type of `dot' variable.
Werner Lembergebfd4542010-07-11 09:28:21 +02007305
suzuki toshiyad5942022010-07-11 00:31:17 +090073062010-07-10 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7307
7308 Fix another case reported in Savannah bug #30373.
7309 Permit a face for Type1, Type42 and CFF without charmap,
7310 patch by Tor Andersson.
7311
7312 * src/type1/t1objs.c (T1_Face_Init): Reset the error if it
7313 is FT_Err_No_Unicode_Glyph_Name.
7314 * src/type42/t42objs.c (T42_Face_Init): Ditto.
7315 * src/cff/cffobjs.c (cff_face_init): Ditto.
7316
suzuki toshiyab8ca6de2010-07-09 11:36:00 +090073172010-07-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7318
suzuki toshiya840f2082010-07-09 12:26:33 +09007319 Use defined macros to set {platform,encoding}_id.
7320
7321 * src/bdf/bdfdrivr.c: Include ttnameid.h and use macros to
7322 set charmap.{platfom,encoding}_id.
7323 * src/pcf/pcfdrivr.c: Ditto.
7324 * src/winfonts/winfnt.c: Ditto.
7325 * src/type1/t1objs.c: Ditto.
7326 * src/type42/t42objs.c: Ditto.
7327 * src/cff/cffobjs.c: Ditto.
7328 * src/pfr/pfrobjs.c: Ditto.
7329
73302010-07-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7331
suzuki toshiyab8ca6de2010-07-09 11:36:00 +09007332 Fix Savannah bug #30373.
7333 Too serious check of errors by `FT_CMap_New' since 2010-07-04
7334 is fixed. Reported by Tor Andersson.
7335
7336 * include/freetype/fterrdef.h
7337 (PSnames_Err_No_Unicode_Glyph_Name): New error code to
7338 indicate the Unicode charmap synthesis failed because
7339 no Unicode glyph name is found.
7340
7341 * src/psnames/psmodule.c (ps_unicodes_init): Return
7342 PSnames_Err_No_Unicode_Glyph_Name when no Unicode glyph name
7343 is found in the font.
7344 * src/cff/cffcmap.c (cff_cmap_unicode_init): Return
7345 CFF_Err_No_Unicode_Glyph_Name when no SID is available.
7346
7347 * src/type1/t1objs.c (T1_Face_Init): Proceed if `FT_CMap_New'
7348 is failed by the lack of Unicode glyph name.
7349 * src/type42/t42objs.c (T42_Face_Init): Ditto.
7350 * src/cff/cffobjs.c (cff_face_init): Ditto.
7351
Ken Sharp603d1212010-07-09 09:55:29 +020073522010-07-09 Ken Sharp <ken.sharp@artifex.com>
7353
7354 Make ftraster.c compile in stand-alone mode with MSVC compiler.
7355
7356 * src/raster/ftmisc.h (FT_Int64) [_WIN32, _WIN64]: Fix typedef
7357 since there is no `inttypes.h' for MSVC.
7358
Werner Lemberg888cd182010-07-08 07:29:42 +020073592010-07-08 Werner Lemberg <wl@gnu.org>
7360
Werner Lemberg273e2b72012-09-18 13:27:27 +02007361 [truetype] Fix Savannah bug #30361.
Werner Lemberg888cd182010-07-08 07:29:42 +02007362
7363 * src/truetype/ttinterp.c (Ins_IUP): Fix bounds check.
7364
Werner Lembergc73e1602010-07-06 10:44:56 +020073652010-07-06 Werner Lemberg <wl@gnu.org>
7366
7367 Pacify compiler.
7368
7369 * src/cff/cffload.c (cff_index_get_pointers): Initialize
7370 `new_bytes'.
7371
Eugene A. Shatokhinb33b8562010-07-05 22:36:30 +020073722010-07-05 Eugene A. Shatokhin <spectre@ispras.ru>
7373
7374 Fix Savannah bug #27648.
7375
7376 * src/base/ftobjs.c (ft_remove_renderer, FT_Add_Module): Call
7377 `raster_done' only if we have an outline glyph format.
7378
Werner Lemberg2dc76a42010-07-05 06:40:02 +020073792010-07-05 Werner Lemberg <wl@gnu.org>
7380
Werner Lemberge8770c62010-07-05 07:45:02 +02007381 Fix Savannah bug #30030.
7382
7383 * builds/win32/*/freetype.vcproj: Add ftxf86.c.
7384
73852010-07-05 Werner Lemberg <wl@gnu.org>
7386
Werner Lemberg2dc76a42010-07-05 06:40:02 +02007387 [cff] Next try to fix `hintmask' and `cntrmask' limit check.
7388
7389 Problem reported by malc <av1474@comtv.ru>.
7390
7391 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
7392 <cff_op_hintmask>: It is possible that there is just a single byte
7393 after the `hintmask' or `cntrmask', e.g., a `return' instruction.
7394
suzuki toshiya0ae32712010-07-04 20:14:18 +090073952010-07-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7396
7397 Restrict the number of the charmaps in a rogue-compatible mode.
7398 Fix for Savannah bug #30059.
7399
7400 * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Replace `16' the
7401 minimum character code passed by a legacy rogue client by...
7402 * include/freetype/config/ftoption.h (FT_MAX_CHARMAP_CACHEABLE):
7403 This. It is undefined when FT_CONFIG_OPTION_OLD_INTERNALS is
7404 undefined (thus the rogue client compatibility is not required).
7405
7406 * src/cff/cffobjs.c (cff_face_init): Abort the automatic
7407 selection or synthesis of Unicode cmap subtable when the charmap
7408 index exceeds FT_MAX_CHARMAP_CACHEABLE.
7409 * src/sfnt/ttcmap.c (tt_face_build_cmaps): Issue error message
7410 when the charmap index exceeds FT_MAX_CHARMAP_CACHEABLE.
7411
7412 * src/base/ftobjs.c (find_unicode_charmap): When Unicode charmap
7413 is found after FT_MAX_CHARMAP_CACHEABLE, ignore it and search
7414 earlier one.
7415 (find_variant_selector_charmap): When UVS charmap is found after
7416 FT_MAX_CHARMAP_CACHEABLE, ignore it and search earlier one.
7417 (FT_Select_Charmap): When a charmap matching with requested
7418 encoding but after FT_MAX_CHARMAP_CACHEABLE, ignore and search
7419 earlier one.
7420 (FT_Set_Charmap): When a charmap matching with requested
7421 charmap but after FT_MAX_CHARMAP_CACHEABLE, ignore and search
7422 earlier one.
7423 (FT_Get_Charmap_Index): When a requested charmap is found
7424 after FT_MAX_CHARMAP_CACHEABLE, return the inverted charmap
7425 index.
7426
Werner Lemberg6bbbbc12010-07-04 07:37:56 +020074272010-07-04 Werner Lemberg <wl@gnu.org>
7428
7429 TrueType hinting is no longer patented.
7430
7431 * include/freetype/config/ftoption.h, devel/ftoption.h
7432 (TT_CONFIG_OPTION_BYTECODE_INTERPRETER): Define.
7433 (TT_CONFIG_OPTION_UNPATENTED_HINTING): Undefine.
7434
7435 * docs/CHANGES, docs/INSTALL, include/freetype/freetype.h: Updated.
7436 * docs/TRUETYPE, docs/PATENTS: Removed.
7437
suzuki toshiyaa874c7e2010-07-04 12:08:41 +090074382010-07-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7439
7440 Check error value by `FT_CMap_New'.
7441
7442 * src/cff/cffobjs.c (cff_face_init): Check error value by
7443 `FT_CMap_New'.
7444 * src/pfr/pfrobjs.c (pfr_face_init): Ditto.
7445 * src/type1/t1jobjs.c (T1_Face_Init): Ditto.
7446 * src/type42/t42jobjs.c (T42_Face_Init): Ditto.
7447
Werner Lemberge0176392010-07-03 15:31:38 +020074482010-07-03 Werner Lemberg <wl@gnu.org>
7449
7450 Make ftgrays.c compile stand-alone again.
7451
7452 * src/smooth/ftgrays.c [_STANDALONE_]: Include `stddef.h'.
7453 (FT_INT_MAX, FT_PtrDist)[_STANDALONE_]: Define.
7454
suzuki toshiyab2ea64b2010-07-02 18:16:02 +090074552010-07-02 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7456
7457 Additional fix for Savannah bug #30306.
7458
Werner Lembergce27fd52010-07-04 07:09:10 +02007459 * src/base/ftobjs.c (Mac_Read_POST_Resource): If the type of the
7460 POST fragment is 0, the segment is completely ignored. The declared
7461 length of the segment is not cared at all. According to Adobe
7462 Technical Note 5040, type 0 segment is a comment only and should not
7463 be loaded for the interpreter. Reported by Robert Święcki.
suzuki toshiyab2ea64b2010-07-02 18:16:02 +09007464
Werner Lemberg462ddb42010-07-01 11:28:43 +020074652010-07-01 Werner Lemberg <wl@gnu.org>
7466
Werner Lemberga2d225e2010-07-01 11:37:09 +02007467 [truetype] Protect against code range underflow.
7468
7469 * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Don't allow
7470 negative IP values.
7471
74722010-07-01 Werner Lemberg <wl@gnu.org>
7473
Werner Lemberg462ddb42010-07-01 11:28:43 +02007474 [truetype] Add rudimentary tracing for bytecode instructions.
7475
7476 * src/truetype/ttinterp.c (opcode_name) [FT_DEBUG_LEVEL_TRACE]: New
7477 array.
7478 (TT_RunIns): Trace opcodes.
7479
Werner Lemberg6305b862010-06-30 18:24:33 +020074802010-06-30 Werner Lemberg <wl@gnu.org>
7481
Werner Lemberg273e2b72012-09-18 13:27:27 +02007482 [smooth] Fix Savannah bug #30263.
Werner Lemberg6305b862010-06-30 18:24:33 +02007483
7484 * src/smooth/ftgrays.c (gray_render_span): Use cast to `unsigned
7485 int' to avoid integer overflow.
7486
7487 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use smaller
7488 threshold values for `width' and `height'. This is not directly
7489 related to the bug fix but makes sense anyway.
7490
suzuki toshiyaf29f7412010-07-01 17:31:03 +090074912010-07-01 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7492
suzuki toshiya5ef20c82010-07-01 18:39:04 +09007493 Initial fix for Savannah bug #30306.
7494
Werner Lembergce27fd52010-07-04 07:09:10 +02007495 * src/base/ftobjs.c (Mac_Read_POST_Resource): Check `rlen', the
7496 length of fragment declared in the POST fragment header, and prevent
7497 an underflow in length calculation. Some fonts set the length to
Werner Lemberg297ff852010-10-03 20:22:23 +02007498 zero in spite of the existence of a following 16bit `type'.
Werner Lembergce27fd52010-07-04 07:09:10 +02007499 Reported by Robert Święcki.
suzuki toshiya5ef20c82010-07-01 18:39:04 +09007500
75012010-07-01 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7502
suzuki toshiyaf29f7412010-07-01 17:31:03 +09007503 Additional fix for Savannah bug #30248 and #30249.
7504
Werner Lembergce27fd52010-07-04 07:09:10 +02007505 * src/base/ftobjs.c (Mac_Read_POST_Resource): Check the buffer size
7506 during gathering PFB fragments embedded in LaserWriter PS font for
7507 Macintosh. Reported by Robert Święcki.
suzuki toshiyaf29f7412010-07-01 17:31:03 +09007508
Werner Lemberg0ae6cf22010-06-30 10:26:48 +020075092010-06-30 Alexei Podtelezhnikov <apodtele@gmail.com>
7510
7511 Minor optimizations by avoiding divisions.
7512
7513 * src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning):
7514 Replace divisions with multiplication in comparisons.
7515
Werner Lembergae425e52010-06-29 12:31:08 +020075162010-06-29 Werner Lemberg <wl@gnu.org>
7517
7518 Fix minor tracing issues.
7519
7520 * src/cff/cffgload.c, src/truetype/ttgload.c: Adjust tracing levels.
7521
Werner Lemberge9f0cdb2010-06-27 12:34:19 +020075222010-06-27 Werner Lemberg <wl@gnu.org>
7523
Werner Lemberg18b552f2010-06-27 15:41:02 +02007524 [cff] Really fix `hintmask' and `cntrmask' limit check.
7525
7526 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
7527 <cff_op_hintmask>: Fix thinko and handle tracing also.
7528
75292010-06-27 Werner Lemberg <wl@gnu.org>
7530
Werner Lemberg8bebaa72010-06-27 15:10:15 +02007531 Fix valgrind warning.
7532
7533 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Initialize
7534 `result' array.
7535
75362010-06-27 Werner Lemberg <wl@gnu.org>
7537
Werner Lemberg4f7851e2010-06-27 13:03:54 +02007538 [cff] Fix memory leak.
7539
7540 * src/cff/cffgload.c (cff_operator_seac): Free charstrings even in
7541 case of errors.
7542
75432010-06-27 Werner Lemberg <wl@gnu.org>
7544
Werner Lemberge9f0cdb2010-06-27 12:34:19 +02007545 [cff] Protect against invalid `hintmask' and `cntrmask' operators.
7546
7547 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
7548 <cff_op_hintmask>: Ensure that we don't exceed `limit' while parsing
7549 the bit masks of the `hintmask' and `cntrmask' operators.
7550
Werner Lemberg7d911732010-06-26 09:29:51 +020075512010-06-26 Werner Lemberg <wl@gnu.org>
7552
Werner Lemberg1c70fcb2010-06-27 00:43:23 +02007553 Fix PFR change 2010-06-24.
7554
7555 * src/pfr/pfrgload.c (pfr_glyph_load_simple): Really protect against
7556 invalid indices.
7557
75582010-06-26 Werner Lemberg <wl@gnu.org>
7559
Werner Lemberg91ea0bf2010-06-26 22:46:38 +02007560 Improve PFR tracing messages.
7561
7562 * src/pfr/pfrgload.c (pfr_glyph_load_rec): Emit tracing messages for
7563 simple and compound glyph offsets.
7564
75652010-06-26 Werner Lemberg <wl@gnu.org>
7566
Werner Lemberg82ad8ab22010-06-26 09:45:41 +02007567 Fix last PFR change.
7568
7569 * src/pfr/pfrobjs.c (pfr_face_init): Fix rejection logic.
7570
75712010-06-26 Werner Lemberg <wl@gnu.org>
7572
Werner Lemberg273e2b72012-09-18 13:27:27 +02007573 [sfnt] Fix Savannah bug #30262.
Werner Lemberg7d911732010-06-26 09:29:51 +02007574
7575 * src/sfnt/ttload.c (tt_face_load_maxp): Limit `maxComponentDepth'
7576 arbitrarily to 100 to avoid stack exhaustion.
7577
75782010-06-26 Werner Lemberg <wl@gnu.org>
Werner Lemberge23ba912010-06-25 21:55:14 +02007579
Werner Lemberg75787c12010-06-26 09:24:08 +02007580 Add some memory checks (mainly for debugging).
7581
7582 * src/base/ftstream.c (FT_Stream_EnterFrame): Exit with error
7583 if the frame size is larger than the stream size.
7584
7585 * src/base/ftsystem.c (ft_ansi_stream_io): Exit with error if
7586 seeking a position larger than the stream size.
7587
75882010-06-25 Werner Lemberg <wl@gnu.org>
7589
Werner Lemberg273e2b72012-09-18 13:27:27 +02007590 [pfr] Fix Savannah bug #30261.
Werner Lembergea5baba2010-06-25 22:44:37 +02007591
7592 * src/pfr/pfrobjs.c (pfr_face_init): Reject fonts which contain
7593 neither outline nor bitmap glyphs.
7594
75952010-06-25 Werner Lemberg <wl@gnu.org>
7596
Werner Lemberg273e2b72012-09-18 13:27:27 +02007597 [cff] Fix Savannah bug #30254.
Werner Lemberge23ba912010-06-25 21:55:14 +02007598
7599 * src/cff/cffload.c (cff_index_get_pointers): Do sanity check for
7600 first offset also.
7601
suzuki toshiyac69891a2010-06-25 09:02:18 +090076022010-06-25 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7603
7604 Initial fix for Savannah bug #30248 and #30249.
7605
7606 * src/base/ftobjs.c (Mac_Read_POST_Resource): Check the error during
7607 reading a PFB fragment embedded in LaserWriter PS font for Macintosh.
Werner Lembergce27fd52010-07-04 07:09:10 +02007608 Reported by Robert Święcki.
suzuki toshiyac69891a2010-06-25 09:02:18 +09007609
Werner Lemberg6fc12942010-06-24 20:20:26 +020076102010-06-24 Werner Lemberg <wl@gnu.org>
7611
Werner Lemberg273e2b72012-09-18 13:27:27 +02007612 [pcf] Fix Savannah bug #30247.
Werner Lemberg6fc12942010-06-24 20:20:26 +02007613
7614 * src/pcf/pcfread.c (pcf_get_metrics): Disallow (invalid) fonts with
7615 zero metrics.
7616
Graham Ashere419f482010-06-24 12:50:46 +020076172010-06-24 Graham Asher <graham.asher@btinternet.com>
7618
7619 * src/smooth/ftgrays.c (gray_render_cubic): Fix algorithm.
7620 The previous version was too aggressive, as demonstrated in
7621 http://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00020.html.
7622
Werner Lembergb21d7bc2010-06-24 07:40:49 +020076232010-06-24 Werner Lemberg <wl@gnu.org>
7624
Werner Lembergf765e442010-06-24 10:34:29 +02007625 */*: Use module specific error names where appropriate.
7626
76272010-06-24 Werner Lemberg <wl@gnu.org>
7628
Werner Lemberg273e2b72012-09-18 13:27:27 +02007629 [sfnt] Fix Savannah bug #30236.
Werner Lemberg8b1c34d2010-06-24 08:48:10 +02007630
7631 * src/sfnt/ttcmap.c (tt_face_build_cmaps): Improve check for pointer
7632 to `cmap_table'.
7633
76342010-06-24 Werner Lemberg <wl@gnu.org>
7635
Werner Lemberg273e2b72012-09-18 13:27:27 +02007636 [pfr] Fix Savannah bug #30235.
Werner Lemberg3cf87f42010-06-24 08:20:56 +02007637
7638 * src/pfr/pfrgload.c (pfr_glyph_load_simple): Protect against
7639 invalid indices if there aren't any coordinates for indexing.
7640
76412010-06-24 Werner Lemberg <wl@gnu.org>
7642
Werner Lembergb21d7bc2010-06-24 07:40:49 +02007643 [bdf]: Font properties are optional.
7644
7645 * src/bdf/bdflib.c (_bdf_readstream): Use special error code to
7646 indicate a redo operation.
7647 (_bdf_parse_start): Handle `CHARS' keyword here too and pass current
7648 input line to `_bdf_parse_glyph'.
7649
Werner Lembergfb690292010-06-23 10:00:52 +020076502010-06-23 Werner Lemberg <wl@gnu.org>
7651
Werner Lemberg273e2b72012-09-18 13:27:27 +02007652 [bdf] Fix Savannah bug #30220.
Werner Lembergfb690292010-06-23 10:00:52 +02007653
7654 * include/freetype/fterrdef.h
7655 (BDF_Err_Missing_Fontboundingbox_Field): New error code.
7656
7657 * src/bdf/bdflib.c (_bdf_parse_start): Check for missing
7658 `FONTBOUNDINGBOX' field.
7659 Avoid memory leak if there are multiple `FONT' lines (which is
7660 invalid but doesn't hurt).
7661
Werner Lembergddc4b132010-06-21 09:28:32 +020076622010-06-21 Werner Lemberg <wl@gnu.org>
7663
Werner Lemberg273e2b72012-09-18 13:27:27 +02007664 [pfr] Fix Savannah bug #30168.
Werner Lembergddc4b132010-06-21 09:28:32 +02007665
7666 * src/pfr/pfrgload.c (pfr_glyph_load_compound): Limit the number of
7667 subglyphs to avoid endless recursion.
7668
Werner Lemberg90b07bd2010-06-20 16:27:36 +020076692010-06-20 Werner Lemberg <wl@gnu.org>
7670
Werner Lemberg273e2b72012-09-18 13:27:27 +02007671 [psaux] Fix Savannah bug #30145.
Werner Lemberg90b07bd2010-06-20 16:27:36 +02007672
7673 * src/psaux/psobjs.c (t1_builder_add_contour): Protect against
7674 `outline == NULL' which might happen in invalid fonts.
7675
Werner Lembergf4c94d42010-06-19 16:08:31 +020076762010-06-19 Werner Lemberg <wl@gnu.org>
7677
Werner Lemberg273e2b72012-09-18 13:27:27 +02007678 [bdf] Fix Savannah bug #30135.
Werner Lembergf4c94d42010-06-19 16:08:31 +02007679
7680 * src/bdf/bdflib.c (_bdf_list_join): Don't modify value in static
7681 string `empty'.
7682 (_bdf_parse_glyph): Avoid memory leak in case of error.
7683
Werner Lemberg5d86cdc2010-06-15 08:29:30 +020076842010-06-15 Werner Lemberg <wl@gnu.org>
7685
Werner Lemberg273e2b72012-09-18 13:27:27 +02007686 [autofit] Fix Savannah bug #30108.
Werner Lemberg5d86cdc2010-06-15 08:29:30 +02007687
7688 * src/autofit/afglobal.c (af_face_globals_compute_script_coverage):
7689 Properly mask AF_DIGIT bit in comparison.
7690
Werner Lemberg36241102010-06-11 23:00:22 +020076912010-06-11 Werner Lemberg <wl@gnu.org>
7692
Werner Lemberg273e2b72012-09-18 13:27:27 +02007693 [pshinter] Fix Savannah bug #30106.
Werner Lemberg8d227462010-06-12 01:32:20 +02007694
7695 Point numbers for FreeType's implementation of hinting masks are
7696 collected before the final number of points of a glyph has been
7697 determined; in particular, the code for handling the `endchar'
7698 opcode can reduce the number of points.
7699
7700 * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Assure that
7701 `end_point' is not larger than `glyph->num_points'.
7702
77032010-06-11 Werner Lemberg <wl@gnu.org>
7704
Werner Lemberg36241102010-06-11 23:00:22 +02007705 [cff]: Improve debugging output.
7706
7707 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
7708 <cff_op_hintmask>: Implement it.
7709
Graham Asher7fb3ef62010-06-10 08:10:57 +020077102010-06-10 Graham Asher <graham.asher@btinternet.com>
7711
7712 ftgrays: Speed up rendering of small cubic splines.
7713
7714 * src/smooth/ftgrays.c (gray_render_cubic): Implement new,
7715 simplified algorithm to find out whether the spline can be replaced
7716 with two straight lines. See this thread for more:
7717
7718 http://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00000.html
7719
Werner Lemberg7d3d2cc2010-06-09 09:14:09 +020077202010-06-09 Werner Lemberg <wl@gnu.org>
7721
Werner Lemberg273e2b72012-09-18 13:27:27 +02007722 [cff] Fix Savannah bug #30082.
Werner Lemberg7d3d2cc2010-06-09 09:14:09 +02007723
7724 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
7725 <cff_op_callothersubr>: Protect against stack underflow.
7726
Werner Lemberga4124bf2010-06-08 09:21:39 +020077272010-06-08 Werner Lemberg <wl@gnu.org>
7728
Werner Lemberg273e2b72012-09-18 13:27:27 +02007729 [cff] Fix Savannah bug #30053.
Werner Lemberga4124bf2010-06-08 09:21:39 +02007730
Werner Lemberg7d3d2cc2010-06-09 09:14:09 +02007731 * src/cff/cffparse.c (cff_parse_real): Handle border case where
Werner Lemberga4124bf2010-06-08 09:21:39 +02007732 `fraction_length' has value 10.
7733
Werner Lembergd0871992010-06-07 08:46:01 +020077342010-06-07 Werner Lemberg <wl@gnu.org>
7735
7736 Fix Savannah bug #30052.
7737 This bug has been introduced with commit 2415cbf3.
7738
7739 * src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Protect
7740 against endless loop in case of corrupted font header data.
7741
Werner Lembergc217bf12010-05-26 16:16:34 +020077422010-05-26 Werner Lemberg <wl@gnu.org>
7743
7744 Remove unused variable.
7745 Found by Graham.
7746
7747 * src/autofit/afhints.c (af_glyph_hints_reload): Remove unused
7748 variable `first' in first block.
7749
Werner Lemberg09344382010-05-22 07:43:22 +020077502010-05-22 Werner Lemberg <wl@gnu.org>
7751
Werner Lemberge30de292010-05-22 20:03:41 +02007752 Fix various memory problems found by linuxtesting.org.
7753
7754 * src/base/ftgxval.c (FT_TrueTypeGX_Free, FT_ClassicKern_Free),
7755 src/base/ftotval.c (FT_OpenType_Free), src/base/ftpfr.c
7756 (ft_pfr_check): Check `face'.
7757
7758 * src/base/ftobjs.c (FT_Get_Charmap_Index): Check `charmap' and
7759 `charmap->face'.
7760 (FT_Render_Glyph): Check `slot->face'.
7761 (FT_Get_SubGlyph_Info): Check `glyph->subglyphs'.
7762
77632010-05-22 Werner Lemberg <wl@gnu.org>
7764
Werner Lemberg09344382010-05-22 07:43:22 +02007765 autofit: Remove dead code.
7766 Suggested by Graham.
7767
7768 * src/autofit/afhints.c (af_glyph_hints_compute_inflections):
7769 Removed.
7770 (af_glyph_hints_reload): Remove third argument.
7771 Update all callers.
7772
Bram Tassynsd7cc8f42010-05-21 10:14:58 +020077732010-05-21 Bram Tassyns <bramt@enfocus.be>
7774
Werner Lemberg273e2b72012-09-18 13:27:27 +02007775 [cff] Fix Savannah bug #27987.
Bram Tassynsd7cc8f42010-05-21 10:14:58 +02007776
7777 * src/cff/cffobjs.c (remove_subset_prefix): New function.
7778 (cff_face_init): Use it to adjust `cffface->family_name'.
7779
Werner Lemberg6da023d2010-05-20 15:38:00 +020077802010-05-20 Werner Lemberg <wl@gnu.org>
7781
7782 TrueType: Make FreeType ignore maxSizeOfInstructions in `maxp'.
7783
7784 Acroread does the same.
7785
7786 * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Call
7787 `Update_Max' to adjust size of instructions array if necessary and
7788 add a rough safety check.
7789
7790 (load_truetype_glyph): Save `loader->byte_len' before recursive
7791 call.
7792
7793 * src/truetype/ttinterp.h, src/truetype/ttinterp.c (Update_Max):
7794 Declare it as FT_LOCAL.
7795
Hongbo Ni236fc8e2010-05-18 11:00:39 +020077962010-05-18 Hongbo Ni <hongbo@njstar.com>
7797
Bram Tassynsd7cc8f42010-05-21 10:14:58 +02007798 Apply Savannah patch #7196.
Hongbo Ni236fc8e2010-05-18 11:00:39 +02007799
7800 * src/cff/cffgload.c (cff_slot_load): Prevent crash if CFF subfont
7801 index is out of range.
7802
Werner Lemberg4c669242010-05-11 07:24:28 +020078032010-05-11 Werner Lemberg <wl@gnu.org>
7804
7805 * docs/formats.txt: Give pointer to PCF documentation.
7806 Information provided by Alan Coopersmith
7807 <alan.coopersmith@oracle.com>.
7808
Ken Sharp88169b12010-05-11 00:03:33 +020078092010-05-10 Ken Sharp <ken.sharp@artifex.com>
Ken Sharp54e63752010-04-14 23:38:35 +02007810
Werner Lemberg273e2b72012-09-18 13:27:27 +02007811 [psaux] Fix Savannah bug #29846.
Ken Sharp88169b12010-05-11 00:03:33 +02007812
7813 Previously we discovered fonts which used `setcurrentpoint' to set
7814 the initial point of a contour to 0,0. This caused FreeType to
7815 raise an error, because the `setcurrentpoint' operator is only
7816 supposed to be used with the results from an OtherSubr subroutine.
7817
7818 This was fixed by simply ignoring the error and carrying on.
7819
7820 Now we have found a font which uses setcurrentpoint to actually
7821 establish a non-zero point for a contour during the course of a
7822 glyph program. FWIW, these files may be produced by an application
7823 called `Intaglio' on the Mac, when converting TrueType fonts to
7824 Type 1.
7825
7826 The fix allows the new invalid behaviour, the old invalid behaviour
7827 and real proper usage of the operator to work the same way as Adobe
7828 interpreters apparently do.
7829
Werner Lemberg273e2b72012-09-18 13:27:27 +02007830 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Make
7831 `setcurrentpoint' use the top two elements of the stack to establish
7832 unconditionally the current x and y coordinates.
Ken Sharp88169b12010-05-11 00:03:33 +02007833
7834 Make the `flex' subroutine handling (OtherSubr 0) put the current
7835 x,y coordinates onto the stack, instead of two dummy uninitialised
7836 values.
7837
78382010-04-14 Ken Sharp <ken.sharp@artifex.com>
Werner Lembergce27fd52010-07-04 07:09:10 +02007839
Werner Lemberg273e2b72012-09-18 13:27:27 +02007840 [psaux] Fix Savannah bug #29444.
Ken Sharp54e63752010-04-14 23:38:35 +02007841
7842 * src/psaux/psobjs.c (t1_builder_start_point): Accept (invalid)
7843 `lineto' immediately after `hsbw', in accordance with Acrobat, GS,
7844 and others.
7845
Michał Cichoń08e254e2010-04-14 21:25:30 +020078462010-04-14 Michał Cichoń <thedmd@artifexmundi.com>
7847
Werner Lemberg273e2b72012-09-18 13:27:27 +02007848 [psaux] Fix Savannah bug #27999.
Michał Cichoń08e254e2010-04-14 21:25:30 +02007849
7850 * src/cache/ftcmanag.c (FTC_Manager_RemoveFaceID): Only remove
7851 selected entry, not all.
7852
Jonathan Kew25e742c2010-04-06 16:42:56 +020078532010-04-06 Jonathan Kew <jfkthame@gmail.com>
7854
Werner Lemberg273e2b72012-09-18 13:27:27 +02007855 [truetype] Add overflow check to `fvar' table.
Jonathan Kew25e742c2010-04-06 16:42:56 +02007856
7857 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Check axis and instance
7858 count.
7859
Ken Sharp7baeeaf2010-04-05 11:19:38 +020078602010-04-05 Ken Sharp <ken.sharp@artifex.com>
7861
Werner Lemberg273e2b72012-09-18 13:27:27 +02007862 [raster] Fix Savannah bug #29335.
Ken Sharp7baeeaf2010-04-05 11:19:38 +02007863
7864 * src/raster/ftraster.c (Line_Up): Use slow multiplication to
7865 prevent overflow. This shouldn't have any serious impact on speed,
7866 however.
7867
Werner Lemberg460d23f2010-04-05 08:46:26 +020078682010-04-05 Werner Lemberg <wl@gnu.org>
7869
7870 Add new function `FT_Library_SetLcdFilterWeights'.
7871
7872 This is based on code written by Lifter
7873 <http://unixforum.org/index.php?showuser=11691>. It fixes
7874 FreeDesktop bug #27386.
7875
7876 * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights): New
7877 function.
7878
7879 * include/freetype/ftlcdfil.h: Updated.
7880
7881 * docs/CHANGES: Updated.
7882
John Tytgat8c4cce52010-04-05 08:22:22 +020078832010-04-01 John Tytgat <John.Tytgat@esko.com>
7884
Werner Lemberg273e2b72012-09-18 13:27:27 +02007885 [truetype] Fix Savannah bug #29404.
John Tytgat8c4cce52010-04-05 08:22:22 +02007886
7887 * src/truetype/ttgload.c: Revert change 2752bd1a (check on bit 1
7888 of `head' table of TrueType fonts).
7889
suzuki toshiyacef43bd2010-03-14 23:12:13 +090078902010-03-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7891
7892 Fix `multi build' for Tytgat's CFF driver improvement.
7893
7894 * src/base/cffload.h (cff_index_get_name): Added.
7895
suzuki toshiya199f04f2010-03-12 14:48:57 +090078962010-03-12 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7897
7898 Remove duplicated inclusion of `FT_OUTLINE_H' in ftobjs.c.
7899
7900 * src/base/ftobjs.c: Remove 2nd inclusion of `FT_OUTLINE_H'.
7901
Chris Liddell6c0d8812010-03-11 18:27:31 +010079022010-03-11 Chris Liddell <chris.liddell@artifex.com>
7903
Werner Lemberg273e2b72012-09-18 13:27:27 +02007904 [raster] Fix Savannah bug #27442.
Chris Liddell6c0d8812010-03-11 18:27:31 +01007905
7906 * src/raster/ftraster.c (ft_black_reset): Fix `buffer_size'.
7907
Werner Lemberg763300a2010-03-09 17:01:21 +010079082010-03-09 Werner Lemberg <wl@gnu.org>
7909
Werner Lemberg273e2b72012-09-18 13:27:27 +02007910 [cff] Remove unused variable.
Werner Lemberg763300a2010-03-09 17:01:21 +01007911 Reported by Graham.
7912
7913 * src/cff/cffparse.c (cff_parse_real): Remove `rest'.
7914
Werner Lemberg03b3da82010-03-02 13:00:55 +010079152010-03-02 John Tytgat <John.Tytgat@esko.com>
7916
Werner Lemberg273e2b72012-09-18 13:27:27 +02007917 [cff] Improve CFF string (especially glyphname) lookup performance.
Werner Lemberg03b3da82010-03-02 13:00:55 +01007918
7919 We do this by avoiding memory allocation and file I/O. This is
7920 Savannah patch #7104.
7921
7922 * src/cff/cfftypes.h: Include PS cmaps service and
7923 FT_INTERNAL_POSTSCRIPT_HINTS_H.
7924 (CFF_SubFontRec): Remove `num_local_subrs'.
7925 (CFF_FontRec): Add `num_strings', `strings', and `string_pool'
7926 fields.
7927 Remove `string_index' and `num_global_subrs' fields.
7928 Use real types instead of `void' for `pshinter' and `psnames' fields.
7929
7930 * src/cff/cffload.c: Don't include PS cmaps service.
7931 (cff_index_get_pointers): Add `pool' parameter which allows to
7932 insert an extra NUL character for each String INDEX entry.
7933 (cff_index_get_name): Make it a local function.
7934 (cff_index_get_string): New function.
7935 (cff_subfont_load): Updated.
7936 (cff_font_load): Initialize `num_strings', `strings', and
7937 `string_pool' fields in the `CFF_FontRec' structure.
7938 (cff_index_get_sid_string): Use `cff_index_get_string' instead of
7939 `cff_index_get_name'.
7940 (cff_font_done): Updated.
7941
7942 * src/cff/cffload.h: Don't include PS cmaps service.
7943 (cff_index_get_string): Added.
7944 (cff_index_get_sid_string): Updated.
7945
7946 * src/cff/cffobjs.c: Don't include PS cmaps service and
7947 FT_INTERNAL_POSTSCRIPT_HINTS_H.
7948 (cff_size_get_globals_funcs, cff_slot_init): Updated.
7949 (cff_face_init): Follow `cff_index_get_name',
7950 `cff_index_get_string', and `cff_index_get_sid_string' changes.
7951
7952 * src/cff/cffcmap.c (cff_sid_free_glyph_name): Removed.
7953 (cff_sid_to_glyph_name): Use `cff_index_get_cid_string'.
7954 (cff_cmap_unicode_init): Updated.
7955
7956 * src/cff/cffdrivr.c: Don't include PS cmap service.
7957 (cff_get_glyph_name): Avoid unnecessary lookup for POSTSCRIPT_CMAPS
7958 service.
7959 (cff_get_glyph_name, cff_ps_get_font_info, cff_get_ros): Follow API
7960 `cff_index_get_sid_string' change.
7961 (cff_get_name_index): Use `cff_index_get_string' instead of
7962 `cff_index_get_name'.
7963
7964 * src/cff/cffgload.c: Don't include FT_INTERNAL_POSTSCRIPT_HINTS_H.
7965 (cff_decoder_init, cff_decoder_prepare): Updated.
7966
Werner Lemberge0717d42010-02-27 08:10:11 +010079672010-02-27 Werner Lemberg <wl@gnu.org>
7968
7969 Simplify code.
7970 Suggested by Behdad.
7971
7972 * src/base/ftobjs.c (FT_Get_First_Char): Don't use a loop since we
7973 call FT_Get_Next_Char anyway if necessary.
7974
Behdad Esfahbod2415cbf2010-02-26 23:48:53 +010079752010-02-26 Behdad Esfahbod <behdad@behdad.org>
7976
7977 Improve handling of invalid glyph indices in char->index functions.
7978
7979 * src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Use a
7980 loop.
7981
Chris Liddell10cf3882010-02-18 17:09:30 +010079822010-02-18 Chris Liddell <chris.liddell@artifex.com>
7983
Werner Lemberg273e2b72012-09-18 13:27:27 +02007984 [truetype] Fix Savannah bug #28905.
Chris Liddell10cf3882010-02-18 17:09:30 +01007985
7986 Initialize phantom points before calling the incremental interface
7987 to update glyph metrics.
7988
7989 * src/truetype/ttgload.c (tt_get_metrics_incr_overrides)
7990 [FT_CONFIG_OPTION_INCREMENTAL]: New function, split off from...
7991 (tt_get_metrics): This.
7992 Updated.
7993 (load_truetype_glyph): Use tt_get_metrics_incr_overrides.
7994
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00007995----------------------------------------------------------------------------
7996
Werner Lemberg53c0cb52013-01-11 08:29:22 +01007997Copyright 2010-2013 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00007998David Turner, Robert Wilhelm, and Werner Lemberg.
7999
8000This file is part of the FreeType project, and may only be used, modified,
8001and distributed under the terms of the FreeType project license,
8002LICENSE.TXT. By continuing to use, modify, or distribute this file you
8003indicate that you have read the license and understand and accept it
8004fully.
8005
8006
8007Local Variables:
8008version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00008009coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00008010End: