Bug 1523562 [wpt PR 14802] - [Animation Worklet] Upstream worklet animation with...
[gecko.git] / modules / freetype2 / ChangeLog.24
blob44abc4060b4dde57754f58cea6d8ef5cfdce6a22
1 2013-05-08  Werner Lemberg  <wl@gnu.org>
3         * Version 2.4.12 released.
4         ==========================
7         Tag sources with `VER-2-4-12'.
9         * docs/VERSION.DLL: Update documentation and bump version number to
10         2.4.12.
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/.
26         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 12.
28         * builds/unix/configure.raw (version_info): Set to 16:1:10.
30 2013-05-08  Werner Lemberg  <wl@gnu.org>
32         * docs/CHANGES: Updated.
34 2013-05-08  Werner Lemberg  <wl@gnu.org>
36         * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Typo.
38 2013-05-05  Werner Lemberg  <wl@gnu.org>
40         Synchronize `ftconfig.h'.
42         * builds/unix/ftconfig.in: Updated.
44 2013-05-05  Werner Lemberg  <wl@gnu.org>
46         Fix compilation with C++.
48         * src/base/md5.c (body): Use proper cast.
50 2013-05-05  Werner Lemberg  <wl@gnu.org>
52         Fix 64bit compilation issues.
54         * include/freetype/config/ftconfig.h [FT_LONG64]: Typedef
55         `FT_Int64' here.
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'.
61 2013-05-05  Werner Lemberg  <wl@gnu.org>
63         [raster] Fix clang issues.
65         Fix suggested by <octoploid@yandex.com>.
67         * src/raster/ftraster.c (ULong): New typedef.
68         (SCALED): Add proper cast.
70 2013-05-04  Werner Lemberg  <wl@gnu.org>
72         Fix clang fixes.
74         * src/base/fttrigon.c (ft_trig_prenorm, FT_Vector_Rotate): Use
75         correct types.
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.
82         * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto.
84 2013-05-04  Werner Lemberg  <wl@gnu.org>
86         [cff] Make Adobe CFF engine work correctly on 64bit hosts.
88         Reported by numerous people on the `freetype-devel' list.  Without
89         this fix, glyphs aren't properly aligned on a common baseline.
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.
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.
104 2013-05-04  Werner Lemberg  <wl@gnu.org>
106         More fixes for clang's `sanitize' feature.
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.
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.
120         * src/cid/cidload.c (cid_get_offset): Ditto.
122         * src/psaux/psconv.c (PS_Conv_ToFixed): Ditto.
123         * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto.
125         * src/truetype/ttinterp.c (TT_MulFix14, TT_DotFix14): Ditto.
127 2013-05-04  Werner Lemberg  <wl@gnu.org>
129         Fix errors reported by clang's `sanitize' feature.
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.
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.
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.
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.
154 2013-05-03  Werner Lemberg  <wl@gnu.org>
156         * src/cff/cf2blues.c: Remove dead code.
158 2013-05-02  Chris Liddell  <chris.liddell@artifex.com>
160         * src/cff/cffgload.c: Include FT_CFF_DRIVER_H.
162 2013-04-27  Werner Lemberg  <wl@gnu.org>
164         * docs/CHANGES: Updated.
165         * README: Improved.
167 2013-04-13  Werner Lemberg  <wl@gnu.org>
169         [cff] Add a new Type 2 interpreter and hinter.
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.
178         For convenience, (most of) the new files are committed separately.
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'.
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'.
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.
209         * src/cff/rules.mk (CFF_DRV_SRC, CFF_DRV_H): Add new files.
211         * src/cff/cf2*.*: New files, containing the Adobe engine.
213 2013-04-12  Werner Lemberg  <wl@gnu.org>
215         [cff] Minor code administration issues.
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.
224         * src/cff/cffgload.h: Updated.
226 2013-04-12  Werner Lemberg  <wl@gnu.org>
228         Add output bitmap checksums.
230         Use `FT2_DEBUG=bitmap:3' for tracing.
232         * src/base/md5.c, src/base/md5.h: New files, taken from
234           http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
236         * include/freetype/internal/fttrace.h: Add `bitmap'.
238         * src/base/ftobjs.c [FT_DEBUG_LEVEL_TRACE]: Include `md5.c'
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.
244         * src/base/rules.mk (BASE_H): Updated.
246         * docs/LICENSE.TXT: Updated.
248 2013-04-12  Werner Lemberg  <wl@gnu.org>
250         [cff] Add framework for CFF properties.
252         * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC7):
253         New macro.
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'.
260         * src/cff/cffpic.h: Include FT_SERVICE_PROPERTIES_H.
261         (CFF_SERVICE_PROPERTIES_GET): New macro.
262         (CffModulePIC): Add `cff_service_properties'.
264 2013-04-03  Werner Lemberg  <wl@gnu.org>
266         [bdf] Fix Savannah bug #38589.
268         * src/bdf/bdflib.c (_bdf_readstream): Thinko.
270 2013-03-31  Werner Lemberg  <wl@gnu.org>
272         * configure: Use egrep, not grep.
274         Problem reported Mojca Miklavec <mojca.miklavec.lists@gmail.com>.
276 2013-03-29  Werner Lemberg  <wl@gnu.org>
278         * include/freetype/ftlcdfil.h: Add description of color filtering.
280         Based on a contribution from Antti S. Lankila <alankila@bel.fi>
281         (Savannah bug #38607).
283 2013-03-23  Werner Lemberg  <wl@gnu.org>
285         [autofit] Minor.
287         * src/autofit/afmodule.c (af_property_set): Typo.
288         (af_autofitter_init, af_autofitter_done): Use cast.
290 2013-03-21  Werner Lemberg  <wl@gnu.org>
292         * configure: Automatically test for `gmake' also.
294         Suggested by Mojca Miklavec <mojca.miklavec.lists@gmail.com>.
296 2013-03-21  Peter Breitenlohner  <peb@mppmu.mpg.de>
298         Respect CONFIG_SHELL from the environment.
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.
307         * builds/unix/detect.mk: Honour CONFIG_SHELL.
308         * builds/unix/unix-def.in (SHELL): Define.
310 2013-03-21  Werner Lemberg  <wl@gnu.org>
312         Fix Savannah patch #7971.
314         * configure: Handle MAKE environment variable also.
316 2013-03-17  Werner Lemberg  <wl@gnu.org>
318         Fix Savannah bug #38538.
320         * builds/amiga/src/base/ftdebug.c, builds/win32/ftdebug.c,
321         builds/wince/ftdebug.c (FT_Throw): Add function.
323 2013-03-17  Werner Lemberg  <wl@gnu.org>
325         [raster] Remove dead code.
327         * src/raster/rastpic.c (ft_raster1_renderer_class_pic_init)
328         src/smooth/ftspic.c (ft_smooth_renderer_class_pic_init): Do it.
330 2013-03-17  Werner Lemberg  <wl@gnu.org>
332         * src/pshinter/pshpic.h (GET_PIC): Use correct container.
334 2013-03-15  Werner Lemberg  <wl@gnu.org>
336         * include/freetype/ftmoderr.h: Fix commit from 2013-03-11.
338         The previous version was not backward compatible.  Reported by
339         Behdad.
341 2013-03-14  Werner Lemberg  <wl@gnu.org>
343         */*: Use FT_ERR_EQ, FT_ERR_NEQ, and FT_ERR where appropriate.
345         FT_Err_XXX and friends are no longer directly used in the source
346         code.
348 2013-03-14  Werner Lemberg  <wl@gnu.org>
350         New error management macros.
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.
357         * include/freetype/freetype.h: Updated.
359 2013-03-14  Werner Lemberg  <wl@gnu.org>
361         */*: Use FT_Err_Ok only.
363         This is a purely mechanical conversion.
365 2013-03-14  Werner Lemberg  <wl@gnu.org>
367         */*: Use `FT_THROW'.
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.
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.
377 2013-03-13  Werner Lemberg  <wl@gnu.org>
379         Introduce `FT_THROW' macro.
381         The idea is to replace code like
383           return FT_Err_Foo_Bar;
385         or
387           return CFF_Err_Foo_Bar;
389         with
391           return FT_THROW( Foo_Bar );
393         The FT_THROW macro has two functions:
395           . It hides the module specific prefix.
397           . In debug mode, it calls the empty function `FT_Throw' which can
398             be thus used to set a breakpoint.
400         * include/freetype/internal/ftdebug.h (FT_THROW): New macro.
401         (FT_Throw): New prototype.
402         * src/base/ftdebug.c (FT_Throw): New function.
404 2013-03-12  Werner Lemberg  <wl@gnu.org>
406         Remove `FT_KEEP_ERR_PREFIX'.
408         The idea is to always have FT_ERR_PREFIX available internally.
410         * include/freetype/fterrors.h: Use FT2_BUILD_LIBRARY to guard
411         undefinition of FT_ERR_PREFIX
413         * src/gxvalid/gxverror.h, src/otvalid/otverror.h,
414         src/sfnt/sferrors.h: Updated.
416 2013-03-11  Werner Lemberg  <wl@gnu.org>
418         [gxvalid] Fix module error.
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'.
424 2013-03-11  Werner Lemberg  <wl@gnu.org>
426         Always use module related error codes.
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'.
432         * src/type1/t1load.c (parse_encoding): Use
433         T1_Err_Unknown_File_Format.
435 2013-03-08  Werner Lemberg  <wl@gnu.org>
437         [cff] Set `linear{Hori,Vert}Advance' for embedded bitmaps also.
439         Problem reported by Khaled Hosny <khaledhosny@eglug.org>.
441         * src/cff/cffgload.c (cff_slot_load): Implement it.
443 2013-02-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
445         [base] Fix commit ab02d9e8.
447         * src/base/ftbbox.c (BBox_Cubic_Check): Change scaling to msb of 22.
449 2013-02-19  Alexei Podtelezhnikov  <apodtele@gmail.com>
451         [base] New bisecting BBox_Cubic_Check (disabled).
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.
457 2013-02-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
459         [tools] Update BBox testing tool.
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.
465 2013-02-02  Werner Lemberg  <wl@gnu.org>
467         Fix Savannah bug #38235.
469         * builds/unix/configure.raw: Don't generate `freetype-config' and
470         `freetype.pc'.
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.
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.
482         * builds/unix/freetype.in: Use `%' instead of `@' as a variable
483         substitution marker.
484         Use quotes.
486 2013-02-07  Werner Lemberg  <wl@gnu.org>
488         * src/truetype/ttobjs.c (tt_size_run_prep): Reset more GS variables.
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.
494 2013-02-06  Werner Lemberg  <wl@gnu.org>
496         * src/truetype/ttobjs.c (tt_size_run_prep): Reset reference points.
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.
505         Most notably, this fixes the rendering of Arial's `x' glyph in
506         subpixel hinting mode.
508 2013-02-05  Werner Lemberg  <wl@gnu.org>
510         [truetype] A better fix for Savannah bug #38211.
512         * src/truetype/ttinterp.c (Ins_IP): Implement identical behaviour to
513         MS rasterizer if rp1 == rp2 (confirmed by Greg Hitchcock).
515 2013-02-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
517         [pcf] Streamline parsing of PCF encoding table.
519         * src/pcf/pcfread.c (pcf_get_encodings): Use simpler double for-loop.
520         Reallocate array instead of using temporary storage.
522 2013-02-01  Werner Lemberg  <wl@gnu.org>
524         Fix Savannah bug #38227.
526         * builds/unix/freetype-config.in: Set LC_ALL.
528 2013-02-01  Werner Lemberg  <wl@gnu.org>
530         Fix Savannah bug #38221.
532         This complements commit 83c0ebab.
534         * src/base/ftcalc.c (FT_MulDiv_No_Round): Don't enclose with
535         `TT_USE_BYTECODE_INTERPRETER'.
537 2013-02-01  Werner Lemberg  <wl@gnu.org>
539         [truetype] Fix Savannah bug #38211.
541         * src/truetype/ttinterp.c (Ins_IP): Make FreeType behave identical
542         to other interpreters if rp1 == rp2 (which is invalid).
544 2013-01-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
546         [base] Small optimization of BBox calculation.
548         * src/base/ftbbox.c (BBox_Cubic_Check): Use FT_MSB function in
549         scaling algorithm.
551 2013-01-26  Infinality  <infinality@infinality.net>
553         [truetype] Minor formatting fix.
555         * src/truetype/ttinterp.c: Updated.
556         (DO_RS): Fix indentation.
558 2013-01-26  Infinality  <infinality@infinality.net>
560         [truetype] Fix rasterizer_version logic in sph.
562         * src/truetype/ttsubpix.c: Updated.
563         (ALWAYS_SKIP_DELTAP_Rules): Remove rule for Trebuchet MS.
564         (sph_set_tweaks): Fix `rasterizer_version' logic.
566 2013-01-26  Infinality  <infinality@infinality.net>
568         [truetype] Align more to ClearType whitepaper for sph.
570         * include/freetype/internal/tttypes.h (TT_FaceRec): Add flags
571         for detected opcode patterns and compatibility mode.
573         * src/truetype/ttgload.c (tt_loader_init): Complete conditional.
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.
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.
602         * src/truetype/ttobjs.h: Updated.
603         (TT_DefRecord): Add flags to identify special fdefs for sph.
604         (TT_SizeRec): Remove unnecessary ttfautohinted variable.
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.
620         * src/truetype/ttsubpix.h: Add new fdef flags for sph.
622 2013-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
624         [base] Fix broken emboldening at small sizes.
626         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Do not attempt to
627         normalize zero-length vectors.
629 2013-01-25  Werner Lemberg  <wl@gnu.org>
631         Fix Savannah bug #38167.
633         This fixes commit 83c0ebab from 2012-06-27.
635         * src/truetype/ttinterp.h:
636         s/TT_CONFIG_OPTION_BYTECODE_INTERPRETER/TT_USE_BYTECODE_INTERPRETER/.
638 2013-01-25  Xi Wang  <xi.wang@gmail.com>
640         [sfnt] Fix broken pointer overflow checks.
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.
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'.
650         * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Implement it.
652 2013-01-25  Werner Lemberg  <wl@gnu.org>
654         [base] Fix `make multi'.
656         * src/base/ftoutln.c, src/base/fttrigon.c: Include
657         FT_INTERNAL_CALC_H.
659 2013-01-25  David 'Digit' Turner  <digit@google.com>
661         [truetype] Fix C++ compilation.
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.
670         * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Updated.
672 2013-01-23  Werner Lemberg  <wl@gnu.org>
674         [base] Make `FT_Hypot' really internal.
676         * include/freetype/fttrigon.h (FT_Hypot): Move to...
677         * include/freetype/internal/ftcalc.h: This file.
679         * src/base/fttrigon.c (FT_Hypot): Move to...
680         * src/base/ftcalc.c: This file.
681         Include FT_TRIGONOMETRY_H.
683         * src/truetype/ttgload.c: Don't include FT_TRIGONOMETRY_H.
685 2013-01-23  Werner Lemberg  <wl@gnu.org>
687         [truetype] Revert change from 2013-01-22.
689         FreeType's `height' value is the baseline-to-baseline distance...
691         * src/truetype/ttobjs.c (tt_size_reset): Undo.
693 2013-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
695         [base, truetype] New internal `FT_Hypot' function.
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.
705 2013-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
707         [base] Fix integer overflow.
709         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Normalize incoming and
710         outgoing vectors and use fixed point arithmetic.
712 2013-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
714         [base] Fix integer overflow.
716         * src/base/ftoutln.c (FT_Outline_Get_Orientation): Scale the
717         coordinates down to avoid overflow.
719 2013-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
721         [base] Split out MSB function.
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.
727 2013-01-22  Werner Lemberg  <wl@gnu.org>
729         [truetype] Fix font height.
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.
735 2013-01-16  Behdad Esfahbod  <behdad@behdad.org>
737         [sfnt] Fix optimized sbit loader.
739         It was not taking bit_depth into consideration when blitting!
741         * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_byte_aligned,
742         * tt_sbit_decoder_load_bit_aligned): Handle bit
743         depth.
745 2013-01-16  David 'Digit' Turner  <digit@google.com>
747         [truetype] Improve subpixel code.
749         This patches fixes many issues with the ttsubpix implementation.
751         1. Data tables are defined, instead of declared, in the header, and
752            thus copied into each source file that includes it.
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!).
758            Additionally, this also made the library export the symbols
759            completely needlessly.
761         3. Missing `sph_' and `SPH_' prefixes to some of the definitions.
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.
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.
772         (SPH_TweakRule, SPH_ScaleRule): Decorate with `const' where
773         appropriate.
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.
781         Move font tweaking tables to...
783         * src/truetype/ttsubpix.c: This file and decorate them with `static'
784         and `const' where appropriate.
786         (X_SCALING_Rules, X_SCALING_RULES_SIZE): Renamed to...
787         (sph_X_SCALING_Rules, SPH_X_SCALING_RULES_SIZE): This.
788         Update all users.
790 2013-01-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
792         [truetype] Improve accuracy of normalization of short vectors.
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.
800         * src/truetype/ttinterp.c (Normalize): Scale short vectors by 0x4000.
802 2013-01-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
804         [truetype] Kill very old vector normalization hacks.
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.
812         * src/truetype/ttinterp.c (Normalize): Remove error compensation.
813         (TT_VecLen): Remove any mention of old less accurate implementation.
815 2013-01-11  Werner Lemberg  <wl@gnu.org>
817         Disable FT_CONFIG_OPTION_OLD_INTERNALS.
819         After the next release we are going to remove the code completely.
821         * devel/ftoption.h, include/freetype/config/ftoption.h
822         (FT_CONFIG_OPTION_OLD_INTERNALS): Comment out.
823         * docs/CHANGES: Document it.
825 2013-01-10  Alexei Podtelezhnikov  <apodtele@gmail.com>
827         [base] Update the overflow protection bit.
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.
833         * src/base/fttrigon.c (FT_TRIG_SAFE_MSB): New macro.
834         (ft_trig_prenorm): Use it and remove dead code.
836 2013-01-09  Alexei Podtelezhnikov  <apodtele@gmail.com>
838         [base, pshinter] Use FT_ABS, FT_MIN, and FT_MAX for readability.
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.
846 2013-01-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
848         [base] Clean up trigonometric core.
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.
855 2013-01-02  Alexei Podtelezhnikov  <apodtele@gmail.com>
857         [base] Use rounding in CORDIC iterations.
859         * src/base/fttrigon.c (ft_trig_pseudo_rotate,
860         ft_trig_pseudo_polarize): Improve accuracy by rounding.
862 2013-01-02  Alexei Podtelezhnikov  <apodtele@gmail.com>
864         [base] Reduce trigonometric algorithms.
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.
870         * src/base/fttrigon.c (FT_TRIG_SCALE, FT_TRIG_COSCALE): Update macros.
871         (ft_trig_pseudo_rotate, ft_trig_pseudo_polarize): Update.
873         * src/tools/cordic.py: Bring up to date with trigonometric core.
875         * docs/CHANGES: Old typo.
877 2013-01-02  Alexei Podtelezhnikov  <apodtele@gmail.com>
879         * src/pshinter/pshalgo.h: Remove unused code.
881 2012-12-27  Werner Lemberg  <wl@gnu.org>
883         * src/truetype/ttgload.c (tt_loader_init): Add more tracing.
885 2012-12-23  Werner Lemberg  <wl@gnu.org>
887         [type1] Fix handling of /FontBBox in MM fonts.
888         Problem reported by Del Merritt <del@alum.mit.edu>
890         If we have
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 } }
897         in the /Blend dictionary,  then the first BBox is { 11 21 31 41 },
898         the second { 12 22 32 42 }, etc.
900         * include/freetype/internal/psaux.h (T1_FieldType): Add
901         `T1_FIELD_TYPE_MM_BBOX' (for temporary use).
903         * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
904         Implement it.
906 2012-12-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
908         * src/tools/cordic.py: Bring up to date with trigonometric core.
910 2012-12-21  Werner Lemberg  <wl@gnu.org>
912         Check parameters of `FT_Outline_New'.
913         Problem reported by Robin Watts <robin.watts@artifex.com>.
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.
919 2012-12-20  Werner Lemberg  <wl@gnu.org>
921         * Version 2.4.11 released.
922         ==========================
925         Tag sources with `VER-2-4-11'.
927         * docs/CHANGES, docs/release: Updated.
929         * docs/VERSION.DLL: Update documentation and bump version number to
930         2.4.11.
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/.
946         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 11.
948         * builds/unix/configure.raw (version_info): Set to 16:0:10.
950         * builds/toplevel.mk (dist): Don't include `.mailmap'.
952 2012-12-20  Alexei Podtelezhnikov  <apodtele@gmail.com>
954         [base] Improve trigonometric core.
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.
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.
969 2012-12-19  Werner Lemberg  <wl@gnu.org>
971         * src/base/ftobjs.c (ft_property_do): Fix compiler warning.
973 2012-12-19  Alexei Podtelezhnikov  <apodtele@gmail.com>
975         * src/base/ftrfork.c (FT_Raccess_Guess): Switch to FT_Int counters.
977 2012-12-19  Alexei Podtelezhnikov  <apodtele@gmail.com>
979         [base] Clean up trigonometric core.
981         * src/base/fttrigon.c (ft_trig_pseudo_polarize): Align algorithm
982         with `ft_trig_pseudo_rotate'.
984 2012-12-18  Infinality  <infinality@infinality.net>
986         [truetype] Minor performance enhancement.
988         * src/truetype/ttgload.c: (TT_Process_Simple_Glyph): Use FT_MulFix
989         instead of FT_MulDiv.
991 2012-12-17  Infinality  <infinality@infinality.net>
993         [truetype] Remove unused code and variables.
995         * src/truetype/ttinterp.c: Updated.
996         (Ins_FDEF): Remove opcode patterns that are not being used.
998 2012-12-16  Werner Lemberg  <wl@gnu.org>
1000         Various compiler warning fixes.
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.
1013 2012-12-16  Infinality  <infinality@infinality.net>
1015         [truetype] Remove unused code and variables.  Add minor fixes.
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.
1027         * src/truetype/ttgload.c: (TT_Process_Simple_Glyph): Adjust correction
1028         factor for emboldening during scaling.
1030         * src/truetype/ttinterp.h: Updated.
1031         (TT_ExecContextRec): Remove unused variables.
1033         * src/truetype/ttobjs.h: Updated.
1034         (TT_SizeRec): Add ttfautohinted variable.
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 unused 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.
1045 2012-12-16  Werner Lemberg  <wl@gnu.org>
1047         [sfnt] Fix Savannah bug #37936.
1049         * src/sfnt/ttload.c (tt_face_load_gasp): Avoid memory leak.
1051 2012-12-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
1053         [base] Fix 11-year old bug.
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.
1060         * src/base/fttrigon.c (FT_TRIG_SCALE): Fix macro value.
1062 2012-12-15  Werner Lemberg  <wl@gnu.org>
1064         [bdf] Fix Savannah bug #37907.
1066         * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Normalize
1067         negative second parameter of `ENCODING' field also.
1069 2012-12-15  Werner Lemberg  <wl@gnu.org>
1071         [bdf] Fix Savannah bug #37906.
1073         * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Use correct array
1074         size for checking `glyph_enc'.
1076 2012-12-15  Werner Lemberg  <wl@gnu.org>
1078         [bdf] Fix Savannah bug #37905.
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'.
1084 2012-12-10  Alexei Podtelezhnikov  <apodtele@gmail.com>
1086         [truetype] Scale F_dot_P down.
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.
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.
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.
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.
1114 2012-12-09  Johnson Y. Yan  <yinsen_yan@foxitsoftware.com>
1116         [type1] Another fix for 2012-09-17 commit.
1118         * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Correctly set
1119         `limit' value.
1121 2012-12-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
1123         [truetype] Tweak the previous commit.
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.
1129 2012-12-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
1131         [truetype] Microoptimizations in bytecode interpreter.
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.
1138 2012-12-05  Alexei Podtelezhnikov  <apodtele@gmail.com>
1140         [truetype] Cosmetic improvement in bytecode interpreter.
1142         * src/truetype/ttinterp.c: Use explicit calls to FT_MulDiv,
1143         FT_MulFix, and FT_DivFix instead of macros.
1145 2012-12-03  John Tytgat  <John.Tytgat@esko.com>
1147         [pshinter] Clamp BlueScale value.
1149         This is Savannah bug #37856.
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'.
1155 2012-12-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
1157         [truetype, type1] Revise the use of FT_MulDiv.
1159         * src/truetype/ttgxvar.c: Updated.
1160         * src/truetype/ttobjs.c: Updated.
1161         * src/type1/t1load.c: Updated.
1163 2012-11-30  Werner Lemberg  <wl@gnu.org>
1165         [configure] Preserve customized `ftoption.h'.
1167         Problem reported by Del Merritt <del@alum.mit.edu>.
1169         * builds/unix/configure.raw <cpp computation of bit length>: Don't
1170         remove existing FreeType configuration files.
1172 2012-11-29  John Tytgat  <John.Tytgat@esko.com>
1174         [type1] Fix Savannah bug #37831.
1176         The bug report also contains a patch.
1178         * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Really fix
1179         change from 2012-09-17.
1181 2012-11-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
1183         [truetype] Fix formatting and typo.
1185 2012-11-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
1187         [cid, type1, type42] Clean up units_per_EM calculations.
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.
1193 2012-11-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
1195         [ftstroke] Minor improvement.
1197         * src/base/ftstroke.c: Replace nested FT_DivFix and FT_MulFix with
1198         FT_MulDiv.
1200 2012-11-17  Werner Lemberg  <wl@gnu.org>
1202         * src/base/fttrigon.c (ft_trig_downscale): Make 64bit version work.
1204 2012-11-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
1206         [base] Fix integer overflows in dd5718c7d67a.
1208         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use FT_MulDiv.
1210 2012-11-15  Werner Lemberg  <wl@gnu.org>
1212         [autofit] Trace stem widths.
1214         * src/autofit/aflatin.c (af_latin_metrics_init_widths): Add some
1215         FT_TRACE calls.
1217 2012-11-13  Werner Lemberg  <wl@gnu.org>
1219         [cff] Add support for OpenType Collections (OTC).
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.
1227 2012-11-12  Werner Lemberg  <wl@gnu.org>
1229         [autofit] Minor improvement.
1231         * src/autofit/aflatin.c (af_latin_hints_compute_blue_edges): Fix
1232         loop.
1234 2012-11-10  Werner Lemberg  <wl@gnu.org>
1236         [autofit] Improve tracing.
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.
1242 2012-11-04  Alexei Podtelezhnikov  <apodtele@gmail.com>
1244         [base] Fortify emboldening code against egregious distortions.
1246         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Threshold emboldening
1247         strength when it leads to segment collapse.
1249 2012-11-03  Alexei Podtelezhnikov  <apodtele@gmail.com>
1251         [base] Clean up emboldening code and improve comments there.
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.
1257 2012-10-24  Werner Lemberg  <wl@gnu.org>
1259         [autofit] Add standard character to `AF_ScriptClassRec' structure.
1261         * src/autofit/aftypes.h (AF_ScriptClassRec): Add `standard_char'
1262         member.
1263         (AF_DEFINE_SCRIPT_CLASS): Updated.
1265         * src/autofit/aflatin.c (af_latin_metrics_init_widths): Use it.
1266         (af_latin_metrics_init, af_latin_script_class): Updated.
1268         * src/autofit/aflatin.c (af_latin2_metrics_init_widths): Use it.
1269         (af_latin2_metrics_init, af_latin2_script_class): Updated.
1271         * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Use it.
1272         (af_cjk_metrics_init, af_cjk_script_class): Updated.
1274         * src/autofit/afindic.c (af_indic_metrics_init,
1275         af_indic_script_class): Updated.
1277         * src/autofit/afcjk.h, src/autofit/aflatin.h: Updated.
1279         * src/autofit/afdummy.c: Updated.
1281 2012-10-24  Werner Lemberg  <wl@gnu.org>
1283         [autofit] Only use Unicode CMap.
1285         * src/autofit/aflatin.c (af_latin_metrics_init): Implement it, to be
1286         in sync with `af_face_globals_compute_script_coverage'.
1288 2012-10-21  Werner Lemberg  <wl@gnu.org>
1290         [psaux] Improve parsing of invalid numbers.
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.
1298 2012-10-21  Werner Lemberg  <wl@gnu.org>
1300         [smooth] Improve tracing.
1302         * src/smooth/ftgrays.c (gray_sweep): Trace last sweep line of
1303         current band also.
1305 2012-10-20  Alexei Podtelezhnikov  <apodtele@gmail.com>
1307         [truetype] Cheaper way to threshold angles between vectors.
1309         * src/truetype/ttinterp.c (Ins_ISECT): Thresholding tangent is a lot
1310         cheaper than thresholding sine.
1312 2012-10-20  Werner Lemberg  <wl@gnu.org>
1314         [cff] Improve parsing of invalid real numbers.
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.
1320 2012-10-20  Andreas Pehnack  <andreas.pehnack@me.com>
1322         [sfnt] Load pure CFF fonts wrapped in SFNT container.
1324         Such fonts only have a `cmap' and a `CFF' table.
1326         * src/sfnt/ttload.c (tt_face_load_font_dir): Don't call
1327         `check_table_dir' if font signature is `OTTO'.
1329 2012-10-20  Werner Lemberg  <wl@gnu.org>
1331         [psaux] Fix some value overflows and improve tracing.
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.
1342         * include/freetype/internal/fttrace.h: Add `psconv'.
1344 2012-10-20  Werner Lemberg  <wl@gnu.org>
1346         [autofit] Fix `make multi CC=c++'.
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'.
1353 2012-10-19  Werner Lemberg  <wl@gnu.org>
1355         [cff] Fix more value errors and improve tracing.
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'.
1364 2012-10-17  Werner Lemberg  <wl@gnu.org>
1366         [psaux] Fix some value overflows.
1368         * src/psaux/psconv.c (PS_Conv_ToFixed): Implement it.
1370 2012-10-17  Bram Tassyns  <BramT@enfocus.com>
1372         [cff] Fix value overflow.
1374         * src/cff/cffparse.c (cff_parse_fixed_scaled): Implement it.
1376 2012-10-17  Werner Lemberg  <wl@gnu.org>
1378         [truetype] Fix Savannah bug #37572.
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.
1384 2012-09-30  Gilles Espinasse  <g.esp@free.fr>
1386         Remove useless `rm' detection.
1388         `rm -f' is directly used in the `configure' script created by
1389         autoconf, thus no availability test is necessary.
1391         * builds/unix/configure.raw (RMF): Remove test.
1392         * builds/unix/unix-def.in (DELETE): Updated.
1394 2012-09-29  Werner Lemberg  <wl@gnu.org>
1396         [autofit] Minor optimization.
1398         * src/autofit/afglobal.c (af_face_globals_compute_script_coverage):
1399         Add loop condition.
1401 2012-09-29  Werner Lemberg  <wl@gnu.org>
1403         [autofit] Fix thinko.
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.
1409         * src/autofit/afdummy.c: Updated.
1411 2012-09-18  Werner Lemberg  <wl@gnu.org>
1413         [autofit] Implement `increase-x-height' property.
1415         * include/freetype/ftautoh.h (FT_Prop_IncreaseXHeight): New
1416         structure.
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.
1423 2012-09-18  Werner Lemberg  <wl@gnu.org>
1425         [autofit] Implement Infinality's `increase glyph heights'.
1427         This is an improved version of a similar fix contained in the
1428         so-called `Infinality patch', taken from
1430           http://www.infinality.net/fedora/linux/zips/freetype-infinality-2.4.10-20120616_01-x86_64.tar.bz2
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.
1437         A patch to control `increase_x_height' follows.
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.
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'.
1448 2012-09-18  Werner Lemberg  <wl@gnu.org>
1450         [autofit] Add hierarchical property access to some structures.
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.
1458         * src/autofit/afglobal.c (af_face_globals_new,
1459         af_face_globals_compute_script_coverage,
1460         af_face_globals_get_metrics): Updated.
1462         * src/autofit/afloader.c (af_loader_reset), src/autofit/afmodule.c
1463         (af_property_get): Updated.
1465 2012-09-17  Werner Lemberg  <wl@gnu.org>
1467         [type1] Fix Savannah bug #37350.
1469         * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Check for ASCII
1470         storage only if we actually have at least four bytes.
1472 2012-09-15  Werner Lemberg  <wl@gnu.org>
1474         [autofit] Implement `fallback-script' property.
1476         * src/autofit/afglobal.c: s/default_script/fallback_script/.
1477         * src/autofit/afglobal.h: s/AF_SCRIPT_DEFAULT/AF_SCRIPT_FALLBACK/.
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/.
1483         * include/freetype/ftautoh.h: Document it.
1485 2012-09-15  Werner Lemberg  <wl@gnu.org>
1487         [autofit] Correct previous Unicode 6.1.0 change.
1489         The auto-hinter's latin module only handles latin ligatures in the
1490         `Alphabetical Presentation Forms' block.
1492         * src/autofit/aflatin.c (af_latin_uniranges): Fix it.
1494 2012-09-15  Werner Lemberg  <wl@gnu.org>
1496         * src/autofit/afmodule.c: s/FT_Err_/AF_Err_/.
1498 2012-09-15  Werner Lemberg  <wl@gnu.org>
1500         [autofit] Make default script a global property.
1502         * src/autofit/afmodule.h (AF_ModuleRec): Add `default_script' field.
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.
1510         * src/autofit/afglobal.h: Updated.
1512 2012-09-15  Werner Lemberg  <wl@gnu.org>
1514         Use `FT_Module' instead of `FT_Library' argument in property funcs.
1516         This internal change simplifies access to global module data.
1518         * include/freetype/internal/services/svprop.h
1519         (FT_Properties_SetFunc, FT_Properties_GetFunc): Change accordingly.
1521         * src/base/ftobjs.c (ft_property_do), src/autofit/afmodule.c
1522         (af_property_set, af_property_get): Updated.
1524 2012-09-14  Werner Lemberg  <wl@gnu.org>
1526         [autofit] Update to Unicode 6.1.0.
1528         * src/autofit/afcjk.c (af_cjk_uniranges), src/autofit/aflatin.c
1529         (af_latin_uniranges): Add and fix ranges.
1531 2012-09-14  Werner Lemberg  <wl@gnu.org>
1533         [autofit] Pass `AF_Module' instead of `AF_Loader'.
1535         We want to access the (not yet existing) module's global data later
1536         on.
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.
1544         * src/autofit/afmodule.h: Include `afloader.h'.
1545         (AF_ModuleRec): Define here.
1546         * src/autofit/afloader.h (AF_Module): Define here.
1547         Updated.
1549 2012-09-14  Werner Lemberg  <wl@gnu.org>
1551         [autofit] Fix `make multi'.
1553         * include/freetype/internal/fttrace.h: Add `afmodule'.
1554         * src/autofit/afmodule.c: Include FT_INTERNAL_DEBUG_H.
1555         (FT_COMPONENT): Define.
1557 2012-09-14  Werner Lemberg  <wl@gnu.org>
1559         * src/autofit/afmodule.c: s/FT_Autofitter/AF_Module/.
1561 2012-09-12  Werner Lemberg  <wl@gnu.org>
1563         [autofit] Minor reorganization.
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.
1570 2012-09-01  Werner Lemberg  <wl@gnu.org>
1572         [autofit] Implement `glyph-to-script-map' property.
1574         * include/freetype/ftautoh.h: New public header file.
1575         * include/freetype/config/ftheader.h (FT_AUTOHINTER_H): New macro.
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'.
1582 2012-08-31  Werner Lemberg  <wl@gnu.org>
1584         [autofit] Implement properties service framework.
1586         No properties are added yet.
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.
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.
1601 2012-08-30  Werner Lemberg  <wl@gnu.org>
1603         Implement properties to control FreeType modules.
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.
1610         * include/freetype/internal/services/svprop.h: New file.
1611         * include/freetype/internal/ftserv.h (FT_SERVICE_PROPERTIES_H): New
1612         macro.
1614         * src/base/ftobjs.c: Include FT_SERVICE_PROPERTIES_H.
1615         (ft_property_do, FT_Property_Set, FT_Property_Get): New functions.
1617 2012-08-29  Werner Lemberg  <wl@gnu.org>
1619         [docmaker] Allow `-' in tags and identifiers.
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.
1625 2012-08-27  Werner Lemberg  <wl@gnu.org>
1627         [FT_CONFIG_OPTION_PIC] Fix g++ 4.6.2 compiler warnings.
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.
1648 2012-08-27  Werner Lemberg  <wl@gnu.org>
1650         [truetype] Fix compilation warning.
1652         * src/truetype/ttgload.c (IS_HINTED): Move macro to...
1653         * src/truetype/ttobjs.h: This header file.
1655 2012-08-27  Werner Lemberg  <wl@gnu.org>
1657         [autofit, cff, pshinter, psnames] More renamings for orthogonality.
1659         * src/autofit/afmodule.c, src/autofit/afpic.h:
1660         s/AF_AUTOFITTER_/AF_/.
1662         * src/cff/cffdrivr.c, src/cff/cffobjs.c, src/cff/cffparse.c,
1663         src/cff/cffpic.h: s/FT_CFF_/CFF_/.
1665         * src/pshinter/pshmod.c, src/pshinter/pshpic.h:
1666         s/FT_PSHINTER_/PSHINTER_/.
1668         * src/psnames/psmodule.c, src/psnames/pspic.h:
1669         s/FT_PSCMAPS/PSCMAPS_/.
1671 2012-08-27  Werner Lemberg  <wl@gnu.org>
1673         [sfnt, truetype] More renamings for orthogonality.
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/.
1679 2012-08-27  Werner Lemberg  <wl@gnu.org>
1681         [autofit] Some macro and variable renamings for orthogonality.
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/.
1687 2012-08-26  Werner Lemberg  <wl@gnu.org>
1689         Fix Savannah bug #37178.
1691         * src/base/ftobjs.c (FT_Open_Face): Initialize `error' with
1692         `FT_Err_Missing_Module' before loop to indicate `no valid drivers'.
1694 2012-08-17  Werner Lemberg  <wl@gnu.org>
1696         * src/base/ftsynth.c (FT_GlyphSlot_Oblique): Fix shear angle.
1698         The old value was far too large (more than 20°).  The new one
1699         corresponds to 12°, quite common in typography.
1701 2012-08-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
1703         [smooth] Fix Savannah bug #37017.
1705         * src/smooth/ftgrays.c (gray_render_cubic): Use a different set of
1706         checks when detecting super curvy splines to be split.
1708 2012-08-05  Werner Lemberg  <wl@gnu.org>
1710         [autofit] Improve recognition of flat segments.
1712         Problem reported by Brad Dunzer <BDunzer@extensis.com>.
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.
1718 2012-08-05  Werner Lemberg  <wl@gnu.org>
1720         [autofit] Variable renamings.
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/.
1727 2012-07-31  Werner Lemberg  <wl@gnu.org>
1729         [type1] Fix Savannah bug #37000.
1731         * src/type1/t1load.c (parse_encoding): Fix order of checks.
1733 2012-07-17  Werner Lemberg  <wl@gnu.org>
1735         [psaux] Fix Savannah bug #36833.
1737         * src/psaux/t1decode.c (t1operator_seac): `seac' is not a valid
1738         operator if we want metrics only.
1740 2012-07-16  Werner Lemberg  <wl@gnu.org>
1742         [type1] Fix Savannah bug #36832.
1744         * src/type1/t1load.c (parse_charstrings): Reject negative number of
1745         glyphs.
1747 2012-07-13  Werner Lemberg  <wl@gnu.org>
1749         [type1] Fix Savannah bug #36829.
1751         * src/type1/t1load.c (parse_encoding): Check cursor position after
1752         call to T1_Skip_PS_Token.
1754 2012-07-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
1756         Revert the last commit 45337b07.
1758         * src/base/ftstroke.c (FT_Stroker_New): Revert the previous change.
1760 2012-07-11  Alexei Podtelezhnikov  <apodtele@gmail.com>
1762         [ftstroke] Fix uninitialized return value.
1764         * src/base/ftstroke.c (FT_Stroker_New): Return FT_Err_Ok instead.
1766 2012-07-11  Werner Lemberg  <wl@gnu.org>
1768         [smooth] Avoid memory leak in case of failure.
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.
1774 2012-07-09  Werner Lemberg  <wl@gnu.org>
1776         Fix compilation with MSVC 5.0.
1778         Problem reported by Peter Breitenlohner and Akira Kakuto.
1780         * include/freetype/config/ftstdlib.h (ft_setjmp): Updated.
1781         * src/sfnt/ttcmap.c (tt_face_build_cmaps): Remove cast.
1783 2012-07-09  Werner Lemberg  <wl@gnu.org>
1785         [autofit] Improve debugging messages; do some code cleanup.
1787         * src/autofit/aflatin.c (af_latin_align_linked_edge,
1788         af_latin_hint_edges): Synchronize with formatting used in the
1789         ttfautohint project.
1791 2012-07-07  Gilles Espinasse  <g.esp@free.fr>
1793         Fix strict-aliasing warning.
1795         * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Avoid double cast.
1797 2012-07-07  Dave Thomas  <dave.thomas@metaforic.com>
1799         [ARM] Fix FT_MulFix_arm.
1801         * include/freetype/config/ftconfig.h (FT_MulFix_arm) [__arm__]:
1802         Avoid ADDS instruction to clobber condition codes.
1804 2012-07-06  Werner Lemberg  <wl@gnu.org>
1806         [autofit] Do some code cleanup.
1808         * src/autofit/afglobal.c (af_face_globals_new): Simplify.
1810         * src/autofit/afhints.c: Use `FT_TRACE7' instead of `printf'
1811         everywhere.
1812         (FT_COMPONENT): New macro.
1813         (af_glyph_hints_done): Simplify.
1815         * include/freetype/internal/fttrace.h: Updated.
1817 2012-07-05  Werner Lemberg  <wl@gnu.org>
1819         [autofit] Improve output of debugging information.
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.
1825 2012-07-04  Werner Lemberg  <wl@gnu.org>
1827         [autofit] Fix Savannah bug #36091.
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.
1834 2012-07-04  Werner Lemberg  <wl@gnu.org>
1836         [autofit] Beautify blue zone tracing.
1838         * src/autofit/aflatin.c (af_latin_metrics_init_blues),
1839         src/autofit/aflatin2.c (af_latin2_metrics_init_blues): Implement it.
1841 2012-07-03  Werner Lemberg  <wl@gnu.org>
1843         [autofit] Quantize stem widths.
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.
1851 2012-07-03  Werner Lemberg  <wl@gnu.org>
1853         [autofit] Minor speed-up.
1855         * src/autofit/afangles (af_sort_pos, af_sort_widths): Don't swap
1856         elements if they are equal.
1858 2012-06-30  Gilles Espinasse  <g.esp@free.fr>
1860         Fix `checking if gcc static flag -static works' test.
1862         On my linux build tree, I receive yes answer in every package I
1863         build except FreeType for this test checking if gcc static flag
1864         `-static' works
1866         In FreeType, no is received, unless bzip2 and zlib are disabled using
1868           ./configure --without-bzip2 --without-zlib
1870         The reason is that bzip2 and zlib tests add `-lz' and `-lbz2' to
1871         LDFLAGS and this broke static flag test.
1873         * builds/unix/configure.raw: Update CFLAGS and LDFLAGS only after
1874         LT_INIT has run.
1876 2012-06-28  Infinality  <infinality@infinality.net>
1878         [truetype] Fix various artifacts.
1880         Verdana was broken in the original Infinality commit.  Also
1881         includes other minor fixes.
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.
1891         * src/truetype/ttsubpix.c: Updated.
1892         (sph_set_tweaks): Re-execute fpgm always.
1894 2012-06-28  Gilles Espinasse  <g.esp@free.fr>
1896         Fix CFLAGS and LDFLAGS share configure test.
1898         * builds/unix/configure.raw: Fix typo.
1900 2012-06-28  Werner Lemberg  <wl@gnu.org>
1902         [truetype] Set the `subpixel_positioned' flag unconditionally.
1904         This is how the code currently behaves.
1906         * src/truetype/ttgload.c (tt_loader_init): Do it.
1908 2012-06-27  Werner Lemberg  <wl@gnu.org>
1910         Fix conditional compilation.
1912         * src/base/basepic.c: Use FT_CONFIG_OPTION_MAC_FONTS.
1914 2012-06-27  Werner Lemberg  <wl@gnu.org>
1916         Fix conditional compilation.
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.
1922         * src/autofit/afcjk.h: Use AF_CONFIG_OPTION_CJK.
1924         * src/truetype/ttgload.c (tt_loader_init): Fix compiler warning.
1926         * src/truetype/ttinterp.c (Ins_MSIRP): Fix compiler warning.
1928         * src/truetype/ttinterp.h: Use
1929         TT_CONFIG_OPTION_BYTECODE_INTERPRETER.
1931 2012-06-26  Infinality  <infinality@infinality.net>
1933         [truetype] Remove unused rounding functionality.
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.
1941         * include/freetype/internal/ftobjs.h (FT_PIX_FLOOR_GRID,
1942         FT_PIX_ROUND_GRID, FT_PIX_CEIL_GRID): Removed.
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.
1958 2012-06-25  Werner Lemberg  <wl@gnu.org>
1960         [cff] Fix Savannah bug #36705.
1962         Handle numbers like 2.001 correctly.
1964         * src/cff/cffparse.c (cff_parse_real): Avoid negative values for
1965         `shift'.
1967 2012-06-18  Infinality  <infinality@infinality.net>
1969         [truetype] Support subpixel hinting.
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.
1977         Most of the code is based on the ClearType whitepaper written by
1978         Greg Hitchcock
1980           https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
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.
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.
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.
1997         * src/truetype/ttsubpix.h: New file, holding the tweaking rules.
1999         * include/freetype/config/ftoption.h, src/devel/ftoption.h
2000         (TT_CONFIG_OPTION_SUBPIXEL_HINTING): New macro.
2002         * include/freetype/internal/ftobjs.h (FT_PIX_FLOOR_GRID,
2003         FT_PIX_ROUND_GRID, FT_PIX_CEIL_GRID): New macros.
2005         * src/truetype/truetype.c [TT_USE_BYTECODE_INTERPRETER]: Include
2006         `ttsubpix.c'.
2008         * src/truetype/ttgload.c: Include `ttsubpix.h'.
2009         [All changes below are guarded by TT_CONFIG_OPTION_SUBPIXEL_HINTING.]
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.
2017         * src/truetype/rules.mk (TT_DRV_SRC): Updated.
2019         * src/truetype/ttinterp.c: Include `ttsubpix.h'.
2020         [Where necessary, changes below are guarded by
2021         TT_CONFIG_OPTION_SUBPIXEL_HINTING.]
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.
2043         * src/truetype/ttinterp.h: Updated.
2044         (SPH_TweakRule, SPH_ScaleRule): New structures for tweaks.
2045         (TT_ExecContextRec): Add members for subpixel hinting support.
2047         * src/truetype/ttobjs.h (TT_DefRecord): Add `inline_delta' member.
2049 2012-06-15  Werner Lemberg  <wl@gnu.org>
2051         * Version 2.4.10 released.
2052         =========================
2055         Tag sources with `VER-2-4-10'.
2057         * docs/VERSION.DLL: Update documentation and bump version number to
2058         2.4.10.
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/.
2074         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 10.
2076         * builds/unix/configure.raw (version_info): Set to 15:0:9.
2078 2012-06-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
2080         * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Improve spacing.
2082         * docs/CHANGES: Updated.
2084 2012-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2086         * builds/exports.mk: Add CCexe_CFLAGS and CCexe_LDFLAGS.
2088         to pass special compiler/linker flags under cross development.
2089         Suggested by Savannah bug #36367.
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.
2095 2012-06-14  Werner Lemberg  <wl@gnu.org>
2097         * docs/CHANGES: Updated.
2099 2012-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2101         [truetype] Add new versions of NEC FA family to tricky font list.
2103         NEC FA family dated in 1996 have different checksum.
2104         Reported by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>; see
2106           https://lists.gnu.org/archive/html/freetype-devel/2012-06/msg00023.html
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.
2114 2012-06-06  Werner Lemberg  <wl@gnu.org>
2116         [ftraster] Fix rounding issue causing visual artifacts.
2118         Problem reported by jola <hans-jochen.lau@lhsystems.com>; see
2120           https://lists.gnu.org/archive/html/freetype-devel/2012-05/msg00036.html
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'.
2126 2012-05-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
2128         * src/base/ftoutln.c (FT_Outline_Get_Orientation): Simplify.
2130         We now use the cross product of the direction vectors to compute the
2131         outline's orientation.
2133 2012-05-28  Werner Lemberg  <wl@gnu.org>
2135         * docs/CHANGES: Updated.
2137 2012-05-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
2139         New function FT_Outline_EmboldenXY.
2141         * include/freetype/ftoutln.h (FT_Outline_EmboldenXY): Define it.
2143         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Implement it, using a
2144         simplified emboldening algorithm.
2145         (FT_Outline_Embolden): Make it a special case of
2146         `FT_Outline_EmboldenXY'
2148 2012-05-07  Werner Lemberg  <wl@gnu.org>
2150         [type1] Fix Savannah bug #36386.
2152         * src/type1/t1load.c (t1_load_keyword): Ignore keyword if context is
2153         not valid.
2155 2012-04-07  Werner Lemberg  <wl@gnu.org>
2157         Remove compiler warning.
2159         * src/truetype/ttgload.c (TT_Load_Glyph)
2160         [!TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Access `glyph->face' directly.
2162 2012-03-28  Werner Lemberg  <wl@gnu.org>
2164         [autofit] Properly copy scaler flags to script metrics object.
2166         Without this patch, only the dummy and cjk autohinter modules get
2167         them (since they copy the whole scaler object).
2169         * src/autofit/aflatin.c (af_latin_metrics_scale),
2170         src/autofit/aflatin2.c (af_latin2_metrics_scale): Implement it.
2172 2012-03-22  Alexei Podtelezhnikov  <apodtele@gmail.com>
2174         [bdflib] Remove redundant macro.
2176         * src/bdf/bdflib.c (isdigok): Remove and replace with sbitset, which
2177         is exactly the same.
2179 2012-03-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2181         [configure] Fix Savannah bug #35644.
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__.
2188 2012-03-20  Werner Lemberg  <wl@gnu.org>
2190         [bdf] Improvement to Savannah bug #35656.
2192         * src/bdf/bdflib.c (isdigok): Add cast, as suggested in report.
2194 2012-03-17  Chris Liddell  <chris.liddell@artifex.com>
2196         [type1] Fix Savannah bug #35847.
2198         * src/type1/t1load.c (parse_subrs): Fix the loop exit condition;
2199         we want to exit when we have run out of data.
2201 2012-03-16  Werner Lemberg  <wl@gnu.org>
2203         [bdf] Really fix Savannah bug #35658.
2205         * src/bdf/bdflib.c (_bdf_list_split): Add one more `field' initializer.
2207 2012-03-14  Yann Droneaud  <yann@droneaud.fr>
2209         [sfnt] Make arrays static like all others.
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.
2215 2012-03-14  Huw Davies  <huw@codeweavers.com>
2217         [sfnt] A refinement of the previous commit.
2219         * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
2220         tt_name_entry_ascii_from_other): Stop at null byte.
2222 2012-03-14  Huw Davies  <huw@codeweavers.com>
2224         [sfnt] Add `name' table compatibility to MS Windows.
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.
2230 2012-03-14  Werner Lemberg  <wl@gnu.org>
2232         [type1] Fix Savannah bug #35833.
2234         Based on the patch given in the bug report.
2236         * src/type1/t1load.c (IS_INCREMENTAL): New macro.
2237         (read_binary_data): Add parameter `incremental'.
2238         Update all callers using `IS_INCREMENTAL'.
2240 2012-03-11  Werner Lemberg  <wl@gnu.org>
2242         [autofit] Return correct linear advance width values.
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.
2253         Using the TrueType hinter, the correct value (1367) of `afii10023'
2254         was returned, but the autohinter mysteriously returned 1366.
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.
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.
2271 2012-03-10  Werner Lemberg  <wl@gnu.org>
2273         [truetype] Fix SSW instruction.
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.
2279 2012-03-09  Vinnie Falco  <vinnie.falco@gmail.com>
2281         Prepare source code for amalgamation.
2283         * include/freetype/freetype.h: Swap order of preprocessor blocks.
2285 2012-03-08  Werner Lemberg  <wl@gnu.org>
2287         * Version 2.4.9 released.
2288         =========================
2291         Tag sources with `VER-2-4-9'.
2293         * docs/CHANGES: Updated.
2295         * docs/VERSION.DLL: Update documentation and bump version number to
2296         2.4.9.
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/.
2312         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 9.
2314         * builds/unix/configure.raw (version_info): Set to 14:1:8.
2316 2012-03-08  Werner Lemberg  <wl@gnu.org>
2318         [bdf] Add missing overflow check.
2320         * src/bdf/bdflib.c (_bdf_parse_glyphs) <BITMAP>: Add threshold for
2321         `glyph->bpr'.
2323 2012-03-07  Vinnie Falco  <vinnie.falco@gmail.com>
2325         Prepare source code for amalgamation.
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.
2337 2012-03-03  Werner Lemberg  <wl@gnu.org>
2339         Fix Savannah bug #35660.
2341         For some divisions, we use casts to 32bit entities.  Always guard
2342         against division by zero with these casts also.
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).
2348 2012-03-03  Werner Lemberg  <wl@gnu.org>
2350         [psaux] Fix handling of track kerning.
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.
2356 2012-03-02  Werner Lemberg  <wl@gnu.org>
2358         [truetype] Fix Savannah bug #35689.
2360         * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check first outline
2361         point.
2363 2012-03-01  Werner Lemberg  <wl@gnu.org>
2365         [bdf] Fix Savannah bug #35656.
2367         * src/bdf/bdflib.c (_bdf_parse_glyphs) <_BDF_BITMAP>: Check validity
2368         of nibble characters instead of accessing `a2i' array.
2370 2012-03-01  Werner Lemberg  <wl@gnu.org>
2372         [winfonts] Fix Savannah bug #35659.
2374         * src/winfonts/winfnt.c (FNT_Face_Init): Check number of glyphs.
2376 2012-03-01  Werner Lemberg  <wl@gnu.org>
2378         [bdf] Fix Savannah bug #35658.
2380         * src/bdf/bdflib.c (_bdf_list_split): Initialize `field' elements
2381         properly.
2383 2012-03-01  Werner Lemberg  <wl@gnu.org>
2385         [psaux] Fix Savannah bug #35657.
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'.
2391         * src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed,
2392         PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Fix boundary checking.
2394 2012-03-01  Werner Lemberg  <wl@gnu.org>
2396         [truetype] Fix Savannah bug #35646.
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.
2402 2012-03-01  Werner Lemberg  <wl@gnu.org>
2404         [bdf] Fix Savannah bug #35643.
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.
2410 2012-03-01  Werner Lemberg  <wl@gnu.org>
2412         [bdf] Fix Savannah bug #35641.
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.
2418 2012-03-01  Werner Lemberg  <wl@gnu.org>
2420         [truetype] Fix Savannah bug #35640.
2422         * src/truetype/ttinterp.c (SkipCode, TT_RunIns): Fix boundary check
2423         for NPUSHB and NPUSHW instructions.
2425 2012-02-29  Werner Lemberg  <wl@gnu.org>
2427         [truetype] Fix Savannah bug #35601.
2429         * src/truetype/ttinterp.c (Ins_SHZ): Use number of points instead of
2430         last point for loop.
2431         Also remove redundant boundary check.
2433 2012-02-29  Werner Lemberg  <wl@gnu.org>
2435         [truetype] Remove redundant check.
2437         * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Remove redundant
2438         second check for ordered contour start points.
2440 2012-02-29  Werner Lemberg  <wl@gnu.org>
2442         [truetype] Make SHC instruction behave similar to MS rasterizer.
2444         * src/truetype/ttinterp.c (Ins_SHC): Handle virtual contour in
2445         twilight zone.
2447 2012-02-29  Alexei Podtelezhnikov  <apodtele@gmail.com>
2449         Avoid modulo operators against a power-of-two denominator.
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.
2458 2012-02-29  Werner Lemberg  <wl@gnu.org>
2460         [autofit] Don't synchronize digit widths for light rendering mode.
2462         We don't hint horizontally in this mode.
2464         * src/autofit/afloader.c (af_loader_load_g) <Hint_Metrics>:
2465         Implement it.
2467 2012-02-26  Alexei Podtelezhnikov  <apodtele@gmail.com>
2469         [type42] Minor code optimization (again).
2471         * src/type42/t42parse.c (t42_parse_sfnts): Simplify previous change.
2473 2012-02-26  Mateusz Jurczyk  <mjurczyk@google.com>
2474             Werner Lemberg  <wl@gnu.org>
2476         [smooth] Fix Savannah bug #35604.
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.
2482 2012-02-26  Alexei Podtelezhnikov  <apodtele@gmail.com>
2484         [type42] Minor code optimization.
2486         * src/type42/t42parse.c (t42_parse_sfnts): Use bitmask instead of
2487         modulo operator.
2489 2012-02-26  Werner Lemberg  <wl@gnu.org>
2491         * docs/CHANGES: Updated.
2493 2012-02-26  Werner Lemberg  <wl@gnu.org>
2495         [type1] Fix Savannah bug #35608.
2497         * src/type1/t1parse.c (T1_Get_Private_Dict): Reject too short
2498         dictionaries.
2500 2012-02-26  Werner Lemberg  <wl@gnu.org>
2502         [bdf] Support `ENCODING -1 <n>' format.
2504         * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Implement it.
2506 2012-02-26  Werner Lemberg  <wl@gnu.org>
2508         [bdf] Fix Savannah bug #35607.
2510         * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Normalize
2511         negative encoding values.
2513 2012-02-26  Werner Lemberg  <wl@gnu.org>
2515         [type1] Fix Savannah bug #35606.
2517         * src/type1/t1load.c (parse_subrs): Add proper guards for `strncmp'.
2519         * src/psaux/psobjs.c (ps_parser_skip_PS_token): Emit error message
2520         only if cur < limit.
2522 2012-02-25  Werner Lemberg  <wl@gnu.org>
2524         [pcf] Fix Savannah bug #35603.
2526         * src/pcf/pcfread.c (pcf_get_properties): Assure final zero byte in
2527         `strings' array.
2529 2012-02-25  Werner Lemberg  <wl@gnu.org>
2531         [type42] Fix Savannah bug #35602.
2533         * src/type42/t42parse.c (t42_parse_sfnts): Check `string_size' more
2534         thoroughly.
2536 2012-02-25  Werner Lemberg  <wl@gnu.org>
2538         [bdf] Fix Savannah bugs #35599 and #35600.
2540         * src/bdf/bdflib.c (ACMSG16): New warning message.
2541         (_bdf_parse_glyphs) <_BDF_BITMAP>: Check line length.
2543 2012-02-24  Werner Lemberg  <wl@gnu.org>
2545         [bdf] Fix Savannah bugs #35597 and #35598.
2547         * src/bdf/bdflib.c (_bdf_is_atom): Fix handling of property value.
2549 2012-02-24  Vinnie Falco  <vinnie.falco@gmail.com>
2551         Prepare source code for amalgamation (6/6).
2553         * src/cff/cffdrivr.c: s/Load_Glyph/cff_glyph_load/.
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/.
2559         * src/psaux/t1cmap.c: s/t1_get_glyph_name/psaux_get_glyph_name/.
2561         * src/truetype/ttdriver.c: s/Load_Glyph/tt_glyph_load/.
2563         * src/type1/t1load.c: s/parse_font_matrix/t1_parse_font_matrix/.
2565 2012-02-24  Vinnie Falco  <vinnie.falco@gmail.com>
2567         Prepare source code for amalgamation (5/6).
2569         * include/freetype/fterrors.h: Undefine FT_KEEP_ERR_PREFIX after
2570         using it.
2572 2012-02-22  Vinnie Falco  <vinnie.falco@gmail.com>
2574         Prepare source code for amalgamation (4/6).
2576         * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine RAS_ARG,
2577         RAS_ARGS, RAS_VAR, and RAS_VARS before defining it.
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/.
2584 2012-02-20  Vinnie Falco  <vinnie.falco@gmail.com>
2586         Prepare source code for amalgamation (3/6).
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/.
2593 2012-02-20  Vinnie Falco  <vinnie.falco@gmail.com>
2595         Prepare source code for amalgamation (2/6).
2597         * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine FLOOR,
2598         CEILING, TRUNC, and SCALED before defining it.
2600 2012-02-20  Vinnie Falco  <vinnie.falco@gmail.com>
2602         Prepare source code for amalgamation (1/6).
2604         See discussion starting at
2606           https://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00037.html
2608         * src/smooth/ftgrays.c: s/TBand/gray_TBand/.
2609         * src/raster/ftraster.c: s/TBand/black_TBand/.
2611 2012-02-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
2613         [autofit] Fix outline flags.
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
2619           https://lists.gnu.org/archive/html/freetype-devel/2012-02/msg00046.html
2621 2012-02-11  Werner Lemberg  <wl@gnu.org>
2623         [truetype] Fix Savannah bug #35466.
2625         Jump instructions are now bound to the current function.  The MS
2626         Windows rasterizer behaves the same, as confirmed by Greg Hitchcock.
2628         * src/truetype/ttinterp.h (TT_CallRec): Add `Cur_End' element.
2629         * src/truetype/ttobjs.h (TT_DefRecord): Add `end' element.
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.
2635 2012-02-11  Werner Lemberg  <wl@gnu.org>
2637         We don't use `extensions'.
2639         * include/freetype/internal/ftobjs.h (FT_DriverRec): Remove
2640         `extensions' field.
2642 2012-02-11  Werner Lemberg  <wl@gnu.org>
2644         Clean up `generic' fields.
2646         * include/freetype/internal/ftobjs.h (FT_ModuleRec, FT_LibraryRec):
2647         Remove `generic' field since users can't access it.
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'.
2653 2012-02-07  Werner Lemberg  <wl@gnu.org>
2655         [autofit] Harmonize function arguments.
2657         * src/autofit/afloader.c, src/autofit/afloader.h: Use `FT_Int32' for
2658         `load_flags'.
2660 2012-02-07  Werner Lemberg  <wl@gnu.org>
2662         * src/cff/cffobjs.c (cff_face_init): Remove unnecessary casts.
2664 2012-01-17  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2666         [gxvalid] Fix Savannah bug #35286.
2668         Patch submitted by anonymous reporter.
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.
2675 2012-01-17  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2677         [raccess] Modify for PIC build.
2679         Based on the patch provided by Erik Dahlstrom <ed@opera.com>,
2680         https://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00010.html
2682         Also `raccess_guess_table[]' and `raccess_rule_by_darwin_vfs()'
2683         are renamed with `ft_' suffixes.
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.
2689         * src/base/ftrfork.c: Declarations of FT_RFork_Rule,
2690         raccess_guess_rec, are moved to...
2691         * include/freetype/internal/ftrfork.h: Here.
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}.
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.
2712 2012-01-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2714         Remove trailing spaces.
2716 2012-01-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2718         Formatting PIC related sources.
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.
2731 2012-01-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2733         [autofit] Fix the inclusion of `aflatin2.h' in PIC file.
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.
2740 2012-01-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2742         [cff] Remove redundant declarations of cff_cmap_XXX_class_rec.
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.
2751 2012-01-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2753         Fix redundant declaration warning in PIC mode.
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.
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.
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}.
2788 2012-01-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2790         Make pspic.c to include module error header to fix multi build.
2792         * src/psnames/pspic.c: Include `psnamerr.h'.
2794 2012-01-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2796         [base] Fix a dereference of uninitialized variable in PIC mode.
2798         * src/base/ftglyph.c (FT_Glyph_To_Bitmap): `glyph' must be
2799         set before dereferring to obtain `library'.  The initialization
2800         of `clazz', `glyph', `library' and NULL pointer check are
2801         reordered to minimize PIC conditionals.
2803 2012-01-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2805         [base] Insert explicit cast for GCC 4.6 in PIC mode.
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.
2815 2012-01-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2817         Fix PIC build broken by d9145241fe378104ba4c12a42534549faacc92e6.
2819         Under PIC configuration, FT_{CFF,PSCMAPS,SFNT,TT}_SERVICES_GET
2820         take no arguments but derefer the variable named `library'
2821         internally.
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.
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.
2831 2012-01-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2833         Make PIC files include module error headers, to use the error codes
2834         with per-module prefix.
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'.
2844 2012-01-04  Tobias Ringström  <tobias@ringis.se>
2846         [truetype] Fix IP instruction if x_ppem != y_ppem.
2848         * src/truetype/ttinterp.c (Ins_IP): Scale `orus' coordinates
2849         properly.
2851 2012-01-02  Werner Lemberg  <wl@gnu.org>
2853         Fix tracing message for `loca' table.
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.
2858 2011-12-10  Werner Lemberg  <wl@gnu.org>
2860         Add some variable initializations.
2861         Reported by Richard COOK <rscook@unicode.org>.
2863         * src/type1/t1driver.c (t1_ps_get_font_value): Initialize `val'.
2864         * src/smooth/ftgrays.c (gray_render_conic): Initialize `levels'
2865         earlier.
2867 2011-12-08  Werner Lemberg  <wl@gnu.org>
2869         Fix serious scaling bug in `FT_Get_Advances'.
2871         * src/base/ftadvanc.c (FT_Get_Advances): Advance values returned by
2872         `FT_Load_Glyph' must be simply multiplied by 1024.
2874 2011-12-08  Werner Lemberg  <wl@gnu.org>
2876         * src/bdf/bdflib.c (_bdf_parse_start): Drop redundant error tracing.
2878 2011-12-02  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2880         [mac] Unify DARWIN_NO_CARBON with FT_MACINTOSH.
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).
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.
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.
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.
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.
2914 2011-11-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2916         Fix Savannah bug #34728 (`make devel' on Mac OS X).
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.
2922 2011-11-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2924         [apinames] Fix the overflow of signed integer hash.
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.
2932 2011-11-30  Werner Lemberg  <wl@gnu.org>
2934         [winfonts] Remove casts.
2936         * src/winfonts/winfnt.c (winfnt_driver_class): Remove all casts and
2937         update affected functions.
2938         (FNT_Size_Select): Fix number of arguments.
2940 2011-11-30  Werner Lemberg  <wl@gnu.org>
2942         [type42] Remove casts.
2944         * src/type42/t42drivr.c (t42_driver_class): Remove all casts and
2945         update affected functions.
2947         * src/type42/t42objs.c, src/type42/t42objs.h: Updated for t42 driver
2948         changes.
2950 2011-11-30  Werner Lemberg  <wl@gnu.org>
2952         [type1] Remove casts.
2954         * src/type1/t1driver.c (t1_driver_class): Remove all casts and
2955         update affected functions.
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.
2962 2011-11-27  Werner Lemberg  <wl@gnu.org>
2964         [bdf] Fix Savannah bug #34896.
2966         ENCODING now covers the whole Unicode range.
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).
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.
2979 2011-11-27  Werner Lemberg  <wl@gnu.org>
2981         [bdf] Improve tracing.
2983         * src/bdf/bdflib.c (DBGMSG1, DBGMSG2): New macros.
2984         (_bdf_parse_glyphs): Use them.
2986 2011-11-26  Werner Lemberg  <wl@gnu.org>
2988         Improve tracing.
2990         * src/bdf/bdfdrivr.c (BDF_Face_Done), src/pcf/pcfdrivr.c
2991         (PCF_Face_Done): Remove tracing message.
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.
3001         * src/sfnt/sfobjs.c (sfnt_open_font), src/type42/t42objs.c
3002         (T42_Open_Face): Improve tracing.
3004 2011-11-26  Werner Lemberg  <wl@gnu.org>
3006         [cid] Fix error code.
3008         * src/cid/cidparse.c (cid_parser_new): Do it.
3010 2011-11-26  Werner Lemberg  <wl@gnu.org>
3012         [cff] Fix error code.
3014         * src/cff/cffload.c (cff_font_load): Do it.
3016 2011-11-26  Werner Lemberg  <wl@gnu.org>
3018         Add new error code FT_Err_Missing_Module.
3020         Previously, FreeType misleadingly returned
3021         FT_Err_Unknown_File_Format if a module was missing (or a test was
3022         missing completely).
3024         * include/freetype/fterrdef.h (FT_Err_Missing_Module): Define.
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.
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'.
3036 2011-11-25  Werner Lemberg  <wl@gnu.org>
3038         [bdf] Add more error messages.
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.
3047 2011-11-24  Werner Lemberg  <wl@gnu.org>
3049         * include/freetype/fterrors.h: Remove dead code.
3051 2011-11-15  Werner Lemberg  <wl@gnu.org>
3053         * docs/releases: Updated.
3055 2011-11-15  Werner Lemberg  <wl@gnu.org>
3057         * Version 2.4.8 released.
3058         =========================
3061         Tag sources with `VER-2-4-8'.
3063         * docs/CHANGES: Updated.
3065         * docs/VERSION.DLL: Update documentation and bump version number to
3066         2.4.8.
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/.
3082         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 8.
3084         * builds/unix/configure.raw (version_info): Set to 14:0:8.
3086 2011-11-13  Chris Liddell  <chris.liddell@artifex.com>
3088         Add FT_Get_PS_Font_Value() API.
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).
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.
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.
3104         * src/base/fttype1.c (FT_Get_PS_Font_Value): New function.
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.
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.
3114 2011-11-08  Braden Thomas  <bthomas@apple.com>
3116         [cid] Various loading fixes.
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.
3124 2011-11-05  Werner Lemberg  <wl@gnu.org>
3126         * README: We use copyright ranges also.
3128         According to
3130           https://www.gnu.org/prep/maintain/html_node/Copyright-Notices.html
3132         this should be mentioned explicitly.
3134 2011-10-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3136         [raccess] Supplement for previous fix.
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.
3144 2011-10-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3146         [raccess] Hide raccess_rule_by_darwin_vfs() on native Mac OS X.
3148         * src/base/ftrfork.c (raccess_rule_by_darwin_vfs): Do not
3149         compile on native Mac OS X because it is not used.
3151 2011-10-25  Werner Lemberg  <wl@gnu.org>
3153         [truetype] Fix MD instruction for twilight zone.
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.
3159 2011-10-18  Werner Lemberg  <wl@gnu.org>
3161         * Version 2.4.7 released.
3162         =========================
3165         Tag sources with `VER-2-4-7'.
3167         * docs/CHANGES: Updated.
3169         * docs/VERSION.DLL: Update documentation and bump version number to
3170         2.4.7.
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/.
3186         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 7.
3188         * builds/unix/configure.raw (version_info): Set to 13:2:7.
3190 2011-10-15  Kal Conley  <kcconley@gmail.com>
3192         Fix handling of transformations if no renderer is present.
3194         * src/base/ftobjs.c (FT_Load_Glyph): Thinko.
3196 2011-10-15  Kal Conley  <kcconley@gmail.com>
3198         Fix conditions for autohinting.
3200         * src/base/ftobjs.c (FT_Load_Glyph): Handle
3201         FT_LOAD_IGNORE_TRANSFORM.
3203 2011-10-07  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3205         [gxvalid] Fix a bug to detect too large offset in morx table.
3207         * src/gxvalid/gxvmorx2.c
3208         (gxv_morx_subtable_type2_ligActionIndex_validate): Fix a bug
3209         that too large positive offset cannot be detected.
3211 2011-10-01  Braden Thomas  <bthomas@apple.com>
3213         Handle some border cases.
3215         * include/freetype/config/ftstdlib.h (FT_USHORT_MAX): New macro.
3217         * src/base/ftbitmap.c (FT_Bitmap_Convert): Protect against invalid
3218         value of `target->rows'.
3220         * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add check for
3221         flex start.
3223         * src/raster/ftrend1.c (ft_raster1_render): Check `width' and
3224         `height'.
3226         * src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Protect against
3227         invalid values in `localpoints' array.
3229 2011-10-01  Werner Lemberg  <wl@gnu.org>
3231         [psnames] Handle zapfdingbats.
3232         Problem reported by Nicolas Rougier <Nicolas.Rougier@inria.fr>.
3234         * src/tools/glnames.py (adobe_glyph_list): Add data from AGL's
3235         `zapfdingbats.txt' file.
3237         * src/psnames/pstables.h: Regenerated.
3239 2011-09-27  Simon Bünzli  <zeniko@gmail.com>
3241         [type1] Fix Savannah bug #34189.
3243         * src/type1/t1load.c (T1_Open_Face): Initialize
3244         `face->len_buildchar'.
3246 2011-09-26  Werner Lemberg  <wl@gnu.org>
3248         [cff] Dump SIDs while tracing.
3250         * src/cff/cffobjs.c (cff_face_init): Do it.
3252         * src/cff/cffparse.c (cff_parser_run) [FT_DEBUG_LEVEL_TRACE]
3253         <cff_kind_string>: Identify as SID.
3255 2011-09-17  Werner Lemberg  <wl@gnu.org>
3257         Remove unused FT_ALIGNMENT macro.
3259         * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
3260         include/freetype/config/ftconfig.h: Do it.
3262 2011-09-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
3264         [smooth] Slightly optimize conic and cubic flatteners.
3266         * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
3267         out some code from the main loop to speed it up.
3269 2011-09-11  Tomas Hoger  <thoger@redhat.com>
3271         Slightly improve LZW_CLEAR handling.
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.
3279 2011-09-11  Tomas Hoger  <thoger@redhat.com>
3281         Add explicit LZW decompression stack size limit.
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:
3287           http://code.google.com/p/libarchive/source/browse/trunk/libarchive/archive_read_support_filter_compress.c?r=3635#121
3289         This patch adds explicit stack size limit, enforced when stack is
3290         realloced.
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.
3297         * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Implement it.
3299 2011-09-11  Tomas Hoger  <thoger@redhat.com>
3301         Protect against loops in the prefix table.
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.
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.
3313 2011-09-09  Werner Lemberg  <wl@gnu.org>
3315         Better tracing of metrics.
3317         * src/base/ftobjs.c (FT_Request_Size, FT_Select_Size): Decorate with
3318         FT_TRACE.
3320 2011-09-07  Werner Lemberg  <wl@gnu.org>
3322         [cff] Fix Savannah bug #33816.
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.
3331 2011-08-30  Werner Lemberg  <wl@gnu.org>
3333         Better tracing of metrics.
3335         * src/base/ftobjs.c (FT_Select_Metrics, FT_Request_Metrics):
3336         Decorate with FT_TRACE.
3338 2011-08-25  Werner Lemberg  <wl@gnu.org>
3340         [cff] Better tracing of the parsing process.
3342         * src/cff/cffload.c (cff_subfont_load, cff_font_load): Decorate with
3343         FT_TRACE.
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.
3352         * src/cff/cffparse.h (CFF_Field_Handler) [FT_DEBUG_LEVEL_TRACE]: Add
3353         `id' member.
3355         * src/cff/cfftoken.h: Add IDs to all fields.
3357 2011-08-16  Werner Lemberg  <wl@gnu.org>
3359         Fix Savannah bug #34022.
3361         * README, docs/INSTALL: Remove references to UPGRADE.UNIX.
3363 2011-08-15  Werner Lemberg  <wl@gnu.org>
3365         Fix Savannah bug #34018.
3367         * docs/UPGRADE.UNIX: Removed.  Obsolete.
3369 2011-08-15  David Bevan  <david.bevan@pb.com>
3371         Fix Savannah bug #33992.
3373         * src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix border case.
3375 2011-08-12  Werner Lemberg  <wl@gnu.org
3377         [truetype] Fix degenerate case in S{P,F,DP}VTL opcodes.
3379         * src/truetype/ttinterp.c (Ins_SxVTL): Handle p1 == p2 specially.
3380         (Ins_SDPVTL): Handle v1 == v2 specially.
3382 2011-08-09  Werner Lemberg  <wl@gnu.org>
3384         [cff] Fix Savannah bug #33975.
3386         * src/cff/cffparse.c (cff_parse_font_matrix): Fix typo.
3388 2011-07-29  Werner Lemberg  <wl@gnu.org>
3390         * Version 2.4.6 released.
3391         =========================
3394         Tag sources with `VER-2-4-6'.
3396         * docs/CHANGES: Updated.
3398         * docs/VERSION.DLL: Update documentation and bump version number to
3399         2.4.6.
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/.
3415         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 6.
3417         * builds/unix/configure.raw (version_info): Set to 13:1:7.
3419 2011-07-29  Werner Lemberg  <wl@gnu.org>
3421         [cff] Add some more tracing infos.
3423         * src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox,
3424         cff_parse_cid_ros): Add tracing.
3426 2011-07-22  Dirk Müller  <dmueller@suse.de>
3428         [psaux, type1] Fix null pointer dereferences.
3430         Found with font fuzzying.
3432         * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Check
3433         `decoder->buildchar'.
3435         * src/type1/t1load.c (t1_load_keyword): Check `blend->num_designs'.
3437 2011-07-20  Chris Morgan  <cmorgan@cybexintl.com>
3439         Add FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT.
3441         Useful for embedded systems which don't need file stream support.
3443         * src/base/ftsystem.c, src/base/ftobjs.c (FT_Stream_New): Implement
3444         it.
3446 2011-07-20  Elton Chung  <elton328@gmail.com>
3448         * src/base/ftpatent.c (FT_Face_SetUnpatentedHinting): Fix typo.
3450 2011-07-16  Steven Chu  <steven.f.chu@gmail.com>
3452         [truetype] Fix metrics on size request for scalable fonts.
3454         * src/truetype/ttdriver.c (tt_size_request): Fix copying metrics
3455         from TT_Size to FT_Size if scalable font.
3457         See
3459           https://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00049.html
3461         for some comparison images.
3463 2011-07-14  Matthias Drochner  <M.Drochner@fz-juelich.de>.
3465         [psaux] Fix potential sign extension problems.
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.
3472         * src/psaux/t1decode.c (Fix2Int): New macro.
3473         Use it where appropriate.
3475 2011-07-14  Werner Lemberg  <wl@gnu.org>
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>.
3481 2011-07-10  Алексей Подтележников  <apodtele@gmail.com>
3483         [psaux] Optimize previous commit.
3485         * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
3486         <op_callothersubr>: Move error check down to avoid testing twice for
3487         good cases.
3489 2011-07-08  Werner Lemberg  <wl@gnu.org>
3491         [psaux] Add better argument check for `callothersubr'.
3493         * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
3494         <op_callothersubr>: Reject negative arguments.
3496 2011-07-07  Werner Lemberg  <wl@gnu.org>
3498         [sfnt] Try harder to find non-zero values for ascender and descender.
3500         * src/sfnt/sfobjs.c (sfnt_load_face): Consult `OS/2' table in case
3501         the `hhea' table's values are zero.
3503 2011-07-03  Werner Lemberg  <wl@gnu.org>
3505         Fix previous commit.
3507         We want to unset FT_FACE_FLAG_SCALABLE only if there are bitmap
3508         strikes in the font.
3510         * src/truetype/ttobjs.c (tt_face_init): Implement it.
3512         * docs/CHANGES: Updated.
3514 2011-07-02  Just Fill Bugs  <mozbugbox@yahoo.com.au>
3516         [truetype] Fix Savannah bug #33246.
3518         * src/truetype/ttobjs.c (tt_check_single_notdef): New function.
3519         (tt_face_init): Use it to test FT_FACE_FLAG_SCALABLE.
3521 2011-07-02  Werner Lemberg  <wl@gnu.org>
3523         * docs/CHANGES: Updated.
3525 2011-07-02  David Bevan  <david.bevan@pb.com>
3527         [ftstroke] Major revision.
3529         The main problems
3530         -----------------
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.
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.
3542         The main fixes
3543         --------------
3545           o The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected.
3547           o A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has been
3548             introduced to support PostScript and PDF miter joins.
3550           o FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an
3551             alias for FT_STROKER_LINEJOIN_MITER.
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.
3557         See
3559           https://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00001.html
3561         for example documents.  The FreeType stroker now produces results
3562         very similar to that produced by GhostScript and Distiller for these
3563         fonts.
3565         Other problems
3566         --------------
3568         The following problems have been resolved:
3570           o Inside corners could be generated incorrectly.  Intersecting the
3571             inside corner could cause a missing triangular area and other
3572             effects.
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'.
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.
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.)
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.
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.
3602           o Cubics with close control points could be mishandled.  All eight
3603             cases are now distinguished correctly.
3605         Other improvements
3606         ------------------
3608         o Borders for cubic curves could be too `flat'.
3609           FT_SMALL_CUBIC_THRESHOLD has been reduced a little to prevent
3610           this.
3612         o The handling and use of movable points has been simplified a
3613           little.
3615         o Various values are now computed only if the results are actually
3616           needed.
3618         o The directions of the outer and inner borders have been swapped,
3619           as recommended by Graham Asher.
3621         * src/base/ftstroke.c: Revised.
3622         * include/freetype/ftstroke.h: Updated.
3624 2011-06-30  İsmail Dönmez  <ismail@namtrac.org>
3626         * builds/toplevel.mk: We use git, not CVS, thus skip `.gitignore'.
3628 2011-06-29  Werner Lemberg  <wl@gnu.org>
3630         [bdf] Fix Savannah bug #33663.
3632         * src/bdf/bdflib.c (_bdf_parse_glyphs): Handle negative values for
3633         ENCODING correctly.
3635         * docs/CHANGES: Document it.
3637 2011-06-24  Werner Lemberg  <wl@gnu.org>
3639         * Version 2.4.5 released.
3640         =========================
3643         Tag sources with `VER-2-4-5'.
3645         * docs/CHANGES: Updated.
3647         * docs/VERSION.DLL: Update documentation and bump version number to
3648         2.4.5
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/.
3664         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
3666         * builds/unix/configure.raw (version_info): Set to 13:0:7.
3668 2011-06-20  Werner Lemberg  <wl@gnu.org>
3670         * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Fix change
3671         from 2011-05-04.
3673 2011-06-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3675         [gxvalid] make the `prop' validation tracing verbose.
3677         * src/gxvalid/gxvprop.c: Add tracing messages for errors.
3679 2011-06-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3681         [autogen.sh] Reflect environment variable LIBTOOLIZE.
3683 2011-06-18  Werner Lemberg  <wl@gnu.org>
3685         Update license documentation.
3687         * docs/GPL.TXT: Renamed to...
3688         * docs/GPLv2.TXT: This.
3690         * docs/LICENSE.TXT: Updated.
3692 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3694         Fix g++4.6 compiler warnings in module drivers.
3696         The background is same with previous commit.
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'.
3721 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3723         [base] Fix g++4.6 compiler warnings in src/base/*.c.
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.
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'.
3745 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3747         [gxvalid] Cleanup.
3749         Some invalid, overrunning, unrecommended non-zero values
3750         are cared in paranoid validation mode only.  There are
3751         many lines looking like:
3753           if ( valid->root->level >= FT_VALIDATE_PARANOID )
3754             FT_INVALID_xxx;
3756         To simplify them, GXV_SET_ERR_IF_PARANOID( err ) is
3757         introduced for more paranoid validation in future.
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.
3774 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3776         [gxvalid] Fix gcc4.6 compiler warnings in gxvtrak.c.
3778         * src/gxvalid/gxvtrak.c (gxv_trak_trackTable_validate):
3779         Check different entries pointing same tracking value.
3780         (gxv_trak_validate): Remove unused variable `table_size'.
3782 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3784         [gxvalid] Fix gcc4.6 compiler warnings in gxvmorx*.c.
3786         * src/gxvalid/gxvmorx.c (gxv_morx_subtables_validate):
3787         Conditionalize unvalidated variable `subFeatureFlags'.
3788         (gxv_morx_chain_validate): Conditionalize unvalidated
3789         variable `defaultFlags'.
3791         * src/gxvalid/gxvmorx0.c
3792         (gxv_morx_subtable_type0_entry_validate):
3793         Conditionalize unvalidated variables; `markFirst',
3794         `dontAdvance', `markLast', `verb'.
3796         * src/gxvalid/gxvmorx1.c
3797         (gxv_morx_subtable_type1_entry_validate): Conditionalize
3798         unvalidated variables; `setMark', `dontAdvance'.
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.
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'.
3820 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3822         [gxvalid] Fix gcc4.6 compiler warnings in gxvmort*.c.
3824         * src/gxvalid/gxvmort.c (gxv_mort_subtables_validate):
3825         Conditionalize unvalidated variable `subFeatureFlags'.
3826         (gxv_mort_chain_validate): Conditionalize unvalidated
3827         variable `defaultFlags'.
3829         * src/gxvalid/gxvmort0.c
3830         (gxv_mort_subtable_type0_entry_validate): Check the
3831         conflict of the marks for the glyphs.
3833         * src/gxvalid/gxvmort1.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.
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.
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'.
3862 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3864         [gxvalid] Fix gcc4.6 compiler warnings in gxvkern.c.
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'.
3883 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3885         [gxvalid] Fix gcc4.6 compiler warnings in gxvjust.c.
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'.
3909 2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3911         [gxvalid] Preparation to fix gcc4.6 compiler warnings.
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.
3921 2011-06-08  Werner Lemberg  <wl@gnu.org>
3923         [autofit] Remove unused structure member.
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.
3929 2011-05-30  Werner Lemberg  <wl@gnu.org>
3931         Fix g++ 4.6 compilation.
3933         * src/autofit/afhints.c (af_glyph_hints_dump_segments,
3934         af_glyph_hints_dump_edges): Use cast.
3936 2011-05-30  Werner Lemberg  <wl@gnu.org>
3938         Fix gcc 4.6 compiler warnings.
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.
3947 2011-05-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3949         [mac] Conditionalize the inclusion of `AvailabilityMacros.h'.
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.
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.
3961 2011-05-27  Werner Lemberg  <wl@gnu.org>
3963         [autofit] Improve tracing of hinting process.
3965         * src/autofit/aflatin.c (af_latin_hint_edges): Add tracing message
3966         `ADJUST'.
3968 2011-05-26  Werner Lemberg  <wl@gnu.org>
3970         [autofit] Fix trace message.
3972         * src/autofit/aflatin.c (af_latin_hint_edges): Show correct value in
3973         tracing message.
3975 2011-05-24  Daniel Zimmermann  <netzimme@googlemail.com>
3977         Reduce warnings for MS Visual Studio 2010.
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.
3986 2011-05-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3988         Automake component `builds/unix/install-sh' is removed.
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.
3994 2011-05-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3996         [autofit] Make trace message for CJK bluezone more verbose.
3998 2011-05-08  Just Fill Bugs  <mozbugbox@yahoo.com.au>
3999             suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4001         [autofit] Add bluezones for CJK Ideographs.
4003         To remove extrema 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         https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00070.html
4009         https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00092.html
4010         https://lists.gnu.org/archive/html/freetype-devel/2011-05/msg00001.html
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_hint_edges): Add code to align the edge stems to blue zones.
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.
4041         * docs/CHANGES: Note about CJK bluezone support.
4043 2011-05-06  Werner Lemberg  <wl@gnu.org>
4045         [autofit] Remove unused struct member.
4047         * src/autofit/aflatin.h (AF_LatinAxis): Remove `control_overshoot'.
4049 2011-05-04  Werner Lemberg  <wl@gnu.org>
4051         * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Simplify.
4053 2011-05-01  Just Fill Bugs  <mozbugbox@yahoo.com.au>
4054             Werner Lemberg  <wl@gnu.org>
4056         [autofit] Add more debugging functions.
4058         * src/autofit/afhints.c (af_glyph_hints_get_num_segments,
4059         af_glyph_hints_get_segment_offset): New functions.
4061 2011-05-01  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4063         Add new option `--disable-mmap' to configure script.
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.
4069 2011-04-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4071         [truetype] Always recalculate the sfnt table checksum.
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         https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00091.html
4079         https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00096.html
4081 2011-04-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4083         [truetype] Register a set of tricky fonts, NEC FA family.
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.
4091 2011-04-29  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4093         [truetype] Fix a bug in the sfnt table checksum getter.
4095         * src/truetype/ttobjs.c (tt_get_sfnt_checksum): Check the
4096         return value of face->goto_table() correctly.
4098 2011-04-28  Werner Lemberg  <wl@gnu.org>
4100         [autofit] Improve tracing messages.
4102         * src/autofit/aflatin.c (af_latin_metrics_init_blues,
4103         af_latin_align_linked_edge, af_latin_hint_edges): Do it.
4105 2011-04-25  Kan-Ru Chen  <kanru@kanru.info>
4107         [truetype] Always check the checksum to identify tricky fonts.
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         https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00073.html
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.
4118 2011-04-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4120         [autofit] Add more Indic scripts with hanging baseline.
4122         * src/autofit/afindic.c (af_indic_uniranges): Tibetan, Limbu,
4123         Sundanese, Meetei Mayek, Syloti Nagri and Sharada scripts are
4124         added.
4126 2011-04-21  Behdad Esfahbod  <behdad@behdad.org>
4128         Always ignore global advance.
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.
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.
4140         * docs/CHANGES: Updated.
4142 2011-04-21  rainy6144  <rainy6144@gmail.com>
4144         [autofit] Blur CJK stems if too many to preserve their gaps.
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         https://lists.gnu.org/archive/html/freetype-devel/2011-02/msg00011.html
4150         https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00046.html
4151         for details.
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.
4158 2011-04-18  Werner Lemberg  <wl@gnu.org>
4160         Integrate autofitter debugging stuff.
4162         * devel/ftoption.h, include/freetype/config/ftoption.h
4163         (FT_DEBUG_AUTOFIT): New macro.
4165         * include/freetype/internal/fttrace.h: Add trace components for
4166         autofitter.
4168         * src/autofit/aftypes.h (AF_LOG): Removed.
4169         (_af_debug): Removed.
4171         * src/autofit/*: s/AF_DEBUG/FT_DEBUG_AUTOFIT/.
4172         s/AF_LOG/FT_TRACE5/.
4173         Define FT_COMPONENT where necessary.
4175 2011-04-18  Werner Lemberg  <wl@gnu.org>
4177         Synchronize config files.
4179         * builds/unix/ftconfig.in: Copy missing assembler routines from
4180         include/freetype/config/ftconfig.h.
4182 2011-04-13  Werner Lemberg  <wl@gnu.org>
4184         [psaux] Fix Savannah bug #33047.
4186         Patch submitted by anonymous reporter.
4188         * src/psaux/psobjs.c (ps_table_add): Use FT_PtrDist for pointer
4189         difference.
4191 2011-04-11  Kan-Ru Chen  <kanru@kanru.info>
4193         Fix reading of signed integers from files on 64bit platforms.
4195         Previously, signed integers were converted to unsigned integers, but
4196         this can fail because of sign extension.  For example, 0xa344a1eb
4197         becomes 0xffffffffa344a1eb.
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.
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.
4207         * src/gzip/ftgzip.c (ft_gzip_get_uncompressed_size): Updated.
4209 2011-04-07  Werner Lemberg  <wl@gnu.org>
4211         Update Unicode ranges for CJK autofitter; in particular, add Hangul.
4213         * src/autofit/afcjk.c (af_cjk_uniranges): Update to Unicode 6.0.
4215 2011-04-04  Werner Lemberg  <wl@gnu.org>
4217         Fix formatting of autofit debug dumps.
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.
4223 2011-03-30  Werner Lemberg  <wl@gnu.org>
4225         * src/autofit/aftypes.h (AF_OutlineRec): Removed, unused.
4227 2011-03-24  Werner Lemberg  <wl@gnu.org>
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.
4232 2011-03-23  Werner Lemberg  <wl@gnu.org>
4234         * src/truetype/ttpload.c (tt_face_load_loca): Fix mismatch warning.
4236 2011-03-20  Werner Lemberg  <wl@gnu.org>
4238         * src/sfnt/sfobjs.c (sfnt_open_font): Check number of TTC subfonts.
4240 2011-03-19  Werner Lemberg  <wl@gnu.org>
4242         More C++ compilation fixes.
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"'.
4248 2011-03-18  Werner Lemberg  <wl@gnu.org>
4250         C++ compilation fixes.
4252         * src/autofit/aflatin.c (af_latin_hints_apply), src/autofit/afcjk.c
4253         (af_cjk_hints_apply): Use cast for `dim'.
4255 2011-03-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
4257         A better fix for Savannah bug #32671.
4259         * src/smooth/ftgrays.c (gray_render_conic): Clean up code and
4260         replace WHILE loop with a more natural DO-WHILE construct.
4262 2011-03-16  Werner Lemberg  <wl@gnu.org>.
4264         * src/base/ftstroke.c (FT_StrokerRec): Remove unused `valid' field.
4265         Suggested by Graham Asher.
4267 2011-03-09  Werner Lemberg  <wl@gnu.org>
4269         Make FT_Sfnt_Table_Info return the number of SFNT tables.
4271         * src/sfnt/sfdriver.c (sfnt_table_info): Implement it.
4272         * include/freetype/tttables.h: Update documentation.
4273         * docs/CHANGES: Updated.
4275 2011-03-07  Bram Tassyns  <bramt@enfocus.be>
4277         [cff] Fix Savannah bug #27988.
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.
4283 2011-03-07  Werner Lemberg  <wl@gnu.org>
4285         * docs/CHANGES: Updated.
4287 2011-03-07  Alexei Podtelezhnikov  <apodtele@gmail.com>
4289         Quick fix for Savannah bug #32671.
4291         This isn't the optimal solution yet, but it restores the previous
4292         rendering quality (more or less).
4294         * src/smooth/ftgrays.c (gray_render_conic): Do more splitting.
4296 2011-03-06  Werner Lemberg  <wl@gnu.org>
4298         Fix autohinting fallback.
4300         * src/base/ftobjs.c (FT_Load_Glyph): Assure that we only check TTFs,
4301         ignoring CFF-based OTFs.
4303 2011-02-27  Werner Lemberg  <wl@gnu.org>
4305         Add AF_CONFIG_OPTION_USE_WARPER to control the autofit warper.
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.
4311         * src/autofit/*: s/AF_USE_WARPER/AF_CONFIG_OPTION_USE_WARPER/.
4313         * src/autofit/afwarp.c [!AF_CONFIG_OPTION_USE_WARPER]: Replace dummy
4314         variable assignment with a typedef.
4316 2011-02-26  Werner Lemberg  <wl@gnu.org>
4318         [autofit] Slight simplifications.
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.
4324 2011-02-24  Werner Lemberg  <wl@gnu.org>
4326         * docs/PROBLEMS: Mention rendering differences on different
4327         platforms.
4328         Suggested and worded by Jason Owen <jason.a.owen@gmail.com>.
4330 2011-02-24  Werner Lemberg  <wl@gnu.org>
4332         [autofit] Comment out unused code.
4334         * src/autofit/aflatin.c, src/autofit/aflatin2.c
4335         (af_latin_hints_compute_edges): Do it.
4337 2011-02-24  Werner Lemberg  <wl@gnu.org>
4339         * src/autofit/afhints.h (AF_GlyphHints): Remove unused field.
4341 2011-02-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4343         [cache] Fix an off-by-one bug in `FTC_Manager_RemoveFaceID'.
4344         Found by <ychen1392001@yahoo.com.cn>, see detail in
4346           https://lists.gnu.org/archive/html/freetype/2011-01/msg00023.html
4348         * src/cache/ftccache.c (FTC_Cache_RemoveFaceID): Check the node
4349         buckets[cache->p + cache->mask] too.
4351 2011-02-19  Kevin Kofler  <kevin.kofler@chello.at>
4353         Fall back to autohinting if a TTF/OTF doesn't contain any bytecode.
4354         This is Savannah patch #7471.
4356         * src/base/ftobjs.c (FT_Load_Glyph): Implement it.
4358 2011-02-19  John Tytgat  <John.Tytgat@esko.com>
4360         [cff] Fix subset prefix removal.
4361         This is Savannah patch #7465.
4363         * src/cff/cffobjs.c (remove_subset_prefix): Update length after
4364         subset prefix removal.
4366 2011-02-13  Bradley Grainger  <bgrainger@logos.com>
4368         Add inline assembly version of FT_MulFix for MSVC.
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++.
4374 2011-02-13  Bradley Grainger  <bgrainger@logos.com>
4376         Add project and solution files in Visual Studio 2010 format.
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.
4383 2011-02-01  Werner Lemberg  <wl@gnu.org>
4385         * src/autofit/afdummy.c: Include `aferrors.h'.
4386         Problem reported by Chris Liddell <chris.liddell@artifex.com>.
4388 2011-02-01  Werner Lemberg  <wl@gnu.org>
4390         [cff] Ignore unknown operators in charstrings.
4391         Patch suggested by Miles.Lau <sunliang_liu@foxitsoftware.com>.
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.
4397 2011-02-01  Werner Lemberg  <wl@gnu.org>
4399         [truetype] FT_LOAD_PEDANTIC now affects `prep' and `fpgm' also.
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.
4408 2011-01-31  Werner Lemberg  <wl@gnu.org>
4410         [truetype] Protect jump instructions against endless loops.
4412         * src/truetype/interp.c (DO_JROT, DO_JMPR, DO_JROF): Exit with error
4413         if offset is zero.
4415 2011-01-31  Werner Lemberg  <wl@gnu.org>
4417         [truetype] Improve handling of invalid references.
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.
4425 2011-01-31  Werner Lemberg  <wl@gnu.org>
4427         [truetype] Improve handling of stack underflow.
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.
4433 2011-01-30  Werner Lemberg  <wl@gnu.org>
4435         * src/sfnt/ttmtx.c (tt_face_load_hmtx): Fix tracing message.
4437 2011-01-30  LIU Sun-Liang  <sunliang_liu@foxitsoftware.com>
4439         [truetype]: Fix behaviour of MIAP for invalid arguments.
4441         * src/truetype/ttinterp.c (Ins_MIAP): Set reference points even in
4442         case of error.
4444 2011-01-18  Werner Lemberg  <wl@gnu.org>
4446         [truetype] Fix handling of MIRP instruction.
4448         Thanks to Greg Hitchcock who explained the issue.
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.
4455 2011-01-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4457         Fix ARM assembly code in include/freetype/config/ftconfig.h.
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.
4467         https://bugreports.qt.io/browse/QTBUG-6521
4469 2011-01-15  Werner Lemberg  <wl@gnu.org>
4471         [raster] Make bbox handling the same as with Microsoft's rasterizer.
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.
4477         Thanks to Greg Hitchcock who explained this behaviour.
4479         * src/raster/ftrend1.c (ft_raster1_render): Implement it.
4481 2011-01-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4483         Copy -mcpu=* & -march=* options from CFLAGS to LDFLAGS.
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.
4490 2011-01-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4492         Fix off-by-one bug in CFLAGS & LDFLAGS harmonizer.
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.
4498 2011-01-13  Werner Lemberg  <wl@gnu.org>
4500         [raster] Add undocumented drop-out rule to the other bbox side also.
4502         * src/raster/ftraster.c (Vertical_Sweep_Drop,
4503         Horizontal_Sweep_Drop): Implement it.
4505 2011-01-13  Werner Lemberg  <wl@gnu.org>
4507         [raster] Reduce jitter value.
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.
4513         * src/raster/ftraster.c (Set_High_Precision): Implement it.
4515 2011-01-13  Werner Lemberg  <wl@gnu.org>
4517         [raster] Handle drop-outs at glyph borders according to Microsoft.
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.
4524         Thanks to Greg Hitchcock who explained this behaviour.
4526         * src/raster/ftraster.c (Vertical_Sweep_Drop,
4527         Horizontal_Sweep_Drop): Implement it.
4529 2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4531         [cache] Fix Savannah bug #31923, patch drafted by Harsha.
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
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.
4546 2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4548         [cache] Notice if a cache query induced the node list change.
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.
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.
4565         * src/cache/ftccback.h (ftc_snode_compare): Updated to fit with new
4566         FTC_Node_CompareFunc type.
4567         (ftc_gnode_compare): Ditto.
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).
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.
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.
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.
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.
4602 2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4604         [cache] Fit `FTC_GNode_Compare' to `FTC_Node_CompareFunc'.
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'.
4612 2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4614         [cache] Deduplicate the code to get the top node by a hash.
4616         There are several duplicated code fragments getting the top node
4617         from a cache by a given hash, like:
4619             idx = hash & cache->mask;
4620             if ( idx < cache->p )
4621               idx = hash & ( cache->mask * 2 + 1 );
4622             pnode = cache->buckets + idx;
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.
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.
4637 2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4639         [cache] inline-specific functions are conditionalized.
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'.
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.
4653 2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4655         [cache] Correct a type mismatch under non-inlined config.
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'.
4661 2011-01-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4663         Update Jamfile to include Bzip2 support.
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)
4670 2011-01-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4672         Update Symbian project files to include Bzip2 support.
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.
4678         * builds/symbian/bld.inf: Include ftbzip2.h.
4679         * builds/symbian/freetype.mmp: Include ftbzip2.c.
4681 2011-01-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4683         Update classic MacOS makefiles to include Bzip2 support.
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.
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.
4694 2011-01-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4696         Update Amiga makefiles to include Bzip2 support.
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.
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.
4706 2011-01-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4708         Update pkg-config tools to reflect Bzip2 support.
4710         * builds/unix/freetype-config.in: Include `-lbz2' to
4711         --libs output, if built with Bzip2 support.
4712         * builds/unix/freetype2.in: Ditto.
4714 2011-01-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4716         * builds/unix/configure.raw: Remove `SYSTEM_BZ2LIB' macro.
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.
4724 2011-01-03  Werner Lemberg  <wl@gnu.org>
4726         */rules.mk: Handle `*pic.c' files.
4728 2010-12-31  Werner Lemberg  <wl@gnu.org>
4730         * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 64.
4731         Problem reported by Tom Bishop <wenlin@wenlin.com>.
4733 2010-12-31  Werner Lemberg  <wl@gnu.org>
4735         Improve bzip2 support.
4737         * include/freetype/ftmoderr.h: Add bzip2.
4739         * docs/INSTALL.ANY, docs/CHANGES: Updated.
4741         * src/pcf/README: Updated.
4742         * include/freetype/internal/pcftypes.h: Obsolete, removed.
4744 2010-12-31  Joel Klinghed  <the_jk@yahoo.com>
4746         Add bzip2 compression support to handle *.pcf.bz2 files.
4748         * builds/unix/configure.raw: Test for libbz2 library.
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.
4754         * include/freetype/ftbzip2.h: New file.
4756         * src/bzip2/*: New files.
4758         * src/pcf/pcf.h: s/gzip_/comp_/.
4759         * src/pcf/pcfdrivr.c: Include FT_BZIP2_H.
4760         s/gzip_/comp_/.
4761         (PCF_Face_Init): Handle bzip2 compressed files.
4763         * docs/formats.txt, modules.cfg: Updated.
4765 2010-12-25  Harsha  <mm.harsha@gmail.com>
4767         Apply Savannah patch #7422.
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 (comparison 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.
4777         * src/cache/ftcsbits.c (FTC_SNode_New): Initialize sbit widths with
4778         value 255.
4779         (ftc_snode_compare): Fix condition.
4781 2010-12-13  Werner Lemberg  <wl@gnu.org>
4783         Fix parameter handling of `FT_Set_Renderer'.
4784         Reported by Kirill Tishin <siege@bk.ru>.
4786         * src/base/ftobjs.c (FT_Set_Renderer): Increment `parameters'.
4788 2010-12-09  Werner Lemberg  <wl@gnu.org>
4790         [cff] Allow `hlineto' and `vlineto' without arguments.
4792         We simply ignore such instructions.  This is invalid, but it doesn't
4793         harm; and indeed, there exist such subsetted fonts in PDFs.
4795         Reported by Albert Astals Cid <aacid@kde.org>.
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.
4801 2010-11-28  Werner Lemberg  <wl@gnu.org>
4803         * Version 2.4.4 released.
4804         =========================
4807         Tag sources with `VER-2-4-4'.
4809         * docs/CHANGES: Updated.
4811         * docs/VERSION.DLL: Update documentation and bump version number to
4812         2.4.4
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/.
4827         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
4829         * builds/unix/configure.raw (version_info): Set to 12:2:6.
4831 2010-11-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
4833         [ftsmooth]: Minor code simplification.
4835         * src/smooth/ftgrays (gray_render_cubic): Do only one comparison
4836         instead of two.
4838 2010-11-26  Johnson Y. Yan  <yinsen_yan@foxitsoftware.com>
4840         [truetype] Better multi-threading support.
4842         * src/truetype/ttinterp.c (TT_Load_Context): Reset glyph zone
4843         references.
4845 2010-11-23  John Tytgat  <John.Tytgat@esko.com>
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).
4854 2010-11-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
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.
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.
4867 2010-11-18  Werner Lemberg  <wl@gnu.org>
4869         [truetype] Fix `loca' handling for inconsistent number of glyphs.
4870         Reported by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>.
4872         * src/truetype/ttpload.c (tt_face_load_loca): While sanitizing,
4873         handle case where `loca' is the last table in the font.
4875 2010-11-18  Werner Lemberg  <wl@gnu.org>
4877         [sfnt] Ignore all errors while loading `OS/2' table.
4878         Suggested by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>.
4880         * src/sfnt/sfobjs.c (sfnt_load_face): Do it.
4882 2010-11-18  Johnson Y. Yan  <yinsen_yan@foxitsoftware.com>
4884         [type1] Fix matrix normalization.
4886         * src/type1/t1load.c (parse_font_matrix): Handle sign of scaling
4887         factor.
4889 2010-11-18  Werner Lemberg  <wl@gnu.org>
4891         [type1] Improve guard against malformed data.
4892         Based on a patch submitted by Johnson Y. Yan
4893         <yinsen_yan@foxitsoftware.com>
4895         * src/type1/t1load.c (read_binary_data): Check `size'.
4897 2010-11-17  Werner Lemberg  <wl@gnu.org>
4899         [sfnt] While tracing, output table checksums also.
4901         * src/sfnt/ttload.c (tt_face_load_font_dir): Do it.
4903 2010-11-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4905         [UVS] Fix `find_variant_selector_charmap', Savannah bug #31545.
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.
4912         * src/base/ftobjs.c (Fix find_variant_selector_charmap):
4913         Returns UVS cmap correctly.
4915 2010-11-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
4917         [ftsmooth] Improve rendering.
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
4926           https://lists.gnu.org/archive/html/freetype-devel/2010-10/msg00055.html
4928         and later mails in this thread.
4930 2010-10-28  Werner Lemberg  <wl@gnu.org>
4932         [ftraster] Minor fixes.
4934         Reported by Tom Bishop <wenlin@wenlin.com>.
4936         * src/raster/ftraster.c (ULong): Remove unused typedef.
4937         (TWorker): Remove unused variable `precision_mask'.
4939 2010-10-28  Werner Lemberg  <wl@gnu.org>
4941         [ftraster] Fix rendering.
4943         Problem reported by Tom Bishop <wenlin@wenlin.com>; see
4944         thread starting with
4946           https://lists.gnu.org/archive/html/freetype/2010-10/msg00049.html
4948         * src/raster/ftraster.c (Line_Up): Replace FMulDiv with SMulDiv
4949         since the involved multiplication exceeds 32 bits.
4951 2010-10-25  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4953         Revert a change of `_idx' type in `FTC_CACHE_LOOKUP_CMP'.
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.
4959 2010-10-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4961         [cache] Change the hash types to FT_PtrDist.
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.
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.
4979         * src/cache/ftccache.h (FTC_NodeRec): The type of the
4980         member `hash' is changed from FT_UInt32 to FT_PtrDist.
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.
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.
5000 2010-10-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5002         [cache] Hide internal macros incompatible with LLP64.
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.
5009         For the history of these macros, see the investigation:
5010         https://lists.gnu.org/archive/html/freetype/2010-10/msg00022.html
5012 2010-10-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5014         Change the type of `FT_MEM_VAL' from FT_ULong to FT_PtrDist.
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.
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.
5026 2010-10-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5028         Replace "%lx" for memory address by "%p", LLP64 platforms.
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.
5035         * src/raster/ftraster.c (New_Profile): Replace "%lx" by "%p".
5036         (End_Profile) Ditto.
5037         * src/truetype/ttinterp.c (Init_Context): Ditto.
5039 2010-10-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
5041         Fix thinko in spline flattening.
5043         FT_MAX_CURVE_DEVIATION is dependent on the value of ONE_PIXEL.
5045         * src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): Remove it and
5046         replace it everywhere with ONE_PIXEL/8.
5048 2010-10-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5050         [raccess] Skip unrequired resource access rules by Darwin VFS.
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                 https://trac.macports.org/ticket/18859
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.
5068 2010-10-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5070         [raccess] Grouping resource access rules based on Darwin VFS.
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.
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.
5092 2010-10-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5094         Prevent to open a FT_Stream for zero-sized file on non-Unix.
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.
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.
5107 2010-10-12  Werner Lemberg  <wl@gnu.org>
5109         [truetype] Fix Savannah bug #31310.
5111         * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Protect against
5112         invalid `runcnt' values.
5114 2010-10-08  Chris Liddell  <chris.liddell@artifex.com>
5116         [sfnt] Fix Savannah bug #31275.
5118         * src/sfnt/ttpost.c: Include FT_INTERNAL_DEBUG_H.
5120 2010-10-06  Werner Lemberg  <wl@gnu.org>
5122         [truetype] Improve error handling of `SHZ' bytecode instruction.
5123         Problem reported by Chris Evans <scarybeasts@gmail.com>.
5125         * src/truetype/ttinterp.c (Ins_SHZ): Check `last_point'.
5127 2010-10-05  Werner Lemberg  <wl@gnu.org>
5129         Fix Savannah bug #31253.
5130         Patch submitted by an anonymous reporter.
5132         * configure: Use `awk' instead of `sed' to manipulate output of `ls
5133         -id'.
5135 2010-10-03  Werner Lemberg  <wl@gnu.org>
5137         * Version 2.4.3 released.
5138         =========================
5141         Tag sources with `VER-2-4-3'.
5143         * docs/CHANGES: Updated.
5145         * docs/VERSION.DLL: Update documentation and bump version number to
5146         2.4.3
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/.
5161         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
5163         * builds/unix/configure.raw (version_info): Set to 12:1:6.
5165 2010-10-03  Werner Lemberg  <wl@gnu.org>
5167         Avoid `configure' issues with symbolic links.
5168         Based on a patch from Alexander Stohr <Alexander.Stohr@gmx.de>.
5170         * configure: Compare directories using `ls -id'.
5171         Check existence of `reference' subdirectory before creating it.
5173 2010-10-02  Werner Lemberg  <wl@gnu.org>
5175         [sfnt] Fix Savannah bug #31088 (sort of).
5177         * src/sfnt/ttload.c (tt_face_load_maxp): Always allocate at least 64
5178         function entries.
5180 2010-10-02  Werner Lemberg  <wl@gnu.org>
5182         [smooth] Fix splitting of cubics for negative values.
5184         Reported by Róbert Márki <gsmiko@gmail.com>; see
5185         https://lists.gnu.org/archive/html/freetype/2010-09/msg00019.html.
5187         * src/smooth/ftgrays.c (gray_render_cubic): Fix thinko.
5189 2010-10-01  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5191         [truetype] Fix Savannah bug #31040.
5193         * src/truetype/ttinterp.c (free_buffer_in_size): Remove.
5194         (TT_RunIns): Updated.
5196 2010-09-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5198         [sfnt] Make error message filling NULL names less verbose.
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.
5203 2010-09-20  Graham Asher  <graham.asher@btinternet.com>
5204             David Bevan  <david.bevan@pb.com>
5206         [smooth] Fix and improve spline flattening.
5208         This fixes the flattening of cubic, S-shaped curves and speeds up
5209         the handling of both the conic and cubic arcs.
5211         See the discussions on the freetype-devel mailing list in late
5212         August and September 2010 for details.
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.
5221 2010-09-19  Werner Lemberg  <wl@gnu.org>
5223         Minor fixes.
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'.
5235 2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5237         [cff] Truncate the element length at the end of the stream.
5238         See Savannah bug #30975.
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.
5246 2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5248         [cff] Ignore CID > 0xFFFFU.
5249         See Savannah bug #30975.
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.
5256 2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5258         [cff] Make trace message in` cff_charset_load' verbose.
5259         See Savannah bug #30975.
5261         * src/cff/cffload.c (cff_charset_load): Report the original `nleft'
5262         and truncated `nleft'.
5264 2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5266         [cff] Correct `max_cid' from CID array length to max CID.
5267         See Savannah bug #30975.
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.
5277 2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5279         [truetype] Sanitize the broken offsets in `loca'.
5280         See Savannah bug #31040.
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.
5288 2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5290         [sfnt] Prevent overrunning in `post' table parser.
5291         See Savannah bug #31040.
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.
5300 2010-09-17  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5302         [truetype] Don't duplicate size->twilight structure to be freed.
5303         See Savannah bug #31040 for detail.
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.
5312 2010-09-15  Werner Lemberg  <wl@gnu.org>
5314         Make bytecode debugging with FontForge work again.
5316         * src/truetype/ttinterp.c (TT_RunIns): Don't call
5317         `free_buffer_in_size' in case of error if a debugger is active.
5319 2010-09-14  Werner Lemberg  <wl@gnu.org>
5321         Improve tracing messages.
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.
5331 2010-09-13  Werner Lemberg  <wl@gnu.org>
5333         Fix minor issues reported by <muktha.narayan@wipro.com>.
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'.
5347 2010-08-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5349         Ignore the environmental setting of LIBTOOL.
5350         Patch is suggested by Adrian Bunk, to prevent unexpected
5351         reflection of environmental LIBTOOL.  See:
5352         https://savannah.nongnu.org/patch/?7290
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).
5360 2010-08-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5362         [truetype] Decrease the trace level catching the interpreter error.
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'.
5368 2010-08-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5370         [truetype] Prevent bytecode reuse after the interpretation error.
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.
5380         This fixes Savannah bug #30798, reported by Robert Święcki.
5382 2010-08-29  Werner Lemberg  <wl@gnu.org>
5384         [ftraster] Pacify compiler.
5386         * src/raster/ftraster.c (ft_black_new) [_STANDALONE_]: `memory' is
5387         not used.
5389 2010-08-29  Werner Lemberg  <wl@gnu.org>
5391         [cff] Allow SIDs >= 65000.
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.
5398         Problem reported by Ivan Ninčić <inincic@pdftron.com>.
5400 2010-08-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5402         Force hinting when the font lacks its familyname.
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:
5409         https://lists.gnu.org/archive/html/freetype-devel/2010-08/msg00021.html
5410         https://lists.freedesktop.org/archives/poppler/2010-August/006310.html
5412         * src/truetype/ttobjs.c (tt_check_trickyness): If a NULL pointer by
5413         nameless font is given, TRUE is returned to enable hinting.
5415 2010-08-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5417         Register yet another tricky TrueType font.
5419         * src/truetype/ttobjs.c (tt_check_trickyness): Add `HuaTianKaiTi?',
5420         a Kaishu typeface paired with `HuaTianSongTi?' by Huatian
5421         Information Industry.
5423 2010-08-17  Teijo Kinnunen  <Teijo.Kinnunen@nuance.com>
5425         [cache] Fix Savannah bug #30788.
5427         * src/cache/ftccache.c (FTC_Cache_Clear): Check `cache->buckets' for
5428         NULL too.
5430 2010-08-10  Werner Lemberg  <wl@gnu.org>
5432         Try to fix Savannah bug #30717 (and probably #30719 too).
5434         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Add another
5435         overflow test for `width' and `height'.
5437 2010-08-06  Werner Lemberg  <wl@gnu.org>
5439         * Version 2.4.2 released.
5440         =========================
5443         Tag sources with `VER-2-4-2'.
5445         * docs/CHANGES: Updated.
5447         * docs/VERSION.DLL: Update documentation and bump version number to
5448         2.4.2
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/.
5463         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
5465         * builds/unix/configure.raw (version_info): Set to 12:0:6.
5467 2010-08-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5469         Fix Savannah bug #30648.
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.
5477 2010-08-06  Yuriy Kaminskiy  <yumkam@mail.ru>
5479         [raster] Fix valgrind warning.
5481         * src/raster/ftraster.c (Decompose_Curve) <default>: Access point[0]
5482         only if we don't hit `limit'.
5484 2010-08-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5486         Fix Savannah bug #30658.
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.
5492 2010-08-06  Yuriy Kaminskiy  <yumkam@mail.ru>
5494         Fix conditional usage of FT_MulFix_i386.
5495         With -ansi flag, gcc does not define `i386', only `__i386__'.
5497         * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in:
5498         s/i386/__i386__/.
5500 2010-08-05  Werner Lemberg  <wl@gnu.org>
5502         [truetype] Fix Savannah bug #30657.
5504         * src/truetype/ttinterp.c (BOUNDSL): New macro.
5505         Change `BOUNDS' to `BOUNDSL' where appropriate.
5507         * src/truetype/ttinterp.h (TT_ExecContextRec): Fix type of
5508         `cvtSize'.
5510 2010-08-05  Werner Lemberg  <wl@gnu.org>
5512         [type42] Fix Savannah bug #30656.
5514         * src/type42/t42parse.c (t42_parse_sfnts): Protect against negative
5515         string_size.
5516         Fix comparison.
5518 2010-08-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5520         [cff] Don't use any values in decoder after parsing error.
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.
5526 2010-08-04  Werner Lemberg  <wl@gnu.org>
5528         Fix Savannah bug #30644.
5530         * src/base/ftstream.c (FT_Stream_EnterFrame): Fix comparison.
5532 2010-08-04  Werner Lemberg  <wl@gnu.org>
5534         `make devel' fails if FT_CONFIG_OPTION_OLD_INTERNALS is set.
5536         * devel/ftoption.h: Synchronize with
5537         include/freetype/config/ftoption.h.
5539 2010-08-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5541         [cff] Improve stack overflow test.
5543         * src/cff/cffgload.c (cff_decoder_parse_charstrings): Check stack
5544         after execution of operations too.
5546 2010-07-18  Werner Lemberg  <wl@gnu.org>
5548         Add reference counters and to FT_Library and FT_Face objects.
5550         * include/freetype/freetype.h (FT_Reference_Face): New function.
5551         * include/freetype/ftmodapi.h (FT_Reference_Library): New function.
5553         * include/freetype/internal/ftobjs.h (FT_Face_InternalRec,
5554         FT_LibraryRec): New field `refcount'.
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'.
5561         * docs/CHANGES: Updated.
5563 2010-07-18  Werner Lemberg  <wl@gnu.org>
5565         * Version 2.4.1 released.
5566         =========================
5569         Tag sources with `VER-2-4-1'.
5571         * docs/CHANGES: Updated.
5573         * docs/VERSION.DLL: Update documentation and bump version number to
5574         2.4.1.
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/.
5589         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
5591         * builds/unix/configure.raw (version_info): Set to 11:1:5.
5593 2010-07-17  Werner Lemberg  <wl@gnu.org>
5595         [cff] Final try to fix `hintmask' and `cntrmask' limit check.
5597         Problem reported by Tobias Wolf <towolf@gmail.com>.
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.
5603 2010-07-12  Werner Lemberg  <wl@gnu.org>
5605         * Version 2.4.0 released.
5606         =========================
5609         Tag sources with `VER-2-4-0'.
5611         * docs/CHANGES: Updated.
5613         * docs/VERSION.DLL: Update documentation and bump version number to
5614         2.4.0.
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/.
5629         * include/freetype/freetype.h (FREETYPE_MINOR): Set to 4.
5630         (FREETYPE_PATCH): Set to 0.
5632         * builds/unix/configure.raw (version_info): Set to 11:0:5.
5634 2010-07-12  Werner Lemberg  <wl@gnu.org>
5636         Remove C++ warnings.
5638         */*: Initialize pointers where necessary to make g++ happy.
5640 2010-07-12  malc  <av1474@comtv.ru>
5641             Richard Henderson  <rth@redhat.com>
5643         Fix type-punning issues with C++.
5645         * include/freetype/internal/ftmemory.h (FT_ASSIGNP) [__cplusplus]:
5646         Emulate a `typeof' operator with an inline template which uses
5647         `static_cast'.
5649 2010-07-11  Werner Lemberg  <wl@gnu.org>
5651         Fix C++ compilation issue.
5653         * src/tools/apinames.c (names_dump) <OUTPUT_WATCOM_LBC>: Fix
5654         type of `dot' variable.
5656 2010-07-10  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
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.
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.
5667 2010-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5669         Use defined macros to set {platform,encoding}_id.
5671         * src/bdf/bdfdrivr.c: Include ttnameid.h and use macros to
5672         set charmap.{platform,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.
5680 2010-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
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.
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.
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.
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.
5702 2010-07-09  Ken Sharp  <ken.sharp@artifex.com>
5704         Make ftraster.c compile in stand-alone mode with MSVC compiler.
5706         * src/raster/ftmisc.h (FT_Int64) [_WIN32, _WIN64]: Fix typedef
5707         since there is no `inttypes.h' for MSVC.
5709 2010-07-08  Werner Lemberg  <wl@gnu.org>
5711         [truetype] Fix Savannah bug #30361.
5713         * src/truetype/ttinterp.c (Ins_IUP): Fix bounds check.
5715 2010-07-06  Werner Lemberg  <wl@gnu.org>
5717         Pacify compiler.
5719         * src/cff/cffload.c (cff_index_get_pointers): Initialize
5720         `new_bytes'.
5722 2010-07-05  Eugene A. Shatokhin  <spectre@ispras.ru>
5724         Fix Savannah bug #27648.
5726         * src/base/ftobjs.c (ft_remove_renderer, FT_Add_Module): Call
5727         `raster_done' only if we have an outline glyph format.
5729 2010-07-05  Werner Lemberg  <wl@gnu.org>
5731         Fix Savannah bug #30030.
5733         * builds/win32/*/freetype.vcproj: Add ftxf86.c.
5735 2010-07-05  Werner Lemberg  <wl@gnu.org>
5737         [cff] Next try to fix `hintmask' and `cntrmask' limit check.
5739         Problem reported by malc <av1474@comtv.ru>.
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.
5745 2010-07-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5747         Restrict the number of the charmaps in a rogue-compatible mode.
5748         Fix for Savannah bug #30059.
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).
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.
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.
5777 2010-07-04  Werner Lemberg  <wl@gnu.org>
5779         TrueType hinting is no longer patented.
5781         * include/freetype/config/ftoption.h, devel/ftoption.h
5782         (TT_CONFIG_OPTION_BYTECODE_INTERPRETER): Define.
5783         (TT_CONFIG_OPTION_UNPATENTED_HINTING): Undefine.
5785         * docs/CHANGES, docs/INSTALL, include/freetype/freetype.h: Updated.
5786         * docs/TRUETYPE, docs/PATENTS: Removed.
5788 2010-07-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5790         Check error value by `FT_CMap_New'.
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/t1objs.c (T1_Face_Init): Ditto.
5796         * src/type42/t42objs.c (T42_Face_Init): Ditto.
5798 2010-07-03  Werner Lemberg  <wl@gnu.org>
5800         Make ftgrays.c compile stand-alone again.
5802         * src/smooth/ftgrays.c [_STANDALONE_]: Include `stddef.h'.
5803         (FT_INT_MAX, FT_PtrDist)[_STANDALONE_]: Define.
5805 2010-07-02  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5807         Additional fix for Savannah bug #30306.
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.
5815 2010-07-01  Werner Lemberg  <wl@gnu.org>
5817         [truetype] Protect against code range underflow.
5819         * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Don't allow
5820         negative IP values.
5822 2010-07-01  Werner Lemberg  <wl@gnu.org>
5824         [truetype] Add rudimentary tracing for bytecode instructions.
5826         * src/truetype/ttinterp.c (opcode_name) [FT_DEBUG_LEVEL_TRACE]: New
5827         array.
5828         (TT_RunIns): Trace opcodes.
5830 2010-06-30  Werner Lemberg  <wl@gnu.org>
5832         [smooth] Fix Savannah bug #30263.
5834         * src/smooth/ftgrays.c (gray_render_span): Use cast to `unsigned
5835         int' to avoid integer overflow.
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.
5841 2010-07-01  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5843         Initial fix for Savannah bug #30306.
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.
5851 2010-07-01  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5853         Additional fix for Savannah bug #30248 and #30249.
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.
5859 2010-06-30  Alexei Podtelezhnikov  <apodtele@gmail.com>
5861         Minor optimizations by avoiding divisions.
5863         * src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning):
5864         Replace divisions with multiplication in comparisons.
5866 2010-06-29  Werner Lemberg  <wl@gnu.org>
5868         Fix minor tracing issues.
5870         * src/cff/cffgload.c, src/truetype/ttgload.c: Adjust tracing levels.
5872 2010-06-27  Werner Lemberg  <wl@gnu.org>
5874         [cff] Really fix `hintmask' and `cntrmask' limit check.
5876         * src/cff/cffgload.c (cff_decoder_parse_charstrings)
5877         <cff_op_hintmask>: Fix thinko and handle tracing also.
5879 2010-06-27  Werner Lemberg  <wl@gnu.org>
5881         Fix valgrind warning.
5883         * src/base/ftoutln.c (FT_Outline_Get_Orientation): Initialize
5884         `result' array.
5886 2010-06-27  Werner Lemberg  <wl@gnu.org>
5888         [cff] Fix memory leak.
5890         * src/cff/cffgload.c (cff_operator_seac): Free charstrings even in
5891         case of errors.
5893 2010-06-27  Werner Lemberg  <wl@gnu.org>
5895         [cff] Protect against invalid `hintmask' and `cntrmask' operators.
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.
5901 2010-06-26  Werner Lemberg  <wl@gnu.org>
5903         Fix PFR change 2010-06-24.
5905         * src/pfr/pfrgload.c (pfr_glyph_load_simple): Really protect against
5906         invalid indices.
5908 2010-06-26  Werner Lemberg  <wl@gnu.org>
5910         Improve PFR tracing messages.
5912         * src/pfr/pfrgload.c (pfr_glyph_load_rec): Emit tracing messages for
5913         simple and compound glyph offsets.
5915 2010-06-26  Werner Lemberg  <wl@gnu.org>
5917         Fix last PFR change.
5919         * src/pfr/pfrobjs.c (pfr_face_init): Fix rejection logic.
5921 2010-06-26  Werner Lemberg  <wl@gnu.org>
5923         [sfnt] Fix Savannah bug #30262.
5925         * src/sfnt/ttload.c (tt_face_load_maxp): Limit `maxComponentDepth'
5926         arbitrarily to 100 to avoid stack exhaustion.
5928 2010-06-26  Werner Lemberg  <wl@gnu.org>
5930         Add some memory checks (mainly for debugging).
5932         * src/base/ftstream.c (FT_Stream_EnterFrame): Exit with error
5933         if the frame size is larger than the stream size.
5935         * src/base/ftsystem.c (ft_ansi_stream_io): Exit with error if
5936         seeking a position larger than the stream size.
5938 2010-06-25  Werner Lemberg  <wl@gnu.org>
5940         [pfr] Fix Savannah bug #30261.
5942         * src/pfr/pfrobjs.c (pfr_face_init): Reject fonts which contain
5943         neither outline nor bitmap glyphs.
5945 2010-06-25  Werner Lemberg  <wl@gnu.org>
5947         [cff] Fix Savannah bug #30254.
5949         * src/cff/cffload.c (cff_index_get_pointers): Do sanity check for
5950         first offset also.
5952 2010-06-25  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5954         Initial fix for Savannah bug #30248 and #30249.
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.
5960 2010-06-24  Werner Lemberg  <wl@gnu.org>
5962         [pcf] Fix Savannah bug #30247.
5964         * src/pcf/pcfread.c (pcf_get_metrics): Disallow (invalid) fonts with
5965         zero metrics.
5967 2010-06-24  Graham Asher  <graham.asher@btinternet.com>
5969         * src/smooth/ftgrays.c (gray_render_cubic): Fix algorithm.
5970         The previous version was too aggressive, as demonstrated in
5971         https://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00020.html.
5973 2010-06-24  Werner Lemberg  <wl@gnu.org>
5975         */*: Use module specific error names where appropriate.
5977 2010-06-24  Werner Lemberg  <wl@gnu.org>
5979         [sfnt] Fix Savannah bug #30236.
5981         * src/sfnt/ttcmap.c (tt_face_build_cmaps): Improve check for pointer
5982         to `cmap_table'.
5984 2010-06-24  Werner Lemberg  <wl@gnu.org>
5986         [pfr] Fix Savannah bug #30235.
5988         * src/pfr/pfrgload.c (pfr_glyph_load_simple): Protect against
5989         invalid indices if there aren't any coordinates for indexing.
5991 2010-06-24  Werner Lemberg  <wl@gnu.org>
5993         [bdf]: Font properties are optional.
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'.
6000 2010-06-23  Werner Lemberg  <wl@gnu.org>
6002         [bdf] Fix Savannah bug #30220.
6004         * include/freetype/fterrdef.h
6005         (BDF_Err_Missing_Fontboundingbox_Field): New error code.
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).
6012 2010-06-21  Werner Lemberg  <wl@gnu.org>
6014         [pfr] Fix Savannah bug #30168.
6016         * src/pfr/pfrgload.c (pfr_glyph_load_compound): Limit the number of
6017         subglyphs to avoid endless recursion.
6019 2010-06-20  Werner Lemberg  <wl@gnu.org>
6021         [psaux] Fix Savannah bug #30145.
6023         * src/psaux/psobjs.c (t1_builder_add_contour): Protect against
6024         `outline == NULL' which might happen in invalid fonts.
6026 2010-06-19  Werner Lemberg  <wl@gnu.org>
6028         [bdf] Fix Savannah bug #30135.
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.
6034 2010-06-15  Werner Lemberg  <wl@gnu.org>
6036         [autofit] Fix Savannah bug #30108.
6038         * src/autofit/afglobal.c (af_face_globals_compute_script_coverage):
6039         Properly mask AF_DIGIT bit in comparison.
6041 2010-06-11  Werner Lemberg  <wl@gnu.org>
6043         [pshinter] Fix Savannah bug #30106.
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.
6050         * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Assure that
6051         `end_point' is not larger than `glyph->num_points'.
6053 2010-06-11  Werner Lemberg  <wl@gnu.org>
6055         [cff]: Improve debugging output.
6057         * src/cff/cffgload.c (cff_decoder_parse_charstrings)
6058         <cff_op_hintmask>: Implement it.
6060 2010-06-10  Graham Asher  <graham.asher@btinternet.com>
6062         ftgrays: Speed up rendering of small cubic splines.
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:
6068           https://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00000.html
6070 2010-06-09  Werner Lemberg  <wl@gnu.org>
6072         [cff] Fix Savannah bug #30082.
6074         * src/cff/cffgload.c (cff_decoder_parse_charstrings)
6075         <cff_op_callothersubr>: Protect against stack underflow.
6077 2010-06-08  Werner Lemberg  <wl@gnu.org>
6079         [cff] Fix Savannah bug #30053.
6081         * src/cff/cffparse.c (cff_parse_real): Handle border case where
6082         `fraction_length' has value 10.
6084 2010-06-07  Werner Lemberg  <wl@gnu.org>
6086         Fix Savannah bug #30052.
6087         This bug has been introduced with commit 2415cbf3.
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.
6092 2010-05-26  Werner Lemberg  <wl@gnu.org>
6094         Remove unused variable.
6095         Found by Graham.
6097         * src/autofit/afhints.c (af_glyph_hints_reload): Remove unused
6098         variable `first' in first block.
6100 2010-05-22  Werner Lemberg  <wl@gnu.org>
6102         Fix various memory problems found by linuxtesting.org.
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'.
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'.
6113 2010-05-22  Werner Lemberg  <wl@gnu.org>
6115         autofit: Remove dead code.
6116         Suggested by Graham.
6118         * src/autofit/afhints.c (af_glyph_hints_compute_inflections):
6119         Removed.
6120         (af_glyph_hints_reload): Remove third argument.
6121         Update all callers.
6123 2010-05-21  Bram Tassyns  <bramt@enfocus.be>
6125         [cff] Fix Savannah bug #27987.
6127         * src/cff/cffobjs.c (remove_subset_prefix): New function.
6128         (cff_face_init): Use it to adjust `cffface->family_name'.
6130 2010-05-20  Werner Lemberg  <wl@gnu.org>
6132         TrueType: Make FreeType ignore maxSizeOfInstructions in `maxp'.
6134         Acroread does the same.
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.
6140         (load_truetype_glyph): Save `loader->byte_len' before recursive
6141         call.
6143         * src/truetype/ttinterp.h, src/truetype/ttinterp.c (Update_Max):
6144         Declare it as FT_LOCAL.
6146 2010-05-18  Hongbo Ni  <hongbo@njstar.com>
6148         Apply Savannah patch #7196.
6150         * src/cff/cffgload.c (cff_slot_load): Prevent crash if CFF subfont
6151         index is out of range.
6153 2010-05-11  Werner Lemberg  <wl@gnu.org>
6155         * docs/formats.txt: Give pointer to PCF documentation.
6156         Information provided by Alan Coopersmith
6157         <alan.coopersmith@oracle.com>.
6159 2010-05-10  Ken Sharp  <ken.sharp@artifex.com>
6161         [psaux] Fix Savannah bug #29846.
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.
6168         This was fixed by simply ignoring the error and carrying on.
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.
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.
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.
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.
6188 2010-04-14  Ken Sharp  <ken.sharp@artifex.com>
6190         [psaux] Fix Savannah bug #29444.
6192         * src/psaux/psobjs.c (t1_builder_start_point): Accept (invalid)
6193         `lineto' immediately after `hsbw', in accordance with Acrobat, GS,
6194         and others.
6196 2010-04-14  Michał Cichoń  <thedmd@artifexmundi.com>
6198         [psaux] Fix Savannah bug #27999.
6200         * src/cache/ftcmanag.c (FTC_Manager_RemoveFaceID): Only remove
6201         selected entry, not all.
6203 2010-04-06  Jonathan Kew  <jfkthame@gmail.com>
6205         [truetype] Add overflow check to `fvar' table.
6207         * src/truetype/ttgxvar.c (TT_Get_MM_Var): Check axis and instance
6208         count.
6210 2010-04-05  Ken Sharp  <ken.sharp@artifex.com>
6212         [raster] Fix Savannah bug #29335.
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.
6218 2010-04-05  Werner Lemberg  <wl@gnu.org>
6220         Add new function `FT_Library_SetLcdFilterWeights'.
6222         This is based on code written by Lifter
6223         <https://unixforum.org/index.php?showuser=11691>.  It fixes
6224         FreeDesktop bug #27386.
6226         * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights): New
6227         function.
6229         * include/freetype/ftlcdfil.h: Updated.
6231         * docs/CHANGES: Updated.
6233 2010-04-01  John Tytgat  <John.Tytgat@esko.com>
6235         [truetype] Fix Savannah bug #29404.
6237         * src/truetype/ttgload.c: Revert change 2752bd1a (check on bit 1
6238         of `head' table of TrueType fonts).
6240 2010-03-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6242         Fix `multi build' for Tytgat's CFF driver improvement.
6244         * src/base/cffload.h (cff_index_get_name): Added.
6246 2010-03-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6248         Remove duplicated inclusion of `FT_OUTLINE_H' in ftobjs.c.
6250         * src/base/ftobjs.c: Remove 2nd inclusion of `FT_OUTLINE_H'.
6252 2010-03-11  Chris Liddell  <chris.liddell@artifex.com>
6254         [raster] Fix Savannah bug #27442.
6256         * src/raster/ftraster.c (ft_black_reset): Fix `buffer_size'.
6258 2010-03-09  Werner Lemberg  <wl@gnu.org>
6260         [cff] Remove unused variable.
6261         Reported by Graham.
6263         * src/cff/cffparse.c (cff_parse_real): Remove `rest'.
6265 2010-03-02  John Tytgat  <John.Tytgat@esko.com>
6267         [cff] Improve CFF string (especially glyphname) lookup performance.
6269         We do this by avoiding memory allocation and file I/O.  This is
6270         Savannah patch #7104.
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.
6280         * src/cff/cffload.c: Don't include PS cmaps service.
6281         (cff_index_get_pointers): Add `pool' parameter which allows inserting
6282         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.
6292         * src/cff/cffload.h: Don't include PS cmaps service.
6293         (cff_index_get_string): Added.
6294         (cff_index_get_sid_string): Updated.
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.
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.
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'.
6314         * src/cff/cffgload.c: Don't include FT_INTERNAL_POSTSCRIPT_HINTS_H.
6315         (cff_decoder_init, cff_decoder_prepare): Updated.
6317 2010-02-27  Werner Lemberg  <wl@gnu.org>
6319         Simplify code.
6320         Suggested by Behdad.
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.
6325 2010-02-26  Behdad Esfahbod  <behdad@behdad.org>
6327         Improve handling of invalid glyph indices in char->index functions.
6329         * src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Use a
6330         loop.
6332 2010-02-18  Chris Liddell  <chris.liddell@artifex.com>
6334         [truetype] Fix Savannah bug #28905.
6336         Initialize phantom points before calling the incremental interface
6337         to update glyph metrics.
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.
6345 ----------------------------------------------------------------------------
6347 Copyright 2010-2018 by
6348 David Turner, Robert Wilhelm, and Werner Lemberg.
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.
6357 Local Variables:
6358 version-control: never
6359 coding: utf-8
6360 End: