[License] apply SPDX identifier FTL
[platform/upstream/freetype2.git] / ChangeLog.24
1 2013-05-08  Werner Lemberg  <wl@gnu.org>
2
3         * Version 2.4.12 released.
4         ==========================
5
6
7         Tag sources with `VER-2-4-12'.
8
9         * docs/VERSION.DLL: Update documentation and bump version number to
10         2.4.12.
11
12         * README, Jamfile (RefDoc),
13         builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
14         builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
15         builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
16         builds/win32/visualc/freetype.dsp,
17         builds/win32/visualc/freetype.vcproj,
18         builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
19         builds/win32/visualce/freetype.vcproj,
20         builds/win32/visualce/index.html,
21         builds/wince/vc2005-ce/freetype.vcproj,
22         builds/wince/vc2005-ce/index.html,
23         builds/wince/vc2008-ce/freetype.vcproj,
24         builds/wince/vc2008-ce/index.html: s/2.4.11/2.4.12/, s/2411/2412/.
25
26         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 12.
27
28         * builds/unix/configure.raw (version_info): Set to 16:1:10.
29
30 2013-05-08  Werner Lemberg  <wl@gnu.org>
31
32         * docs/CHANGES: Updated.
33
34 2013-05-08  Werner Lemberg  <wl@gnu.org>
35
36         * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Typo.
37
38 2013-05-05  Werner Lemberg  <wl@gnu.org>
39
40         Synchronize `ftconfig.h'.
41
42         * builds/unix/ftconfig.in: Updated.
43
44 2013-05-05  Werner Lemberg  <wl@gnu.org>
45
46         Fix compilation with C++.
47
48         * src/base/md5.c (body): Use proper cast.
49
50 2013-05-05  Werner Lemberg  <wl@gnu.org>
51
52         Fix 64bit compilation issues.
53
54         * include/freetype/config/ftconfig.h [FT_LONG64]: Typedef
55         `FT_Int64' here.
56
57         * src/base/ftcalc.c: Remove typedef of `FT_Int64'.
58         (FT_DivFix): Fix cast.
59         * src/base/fttrigon.c: Remove typedef of `FT_Int64'.
60
61 2013-05-05  Werner Lemberg  <wl@gnu.org>
62
63         [raster] Fix clang issues.
64
65         Fix suggested by <octoploid@yandex.com>.
66
67         * src/raster/ftraster.c (ULong): New typedef.
68         (SCALED): Add proper cast.
69
70 2013-05-04  Werner Lemberg  <wl@gnu.org>
71
72         Fix clang fixes.
73
74         * src/base/fttrigon.c (ft_trig_prenorm, FT_Vector_Rotate): Use
75         correct types.
76
77         * src/cff/cf2intrp.c (cf2_interpT2CharString) <default>: Force
78         unsigned for computations.
79         * src/cff/cffgload.c (cff_decoder_parse_charstrings): Ditto.
80         * src/cff/cffparse.c (cff_parse_integer): Ditto.
81
82         * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto.
83
84 2013-05-04  Werner Lemberg  <wl@gnu.org>
85
86         [cff] Make Adobe CFF engine work correctly on 64bit hosts.
87
88         Reported by numerous people on the `freetype-devel' list.  Without
89         this fix, glyphs aren't properly aligned on a common baseline.
90
91         On 64bit systems, `FT_Pos' expands to `long int', having a width of
92         64bit.  `CF2_Fixed' expands to `int' which is normally 32bit wide on
93         64bit hosts also.  Wrong casts filled up the blues arrays with
94         incorrect values.  Note that all blues values are accessed with the
95         `cf2_blueToFixed' macro which handles the 64bit to 32bit conversion.
96
97         * src/cff/cf2ft.h (cf2_getBlueValues, cf2_getOtherBlues,
98         cf2_getFamilyBlues, cf2_getFamilyOtherBlues): Use `FT_Pos' for
99         `data', not `CF2_Fixed'.
100         * src/cff/cf2ft.c (cf2_getBlueValues, cf2_getOtherBlues,
101         cf2_getFamilyBlues, cf2_getFamilyOtherBlues): Updated.
102         * src/cff/cf2blues.c (cf2_blues_init): Updated.
103
104 2013-05-04  Werner Lemberg  <wl@gnu.org>
105
106         More fixes for clang's `sanitize' feature.
107
108         * src/base/ftcalc.c (FT_DivFix): Use unsigned values for
109         computations which use the left shift operator and convert to signed
110         as the last step.
111         * src/base/fttrigon.c (ft_trig_prenorm, FT_Vector_Rotate,
112         FT_Vector_Length, FT_Vector_Polarize): Ditto.
113
114         * src/cff/cffgload.c (cff_decoder_parse_charstrings): Simplify.
115         * src/cff/cffload.c (cff_subfont_load): Fix constant.
116         * src/cff/cffparse.c (cff_parse_integer, cff_parse_real, do_fixed,
117         cff_parse_fixed_dynamic): Use unsigned values for computations which
118         use the left shift operator and convert to signed as the last step.
119
120         * src/cid/cidload.c (cid_get_offset): Ditto.
121
122         * src/psaux/psconv.c (PS_Conv_ToFixed): Ditto.
123         * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto.
124
125         * src/truetype/ttinterp.c (TT_MulFix14, TT_DotFix14): Ditto.
126
127 2013-05-04  Werner Lemberg  <wl@gnu.org>
128
129         Fix errors reported by clang's `sanitize' feature.
130
131         * include/freetype/internal/ftstream.h: Simplify and fix integer
132         extraction macros.
133         (FT_INT8_, FT_BYTE_I16, FT_BYTE_I32, FT_INT8_I16, FT_INT8_I32,
134         FT_INT8_I32, FT_INT8_U32): Removed.
135         (FT_PEEK_SHORT, FT_PEEK_LONG, FT_PEEK_OFF3, FT_PEEK_SHORT_LE,
136         FT_PEEK_LONG_LE, FT_PEEK_OFF3_LE): Use unsigned values for
137         computations and convert to signed as the last step.
138
139         * src/cff/cf2fixed.h (cf2_intToFixed, cf2_fixedToInt,
140         cf2_fracToFixed): Avoid shifts of negative values.
141         (cf2_intToFrac, cf2_fixedToFrac, cf2_fixedTo26Dot6): Removed,
142         unused.
143
144         * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdEXTENDEDNMBR,
145         default>: Use unsigned values for computations and convert to signed
146         as the last step.
147         Use proper types in tracing messages.
148
149         * src/cff/cffgload.c (cff_decoder_parse_charstrings): Use unsigned
150         values for computation of operands and convert to signed as the last
151         step.
152         Use proper type in tracing message.
153
154 2013-05-03  Werner Lemberg  <wl@gnu.org>
155
156         * src/cff/cf2blues.c: Remove dead code.
157
158 2013-05-02  Chris Liddell  <chris.liddell@artifex.com>
159
160         * src/cff/cffgload.c: Include FT_CFF_DRIVER_H.
161
162 2013-04-27  Werner Lemberg  <wl@gnu.org>
163
164         * docs/CHANGES: Updated.
165         * README: Improved.
166
167 2013-04-13  Werner Lemberg  <wl@gnu.org>
168
169         [cff] Add a new Type 2 interpreter and hinter.
170
171         This work, written by Dave Arnold <darnold@adobe.com> and fully
172         integrated into FreeType by me, is a donation by Adobe in
173         collaboration with Google.  It is vastly superior to the old CFF
174         engine, and it will replace it soon.  Right now, it is still off by
175         default, and you have to explicitly select it using the new
176         `hinting-engine' property of the cff driver.
177
178         For convenience, (most of) the new files are committed separately.
179
180         * include/freetype/config/ftheader.h (FT_CFF_DRIVER_H): New macro.
181         * include/freetype/ftcffdrv.h: New file to access CFF driver
182         properties.
183         * include/freetype/fterrdef.h (FT_Err_Glyph_Too_Big): New error
184         code.
185         * include/freetype/internal/fttrace.h: Add `cf2blues', `cf2hints',
186         and `cf2interp'.
187
188         * src/cff/cffgload.h (CFF_SubFont): New member `current_subfont'.
189         * src/cff/cffobjs.h (CFF_DriverRec): New members `hinting_engine'
190         and `no_stem_darkening'.
191         * src/cff/cfftypes.h (CFF_FontRec): New member `cf2_instance'.
192
193         * src/cff/cff.c: Include new files.
194         * src/cff/cffdrivr.c (cff_property_set, cff_property_get): Handle
195         `hinting-engine' and `no-stem-darkening' properties (only the Adobe
196         engine listens to them).
197         * src/cff/cffgload.c: Include `cf2ft.h'.
198         (cff_decoder_prepare): Initialize `current_subfont'.
199         (cff_build_add_point): Handle Adobe engine which uses 16.16
200         coordinates.
201         (cff_slot_load): Handle FT_LOAD_NO_SCALE and FT_LOAD_NO_HINTING
202         separately.
203         Choose rendering engine based on `hinting_engine' property.
204         * src/cff/cffload.c (cff_font_done): Call finalizer of the Adobe
205         engine.
206         * src/cff/cffobjs.c: Include FT_CFF_DRIVER_H.
207         (cff_driver_init): Set default property values.
208
209         * src/cff/rules.mk (CFF_DRV_SRC, CFF_DRV_H): Add new files.
210
211         * src/cff/cf2*.*: New files, containing the Adobe engine.
212
213 2013-04-12  Werner Lemberg  <wl@gnu.org>
214
215         [cff] Minor code administration issues.
216
217         * src/cff/cffgload.c (check_points): Rename to...
218         (cff_check_points): ...this and make it FT_LOCAL.
219         (cff_builder_add_point, cff_builder_add_point1,
220         cff_builder_start_point, cff_builder_close_contour,
221         cff_lookup_glyph_by_stdcharcode, cff_get_glyph_data,
222         cff_free_glyph_data): Make them FT_LOCAL.
223
224         * src/cff/cffgload.h: Updated.
225
226 2013-04-12  Werner Lemberg  <wl@gnu.org>
227
228         Add output bitmap checksums.
229
230         Use `FT2_DEBUG=bitmap:3' for tracing.
231
232         * src/base/md5.c, src/base/md5.h: New files, taken from
233
234           http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
235
236         * include/freetype/internal/fttrace.h: Add `bitmap'.
237
238         * src/base/ftobjs.c [FT_DEBUG_LEVEL_TRACE]: Include `md5.c'
239
240         (FT_Render_Glyph_Internal) [FT_DEBUG_LEVEL_TRACE]: For tracing,
241         convert resulting bitmap to a uniform format and compute a checksum.
242         Use `bitmap' category for the tracing message.
243
244         * src/base/rules.mk (BASE_H): Updated.
245
246         * docs/LICENSE.TXT: Updated.
247
248 2013-04-12  Werner Lemberg  <wl@gnu.org>
249
250         [cff] Add framework for CFF properties.
251
252         * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC7):
253         New macro.
254
255         * src/cff/cffdrivr.c: Include FT_SERVICE_PROPERTIES_H.
256         (cff_property_set, cff_property_get): New functions, still empty.
257         Define `cff_service_properties' service.
258         Update `cff_services'.
259
260         * src/cff/cffpic.h: Include FT_SERVICE_PROPERTIES_H.
261         (CFF_SERVICE_PROPERTIES_GET): New macro.
262         (CffModulePIC): Add `cff_service_properties'.
263
264 2013-04-03  Werner Lemberg  <wl@gnu.org>
265
266         [bdf] Fix Savannah bug #38589.
267
268         * src/bdf/bdflib.c (_bdf_readstream): Thinko.
269
270 2013-03-31  Werner Lemberg  <wl@gnu.org>
271
272         * configure: Use egrep, not grep.
273
274         Problem reported Mojca Miklavec <mojca.miklavec.lists@gmail.com>.
275
276 2013-03-29  Werner Lemberg  <wl@gnu.org>
277
278         * include/freetype/ftlcdfil.h: Add description of color filtering.
279
280         Based on a contribution from Antti S. Lankila <alankila@bel.fi>
281         (Savannah bug #38607).
282
283 2013-03-23  Werner Lemberg  <wl@gnu.org>
284
285         [autofit] Minor.
286
287         * src/autofit/afmodule.c (af_property_set): Typo.
288         (af_autofitter_init, af_autofitter_done): Use cast.
289
290 2013-03-21  Werner Lemberg  <wl@gnu.org>
291
292         * configure: Automatically test for `gmake' also.
293
294         Suggested by Mojca Miklavec <mojca.miklavec.lists@gmail.com>.
295
296 2013-03-21  Peter Breitenlohner  <peb@mppmu.mpg.de>
297
298         Respect CONFIG_SHELL from the environment.
299
300         Some large packages using FreeType have to use a broken (deficient)
301         /bin/sh.  The configure scripts (as generated by Autoconf) are
302         clever enough to find a better shell and put that one into the
303         environment variable CONFIG_SHELL.  If that environment variable is
304         already set the script skips the test and assumes to be already
305         running under a good shell.
306
307         * builds/unix/detect.mk: Honour CONFIG_SHELL.
308         * builds/unix/unix-def.in (SHELL): Define.
309
310 2013-03-21  Werner Lemberg  <wl@gnu.org>
311
312         Fix Savannah patch #7971.
313
314         * configure: Handle MAKE environment variable also.
315
316 2013-03-17  Werner Lemberg  <wl@gnu.org>
317
318         Fix Savannah bug #38538.
319
320         * builds/amiga/src/base/ftdebug.c, builds/win32/ftdebug.c,
321         builds/wince/ftdebug.c (FT_Throw): Add function.
322
323 2013-03-17  Werner Lemberg  <wl@gnu.org>
324
325         [raster] Remove dead code.
326
327         * src/raster/rastpic.c (ft_raster1_renderer_class_pic_init)
328         src/smooth/ftspic.c (ft_smooth_renderer_class_pic_init): Do it.
329
330 2013-03-17  Werner Lemberg  <wl@gnu.org>
331
332         * src/pshinter/pshpic.h (GET_PIC): Use correct container.
333
334 2013-03-15  Werner Lemberg  <wl@gnu.org>
335
336         * include/freetype/ftmoderr.h: Fix commit from 2013-03-11.
337
338         The previous version was not backwards compatible.  Reported by
339         Behdad.
340
341 2013-03-14  Werner Lemberg  <wl@gnu.org>
342
343         */*: Use FT_ERR_EQ, FT_ERR_NEQ, and FT_ERR where appropriate.
344
345         FT_Err_XXX and friends are no longer directly used in the source
346         code.
347
348 2013-03-14  Werner Lemberg  <wl@gnu.org>
349
350         New error management macros.
351
352         * include/freetype/fterrors.h (FT_ERR_XCAT, FT_ERR_CAT): Move to...
353         * include/freetype/fttypes.h: ... this file.
354         (FT_ERR, FT_ERR_EQ, FT_ERR_NEQ, FT_MODERR_EQ, FT_MODERR_NEQ): New
355         macros.
356
357         * include/freetype/freetype.h: Updated.
358
359 2013-03-14  Werner Lemberg  <wl@gnu.org>
360
361         */*: Use FT_Err_Ok only.
362
363         This is a purely mechanical conversion.
364
365 2013-03-14  Werner Lemberg  <wl@gnu.org>
366
367         */*: Use `FT_THROW'.
368
369         This is essentially a mechanical conversion, adding inclusion of
370         `FT_INTERNAL_DEBUG_H' where necessary, and providing the macros for
371         stand-alone compiling modes of the rasterizer modules.
372
373         To convert the remaining occurrences of FT_Err_XXX and friends it is
374         necessary to rewrite the code.  Note, however, that it doesn't harm
375         if some cases are not handled since FT_THROW is a no-op.
376
377 2013-03-13  Werner Lemberg  <wl@gnu.org>
378
379         Introduce `FT_THROW' macro.
380
381         The idea is to replace code like
382
383           return FT_Err_Foo_Bar;
384
385         or
386
387           return CFF_Err_Foo_Bar;
388
389         with
390
391           return FT_THROW( Foo_Bar );
392
393         The FT_THROW macro has two functions:
394
395           . It hides the module specific prefix.
396
397           . In debug mode, it calls the empty function `FT_Throw' which can
398             be thus used to set a breakpoint.
399
400         * include/freetype/internal/ftdebug.h (FT_THROW): New macro.
401         (FT_Throw): New prototype.
402         * src/base/ftdebug.c (FT_Throw): New function.
403
404 2013-03-12  Werner Lemberg  <wl@gnu.org>
405
406         Remove `FT_KEEP_ERR_PREFIX'.
407
408         The idea is to always have FT_ERR_PREFIX available internally.
409
410         * include/freetype/fterrors.h: Use FT2_BUILD_LIBRARY to guard
411         undefinition of FT_ERR_PREFIX
412
413         * src/gxvalid/gxverror.h, src/otvalid/otverror.h,
414         src/sfnt/sferrors.h: Updated.
415
416 2013-03-11  Werner Lemberg  <wl@gnu.org>
417
418         [gxvalid] Fix module error.
419
420         * src/gxvalid/gxverror.h (FT_ERR_BASE): Define as
421         FT_Mod_Err_GXvalid.
422         * include/freetype/ftmoderr.h: Add module error for `GXvalid'.
423
424 2013-03-11  Werner Lemberg  <wl@gnu.org>
425
426         Always use module related error codes.
427
428         * src/cff/cffobjs.c (cff_face_init), src/type1/t1objs.c
429         (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Use
430         `FT_ERROR_BASE'.
431
432         * src/type1/t1load.c (parse_encoding): Use
433         T1_Err_Unknown_File_Format.
434
435 2013-03-08  Werner Lemberg  <wl@gnu.org>
436
437         [cff] Set `linear{Hori,Vert}Advance' for embedded bitmaps also.
438
439         Problem reported by Khaled Hosny <khaledhosny@eglug.org>.
440
441         * src/cff/cffgload.c (cff_slot_load): Implement it.
442
443 2013-02-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
444
445         [base] Fix commit ab02d9e8.
446
447         * src/base/ftbbox.c (BBox_Cubic_Check): Change scaling to msb of 22.
448
449 2013-02-19  Alexei Podtelezhnikov  <apodtele@gmail.com>
450
451         [base] New bisecting BBox_Cubic_Check (disabled).
452
453         * src/base/ftbbox.c (BBox_Cubic_Check): New bisecting algorithm
454         for extremum search built around simple condition that defines
455         which half contains the extremum.
456
457 2013-02-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
458
459         [tools] Update BBox testing tool.
460
461         * src/tools/test_bbox.c: Add another cubic outline with exact BBox.
462         (REPEAT): Increase the number of benchmarking cycles.
463         (profile_outline): Tweak output formatting.
464
465 2013-02-02  Werner Lemberg  <wl@gnu.org>
466
467         Fix Savannah bug #38235.
468
469         * builds/unix/configure.raw: Don't generate `freetype-config' and
470         `freetype.pc'.
471
472         * builds/unix/unix-def.in (FT2_EXTRA_LIBS, LIBBZ2, LIBZ,
473         build_libtool_libs, ft_version): New variables to be substituted.
474         (freetype-config, freetype.pc): New rules to generate those files.
475
476         * builds/unix/freetype-config.in: Remove code for handling `rpath'.
477         The use of $rpath has been accidentally removed in a patch from
478         2009-12-22, and apparently noone has missed it since.
479         Use `%' instead of `@' as a variable substitution marker.
480         Use quotes.
481
482         * builds/unix/freetype.in: Use `%' instead of `@' as a variable
483         substitution marker.
484         Use quotes.
485
486 2013-02-07  Werner Lemberg  <wl@gnu.org>
487
488         * src/truetype/ttobjs.c (tt_size_run_prep): Reset more GS variables.
489
490         BTW, Greg agrees that the OpenType specification is missing the list
491         of GS variables which will always be reset to the default values
492         after the `prep' table has been executed.
493
494 2013-02-06  Werner Lemberg  <wl@gnu.org>
495
496         * src/truetype/ttobjs.c (tt_size_run_prep): Reset reference points.
497
498         Up to now, we simply took a snapshot of the Graphics State after the
499         `prep' table has been executed, and right before a glyph's bytecode
500         was run it got reloaded.  However, as Greg Hitchcock has told us in
501         private communication, reference points get reset to zero in the MS
502         rasterizer and we follow in due course.  While reasonable, this is
503         undocumented behaviour.
504
505         Most notably, this fixes the rendering of Arial's `x' glyph in
506         subpixel hinting mode.
507
508 2013-02-05  Werner Lemberg  <wl@gnu.org>
509
510         [truetype] A better fix for Savannah bug #38211.
511
512         * src/truetype/ttinterp.c (Ins_IP): Implement identical behaviour to
513         MS rasterizer if rp1 == rp2 (confirmed by Greg Hitchcock).
514
515 2013-02-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
516
517         [pcf] Streamline parsing of PCF encoding table.
518
519         * src/pcf/pcfread.c (pcf_get_encodings): Use simpler double for-loop.
520         Reallocate array instead of using temporary storage.
521
522 2013-02-01  Werner Lemberg  <wl@gnu.org>
523
524         Fix Savannah bug #38227.
525
526         * builds/unix/freetype-config.in: Set LC_ALL.
527
528 2013-02-01  Werner Lemberg  <wl@gnu.org>
529
530         Fix Savannah bug #38221.
531
532         This complements commit 83c0ebab.
533
534         * src/base/ftcalc.c (FT_MulDiv_No_Round): Don't enclose with
535         `TT_USE_BYTECODE_INTERPRETER'.
536
537 2013-02-01  Werner Lemberg  <wl@gnu.org>
538
539         [truetype] Fix Savannah bug #38211.
540
541         * src/truetype/ttinterp.c (Ins_IP): Make FreeType behave identical
542         to other interpreters if rp1 == rp2 (which is invalid).
543
544 2013-01-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
545
546         [base] Small optimization of BBox calculation.
547
548         * src/base/ftbbox.c (BBox_Cubic_Check): Use FT_MSB function in
549         scaling algorithm.
550
551 2013-01-26  Infinality  <infinality@infinality.net>
552
553         [truetype] Minor formatting fix.
554
555         * src/truetype/ttinterp.c: Updated.
556         (DO_RS): Fix indentation.
557
558 2013-01-26  Infinality  <infinality@infinality.net>
559
560         [truetype] Fix rasterizer_version logic in sph.
561
562         * src/truetype/ttsubpix.c: Updated.
563         (ALWAYS_SKIP_DELTAP_Rules): Remove rule for Trebuchet MS.
564         (sph_set_tweaks): Fix `rasterizer_version' logic.
565
566 2013-01-26  Infinality  <infinality@infinality.net>
567
568         [truetype] Align more to ClearType whitepaper for sph.
569
570         * include/freetype/internal/tttypes.h (TT_FaceRec): Add flags
571         for detected opcode patterns and compatibility mode.
572
573         * src/truetype/ttgload.c (tt_loader_init): Complete conditional.
574
575         * src/truetype/ttinterp.c: Updated.
576         Remove SPH_DEBUG and replace with FT_TRACE7.
577         (DO_RS): More conditions.
578         (Ins_FDEF): Add more opcode detection patterns.
579         More specific conditions when flagging an fdef.
580         Make compatibility mode only turn on when delta fdefs are found.
581         (Ins_CALL, Ins_LOOPCALL): Set flags for currently executed fdef.
582         (Ins_SHPIX): Remove logic to handle ttfautohinted fonts.
583         Simplify conditionals where possible.
584         Use `&' instead of `%' operator for dumb compilers.
585         (Ins_MIAP): Adjust twilight zone conditional.
586         Ensure `ignore_x_mode' is on when testing sph conditionals.
587         (Ins_MIRP): Ensure `ignore_x_mode' is on when testing sph
588         conditionals.
589         Do cvt cutin always when `ignore_x_mode' is active.
590         Remove test for ttfautohinted fonts.
591         (Ins_DELTAP): Ensure `ignore_x_mode' is on when testing sph
592         conditionals.
593         Do cvt cutin always when `ignore_x_mode' is active.
594         Remove test for ttfautohinted fonts.
595         Use `&' instead of `%' operator for dumb compilers.
596         (Ins_GETINFO): Remove SPH_DEBUG and replace with FT_TRACE7.
597
598         * src/truetype/ttinterp.h: Updated.
599         (TT_ExecContextRec): Remove compatibility_mode variable.
600         Add variable to indicate when executing in special fdefs for sph.
601
602         * src/truetype/ttobjs.h: Updated.
603         (TT_DefRecord): Add flags to identify special fdefs for sph.
604         (TT_SizeRec): Remove unnecessary ttfautohinted variable.
605
606         * src/truetype/ttsubpix.c: Updated.
607         (COMPATIBILITY_MODE_Rules): Remove all.  Auto-detected now.
608         (PIXEL_HINTING_Rules): Remove all.  Unnecessary after fixes.
609         (SKIP_NONPIXEL_Y_MOVES_Rules): Remove Ubuntu.
610         (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Arial Bold `N'.
611         (SKIP_OFFPIXEL_Y_MOVES_Rules): Remove all.  Happens automatically
612         now.
613         (ROUND_NONPIXEL_Y_MOVES_Rules): Remove Ubuntu.
614         (ROUND_NONPIXEL_Y_MOVES_Rules_Exceptions): Remove all.
615         (NORMAL_ROUND_Rules): Remove Verdana.
616         (NO_DELTAP_AFTER_IUP_Rules): Remove all.
617         (sph_set_tweaks): Performance fix.  Don't run prep always.
618         Adjust conditional for sph_compatibility_mode.
619
620         * src/truetype/ttsubpix.h: Add new fdef flags for sph.
621
622 2013-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
623
624         [base] Fix broken emboldening at small sizes.
625
626         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Do not attempt to
627         normalize zero-length vectors.
628
629 2013-01-25  Werner Lemberg  <wl@gnu.org>
630
631         Fix Savannah bug #38167.
632
633         This fixes commit 83c0ebab from 2012-06-27.
634
635         * src/truetype/ttinterp.h:
636         s/TT_CONFIG_OPTION_BYTECODE_INTERPRETER/TT_USE_BYTECODE_INTERPRETER/.
637
638 2013-01-25  Xi Wang  <xi.wang@gmail.com>
639
640         [sfnt] Fix broken pointer overflow checks.
641
642         Many compilers such as gcc and clang optimize away pointer overflow
643         checks `p + n < p', because pointer overflow is undefined behavior.
644         Use a safe form `n > p_limit - p' instead.
645
646         Also avoid possible integer overflow issues, for example, using
647         `num_glyphs > ( p_limit - p ) / 2' rather than `num_glyphs * 2'
648         given a large `num_glyphs'.
649
650         * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Implement it.
651
652 2013-01-25  Werner Lemberg  <wl@gnu.org>
653
654         [base] Fix `make multi'.
655
656         * src/base/ftoutln.c, src/base/fttrigon.c: Include
657         FT_INTERNAL_CALC_H.
658
659 2013-01-25  David 'Digit' Turner  <digit@google.com>
660
661         [truetype] Fix C++ compilation.
662
663         * src/truetype/ttsubpix.h: Updated.
664         (SPH_X_SCALING_RULES_SIZE): Moved and renamed to...
665         * src/truetype/ttsubpix.c (X_SCALING_RULES_SIZE): This.
666         (sph_X_SCALING_Rules): Removed.
667         (scale_test_tweak): Make function static.
668         (sph_test_tweak_x_scaling): New function.
669
670         * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Updated.
671
672 2013-01-23  Werner Lemberg  <wl@gnu.org>
673
674         [base] Make `FT_Hypot' really internal.
675
676         * include/freetype/fttrigon.h (FT_Hypot): Move to...
677         * include/freetype/internal/ftcalc.h: This file.
678
679         * src/base/fttrigon.c (FT_Hypot): Move to...
680         * src/base/ftcalc.c: This file.
681         Include FT_TRIGONOMETRY_H.
682
683         * src/truetype/ttgload.c: Don't include FT_TRIGONOMETRY_H.
684
685 2013-01-23  Werner Lemberg  <wl@gnu.org>
686
687         [truetype] Revert change from 2013-01-22.
688
689         FreeType's `height' value is the baseline-to-baseline distance...
690
691         * src/truetype/ttobjs.c (tt_size_reset): Undo.
692
693 2013-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
694
695         [base, truetype] New internal `FT_Hypot' function.
696
697         * include/freetype/fttrigon.h (FT_Hypot): Declare it.
698         * src/base/fttrigon.c (FT_Hypot): Define it.
699         * src/truetype/ttgload.c (TT_Process_Composite_Component): Use it
700         instead of explicit expressions.
701         * src/truetype/ttinterp.c (Current_Ratio, Normalize): Use it instead
702         of TT_VecLen.
703         (TT_VecLen): Removed.
704
705 2013-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
706
707         [base] Fix integer overflow.
708
709         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Normalize incoming and
710         outgoing vectors and use fixed point arithmetic.
711
712 2013-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
713
714         [base] Fix integer overflow.
715
716         * src/base/ftoutln.c (FT_Outline_Get_Orientation): Scale the
717         coordinates down to avoid overflow.
718
719 2013-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
720
721         [base] Split out MSB function.
722
723         * src/base/fttrigon.c (ft_trig_prenorm): Borrow from here.
724         * include/freetype/internal/ftcalc.h (FT_MSB): Declare here.
725         * src/base/ftcalc.c (FT_MSB): Define here.
726
727 2013-01-22  Werner Lemberg  <wl@gnu.org>
728
729         [truetype] Fix font height.
730
731         * src/truetype/ttobjs.c (tt_size_reset): The Windows rendering
732         engine uses rounded values of the ascender and descender to compute
733         the TrueType font height.
734
735 2013-01-16  Behdad Esfahbod  <behdad@behdad.org>
736
737         [sfnt] Fix optimized sbit loader.
738
739         It was not taking bit_depth into consideration when blitting!
740
741         * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_byte_aligned,
742         * tt_sbit_decoder_load_bit_aligned): Handle bit
743         depth.
744
745 2013-01-16  David 'Digit' Turner  <digit@google.com>
746
747         [truetype] Improve sub-pixel code.
748
749         This patches fixes many issues with the ttsubpix implementation.
750
751         1. Data tables are defined, instead of declared, in the header, and
752            thus copied into each source file that includes it.
753
754         2. These tables were defined as global, mutable, visible variables,
755            and thus costing private RAM to every process that loads the
756            library (> 50 KB / process, this is huge!).
757
758            Additionally, this also made the library export the symbols
759            completely needlessly.
760
761         3. Missing `sph_' and `SPH_' prefixes to some of the definitions.
762
763         Note that this doesn't try to fix the incredibly inefficient storage
764         format for the data tables used by the code.  This one will require
765         another pass in the future.
766
767         * src/truetype/ttinterp.h (MAX_NAME_SIZE, MAX_CLASS_MEMBERS):
768         Renamed to...
769         (SPH_MAX_NAME_SIZE, SPH_MAX_CLASS_MEMBERS): This.
770         Update all users.
771
772         (SPH_TweakRule, SPH_ScaleRule): Decorate with `const' where
773         appropriate.
774
775         (Font_Class): Rename to...
776         (SPH_Font_Class): This.  Decorate with `const' where appropriate.
777         
778         * src/truetype/ttsubpix.h (scale_test_tweak, sph_test_tweak):
779         Decorate arguments with `const' where appropriate.
780
781         Move font tweaking tables to...
782
783         * src/truetype/ttsubpic.c: This file and decorate them with `static'
784         and `const' where appropriate.
785
786         (X_SCALING_Rules, X_SCALING_RULES_SIZE): Renamed to...
787         (spu_X_SCALING_Rules, SPH_X_SCALING_RULES_SIZE): This.
788         Update all users.
789
790 2013-01-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
791
792         [truetype] Improve accuracy of normalization of short vectors.
793
794         Unit vector components are stored as 2.14 fixed-point numbers. In
795         order to calculate all 14 bits accurately, a short vector to be
796         normalized has to be upscaled to at least 14 bits before its length
797         is calculated. This has been safe since accurate CORDIC algorithms
798         were adopted.
799
800         * src/truetype/ttinterp.c (Normalize): Scale short vectors by 0x4000.
801
802 2013-01-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
803
804         [truetype] Kill very old vector normalization hacks.
805
806         Back in the days, vector length calculations were not very accurate
807         and the vector normalization function, Normalize, had to meticulously
808         correct the errors for long vectors [commit b7ef2b096867]. It was no
809         longer necessary after accurate CORDIC algorithms were adopted, but
810         the code remained. It is time to kill it.
811
812         * src/truetype/ttinterp.c (Normalize): Remove error compensation.
813         (TT_VecLen): Remove any mention of old less accurate implementation.
814
815 2013-01-11  Werner Lemberg  <wl@gnu.org>
816
817         Disable FT_CONFIG_OPTION_OLD_INTERNALS.
818
819         After the next release we are going to remove the code completely.
820
821         * devel/ftoption.h, include/freetype/config/ftoption.h
822         (FT_CONFIG_OPTION_OLD_INTERNALS): Comment out.
823         * docs/CHANGES: Document it.
824
825 2013-01-10  Alexei Podtelezhnikov  <apodtele@gmail.com>
826
827         [base] Update the overflow protection bit.
828
829         The recent optimizations of CORDIC iterations drastically reduce the
830         expansion factor.  Vector components with MSB of 29 are now safe
831         from overflow.
832
833         * src/base/fttrigon.c (FT_TRIG_SAFE_MSB): New macro.
834         (ft_trig_prenorm): Use it and remove dead code.
835
836 2013-01-09  Alexei Podtelezhnikov  <apodtele@gmail.com>
837
838         [base, pshinter] Use FT_ABS, FT_MIN, and FT_MAX for readability.
839
840         * src/base/ftbbox.c: Updated.
841         * src/base/ftobjs.c: Updated.
842         * src/base/fttrigon.c: Updated.
843         * src/pshinter/pshalgo.c: Updated.
844         * src/pshinter/pshrec.c: Updated.
845
846 2013-01-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
847
848         [base] Clean up trigonometric core.
849
850         * src/base/fttrigon.c: Document the algorithm in a large comment.
851         (FT_TRIG_COSCALE): Remove macro.
852         (FT_Tan: Use `FT_TRIG_SCALE' instead.
853         (FT_Cos, FT_Vector_Unit): Ditto and round the return values.
854
855 2013-01-02  Alexei Podtelezhnikov  <apodtele@gmail.com>
856
857         [base] Use rounding in CORDIC iterations.
858
859         * src/base/fttrigon.c (ft_trig_pseudo_rotate,
860         ft_trig_pseudo_polarize): Improve accuracy by rounding.
861
862 2013-01-02  Alexei Podtelezhnikov  <apodtele@gmail.com>
863
864         [base] Reduce trigonometric algorithms.
865
866         After we get within 45 degrees by means of true 90-degree rotations,
867         we can remove initial 45-degree CORDIC iteration and start from
868         atan(1/2) pseudorotation, reducing expansion factor thereby.
869
870         * src/base/fttrigon.c (FT_TRIG_SCALE, FT_TRIG_COSCALE): Update macros.
871         (ft_trig_pseudo_rotate, ft_trig_pseudo_polarize): Update.
872
873         * src/tools/cordic.py: Bring up to date with trigonometric core.
874
875         * docs/CHANGES: Old typo.
876
877 2013-01-02  Alexei Podtelezhnikov  <apodtele@gmail.com>
878
879         * src/pshinter/pshalgo.h: Remove unused code.
880
881 2012-12-27  Werner Lemberg  <wl@gnu.org>
882
883         * src/truetype/ttgload.c (tt_loader_init): Add more tracing.
884
885 2012-12-23  Werner Lemberg  <wl@gnu.org>
886
887         [type1] Fix handling of /FontBBox in MM fonts.
888         Problem reported by Del Merritt <del@alum.mit.edu>
889
890         If we have
891
892           /FontBBox { { 11 12 13 14 15 16 17 18 }
893                       { 21 22 23 24 25 26 27 28 }
894                       { 31 32 33 34 35 36 37 38 }
895                       { 41 42 43 44 45 46 47 48 } }
896
897         in the /Blend dictionary,  then the first BBox is { 11 21 31 41 },
898         the second { 12 22 32 42 }, etc.
899
900         * include/freetype/internal/psaux.h (T1_FieldType): Add
901         `T1_FIELD_TYPE_MM_BBOX' (for temporary use).
902
903         * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
904         Implement it.
905
906 2012-12-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
907
908         * src/tools/cordic.py: Bring up to date with trigonometric core.
909
910 2012-12-21  Werner Lemberg  <wl@gnu.org>
911
912         Check parameters of `FT_Outline_New'.
913         Problem reported by Robin Watts <robin.watts@artifex.com>.
914
915         * src/base/ftoutln.c (FT_Outline_New_Internal): Ensure that
916         `numContours' and `numPoints' fit into FT_Outline's `n_points' and
917         `n_contours', respectively.
918
919 2012-12-20  Werner Lemberg  <wl@gnu.org>
920
921         * Version 2.4.11 released.
922         ==========================
923
924
925         Tag sources with `VER-2-4-11'.
926
927         * docs/CHANGES, docs/release: Updated.
928
929         * docs/VERSION.DLL: Update documentation and bump version number to
930         2.4.11.
931
932         * README, Jamfile (RefDoc),
933         builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
934         builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
935         builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
936         builds/win32/visualc/freetype.dsp,
937         builds/win32/visualc/freetype.vcproj,
938         builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
939         builds/win32/visualce/freetype.vcproj,
940         builds/win32/visualce/index.html,
941         builds/wince/vc2005-ce/freetype.vcproj,
942         builds/wince/vc2005-ce/index.html,
943         builds/wince/vc2008-ce/freetype.vcproj,
944         builds/wince/vc2008-ce/index.html: s/2.4.10/2.4.11/, s/2410/2411/.
945
946         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 11.
947
948         * builds/unix/configure.raw (version_info): Set to 16:0:10.
949
950         * builds/toplevel.mk (dist): Don't include `.mailmap'.
951
952 2012-12-20  Alexei Podtelezhnikov  <apodtele@gmail.com>
953
954         [base] Improve trigonometric core.
955
956         FreeType used to rely on a 24-step iteration CORDIC algorithm to
957         calculate trigonometric functions and rotate vectors. It turns out
958         that once the vector is in the right half-plane, the initial rotation
959         by 63 degrees is not necessary. The algorithm is perfectly capable
960         to converge to any angle starting from the second 45 degree rotation.
961         This patch removes the first rotation and makes it a 23-step CORDIC
962         algorithm.
963
964         * src/base/fttrigon.c (FT_TRIG_SCALE, FT_TRIG_COSCALE): Update macro
965         values.
966         (ft_trig_pseudo_rotate, ft_trig_pseudo_polarize): Remove initial
967         rotation.
968
969 2012-12-19  Werner Lemberg  <wl@gnu.org>
970
971         * src/base/ftobjs.c (ft_property_do): Fix compiler warning.
972
973 2012-12-19  Alexei Podtelezhnikov  <apodtele@gmail.com>
974
975         * src/base/ftrfork.c (FT_Raccess_Guess): Switch to FT_Int counters.
976
977 2012-12-19  Alexei Podtelezhnikov  <apodtele@gmail.com>
978
979         [base] Clean up trigonometric core.
980
981         * src/base/fttrrigon.c (ft_trig_pseudo_polarize): Align algorithm
982         with `ft_trig_pseudo_rotate'.
983
984 2012-12-18  Infinality  <infinality@infinality.net>
985
986         [truetype] Minor performance enhancement.
987
988         * src/truetype/ttgload.c: (TT_Process_Simple_Glyph): Use FT_MulFix
989         instead of FT_MulDiv.
990
991 2012-12-17  Infinality  <infinality@infinality.net>
992
993         [truetype] Remove unusued code and variables.
994
995         * src/truetype/ttinterp.c: Updated.
996         (Ins_FDEF): Remove opcode patterns that are not being used.
997
998 2012-12-16  Werner Lemberg  <wl@gnu.org>
999
1000         Various compiler warning fixes.
1001
1002         * include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Use
1003         `logical not' operator instead of negation.  The idea is that `~'
1004         returns exactly the data type enforced by the cast to a pointer (be
1005         it 32bit or 64bit or whatever), while a negative integer has not
1006         this flexibility.
1007         * src/cache/ftccmap.c (FTC_CMAP_UNKNOWN): Ditto.
1008         * src/truetype/ttgxvar.c (ALL_POINTS, TT_Get_MM_Var): Ditto.
1009         * src/type/t1load.c (T1_Get_MM_Var): Ditto.
1010         (parse_blend_axis_types): Use cast.
1011         * src/bdf/bdflib.c (_bdf_readstream): Use cast.
1012
1013 2012-12-16  Infinality  <infinality@infinality.net>
1014
1015         [truetype] Remove unusued code and variables.  Add minor fixes.
1016
1017         * src/truetype/ttsubpix.h: Updated.
1018         (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Trebuchet MS.
1019         (ALLOW_X_DMOVEX_Rules): Remove Arial characters.
1020         (ALLOW_X_DMOVE_Rules): Remove Arial characters.
1021         (RASTERIZER_35_Rules): Verdana no longer needs to be here.
1022         (SKIP_IUP_Rules): Formatting fix.
1023         (DELTAP_SKIP_EXAGGERATED_VALUES_Rules): Remove Segoe UI.
1024         (COMPATIBLE_WIDTHS_Rules): Add Monaco and Trebuchet MS.
1025         (X_SCALING_Rules): Add misc. corrective fixes.
1026
1027         * src/truetype/ttgload.c: (TT_Process_Simple_Glyph): Adjust correction
1028         factor for emboldening during scaling.
1029
1030         * src/truetype/ttinterp.h: Updated.
1031         (TT_ExecContextRec): Remove unused variables.
1032
1033         * src/truetype/ttobjs.h: Updated.
1034         (TT_SizeRec): Add ttfautohinted variable.
1035
1036         * src/truetype/ttinterp.c: Updated.
1037         (Ins_FDEF): Rework code to fix bugs and add more detection.
1038         (Ins_CALL): Remove unused code.
1039         (Ins_LOOPCALL): Remove unused code.
1040         (TT_RunIns): Remove unusued code.
1041         (Ins_SHPIX): Add logic to handle ttfautohinted fonts.
1042         (Ins_MIRP): Don't round x in cut-in calculation.  Add logic to handle
1043         ttfautohinted fonts.
1044
1045 2012-12-16  Werner Lemberg  <wl@gnu.org>
1046
1047         [sfnt] Fix Savannah bug #37936.
1048
1049         * src/sfnt/ttload.c (tt_face_load_gasp): Avoid memory leak.
1050
1051 2012-12-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
1052
1053         [base] Fix 11-year old bug.
1054
1055         Since the initial commit (ebe85f59) the value of FT_TRIG_SCALE has
1056         always been slightly less than the correct value, which has been
1057         given in the comment as a hexadecimal. As a result, vector lengths
1058         were underestimated and rotated vectors were shortened.
1059
1060         * src/base/fttrigon.c (FT_TRIG_SCALE): Fix macro value.
1061
1062 2012-12-15  Werner Lemberg  <wl@gnu.org>
1063
1064         [bdf] Fix Savannah bug #37907.
1065
1066         * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Normalize
1067         negative second parameter of `ENCODING' field also.
1068
1069 2012-12-15  Werner Lemberg  <wl@gnu.org>
1070
1071         [bdf] Fix Savannah bug #37906.
1072
1073         * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Use correct array
1074         size for checking `glyph_enc'.
1075
1076 2012-12-15  Werner Lemberg  <wl@gnu.org>
1077
1078         [bdf] Fix Savannah bug #37905.
1079
1080         * src/bdf/bdflib.c (_bdf_parse_start) <STARTPROPERTIES>: Reset
1081         `props_size' to zero in case of allocation error; this value gets
1082         used in a loop in `bdf_free_font'.
1083
1084 2012-12-10  Alexei Podtelezhnikov  <apodtele@gmail.com>
1085
1086         [truetype] Scale F_dot_P down.
1087
1088         The dot product between freeVector and projVector or cosine of
1089         the angle between these FT_F2Dot14 unit vectors used to be scaled up
1090         by 4 and routinely occupied 32 bits in an FT_Long field F_dot_P.
1091         This patch scales the value down by 2^14 instead, which simplifies
1092         its use throughout the bytecode interpreter.
1093
1094         This does not lead to the loss of precision because the lower bits
1095         are unreliable anyway. Consider two unit vectors (1,0) and (.6,.8)
1096         for which the true value of F_dot_P is .6 * 0x40000000 = 0x26666666.
1097         These vectors are stored as (0x4000,0) and (0x2666,0x3333) after
1098         rounding and F_dot_P is assigned 0x26660000. The lower bits were
1099         already lost while rounding the unit vector components.
1100
1101         Besides code simplification, this change can lead to better
1102         performance when FT_MulDiv with the scaled-down F_dot_P is less
1103         likely to use the costly 64-bit path. We are not changing the type
1104         of F_dot_P to FT_F2Dot14 at this point.
1105
1106         * src/truetype/ttinterp.c (Compute_Funcs): Scale F_dot_P down by 14
1107         bits and modify its use accordingly.
1108         (Direct_Move, Direct_Move_Orig, Compute_Point_Displacement): Modify
1109         the use of F_dot_P field.
1110         * src/truetype/ttobjs.c (tt_size_run_fpgm): Change arbitrary
1111         assignment of F_dot_P to its theoretical maximum in case we decide
1112         to scale back its type later.
1113
1114 2012-12-09  Johnson Y. Yan  <yinsen_yan@foxitsoftware.com>
1115
1116         [type1] Another fix for 2012-09-17 commit.
1117
1118         * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Correctly set
1119         `limit' value.
1120
1121 2012-12-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
1122
1123         [truetype] Tweak the previous commit.
1124
1125         * src/truetype/ttinterp.c (Current_Ratio): Put unit vector
1126         components as the second TT_MulFix14 arguments. This is required
1127         on 16-bit systems.
1128
1129 2012-12-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
1130
1131         [truetype] Microoptimizations in bytecode interpreter.
1132
1133         * src/truetype/ttinterp.c (TT_DivFix14): New macro.
1134         (Normalize): Use it here.
1135         (Current_Ratio): Use TT_MulFix14 instead of FT_MulDiv.
1136         (Ins_SHPIX): Cancel out two TT_MulFix14 calls.
1137
1138 2012-12-05  Alexei Podtelezhnikov  <apodtele@gmail.com>
1139
1140         [truetype] Cosmetic improvement in bytecode interpreter.
1141
1142         * src/truetype/ttinterp.c: Use explicit calls to FT_MulDiv,
1143         FT_MulFix, and FT_DivFix instead of macros.
1144
1145 2012-12-03  John Tytgat  <John.Tytgat@esko.com>
1146
1147         [pshinter] Clamp BlueScale value.
1148
1149         This is Savannah bug #37856.
1150
1151         * src/pshinter/pshglob.c (psh_calc_max_height): New function.
1152         (psh_globals_new): Use it to limit BlueScale value to
1153         `1 / max_of_blue_zone_heights'.
1154
1155 2012-12-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
1156
1157         [truetype, type1] Revise the use of FT_MulDiv.
1158
1159         * src/truetype/ttgxvar.c: Updated.
1160         * src/truetype/ttobjs.c: Updated.
1161         * src/type1/t1load.c: Updated.
1162
1163 2012-11-30  Werner Lemberg  <wl@gnu.org>
1164
1165         [configure] Preserve customized `ftoption.h'.
1166
1167         Problem reported by Del Merritt <del@alum.mit.edu>.
1168
1169         * builds/unix/configure.raw <cpp computation of bit length>: Don't
1170         remove existing FreeType configuration files.
1171
1172 2012-11-29  John Tytgat  <John.Tytgat@esko.com>
1173
1174         [type1] Fix Savannah bug #37831.
1175
1176         The bug report also contains a patch.
1177
1178         * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Really fix
1179         change from 2012-09-17.
1180
1181 2012-11-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
1182
1183         [truetype] Fix formatting and typo.
1184
1185 2012-11-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
1186
1187         [cid, type1, type42] Clean up units_per_EM calculations.
1188
1189         * src/cid/cidload.c (cid_parse_font_matrix): Updated.
1190         * src/type1/t1load.c (t1_parse_font_matrix): Updated.
1191         * src/type42/t42parse.c (t42_parse_font_matrix): Updated.
1192
1193 2012-11-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
1194
1195         [ftstroke] Minor improvement.
1196
1197         * src/base/ftstroke.c: Replace nested FT_DivFix and FT_MulFix with
1198         FT_MulDiv.
1199
1200 2012-11-17  Werner Lemberg  <wl@gnu.org>
1201
1202         * src/base/fttrigon.c (ft_trig_downscale): Make 64bit version work.
1203
1204 2012-11-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
1205
1206         [base] Fix integer overflows in dd5718c7d67a.
1207
1208         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use FT_MulDiv.
1209
1210 2012-11-15  Werner Lemberg  <wl@gnu.org>
1211
1212         [autofit] Trace stem widths.
1213
1214         * src/autofit/aflatin.c (af_latin_metrics_init_widths): Add some
1215         FT_TRACE calls.
1216
1217 2012-11-13  Werner Lemberg  <wl@gnu.org>
1218
1219         [cff] Add support for OpenType Collections (OTC).
1220
1221         * src/cff/cffload.c (cff_font_load): Separate subfont and face
1222         index handling to load both pure CFFs with multiple subfonts and
1223         OTCs (with multiple faces where each face holds exactly one
1224         subfont).
1225         * src/cff/cffobjs.c (cff_face_init): Updated.
1226
1227 2012-11-12  Werner Lemberg  <wl@gnu.org>
1228
1229         [autofit] Minor improvement.
1230
1231         * src/autofit/aflatin.c (af_latin_hints_compute_blue_edges): Fix
1232         loop.
1233
1234 2012-11-10  Werner Lemberg  <wl@gnu.org>
1235
1236         [autofit] Improve tracing.
1237
1238         * src/autofit/aflatin.c (af_latin_hint_edges)
1239         [FT_DEBUG_LEVEL_TRACE]: Count number of actions and emit something
1240         if there weren't any.
1241
1242 2012-11-04  Alexei Podtelezhnikov  <apodtele@gmail.com>
1243
1244         [base] Fortify emboldening code against egregious distortions.
1245
1246         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Threshold emboldening
1247         strength when it leads to segment collapse.
1248
1249 2012-11-03  Alexei Podtelezhnikov  <apodtele@gmail.com>
1250
1251         [base] Clean up emboldening code and improve comments there.
1252
1253         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Replace sequential
1254         calls to FT_MulFix and FT_DivFix with FT_MulDiv.
1255         Mention that bisectors are used to figure out the shift direction.
1256
1257 2012-10-24  Werner Lemberg  <wl@gnu.org>
1258
1259         [autofit] Add standard character to `AF_ScriptClassRec' structure.
1260
1261         * src/autofit/aftypes.h (AF_ScriptClassRec): Add `standard_char'
1262         member.
1263         (AF_DEFINE_SCRIPT_CLASS): Updated.
1264
1265         * src/autofit/aflatin.c (af_latin_metrics_init_widths): Use it.
1266         (af_latin_metrics_init, af_latin_script_class): Updated.
1267
1268         * src/autofit/aflatin.c (af_latin2_metrics_init_widths): Use it.
1269         (af_latin2_metrics_init, af_latin2_script_class): Updated.
1270
1271         * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Use it.
1272         (af_cjk_metrics_init, af_cjk_script_class): Updated.
1273
1274         * src/autofit/afindic.c (af_indic_metrics_init,
1275         af_indic_script_class): Updated.
1276
1277         * src/autofit/afcjk.h, src/autofit/aflatin.h: Updated.
1278
1279         * src/autofit/afdummy.c: Updated.
1280
1281 2012-10-24  Werner Lemberg  <wl@gnu.org>
1282
1283         [autofit] Only use Unicode CMap.
1284
1285         * src/autofit/aflatin.c (af_latin_metrics_init): Implement it, to be
1286         in sync with `af_face_globals_compute_script_coverage'.
1287
1288 2012-10-21  Werner Lemberg  <wl@gnu.org>
1289
1290         [psaux] Improve parsing of invalid numbers.
1291
1292         * src/psaux/psconv.c (PS_Conv_Strtol): Always parse complete number,
1293         even in case of overflow.
1294         (PS_Conv_ToInt): Only increase cursor if parsing was successful.
1295         (PS_Conv_ToFixed): Ditto.
1296         Trace underflow and data error.
1297
1298 2012-10-21  Werner Lemberg  <wl@gnu.org>
1299
1300         [smooth] Improve tracing.
1301
1302         * src/smooth/ftgrays.c (gray_sweep): Trace last sweep line of
1303         current band also.
1304
1305 2012-10-20  Alexei Podtelezhnikov  <apodtele@gmail.com>
1306
1307         [truetype] Cheaper way to threshold angles between vectors.
1308
1309         * src/truetype/ttinterp.c (Ins_ISECT): Thresholding tangent is a lot
1310         cheaper than thresholding sine.
1311
1312 2012-10-20  Werner Lemberg  <wl@gnu.org>
1313
1314         [cff] Improve parsing of invalid real numbers.
1315
1316         * src/cff/cffparse.c (cff_parse_real): Always parse complete number,
1317         even in case of overflow or underflow.
1318         Also trace one more underflow.
1319
1320 2012-10-20  Andreas Pehnack  <andreas.pehnack@me.com>
1321
1322         [sfnt] Load pure CFF fonts wrapped in SFNT container.
1323
1324         Such fonts only have a `cmap' and a `CFF' table.
1325
1326         * src/sfnt/ttload.c (tt_face_load_font_dir): Don't call
1327         `check_table_dir' if font signature is `OTTO'.
1328
1329 2012-10-20  Werner Lemberg  <wl@gnu.org>
1330
1331         [psaux] Fix some value overflows and improve tracing.
1332
1333         * src/psaux/psconv.c: Include FT_INTERNAL_DEBUG_H.
1334         (FT_COMPONENT): Define.
1335         (PS_Conv_Strtol): Return FT_Long.
1336         Handle bad data and overflow.
1337         Emit some tracing messages in case of error.
1338         (PS_Conv_ToInt): Return FT_Long.
1339         (PS_Conv_ToFixed): Updated.
1340         * src/psaux/psconv.h: Updated.
1341
1342         * include/freetype/internal/fttrace.h: Add `psconv'.
1343
1344 2012-10-20  Werner Lemberg  <wl@gnu.org>
1345
1346         [autofit] Fix `make multi CC=c++'.
1347
1348         * src/autofit/aflatin.c, src/autofit/aflatin2.c: Include
1349         `afglobal.h'.
1350         * src/autofit/afloader.c: Fix order of header files.
1351         * src/autofit/afmodule.c: Include `afglobal.h' and `aferrors.h'.
1352
1353 2012-10-19  Werner Lemberg  <wl@gnu.org>
1354
1355         [cff] Fix more value errors and improve tracing.
1356
1357         * src/cff/cffparse.c (cff_parse_integer): Emit tracing message in
1358         case of error.
1359         (cff_parse_real): Handle and trace overflow, underflow, and bad data
1360         consistently.
1361         (do_fixed): New helper function, handling and tracing overflow.
1362         (cff_parse_fixed, cff_parse_fixed_scaled): Use `do_fixed'.
1363
1364 2012-10-17  Werner Lemberg  <wl@gnu.org>
1365
1366         [psaux] Fix some value overflows.
1367
1368         * src/psaux/psconv.c (PS_Conv_ToFixed): Implement it.
1369
1370 2012-10-17  Bram Tassyns  <BramT@enfocus.com>
1371
1372         [cff] Fix value overflow.
1373
1374         * src/cff/cffparse.c (cff_parse_fixed_scaled): Implement it.
1375
1376 2012-10-17  Werner Lemberg  <wl@gnu.org>
1377
1378         [truetype] Fix Savannah bug #37572.
1379
1380         * src/truetype/ttinterp.c (Ins_ISECT): Use angle between vectors to
1381         avoid grazing intersections.  The previous threshold was too coarse,
1382         incorrectly rejecting short but valid vectors.
1383
1384 2012-09-30  Gilles Espinasse  <g.esp@free.fr>
1385
1386         Remove useless `rm' detection.
1387
1388         `rm -f' is directly used in the `configure' script created by
1389         autoconf, thus no availability test is necessary.
1390
1391         * builds/unix/configure.raw (RMF): Remove test.
1392         * builds/unix/unix-def.in (DELETE): Updated.
1393
1394 2012-09-29  Werner Lemberg  <wl@gnu.org>
1395
1396         [autofit] Minor optimization.
1397
1398         * src/autofit/afglobals.c (af_face_globals_compute_script_coverage):
1399         Add loop condition.
1400
1401 2012-09-29  Werner Lemberg  <wl@gnu.org>
1402
1403         [autofit] Fix thinko.
1404
1405         * src/autofit/aftypes.h (AF_SCRIPT):
1406         s/AF_SCRIPT_NONE/AF_SCRIPT_DUMMY/.  We already use `AF_SCRIPT_NONE'
1407         as a bit mask.
1408
1409         * src/autofit/afdummy.c: Updated.
1410
1411 2012-09-18  Werner Lemberg  <wl@gnu.org>
1412
1413         [autofit] Implement `increase-x-height' property.
1414
1415         * include/freetype/ftautoh.h (FT_Prop_IncreaseXHeight): New
1416         structure.
1417
1418         * include/autofit/afmodule.c (af_property_get_face_globals): New
1419         function, re-using code from `af_property_get'.
1420         (af_property_set, af_property_get): Handle `increase-x-height'.
1421         Updated.
1422
1423 2012-09-18  Werner Lemberg  <wl@gnu.org>
1424
1425         [autofit] Implement Infinality's `increase glyph heights'.
1426
1427         This is an improved version of a similar fix contained in the
1428         so-called `Infinality patch', taken from
1429
1430           http://www.infinality.net/fedora/linux/zips/freetype-infinality-2.4.10-20120616_01-x86_64.tar.bz2
1431
1432         which addresses various enhancements of the auto-hinter.  Without
1433         properties to control a module's metadata it wasn't possible to
1434         adapt the patches because everything was originally controlled by
1435         environment variables which I consider not suitable in general.
1436
1437         A patch to control `increase_x_height' follows.
1438
1439         * src/autofit/afglobal.h (AF_PROP_INCREASE_X_HEIGHT_MIN,
1440         AF_PROP_INCREASE_X_HEIGHT_MAX): New macros.
1441         (AF_FaceGlobalsRec): Add `increase_x_height' member.
1442         * src/autofit/afglobal.c (af_face_globals_new): Initialize it.
1443
1444         * src/autofit/aflatin.c (af_latin_metrics_scale_dim),
1445         * src/autofit/aflatin2.c (af_latin2_metrics_scale_dim): Implement
1446         handling of `increase_x_height'.
1447
1448 2012-09-18  Werner Lemberg  <wl@gnu.org>
1449
1450         [autofit] Add hierarchical property access to some structures.
1451
1452         * src/autofit/afglobal.h: Include `afmodule.h'.
1453         (AF_FaceGlobalsRec): Add `module' member.
1454         (AF_FaceGlobals): Typedef moved to...
1455         * src/autofit/aftypes.h: Here.
1456         (AF_ScriptMetricsRec): Add `globals' member.
1457
1458         * src/autofit/afglobal.c (af_face_globals_new,
1459         af_face_globals_compute_script_coverage,
1460         af_face_globals_get_metrics): Updated.
1461
1462         * src/autofit/afloader.c (af_loader_reset), src/autofit/afmodule.c
1463         (af_property_get): Updated.
1464
1465 2012-09-17  Werner Lemberg  <wl@gnu.org>
1466
1467         [type1] Fix Savannah bug #37350.
1468
1469         * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Check for ASCII
1470         storage only if we actually have at least four bytes.
1471
1472 2012-09-15  Werner Lemberg  <wl@gnu.org>
1473
1474         [autofit] Implement `fallback-script' property.
1475
1476         * src/autofit/afglobal.c: s/default_script/fallback_script/.
1477         * src/autofit/afglobal.h: s/AF_SCRIPT_DEFAULT/AF_SCRIPT_FALLBACK/.
1478
1479         * src/autofit/afmodule.c: s/default_script/fallback_script/.
1480         (af_property_set, af_property_get): Implement `fallback-script'.
1481         * src/autofit/afmodule.h: s/default_script/fallback_script/.
1482
1483         * include/freetype/ftautoh.h: Document it.
1484
1485 2012-09-15  Werner Lemberg  <wl@gnu.org>
1486
1487         [autofit] Correct previous Unicode 6.1.0 change.
1488
1489         The auto-hinter's latin module only handles latin ligatures in the
1490         `Alphabetical Presentation Forms' block.
1491
1492         * src/autofit/aflatin.c (af_latin_uniranges): Fix it.
1493
1494 2012-09-15  Werner Lemberg  <wl@gnu.org>
1495
1496         * src/autofit/afmodule.c: s/FT_Err_/AF_Err_/.
1497
1498 2012-09-15  Werner Lemberg  <wl@gnu.org>
1499
1500         [autofit] Make default script a global property.
1501
1502         * src/autofit/afmodule.h (AF_ModuleRec): Add `default_script' field.
1503
1504         * src/autofit/afglobal.c (af_face_globals_compute_script_coverage,
1505         af_face_globals_new), src/autofit/afloader.c (af_loader_reset),
1506         src/autofit/afmodule.c (af_property_get) <glyph-to-script-map>,
1507         af_autofitter_init:
1508         Handle default script.
1509
1510         * src/autofit/afglobal.h: Updated.
1511
1512 2012-09-15  Werner Lemberg  <wl@gnu.org>
1513
1514         Use `FT_Module' instead of `FT_Library' argument in property funcs.
1515
1516         This internal change simplifies access to global module data.
1517
1518         * include/freetype/internal/services/svprop.h
1519         (FT_Properties_SetFunc, FT_Properties_GetFunc): Change accordingly.
1520
1521         * src/base/ftobjs.c (ft_property_do), src/autofit/afmodule.c
1522         (af_property_set, af_property_get): Updated.
1523
1524 2012-09-14  Werner Lemberg  <wl@gnu.org>
1525
1526         [autofit] Update to Unicode 6.1.0.
1527
1528         * src/autofit/afcjk.c (af_cjk_uniranges), src/autofit/aflatin.c
1529         (af_latin_uniranges): Add and fix ranges.
1530
1531 2012-09-14  Werner Lemberg  <wl@gnu.org>
1532
1533         [autofit] Pass `AF_Module' instead of `AF_Loader'.
1534
1535         We want to access the (not yet existing) module's global data later
1536         on.
1537
1538         * src/autofit/afloader.c: Include `afmodule.h'.
1539         (af_loader_init, af_loader_reset, af_loader_done,
1540         af_loader_load_glyph): Change accordingly.
1541         * src/autofit/afmodule.c (AF_ModuleRec): Move to `afmodule.h'.
1542         Updated.
1543
1544         * src/autofit/afmodule.h: Include `afloader.h'.
1545         (AF_ModuleRec): Define here.
1546         * src/autofit/afloader.h (AF_Module): Define here.
1547         Updated.
1548
1549 2012-09-14  Werner Lemberg  <wl@gnu.org>
1550
1551         [autofit] Fix `make multi'.
1552
1553         * include/freetype/internal/fttrace.h: Add `afmodule'.
1554         * src/autofit/afmodule.c: Include FT_INTERNAL_DEBUG_H.
1555         (FT_COMPONENT): Define.
1556
1557 2012-09-14  Werner Lemberg  <wl@gnu.org>
1558
1559         * src/autofit/afmodule.c: s/FT_Autofitter/AF_Module/.
1560
1561 2012-09-12  Werner Lemberg  <wl@gnu.org>
1562
1563         [autofit] Minor reorganization.
1564
1565         * src/autofit/afglobal.c (AF_SCRIPT_LIST_DEFAULT,
1566         AF_SCRIPT_LIST_NONE, AF_DIGIT): Move to...
1567         * src/autofit/afglobal.h (AF_SCRIPT_DEFAULT, AF_SCRIPT_LIST_NONE,
1568         AF_DIGIT): This and update code.
1569
1570 2012-09-01  Werner Lemberg  <wl@gnu.org>
1571
1572         [autofit] Implement `glyph-to-script-map' property.
1573
1574         * include/freetype/ftautoh.h: New public header file.
1575         * include/freetype/config/ftheader.h (FT_AUTOHINTER_H): New macro.
1576
1577         * src/autofit/afglobal.c (AF_FaceGlobalsRec): Move structure to...
1578         * src/autofit/afglobal.h: This header file.
1579         * src/autofit/afmodule.c: Include FT_AUTOHINTER_H.
1580         (af_property_get): Handle `glyph-to-script-map'.
1581
1582 2012-08-31  Werner Lemberg  <wl@gnu.org>
1583
1584         [autofit] Implement properties service framework.
1585
1586         No properties are added yet.
1587
1588         * src/autofit/afmodule.c: Include FT_SERVICE_PROPERTIES_H.
1589         (af_property_set, af_property_get): New dummy functions.
1590         (af_service_properties, af_services, af_get_interface): Provide
1591         service setup.
1592         (autofit_moduleclass): Add service interface.
1593
1594         * src/autofit/afpic.c: Add necessary forward declarations.
1595         (autofit_module_class_pic_init): Add code for service addition.
1596         (autofit_module_pic_free): Add code for service removal.
1597         * src/autofit/afpic.h (AF_SERVICES_GET, AF_SERVICE_PROPERTIES_GET):
1598         New macros which provide necessary syntactical sugar for PIC
1599         support.
1600
1601 2012-08-30  Werner Lemberg  <wl@gnu.org>
1602
1603         Implement properties to control FreeType modules.
1604
1605         * include/freetype/fterrdef.h (FT_Err_Missing_Property): New error
1606         code.
1607         * include/freetype/ftmodapi.h (FT_Property_Set, FT_Property_Get):
1608         New API.
1609
1610         * include/freetype/internal/services/svprop.h: New file.
1611         * include/freetype/internal/ftserv.h (FT_SERVICE_PROPERTIES_H): New
1612         macro.
1613
1614         * src/base/ftobjs.c: Include FT_SERVICE_PROPERTIES_H.
1615         (ft_property_do, FT_Property_Set, FT_Property_Get): New functions.
1616
1617 2012-08-29  Werner Lemberg  <wl@gnu.org>
1618
1619         [docmaker] Allow `-' in tags and identifiers.
1620
1621         * src/tools/docmaker/content.py (re_identifier),
1622         src/tools/docmaker/sources.py (re_markup_tag1, re_markup_tag2,
1623         re_crossref): Add `-' in patterns.
1624
1625 2012-08-27  Werner Lemberg  <wl@gnu.org>
1626
1627         [FT_CONFIG_OPTION_PIC] Fix g++ 4.6.2 compiler warnings.
1628
1629         * include/freetype/internal/ftdriver.h (FT_DEFINE_DRIVER),
1630         include/freetype/internal/ftobjs.h (FT_DEFINE_RENDERER,
1631         FT_DEFINE_MODULE), include/freetype/internal/ftserv.h
1632         (FT_DEFINE_SERVICEDESCREC1, FT_DEFINE_SERVICEDESCREC2,
1633         FT_DEFINE_SERVICEDESCREC3, FT_DEFINE_SERVICEDESCREC4,
1634         FT_DEFINE_SERVICEDESCREC5, FT_DEFINE_SERVICEDESCREC6),
1635         src/autofit/afpic.c (autofit_module_class_pic_init),
1636         src/base/basepic.c (ft_base_pic_init), src/base/ftinit.c
1637         (ft_create_default_module_classes), src/cff/cffparse.c
1638         (FT_Create_Class_cff_field_handlers), src/cff/cffpic.c
1639         (cff_driver_class_pic_init), src/pshinter/pshpic.c
1640         (pshinter_module_class_pic_init), src/psnames/pspic.c
1641         (psnames_module_class_pic_init), src/raster/rastpic.c
1642         (ft_raster1_renderer_class_pic_init), src/sfnt/sfntpic.c
1643         (sfnt_module_class_pic_init), src/sfnt/ttcmap.c
1644         (FT_Create_Class_tt_cmap_classes), src/smooth/ftspic.c
1645         (ft_smooth_renderer_class_pic_init), src/truetype/ttpic.c
1646         (tt_driver_class_pic_init): Initialize allocation variable.
1647
1648 2012-08-27  Werner Lemberg  <wl@gnu.org>
1649
1650         [truetype] Fix compilation warning.
1651
1652         * src/truetype/ttgload.c (IS_HINTED): Move macro to...
1653         * src/truetype/ttobjs.h: This header file.
1654
1655 2012-08-27  Werner Lemberg  <wl@gnu.org>
1656
1657         [autofit, cff, pshinter, psnames] More renamings for orthogonality.
1658
1659         * src/autofit/afmodule.c, src/autofit/afpic.h:
1660         s/AF_AUTOFITTER_/AF_/.
1661
1662         * src/cff/cffdrivr.c, src/cff/cffobjs.c, src/cff/cffparse.c,
1663         src/cff/cffpic.h: s/FT_CFF_/CFF_/.
1664
1665         * src/pshinter/pshmod.c, src/pshinter/pshpic.h:
1666         s/FT_PSHINTER_/PSHINTER_/.
1667
1668         * src/psnames/psmodule.c, src/psnames/pspic.h:
1669         s/FT_PSCMAPS/PSCMAPS_/.
1670
1671 2012-08-27  Werner Lemberg  <wl@gnu.org>
1672
1673         [sfnt, truetype] More renamings for orthogonality.
1674
1675         * src/sfnt/sfdriver.c, src/sfnt/sfntpic.h, src/sfnt/ttcmap.c,
1676         src/truetype/ttdriver.c, src/truetype/ttpic.h: s/FT_SFNT_/SFNT_/,
1677         s/FT_TT_/TT_/, s/GET_CMAP_INFO_GET/CMAP_INFO_GET/.
1678
1679 2012-08-27  Werner Lemberg  <wl@gnu.org>
1680
1681         [autofit] Some macro and variable renamings for orthogonality.
1682
1683         * include/freetype/internal/autohint.h, src/base/ftobjs.c,
1684         src/autofit/afmodule.c, src/autofit/afpic.c, src/autofit/afpic.h:
1685         s/SERVICE/INTERFACE/, s/service/interface/, s/Service/Interface/.
1686
1687 2012-08-26  Werner Lemberg  <wl@gnu.org>
1688
1689         Fix Savannah bug #37178.
1690
1691         * src/base/ftobjs.c (FT_Open_Face): Initialize `error' with
1692         `FT_Err_Missing_Module' before loop to indicate `no valid drivers'.
1693
1694 2012-08-17  Werner Lemberg  <wl@gnu.org>
1695
1696         * src/base/ftsynth.c (FT_GlyphSlot_Oblique): Fix shear angle.
1697
1698         The old value was far too large (more than 20°).  The new one
1699         corresponds to 12°, quite common in typography.
1700
1701 2012-08-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
1702
1703         [smooth] Fix Savannah bug #37017.
1704
1705         * src/smooth/ftgrays.c (gray_render_cubic): Use a different set of
1706         checks when detecting super curvy splines to be split.
1707
1708 2012-08-05  Werner Lemberg  <wl@gnu.org>
1709
1710         [autofit] Improve recognition of flat segments.
1711
1712         Problem reported by Brad Dunzer <BDunzer@extensis.com>.
1713
1714         * src/autofit/aflatin.c (af_latin_metrics_init_blues): We have
1715         a flat segment if the horizontal distance of best on-points is
1716         larger than a given threshold.
1717
1718 2012-08-05  Werner Lemberg  <wl@gnu.org>
1719
1720         [autofit] Variable renamings.
1721
1722         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Replace
1723         `glyph' with `outline'.
1724         s/best_first/best_contour_first/.
1725         s/best_last/best_contour_last/.
1726
1727 2012-07-31  Werner Lemberg  <wl@gnu.org>
1728
1729         [type1] Fix Savannah bug #37000.
1730
1731         * src/type1/t1load.c (parse_encoding): Fix order of checks.
1732
1733 2012-07-17  Werner Lemberg  <wl@gnu.org>
1734
1735         [psaux] Fix Savannah bug #36833.
1736
1737         * src/psaux/t1decode.c (t1operator_seac): `seac' is not a valid
1738         operator if we want metrics only.
1739
1740 2012-07-16  Werner Lemberg  <wl@gnu.org>
1741
1742         [type1] Fix Savannah bug #36832.
1743
1744         * src/type1/t1load.c (parse_charstrings): Reject negative number of
1745         glyphs.
1746
1747 2012-07-13  Werner Lemberg  <wl@gnu.org>
1748
1749         [type1] Fix Savannah bug #36829.
1750
1751         * src/type1/t1load.c (parse_encoding): Check cursor position after
1752         call to T1_Skip_PS_Token.
1753
1754 2012-07-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
1755
1756         Revert the last commit 45337b07.
1757
1758         * src/base/ftstroke.c (FT_Stroker_New): Revert the previous change.
1759
1760 2012-07-11  Alexei Podtelezhnikov  <apodtele@gmail.com>
1761
1762         [ftstroke] Fix uninitialized return value.
1763
1764         * src/base/ftstroke.c (FT_Stroker_New): Return FT_Err_Ok instead.
1765
1766 2012-07-11  Werner Lemberg  <wl@gnu.org>
1767
1768         [smooth] Avoid memory leak in case of failure.
1769
1770         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use flags to
1771         indicate what to clean up after finishing the function, with and
1772         without errors.
1773
1774 2012-07-09  Werner Lemberg  <wl@gnu.org>
1775
1776         Fix compilation with MSVC 5.0.
1777
1778         Problem reported by Peter Breitenlohner and Akira Kakuto.
1779
1780         * include/freetype/config/ftstdlib.h (ft_setjmp): Updated.
1781         * src/sfnt/ttcmap.c (tt_face_build_cmaps): Remove cast.
1782
1783 2012-07-09  Werner Lemberg  <wl@gnu.org>
1784
1785         [autofit] Improve debugging messages; do some code cleanup.
1786
1787         * src/autofit/aflatin.c (af_latin_align_linked_edge,
1788         af_latin_hint_edges): Synchronize with formatting used in the
1789         ttfautohint project.
1790
1791 2012-07-07  Gilles Espinasse  <g.esp@free.fr>
1792
1793         Fix strict-aliasing warning.
1794
1795         * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Avoid double cast.
1796
1797 2012-07-07  Dave Thomas  <dave.thomas@metaforic.com>
1798
1799         [ARM] Fix FT_MulFix_arm.
1800
1801         * include/freetype/config/ftconfig.h (FT_MulFix_arm) [__arm__]:
1802         Avoid ADDS instruction to clobber condition codes.
1803
1804 2012-07-06  Werner Lemberg  <wl@gnu.org>
1805
1806         [autofit] Do some code cleanup.
1807
1808         * src/autofit/afglobal.c (af_face_globals_new): Simplify.
1809
1810         * src/autofit/afhints.c: Use `FT_TRACE7' instead of `printf'
1811         everywhere.
1812         (FT_COMPONENT): New macro.
1813         (af_glyph_hints_done): Simplify.
1814
1815         * include/freetype/internal/fttrace.h: Updated.
1816
1817 2012-07-05  Werner Lemberg  <wl@gnu.org>
1818
1819         [autofit] Improve output of debugging information.
1820
1821         * src/autofit/afhints.c (af_glyph_hints_dump_segments): Print more
1822         data; report no data.
1823         (af_glyph_hints_dump_edges): Report no data.
1824
1825 2012-07-04  Werner Lemberg  <wl@gnu.org>
1826
1827         [autofit] Fix Savannah bug #36091.
1828
1829         * src/autofit/aflatin.c (af_latin_metrics_init_blues),
1830         src/autofit/aflatin2.c (af_latin2_metrics_init_blues): Change the
1831         constraint for testing round vs. flat segment: Accept either a
1832         small distance or a small angle.
1833
1834 2012-07-04  Werner Lemberg  <wl@gnu.org>
1835
1836         [autofit] Beautify blue zone tracing.
1837
1838         * src/autofit/aflatin.c (af_latin_metrics_init_blues),
1839         src/autofit/aflatin2.c (af_latin2_metrics_init_blues): Implement it.
1840
1841 2012-07-03  Werner Lemberg  <wl@gnu.org>
1842
1843         [autofit] Quantize stem widths.
1844
1845         * src/autofit/afangles.c (af_sort_widths): Rename to...
1846         (af_sort_and_quantize_widths): This.
1847         Add code to avoid stem widths which are almost identical.
1848         * src/autofit/aftypes.h, src/autofit/aflatin.c, src/autofit/afcjk.c:
1849         Updated.
1850
1851 2012-07-03  Werner Lemberg  <wl@gnu.org>
1852
1853         [autofit] Minor speed-up.
1854
1855         * src/autofit/afangles (af_sort_pos, af_sort_widths): Don't swap
1856         elements if they are equal.
1857
1858 2012-06-30  Gilles Espinasse  <g.esp@free.fr>
1859
1860         Fix `checking if gcc static flag -static works' test.
1861
1862         On my linux build tree, I receive yes answer in in every package I
1863         build except freetype for this test checking if gcc static flag
1864         `-static' works
1865
1866         On freetype, no is received, unless bzip2 and zlib are disabled using
1867
1868           ./configure --without-bzip2 --without-zlib
1869
1870         The reason is that bzip2 and zlib tests add `-lz' and `-lbz2' to
1871         LDFLAGS and this broke static flag test.
1872
1873         * builds/unix/configure.raw: Update CFLAGS and LDFLAGS only after
1874         LT_INIT has run.
1875
1876 2012-06-28  Infinality  <infinality@infinality.net>
1877
1878         [truetype] Fix various artifacts.
1879
1880         Verdana was broken in the original Infinality commit.  Also
1881         includes other minor fixes.
1882
1883         * src/truetype/ttsubpix.h: Updated.  Removed unused macros.
1884         (RASTERIZER_35_Rules): Add Verdana.
1885         (SKIP_NONPIXEL_Y_MOVES_Rules): Add Tahoma `s'.
1886         (MIRP_CVT_ZERO_Rules): Remove Verdana.
1887         (ALWAYS_SKIP_DELTAP_Rules): Add Russian char 0x438.
1888         (COMPATIBLE_WIDTHS_Rules): Rearrange some rules.
1889         (X_SCALING_Rules): Adjust Verdana `a' at 12 and 13 ppem.
1890
1891         * src/truetype/ttsubpix.c: Updated.
1892         (sph_set_tweaks): Re-execute fpgm always.
1893
1894 2012-06-28  Gilles Espinasse  <g.esp@free.fr>
1895
1896         Fix CFLAGS and LDFLAGS share configure test.
1897
1898         * builds/unix/configure.raw: Fix typo.
1899
1900 2012-06-28  Werner Lemberg  <wl@gnu.org>
1901
1902         [truetype] Set the `subpixel_positioned' flag unconditionally.
1903
1904         This is how the code currently behaves.
1905
1906         * src/truetype/ttgload.c (tt_loader_init): Do it.
1907
1908 2012-06-27  Werner Lemberg  <wl@gnu.org>
1909
1910         Fix conditional compilation.
1911
1912         * src/base/basepic.c: Use FT_CONFIG_OPTION_MAC_FONTS.
1913
1914 2012-06-27  Werner Lemberg  <wl@gnu.org>
1915
1916         Fix conditional compilation.
1917
1918         * include/freetype/internal/ftcalc.h (FT_MulDiv_No_Round): Don't
1919         enclose with `TT_USE_BYTECODE_INTERPRETER'; we now need the function
1920         elsewhere also.
1921
1922         * src/autofit/afcjk.h: Use AF_CONFIG_OPTION_CJK.
1923
1924         * src/truetype/ttgload.c (tt_loader_init): Fix compiler warning.
1925
1926         * src/truetype/ttinterp.c (Ins_MSIRP): Fix compiler warning.
1927
1928         * src/truetype/ttinterp.h: Use
1929         TT_CONFIG_OPTION_BYTECODE_INTERPRETER.
1930
1931 2012-06-26  Infinality  <infinality@infinality.net>
1932
1933         [truetype] Remove unused rounding functionality.
1934
1935         The subpixel hinting patch contained the concept of an adjustable
1936         number of gridlines per pixel.  This is no longer used due to x
1937         being completely ignored instead.  This will return some of the
1938         code to its existing state prior to the original Infinality
1939         commit.
1940
1941         * include/freetype/internal/ftobjs.h (FT_PIX_FLOOR_GRID,
1942         FT_PIX_ROUND_GRID, FT_PIX_CEIL_GRID): Removed.
1943
1944         * src/truetype/ttinterp.c: Updated.
1945         (Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid,
1946         Round_Up_To_Grid, Round_To_Double_Grid, Round_Super, Round_Super_45,
1947         SetSuperRound): Remove parameter to handle the number of grid lines per
1948         pixel.
1949         (SET_SuperRound, ROUND_None, CUR_Func_round): Updated.
1950         (DO_SROUND, DOS45ROUND, DO_ODD, DO_EVEN): Updated.
1951         (DO_ROUND, DO_NROUND): Updated.
1952         (Move_Zp2_Point, Ins_SHPIX, Ins_MSIRP, Ins_MDAP, Ins_MIAP,
1953         Ins_MDRP, Ins_MIRP): Perform Round_None instead of calling a modified
1954         rounding function.  Remove gridlines_per_pixel.  Create a local
1955         variable to store control value cutin. Simplify the conditional for
1956         ignore_x_mode.  Adjust rounding calls to pass only two values.
1957
1958 2012-06-25  Werner Lemberg  <wl@gnu.org>
1959
1960         [cff] Fix Savannah bug #36705.
1961
1962         Handle numbers like 2.001 correctly.
1963
1964         * src/cff/cffparse.c (cff_parse_real): Avoid negative values for
1965         `shift'.
1966
1967 2012-06-18  Infinality  <infinality@infinality.net>
1968
1969         [truetype] Support subpixel hinting.
1970
1971         This is the large, famous `Infinality' patch to support ClearType
1972         bytecode which has been available from
1973         http://www.infinality.net/blog/ for some time, and which has been
1974         refined over the last years.  While still experimental, it is now
1975         mature enough to be included directly into FreeType.
1976
1977         Most of the code is based on the ClearType whitepaper written by
1978         Greg Hitchcock
1979
1980           http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
1981
1982         which gives a detailed overview of the necessary changes to the
1983         Microsoft rasterizer so that older fonts are supported.  However, a
1984         lot of details are still missing, and this patches provides a
1985         framework to easily handle rendering issues down to the glyph level
1986         of certain fonts.
1987
1988         Note that ClearType support is not completely implemented!  In
1989         particular, full support for the options `compatible_widths',
1990         `symmetrical_smoothing, and `bgr' (via the GETINFO bytecode
1991         instruction) is missing.
1992
1993         * src/truetype/ttsubpix.c: New file, providing code to handle
1994         `tweaks', this is, rules for certain glyphs in certain fonts
1995         (including wildcards) which need a special treatment.
1996
1997         * src/truetype/ttsubpix.h: New file, holding the tweaking rules.
1998
1999         * include/freetype/config/ftoption.h, src/devel/ftoption.h
2000         (TT_CONFIG_OPTION_SUBPIXEL_HINTING): New macro.
2001
2002         * include/freetype/internal/ftobjs.h (FT_PIX_FLOOR_GRID,
2003         FT_PIX_ROUND_GRID, FT_PIX_CEIL_GRID): New macros.
2004
2005         * src/truetype/truetype.c [TT_USE_BYTECODE_INTERPRETER]: Include
2006         `ttsubpix.c'.
2007
2008         * src/truetype/ttgload.c: Include `ttsubpix.h'.
2009         [All changes below are guarded by TT_CONFIG_OPTION_SUBPIXEL_HINTING.]
2010
2011         (tt_get_metrics): Set tweak flags.
2012         (TT_Hint_Glyph): Call `FT_Outline_EmboldenXY' if necessary.
2013         (TT_Process_Simple_Glyph): Compensate emboldening if necessary.
2014         (compute_glyph_metrics): Handle `compatible widths' option.
2015         (tt_loader_init): Handle ClearType GETINFO information bits.
2016
2017         * src/truetype/rules.mk (TT_DRC_SRC): Updated.
2018
2019         * src/truetype/ttinterp.c: Include `ttsubpix.h'.
2020         [Where necessary, changes below are guarded by
2021         TT_CONFIG_OPTION_SUBPIXEL_HINTING.]
2022
2023         (Direct_Move, Direct_Move_X): Extended.
2024         (Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid,
2025         Round_Up_To_Grid, Round_To_Double_Grid, Round_Super, Round_Super_45,
2026         SetSuperRound): Add parameter to handle the number of grid lines per
2027         pixel.
2028         (SET_SuperRound, ROUND_None, CUR_Func_round): Updated.
2029         (DO_SROUND, DOS45ROUND, DO_ODD, DO_EVEN): Updated.
2030         (DO_ROUND, DO_NROUND): Updated.
2031         (DO_RS): Take care of `Typeman' bytecode patterns.
2032         (Ins_FDEF): Add some debugging code.  Commented out.
2033         (Ins_ENDF): Restore state.
2034         (Ins_CALL, Ins_LOOPCALL): Handle inline delta functions.
2035         (Ins_MD): Handle `Vacuform' rounds.
2036         (Move_Zp2_Point, Ins_SHPIX, Ins_MSIRP, Ins_MDAP, Ins_MIAP,
2037         Ins_MDRP, Ins_MIRP): Handle tweaks.
2038         (Ins_ALIGNRP): Add tweak guard.
2039         (Ins_IUP, Ins_DELTAP): Handle tweaks.
2040         (Ins_GETINFO): Handle new ClearType bits.
2041         (TT_RunIns): Handle tweaks.
2042
2043         * src/truetype/ttinterp.h: Updated.
2044         (SPH_TweakRule, SPH_ScaleRule): New structures for tweaks.
2045         (TT_ExecContextRec): Add members for subpixel hinting support.
2046
2047         * src/truetype/ttobjs.h (TT_DefRecord): Add `inline_delta' member.
2048
2049 2012-06-15  Werner Lemberg  <wl@gnu.org>
2050
2051         * Version 2.4.10 released.
2052         =========================
2053
2054
2055         Tag sources with `VER-2-4-10'.
2056
2057         * docs/VERSION.DLL: Update documentation and bump version number to
2058         2.4.10.
2059
2060         * README, Jamfile (RefDoc),
2061         builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
2062         builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
2063         builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
2064         builds/win32/visualc/freetype.dsp,
2065         builds/win32/visualc/freetype.vcproj,
2066         builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
2067         builds/win32/visualce/freetype.vcproj,
2068         builds/win32/visualce/index.html,
2069         builds/wince/vc2005-ce/freetype.vcproj,
2070         builds/wince/vc2005-ce/index.html,
2071         builds/wince/vc2008-ce/freetype.vcproj,
2072         builds/wince/vc2008-ce/index.html: s/2.4.9/2.4.10/, s/249/2410/.
2073
2074         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 10.
2075
2076         * builds/unix/configure.raw (version_info): Set to 15:0:9.
2077
2078 2012-06-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
2079
2080         * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Improve spacing.
2081
2082         * docs/CHANGES: Updated.
2083
2084 2012-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2085
2086         * builds/exports.mk: Add CCexe_CFLAGS and CCexe_LDFLAGS.
2087
2088         to pass special compiler/linker flags under cross development.
2089         Suggested by Savannah bug #36367.
2090
2091         ChangeLog on 2010-07-15 saying as they were removed was wrong
2092         for the official trunk of FreeType2.  This commit is the first
2093         introduction of them.
2094
2095 2012-06-14  Werner Lemberg  <wl@gnu.org>
2096
2097         * docs/CHANGES: Updated.
2098
2099 2012-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2100
2101         [truetype] Add new versions of NEC FA family to tricky font list.
2102
2103         NEC FA family dated in 1996 have different checksum.
2104         Reported by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>; see
2105
2106           http://lists.gnu.org/archive/html/freetype-devel/2012-06/msg00023.html
2107
2108         * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): 4 sets
2109         of fpgm & prep table checksums for FA-Gothic, FA-Minchou,
2110         FA-RoundedGothicM, FA-RoundedGothicB are added.  The family
2111         names in sample PDF are truncated, thus the list of the
2112         family names in tt_check_trickyness_family() is not updated yet.
2113
2114 2012-06-06  Werner Lemberg  <wl@gnu.org>
2115
2116         [ftraster] Fix rounding issue causing visual artifacts.
2117
2118         Problem reported by jola <hans-jochen.lau@lhsystems.com>; see
2119
2120           http://lists.gnu.org/archive/html/freetype-devel/2012-05/msg00036.html
2121
2122         * src/raster/ftraster.c (SMulDiv_No_Round): New macro.
2123         (Line_Up): Use it.
2124         * src/raster/ftmisc.h (FT_MulDiv_No_Round): Copied from `ftcalc.c'.
2125
2126 2012-05-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
2127
2128         * src/base/ftoutln.c (FT_Outline_Get_Orientation): Simplify.
2129
2130         We now use the cross product of the direction vectors to compute the
2131         outline's orientation.
2132
2133 2012-05-28  Werner Lemberg  <wl@gnu.org>
2134
2135         * docs/CHANGES: Updated.
2136
2137 2012-05-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
2138
2139         New function FT_Outline_EmboldenXY.
2140
2141         * include/freetype/ftoutln.h (FT_Outline_EmboldenXY): Define it.
2142
2143         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Implement it, using a
2144         simplified embolding algorithm.
2145         (FT_Outline_Embolden): Make it a special case of
2146         `FT_Outline_EmboldenXY'
2147
2148 2012-05-07  Werner Lemberg  <wl@gnu.org>
2149
2150         [type1] Fix Savannah bug #36386.
2151
2152         * src/type1/t1load.c (t1_load_keyword): Ignore keyword if context is
2153         not valid.
2154
2155 2012-04-07  Werner Lemberg  <wl@gnu.org>
2156
2157         Remove compiler warning.
2158
2159         * src/truetype/ttgload.c (TT_Load_Glyph)
2160         [!TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Access `glyph->face' directly.
2161
2162 2012-03-28  Werner Lemberg  <wl@gnu.org>
2163
2164         [autofit] Properly copy scaler flags to script metrics object.
2165
2166         Without this patch, only the dummy and cjk autohinter modules get
2167         them (since they copy the whole scaler object).
2168
2169         * src/autofit/aflatin.c (af_latin_metrics_scale),
2170         src/autofit/aflatin2.c (af_latin2_metrics_scale): Implement it.
2171
2172 2012-03-22  Alexei Podtelezhnikov  <apodtele@gmail.com>
2173
2174         [bdflib] Remove redundant macro.
2175
2176         * src/bdf/bdflib.c (isdigok): Remove and replace with sbitset, which
2177         is exactly the same.
2178
2179 2012-03-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2180
2181         [configure] Fix Savannah bug #35644.
2182
2183         * builds/unix/configure.raw: Check `-ansi' flag works even if gcc
2184         is used.  Bionic libc headers for Android lose the consistency
2185         when they are parsed with __STDC_VERSION__ older than 199901L or
2186         __STRICT_ANSI__.
2187
2188 2012-03-20  Werner Lemberg  <wl@gnu.org>
2189
2190         [bdf] Improvement to Savannah bug #35656.
2191
2192         * src/bdf/bdflib.c (isdigok): Add cast, as suggested in report.
2193
2194 2012-03-17  Chris Liddell  <chris.liddell@artifex.com>
2195
2196         [type1] Fix Savannah bug #35847.
2197
2198         * src/type1/t1load.c (parse_subrs): Fix the loop exit condition;
2199         we want to exit when we have run out of data.
2200
2201 2012-03-16  Werner Lemberg  <wl@gnu.org>
2202
2203         [bdf] Really fix Savannah bug #35658.
2204
2205         * src/bdf/bdflib.c (_bdf_list_split): Add one more `field' initializer.
2206
2207 2012-03-14  Yann Droneaud  <yann@droneaud.fr>
2208
2209         [sfnt] Make arrays static like all others.
2210
2211         * src/sfnt/ttload.c (tt_face_load_maxp, tt_face_load_os2),
2212         src/sfnt/ttmtx.c (tt_face_load_hhea): Add `static' keyword to frame
2213         fields.
2214
2215 2012-03-14  Huw Davies  <huw@codeweavers.com>
2216
2217         [sfnt] A refinement of the previous commit.
2218
2219         * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
2220         tt_name_entry_ascii_from_other): Stop at null byte.
2221
2222 2012-03-14  Huw Davies  <huw@codeweavers.com>
2223
2224         [sfnt] Add `name' table compatibility to MS Windows.
2225
2226         * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
2227         tt_name_entry_ascii_from_other): Don't replace `\0' with question
2228         marks when converting strings.
2229
2230 2012-03-14  Werner Lemberg  <wl@gnu.org>
2231
2232         [type1] Fix Savannah bug #35833.
2233
2234         Based on the patch given in the bug report.
2235
2236         * src/type1/t1load.c (IS_INCREMENTAL): New macro.
2237         (read_binary_data): Add parameter `incremental'.
2238         Update all callers using `IS_INCREMENTAL'.
2239
2240 2012-03-11  Werner Lemberg  <wl@gnu.org>
2241
2242         [autofit] Return correct linear advance width values.
2243
2244         This was quite a subtle bug which accidentally showed up with glyph
2245         `afii10023' of arial.ttf (version 2.76).  This glyph is a composite;
2246         the first component, `E', has an advance width of 1366 font units,
2247         while the advance width of the composite itself (which looks like
2248         uppercase `E' with dieresis) is 1367 font units.  I think this is
2249         actually a bug in the font itself, because there is no reason that
2250         this glyph has not the same width as uppercase `E' without the
2251         dieresis.  Anyway, it helped identify this problem.
2252
2253         Using the TrueType hinter, the correct value (1367) of `afii10023'
2254         was returned, but the autohinter mysteriously returned 1366.
2255
2256         Digging in the code showed that the autohinter recursively calls
2257         FT_Load_Glyph to load the glyph, adding the FT_LOAD_NO_SCALE load
2258         flag.  However, the `linearHoriAdvance' field is still returned as a
2259         scaled value.  To avoid scaling twice, the old code in autofit reset
2260         `linearHoriAdvance', using the `horiAdvance' field.  This seemed to
2261         work since FT_LOAD_NO_SCALE was in use, but it failed actually,
2262         because `horiAdvance' is defined as the distance of the first
2263         subglyph's phantom points, which in turn are initialized using the
2264         advance width of the first subglyph.  And as the given example
2265         shows, these widths can differ.
2266
2267         * src/autofit/afloader.c (af_loader_load_g): Temporarily set
2268         FT_LOAD_LINEAR_DESIGN while calling FT_Load_Glyph to get unscaled
2269         values for the linear advance widths.
2270
2271 2012-03-10  Werner Lemberg  <wl@gnu.org>
2272
2273         [truetype] Fix SSW instruction.
2274
2275         * src/truetype/ttinterp.c (DO_SSW): SSW *does* use font units.  For
2276         verification, it took some time to find a font which actually uses
2277         this instruction.
2278
2279 2012-03-09  Vinnie Falco  <vinnie.falco@gmail.com>
2280
2281         Prepare source code for amalgamation.
2282
2283         * include/freetype/freetype.h: Swap order of preprocessor blocks.
2284
2285 2012-03-08  Werner Lemberg  <wl@gnu.org>
2286
2287         * Version 2.4.9 released.
2288         =========================
2289
2290
2291         Tag sources with `VER-2-4-9'.
2292
2293         * docs/CHANGES: Updated.
2294
2295         * docs/VERSION.DLL: Update documentation and bump version number to
2296         2.4.9.
2297
2298         * README, Jamfile (RefDoc),
2299         builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
2300         builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
2301         builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
2302         builds/win32/visualc/freetype.dsp,
2303         builds/win32/visualc/freetype.vcproj,
2304         builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
2305         builds/win32/visualce/freetype.vcproj,
2306         builds/win32/visualce/index.html,
2307         builds/wince/vc2005-ce/freetype.vcproj,
2308         builds/wince/vc2005-ce/index.html,
2309         builds/wince/vc2008-ce/freetype.vcproj,
2310         builds/wince/vc2008-ce/index.html: s/2.4.8/2.4.9/, s/248/249/.
2311
2312         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 9.
2313
2314         * builds/unix/configure.raw (version_info): Set to 14:1:8.
2315
2316 2012-03-08  Werner Lemberg  <wl@gnu.org>
2317
2318         [bdf] Add missing overflow check.
2319
2320         * src/bdf/bdflib.c (_bdf_parse_glyphs) <BITMAP>: Add threshold for
2321         `glyph->bpr'.
2322
2323 2012-03-07  Vinnie Falco  <vinnie.falco@gmail.com>
2324
2325         Prepare source code for amalgamation.
2326
2327         * src/autofit/aferrors.h, src/bdf/bdferror.h, src/bzip2/ftbzip2.c,
2328         src/cache/ftcerror.h, src/cff/cfferrs.h, src/cid/ciderrs.h,
2329         src/gxvalid/gxverror.h, src/gzip/ftgzip.c, src/lzw/ftlzw.c,
2330         src/otvalid/otverror.h, src/pcf/pcferror.h, src/pfr/pfrerror.h,
2331         src/psaux/psauxerr.h, src/pshinter/pshnterr.h,
2332         src/psnames/psnamerr.h, src/raster/rasterrs.h, src/sfnt/sferrors.h,
2333         src/smooth/ftsmerrs.h, src/truetype/tterrors.h,
2334         src/type1/t1errors.h, src/type42/t42error.h, src/winfonts/fnterrs.h:
2335         Add #undef FT_ERR_PREFIX before #define FT_ERR_PREFIX.
2336
2337 2012-03-03  Werner Lemberg  <wl@gnu.org>
2338
2339         Fix Savannah bug #35660.
2340
2341         For some divisions, we use casts to 32bit entities.  Always guard
2342         against division by zero with these casts also.
2343
2344         * src/base/ftcalc.c (ft_div64by32): Remove redundant cast.
2345         (FT_MulDiv, FT_MulDiv_No_Round): Add 32bit cast.
2346         (FT_DivFix): Add 32bit cast (this omission triggered the bug).
2347
2348 2012-03-03  Werner Lemberg  <wl@gnu.org>
2349
2350         [psaux] Fix handling of track kerning.
2351
2352         * src/psaux/afmparse.c (afm_parse_track_kern): Don't inverse sign
2353         for `min_kern'.  It is indeed quite common that track kerning
2354         *increases* spacing for very small sizes.
2355
2356 2012-03-02  Werner Lemberg  <wl@gnu.org>
2357
2358         [truetype] Fix Savannah bug #35689.
2359
2360         * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check first outline
2361         point.
2362
2363 2012-03-01  Werner Lemberg  <wl@gnu.org>
2364
2365         [bdf] Fix Savannah bug #35656.
2366
2367         * src/bdf/bdflib.c (_bdf_parse_glyphs) <_BDF_BITMAP>: Check validity
2368         of nibble characters instead of accessing `a2i' array.
2369
2370 2012-03-01  Werner Lemberg  <wl@gnu.org>
2371
2372         [winfonts] Fix Savannah bug #35659.
2373
2374         * src/winfonts/winfnt.c (FNT_Face_Init): Check number of glyphs.
2375
2376 2012-03-01  Werner Lemberg  <wl@gnu.org>
2377
2378         [bdf] Fix Savannah bug #35658.
2379
2380         * src/bdf/bdflib.c (_bdf_list_split): Initialize `field' elements
2381         properly.
2382
2383 2012-03-01  Werner Lemberg  <wl@gnu.org>
2384
2385         [psaux] Fix Savannah bug #35657.
2386
2387         If in function `skip_spaces' the routine `skip_comment' comes to the
2388         end of buffer, `cur' is still increased by one, so we need to check
2389         for `p >= limit' and not `p == limit'.
2390
2391         * src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed,
2392         PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Fix boundary checking.
2393
2394 2012-03-01  Werner Lemberg  <wl@gnu.org>
2395
2396         [truetype] Fix Savannah bug #35646.
2397
2398         * src/truetype/ttinterp.c (Ins_MIRP): Typo, present since ages.  The
2399         code is now in sync with the other operators (e.g. MSIRP) which
2400         modify twilight points.
2401
2402 2012-03-01  Werner Lemberg  <wl@gnu.org>
2403
2404         [bdf] Fix Savannah bug #35643.
2405
2406         * src/bdf/bdflib.c (_bdf_list_ensure): Bring code in sync with
2407         comment before `_bdf_list_split', this is, really allocate at least
2408         five `field' elements.
2409
2410 2012-03-01  Werner Lemberg  <wl@gnu.org>
2411
2412         [bdf] Fix Savannah bug #35641.
2413
2414         * src/bdf/bdflib.c (_bdf_parse_glyphs) <DWIDTH, BBX>: Abort if
2415         _BDF_ENCODING isn't set.  We need this because access to the `glyph'
2416         variable might be undefined otherwise.
2417
2418 2012-03-01  Werner Lemberg  <wl@gnu.org>
2419
2420         [truetype] Fix Savannah bug #35640.
2421
2422         * src/truetype/ttinterp.c (SkipCode, TT_RunIns): Fix boundary check
2423         for NPUSHB and NPUSHW instructions.
2424
2425 2012-02-29  Werner Lemberg  <wl@gnu.org>
2426
2427         [truetype] Fix Savannah bug #35601.
2428
2429         * src/truetype/ttinterp.c (Ins_SHZ): Use number of points instead of
2430         last point for loop.
2431         Also remove redundant boundary check.
2432
2433 2012-02-29  Werner Lemberg  <wl@gnu.org>
2434
2435         [truetype] Remove redundant check.
2436
2437         * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Remove redundant
2438         second check for ordered contour start points.
2439
2440 2012-02-29  Werner Lemberg  <wl@gnu.org>
2441
2442         [truetype] Make SHC instruction behave similar to MS rasterizer.
2443
2444         * src/truetype/ttinterp.c (Ins_SHC): Handle virtual contour in
2445         twilight zone.
2446
2447 2012-02-29  Alexei Podtelezhnikov  <apodtele@gmail.com>
2448
2449         Avoid modulo operators against a power-of-two denominator.
2450
2451         * src/afcjk.c (af_hint_normal_stem), src/base/ftoutln.c
2452         (ft_contour_has), src/cff/cffgload.c (cff_decoder_parse_charstrings)
2453         <cff_op_vvcurveto, cff_op_hhcurveto, cff_op_hvcurveto>,
2454         src/gxvalid/gxvcommn.c (GXV_32BIT_ALIGNMENT_VALIDATE),
2455         src/gxvalid/gxvfeat.c (gxv_feat_setting_validate): Replace `%' with
2456         `&' operator.
2457
2458 2012-02-29  Werner Lemberg  <wl@gnu.org>
2459
2460         [autofit] Don't synchronize digit widths for light rendering mode.
2461
2462         We don't hint horizontally in this mode.
2463
2464         * src/autofit/afloader.c (af_loader_load_g) <Hint_Metrics>:
2465         Implement it.
2466
2467 2012-02-26  Alexei Podtelezhnikov  <apodtele@gmail.com>
2468
2469         [type42] Minor code optimization (again).
2470
2471         * src/type42/t42parse.c (t42_parse_sfnts): Simplify previous change.
2472
2473 2012-02-26  Mateusz Jurczyk  <mjurczyk@google.com>
2474             Werner Lemberg  <wl@gnu.org>
2475
2476         [smooth] Fix Savannah bug #35604.
2477
2478         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use `FT_Pos'
2479         instead of `FT_UInt' for some variables and update comparisons
2480         accordingly.  A detailed analysis can be found in the bug report.
2481
2482 2012-02-26  Alexei Podtelezhnikov  <apodtele@gmail.com>
2483
2484         [type42] Minor code optimization.
2485
2486         * src/type42/t42parse.c (t42_parse_sfnts): Use bitmask instead of
2487         modulo operator.
2488
2489 2012-02-26  Werner Lemberg  <wl@gnu.org>
2490
2491         * docs/CHANGES: Updated.
2492
2493 2012-02-26  Werner Lemberg  <wl@gnu.org>
2494
2495         [type1] Fix Savannah bug #35608.
2496
2497         * src/type1/t1parse.c (T1_Get_Private_Dict): Reject too short
2498         dictionaries.
2499
2500 2012-02-26  Werner Lemberg  <wl@gnu.org>
2501
2502         [bdf] Support `ENCODING -1 <n>' format.
2503
2504         * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Implement it.
2505
2506 2012-02-26  Werner Lemberg  <wl@gnu.org>
2507
2508         [bdf] Fix Savannah bug #35607.
2509
2510         * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Normalize
2511         negative encoding values.
2512
2513 2012-02-26  Werner Lemberg  <wl@gnu.org>
2514
2515         [type1] Fix Savannah bug #35606.
2516
2517         * src/type1/t1load.c (parse_subrs): Add proper guards for `strncmp'.
2518
2519         * src/psaux/psobjs.c (ps_parser_skip_PS_token): Emit error message
2520         only if cur < limit.
2521
2522 2012-02-25  Werner Lemberg  <wl@gnu.org>
2523
2524         [pcf] Fix Savannah bug #35603.
2525
2526         * src/pcf/pcfread.c (pcf_get_properties): Assure final zero byte in
2527         `strings' array.
2528
2529 2012-02-25  Werner Lemberg  <wl@gnu.org>
2530
2531         [type42] Fix Savannah bug #35602.
2532
2533         * src/type42/t42parse.c (t42_parse_sfnts): Check `string_size' more
2534         thoroughly.
2535
2536 2012-02-25  Werner Lemberg  <wl@gnu.org>
2537
2538         [bdf] Fix Savannah bugs #35599 and #35600.
2539
2540         * src/bdf/bdflib.c (ACMSG16): New warning message.
2541         (_bdf_parse_glyphs) <_BDF_BITMAP>: Check line length.
2542
2543 2012-02-24  Werner Lemberg  <wl@gnu.org>
2544
2545         [bdf] Fix Savannah bugs #35597 and #35598.
2546
2547         * src/bdf/bdflib.c (_bdf_is_atom): Fix handling of property value.
2548
2549 2012-02-24  Vinnie Falco  <vinnie.falco@gmail.com>
2550
2551         Prepare source code for amalgamation (6/6).
2552
2553         * src/cff/cffdrivr.c: s/Load_Glyph/cff_glyph_load/.
2554
2555         * src/cid/cidload.c: s/parse_font_matrix/cid_parse_font_matrix/.
2556         s/t1_init_loader/cid_init_loader/.
2557         s/t1_done_loader/cid_done_loader/.
2558
2559         * src/pxaux/t1cmap.c: s/t1_get_glyph_name/psaux_get_glyph_name/.
2560
2561         * src/truetype/ttdriver.c: s/Load_Glyph/tt_glyph_load/.
2562
2563         * src/type1/t1load.c: s/parse_font_matrix/t1_parse_font_matrix/.
2564
2565 2012-02-24  Vinnie Falco  <vinnie.falco@gmail.com>
2566
2567         Prepare source code for amalgamation (5/6).
2568
2569         * include/freetype/fterrors.h: Undefine FT_KEEP_ERR_PREFIX after
2570         using it.
2571
2572 2012-02-22  Vinnie Falco  <vinnie.falco@gmail.com>
2573
2574         Prepare source code for amalgamation (4/6).
2575
2576         * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine RAS_ARG,
2577         RAS_ARGS, RAS_VAR, and RAS_VARS before defining it.
2578
2579         * src/smooth/ftgrays.c: s/TRaster/black_TRaster/,
2580         s/PRaster/black_PRaster/.
2581         * src/raster/ftraster.c: s/TRaster/gray_TRaster/,
2582         s/PRaster/gray_PRaster/.
2583
2584 2012-02-20  Vinnie Falco  <vinnie.falco@gmail.com>
2585
2586         Prepare source code for amalgamation (3/6).
2587
2588         * src/smooth/ftgrays.c: s/TWorker/black_TWorker/,
2589         s/PWorker/black_PWorker/.
2590         * src/raster/ftraster.c: s/TWorker/gray_TWorker/,
2591         s/PWorker/gray_PWorker/.
2592
2593 2012-02-20  Vinnie Falco  <vinnie.falco@gmail.com>
2594
2595         Prepare source code for amalgamation (2/6).
2596
2597         * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine FLOOR,
2598         CEILING, TRUNC, and SCALED before defining it.
2599
2600 2012-02-20  Vinnie Falco  <vinnie.falco@gmail.com>
2601
2602         Prepare source code for amalgamation (1/6).
2603
2604         See discussion starting at
2605
2606           http://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00037.html
2607
2608         * src/smooth/ftgrays.c: s/TBand/gray_TBand/.
2609         * src/raster/ftraster.c: s/TBand/black_TBand/.
2610
2611 2012-02-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
2612
2613         [autofit] Fix outline flags.
2614
2615         * src/autofit/afloader.c (af_loader_load_g): Don't reassign
2616         `outline.flags' so that this information is preserved.  See
2617         discussion starting at
2618
2619           http://lists.gnu.org/archive/html/freetype-devel/2012-02/msg00046.html
2620
2621 2012-02-11  Werner Lemberg  <wl@gnu.org>
2622
2623         [truetype] Fix Savannah bug #35466.
2624
2625         Jump instructions are now bound to the current function.  The MS
2626         Windows rasterizer behaves the same, as confirmed by Greg Hitchcock.
2627
2628         * src/truetype/ttinterp.h (TT_CallRec): Add `Cur_End' element.
2629         * src/truetype/ttobjs.h (TT_DefRecord): Add `end' element.
2630
2631         * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Check upper
2632         bound of jump address.
2633         (Ins_FDEF, Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns): Updated.
2634
2635 2012-02-11  Werner Lemberg  <wl@gnu.org>
2636
2637         We don't use `extensions'.
2638
2639         * include/freetype/internal/ftobjs.h (FT_DriverRec): Remove
2640         `extensions' field.
2641
2642 2012-02-11  Werner Lemberg  <wl@gnu.org>
2643
2644         Clean up `generic' fields.
2645
2646         * include/freetype/internal/ftobjs.h (FT_ModuleRec, FT_LibraryRec):
2647         Remove `generic' field since users can't access it.
2648
2649         * src/base/ftobjs.c (FT_Done_GlyphSlot): Call `generic.finalizer' as
2650         advertised in the documentation of FT_Generic.
2651         (Destroy_Module, FT_Done_Library): Updated to changes in `ftobjs.h'.
2652
2653 2012-02-07  Werner Lemberg  <wl@gnu.org>
2654
2655         [autofit] Harmonize function arguments.
2656
2657         * src/autofit/afloader.c, src/autofit/afloader.h: Use `FT_Int32' for
2658         `load_flags'.
2659
2660 2012-02-07  Werner Lemberg  <wl@gnu.org>
2661
2662         * src/cff/cffobjs.c (cff_face_init): Remove unnecessary casts.
2663
2664 2012-01-17  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2665
2666         [gxvalid] Fix Savannah bug #35286.
2667
2668         Patch submitted by anonymous reporter.
2669
2670         * src/gxvalid/gxvcommn.c (gxv_XStateTable_subtable_setup):
2671         gxv_set_length_by_ulong_offset() must be called with 3, not 4,
2672         the number of the subtables in the state tables; classTable,
2673         stateArray, entryTable.
2674
2675 2012-01-17  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2676
2677         [raccess] Modify for PIC build.
2678
2679         Based on the patch provided by Erik Dahlstrom <ed@opera.com>,
2680         http://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00010.html
2681
2682         Also `raccess_guess_table[]' and `raccess_rule_by_darwin_vfs()'
2683         are renamed with `ft_' suffixes.
2684
2685         * src/base/ftbase.h: `raccess_rule_by_darwin_vfs()' is renamed
2686         to `ft_raccess_rule_by_darwin_vfs()'.
2687         * src/base/ftobjs.c: Ditto.
2688
2689         * src/base/ftrfork.c: Declarations of FT_RFork_Rule,
2690         raccess_guess_rec, are moved to...
2691         * include/freetype/internal/ftrfork.h: Here.
2692
2693         * include/freetype/internal/ftrfork.h:
2694         FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END} macros are defined
2695         to replace raccess_guess_table[] in both of PIC and non-PIC
2696         modes.
2697         * src/base/ftrfork.c: raccess_guess_table[] array is rewritten
2698         by FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END}.
2699
2700         * src/base/basepic.h (BasePIC): Add `ft_raccess_guess_table'
2701         storage.  (FT_RACCESS_GUESS_TABLE_GET): New macro to retrieve
2702         the function pointer from `ft_raccess_guess_table' storage in
2703         `BasePIC' structure.
2704         * src/base/ftrfork.c (FT_Raccess_Guess): Rewritten with
2705         FT_RACCESS_GUESS_TABLE_GET.
2706         (raccess_get_rule_type_from_rule_index): Add `library' as the
2707         first argument to the function, to retrieve the storage of
2708         `ft_raccess_guess_table' from it.  Also `raccess_guess_table'
2709         is replaced by FT_RACCESS_GUESS_TABLE_GET.
2710         (ft_raccess_rule_by_darwin_vfs): Ditto.
2711
2712 2012-01-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2713
2714         Remove trailing spaces.
2715
2716 2012-01-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2717
2718         Formatting PIC related sources.
2719
2720         * src/autofit/afpic.c: Harmonize to FT2 coding conventions.
2721         * src/base/basepic.c: Ditto.
2722         * src/base/ftpic.c: Ditto.
2723         * src/cff/cffpic.c: Ditto.
2724         * src/pshinter/pshpic.c: Ditto.
2725         * src/psnames/pspic.c: Ditto.
2726         * src/raster/rastpic.c: Ditto.
2727         * src/sfnt/sfntpic.c: Ditto.
2728         * src/smooth/ftspic.c: Ditto.
2729         * src/truetype/ttpic.c: Ditto.
2730
2731 2012-01-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2732
2733         [autofit] Fix the inclusion of `aflatin2.h' in PIC file.
2734
2735         * src/autofit/afpic.c: Include `aflatin2.h' when
2736         FT_OPTION_AUTOFIT2 is defined, as afglobal.c does so.
2737         Unconditionally inclusion causes declared but unimplemented
2738         warning by GCC 4.6.
2739
2740 2012-01-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2741
2742         [cff] Remove redundant declarations of cff_cmap_XXX_class_rec.
2743
2744         * src/cff/cffpic.c: The declarations of
2745         FT_Init_Class_cff_cmap_encoding_class_rec() and
2746         FT_Init_Class_cff_cmap_unicode_class_rec() are removed.
2747         They can be obtained by the inclusion of cffcmap.h.
2748         cffcmap.h invokes FT_DECLARE_CMAP_CLASS() and it declares
2749         FT_Init_Class_cff_cmap_encoding_class_rec() etc in PIC mode.
2750
2751 2012-01-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2752
2753         Fix redundant declaration warning in PIC mode.
2754
2755         Originally FT_DEFINE_{DRIVER,MODULE,RENDERER}() macros were
2756         designed to declare xxx_pic_{free,init} by themselves.
2757         Because these macros are used at the end of the module
2758         interface (e.g. ttdriver.c) and the wrapper source to build
2759         a module as a single object (e.g. truetype.c) includes
2760         the PIC file (e.g. ttpic.c) before the module interface,
2761         these macros are expanded AFTER xxx_pic_{free,init} body
2762         when the modules are built as single object.
2763         The declaration after the implementation causes the redundant
2764         declaration warnings, so the declarations are moved to module
2765         PIC headers (e.g. ttpic.h).  Separating to other header files
2766         are needed for multi build.
2767
2768         * include/freetype/internal/ftdriver.h (FT_DEFINE_DRIVER):
2769         Remove class_##_pic_free and class_##_pic_init declarations.
2770         * include/freetype/internal/ftobjs.h (FT_DEFINE_RENDERER,
2771         FT_DEFINE_MODULE): Ditto.
2772
2773         * src/base/basepic.h: Insert a comment and fix coding style.
2774         * src/autofit/afpic.h: Declare autofit_module_class_pic_{free,
2775         init}.
2776         * src/cff/cffpic.h: Declare cff_driver_class_pic_{free,init}.
2777         * src/pshinter/pshpic.h: Declare pshinter_module_class_pic_{free,
2778         init}.
2779         * src/psnames/pspic.h: Declare psnames_module_class_pic_{free,
2780         init}.
2781         * src/raster/rastpic.h: Declare
2782         ft_raster{1,5}_renderer_class_pic_{free,init}
2783         * src/sfnt/sfntpic.h: Declare sfnt_module_class_pic_{free,init}.
2784         * src/smooth/ftspic.h: Declare
2785         ft_smooth_{,lcd_,lcdv_}renderer_class_pic_{free,init}.
2786         * src/truetype/ttpic.h: Declare tt_driver_class_pic_{free,init}.
2787
2788 2012-01-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2789
2790         Make pspic.c to include module error header to fix multi build.
2791
2792         * src/psnames/pspic.c: Include `psnamerr.h'.
2793
2794 2012-01-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2795
2796         [base] Fix a dereference of uninitialized variable in PIC mode.
2797
2798         * src/base/ftglyph.c (FT_Glyph_To_Bitmap): `glyph' must be
2799         set before derefering to obtain `library'.  The initialization
2800         of `clazz', `glyph', `library' and NULL pointer check are
2801         reordered to minimize PIC conditonals.
2802
2803 2012-01-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2804
2805         [base] Insert explicit cast for GCC 4.6 in PIC mode.
2806
2807         * src/base/ftinit.c (FT_Add_Default_Modules): Under PIC
2808         configuration, FT_DEFAULT_MODULES_GET returns
2809         FT_Module_Class** pointer, GCC 4.6 warns that
2810         const FT_Module_Class* const* variable is warned as
2811         inappropriate to store it.  To calm it, explicit cast is
2812         inserted.  Also `library' is checked to prevent the NULL
2813         pointer dereference in FT_DEFAULT_MODULES_GET.
2814
2815 2012-01-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2816
2817         Fix PIC build broken by d9145241fe378104ba4c12a42534549faacc92e6.
2818
2819         Under PIC configuration, FT_{CFF,PSCMAPS,SFNT,TT}_SERVICES_GET
2820         take no arguments but derefer the variable named `library'
2821         internally.
2822
2823         * src/cff/cffdrivr.c (cff_get_interface): Declare `library' and
2824         set it if non-NULL driver is passed.
2825         * src/truetype/ttdriver.c (tt_get_interface): Ditto.
2826
2827         * src/sfnt/sfdriver.c (sfnt_get_interface): Declare `library'
2828         under PIC configuration, and set it if non-NULL module is given.
2829         * src/psnames/psmodule.c (psnames_get_interface): Ditto.
2830
2831 2012-01-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2832
2833         Make PIC files include module error headers, to use the error codes
2834         with per-module prefix.
2835
2836         * src/autofit/afpic.c: Include `aferrors.h'.
2837         * src/cff/cffpic.c: Include `cfferrs.h'.
2838         * src/pshinter/pshpic.c: Include `pshnterr.h'.
2839         * src/raster/rastpic.c: Include `rasterrs.h'.
2840         * src/sfnt/sfntpic.c: Include `sferrors.h'.
2841         * src/smooth/ftspic.c: Include `ftsmerrs.h'.
2842         * src/truetype/ttpic.c: Include `tterrors.h'.
2843
2844 2012-01-04  Tobias Ringström  <tobias@ringis.se>
2845
2846         [truetype] Fix IP instruction if x_ppem != y_ppem.
2847
2848         * src/truetype/ttinterp.c (Ins_IP): Scale `orus' coordinates
2849         properly.
2850
2851 2012-01-02  Werner Lemberg  <wl@gnu.org>
2852
2853         Fix tracing message for `loca' table.
2854
2855         * src/truetype/ttpload.c (tt_face_get_location): Don't emit a
2856         warning message if the last `loca' entry references an empty glyph.
2857
2858 2011-12-10  Werner Lemberg  <wl@gnu.org>
2859
2860         Add some variable initializations.
2861         Reported by Richard COOK <rscook@unicode.org>.
2862
2863         * src/type1/t1driver.c (t1_ps_get_font_value): Initialize `val'.
2864         * src/smooth/ftgrays.c (gray_render_conic): Initialize `levels'
2865         earlier.
2866
2867 2011-12-08  Werner Lemberg  <wl@gnu.org>
2868
2869         Fix serious scaling bug in `FT_Get_Advances'.
2870
2871         * src/base/ftadvanc.c (FT_Get_Advances): Advance values returned by
2872         `FT_Load_Glyph' must be simply multiplied by 1024.
2873
2874 2011-12-08  Werner Lemberg  <wl@gnu.org>
2875
2876         * src/bdf/bdflib.c (_bdf_parse_start): Drop redundant error tracing.
2877
2878 2011-12-02  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2879
2880         [mac] Unify DARWIN_NO_CARBON with FT_MACINTOSH.
2881
2882         Originally FT_MACINTOSH was a pure auto macro and DARWIN_NO_CARBON
2883         was a configurable macro to disable Carbon-dependent code.  Because
2884         now configure script sets DARWIN_NO_CARBON by default and disables
2885         Darwin & Carbon-dependent codes, these macros can be unified.
2886         FT_MACINTOSH (undefined by default) is kept and DARWIN_NO_CARBON
2887         (defined by default) is removed, because DARWIN_NO_CARBON violates
2888         FT_XXX naming convention of public macros, and a macro configured by
2889         default is not portable for the building without configure (e.g.
2890         make devel).
2891
2892         * builds/unix/configure.raw: Define FT_MACINTOSH if Carbon-based
2893         old Mac font support is requested and Carbon is available.
2894         * builds/unix/ftconfig.in: Undefine FT_MACINTOSH when the support
2895         for Mac OS X without Carbon (e.g.  Mac OS X 10.4 for ppc64) is
2896         requested.
2897         * include/freetype/config/ftconfig.in: Ditto.
2898         * builds/vms/ftconfig.h: Ditto.
2899
2900         * src/base/ftbase.h: Remove DARWIN_NO_CARBON.
2901         * src/base/ftbase.c: Ditto.
2902         * src/base/ftobjs.c: Ditto.
2903         * src/base/ftrfork.c: Ditto.
2904
2905         * src/base/ftmac.c: Compile the body if FT_MACINTOSH is defined
2906         (same with TT_USE_BYTECODE_INTERPRETER in ttinterp.c).
2907         * builds/mac/ftmac.c: Ditto.
2908
2909         * builds/mac/FreeType.m68k_cfm.make.txt: Define FT_MACINTOSH.
2910         * builds/mac/FreeType.m68k_far.make.txt: Ditto.
2911         * builds/mac/FreeType.ppc_classic.make.txt: Ditto.
2912         * builds/mac/FreeType.ppc_carbon.make.txt: Ditto.
2913
2914 2011-11-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2915
2916         Fix Savannah bug #34728 (`make devel' on Mac OS X).
2917
2918         * builds/toplevel.mk: Check `/dev/null' to identify the Unix-
2919         like systems without `init' nor `hurd' (e.g. Mac OS X >= 10.4).
2920         * builds/unix/detect.mk: Ditto.
2921
2922 2011-11-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2923
2924         [apinames] Fix the overflow of signed integer hash.
2925
2926         * src/tools/apinames.c (names_add): Change the type of `h' from
2927         int to unsigned int, to prevent undefined behaviour in the
2928         overflow of signed integers (overflow of unsigned int is defined
2929         to be wrap around).  Found by clang test suggested by Sean
2930         McBride.
2931
2932 2011-11-30  Werner Lemberg  <wl@gnu.org>
2933
2934         [winfonts] Remove casts.
2935
2936         * src/winfonts/winfnt.c (winfnt_driver_class): Remove all casts and
2937         update affected functions.
2938         (FNT_Size_Select): Fix number of arguments.
2939
2940 2011-11-30  Werner Lemberg  <wl@gnu.org>
2941
2942         [type42] Remove casts.
2943
2944         * src/type42/t42driver.c (t42_driver_class): Remove all casts and
2945         update affected functions.
2946
2947         * src/type42/t42objs.c, src/type42/t42objs.h: Updated for t42driver
2948         changes.
2949
2950 2011-11-30  Werner Lemberg  <wl@gnu.org>
2951
2952         [type1] Remove casts.
2953
2954         * src/type1/t1driver.c (t1_driver_class): Remove all casts and
2955         update affected functions.
2956
2957         * src/type1/t1gload.c, src/type1/t1gload.h, src/type1/t1objs.c:
2958         Updated for t1driver changes.
2959         src/type1/t1objs.h (T1_Driver): Remove unused typedef.
2960         Updated for t1driver changes.
2961
2962 2011-11-27  Werner Lemberg  <wl@gnu.org>
2963
2964         [bdf] Fix Savannah bug #34896.
2965
2966         ENCODING now covers the whole Unicode range.
2967
2968         Note, however, that this change is quite expensive since it
2969         increases the size of three arrays by almost 400kByte in total.  The
2970         right fix is to replace the logic with something smarter.
2971         Additionally, there exist very old BDFs for three-byte CCCII
2972         encoding which exceeds the range of Unicode (another reason to have
2973         a smarter logic).
2974
2975         * src/bdf/bdf.h (bdf_font_t): Increase size of `nmod' and `umod'
2976         arrays.
2977         * src/bdf/bdflib.c (bdf_parse_t): Increase size of `have' array.
2978
2979 2011-11-27  Werner Lemberg  <wl@gnu.org>
2980
2981         [bdf] Improve tracing.
2982
2983         * src/bdf/bdflib.c (DBGMSG1, DBGMSG2): New macros.
2984         (_bdf_parse_glyphs): Use them.
2985
2986 2011-11-26  Werner Lemberg  <wl@gnu.org>
2987
2988         Improve tracing.
2989
2990         * src/bdf/bdfdrivr.c (BDF_Face_Done), src/pcf/pcfdrivr.c
2991         (PCF_Face_Done): Remove tracing message.
2992
2993         * src/bdf/bdfdrivr.c (BDF_Face_Init), src/cff/cffobjs.c
2994         (cff_face_init), src/cid/cidobjs.c (cid_face_init),
2995         src/pfr/pfrobjs.c (pfr_face_init), src/sfnt/sfobjs.c
2996         (sfnt_init_face), src/truetype/ttobjs.c (tt_face_init),
2997         src/type1/t1objs.c (T1_Face_Init), src/type42/t42objs.c
2998         (T42_Face_Init), src/winfonts/winfnt.c (FNT_Face_Init): Add
2999         `greeting' message.
3000
3001         * src/sfnt/sfobjs.c (sfnt_open_font), src/type42/t42objs.c
3002         (T42_Open_Face): Improve tracing.
3003
3004 2011-11-26  Werner Lemberg  <wl@gnu.org>
3005
3006         [cid] Fix error code.
3007
3008         * src/cid/cidparse.c (cid_parser_new): Do it.
3009
3010 2011-11-26  Werner Lemberg  <wl@gnu.org>
3011
3012         [cff] Fix error code.
3013
3014         * src/cff/cffload.c (cff_font_load): Do it.
3015
3016 2011-11-26  Werner Lemberg  <wl@gnu.org>
3017
3018         Add new error code FT_Err_Missing_Module.
3019
3020         Previously, FreeType misleadingly returned
3021         FT_Err_Unknown_File_Format if a module was missing (or a test was
3022         missing completely).
3023
3024         * include/freetype/fterrdef.h (FT_Err_Missing_Module): Define.
3025
3026         * src/cff/cffobjs.c (cff_face_init), src/cff/cffdrivr.c
3027         (cff_get_glyph_name), src/cid/cidobjs.c (cid_face_init),
3028         src/sfnt/sfobjs.c (sfnt_init_face), src/truetype/ttobjs.c
3029         (tt_face_init), src/type1/t1objs.c (T1_Face_Init),
3030         src/type42/t42objs.c (T42_Face_Init, T42_Driver_Init): Updated.
3031
3032         * src/type1/t1afm.c (T1_Read_Metrics), src/type/t1objs.c
3033         (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Remove now
3034         redundant test for `psaux'.
3035
3036 2011-11-25  Werner Lemberg  <wl@gnu.org>
3037
3038         [bdf] Add more error messages.
3039
3040         * src/bdf/bdflib.c (_bdf_set_default_spacing, _bdf_add_property):
3041         Add line number argument.
3042         Update all callers.
3043         (ERRMSG5, ERRMSG6, ERRMSG7, ERRMSG8, ERRMSG9): New macros.
3044         (_bdf_readstream, _bdf_set_default_spacing, _bdf_add_property,
3045         _bdf_parse_glyphs, _bdf_parse_start): Add error messages.
3046
3047 2011-11-24  Werner Lemberg  <wl@gnu.org>
3048
3049         * include/freetype/fterrors.h: Remove dead code.
3050
3051 2011-11-15  Werner Lemberg  <wl@gnu.org>
3052
3053         * docs/releases: Updated.
3054
3055 2011-11-15  Werner Lemberg  <wl@gnu.org>
3056
3057         * Version 2.4.8 released.
3058         =========================
3059
3060
3061         Tag sources with `VER-2-4-8'.
3062
3063         * docs/CHANGES: Updated.
3064
3065         * docs/VERSION.DLL: Update documentation and bump version number to
3066         2.4.8.
3067
3068         * README, Jamfile (RefDoc),
3069         builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
3070         builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
3071         builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
3072         builds/win32/visualc/freetype.dsp,
3073         builds/win32/visualc/freetype.vcproj,
3074         builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
3075         builds/win32/visualce/freetype.vcproj,
3076         builds/win32/visualce/index.html,
3077         builds/wince/vc2005-ce/freetype.vcproj,
3078         builds/wince/vc2005-ce/index.html,
3079         builds/wince/vc2008-ce/freetype.vcproj,
3080         builds/wince/vc2008-ce/index.html: s/2.4.7/2.4.8/, s/247/248/.
3081
3082         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 8.
3083
3084         * builds/unix/configure.raw (version_info): Set to 14:0:8.
3085
3086 2011-11-13  Chris Liddell  <chris.liddell@artifex.com>
3087
3088         Add FT_Get_PS_Font_Value() API.
3089
3090         This allows a Type 1 font face to be interrogated to retrieve most
3091         of the dictionary keys (keys not relevant to FreeType's Type 1
3092         interpreter are not available).
3093
3094         * include/freetype/internal/services/svpsinfo.h
3095         (PS_GetFontValueFunc): New typedef.
3096         (PSInfo): Add `ps_get_font_value'.
3097         (FT_DEFINE_SERVICE_PSINFOREC): Updated.
3098
3099         * include/freetype/internal/t1types.h (T1_EncodingType): Moved to...
3100         * include/freetype/t1tables.h: Here.
3101         (PS_Dict_Keys): New enumeration.
3102         (FT_Get_PS_Font_Value): New declaration.
3103
3104         * src/base/fttype1.c (FT_Get_PS_Font_Value): New function.
3105
3106         * src/type1/t1driver.c (t1_ps_get_font_value): This new function
3107         does the real job.
3108         (t1_service_ps_info): Add it.
3109
3110         * src/cff/cffdrivr.c (cff_service_ps_info), src/cid/cidriver.c
3111         (cid_service_ps_info), src/type42/t42drivr.c (t42_service_ps_info):
3112         Updated.
3113
3114 2011-11-08  Braden Thomas  <bthomas@apple.com>
3115
3116         [cid] Various loading fixes.
3117
3118         * src/cid/cidload.c (cid_load_keyword) <default>,
3119         (parse_font_matrix, parse_expansion_factor): Correctly check number
3120         of dictionaries.
3121         (cid_read_subrs): Protect against invalid values of `num_subrs'.
3122         Assure that the elements of the `offsets' array are ascending.
3123
3124 2011-11-05  Werner Lemberg  <wl@gnu.org>
3125
3126         * README: We use copyright ranges also.
3127
3128         According to
3129
3130           http://www.gnu.org/prep/maintain/html_node/Copyright-Notices.html
3131
3132         this should be mentioned explicitly.
3133
3134 2011-10-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3135
3136         [raccess] Supplement for previous fix.
3137
3138         * src/base/ftbase.h (raccess_rule_by_darwin_vfs): Do not declare
3139         it on native Mac OS X.
3140         * src/base/ftrfork.c (raccess_get_rule_type_from_rule_index):
3141         Hide raccess_get_rule_type_from_rule_index() on native Mac OS X
3142         too.
3143
3144 2011-10-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3145
3146         [raccess] Hide raccess_rule_by_darwin_vfs() on native Mac OS X.
3147
3148         * src/base/ftrfork.c (raccess_rule_by_darwin_vfs): Do not
3149         compile on native Mac OS X because it is not used.
3150
3151 2011-10-25  Werner Lemberg  <wl@gnu.org>
3152
3153         [truetype] Fix MD instruction for twilight zone.
3154
3155         * src/truetype/ttinterp.c (Ins_MD): Without this fix, the MD
3156         instruction applied to original coordinates of twilight points
3157         always returns zero.
3158
3159 2011-10-18  Werner Lemberg  <wl@gnu.org>
3160
3161         * Version 2.4.7 released.
3162         =========================
3163
3164
3165         Tag sources with `VER-2-4-7'.
3166
3167         * docs/CHANGES: Updated.
3168
3169         * docs/VERSION.DLL: Update documentation and bump version number to
3170         2.4.7.
3171
3172         * README, Jamfile (RefDoc),
3173         builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
3174         builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
3175         builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
3176         builds/win32/visualc/freetype.dsp,
3177         builds/win32/visualc/freetype.vcproj,
3178         builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
3179         builds/win32/visualce/freetype.vcproj,
3180         builds/win32/visualce/index.html,
3181         builds/wince/vc2005-ce/freetype.vcproj,
3182         builds/wince/vc2005-ce/index.html,
3183         builds/wince/vc2008-ce/freetype.vcproj,
3184         builds/wince/vc2008-ce/index.html: s/2.4.6/2.4.7/, s/246/247/.
3185
3186         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 7.
3187
3188         * builds/unix/configure.raw (version_info): Set to 13:2:7.
3189
3190 2011-10-15  Kal Conley  <kcconley@gmail.com>
3191
3192         Fix handling of transformations if no renderer is present.
3193
3194         * src/base/ftobjs.c (FT_Load_Glyph): Thinko.
3195
3196 2011-10-15  Kal Conley  <kcconley@gmail.com>
3197
3198         Fix conditions for autohinting.
3199
3200         * src/base/ftobjs.c (FT_Load_Glyph): Handle
3201         FT_LOAD_IGNORE_TRANSFORM.
3202
3203 2011-10-07  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3204
3205         [gxvalid] Fix a bug to detect too large offset in morx table.
3206
3207         * src/gxvalid/gxvmorx2.c
3208         (gxv_morx_subtable_type2_ligActionIndex_validate): Fix a bug
3209         that too large positive offset cannot be detected.
3210
3211 2011-10-01  Braden Thomas  <bthomas@apple.com>
3212
3213         Handle some border cases.
3214
3215         * include/freetype/config/ftstdlib.h (FT_USHORT_MAX): New macro.
3216
3217         * src/base/ftbitmap.c (FT_Bitmap_Convert): Protect against invalid
3218         value of `target->rows'.
3219
3220         * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add check for
3221         flex start.
3222
3223         * src/raster/ftrend1.c (ft_raster1_render): Check `width' and
3224         `height'.
3225
3226         * src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Protect against
3227         invalid values in `localpoints' array.
3228
3229 2011-10-01  Werner Lemberg  <wl@gnu.org>
3230
3231         [psnames] Handle zapfdingbats.
3232         Problem reported by Nicolas Rougier <Nicolas.Rougier@inria.fr>.
3233
3234         * src/tools/glnames.py (adobe_glyph_list): Add data from AGL's
3235         `zapfdingbats.txt' file.
3236
3237         * src/psnames/pstables.h: Regenerated.
3238
3239 2011-09-27  Simon Bünzli  <zeniko@gmail.com>
3240
3241         [type1] Fix Savannah bug #34189.
3242
3243         * src/type1/t1load.c (T1_Open_Face): Initialize
3244         `face->len_buildchar'.
3245
3246 2011-09-26  Werner Lemberg  <wl@gnu.org>
3247
3248         [cff] Dump SIDs while tracing.
3249
3250         * src/cff/cffobjs.c (cff_face_init): Do it.
3251
3252         * src/cff/cffparse.c (cff_parser_run) [FT_DEBUG_LEVEL_TRACE]
3253         <cff_kind_string>: Identify as SID.
3254
3255 2011-09-17  Werner Lemberg  <wl@gnu.org>
3256
3257         Remove unused FT_ALIGNMENT macro.
3258
3259         * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
3260         include/freetype/config/ftconfig.h: Do it.
3261
3262 2011-09-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
3263
3264         [smooth] Slightly optimize conic and cubic flatterners.
3265
3266         * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
3267         out some code from the main loop to speed it up.
3268
3269 2011-09-11  Tomas Hoger  <thoger@redhat.com>
3270
3271         Slightly improve LZW_CLEAR handling.
3272
3273         * src/lzw/ftzopen.c (ft_lzwstate_io) <FT_LZW_PHASE_CODE>:
3274         Ensure that subsequent (modulo garbage byte(s)) LZW_CLEAR codes are
3275         handled as clear codes.  This also re-sets old_code and old_char to
3276         predictable values, which is a little better than using `random'
3277         ones if the code following LZW_CLEAR is invalid.
3278
3279 2011-09-11  Tomas Hoger  <thoger@redhat.com>
3280
3281         Add explicit LZW decompression stack size limit.
3282
3283         Stack larger than 1<<LZW_MAX_BITS is never needed if prefix table is
3284         constructed correctly.  It's even less than that, see e.g.
3285         libarchive code comment for a better size upper bound:
3286
3287           http://code.google.com/p/libarchive/source/browse/trunk/libarchive/archive_read_support_filter_compress.c?r=3635#121
3288
3289         This patch adds explicit stack size limit, enforced when stack is
3290         realloced.
3291
3292         An alternative is to ensure that code < state->prefix[code - 256]
3293         when traversing prefix table.  Such check is less efficient and
3294         should not be required if prefix table is constructed correctly in
3295         the first place.
3296
3297         * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Implement it.
3298
3299 2011-09-11  Tomas Hoger  <thoger@redhat.com>
3300
3301         Protect against loops in the prefix table.
3302
3303         LZW decompressor did not sufficiently check codes read from the
3304         input LZW stream.  A specially-crafted or corrupted input could
3305         create a loop in the prefix table, which leads to memory usage
3306         spikes, as there's no decompression stack size limit.
3307
3308         * src/lzw/ftzopen.c (ft_lzwstate_io) <FT_LZW_PHASE_START>: First
3309         code in valid LZW stream must be 0..255.
3310         <FT_LZW_PHASE_CODE>: In the special KwKwK case, code == free_ent,
3311         code > free_ent is invalid.
3312
3313 2011-09-09  Werner Lemberg  <wl@gnu.org>
3314
3315         Better tracing of metrics.
3316
3317         * src/base/ftobjs.c (FT_Request_Size, FT_Select_Size): Decorate with
3318         FT_TRACE.
3319
3320 2011-09-07  Werner Lemberg  <wl@gnu.org>
3321
3322         [cff] Fix Savannah bug #33816.
3323
3324         * src/cff/cfftypes.h (CFF_FontRecDictRec): New member
3325         `has_font_matrix'.
3326         * src/cff/cffparse.c (cff_parse_font_matrix): Set it.
3327         Update tracing output.
3328         * src/cff/cffobjs.c (cff_face_init): Use it so that the heuristics
3329         can be removed.
3330
3331 2011-08-30  Werner Lemberg  <wl@gnu.org>
3332
3333         Better tracing of metrics.
3334
3335         * src/base/ftobjs.c (FT_Select_Metrics, FT_Request_Metrics):
3336         Decorate with FT_TRACE.
3337
3338 2011-08-25  Werner Lemberg  <wl@gnu.org>
3339
3340         [cff] Better tracing of the parsing process.
3341
3342         * src/cff/cffload.c (cff_subfont_load, cff_font_load): Decorate with
3343         FT_TRACE.
3344
3345         * src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox,
3346         cff_parse_private_dict, cff_parse_cid_ros): Updated.
3347         (CFF_FIELD_NUM, CFF_FIELD_FIXED, CFF_FIELD_FIXED_1000,
3348         CFF_FIELD_STRING, CFF_FIELD_BOOL, CFF_FIELD_CALLBACK, CFF_FIELD,
3349         CFF_FIELD_DELTA): Add argument for ID.
3350         (cff_parser_run): Decorate with FT_TRACE.
3351
3352         * src/cff/cffparse.h (CFF_Field_Handler) [FT_DEBUG_LEVEL_TRACE]: Add
3353         `id' member.
3354
3355         * src/cff/cfftoken.h: Add IDs to all fields.
3356
3357 2011-08-16  Werner Lemberg  <wl@gnu.org>
3358
3359         Fix Savannah bug #34022.
3360
3361         * README, docs/INSTALL: Remove references to UPGRADE.UNIX.
3362
3363 2011-08-15  Werner Lemberg  <wl@gnu.org>
3364
3365         Fix Savannah bug #34018.
3366
3367         * docs/UPGRADE.UNIX: Removed.  Obsolete.
3368
3369 2011-08-15  David Bevan  <david.bevan@pb.com>
3370
3371         Fix Savannah bug #33992.
3372
3373         * src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix border case.
3374
3375 2011-08-12  Werner Lemberg  <wl@gnu.org
3376
3377         [truetype] Fix degenerate case in S{P,F,DP}VTL opcodes.
3378
3379         * src/truetype/ttinterp.c (Ins_SxVTL): Handle p1 == p2 specially.
3380         (Ins_SDPVTL): Handle v1 == v2 specially.
3381
3382 2011-08-09  Werner Lemberg  <wl@gnu.org>
3383
3384         [cff] Fix Savannah bug #33975.
3385
3386         * src/cff/cffparse.c (cff_parse_font_matrix): Fix typo.
3387
3388 2011-07-29  Werner Lemberg  <wl@gnu.org>
3389
3390         * Version 2.4.6 released.
3391         =========================
3392
3393
3394         Tag sources with `VER-2-4-6'.
3395
3396         * docs/CHANGES: Updated.
3397
3398         * docs/VERSION.DLL: Update documentation and bump version number to
3399         2.4.6.
3400
3401         * README, Jamfile (RefDoc),
3402         builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
3403         builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
3404         builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
3405         builds/win32/visualc/freetype.dsp,
3406         builds/win32/visualc/freetype.vcproj,
3407         builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
3408         builds/win32/visualce/freetype.vcproj,
3409         builds/win32/visualce/index.html,
3410         builds/wince/vc2005-ce/freetype.vcproj,
3411         builds/wince/vc2005-ce/index.html,
3412         builds/wince/vc2008-ce/freetype.vcproj,
3413         builds/wince/vc2008-ce/index.html: s/2.4.5/2.4.6/, s/245/246/.
3414
3415         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 6.
3416
3417         * builds/unix/configure.raw (version_info): Set to 13:1:7.
3418
3419 2011-07-29  Werner Lemberg  <wl@gnu.org>
3420
3421         [cff] Add some more tracing infos.
3422
3423         * src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox,
3424         cff_parse_cid_ros): Add tracing.
3425
3426 2011-07-22  Dirk Müller  <dmueller@suse.de>
3427
3428         [psaux, type1] Fix null pointer dereferences.
3429
3430         Found with font fuzzying.
3431
3432         * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Check
3433         `decoder->buildchar'.
3434
3435         * src/type1/t1load.c (t1_load_keyword): Check `blend->num_designs'.
3436
3437 2011-07-20  Chris Morgan  <cmorgan@cybexintl.com>
3438
3439         Add FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT.
3440
3441         Useful for embedded systems which don't need file stream support.
3442
3443         * src/base/ftsystem.c, src/base/ftobjs.c (FT_Stream_New): Implement
3444         it.
3445
3446 2011-07-20  Elton Chung  <elton328@gmail.com>
3447
3448         * src/base/ftpatent.c (FT_Face_SetUnpatentedHinting): Fix typo.
3449
3450 2011-07-16  Steven Chu  <steven.f.chu@gmail.com>
3451
3452         [truetype] Fix metrics on size request for scalable fonts.
3453
3454         * src/truetype/ttdriver.c (tt_size_request): Fix copying metrics
3455         from TT_Size to FT_Size if scalable font.
3456
3457         See
3458
3459           http://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00049.html
3460
3461         for some comparison images.
3462
3463 2011-07-14  Matthias Drochner  <M.Drochner@fz-juelich.de>.
3464
3465         [psaux] Fix potential sign extension problems.
3466
3467         When shifting right a signed value, it is not defined by the
3468         C standard whether one gets a sign extension or not.  Use a macro to
3469         do an explicit cast from a signed short (assuming that this is
3470         16bit) to an int.
3471
3472         * src/psaux/t1decode.c (Fix2Int): New macro.
3473         Use it where appropriate.
3474
3475 2011-07-14  Werner Lemberg  <wl@gnu.org>
3476
3477         * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
3478         <op_callothersubr>: Better handling of subroutine index 0.
3479         From Matthias Drochner <M.Drochner@fz-juelich.de>.
3480
3481 2011-07-10  Алексей Подтележников  <apodtele@gmail.com>
3482
3483         [psaux] Optimize previous commit.
3484
3485         * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
3486         <op_callothersubr>: Move error check down to avoid testing twice for
3487         good cases.
3488
3489 2011-07-08  Werner Lemberg  <wl@gnu.org>
3490
3491         [psaux] Add better argument check for `callothersubr'.
3492
3493         * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
3494         <op_callothersubr>: Reject negative arguments.
3495
3496 2011-07-07  Werner Lemberg  <wl@gnu.org>
3497
3498         [sfnt] Try harder to find non-zero values for ascender and descender.
3499
3500         * src/sfnt/sfobjs.c (sfnt_load_face): Consult `OS/2' table in case
3501         the `hhea' table's values are zero.
3502
3503 2011-07-03  Werner Lemberg  <wl@gnu.org>
3504
3505         Fix previous commit.
3506
3507         We want to unset FT_FACE_FLAG_SCALABLE only if there are bitmap
3508         strikes in the font.
3509
3510         * src/truetype/ttobjs.c (tt_face_init): Implement it.
3511
3512         * docs/CHANGES: Updated.
3513
3514 2011-07-02  Just Fill Bugs  <mozbugbox@yahoo.com.au>
3515
3516         [truetype] Fix Savannah bug #33246.
3517
3518         * src/truetype/ttobjs.c (tt_check_single_notdef): New function.
3519         (tt_face_init): Use it to test FT_FACE_FLAG_SCALABLE.
3520
3521 2011-07-02  Werner Lemberg  <wl@gnu.org>
3522
3523         * docs/CHANGES: Updated.
3524
3525 2011-07-02  David Bevan  <david.bevan@pb.com>
3526
3527         [ftstroke] Major revision.
3528
3529         The main problems
3530         -----------------
3531
3532           o If FT_STROKER_LINEJOIN_BEVEL was specified, unlimited miter
3533             joins (not bevel joins) were generated.  Indeed, the meanings of
3534             `miter' and `bevel' were incorrectly reversed (consistently) in
3535             both the code and comments.
3536
3537           o The way bevel joins were constructed (whether specified
3538             explicitly, or created as a result of exceeding the miter limit)
3539             did not match what is required for stroked text in PostScript or
3540             PDF.
3541
3542         The main fixes
3543         --------------
3544
3545           o The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected.
3546
3547           o A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has been
3548             introduced to support PostScript and PDF miter joins.
3549
3550           o FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an
3551             alias for FT_STROKER_LINEJOIN_MITER.
3552
3553         Additionally, a variety of stroking errors have been fixed.  These
3554         would cause various artifacts (including points `at infinity'),
3555         especially when stroking poor quality fonts.
3556
3557         See
3558
3559           http://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00001.html
3560
3561         for example documents.  The FreeType stroker now produces results
3562         very similar to that produced by GhostScript and Distiller for these
3563         fonts.
3564
3565         Other problems
3566         --------------
3567
3568         The following problems have been resolved:
3569
3570           o Inside corners could be generated incorrectly.  Intersecting the
3571             inside corner could cause a missing triangular area and other
3572             effects.
3573
3574             The intersection point can only be used if the join is between
3575             two lines and both lines are long enough.  The `optimization'
3576             condition in `ft_stroker_inside' has been corrected; this
3577             requires the line length to be passed into various functions and
3578             stored in `FT_StrokerRec'.
3579
3580           o Incorrect cubic curves could be generated.  The angle
3581             calculations in `FT_Stroker_CubicTo' have been corrected to
3582             handle the case of the curve crossing the +/-PI direction.
3583
3584           o If the border radius was greater than the radius of curvature of
3585             a curve, then the negative sector would end up outside (not
3586             inside) the border.  This situation is now recognized and the
3587             negative sector is circumnavigated in the opposite direction.
3588             (If round line joins are being used, this code is disabled
3589             because the line join will always cover the negative sector.)
3590
3591           o When a curve is split, the arcs may not join smoothly (especially
3592             if the curve turns sharply back on itself).  Changes in
3593             direction between adjacent arcs were not handled.  A round
3594             corner is now added if the deviation from one arc to the next is
3595             greater than a suitable threshold.
3596
3597           o The current direction wasn't retained if a the outline contained
3598             a zero length lineto or a curve that was determined to be
3599             `basically a point'.  This could cause a spurious join to be
3600             added.
3601
3602           o Cubics with close control points could be mishandled.  All eight
3603             cases are now distinguished correctly.
3604
3605         Other improvements
3606         ------------------
3607
3608         o Borders for cubic curves could be too `flat'.
3609           FT_SMALL_CUBIC_THRESHOLD has been reduced a little to prevent
3610           this.
3611
3612         o The handling and use of movable points has been simplified a
3613           little.
3614
3615         o Various values are now computed only if the results are actually
3616           needed.
3617
3618         o The directions of the outer and inner borders have been swapped,
3619           as recommended by Graham Asher.
3620
3621         * src/base/ftstroke.c: Revised.
3622         * include/freetype/ftstroke.h: Updated.
3623
3624 2011-06-30  İsmail Dönmez <ismail@namtrac.org>
3625
3626         * builds/toplevel.mk: We use git, not CVS, thus skip `.gitignore'.
3627
3628 2011-06-29  Werner Lemberg  <wl@gnu.org>
3629
3630         [bdf] Fix Savannah bug #33663.
3631
3632         * src/bdf/bdflib.c (_bdf_parse_glyphs): Handle negative values for
3633         ENCODING correctly.
3634
3635         * docs/CHANGES: Document it.
3636
3637 2011-06-24  Werner Lemberg  <wl@gnu.org>
3638
3639         * Version 2.4.5 released.
3640         =========================
3641
3642
3643         Tag sources with `VER-2-4-5'.
3644
3645         * docs/CHANGES: Updated.
3646
3647         * docs/VERSION.DLL: Update documentation and bump version number to
3648         2.4.5
3649
3650         * README, Jamfile (RefDoc),
3651         builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
3652         builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
3653         builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
3654         builds/win32/visualc/freetype.dsp,
3655         builds/win32/visualc/freetype.vcproj,
3656         builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
3657         builds/win32/visualce/freetype.vcproj,
3658         builds/win32/visualce/index.html,
3659         builds/wince/vc2005-ce/freetype.vcproj,
3660         builds/wince/vc2005-ce/index.html,
3661         builds/wince/vc2008-ce/freetype.vcproj,
3662         builds/wince/vc2008-ce/index.html: s/2.4.4/2.4.5/, s/244/245/.
3663
3664         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
3665
3666         * builds/unix/configure.raw (version_info): Set to 13:0:7.
3667
3668 2011-06-20  Werner Lemberg  <wl@gnu.org>
3669
3670         * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Fix change
3671         from 2011-05-04.
3672
3673 2011-06-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3674
3675         [gxvalid] make the `prop' validation tracing verbose.
3676
3677         * src/gxvalid/gxvprop.c: Add tracing messages for errors.
3678
3679 2011-06-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3680
3681         [autogen.sh] Reflect environment variable LIBTOOLIZE.
3682
3683 2011-06-18  Werner Lemberg <wl@gnu.org>
3684
3685         Update license documentation.
3686
3687         * docs/GPL.TXT: Renamed to...
3688         * docs/GPLv2.TXT: This.
3689
3690         * docs/LICENSE.TXT: Updated.
3691
3692 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3693
3694         Fix g++4.6 compiler warnings in module drivers.
3695
3696         The background is same with previous commit.
3697
3698         * src/truetype/ttgxvar.c (ft_var_readpackedpoints):
3699         Init `points'.  (TT_Vary_Get_Glyph_Deltas): Init
3700         `delta_xy'.  (TT_Get_MM_Var): Init `mmvar'.
3701         * src/type1/t1load.c (T1_Get_MM_Var): Ditto.
3702         * src/cff/cffdrivr.c (cff_ps_get_font_info): Init
3703         `font_info'.
3704         * src/cff/cffload.c (cff_index_get_pointers): Init `t'.
3705         (cff_font_load): Init `sub'.
3706         * src/cff/cffobjs.c (cff_size_init): Init `internal'.
3707         (cff_face_init): Init `cff'.
3708         * src/pfr/pfrload.c (pfr_extra_item_load_stem_snaps):
3709         Init `snaps'.
3710         * src/pcf/pcfread.c (pcf_get_properties): Init `properties'.
3711         (pcf_get_bitmaps): Init `offsets'.  (pcf_get_encodings):
3712         Init `tmpEncoding'.
3713         * src/sfnt/ttload.c (tt_face_load_gasp): Init `gaspranges'.
3714         * src/sfnt/ttsbit.c (Load_SBit_Image): Init `components'.
3715         * src/cache/ftcmru.c (FTC_MruList_New): Init `node'.
3716         * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Init `zip' and
3717         `zip_buff'.
3718         * src/lzw/ftlzw.c (FT_Stream_OpenLZW): Init `zip'.
3719         * src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Init `zip'.
3720
3721 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3722
3723         [base] Fix g++4.6 compiler warnings in src/base/*.c.
3724
3725         Passing uninitialized pointer to FT_NEW() families is
3726         not problematic theoretically (as far as the returned
3727         pointer is checked before writing), but g++4.6 dislikes
3728         it and warns by -Wuninitialized.  Initialize them by NULL.
3729
3730         * src/base/ftobjs.c (FT_Stream_New): Init `stream'.
3731         (new_memory_stream): Ditto.
3732         (FT_New_GlyphSlot): Init `slot'.
3733         (FT_CMap_New): Init `cmap'.
3734         (open_face_PS_from_sfnt_stream): Init `sfnt_ps'.
3735         (Mac_Read_POST_Resource): Init `pfb_data'.
3736         (Mac_Read_sfnt_Resource): Init `sfnt_data'.
3737         * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets):
3738         Init `offsets_internal' and `ref'.
3739         (raccess_guess_darwin_hfsplus): Init `newpath'.
3740         (raccess_guess_darwin_newvfs): Ditto.
3741         * src/base/ftbitmap.c (ft_bitmap_assure_buffer):
3742         Init `buffer'.
3743         * src/base/ftstroke.c (FT_Stroker_New): Init `stroker'.
3744
3745 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3746
3747         [gxvalid] Cleanup.
3748
3749         Some invalid, overrunning, unrecommended non-zero values
3750         are cared in paranoid validation mode only.  There are
3751         many lines looking like:
3752
3753           if ( valid->root->level >= FT_VALIDATE_PARANOID )
3754             FT_INVALID_xxx;
3755
3756         To simplify them, GXV_SET_ERR_IF_PARANOID( err ) is
3757         introduced for more paranoid validation in future.
3758
3759         * src/gxvalid/gxvcommn.h (IS_PARANOID_VALIDATION):
3760         New macro to assure valid->root->level is more or
3761         equal to FT_VALIDATE_PARANOID.  (GXV_SET_ERR_IF_PARANOID):
3762         New macro to raise an error if in paranoid validation.
3763         * src/gxvalid/gxvcommn.c: Use GXV_SET_ERR_IF_PARANOID().
3764         * src/gxvalid/gxvfeat.c: Ditto.
3765         * src/gxvalid/gxvjust.c: Ditto.
3766         * src/gxvalid/gxvkern.c: Ditto.
3767         * src/gxvalid/gxvmort.c: Ditto.
3768         * src/gxvalid/gxvmort0.c: Ditto.
3769         * src/gxvalid/gxvmort1.c: Ditto.
3770         * src/gxvalid/gxvmort2.c: Ditto.
3771         * src/gxvalid/gxvmorx1.c: Ditto.
3772         * src/gxvalid/gxvmorx2.c: Ditto.
3773
3774 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3775
3776         [gxvalid] Fix gcc4.6 compiler warnings in gxvtrak.c.
3777
3778         * src/gxvalid/gxvtrak.c (gxv_trak_trackTable_validate):
3779         Check different entries pointing same traking value.
3780         (gxv_trak_validate): Remove unused variable `table_size'.
3781
3782 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3783
3784         [gxvalid] Fix gcc4.6 compiler warnings in gxvmorx*.c.
3785
3786         * src/gxvalid/gxvmorx.c (gxv_morx_subtables_validate):
3787         Conditionalize unvalidated variable `subFeatureFlags'.
3788         (gxv_morx_chain_validate): Conditionalize unvalidated
3789         variable `defaultFlags'.
3790
3791         * src/gxvalid/gxmorx0.c
3792         (gxv_morx_subtable_type0_entry_validate):
3793         Conditionalize unvalidated variables; `markFirst',
3794         `dontAdvance', `markLast', `verb'.
3795
3796         * src/gxvalid/gxmorx1.c
3797         (gxv_morx_subtable_type1_entry_validate): Conditionalize
3798         unvalidated variables; `setMark', `dontAdvance'.
3799
3800         * src/gxvalid/gxvmorx2.c
3801         (gxv_morx_subtable_type2_ligActionOffset_validate):
3802         Conditionalize unvalidated variables; `last', `store'.
3803         Checking for overrunning offset is added.
3804         (gxv_morx_subtable_type2_entry_validate):
3805         Conditionalize unvalidated variables; `setComponent',
3806         `dontAdvance', `performAction'.
3807         (gxv_morx_subtable_type2_ligatureTable_validate):
3808         Check if the GID for ligature does not exceed the
3809         max GID in `maxp' table.
3810
3811         * src/gxvalid/gxvmort5.c
3812         (gxv_morx_subtable_type5_InsertList_validate):
3813         Conditionalize unvalidated loading of `insert_glyphID'
3814         array.  (gxv_morx_subtable_type5_entry_validate):
3815         Conditionalize unvalidated variables; `setMark',
3816         `dontAdvance', `currentIsKashidaLike',
3817         `markedIsKashidaLike', `currentInsertBefore',
3818         `markedInsertBefore'.
3819
3820 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3821
3822         [gxvalid] Fix gcc4.6 compiler warnings in gxvmort*.c.
3823
3824         * src/gxvalid/gxvmort.c (gxv_mort_subtables_validate):
3825         Conditionalize unvalidated variable `subFeatureFlags'.
3826         (gxv_mort_chain_validate): Conditionalize unvalidated
3827         variable `defaultFlags'.
3828
3829         * src/gxvalid/gxmort0.c
3830         (gxv_mort_subtable_type0_entry_validate): Check the
3831         conflict of the marks for the glyphs.
3832
3833         * src/gxvalid/gxmort1.c
3834         (gxv_mort_subtable_type1_offset_to_subst_validate):
3835         Local variables `min_gid', `max_gid' are replaced by
3836         variables in the validator.
3837         (gxv_mort_subtable_type1_entry_validate): Conditionalize
3838         unvalidated variables; `setMark', `dontAdvance'.
3839         (gxv_mort_subtable_type1_substTable_validate):
3840         Validate the GID by the min/max GIDs in the validator.
3841
3842         * src/gxvalid/gxvmort2.c
3843         (gxv_mort_subtable_type2_ligActionOffset_validate):
3844         Conditionalize unvalidated variables; `last', `store'.
3845         Checking for overrunning offset is added.
3846         (gxv_mort_subtable_type2_entry_validate):
3847         Conditionalize unvalidated variables; `setComponent',
3848         `dontAdvance'.
3849         (gxv_mort_subtable_type2_ligatureTable_validate):
3850         Check if the GID for ligature does not exceed the
3851         max GID in `maxp' table.
3852
3853         * src/gxvalid/gxvmort5.c
3854         (gxv_mort_subtable_type5_InsertList_validate):
3855         Conditionalize unvalidated loading of `insert_glyphID'
3856         array.  (gxv_mort_subtable_type5_entry_validate):
3857         Conditionalize unvalidated variables; `setMark',
3858         `dontAdvance', `currentIsKashidaLike',
3859         `markedIsKashidaLike', `currentInsertBefore',
3860         `markedInsertBefore'.
3861
3862 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3863
3864         [gxvalid] Fix gcc4.6 compiler warnings in gxvkern.c.
3865
3866         * src/gxvalid/gxvkern.c
3867         (gxv_kern_subtable_fmt0_pairs_validate): Conditionalize
3868         unvalidated variable `kernValue'.
3869         (gxv_kern_subtable_fmt1_entry_validate): Conditionalize
3870         unvalidated variables; `push', `dontAdvance', `kernAction',
3871         `kernValue'.
3872         (gxv_kern_coverage_new_apple_validate): Conditionalize
3873         trace-only variables; `kernVertical', `kernCrossStream',
3874         `kernVariation'.
3875         (gxv_kern_coverage_classic_apple_validate): Conditionalize
3876         trace-only variables; `horizontal', `cross_stream'.
3877         (gxv_kern_coverage_classic_microsoft_validate):
3878         Conditionalize trace-only variables; `horizontal',
3879         `minimum', `cross_stream', `override'.
3880         (gxv_kern_subtable_validate): Conditionalize trace-only
3881         variables; `version', `tupleIndex'.
3882
3883 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3884
3885         [gxvalid] Fix gcc4.6 compiler warnings in gxvjust.c.
3886
3887         * src/gxvalid/gxvjust.c (gxv_just_check_max_gid):
3888         New function to unify the checks of too large GID.
3889         (gxv_just_wdp_entry_validate): Conditionalize unvalidated
3890         variables; `beforeGrowLimit', `beforeShrinkGrowLimit',
3891         `afterGrowLimit', `afterShrinkGrowLimit', `growFlags',
3892         `shrinkFlags'.  Additional check for non-zero values in
3893         unused storage `justClass' is added.
3894         (gxv_just_actSubrecord_type0_validate): Conditionalize
3895         unvalidated variable `order'.  GID is checked by
3896         gxv_just_check_max_gid().  Additional check for upside-down
3897         relationship between `lowerLimit' and `upperLimit' is added.
3898         (gxv_just_actSubrecord_type1_validate): GID is checked by
3899         gxv_just_check_max_gid().
3900         (gxv_just_actSubrecord_type2_validate): Conditionalize
3901         unvalidated variable `substThreshhold'.  GID is checked by
3902         gxv_just_check_max_gid().
3903         (gxv_just_actSubrecord_type5_validate): GID is checked by
3904         gxv_just_check_max_gid().
3905         (gxv_just_classTable_entry_validate): Conditionalize
3906         unvalidated variables; `setMark', `dontAdvance',
3907         `markClass', `currentClass'.
3908
3909 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3910
3911         [gxvalid] Preparation to fix gcc4.6 compiler warnings.
3912
3913         * src/gxvalid/gxvcommn.h (GXV_LOAD_TRACE_VARS): New macro to
3914         conditionalize the variable which is only used for trace messages.
3915         Automatically set by FT_DEBUG_LEVEL_TRACE.
3916         (GXV_LOAD_UNUSED_VARS): New macro to conditionalize the loading of
3917         unvalidated variables.  Undefined by default to calm gcc4.6 warning.
3918         (GXV_ValidatorRec.{min_gid,max_gid}): New variables to hold defined
3919         GID ranges, for the comparison of GID ranges in different subtables.
3920
3921 2011-06-08  Werner Lemberg  <wl@gnu.org>
3922
3923         [autofit] Remove unused structure member.
3924
3925         * src/autofit/afhints.h (AF_SegmentRec): Remove `contour'.
3926         * src/autofit/aflatin.c (af_latin_hints_compute_segments),
3927         src/autofit/aflatin2.c (af_latin2_hints_compute_segments): Updated.
3928
3929 2011-05-30  Werner Lemberg  <wl@gnu.org>
3930
3931         Fix g++ 4.6 compilation.
3932
3933         * src/autofit/afhints.c (af_glyph_hints_dump_segments,
3934         af_glyph_hints_dump_edges): Use cast.
3935
3936 2011-05-30  Werner Lemberg  <wl@gnu.org>
3937
3938         Fix gcc 4.6 compiler warnings.
3939
3940         * src/autofit/afcjk.c (af_cjk_metrics_init_blues): Use casts and
3941         remove unused variables.
3942         * src/autofit/aflatin.c (af_latin_hints_compute_edges): Comment out
3943         `up_dir'.
3944         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use `height_org'
3945         and `width_org' conditionalized.
3946
3947 2011-05-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3948
3949         [mac] Conditionalize the inclusion of `AvailabilityMacros.h'.
3950
3951         The native SDK on earliest Mac OS X (10.0-10.1) did not have
3952         `AvailabilityMacros.h'.  To prevent the inclusion of missing
3953         header file, ECANCELED (introduced in 10.2) in POSIX header
3954         file <errno.h> is checked to detect the system version.
3955
3956         * include/freetype/config/ftconfig.h: Conditionalize the
3957         inclusion of `AvailabilityMacros.h'.
3958         * builds/unix/ftconfig.in: Ditto.
3959         * builds/vms/ftconfig.h: Ditto.
3960
3961 2011-05-27  Werner Lemberg  <wl@gnu.org>
3962
3963         [autofit] Improve tracing of hinting process.
3964
3965         * src/autofit/aflatin.c (af_latin_hint_edges): Add tracing message
3966         `ADJUST'.
3967
3968 2011-05-26  Werner Lemberg  <wl@gnu.org>
3969
3970         [autofit] Fix trace message.
3971
3972         * src/autofit/aflatin.c (af_latin_hint_edges): Show correct value in
3973         tracing message.
3974
3975 2011-05-24  Daniel Zimmermann  <netzimme@googlemail.com>
3976
3977         Reduce warnings for MS Visual Studio 2010.
3978
3979         * src/autofit/afhints.c (af_glyph_hints_get_num_segments,
3980         af_glyph_hints_get_segment_offset) [!FT_DEBUG_AUTOFIT]: Provide
3981         return value.
3982         * src/cff/cffgload.c (cff_slot_load): Add cast.
3983         * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): Use proper
3984         loop variable type.
3985
3986 2011-05-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3987
3988         Automake component `builds/unix/install-sh' is removed.
3989
3990         * builds/unix/install-sh: Removed.  It is not needed to
3991         include repository, because autogen.sh installs it.
3992         * builds/unix/.gitignore: Register install-sh.
3993
3994 2011-05-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3995
3996         [autofit] Make trace message for CJK bluezone more verbose.
3997
3998 2011-05-08  Just Fill Bugs  <mozbugbox@yahoo.com.au>
3999             suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4000
4001         [autofit] Add bluezones for CJK Ideographs.
4002
4003         To remove extremas of vertical strokes of CJK Ideographs at
4004         low resolution and make the top and bottom horizontal stems
4005         aligned, bluezones for CJK Ideographs are calculated from
4006         sample glyphs.  At present, vertical bluezones (bluezones
4007         to align vertical stems) are disabled by default.  For detail, see
4008         http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00070.html
4009         http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00092.html
4010         http://lists.gnu.org/archive/html/freetype-devel/2011-05/msg00001.html
4011
4012         * include/freetype/internal/fttrace.h: New trace component `afcjk'.
4013         * src/autofit/afcjk.h (AF_CJK{Blue,Axis,Metric}Rec): Add CJK version
4014         for AF_Latin{Blue,Axis,Metric}Rec.
4015         (af_cjk_metrics_check_digits): Ditto, shared with Indic module.
4016         (af_cjk_metrics_init_widths): Ditto.
4017         (af_cjk_metrics_init): Take AF_CJKMetric instead of AF_LatinMetric.
4018         (af_cjk_metrics_scale): Ditto (declaration).
4019         (af_cjk_hints_init): Ditto (declaration).
4020         (af_cjk_hints_apply): Ditto (declaration).
4021         * src/autofit/afcjk.c (af_cjk_metrics_scale): Ditto (body).
4022         (af_cjk_hints_init): Ditto (body).
4023         (af_cjk_hints_apply): Ditto (body).
4024         (af_cjk_metrics_init_widths): Duplicate af_latin_metrics_init_widths.
4025         (af_cjk_metrics_check_digits): Duplicate af_latin_metrics_check_digits.
4026         (af_cjk_metrics_init): Call CJK bluezone initializer.
4027         (af_cjk_metrics_scale_dim): Add code to scale bluezones.
4028         (af_cjk_hints_compute_blue_edges): New function, CJK version of
4029         af_latin_hints_compute_blue_edges.
4030         (af_cjk_metrics_init_blues): New function, CJK version of
4031         af_latin_metrics_init_blues.
4032         (af_cjk_hints_edges): Add code to align the edge stems to blue zones.
4033
4034         * src/autofit/afindic.c (af_indic_metrics_init): Take AF_CJKMetric
4035         instead of AF_LatinMetric, and initialize as af_cjk_metrics_init.
4036         However bluezones are not initialized.
4037         (af_indic_metrics_scale): Take AF_CJKMetric instead of AF_LatinMetric.
4038         (af_indic_hints_init): Ditto.
4039         (af_indic_hints_apply): Ditto.
4040
4041         * docs/CHANGES: Note about CJK bluezone support.
4042
4043 2011-05-06  Werner Lemberg  <wl@gnu.org>
4044
4045         [autofit] Remove unused struct member.
4046
4047         * src/autofit/aflatin.h (AF_LatinAxis): Remove `control_overshoot'.
4048
4049 2011-05-04  Werner Lemberg  <wl@gnu.org>
4050
4051         * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Simplify.
4052
4053 2011-05-01  Just Fill Bugs  <mozbugbox@yahoo.com.au>
4054             Werner Lemberg  <wl@gnu.org>
4055
4056         [autofit] Add more debugging functions.
4057
4058         * src/autofit/afhints.c (af_glyph_hints_get_num_segments,
4059         af_glyph_hints_get_segment_offset): New functions.
4060
4061 2011-05-01  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4062
4063         Add new option `--disable-mmap' to configure script.
4064
4065         * builds/unix/configure.raw: New option `--disable-mmap'
4066         is added.  It is for the developers to simulate the systems
4067         without mmap() (like 4.3BSD, minix etc) on POSIX systems.
4068
4069 2011-04-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4070
4071         [truetype] Always recalculate the sfnt table checksum.
4072
4073         * src/truetype/ttobjs.c (tt_get_sfnt_checksum): Recalculate
4074         the sfnt table checksum even if non-zero value is written in
4075         the TrueType font header.  Some bad PDF generators write
4076         wrong values.  For details see examples and benchmark tests
4077         of the latency by recalculation:
4078         http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00091.html
4079         http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00096.html
4080
4081 2011-04-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4082
4083         [truetype] Register a set of tricky fonts, NEC FA family.
4084
4085         * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids):
4086         Add 8 checksum sets for NEC FA family.  For the tricky fonts
4087         without some tables (e.g. NEC FA fonts lack cvt table),
4088         extra check is added to assure that a zero-length table in the
4089         registry is not included in the font.
4090
4091 2011-04-29  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4092
4093         [truetype] Fix a bug in the sfnt table checksum getter.
4094
4095         * src/truetype/ttobjs.c (tt_get_sfnt_checksum): Check the
4096         return value of face->goto_table() correctly.
4097
4098 2011-04-28  Werner Lemberg  <wl@gnu.org>
4099
4100         [autofit] Improve tracing messages.
4101
4102         * src/autofit/aflatin.c (af_latin_metrics_init_blues,
4103         af_latin_align_linked_edge, af_latin_hint_edges): Do it.
4104
4105 2011-04-25  Kan-Ru Chen  <kanru@kanru.info>
4106
4107         [truetype] Always check the checksum to identify tricky fonts.
4108
4109         Because some PDF generators mangle the family name badly,
4110         the trickyness check by the checksum should be invoked always.
4111         For sample PDF, see
4112         http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00073.html
4113
4114         * src/truetype/ttobjs.c (tt_check_trickyness): Even when
4115         tt_check_trickyness_family() finds no trickyness,
4116         tt_check_trickyness_sfnt_ids() is invoked.
4117
4118 2011-04-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4119
4120         [autofit] Add more Indic scripts with hanging baseline.
4121
4122         * src/autofit/afindic.c (af_indic_uniranges): Tibetan, Limbu,
4123         Sundanese, Meetei Mayak, Syloti Nagri and Sharada scripts are
4124         added.
4125
4126 2011-04-21  Behdad Esfahbod  <behdad@behdad.org>
4127
4128         Always ignore global advance.
4129
4130         This makes FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH redundant,
4131         deprecated, and ignored.  The new behavior is what every major user
4132         of FreeType has been requesting.  Global advance is broken in many
4133         CJK fonts.  Just ignoring it by default makes most sense.
4134
4135         * src/truetype/ttdriver.c (tt_get_advances),
4136         src/truetype/ttgload.c (TT_Get_HMetrics, TT_Get_VMetrics,
4137         tt_get_metrics, compute_glyph_metrics, TT_Load_Glyph),
4138         src/truetype/ttgload.h: Implement it.
4139
4140         * docs/CHANGES: Updated.
4141
4142 2011-04-21  rainy6144  <rainy6144@gmail.com>
4143
4144         [autofit] Blur CJK stems if too many to preserve their gaps.
4145
4146         When there are too many stems to preserve their gaps in the
4147         rasterization of CJK Ideographs at a low resolution, blur the
4148         stems instead of showing clumped stems.  See
4149         http://lists.gnu.org/archive/html/freetype-devel/2011-02/msg00011.html
4150         http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00046.html
4151         for details.
4152
4153         * src/autofit/afcjk.c (af_cjk_hint_edges): Store the position of
4154         the previous stem by `has_last_stem' and `last_stem_pos', and skip
4155         a stem if the current and previous stem are too near to preserve
4156         the gap.
4157
4158 2011-04-18  Werner Lemberg  <wl@gnu.org>
4159
4160         Integrate autofitter debugging stuff.
4161
4162         * devel/ftoption.h, include/freetype/config/ftoption.h
4163         (FT_DEBUG_AUTOFIT): New macro.
4164
4165         * include/freetype/internal/fttrace.h: Add trace components for
4166         autofitter.
4167
4168         * src/autofit/aftypes.h (AF_LOG): Removed.
4169         (_af_debug): Removed.
4170
4171         * src/autofit/*: s/AF_DEBUG/FT_DEBUG_AUTOFIT/.
4172         s/AF_LOG/FT_TRACE5/.
4173         Define FT_COMPONENT where necessary.
4174
4175 2011-04-18  Werner Lemberg  <wl@gnu.org>
4176
4177         Synchronize config files.
4178
4179         * builds/unix/ftconfig.in: Copy missing assembler routines from
4180         include/freetype/config/ftconfig.h.
4181
4182 2011-04-13  Werner Lemberg  <wl@gnu.org>
4183
4184         [psaux] Fix Savannah bug #33047.
4185
4186         Patch submitted by anonymous reporter.
4187
4188         * src/psaux/psobjs.c (ps_table_add): Use FT_PtrDist for pointer
4189         difference.
4190
4191 2011-04-11  Kan-Ru Chen  <kanru@kanru.info>
4192
4193         Fix reading of signed integers from files on 64bit platforms.
4194
4195         Previously, signed integers were converted to unsigned integers, but
4196         this can fail because of sign extension.  For example, 0xa344a1eb
4197         becomes 0xffffffffa344a1eb.
4198
4199         We now do the reverse which is always correct because the integer
4200         size is the same during the cast from unsigned to signed.
4201
4202         * include/freetype/internal/ftstream.h, src/base/ftstream.c
4203         (FT_Stream_Get*): Replace with...
4204         (FT_Stream_GetU*): Functions which read unsigned integers.
4205         Update all macros accordingly.
4206
4207         * src/gzip/ftgzip.c (ft_gzip_get_uncompressed_size): Updated.
4208
4209 2011-04-07  Werner Lemberg  <wl@gnu.org>
4210
4211         Update Unicode ranges for CJK autofitter; in particular, add Hangul.
4212
4213         * src/autofit/afcjk.c (af_cjk_uniranges): Update to Unicode 6.0.
4214
4215 2011-04-04  Werner Lemberg  <wl@gnu.org>
4216
4217         Fix formatting of autofit debug dumps.
4218
4219         * src/autofit/afhints.c (af_glyph_hints_dump_points,
4220         af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Adjust
4221         column widths.
4222
4223 2011-03-30  Werner Lemberg  <wl@gnu.org>
4224
4225         * src/autofit/aftypes.h (AF_OutlineRec): Removed, unused.
4226
4227 2011-03-24  Werner Lemberg  <wl@gnu.org>
4228
4229         * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 256.
4230         This limit is given on p. 37 of Adobe Technical Note #5014.
4231
4232 2011-03-23  Werner Lemberg  <wl@gnu.org>
4233
4234         * src/truetype/ttpload.c (tt_face_load_loca): Fix mismatch warning.
4235
4236 2011-03-20  Werner Lemberg  <wl@gnu.org>
4237
4238         * src/sfnt/sfobjs.c (sfnt_open_font): Check number of TTC subfonts.
4239
4240 2011-03-19  Werner Lemberg  <wl@gnu.org>
4241
4242         More C++ compilation fixes.
4243
4244         * src/autofit/afhints.c (af_glyph_hints_dump_points,
4245         af_glyph_hints_dump_segments, af_glyph_hints_dump_edges)
4246         [__cplusplus]: Protect with `extern "C"'.
4247
4248 2011-03-18  Werner Lemberg  <wl@gnu.org>
4249
4250         C++ compilation fixes.
4251
4252         * src/autofit/aflatin.c (af_latin_hints_apply), src/autofit/afcjk.c
4253         (af_cjk_hints_apply): Use cast for `dim'.
4254
4255 2011-03-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
4256
4257         A better fix for Savannah bug #32671.
4258
4259         * src/smooth/ftgrays.c (gray_render_conic): Clean up code and
4260         replace WHILE loop with a more natural DO-WHILE construct.
4261
4262 2011-03-16  Werner Lemberg  <wl@gnu.org>.
4263
4264         * src/base/ftstroke.c (FT_StrokerRec): Remove unused `valid' field.
4265         Suggested by Graham Asher.
4266
4267 2011-03-09  Werner Lemberg  <wl@gnu.org>
4268
4269         Make FT_Sfnt_Table_Info return the number of SFNT tables.
4270
4271         * src/sfnt/sfdriver.c (sfnt_table_info): Implement it.
4272         * include/freetype/tttables.h: Update documentation.
4273         * docs/CHANGES: Updated.
4274
4275 2011-03-07  Bram Tassyns  <bramt@enfocus.be>
4276
4277         [cff] Fix Savannah bug #27988.
4278
4279         * src/cff/cffobjs.c (remove_style): New function.
4280         (cff_face_init): Use it to strip off the style part of the family
4281         name.
4282
4283 2011-03-07  Werner Lemberg  <wl@gnu.org>
4284
4285         * docs/CHANGES: Updated.
4286
4287 2011-03-07  Alexei Podtelezhnikov  <apodtele@gmail.com>
4288
4289         Quick fix for Savannah bug #32671.
4290
4291         This isn't the optimal solution yet, but it restores the previous
4292         rendering quality (more or less).
4293
4294         * src/smooth/ftgrays.c (gray_render_conic): Do more splitting.
4295
4296 2011-03-06  Werner Lemberg  <wl@gnu.org>
4297
4298         Fix autohinting fallback.
4299
4300         * src/base/ftobjs.c (FT_Load_Glyph): Assure that we only check TTFs,
4301         ignoring CFF-based OTFs.
4302
4303 2011-02-27  Werner Lemberg  <wl@gnu.org>
4304
4305         Add AF_CONFIG_OPTION_USE_WARPER to control the autofit warper.
4306
4307         * devel/ftoption.h, include/freetype/config/ftoption.h
4308         (AF_CONFIG_OPTION_USE_WARPER): New macro.
4309         * src/autofit/aftypes.h (AF_USE_WARPER): Remove.
4310
4311         * src/autofit/*: s/AF_USE_WARPER/AF_CONFIG_OPTION_USE_WARPER/.
4312
4313         * src/autofit/afwarp.c [!AF_CONFIG_OPTION_USE_WARPER]: Replace dummy
4314         variable assignment with a typedef.
4315
4316 2011-02-26  Werner Lemberg  <wl@gnu.org>
4317
4318         [autofit] Slight simplifications.
4319
4320         * src/autofit/aflatin.c (af_latin_hints_link_segments): Remove
4321         test which always returns false.
4322         (af_latin_hints_compute_blue_edges): Remove redundant assignment.
4323
4324 2011-02-24  Werner Lemberg  <wl@gnu.org>
4325
4326         * docs/PROBLEMS: Mention rendering differences on different
4327         platforms.
4328         Suggested and worded by Jason Owen <jason.a.owen@gmail.com>.
4329
4330 2011-02-24  Werner Lemberg  <wl@gnu.org>
4331
4332         [autofit] Comment out unused code.
4333
4334         * src/autofit/aflatin.c, src/autofit/aflatin2.c
4335         (af_latin_hints_compute_edges): Do it.
4336
4337 2011-02-24  Werner Lemberg  <wl@gnu.org>
4338
4339         * src/autofit/afhints.h (AF_GlyphHints): Remove unused field.
4340
4341 2011-02-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4342
4343         [cache] Fix an off-by-one bug in `FTC_Manager_RemoveFaceID'.
4344         Found by <ychen1392001@yahoo.com.cn>, see detail in
4345
4346           http://lists.gnu.org/archive/html/freetype/2011-01/msg00023.html
4347
4348         * src/cache/ftccache.c (FTC_Cache_RemoveFaceID): Check the node
4349         buckets[cache->p + cache->mask] too.
4350
4351 2011-02-19  Kevin Kofler  <kevin.kofler@chello.at>
4352
4353         Fall back to autohinting if a TTF/OTF doesn't contain any bytecode.
4354         This is Savannah patch #7471.
4355
4356         * src/base/ftobjs.c (FT_Load_Glyph): Implement it.
4357
4358 2011-02-19  John Tytgat  <John.Tytgat@esko.com>
4359
4360         [cff] Fix subset prefix removal.
4361         This is Savannah patch #7465.
4362
4363         * src/cff/cffobjs.c (remove_subset_prefix): Update length after
4364         subset prefix removal.
4365
4366 2011-02-13  Bradley Grainger  <bgrainger@logos.com>
4367
4368         Add inline assembly version of FT_MulFix for MSVC.
4369
4370         * include/freetype/config/ftconfig.h: Ported the FT_MulFix_i386
4371         function from GNU inline assembly syntax (see #ifdef __GNUC__ block
4372         above) to MASM syntax for Microsoft Visual C++.
4373
4374 2011-02-13  Bradley Grainger  <bgrainger@logos.com>
4375
4376         Add project and solution files in Visual Studio 2010 format.
4377
4378         * builds/win32/.gitignore: Ignore user-specific cache files.
4379         * builds/win32/vc2010/: Add VS2010 project & solution files, created
4380         by upgrading builds/win32/vc2008/freetype.vcproj.
4381         * objs/.gitignore: Ignore Visual Studio output files.
4382
4383 2011-02-01  Werner Lemberg  <wl@gnu.org>
4384
4385         * src/autofit/afdummy.c: Include `aferrors.h'.
4386         Problem reported by Chris Liddell <chris.liddell@artifex.com>.
4387
4388 2011-02-01  Werner Lemberg  <wl@gnu.org>
4389
4390         [cff] Ignore unknown operators in charstrings.
4391         Patch suggested by Miles.Lau <sunliang_liu@foxitsoftware.com>.
4392
4393         * src/cff/cffgload.c (cff_decoder_parse_charstrings): Emit tracing
4394         message for unknown operators and continue instead of exiting with a
4395         syntax error.
4396
4397 2011-02-01  Werner Lemberg  <wl@gnu.org>
4398
4399         [truetype] FT_LOAD_PEDANTIC now affects `prep' and `fpgm' also.
4400
4401         * src/truetype/ttgload.c (tt_loader_init): Handle
4402         `FT_LOAD_PEDANTIC'.
4403         * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep,
4404         tt_size_init_bytecode, tt_size_ready_bytecode): New argument to
4405         handle pedantic mode.
4406         * src/truetype/ttobjs.h: Updated.
4407
4408 2011-01-31  Werner Lemberg  <wl@gnu.org>
4409
4410         [truetype] Protect jump instructions against endless loops.
4411
4412         * src/truetype/interp.c (DO_JROT, DO_JMPR, DO_JROF): Exit with error
4413         if offset is zero.
4414
4415 2011-01-31  Werner Lemberg  <wl@gnu.org>
4416
4417         [truetype] Improve handling of invalid references.
4418
4419         * src/truetype/interp.c: Set even more TT_Err_Invalid_Reference
4420         error codes only if pedantic hinting is active.  At the same time,
4421         try to provide sane values which hopefully allow useful
4422         continuation.  Exception to this is CALL and LOOPCALL – due to
4423         possible stack corruption it is necessary to bail out.
4424
4425 2011-01-31  Werner Lemberg  <wl@gnu.org>
4426
4427         [truetype] Improve handling of stack underflow.
4428
4429         * src/truetype/ttinterp.c (TT_RunIns, Ins_FLIPPT, Ins_DELTAP,
4430         Ins_DELTAC): Exit with error only if `pedantic_hinting' is set.
4431         Otherwise, try to do something sane.
4432
4433 2011-01-30  Werner Lemberg  <wl@gnu.org>
4434
4435         * src/sfnt/ttmtx.c (tt_face_load_hmtx): Fix tracing message.
4436
4437 2011-01-30  LIU Sun-Liang  <sunliang_liu@foxitsoftware.com>
4438
4439         [truetype]: Fix behaviour of MIAP for invalid arguments.
4440
4441         * src/truetype/ttinterp.c (Ins_MIAP): Set reference points even in
4442         case of error.
4443
4444 2011-01-18  Werner Lemberg  <wl@gnu.org>
4445
4446         [truetype] Fix handling of MIRP instruction.
4447
4448         Thanks to Greg Hitchcock who explained the issue.
4449
4450         * src/truetype/ttinterp.c (Ins_MIRP): Replace a `>=' operator with
4451         `>' since the description in the specification is incorrect.
4452         This fixes, for example, glyph `two' in font `Helvetica Neue LT Com
4453         65 medium' at 15ppem.
4454
4455 2011-01-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4456
4457         Fix ARM assembly code in include/freetype/config/ftconfig.h.
4458
4459         * include/freetype/config/ftconfig.h (FT_MulFix_arm):
4460         Copy the maintained code from builds/unix/ftconfig.in.
4461         Old GNU binutils could not accept the reduced syntax
4462         `orr %0, %2, lsl #16'.  Un-omitted syntax like RVCT,
4463         `orr %0, %0, %2, lsl #16' is better.  Reported by
4464         Johnson Y. Yan.  The bug report by Qt developers is
4465         considered too.
4466
4467         http://bugreports.qt.nokia.com/browse/QTBUG-6521
4468
4469 2011-01-15  Werner Lemberg  <wl@gnu.org>
4470
4471         [raster] Make bbox handling the same as with Microsoft's rasterizer.
4472
4473         Right before B/W rasterizing, the bbox gets simply rounded to
4474         integers.  This fixes, for example, glyph `three' in font `Helvetica
4475         Neue LT Com 65 Medium' at 11ppem.
4476
4477         Thanks to Greg Hitchcock who explained this behaviour.
4478
4479         * src/raster/ftrend1.c (ft_raster1_render): Implement it.
4480
4481 2011-01-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4482
4483         Copy -mcpu=* & -march=* options from CFLAGS to LDFLAGS.
4484
4485         * builds/unix/configure.raw: Consider recent gcc-standard
4486         flags to specify architecture in CFLAGS & LDFLAGS
4487         harmonization.  Requested by Savannah bug #32114, to
4488         support multilib feature of BuildRoot SDK correctly.
4489
4490 2011-01-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4491
4492         Fix off-by-one bug in CFLAGS & LDFLAGS harmonizer.
4493
4494         * builds/unix/configure.raw: Some important options that
4495         included in CFLAGS but not in LDFLAGS are copied to
4496         LDFLAGS, but the last option in CFLAGS was not checked.
4497
4498 2011-01-13  Werner Lemberg  <wl@gnu.org>
4499
4500         [raster] Add undocumented drop-out rule to the other bbox side also.
4501
4502         * src/raster/ftraster.c (Vertical_Sweep_Drop,
4503         Horizontal_Sweep_Drop): Implement it.
4504
4505 2011-01-13  Werner Lemberg  <wl@gnu.org>
4506
4507         [raster] Reduce jitter value.
4508
4509         This catches a rendering problem with glyph `x' from Tahoma at
4510         10ppem.  It seems that the increase of the precision in the change
4511         from 2009-06-11 makes a larger jitter value unnecessary.
4512
4513         * src/raster/ftraster.c (Set_High_Precision): Implement it.
4514
4515 2011-01-13  Werner Lemberg  <wl@gnu.org>
4516
4517         [raster] Handle drop-outs at glyph borders according to Microsoft.
4518
4519         If a drop-out rule would switch on a pixel outside of the glyph's
4520         bounding box, use the right (or top) pixel instead.  This is an
4521         undocumented feature, but some fonts like `Helvetica Neue LT Com 65
4522         Medium' heavily rely on it.
4523
4524         Thanks to Greg Hitchcock who explained this behaviour.
4525
4526         * src/raster/ftraster.c (Vertical_Sweep_Drop,
4527         Horizontal_Sweep_Drop): Implement it.
4528
4529 2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4530
4531         [cache] Fix Savannah bug #31923, patch drafted by Harsha.
4532
4533         When a node comparator changes the cached nodes during the
4534         search of a node matching with queried properties, the
4535         pointers obtained before the function should be updated to
4536         prevent the dereference to freed or reallocated nodes.
4537         To minimize the rescan of the linked list, the update is
4538         executed when the comparator notifies the change of cached
4539         nodes. This change depends previous change:
4540         38b272ffbbdaae276d636aec4ef84af407d16181
4541
4542         * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Rescan the
4543         top node if the cached nodes are changed.
4544         * src/cache/ftccache.c (FTC_Cache_Lookup): Ditto.
4545
4546 2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4547
4548         [cache] Notice if a cache query induced the node list change.
4549
4550         Some node comparators (comparing the cache node contents and the
4551         properties specified by the query) can flush the cache node to
4552         prevent the cache inflation.  The change may invalidate the pointers
4553         to the node obtained before the node comparison, so it should be
4554         noticed to the caller.  The problem caused by the cache node
4555         changing is reported by Harsha, see Savannah bug #31923.
4556
4557         * src/cache/ftccache.h (FTC_Node_CompareFunc): Add new argument
4558         `FT_Bool* list_changed' to indicate the change of the cached nodes
4559         to the caller.
4560         (FTC_CACHE_LOOKUP_CMP): Watch the change of the cached nodes by
4561         `_list_changed'.
4562         (FTC_CACHE_TRYLOOP_END): Take new macro argument `_list_changed'
4563         and update it when `FTC_Manager_FlushN' flushes any nodes.
4564
4565         * src/cache/ftccback.h (ftc_snode_compare): Updated to fit with new
4566         FTC_Node_CompareFunc type.
4567         (ftc_gnode_compare): Ditto.
4568
4569         * src/cache/ftcbasic.c: Include FT_INTERNAL_OBJECTS_H to use
4570         TRUE/FALSE macros.
4571         (ftc_basic_gnode_compare_faceid): New argument `FT_Bool*
4572         list_changed' to indicate the change of the cache nodes (anyway, it
4573         is always FALSE).
4574
4575         * src/cache/ftccmap.c: Include FT_INTERNAL_OBJECTS_H to use
4576         TRUE/FALSE macros.
4577         (ftc_cmap_node_compare): New argument `FT_Bool* list_changed' to
4578         indicate the change of the cache nodes (anyway, it is always FALSE).
4579         (ftc_cmap_node_remove_faceid): Ditto.
4580
4581         * src/cache/ftccache.c (FTC_Cache_NewNode): Pass a NULL pointer to
4582         `FTC_CACHE_TRYLOOP_END', because the result is not needed.
4583         (FTC_Cache_Lookup): Watch the change of the cache nodes by
4584         `list_changed'.
4585         (FTC_Cache_RemoveFaceID): Ditto.
4586
4587         * src/cache/ftcglyph.c: Include FT_INTERNAL_OBJECTS_H to use
4588         TRUE/FALSE macros.
4589         (ftc_gnode_compare): New argument `FT_Bool* list_changed' to
4590         indicate the change of the cache nodes (anyway, it is always FALSE).
4591         (FTC_GNode_Compare): New argument `FT_Bool* list_changed' to be
4592         passed to `ftc_gnode_compare'.
4593         * src/cache/ftcglyph.h (FTC_GNode_Compare): Ditto.
4594
4595         * src/cache/ftcsbits.c (ftc_snode_compare): New argument `FT_Bool*
4596         list_changed' to indicate the change of the cache nodes, anyway.  It
4597         is updated by `FTC_CACHE_TRYLOOP'.
4598         (FTC_SNode_Compare): New argument `FT_Bool* list_changed' to be
4599         passed to `ftc_snode_compare'.
4600         * src/cache/ftcsbits.h (FTC_SNode_Compare): Ditto.
4601
4602 2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4603
4604         [cache] Fit `FTC_GNode_Compare' to `FTC_Node_CompareFunc'.
4605
4606         * src/cache/ftcglyph.h (FTC_GNode_Compare): Add the 3rd
4607         argument `FTC_Cache  cache' to fit FTC_Node_CompareFunc
4608         prototype.
4609         * src/cache/ftcglyph.c (FTC_GNode_Compare): Ditto. Anyway,
4610         `cache' is not used by its child `ftc_gnode_compare'.
4611
4612 2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4613
4614         [cache] Deduplicate the code to get the top node by a hash.
4615
4616         There are several duplicated code fragments getting the top node
4617         from a cache by a given hash, like:
4618
4619             idx = hash & cache->mask;
4620             if ( idx < cache->p )
4621               idx = hash & ( cache->mask * 2 + 1 );
4622             pnode = cache->buckets + idx;
4623
4624         To remove duplication, a cpp-macro to do same work
4625         `FTC_NODE__TOP_FOR_HASH' is introduced.  For non-inlined
4626         configuration, non-`ftc_get_top_node_for_hash' is also introduced.
4627
4628         * src/cache/ftccache.h (FTC_NODE__TOP_FOR_HASH): Declare
4629         and implement inlined version.
4630         (FTC_CACHE_LOOKUP_CMP): Use `FTC_NODE__TOP_FOR_HASH'.
4631         * src/cache/ftccache.c (ftc_get_top_node_for_hash): Non-inlined
4632         version.
4633         (ftc_node_hash_unlink): Use `FTC_NODE__TOP_FOR_HASH'.
4634         (ftc_node_hash_link): Ditto.
4635         (FTC_Cache_Lookup): Ditto.
4636
4637 2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4638
4639         [cache] inline-specific functions are conditionalized.
4640
4641         * src/cache/ftcglyph.c (FTC_GNode_Compare): Conditionalized for
4642         inlined configuration.  This function is a thin wrapper of
4643         `ftc_gnode_compare' for inlined `FTC_CACHE_LOOKUP_CMP' (see
4644         `nodecmp' argument).  Under non-inlined configuration,
4645         `ftc_gnode_compare' is invoked by `FTC_Cache_Lookup', via
4646         `FTC_Cache->clazz.node_compare'.
4647
4648         * src/cache/ftcglyph.h (FTC_GNode_Compare): Ditto.
4649         * src/cache/ftcsbits.c (FTC_SNode_Compare): Ditto, for
4650         `ftc_snode_compare'.
4651         * src/cache/ftcsbits.h (FTC_SNode_Compare): Ditto.
4652
4653 2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4654
4655         [cache] Correct a type mismatch under non-inlined config.
4656
4657         * src/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP): `FTC_GCache_Lookup'
4658         takes the node via a pointer `FTC_Node*', differently from cpp-macro
4659         `FTC_CACHE_LOOKUP_CMP'.
4660
4661 2011-01-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4662
4663         Update Jamfile to include Bzip2 support.
4664
4665         * Jamfile: Include src/bzip2 to project.
4666         Comments for lzw, gzip, bzip2 are changed to clarify that
4667         they are for compressed PCF fonts, not others.
4668         (e.g. compressed BDF fonts are not supported yet)
4669
4670 2011-01-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4671
4672         Update Symbian project files to include Bzip2 support.
4673
4674         Currently, it provides `FT_Stream_OpenBzip2' that returns
4675         unimplemented error always, to prevent unresolved symbol
4676         error for the applications designed for Unix systems.
4677
4678         * builds/symbian/bld.inf: Include ftbzip2.h.
4679         * builds/symbian/freetype.mmp: Include ftbzip2.c.
4680
4681 2011-01-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4682
4683         Update classic MacOS makefiles to include Bzip2 support.
4684
4685         Currently, it provides `FT_Stream_OpenBzip2' that returns
4686         unimplemented error always, to prevent unresolved symbol
4687         error for the applications designed for Unix systems.
4688
4689         * builds/mac/FreeType.m68k_cfm.make.txt: Include ftbzip2.c.o.
4690         * builds/mac/FreeType.m68k_far.make.txt: Ditto.
4691         * builds/mac/FreeType.ppc_carbon.make.txt: Include ftbzip2.c.x.
4692         * builds/mac/FreeType.ppc_classic.make.txt: Ditto.
4693
4694 2011-01-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4695
4696         Update Amiga makefiles to include Bzip2 support.
4697
4698         Currently, it provides `FT_Stream_OpenBzip2' that returns
4699         unimplemented error always, to prevent unresolved symbol
4700         error for the applications designed for Unix systems.
4701
4702         * builds/amiga/makefile: Include bzip2.ppc.o built from ftbzip2.c.
4703         * builds/amiga/makefile.os4: Include bzip2.o built from ftbzip2.c.
4704         * builds/amiga/smakefile: Ditto.
4705
4706 2011-01-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4707
4708         Update pkg-config tools to reflect Bzip2 support.
4709
4710         * builds/unix/freetype-config.in: Include `-lbz2' to
4711         --libs output, if built with Bzip2 support.
4712         * builds/unix/freetype2.in: Ditto.
4713
4714 2011-01-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4715
4716         * builds/unix/configure.raw: Remove `SYSTEM_BZ2LIB' macro.
4717
4718         SYSTEM_ZLIB is used to switch the builtin zlib source
4719         or system zlib source out of FreeType2.  But ftbzip2
4720         module has no builtin bzip2 library and always requires
4721         system bzip2 library.  Thus SYSTEM_BZ2LIB is always yes,
4722         it is not used.
4723
4724 2011-01-03  Werner Lemberg  <wl@gnu.org>
4725
4726         */rules.mk: Handle `*pic.c' files.
4727
4728 2010-12-31  Werner Lemberg  <wl@gnu.org>
4729
4730         * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 64.
4731         Problem reported by Tom Bishop <wenlin@wenlin.com>.
4732
4733 2010-12-31  Werner Lemberg  <wl@gnu.org>
4734
4735         Improve bzip2 support.
4736
4737         * include/freetype/ftmoderr.h: Add bzip2.
4738
4739         * docs/INSTALL.ANY, docs/CHANGES: Updated.
4740
4741         * src/pcf/README: Updated.
4742         * include/freetype/internal/pcftypes.h: Obsolete, removed.
4743
4744 2010-12-31  Joel Klinghed  <the_jk@yahoo.com>
4745
4746         Add bzip2 compression support to handle *.pcf.bz2 files.
4747
4748         * builds/unix/configure.raw: Test for libbz2 library.
4749
4750         * devel/ftoption.h, include/freetype/config/ftoption.h
4751         (FT_CONFIG_OPTION_USE_BZIP2): Define.
4752         * include/freetype/config/ftheader.h (FT_BZIP2_H): Define.
4753
4754         * include/freetype/ftbzip2.h: New file.
4755
4756         * src/bzip2/*: New files.
4757
4758         * src/pcf/pcf.h: s/gzip_/comp_/.
4759         * src/pcf/pcfdrvr.c: Include FT_BZIP2_H.
4760         s/gzip_/comp_/.
4761         (PCF_Face_Init): Handle bzip2 compressed files.
4762
4763         * docs/formats.txt, modules.cfg: Updated.
4764
4765 2010-12-25  Harsha  <mm.harsha@gmail.com>
4766
4767         Apply Savannah patch #7422.
4768
4769         If we encounter a space in a string then the sbit buffer is NULL,
4770         height and width are 0s.  So the check in ftc_snode_compare will
4771         always pass for spaces (comparision with 255).  Here the comments
4772         above the condition are proper but the implementation is not.  When
4773         we create an snode I think it is the proper way to initialize the
4774         width to 255 and then put a check for being equal to 255 in snode
4775         compare function.
4776
4777         * src/cache/ftcsbits.c (FTC_SNode_New): Initialize sbit widths with
4778         value 255.
4779         (ftc_snode_compare): Fix condition.
4780
4781 2010-12-13  Werner Lemberg  <wl@gnu.org>
4782
4783         Fix parameter handling of `FT_Set_Renderer'.
4784         Reported by Kirill Tishin <siege@bk.ru>.
4785
4786         * src/base/ftobjs.c (FT_Set_Renderer): Increment `parameters'.
4787
4788 2010-12-09  Werner Lemberg  <wl@gnu.org>
4789
4790         [cff] Allow `hlineto' and `vlineto' without arguments.
4791
4792         We simply ignore such instructions.  This is invalid, but it doesn't
4793         harm; and indeed, there exist such subsetted fonts in PDFs.
4794
4795         Reported by Albert Astals Cid <aacid@kde.org>.
4796
4797         * src/cff/cffgload.c (cff_decoder_parse_charstrings)
4798         [cff_op_hlineto]: Ignore instruction if there aren't any arguments
4799         on the stack.
4800
4801 2010-11-28  Werner Lemberg  <wl@gnu.org>
4802
4803         * Version 2.4.4 released.
4804         =========================
4805
4806
4807         Tag sources with `VER-2-4-4'.
4808
4809         * docs/CHANGES: Updated.
4810
4811         * docs/VERSION.DLL: Update documentation and bump version number to
4812         2.4.4
4813
4814         * README, Jamfile (RefDoc),
4815         builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
4816         builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
4817         builds/win32/visualc/freetype.dsp,
4818         builds/win32/visualc/freetype.vcproj,
4819         builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
4820         builds/win32/visualce/freetype.vcproj,
4821         builds/win32/visualce/index.html,
4822         builds/wince/vc2005-ce/freetype.vcproj,
4823         builds/wince/vc2005-ce/index.html,
4824         builds/wince/vc2008-ce/freetype.vcproj,
4825         builds/wince/vc2008-ce/index.html: s/2.4.3/2.4.4/, s/243/244/.
4826
4827         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
4828
4829         * builds/unix/configure.raw (version_info): Set to 12:2:6.
4830
4831 2010-11-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
4832
4833         [ftsmooth]: Minor code simplification.
4834
4835         * src/smooth/ftgrays (gray_render_cubic): Do only one comparison
4836         instead of two.
4837
4838 2010-11-26  Johnson Y. Yan  <yinsen_yan@foxitsoftware.com>
4839
4840         [truetype] Better multi-threading support.
4841
4842         * src/truetype/ttinterp.c (TT_Load_Context): Reset glyph zone
4843         references.
4844
4845 2010-11-23  John Tytgat  <John.Tytgat@esko.com>
4846
4847         * src/psaux/t1decode.c (t1_decoder_parse_charstring): Expand
4848         start_point, check_points, add_point, add_point1, close_contour
4849         macros.
4850         Remove add_contour macro.
4851         Return error code from t1_builder_start_point and
4852         t1_builder_check_points when there was one (instead of returning 0).
4853
4854 2010-11-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4855
4856         [truetype] Identify the tricky fonts by cvt/fpgm/prep checksums.
4857         Some Latin TrueType fonts are still expected to be unhinted.
4858         Fix Savannah bug #31645.
4859
4860         * src/truetype/ttobjs.c (tt_check_trickyness): Divided to...
4861         (tt_check_trickyness_family): this checking family name, and
4862         (tt_check_trickyness_sfnt_ids): this checking cvt/fpgm/prep.
4863         (tt_get_sfnt_checksum): Function to retrieve the sfnt checksum
4864         for specified subtable even if cleared by lazy PDF generators.
4865         (tt_synth_sfnt_checksum): Function to calculate the checksum.
4866
4867 2010-11-18  Werner Lemberg  <wl@gnu.org>
4868
4869         [truetype] Fix `loca' handling for inconsistent number of glyphs.
4870         Reported by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>.
4871
4872         * src/truetype/ttpload.c (tt_face_load_loca): While sanitizing,
4873         handle case where `loca' is the last table in the font.
4874
4875 2010-11-18  Werner Lemberg  <wl@gnu.org>
4876
4877         [sfnt] Ignore all errors while loading `OS/2' table.
4878         Suggested by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>.
4879
4880         * src/sfnt/sfobjs.c (sfnt_load_face): Do it.
4881
4882 2010-11-18  Johnson Y. Yan  <yinsen_yan@foxitsoftware.com>
4883
4884         [type1] Fix matrix normalization.
4885
4886         * src/type1/t1load.c (parse_font_matrix): Handle sign of scaling
4887         factor.
4888
4889 2010-11-18  Werner Lemberg  <wl@gnu.org>
4890
4891         [type1] Improve guard against malformed data.
4892         Based on a patch submitted by Johnson Y. Yan
4893         <yinsen_yan@foxitsoftware.com>
4894
4895         * src/type1/t1load.c (read_binary_data): Check `size'.
4896
4897 2010-11-17  Werner Lemberg  <wl@gnu.org>
4898
4899         [sfnt] While tracing, output table checksums also.
4900
4901         * src/sfnt/ttload.c (tt_face_load_font_dir): Do it.
4902
4903 2010-11-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4904
4905         [UVS] Fix `find_variant_selector_charmap', Savannah bug #31545.
4906
4907         Since 2010-07-04, `find_variant_selector_charmap' returns
4908         the first cmap subtable always under rogue-compatible
4909         configuration, it causes NULL pointer dereference and
4910         make UVS-related functions crashed.
4911
4912         * src/base/ftobjs.c (Fix find_variant_selector_charmap):
4913         Returns UVS cmap correctly.
4914
4915 2010-11-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
4916
4917         [ftsmooth] Improve rendering.
4918
4919         * src/smooth/ftsmooth.c (gray_render_conic): Since version 2.4.3,
4920         cubic deviations have been estimated _after_ UPSCALE, whereas
4921         conic ones have been evaluated _before_ UPSCALE, which produces
4922         inferior rendering results.  Fix this.
4923         Partially undo change from 2010-10-15 by using ONE_PIXEL/4; this has
4924         been tested with demo images sent to the mailing list.  See
4925
4926           http://lists.gnu.org/archive/html/freetype-devel/2010-10/msg00055.html
4927
4928         and later mails in this thread.
4929
4930 2010-10-28  Werner Lemberg  <wl@gnu.org>
4931
4932         [ftraster] Minor fixes.
4933
4934         Reported by Tom Bishop <wenlin@wenlin.com>.
4935
4936         * src/raster/ftraster.c (ULong): Remove unused typedef.
4937         (TWorker): Remove unused variable `precision_mask'.
4938
4939 2010-10-28  Werner Lemberg  <wl@gnu.org>
4940
4941         [ftraster] Fix rendering.
4942
4943         Problem reported by Tom Bishop <wenlin@wenlin.com>; see
4944         thread starting with
4945
4946           http://lists.gnu.org/archive/html/freetype/2010-10/msg00049.html
4947
4948         * src/raster/ftraster.c (Line_Up): Replace FMulDiv with SMulDiv
4949         since the involved multiplication exceeds 32 bits.
4950
4951 2010-10-25  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4952
4953         Revert a change of `_idx' type in `FTC_CACHE_LOOKUP_CMP'.
4954
4955         * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Revert
4956         the type of `_idx' from FT_PtrDist (by previous change)
4957         to original FT_UFast, to match with FT_CacheRec.
4958
4959 2010-10-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4960
4961         [cache] Change the hash types to FT_PtrDist.
4962
4963         On LLP64 platforms (e.g. Win64), FT_ULong (32-bit)
4964         variables are inappropriate to calculate hash values
4965         from the memory address (64-bit).  The hash variables
4966         are extended from FT_ULong to FT_PtrDist and new
4967         hashing macro functions are introduced.  The hash
4968         values on 16-bit memory platforms are changed, but
4969         ILP32 and LP64 are not changed.  The hash value in
4970         the cache subsystem is not reverted to the memory
4971         address, so using signed type FT_PtrDist is safe.
4972
4973         * src/cache/ftccache.h (_FTC_FACE_ID_HASH): New hash
4974         function to replace `FTC_FACE_ID_HASH' for portability.
4975         * src/cache/ftcmanag.h (FTC_SCALER_HASH): Replace
4976         `FTC_FACE_ID_HASH' by `_FTC_FACE_ID_HASH'.
4977         * src/cache/ftccmap.c (FTC_CMAP_HASH): Ditto.
4978
4979         * src/cache/ftccache.h (FTC_NodeRec): The type of the
4980         member `hash' is changed from FT_UInt32 to FT_PtrDist.
4981
4982         * src/cache/ftccache.h (FTC_Cache_Lookup): The type of the
4983         argument `hash' is changed from FT_UInt32 to FT_PtrDist.
4984         (FTC_Cache_NewNode): Ditto.
4985         * src/cache/ftccache.c (ftc_cache_add): Ditto.
4986         (FTC_Cache_Lookup): Ditto.  (FTC_Cache_NewNode): Ditto.
4987         * src/cache/ftcglyph.h (FTC_GCache_Lookup): Ditto.
4988         * src/cache/ftcglyph.c (FTC_GCache_Lookup): Ditto.
4989
4990         * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): The type
4991         of the internal variable `hash' is changed to FT_PtrDist
4992         from FT_UInt32.  (FTC_ImageCache_LookupScaler): Ditto.
4993         (FTC_SBitCache_Lookup): Ditto.
4994         (FTC_SBitCache_LookupScaler): Ditto.
4995         * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Ditto.
4996         * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Ditto.
4997         Also the type of the internal variable `_idx' is changed to
4998         FT_PtrDist from FT_UFast for better pointer calculation.
4999
5000 2010-10-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5001
5002         [cache] Hide internal macros incompatible with LLP64.
5003
5004         `FT_POINTER_TO_ULONG', `FTC_FACE_ID_HASH', and
5005         `FTC_IMAGE_TYPE_HASH' are enclosed by
5006         FT_CONFIG_OPTION_OLD_INTERNALS and hidden from
5007         normal clients.
5008
5009         For the history of these macros, see the investigation:
5010         http://lists.gnu.org/archive/html/freetype/2010-10/msg00022.html
5011
5012 2010-10-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5013
5014         Change the type of `FT_MEM_VAL' from FT_ULong to FT_PtrDist.
5015
5016         On LLP64 platforms (e.g. Win64), unsigned long (32-bit)
5017         cannot cover the memory address (64-bit).  `FT_MEM_VAL' is
5018         used for hashing only and not dereferred, so using signed
5019         type FT_PtrDist is safe.
5020
5021         * src/base/ftdbgmem.c (FT_MEM_VAL): Change the type of the
5022         return value from FT_ULong to FT_PtrDist.
5023         (ft_mem_table_resize): The type of hash is changed to
5024         FT_PtrDist.  (ft_mem_table_get_nodep): Ditto.
5025
5026 2010-10-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5027
5028         Replace "%lx" for memory address by "%p", LLP64 platforms.
5029
5030         On LLP64 platforms (e.g. Win64), long (32-bit) cannot cover
5031         the memory address (64-bit).  Also the casts from the pointer
5032         type to long int should be removed to preserve the address
5033         correctly.
5034
5035         * src/raster/ftraster.c (New_Profile): Replace "%lx" by "%p".
5036         (End_Profile) Ditto.
5037         * src/truetype/ttinterp.c (Init_Context): Ditto.
5038
5039 2010-10-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
5040
5041         Fix thinko in spline flattening.
5042
5043         FT_MAX_CURVE_DEVIATION is dependent on the value of ONE_PIXEL.
5044
5045         * src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): Remove it and
5046         replace it everywhere with ONE_PIXEL/8.
5047
5048 2010-10-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5049
5050         [raccess] Skip unrequired resource access rules by Darwin VFS.
5051
5052         When a resource fork access rule by Darwin VFS could open the
5053         resource fork but no font is found in it, the rest of rules
5054         by Darwin VFS are skipped.  It reduces the warnings of the
5055         deprecated resource fork access method by recent Darwin kernel.
5056         Fix MacPorts ticket #18859:
5057                 http://trac.macports.org/ticket/18859
5058
5059         * src/base/ftobjs.c (load_face_in_embedded_rfork):
5060         When `FT_Stream_New' returns FT_Err_Cannot_Open_Stream, it
5061         means that the file is possible to be `fopen'-ed but zero-sized.
5062         Also there is a case that the resource fork is not zero-sized,
5063         but no supported font exists in it.  If a rule by Darwin VFS
5064         falls into such cases, there is no need to try other Darwin VFS
5065         rules anymore.  Such cases are marked by vfs_rfork_has_no_font.
5066         If it is TRUE, the Darwin VFS rules are skipped.
5067
5068 2010-10-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5069
5070         [raccess] Grouping resource access rules based on Darwin VFS.
5071
5072         MacOS X/Darwin kernel supports a few tricky methods to access
5073         a resource fork via ANSI C or POSIX interface.  Current resource
5074         fork accessor tries all possible methods to support all kernels.
5075         But if a method could open a resource fork but no font is found,
5076         there is no need to try other methods older than tested method.
5077         To determine whether the rule index is for Darwin VFS, a local
5078         function `ftrfork.c::raccess_rule_by_darwin_vfs' is introduced.
5079         To use this function in ftobjs.c etc but it should be inlined,
5080         it is exposed by ftbase.h.
5081
5082         * src/base/ftrfork.c (FT_RFork_Rule): New enum type to identify
5083         the rules to access the resource fork.
5084         (raccess_guess_rec): New structure to bind the rule function and
5085         rule enum type.
5086         (FT_Raccess_Guess): The list of the rule functions is replaced by
5087         (raccess_guess_table): This.  This is exposed to be used by other
5088         intra module functions.
5089         (raccess_rule_by_darwin_vfs): A function to return a boolean
5090         if the rule specified by the rule index is based on Darwin VFS.
5091
5092 2010-10-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5093
5094         Prevent to open a FT_Stream for zero-sized file on non-Unix.
5095
5096         builds/unix/ftsystem.c prevents to open an useless stream from
5097         zero-sized file and returns FT_Err_Cannot_Open_Stream, but the
5098         stream drivers for ANSI C, Amiga and VMS return useless streams.
5099         For cross-platform consistency, all stream drivers should act
5100         same.
5101
5102         * src/base/ftsystem.c (FT_Stream_Open): If the size of the opened
5103         file is zero, FT_Err_Cannot_Open_Stream is returned.
5104         * builds/amiga/src/base/ftsystem.c (FT_Stream_Open): Ditto.
5105         * src/vms/ftsystem.c (FT_Stream_Open): Ditto.
5106
5107 2010-10-12  Werner Lemberg  <wl@gnu.org>
5108
5109         [truetype] Fix Savannah bug #31310.
5110
5111         * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Protect against
5112         invalid `runcnt' values.
5113
5114 2010-10-08  Chris Liddell  <chris.liddell@artifex.com>
5115
5116         [sfnt] Fix Savannah bug #31275.
5117
5118         * src/sfnt/ttpost.c: Include FT_INTERNAL_DEBUG_H.
5119
5120 2010-10-06  Werner Lemberg  <wl@gnu.org>
5121
5122         [truetype] Improve error handling of `SHZ' bytecode instruction.
5123         Problem reported by Chris Evans <scarybeasts@gmail.com>.
5124
5125         * src/truetype/ttinterp.c (Ins_SHZ): Check `last_point'.
5126
5127 2010-10-05  Werner Lemberg  <wl@gnu.org>
5128
5129         Fix Savannah bug #31253.
5130         Patch submitted by an anonymous reporter.
5131
5132         * configure: Use `awk' instead of `sed' to manipulate output of `ls
5133         -id'.
5134
5135 2010-10-03  Werner Lemberg  <wl@gnu.org>
5136
5137         * Version 2.4.3 released.
5138         =========================
5139
5140
5141         Tag sources with `VER-2-4-3'.
5142
5143         * docs/CHANGES: Updated.
5144
5145         * docs/VERSION.DLL: Update documentation and bump version number to
5146         2.4.3
5147
5148         * README, Jamfile (RefDoc),
5149         builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
5150         builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
5151         builds/win32/visualc/freetype.dsp,
5152         builds/win32/visualc/freetype.vcproj,
5153         builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
5154         builds/win32/visualce/freetype.vcproj,
5155         builds/win32/visualce/index.html,
5156         builds/wince/vc2005-ce/freetype.vcproj,
5157         builds/wince/vc2005-ce/index.html,
5158         builds/wince/vc2008-ce/freetype.vcproj,
5159         builds/wince/vc2008-ce/index.html: s/2.4.2/2.4.3/, s/242/243/.
5160
5161         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
5162
5163         * builds/unix/configure.raw (version_info): Set to 12:1:6.
5164
5165 2010-10-03  Werner Lemberg  <wl@gnu.org>
5166
5167         Avoid `configure' issues with symbolic links.
5168         Based on a patch from Alexander Stohr <Alexander.Stohr@gmx.de>.
5169
5170         * configure: Compare directories using `ls -id'.
5171         Check existence of `reference' subdirectory before creating it.
5172
5173 2010-10-02  Werner Lemberg  <wl@gnu.org>
5174
5175         [sfnt] Fix Savannah bug #31088 (sort of).
5176
5177         * src/sfnt/ttload.c (tt_face_load_maxp): Always allocate at least 64
5178         function entries.
5179
5180 2010-10-02  Werner Lemberg  <wl@gnu.org>
5181
5182         [smooth] Fix splitting of cubics for negative values.
5183
5184         Reported by Róbert Márki <gsmiko@gmail.com>; see
5185         http://lists.gnu.org/archive/html/freetype/2010-09/msg00019.html.
5186
5187         * src/smooth/ftgrays.c (gray_render_cubic): Fix thinko.
5188
5189 2010-10-01  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5190
5191         [truetype] Fix Savannah bug #31040.
5192
5193         * src/truetype/ttinterp.c (free_buffer_in_size): Remove.
5194         (TT_RunIns): Updated.
5195
5196 2010-09-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5197
5198         [sfnt] Make error message filling NULL names less verbose.
5199
5200         * src/sfnt/ttpost.c (load_format_20): Showing 1 summary message
5201         when we fill `post' names by NULL, instead of per-entry message.
5202
5203 2010-09-20  Graham Asher  <graham.asher@btinternet.com>
5204             David Bevan  <david.bevan@pb.com>
5205
5206         [smooth] Fix and improve spline flattening.
5207
5208         This fixes the flattening of cubic, S-shaped curves and speeds up
5209         the handling of both the conic and cubic arcs.
5210
5211         See the discussions on the freetype-devel mailing list in late
5212         August and September 2010 for details.
5213
5214         * src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): New macro.
5215         (TWorker): Remove `conic_level' and `cubic_level' elements.
5216         (gray_render_conic): Simplify algorithm.
5217         (gray_render_cubic): New algorithm; details are given in the code
5218         comments.
5219         (gray_convert_glyph): Remove heuristics.
5220
5221 2010-09-19  Werner Lemberg  <wl@gnu.org>
5222
5223         Minor fixes.
5224
5225         * src/cff/cffload.c (cff_charset_compute_cids): `charset->sids[i]'
5226         is `FT_UShort'.
5227         (cff_index_access_element): Don't use additions in comparison.
5228         * src/sfnt/ttpost.c (load_format_20): Make `post_limit' of type
5229         `FT_Long'.
5230         Don't use additions in comparison.
5231         Improve tracing messages.
5232         (load_format_25, load_post_names): Make `post_limit' of type
5233         `FT_Long'.
5234
5235 2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5236
5237         [cff] Truncate the element length at the end of the stream.
5238         See Savannah bug #30975.
5239
5240         * src/cff/cffload.c (cff_index_access_element): `off2', the offset
5241         to the next element is truncated at the end of the stream to prevent
5242         invalid I/O.  As `off1', the offset to the requested element has
5243         been checked by `FT_STREAM_SEEK', `off2' should be checked
5244         similarly.
5245
5246 2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5247
5248         [cff] Ignore CID > 0xFFFFU.
5249         See Savannah bug #30975.
5250
5251         * src/cff/cffload.c (cff_charset_compute_cids): Ignore CID if
5252         greater than 0xFFFFU.  CFF font spec does not mention maximum CID in
5253         the font, but PostScript and PDF spec define that maximum CID is
5254         0xFFFFU.
5255
5256 2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5257
5258         [cff] Make trace message in` cff_charset_load' verbose.
5259         See Savannah bug #30975.
5260
5261         * src/cff/cffload.c (cff_charset_load): Report the original `nleft'
5262         and truncated `nleft'.
5263
5264 2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5265
5266         [cff] Correct `max_cid' from CID array length to max CID.
5267         See Savannah bug #30975.
5268
5269         * src/cff/cffload.c (cff_charset_compute_cids): Don't increment
5270         max_cid after detecting max CID.  The array CFF_Charset->cids is
5271         allocated by max_cid + 1.
5272         (cff_charset_cid_to_gindex): Permit CID is less than or equal to
5273         CFF_Charset->max_cid.
5274         * src/cff/cffobjs.c (cff_face_init): FT_Face->num_glyphs is
5275         calculated as CFF_Charset->max_cid + 1.
5276
5277 2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5278
5279         [truetype] Sanitize the broken offsets in `loca'.
5280         See Savannah bug #31040.
5281
5282         * src/truetype/ttpload.c (tt_face_get_location): If `pos1', the
5283         offset to the requested entry in `glyf' exceeds the end of the
5284         table, return offset=0, length=0.  If `pos2', the offset to the next
5285         entry in `glyf' exceeds the end of the table, truncate the entry
5286         length at the end of `glyf' table.
5287
5288 2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5289
5290         [sfnt] Prevent overrunning in `post' table parser.
5291         See Savannah bug #31040.
5292
5293         * src/sfnt/ttpost.c (load_post_names): Get the length of `post'
5294         table and pass the limit of `post' table to `load_format_20' and
5295         `load_format_25'.
5296         (load_format_20): Stop the parsing when we reached at the limit of
5297         `post' table.  If more glyph names are required, they are filled by
5298         NULL names.
5299
5300 2010-09-17  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5301
5302         [truetype] Don't duplicate size->twilight structure to be freed.
5303         See Savannah bug #31040 for detail.
5304
5305         * src/truetype/ttinterp.c (free_buffer_in_size): Don't duplicate
5306         FT_GlyphZoneRec size->twilight to be freed.  If duplicated,
5307         `FT_FREE' erases the duplicated pointers only and leave original
5308         pointers.  They can cause the double-free crash when the burst
5309         errors occur in TrueType interpreter and `free_buffer_in_size' is
5310         invoked repeatedly.
5311
5312 2010-09-15  Werner Lemberg  <wl@gnu.org>
5313
5314         Make bytecode debugging with FontForge work again.
5315
5316         * src/truetype/ttinterp.c (TT_RunIns): Don't call
5317         `free_buffer_in_size' in case of error if a debugger is active.
5318
5319 2010-09-14  Werner Lemberg  <wl@gnu.org>
5320
5321         Improve tracing messages.
5322
5323         * src/truetype/ttinterp.c (TT_RunIns): Improve wording of tracing
5324         message.
5325         * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Add
5326         tracing message.
5327         * src/truetype/ttgload.c (tt_loader_init): Add tracing message.
5328         * src/cache/ftcsbits.c (ftc_snode_load): Emit tracing message if
5329         glyph doesn't fit into a small bitmap container.
5330
5331 2010-09-13  Werner Lemberg  <wl@gnu.org>
5332
5333         Fix minor issues reported by <muktha.narayan@wipro.com>.
5334
5335         * src/autofit/aflatin.c (af_latin_compute_stem_width): Remove
5336         redundant conditional check.
5337         * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Ditto.
5338         * src/cff/cffload.c (cff_encoding_load): Remove conditional check
5339         which always evaluates to `true'.
5340         * src/pshinter/pshalgo.c (ps_glyph_interpolate_strong_points):
5341         Ditto.
5342         * src/truetype/ttinterp.c (Ins_IUP): Ditto.
5343         * src/cid/cidgload.c (cid_slot_load_glyph): Don't check for NULL if
5344         value is already dereferenced.
5345         * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix check of `face'.
5346
5347 2010-08-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5348
5349         Ignore the environmental setting of LIBTOOL.
5350         Patch is suggested by Adrian Bunk, to prevent unexpected
5351         reflection of environmental LIBTOOL.  See:
5352         http://savannah.nongnu.org/patch/?7290
5353
5354         * builds/unix/unix-cc.in: LIBTOOL is unconditionally set to
5355         $(FT_LIBTOOL_DIR)/libtool.  FT_LIBTOOL_DIR is set to $(BUILD_DIR)
5356         by default.
5357         * configure: When configured for the building out of source tee,
5358         FT_LIBTOOL_DIR is set to $(OBJ_DIR).
5359
5360 2010-08-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5361
5362         [truetype] Decrease the trace level catching the interpreter error.
5363
5364         * src/truetype/ttinterp.c (TT_RunIns): Decrease the trace level
5365         showing the error when the interpreter returns with an error,
5366         from` FT_TRACE7' to `FT_TRACE1'.
5367
5368 2010-08-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5369
5370         [truetype] Prevent bytecode reuse after the interpretation error.
5371
5372         * src/truetype/ttinterp.c (free_buffer_in_size): New function to
5373         free the buffer allocated during the interpretation of this glyph.
5374         (TT_RunIns): Unset FT_Face->size->{cvt_ready,bytecode_ready} if
5375         an error occurs in the bytecode interpretation.  The interpretation
5376         of invalid bytecode may break the function definitions and referring
5377         them in later interpretation is danger.  By unsetting these flags,
5378         `fpgm' and `prep' tables are executed again in next interpretation.
5379
5380         This fixes Savannah bug #30798, reported by Robert Święcki.
5381
5382 2010-08-29  Werner Lemberg  <wl@gnu.org>
5383
5384         [ftraster] Pacify compiler.
5385
5386         * src/raster/ftraster.c (ft_black_new) [_STANDALONE_]: `memory' is
5387         not used.
5388
5389 2010-08-29  Werner Lemberg  <wl@gnu.org>
5390
5391         [cff] Allow SIDs >= 65000.
5392
5393         * src/cff/cffload.c (cff_charset_load): Fix change from 2009-03-20:
5394         The threshold for SIDs is not applicable here.  I misinterpreted the
5395         `SID values 65000 and above are available for implementation use'
5396         sentence in the CFF specification.
5397
5398         Problem reported by Ivan Ninčić <inincic@pdftron.com>.
5399
5400 2010-08-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5401
5402         Force hinting when the font lacks its familyname.
5403
5404         In Type42 or Type11 font embedded in PostScript & PDF, TrueType sfnt
5405         stream may lack `name' table because they are not required.  Hinting
5406         for nameless fonts is safer for PDFs including embedded Chinese
5407         fonts.  Written by David Bevan, see:
5408
5409         http://lists.gnu.org/archive/html/freetype-devel/2010-08/msg00021.html
5410         http://lists.freedesktop.org/archives/poppler/2010-August/006310.html
5411
5412         * src/truetype/ttobjs.c (tt_check_trickyness): If a NULL pointer by
5413         nameless font is given, TRUE is returned to enable hinting.
5414
5415 2010-08-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5416
5417         Register yet another tricky TrueType font.
5418
5419         * src/truetype/ttobjs.c (tt_check_trickyness): Add `HuaTianKaiTi?',
5420         a Kaishu typeface paired with `HuaTianSongTi?' by Huatian
5421         Information Industry.
5422
5423 2010-08-17  Teijo Kinnunen <Teijo.Kinnunen@nuance.com>
5424
5425         [cache] Fix Savannah bug #30788.
5426
5427         * src/cache/ftccache.c (FTC_Cache_Clear): Check `cache->buckets' for
5428         NULL too.
5429
5430 2010-08-10  Werner Lemberg  <wl@gnu.org>
5431
5432         Try to fix Savannah bug #30717 (and probably #30719 too).
5433
5434         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Add another
5435         overflow test for `width' and `height'.
5436
5437 2010-08-06  Werner Lemberg  <wl@gnu.org>
5438
5439         * Version 2.4.2 released.
5440         =========================
5441
5442
5443         Tag sources with `VER-2-4-2'.
5444
5445         * docs/CHANGES: Updated.
5446
5447         * docs/VERSION.DLL: Update documentation and bump version number to
5448         2.4.2
5449
5450         * README, Jamfile (RefDoc),
5451         builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
5452         builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
5453         builds/win32/visualc/freetype.dsp,
5454         builds/win32/visualc/freetype.vcproj,
5455         builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
5456         builds/win32/visualce/freetype.vcproj,
5457         builds/win32/visualce/index.html,
5458         builds/wince/vc2005-ce/freetype.vcproj,
5459         builds/wince/vc2005-ce/index.html,
5460         builds/wince/vc2008-ce/freetype.vcproj,
5461         builds/wince/vc2008-ce/index.html: s/2.4.1/2.4.2/, s/241/242/.
5462
5463         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
5464
5465         * builds/unix/configure.raw (version_info): Set to 12:0:6.
5466
5467 2010-08-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5468
5469         Fix Savannah bug #30648.
5470
5471         * src/base/ftobjs.c (FT_Done_Library): Specify the order of font
5472         drivers during the face closing process.  Type42 faces should be
5473         closed before TrueType faces, because a Type42 face refers to
5474         another internal TrueType face which is created from sfnt[] array on
5475         the memory.
5476
5477 2010-08-06  Yuriy Kaminskiy  <yumkam@mail.ru>
5478
5479         [raster] Fix valgrind warning.
5480
5481         * src/raster/ftraster.c (Decompose_Curve) <default>: Access point[0]
5482         only if we don't hit `limit'.
5483
5484 2010-08-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5485
5486         Fix Savannah bug #30658.
5487
5488         * src/base/ftobjs.c (Mac_Read_POST_Resource): Check that the total
5489         length of collected POST segments does not overrun the allocated
5490         buffer.
5491
5492 2010-08-06  Yuriy Kaminskiy  <yumkam@mail.ru>
5493
5494         Fix conditional usage of FT_MulFix_i386.
5495         With -ansi flag, gcc does not define `i386', only `__i386__'.
5496
5497         * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in:
5498         s/i386/__i386__/.
5499
5500 2010-08-05  Werner Lemberg  <wl@gnu.org>
5501
5502         [truetype] Fix Savannah bug #30657.
5503
5504         * src/truetype/ttinterp.c (BOUNDSL): New macro.
5505         Change `BOUNDS' to `BOUNDSL' where appropriate.
5506
5507         * src/truetype/ttinterp.h (TT_ExecContextRec): Fix type of
5508         `cvtSize'.
5509
5510 2010-08-05  Werner Lemberg  <wl@gnu.org>
5511
5512         [type42] Fix Savannah bug #30656.
5513
5514         * src/type42/t42parse.c (t42_parse_sfnts): Protect against negative
5515         string_size.
5516         Fix comparison.
5517
5518 2010-08-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5519
5520         [cff] Don't use any values in decoder after parsing error.
5521
5522         * src/cff/cffgload.c (cff_slot_load): Skip the evaluations
5523         of the values in decoder, if `cff_decoder_parse_charstrings'
5524         returns any error.
5525
5526 2010-08-04  Werner Lemberg  <wl@gnu.org>
5527
5528         Fix Savannah bug #30644.
5529
5530         * src/base/ftstream.c (FT_Stream_EnterFrame): Fix comparison.
5531
5532 2010-08-04  Werner Lemberg  <wl@gnu.org>
5533
5534         `make devel' fails if FT_CONFIG_OPTION_OLD_INTERNALS is set.
5535
5536         * devel/ftoption.h: Synchronize with
5537         include/freetype/config/ftoption.h.
5538
5539 2010-08-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5540
5541         [cff] Improve stack overflow test.
5542
5543         * src/cff/cffgload.c (cff_decoder_parse_charstrings): Check stack
5544         after execution of operations too.
5545
5546 2010-07-18  Werner Lemberg  <wl@gnu.org>
5547
5548         Add reference counters and to FT_Library and FT_Face objects.
5549
5550         * include/freetype/freetype.h (FT_Reference_Face): New function.
5551         * include/freetype/ftmodapi.h (FT_Rererence_Library): New function.
5552
5553         * include/freetype/internal/ftobjs.h (FT_Face_InternalRec,
5554         FT_LibraryRec): New field `refcount'.
5555
5556         * src/base/ftobjs.c (FT_Open_Face, FT_New_Library): Handle
5557         `refcount'.
5558         (FT_Reference_Face, FT_Reference_Library): Implement new functions.
5559         (FT_Done_Face, FT_Done_Library): Handle `refcount'.
5560
5561         * docs/CHANGES: Updated.
5562
5563 2010-07-18  Werner Lemberg  <wl@gnu.org>
5564
5565         * Version 2.4.1 released.
5566         =========================
5567
5568
5569         Tag sources with `VER-2-4-1'.
5570
5571         * docs/CHANGES: Updated.
5572
5573         * docs/VERSION.DLL: Update documentation and bump version number to
5574         2.4.1.
5575
5576         * README, Jamfile (RefDoc),
5577         builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
5578         builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
5579         builds/win32/visualc/freetype.dsp,
5580         builds/win32/visualc/freetype.vcproj,
5581         builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
5582         builds/win32/visualce/freetype.vcproj,
5583         builds/win32/visualce/index.html,
5584         builds/wince/vc2005-ce/freetype.vcproj,
5585         builds/wince/vc2005-ce/index.html,
5586         builds/wince/vc2008-ce/freetype.vcproj,
5587         builds/wince/vc2008-ce/index.html: s/2.4.0/2.4.1/, s/240/241/.
5588
5589         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
5590
5591         * builds/unix/configure.raw (version_info): Set to 11:1:5.
5592
5593 2010-07-17  Werner Lemberg  <wl@gnu.org>
5594
5595         [cff] Final try to fix `hintmask' and `cntrmask' limit check.
5596
5597         Problem reported by Tobias Wolf <towolf@gmail.com>.
5598
5599         * src/cff/cffgload.c (cff_decoder_parse_charstrings)
5600         <cff_op_hintmask>: Sigh.  I'm apparently too silly to fix this
5601         correctly in less than three tries.
5602
5603 2010-07-12  Werner Lemberg  <wl@gnu.org>
5604
5605         * Version 2.4.0 released.
5606         =========================
5607
5608
5609         Tag sources with `VER-2-4-0'.
5610
5611         * docs/CHANGES: Updated.
5612
5613         * docs/VERSION.DLL: Update documentation and bump version number to
5614         2.4.0.
5615
5616         * README, Jamfile (RefDoc),
5617         builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
5618         builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
5619         builds/win32/visualc/freetype.dsp,
5620         builds/win32/visualc/freetype.vcproj,
5621         builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
5622         builds/win32/visualce/freetype.vcproj,
5623         builds/win32/visualce/index.html,
5624         builds/wince/vc2005-ce/freetype.vcproj,
5625         builds/wince/vc2005-ce/index.html,
5626         builds/wince/vc2008-ce/freetype.vcproj,
5627         builds/wince/vc2008-ce/index.html: s/2.3.12/2.4.0/, s/2312/240/.
5628
5629         * include/freetype/freetype.h (FREETYPE_MINOR): Set to 4.
5630         (FREETYPE_PATCH): Set to 0.
5631
5632         * builds/unix/configure.raw (version_info): Set to 11:0:5.
5633
5634 2010-07-12  Werner Lemberg  <wl@gnu.org>
5635
5636         Remove C++ warnings.
5637
5638         */*: Initialize pointers where necessary to make g++ happy.
5639
5640 2010-07-12  malc  <av1474@comtv.ru>
5641             Richard Henderson  <rth@redhat.com>
5642
5643         Fix type-punning issues with C++.
5644
5645         * include/freetype/internal/ftmemory.h (FT_ASSIGNP) [__cplusplus]:
5646         Emulate a `typeof' operator with an inline template which uses
5647         `static_cast'.
5648
5649 2010-07-11  Werner Lemberg  <wl@gnu.org>
5650
5651         Fix C++ compilation issue.
5652
5653         * src/tools/apinames.c (names_dump) <OUTPUT_WATCOM_LBC>: Fix
5654         type of `dot' variable.
5655
5656 2010-07-10  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5657
5658         Fix another case reported in Savannah bug #30373.
5659         Permit a face for Type1, Type42 and CFF without charmap,
5660         patch by Tor Andersson.
5661
5662         * src/type1/t1objs.c (T1_Face_Init): Reset the error if it
5663         is FT_Err_No_Unicode_Glyph_Name.
5664         * src/type42/t42objs.c (T42_Face_Init): Ditto.
5665         * src/cff/cffobjs.c (cff_face_init): Ditto.
5666
5667 2010-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5668
5669         Use defined macros to set {platform,encoding}_id.
5670
5671         * src/bdf/bdfdrivr.c: Include ttnameid.h and use macros to
5672         set charmap.{platfom,encoding}_id.
5673         * src/pcf/pcfdrivr.c: Ditto.
5674         * src/winfonts/winfnt.c: Ditto.
5675         * src/type1/t1objs.c: Ditto.
5676         * src/type42/t42objs.c: Ditto.
5677         * src/cff/cffobjs.c: Ditto.
5678         * src/pfr/pfrobjs.c: Ditto.
5679
5680 2010-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5681
5682         Fix Savannah bug #30373.
5683         Too serious check of errors by `FT_CMap_New' since 2010-07-04
5684         is fixed. Reported by Tor Andersson.
5685
5686         * include/freetype/fterrdef.h
5687         (PSnames_Err_No_Unicode_Glyph_Name): New error code to
5688         indicate the Unicode charmap synthesis failed because
5689         no Unicode glyph name is found.
5690
5691         * src/psnames/psmodule.c (ps_unicodes_init): Return
5692         PSnames_Err_No_Unicode_Glyph_Name when no Unicode glyph name
5693         is found in the font.
5694         * src/cff/cffcmap.c (cff_cmap_unicode_init): Return
5695         CFF_Err_No_Unicode_Glyph_Name when no SID is available.
5696
5697         * src/type1/t1objs.c (T1_Face_Init): Proceed if `FT_CMap_New'
5698         is failed by the lack of Unicode glyph name.
5699         * src/type42/t42objs.c (T42_Face_Init): Ditto.
5700         * src/cff/cffobjs.c (cff_face_init): Ditto.
5701
5702 2010-07-09  Ken Sharp  <ken.sharp@artifex.com>
5703
5704         Make ftraster.c compile in stand-alone mode with MSVC compiler.
5705
5706         * src/raster/ftmisc.h (FT_Int64) [_WIN32, _WIN64]: Fix typedef
5707         since there is no `inttypes.h' for MSVC.
5708
5709 2010-07-08  Werner Lemberg  <wl@gnu.org>
5710
5711         [truetype] Fix Savannah bug #30361.
5712
5713         * src/truetype/ttinterp.c (Ins_IUP): Fix bounds check.
5714
5715 2010-07-06  Werner Lemberg  <wl@gnu.org>
5716
5717         Pacify compiler.
5718
5719         * src/cff/cffload.c (cff_index_get_pointers): Initialize
5720         `new_bytes'.
5721
5722 2010-07-05  Eugene A. Shatokhin  <spectre@ispras.ru>
5723
5724         Fix Savannah bug #27648.
5725
5726         * src/base/ftobjs.c (ft_remove_renderer, FT_Add_Module): Call
5727         `raster_done' only if we have an outline glyph format.
5728
5729 2010-07-05  Werner Lemberg  <wl@gnu.org>
5730
5731         Fix Savannah bug #30030.
5732
5733         * builds/win32/*/freetype.vcproj: Add ftxf86.c.
5734
5735 2010-07-05  Werner Lemberg  <wl@gnu.org>
5736
5737         [cff] Next try to fix `hintmask' and `cntrmask' limit check.
5738
5739         Problem reported by malc <av1474@comtv.ru>.
5740
5741         * src/cff/cffgload.c (cff_decoder_parse_charstrings)
5742         <cff_op_hintmask>: It is possible that there is just a single byte
5743         after the `hintmask' or `cntrmask', e.g., a `return' instruction.
5744
5745 2010-07-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5746
5747         Restrict the number of the charmaps in a rogue-compatible mode.
5748         Fix for Savannah bug #30059.
5749
5750         * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Replace `16' the
5751         minimum character code passed by a legacy rogue client by...
5752         * include/freetype/config/ftoption.h (FT_MAX_CHARMAP_CACHEABLE):
5753         This.  It is undefined when FT_CONFIG_OPTION_OLD_INTERNALS is
5754         undefined (thus the rogue client compatibility is not required).
5755
5756         * src/cff/cffobjs.c (cff_face_init): Abort the automatic
5757         selection or synthesis of Unicode cmap subtable when the charmap
5758         index exceeds FT_MAX_CHARMAP_CACHEABLE.
5759         * src/sfnt/ttcmap.c (tt_face_build_cmaps): Issue error message
5760         when the charmap index exceeds FT_MAX_CHARMAP_CACHEABLE.
5761
5762         * src/base/ftobjs.c (find_unicode_charmap): When Unicode charmap
5763         is found after FT_MAX_CHARMAP_CACHEABLE, ignore it and search
5764         earlier one.
5765         (find_variant_selector_charmap): When UVS charmap is found after
5766         FT_MAX_CHARMAP_CACHEABLE, ignore it and search earlier one.
5767         (FT_Select_Charmap): When a charmap matching with requested
5768         encoding but after FT_MAX_CHARMAP_CACHEABLE, ignore and search
5769         earlier one.
5770         (FT_Set_Charmap): When a charmap matching with requested
5771         charmap but after FT_MAX_CHARMAP_CACHEABLE, ignore and search
5772         earlier one.
5773         (FT_Get_Charmap_Index): When a requested charmap is found
5774         after FT_MAX_CHARMAP_CACHEABLE, return the inverted charmap
5775         index.
5776
5777 2010-07-04  Werner Lemberg  <wl@gnu.org>
5778
5779         TrueType hinting is no longer patented.
5780
5781         * include/freetype/config/ftoption.h, devel/ftoption.h
5782         (TT_CONFIG_OPTION_BYTECODE_INTERPRETER): Define.
5783         (TT_CONFIG_OPTION_UNPATENTED_HINTING): Undefine.
5784
5785         * docs/CHANGES, docs/INSTALL, include/freetype/freetype.h: Updated.
5786         * docs/TRUETYPE, docs/PATENTS: Removed.
5787
5788 2010-07-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5789
5790         Check error value by `FT_CMap_New'.
5791
5792         * src/cff/cffobjs.c (cff_face_init): Check error value by
5793         `FT_CMap_New'.
5794         * src/pfr/pfrobjs.c (pfr_face_init): Ditto.
5795         * src/type1/t1jobjs.c (T1_Face_Init): Ditto.
5796         * src/type42/t42jobjs.c (T42_Face_Init): Ditto.
5797
5798 2010-07-03  Werner Lemberg  <wl@gnu.org>
5799
5800         Make ftgrays.c compile stand-alone again.
5801
5802         * src/smooth/ftgrays.c [_STANDALONE_]: Include `stddef.h'.
5803         (FT_INT_MAX, FT_PtrDist)[_STANDALONE_]: Define.
5804
5805 2010-07-02  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5806
5807         Additional fix for Savannah bug #30306.
5808
5809         * src/base/ftobjs.c (Mac_Read_POST_Resource): If the type of the
5810         POST fragment is 0, the segment is completely ignored.  The declared
5811         length of the segment is not cared at all.  According to Adobe
5812         Technical Note 5040, type 0 segment is a comment only and should not
5813         be loaded for the interpreter.  Reported by Robert Święcki.
5814
5815 2010-07-01  Werner Lemberg  <wl@gnu.org>
5816
5817         [truetype] Protect against code range underflow.
5818
5819         * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Don't allow
5820         negative IP values.
5821
5822 2010-07-01  Werner Lemberg  <wl@gnu.org>
5823
5824         [truetype] Add rudimentary tracing for bytecode instructions.
5825
5826         * src/truetype/ttinterp.c (opcode_name) [FT_DEBUG_LEVEL_TRACE]: New
5827         array.
5828         (TT_RunIns): Trace opcodes.
5829
5830 2010-06-30  Werner Lemberg  <wl@gnu.org>
5831
5832         [smooth] Fix Savannah bug #30263.
5833
5834         * src/smooth/ftgrays.c (gray_render_span): Use cast to `unsigned
5835         int' to avoid integer overflow.
5836
5837         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use smaller
5838         threshold values for `width' and `height'.  This is not directly
5839         related to the bug fix but makes sense anyway.
5840
5841 2010-07-01  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5842
5843         Initial fix for Savannah bug #30306.
5844
5845         * src/base/ftobjs.c (Mac_Read_POST_Resource): Check `rlen', the
5846         length of fragment declared in the POST fragment header, and prevent
5847         an underflow in length calculation.  Some fonts set the length to
5848         zero in spite of the existence of a following 16bit `type'.
5849         Reported by Robert Święcki.
5850
5851 2010-07-01  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5852
5853         Additional fix for Savannah bug #30248 and #30249.
5854
5855         * src/base/ftobjs.c (Mac_Read_POST_Resource): Check the buffer size
5856         during gathering PFB fragments embedded in LaserWriter PS font for
5857         Macintosh.  Reported by Robert Święcki.
5858
5859 2010-06-30  Alexei Podtelezhnikov  <apodtele@gmail.com>
5860
5861         Minor optimizations by avoiding divisions.
5862
5863         * src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning):
5864         Replace divisions with multiplication in comparisons.
5865
5866 2010-06-29  Werner Lemberg  <wl@gnu.org>
5867
5868         Fix minor tracing issues.
5869
5870         * src/cff/cffgload.c, src/truetype/ttgload.c: Adjust tracing levels.
5871
5872 2010-06-27  Werner Lemberg  <wl@gnu.org>
5873
5874         [cff] Really fix `hintmask' and `cntrmask' limit check.
5875
5876         * src/cff/cffgload.c (cff_decoder_parse_charstrings)
5877         <cff_op_hintmask>: Fix thinko and handle tracing also.
5878
5879 2010-06-27  Werner Lemberg  <wl@gnu.org>
5880
5881         Fix valgrind warning.
5882
5883         * src/base/ftoutln.c (FT_Outline_Get_Orientation): Initialize
5884         `result' array.
5885
5886 2010-06-27  Werner Lemberg  <wl@gnu.org>
5887
5888         [cff] Fix memory leak.
5889
5890         * src/cff/cffgload.c (cff_operator_seac): Free charstrings even in
5891         case of errors.
5892
5893 2010-06-27  Werner Lemberg  <wl@gnu.org>
5894
5895         [cff] Protect against invalid `hintmask' and `cntrmask' operators.
5896
5897         * src/cff/cffgload.c (cff_decoder_parse_charstrings)
5898         <cff_op_hintmask>: Ensure that we don't exceed `limit' while parsing
5899         the bit masks of the `hintmask' and `cntrmask' operators.
5900
5901 2010-06-26  Werner Lemberg  <wl@gnu.org>
5902
5903         Fix PFR change 2010-06-24.
5904
5905         * src/pfr/pfrgload.c (pfr_glyph_load_simple): Really protect against
5906         invalid indices.
5907
5908 2010-06-26  Werner Lemberg  <wl@gnu.org>
5909
5910         Improve PFR tracing messages.
5911
5912         * src/pfr/pfrgload.c (pfr_glyph_load_rec): Emit tracing messages for
5913         simple and compound glyph offsets.
5914
5915 2010-06-26  Werner Lemberg  <wl@gnu.org>
5916
5917         Fix last PFR change.
5918
5919         * src/pfr/pfrobjs.c (pfr_face_init): Fix rejection logic.
5920
5921 2010-06-26  Werner Lemberg  <wl@gnu.org>
5922
5923         [sfnt] Fix Savannah bug #30262.
5924
5925         * src/sfnt/ttload.c (tt_face_load_maxp): Limit `maxComponentDepth'
5926         arbitrarily to 100 to avoid stack exhaustion.
5927
5928 2010-06-26  Werner Lemberg  <wl@gnu.org>
5929
5930         Add some memory checks (mainly for debugging).
5931
5932         * src/base/ftstream.c (FT_Stream_EnterFrame): Exit with error
5933         if the frame size is larger than the stream size.
5934
5935         * src/base/ftsystem.c (ft_ansi_stream_io): Exit with error if
5936         seeking a position larger than the stream size.
5937
5938 2010-06-25  Werner Lemberg  <wl@gnu.org>
5939
5940         [pfr] Fix Savannah bug #30261.
5941
5942         * src/pfr/pfrobjs.c (pfr_face_init): Reject fonts which contain
5943         neither outline nor bitmap glyphs.
5944
5945 2010-06-25  Werner Lemberg  <wl@gnu.org>
5946
5947         [cff] Fix Savannah bug #30254.
5948
5949         * src/cff/cffload.c (cff_index_get_pointers): Do sanity check for
5950         first offset also.
5951
5952 2010-06-25  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5953
5954         Initial fix for Savannah bug #30248 and #30249.
5955
5956         * src/base/ftobjs.c (Mac_Read_POST_Resource): Check the error during
5957         reading a PFB fragment embedded in LaserWriter PS font for Macintosh.
5958         Reported by Robert Święcki.
5959
5960 2010-06-24  Werner Lemberg  <wl@gnu.org>
5961
5962         [pcf] Fix Savannah bug #30247.
5963
5964         * src/pcf/pcfread.c (pcf_get_metrics): Disallow (invalid) fonts with
5965         zero metrics.
5966
5967 2010-06-24  Graham Asher  <graham.asher@btinternet.com>
5968
5969         * src/smooth/ftgrays.c (gray_render_cubic): Fix algorithm.
5970         The previous version was too aggressive, as demonstrated in
5971         http://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00020.html.
5972
5973 2010-06-24  Werner Lemberg  <wl@gnu.org>
5974
5975         */*: Use module specific error names where appropriate.
5976
5977 2010-06-24  Werner Lemberg  <wl@gnu.org>
5978
5979         [sfnt] Fix Savannah bug #30236.
5980
5981         * src/sfnt/ttcmap.c (tt_face_build_cmaps): Improve check for pointer
5982         to `cmap_table'.
5983
5984 2010-06-24  Werner Lemberg  <wl@gnu.org>
5985
5986         [pfr] Fix Savannah bug #30235.
5987
5988         * src/pfr/pfrgload.c (pfr_glyph_load_simple): Protect against
5989         invalid indices if there aren't any coordinates for indexing.
5990
5991 2010-06-24  Werner Lemberg  <wl@gnu.org>
5992
5993         [bdf]: Font properties are optional.
5994
5995         * src/bdf/bdflib.c (_bdf_readstream): Use special error code to
5996         indicate a redo operation.
5997         (_bdf_parse_start): Handle `CHARS' keyword here too and pass current
5998         input line to `_bdf_parse_glyph'.
5999
6000 2010-06-23  Werner Lemberg  <wl@gnu.org>
6001
6002         [bdf] Fix Savannah bug #30220.
6003
6004         * include/freetype/fterrdef.h
6005         (BDF_Err_Missing_Fontboundingbox_Field): New error code.
6006
6007         * src/bdf/bdflib.c (_bdf_parse_start): Check for missing
6008         `FONTBOUNDINGBOX' field.
6009         Avoid memory leak if there are multiple `FONT' lines (which is
6010         invalid but doesn't hurt).
6011
6012 2010-06-21  Werner Lemberg  <wl@gnu.org>
6013
6014         [pfr] Fix Savannah bug #30168.
6015
6016         * src/pfr/pfrgload.c (pfr_glyph_load_compound): Limit the number of
6017         subglyphs to avoid endless recursion.
6018
6019 2010-06-20  Werner Lemberg  <wl@gnu.org>
6020
6021         [psaux] Fix Savannah bug #30145.
6022
6023         * src/psaux/psobjs.c (t1_builder_add_contour): Protect against
6024         `outline == NULL' which might happen in invalid fonts.
6025
6026 2010-06-19  Werner Lemberg  <wl@gnu.org>
6027
6028         [bdf] Fix Savannah bug #30135.
6029
6030         * src/bdf/bdflib.c (_bdf_list_join): Don't modify value in static
6031         string `empty'.
6032         (_bdf_parse_glyph): Avoid memory leak in case of error.
6033
6034 2010-06-15  Werner Lemberg  <wl@gnu.org>
6035
6036         [autofit] Fix Savannah bug #30108.
6037
6038         * src/autofit/afglobal.c (af_face_globals_compute_script_coverage):
6039         Properly mask AF_DIGIT bit in comparison.
6040
6041 2010-06-11  Werner Lemberg  <wl@gnu.org>
6042
6043         [pshinter] Fix Savannah bug #30106.
6044
6045         Point numbers for FreeType's implementation of hinting masks are
6046         collected before the final number of points of a glyph has been
6047         determined; in particular, the code for handling the `endchar'
6048         opcode can reduce the number of points.
6049
6050         * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Assure that
6051         `end_point' is not larger than `glyph->num_points'.
6052
6053 2010-06-11  Werner Lemberg  <wl@gnu.org>
6054
6055         [cff]: Improve debugging output.
6056
6057         * src/cff/cffgload.c (cff_decoder_parse_charstrings)
6058         <cff_op_hintmask>: Implement it.
6059
6060 2010-06-10  Graham Asher  <graham.asher@btinternet.com>
6061
6062         ftgrays: Speed up rendering of small cubic splines.
6063
6064         * src/smooth/ftgrays.c (gray_render_cubic): Implement new,
6065         simplified algorithm to find out whether the spline can be replaced
6066         with two straight lines.  See this thread for more:
6067
6068           http://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00000.html
6069
6070 2010-06-09  Werner Lemberg  <wl@gnu.org>
6071
6072         [cff] Fix Savannah bug #30082.
6073
6074         * src/cff/cffgload.c (cff_decoder_parse_charstrings)
6075         <cff_op_callothersubr>: Protect against stack underflow.
6076
6077 2010-06-08  Werner Lemberg  <wl@gnu.org>
6078
6079         [cff] Fix Savannah bug #30053.
6080
6081         * src/cff/cffparse.c (cff_parse_real): Handle border case where
6082         `fraction_length' has value 10.
6083
6084 2010-06-07  Werner Lemberg  <wl@gnu.org>
6085
6086         Fix Savannah bug #30052.
6087         This bug has been introduced with commit 2415cbf3.
6088
6089         * src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Protect
6090         against endless loop in case of corrupted font header data.
6091
6092 2010-05-26  Werner Lemberg  <wl@gnu.org>
6093
6094         Remove unused variable.
6095         Found by Graham.
6096
6097         * src/autofit/afhints.c (af_glyph_hints_reload): Remove unused
6098         variable `first' in first block.
6099
6100 2010-05-22  Werner Lemberg  <wl@gnu.org>
6101
6102         Fix various memory problems found by linuxtesting.org.
6103
6104         * src/base/ftgxval.c (FT_TrueTypeGX_Free, FT_ClassicKern_Free),
6105         src/base/ftotval.c (FT_OpenType_Free), src/base/ftpfr.c
6106         (ft_pfr_check): Check `face'.
6107
6108         * src/base/ftobjs.c (FT_Get_Charmap_Index): Check `charmap' and
6109         `charmap->face'.
6110         (FT_Render_Glyph): Check `slot->face'.
6111         (FT_Get_SubGlyph_Info): Check `glyph->subglyphs'.
6112
6113 2010-05-22  Werner Lemberg  <wl@gnu.org>
6114
6115         autofit: Remove dead code.
6116         Suggested by Graham.
6117
6118         * src/autofit/afhints.c (af_glyph_hints_compute_inflections):
6119         Removed.
6120         (af_glyph_hints_reload): Remove third argument.
6121         Update all callers.
6122
6123 2010-05-21  Bram Tassyns  <bramt@enfocus.be>
6124
6125         [cff] Fix Savannah bug #27987.
6126
6127         * src/cff/cffobjs.c (remove_subset_prefix): New function.
6128         (cff_face_init): Use it to adjust `cffface->family_name'.
6129
6130 2010-05-20  Werner Lemberg  <wl@gnu.org>
6131
6132         TrueType: Make FreeType ignore maxSizeOfInstructions in `maxp'.
6133
6134         Acroread does the same.
6135
6136         * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Call
6137         `Update_Max' to adjust size of instructions array if necessary and
6138         add a rough safety check.
6139
6140         (load_truetype_glyph): Save `loader->byte_len' before recursive
6141         call.
6142
6143         * src/truetype/ttinterp.h, src/truetype/ttinterp.c (Update_Max):
6144         Declare it as FT_LOCAL.
6145
6146 2010-05-18  Hongbo Ni  <hongbo@njstar.com>
6147
6148         Apply Savannah patch #7196.
6149
6150         * src/cff/cffgload.c (cff_slot_load): Prevent crash if CFF subfont
6151         index is out of range.
6152
6153 2010-05-11  Werner Lemberg  <wl@gnu.org>
6154
6155         * docs/formats.txt: Give pointer to PCF documentation.
6156         Information provided by Alan Coopersmith
6157         <alan.coopersmith@oracle.com>.
6158
6159 2010-05-10  Ken Sharp  <ken.sharp@artifex.com>
6160
6161         [psaux] Fix Savannah bug #29846.
6162
6163         Previously we discovered fonts which used `setcurrentpoint' to set
6164         the initial point of a contour to 0,0.  This caused FreeType to
6165         raise an error, because the `setcurrentpoint' operator is only
6166         supposed to be used with the results from an OtherSubr subroutine.
6167
6168         This was fixed by simply ignoring the error and carrying on.
6169
6170         Now we have found a font which uses setcurrentpoint to actually
6171         establish a non-zero point for a contour during the course of a
6172         glyph program.  FWIW, these files may be produced by an application
6173         called `Intaglio' on the Mac, when converting TrueType fonts to
6174         Type 1.
6175
6176         The fix allows the new invalid behaviour, the old invalid behaviour
6177         and real proper usage of the operator to work the same way as Adobe
6178         interpreters apparently do.
6179
6180         * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Make
6181         `setcurrentpoint' use the top two elements of the stack to establish
6182         unconditionally the current x and y coordinates.
6183
6184         Make the `flex' subroutine handling (OtherSubr 0) put the current
6185         x,y coordinates onto the stack, instead of two dummy uninitialised
6186         values.
6187
6188 2010-04-14  Ken Sharp  <ken.sharp@artifex.com>
6189
6190         [psaux] Fix Savannah bug #29444.
6191
6192         * src/psaux/psobjs.c (t1_builder_start_point): Accept (invalid)
6193         `lineto' immediately after `hsbw', in accordance with Acrobat, GS,
6194         and others.
6195
6196 2010-04-14  Michał Cichoń  <thedmd@artifexmundi.com>
6197
6198         [psaux] Fix Savannah bug #27999.
6199
6200         * src/cache/ftcmanag.c (FTC_Manager_RemoveFaceID): Only remove
6201         selected entry, not all.
6202
6203 2010-04-06  Jonathan Kew  <jfkthame@gmail.com>
6204
6205         [truetype] Add overflow check to `fvar' table.
6206
6207         * src/truetype/ttgxvar.c (TT_Get_MM_Var): Check axis and instance
6208         count.
6209
6210 2010-04-05  Ken Sharp  <ken.sharp@artifex.com>
6211
6212         [raster] Fix Savannah bug #29335.
6213
6214         * src/raster/ftraster.c (Line_Up): Use slow multiplication to
6215         prevent overflow.  This shouldn't have any serious impact on speed,
6216         however.
6217
6218 2010-04-05  Werner Lemberg  <wl@gnu.org>
6219
6220         Add new function `FT_Library_SetLcdFilterWeights'.
6221
6222         This is based on code written by Lifter
6223         <http://unixforum.org/index.php?showuser=11691>.  It fixes
6224         FreeDesktop bug #27386.
6225
6226         * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights): New
6227         function.
6228
6229         * include/freetype/ftlcdfil.h: Updated.
6230
6231         * docs/CHANGES: Updated.
6232
6233 2010-04-01  John Tytgat  <John.Tytgat@esko.com>
6234
6235         [truetype] Fix Savannah bug #29404.
6236
6237         * src/truetype/ttgload.c: Revert change 2752bd1a (check on bit 1
6238         of `head' table of TrueType fonts).
6239
6240 2010-03-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6241
6242         Fix `multi build' for Tytgat's CFF driver improvement.
6243
6244         * src/base/cffload.h (cff_index_get_name): Added.
6245
6246 2010-03-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6247
6248         Remove duplicated inclusion of `FT_OUTLINE_H' in ftobjs.c.
6249
6250         * src/base/ftobjs.c: Remove 2nd inclusion of `FT_OUTLINE_H'.
6251
6252 2010-03-11  Chris Liddell  <chris.liddell@artifex.com>
6253
6254         [raster] Fix Savannah bug #27442.
6255
6256         * src/raster/ftraster.c (ft_black_reset): Fix `buffer_size'.
6257
6258 2010-03-09  Werner Lemberg  <wl@gnu.org>
6259
6260         [cff] Remove unused variable.
6261         Reported by Graham.
6262
6263         * src/cff/cffparse.c (cff_parse_real): Remove `rest'.
6264
6265 2010-03-02  John Tytgat  <John.Tytgat@esko.com>
6266
6267         [cff] Improve CFF string (especially glyphname) lookup performance.
6268
6269         We do this by avoiding memory allocation and file I/O.  This is
6270         Savannah patch #7104.
6271
6272         * src/cff/cfftypes.h: Include PS cmaps service and
6273         FT_INTERNAL_POSTSCRIPT_HINTS_H.
6274         (CFF_SubFontRec): Remove `num_local_subrs'.
6275         (CFF_FontRec): Add `num_strings', `strings', and `string_pool'
6276         fields.
6277         Remove `string_index' and `num_global_subrs' fields.
6278         Use real types instead of `void' for `pshinter' and `psnames' fields.
6279
6280         * src/cff/cffload.c: Don't include PS cmaps service.
6281         (cff_index_get_pointers): Add `pool' parameter which allows to
6282         insert an extra NUL character for each String INDEX entry.
6283         (cff_index_get_name): Make it a local function.
6284         (cff_index_get_string): New function.
6285         (cff_subfont_load): Updated.
6286         (cff_font_load): Initialize `num_strings', `strings', and
6287         `string_pool' fields in the `CFF_FontRec' structure.
6288         (cff_index_get_sid_string): Use `cff_index_get_string' instead of
6289         `cff_index_get_name'.
6290         (cff_font_done): Updated.
6291
6292         * src/cff/cffload.h: Don't include PS cmaps service.
6293         (cff_index_get_string): Added.
6294         (cff_index_get_sid_string): Updated.
6295
6296         * src/cff/cffobjs.c: Don't include PS cmaps service and
6297         FT_INTERNAL_POSTSCRIPT_HINTS_H.
6298         (cff_size_get_globals_funcs, cff_slot_init): Updated.
6299         (cff_face_init): Follow `cff_index_get_name',
6300         `cff_index_get_string', and `cff_index_get_sid_string' changes.
6301
6302         * src/cff/cffcmap.c (cff_sid_free_glyph_name): Removed.
6303         (cff_sid_to_glyph_name): Use `cff_index_get_cid_string'.
6304         (cff_cmap_unicode_init): Updated.
6305
6306         * src/cff/cffdrivr.c: Don't include PS cmap service.
6307         (cff_get_glyph_name): Avoid unnecessary lookup for POSTSCRIPT_CMAPS
6308         service.
6309         (cff_get_glyph_name, cff_ps_get_font_info, cff_get_ros): Follow API
6310         `cff_index_get_sid_string' change.
6311         (cff_get_name_index): Use `cff_index_get_string' instead of
6312         `cff_index_get_name'.
6313
6314         * src/cff/cffgload.c: Don't include FT_INTERNAL_POSTSCRIPT_HINTS_H.
6315         (cff_decoder_init, cff_decoder_prepare): Updated.
6316
6317 2010-02-27  Werner Lemberg  <wl@gnu.org>
6318
6319         Simplify code.
6320         Suggested by Behdad.
6321
6322         * src/base/ftobjs.c (FT_Get_First_Char): Don't use a loop since we
6323         call FT_Get_Next_Char anyway if necessary.
6324
6325 2010-02-26  Behdad Esfahbod  <behdad@behdad.org>
6326
6327         Improve handling of invalid glyph indices in char->index functions.
6328
6329         * src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Use a
6330         loop.
6331
6332 2010-02-18  Chris Liddell  <chris.liddell@artifex.com>
6333
6334         [truetype] Fix Savannah bug #28905.
6335
6336         Initialize phantom points before calling the incremental interface
6337         to update glyph metrics.
6338
6339         * src/truetype/ttgload.c (tt_get_metrics_incr_overrides)
6340         [FT_CONFIG_OPTION_INCREMENTAL]: New function, split off from...
6341         (tt_get_metrics): This.
6342         Updated.
6343         (load_truetype_glyph): Use tt_get_metrics_incr_overrides.
6344
6345 ----------------------------------------------------------------------------
6346
6347 Copyright 2010-2013 by
6348 David Turner, Robert Wilhelm, and Werner Lemberg.
6349
6350 This file is part of the FreeType project, and may only be used, modified,
6351 and distributed under the terms of the FreeType project license,
6352 LICENSE.TXT.  By continuing to use, modify, or distribute this file you
6353 indicate that you have read the license and understand and accept it
6354 fully.
6355
6356
6357 Local Variables:
6358 version-control: never
6359 coding: utf-8
6360 End: