Check for SYS/GL during library init. Reason is that
[AROS.git] / workbench / libs / freetype / ChangeLog.23
blob1a23848f88a289204ead9d9c1aafa516006b4c1b
1 2010-02-13  Werner Lemberg  <wl@gnu.org>
3         * Version 2.3.12 released.
4         ==========================
7         Tag sources with `VER-2-3-12'.
9         * docs/CHANGES: Updated.
11         * docs/VERSION.DLL: Update documentation and bump version number to
12         2.3.12.
14         * README, Jamfile (RefDoc),
15         builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
16         builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
17         builds/win32/visualc/freetype.dsp,
18         builds/win32/visualc/freetype.vcproj,
19         builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
20         builds/win32/visualce/freetype.vcproj,
21         builds/win32/visualce/index.html,
22         builds/wince/vc2005-ce/freetype.vcproj,
23         builds/wince/vc2005-ce/index.html,
24         builds/wince/vc2008-ce/freetype.vcproj,
25         builds/wince/vc2008-ce/index.html: s/2.3.11/2.3.12/, s/2311/2312/.
27         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 12.
29         * builds/unix/configure.raw (version_info): Set to 10:0:4.
31 2010-02-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
33         Improve autotool version checking to work with beta releases.
35         * autogen.sh (check_tool_version): Improve the extraction of version
36         number from "tool --version" output.  Some beta releases of
37         autotools have extra strings before version number.
39 2010-02-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
41         Fix overallocating bug in FT_Outline_New_Internal().
43         * src/base/ftoutln.c (FT_Outline_New_Internal): The length of
44         FT_Outline->points[] should be numPoints, not 2 * numPoints.
45         Found by Paul Messmer, see
46         http://lists.gnu.org/archive/html/freetype-devel/2010-02/msg00003.html
48 2010-02-10  Ken Sharp  <ken.sharp@artifex.com>
50         Really fix Savannah bug #28678 (part 2).
52         Since we consider `sbw' for the horizontal direction only, we still have
53         to synthesize vertical metrics if the user wants to use the vertical
54         writing direction.
56         * src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
57         (cid_slot_load_glyph), src/type1/t1gload.c (T1_Load_Glyph):
58         Synthesize vertical metrics (only) if FT_LOAD_VERTICAL_LAYOUT is
59         set.
61 2010-02-10  Ken Sharp  <ken.sharp@artifex.com>
63         Really fix Savannah bug #28678 (part 1).
65         After long discussion, we now consider the character width vector
66         (wx,wy) returned by the `sbw' Type 1 operator as being part of *one*
67         direction only.  For example, if you are using the horizontal
68         writing direction, you get the horizontal and vertical components of
69         the advance width for this direction.  Note that OpenType and CFF fonts
70         don't have such a vertical component; instead, the GPOS table can be
71         used to generate two-dimensional advance widths (but this isn't
72         handled by FreeType).
74         * include/freetype/ftincrem.h (FT_Incremental_MetricsRec): Add
75         `advance_v' field to hold the vertical component of the advance
76         value.
78         * src/truetype/ttgload.c (tt_get_metrics), src/cff/cffgload.c
79         (cff_slot_load), src/type1/t1gload.c
80         (T1_Parse_Glyph_And_Get_Char_String), src/cid/cidgload.c
81         (cid_load_glyph): Use it.
83 2010-02-08  Werner Lemberg  <wl@gnu.org>
85         * devel/ftoption.h [FT_CONFIG_OPTION_PIC]: Define.
87 2010-02-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
89         Prevent NULL pointer dereference passed to FT_Module_Requester.
91         * src/sfnt/sfdriver.c (sfnt_get_interface): Don't use `module'.
92         * src/psnames/psmodule.c (psnames_get_interface): Ditto.
94         * src/cff/cffdrivr.c (cff_get_interface): Check NULL `driver'.
95         * src/truetype/ttdriver.c (tt_get_interface): Ditto.
97 2010-01-29  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
99         Fix memory leaks in previous patch.
101         * src/sfnt/sfobjs.c (sfnt_load_face): Don't overwrite the strings
102         allocated for face->root.family_name and style_name.
104 2010-01-29  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
106         New parameters for FT_Open_Face() to ignore preferred family names.
108         Preferred family names should be used for legacy systems that
109         can hold only a few faces (<= 4) for a family name. Suggested by
110         Andreas Heinrich.
111         http://lists.gnu.org/archive/html/freetype/2010-01/msg00001.html
113         * include/freetype/ftsnames.h (FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
114         FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY): Define.
116         * src/sfnt/sfobjs.c (sfnt_load_face): Check the arguments and
117         ignore preferred family and subfamily names if requested.
119 2010-01-27  Ken Sharp  <ken.sharp@artifex.com>
121         Fix Savannah bug #28678.
123         * src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
124         (cid_load_glyph): Handle vertical metrics correctly.
126         * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Handle
127         vertical metrics correctly.
128         (T1_Load_Glyph): Don't synthesize vertical metrics.
130 2010-01-14  Werner Lemberg  <wl@gnu.org>
132         Make FT_Set_Transform work if no renderer is available.
134         * src/base/ftobjs.c (FT_Load_Glyph): Apply `standard' transformation
135         if no renderer is compiled into the library.
137 2010-01-14  Werner Lemberg  <wl@gnu.org>
139         Fix compilation warning.
141         * src/base/ftbase.h: s/LOCAL_DEF/LOCAL/.
142         * src/base/ftobjc.s: Include ftbase.h conditionally.
144 2010-01-11  Kwang Yul Seo  <skyul@company100.net>
146         Provide inline assembly code for RVCT compiler.
147         This is Savannah patch #7059.
149         * include/freetype/config/ftconfig.h (FT_MULFIX_ASSEMBLER,
150         FT_MulFix_arm) [__CC_ARM || __ARM_CC]: Define.
152 2010-01-08  Ken Sharp  <ken.sharp@artifex.com>
154         Fix Savannah bug #28521.
156         Issue #28226 involved a work-around for a font which used the
157         `setcurrentpoint' operator in an invalid way; this operator is only
158         supposed to be used with the result of OtherSubrs, and the font used
159         it directly.  The supplied patch removed the block of code which
160         checked this usage entirely.
162         This turns out to be a Bad Thing.  If `setcurrentpoint' is being
163         used correctly it should reset the flex flag in the decoder.  If we
164         don't do this then the flag never gets reset and we omit any further
165         contours from the glyph (at least until we close the path or
166         similar).
168         * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
169         <op_setcurrentpoint>: Handle `flex_state' correctly.
171 2010-01-05  Werner Lemberg  <wl@gnu.org>
173         Apply reports from clang static analyzer.
175         * src/lzw/ftlzw.c (ft_lzw_file_init), src/base/ftstroke.c
176         (FT_Stroker_ParseOutline), src/base/ftsynth.c
177         (FT_GlyphSlot_Embolden): Remove dead code.
179         * src/base/ftpatent.c (_tt_check_patents_in_table): Initialize
180         `offset_i' and `length_i'.
182 2010-01-05  Ralph Giles  <giles@ghostscript.com>
184         Enable the incremental font interface by default.
186         Ghostscript requires the incremental font interface for handling
187         some Postscript documents.  It is moving to using FreeType as its
188         primary renderer; supporting this in the default build makes it
189         Ghostscript to be linked against the system FreeType when one is
190         available.
192         * include/freetype/config/ftoption.h (FT_CONFIG_OPTION_INCREMENTAL):
193         Uncomment.
195 2010-01-05  Werner Lemberg  <wl@gnu.org>
197         Fix Savannah bug #28395.
199         * src/truetype/ttdriver.c (Load_Glyph), src/type1/t1gload.c
200         (T1_Loada_Glyph): Don't check `num_glyphs' if incremental interface
201         is used.
203 2010-01-05  Ken Sharp  <ken.sharp@artifex.com>
205         Make Type 1 `seac' operator work with incremental interface.
206         This fixes Savannah bug #28480.
208         * src/psaux/t1decode.c (t1operator_seac): Don't check `glyph_names'
209         if incremental interface is used.
211 2010-01-04  Ken Sharp  <ken.sharp@artifex.com>
213         Make incremental interface work with TrueType fonts.
214         This fixes Savannah bug #28478.
216         * src/truetype/ttgload.c (load_truetype_glyph): Don't check
217         `glyf_offset' if incremental interface is used.
219 2009-12-31  Lars Abrahamsson  <wonko@opera.com>
221         Make compilation with FT_CONFIG_OPTION_PIC work again.
223         * src/base/ftglyph.c (FT_Glyph_To_Bitmap) [FT_CONFIG_OPTION_PIC]:
224         Declare `library' for FT_BITMAP_GLYPH_CLASS_GET.
226         * src/base/ftinit.c (ft_destroy_default_module_classes,
227         ft_create_default_module_classes): Use proper casts (needed for C++
228         compilation).
230         * src/sfnt/ttcmap.c (tt_cmap13_class_rec): Use FT_DEFINE_TT_CMAP.
232 2009-12-22  Marc Kleine-Budde  <mkl@pengutronix.de>
234         Make freetype-config aware of $SYSROOT.
235         This is Savannah patch #7040.
237         * builds/unix/freetype-config.in: Decorate with ${SYSROOT} where
238         appropriate.
240 2009-12-20  Werner Lemberg  <wl@gnu.org>
242         Fix compiler warning.
243         Reported by Sean.
245         * src/base/ftdbgmem.c [!FT_DEBUG_MEMORY]: ANSI C doesn't like empty
246         source files; however, some compilers warn about an unused variable
247         declaration.  This is now replaced with a typedef.
249 2009-12-18  Werner Lemberg  <wl@gnu.org>
251         Fix Savannah bug #28320.
253         There exist corrupt, subsetted fonts (embedded in PDF files) which
254         contain a private dict that ends with an unterminated floating point
255         number (no operator following).  We now ignore this error (as
256         acrobat does).
258         * src/cff/cffparse.c (cff_parser_run): Don't emit a syntax error for
259         unterminated floating point numbers.
261 2009-12-16  Werner Lemberg  <wl@gnu.org>
263         Really fix compiler warnings.
264         Reported by Sean.
266         * src/truetype/ttgxvar.c (GX_PT_POINTS_ARE_WORDS,
267         GX_PT_POINT_RUN_COUNT_MASK): Convert enum values to macros.
269 2009-12-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
271         Improve configure.raw to copy some options from CFLAGS to LDFLAGS.
272         The linker of Mac OS X 10.6 is sensitive to the architecture.  If
273         the architectures are specified explicitly for the C compiler, the
274         linker requires the architecture specifications too.
276         * builds/unix/configure.raw: Replace `-isysroot' option parser by
277         more generic argument parser.
279 2009-12-15  Werner Lemberg  <wl@gnu.org>
281         Fix compiler warnings.
282         Reported by Sean.
284         * src/truetype/ttgxvar.c (ft_var_readpackeddeltas): Fix counter data
285         type.
287 2009-12-14  Ken Sharp  <ken.sharp@artifex.com>
289         Ignore invalid `setcurrentpoint' operations in Type 1 fonts.
290         This fixes Savannah bug #28226.
292         At least two wild PostScript files of unknown provenance contain
293         Type 1 fonts, apparently converted from TrueType fonts in earlier
294         PDF versions of the files, which use the `setcurrentpoint' operator
295         inappropriately.
297         FreeType currently throws an error in this case, but Ghostscript and
298         Adobe Distiller both accept the fonts and ignore the problem.  This
299         commit #ifdefs out the check so PostScript interpreters using
300         FreeType can render these files.
302         The specification says `setcurrentpoint' should only be used to set
303         the point after a `Subr' call, but these fonts use it to set the
304         initial point to (0,0).  Unnecessarily so, as they correctly use an
305         `hsbw' operation which implicitly sets the initial point.
307         * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
308         <op_setcurrentpoint>: Comment out code.
310 2009-12-14  Bram Tassyns  <bramt@enfocus.be>
312         Fix parsing of /CIDFontVersion.
313         This fixes Savannah bug #28287.
315         * src/cid/cidtoken.h: `cid_version' in CID_FaceInfoRec (in
316         t1tables.h) is of type FT_Fixed.
318 2009-12-14  Werner Lemberg  <wl@gnu.org>
320         Trace glyph index in CID module.
321         Suggested in Savannah patch #7023.
323         * src/cid/cidgload.c (cid_load_glyph): Add tracing message.
325 2009-12-03  Werner Lemberg  <wl@gnu.org>
327         Fix compiler warnings.
329         * src/truetype/ttgload.c (tt_get_metrics): Put `Exit' label into the
330         proper preprocessor conditional.
331         * src/pfr/pfrobjs.c (pfr_slot_load): Pacify gcc.
333 2009-11-25  John Tytgat  <John.Tytgat@esko.com>
335         Better handling of start of `eexec' section.
336         This fixes Savannah bug #28090.
338         * src/type1/t1parse.c (T1_Get_Private_Dict): Skip all whitespace
339         characters before start of `eexec' section.
341 2009-11-20  Werner Lemberg  <wl@gnu.org>
343         Fix Savannah bug #27742.
345         * src/base/ftstroke.c (ft_stroker_outside): Avoid silent division by
346         zero, using a threshold for `theta'.
348 2009-11-20  Werner Lemberg  <wl@gnu.org>
350         Fix Savannah bug #28036.
352         * src/type1/t1afm.c (t1_get_index): Fix comparison.
354 2009-11-16  Werner Lemberg  <wl@gnu.org>
356         Fix compiler warnings.
357         Reported by Kevin Blenkinsopp <arqon@promode.org>.
359         * src/sfnt/ttload.c (check_table_dir): Use proper data type.
361 2009-11-15  Werner Lemberg  <wl@gnu.org>
363         Really fix FreeDesktop bug #21197.
364         This also fixes Savannah bug #28021.
366         * src/autofit/aflatin.c (af_latin_metrics_check_digits),
367         src/autofit/aflatin2.c (af_latin2_metrics_check_digits): Fix loop.
369 2009-11-15  Werner Lemberg  <wl@gnu.org>
371         Add tracing messages for advance values.
373         * src/base/ftobjs.c (FT_Load_Glyph), src/truetype/ttgload.c
374         (TT_Get_HMetrics, TT_Get_VMetrics): Do it.
376 2009-11-08  Werner Lemberg  <wl@gnu.org>
378         Fix compiler warning.
379         Reported by Jeremy Manson <jeremy.manson@gmail.com>.
381         * src/truetype/ttgload.c (load_truetype_glyph): Initialize `error'.
383 2009-11-04  Werner Lemberg  <wl@gnu.org>
385         Remove compiler warning.
386         Reported by Sean McBride <sean@rogue-research.com>.
388         * src/tools/apinames.c (read_header_file)<STATE_TYPE>: Use a cast to
389         `int', as specified in the printf(3) man page.
391 2009-11-04  Werner Lemberg  <wl@gnu.org>
393         Fix Savannah bug #27921.
395         * src/cff/cffobjs.c (cff_face_init), src/cid/cidobjs.c
396         (cid_face_init), src/type1/t1afm.c (T1_Read_Metrics),
397         src/type1/t1objs.c (T1_Face_Init): Don't use unsigned constant
398         values for rounding if the argument can be negative.
400 2009-11-03  Bram Tassyns  <bramt@enfocus.be>
402         Add basic support for Type1 charstrings in CFF.
403         This fixes Savannah bug #27922.
405         * src/cff/cffgload.c (CFF_Operator, cff_argument_counts): Handle
406         `seac', `sbw', and `setcurrentpoint' opcodes.
407         (cff_compute_bias): Add parameter to indicate the charstring type.
408         Update all callers.
409         (cff_operator_seac): Add parameter for side bearing.
410         (cff_decoder_parse_charstrings): Updated for more Type1 support.
412 2009-11-03  Werner Lemberg  <wl@gnu.org>
414         Return correct `linearHoriAdvance' value for embedded TT bitmaps too.
415         Reported by Jeremy Manson <jeremy.manson@gmail.com>.
417         src/truetype/ttgload.c (load_truetype_glyph): Add parameter to
418         quickly load the glyph header only.
419         Update all callers.
420         (tt_loader_init): Add parameter to quickly load the `glyf' table
421         only.
422         Update all callers.
423         (TT_Load_Glyph): Compute linear advance values for embedded bitmap
424         glyphs too.
426 2009-11-03  Werner Lemberg  <wl@gnu.org>
428         Improve code readability.
430         * src/ttgload.c (load_truetype_glyph): Move metrics calculation
431         to...
432         (tt_get_metrics): This new function.
434 2009-10-26  Bram Tassyns  <bramt@enfocus.be>
436         Fix Savannah bug #27811.
438         * src/truetype/ttxgvar.c (ft_var_readpackeddeltas): Fix
439         signed/unsigned mismatch.
441 2009-10-19  Ning Dong  <flintning@163.com>
443         Fix handling of `get' and `put' CFF instructions.
445         * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_get,
446         cff_op_put>: Appendix B of Adobe Technote #5177 limits the number of
447         elements for the `get' and `put' operators to 32.
448         * src/cff/cffgload.h (CFF_MAX_TRANS_ELEMENTS): Define.
449         (CFF_Decoder): Use it for `buildchar' and remove `len_buildchar'.
451 2009-10-18  Werner Lemberg  <wl@gnu.org>
453         Fix handling of `dup' CFF instruction.
454         Problem and solution reported by Ning Dong <flintning@163.com>.
456         * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_dup>:
457         Increase `args' by 2, not 1.
459 2009-10-10  Werner Lemberg  <wl@gnu.org>
461         * Version 2.3.11 released.
462         ==========================
465         Tag sources with `VER-2-3-11'.
467         * docs/VERSION.DLL: Update documentation and bump version number to
468         2.3.11.
470         * README, Jamfile (RefDoc), builds/win32/visualc/index.html,
471         builds/win32/visualc/freetype.dsp,
472         builds/win32/visualc/freetype.vcproj,
473         builds/win32/visualce/index.html,
474         builds/win32/visualce/freetype.dsp,
475         builds/win32/visualce/freetype.vcproj: s/2.3.10/2.3.11/, s/2310/2311/.
477         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 11.
479         * builds/unix/configure.raw (version_info): Set to 9:22:3.
481 2009-10-10  Werner Lemberg  <wl@gnu.org>
483         * docs/CHANGES, docs/release: Updated.
485 2009-10-10  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
487         * src/pcf/pcfread.c (pcf_get_properties): Fix a bug in the nprops
488         truncation.  Reported by Martin von Gagern and Peter Volkov.
489         https://bugs.gentoo.org/288357 and https://bugs.gentoo.org/288256
491 2009-10-06  Werner Lemberg  <wl@gnu.org>
493         * Version 2.3.10 released.
494         ==========================
497         Tag sources with `VER-2-3-10'.
499         * builds/toplevel.mk (major, minor, patch): Fix regexp to allow more
500         than a single digit.
501         (dist): We now use git.
503         * docs/VERSION.DLL: Update documentation and bump version number to
504         2.3.10.
506         * README, Jamfile (RefDoc), builds/win32/visualc/index.html,
507         builds/win32/visualc/freetype.dsp,
508         builds/win32/visualc/freetype.vcproj,
509         builds/win32/visualce/index.html,
510         builds/win32/visualce/freetype.dsp,
511         builds/win32/visualce/freetype.vcproj: s/2.3.9/2.3.10/, s/239/2310/.
513         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 10.
515         * builds/unix/configure.raw (version_info): Set to 9:21:3.
517 2009-10-06  Werner Lemberg  <wl@gnu.org>
519         Fix `make multi'.
521         * src/cache/ftccache.c, src/cache/ftcsbits.c (FT_COMPONENT): Define.
523         * src/sfnt/sfdriver.c: Include FT_INTERNAL_DEBUG_H.
525 2009-09-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
527         [cache] Fix Savannah bug #27441, clean up Redhat bugzilla #513582.
528         Tricky casts in FTC_{CACHE,GCACHE,MRULIST}_LOOKUP_CMP() are removed.
529         Now these functions should be called with FTC_Node or FTC_MruNode
530         variable, and the caller should cast them to appropriate pointers to
531         concrete data.  These tricky casts can GCC-4.4 optimizer (-O2)
532         confused and the crashing binaries are generated.
534         * src/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): Drop tricky cast.
535         Now the 4th argument `node' of this function should be typed as
536         FTC_MruNode.
538         * src/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP): For inline
539         implementation, new temporal variable FTC_MruNode `_mrunode' to take
540         the pointer from FTC_MRULIST_LOOKUP_CMP().  For non-inline
541         implementation, tricky cast is dropped.
543         * src/cache/ftcmanag.c (FTC_SIZE_NODE): New macro casting
544         to FTC_SizeNode.
545         (FTC_Manager_LookupSize): Replace FTC_SizeNode `node' by FTC_MruNode
546         `mrunode', and FTC_SIZE_NODE() is inserted.
547         (FTC_FACE_NODE): New macro casting to FTC_FaceNode.
548         (FTC_Manager_LookupFace) Replace FTC_FaceNode `node' by FTC_MruNode
549         `mrunode', and FTC_FACE_NODE() is inserted.
551         * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Change the type of
552         `node' from FTC_INode to FTC_Node.  Extra casting macro FTC_NODE()
553         is dropped.
554         (FTC_ImageCache_LookupScaler): Ditto.
555         (FTC_SBitCache_Lookup): Change the type of `node' from FTC_SNode to
556         FTC_Node.  Extra casting macro FTC_NODE() is dropped.  FTC_SNODE()
557         is inserted.
558         (FTC_SBitCache_LookupScaler): Ditto.
560         * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Change the type of
561         `node' from FTC_CMapNode to FTC_Node.  Extra casting macro
562         FTC_NODE() is dropped, FTC_CMAP_NODE() is inserted.
564 2009-09-25  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
566         [cache, psaux, type1] Fix for multi build.
567         In multi build, some cpp functions are left as unresolved symbols.
569         * src/cache/ftcbasic.c: Include FT_INTERNAL_DEBUG_H for FT_TRACE1().
571         * src/psaux/t1decode.c: Include FT_INTERNAL_CALC_H for
572         FIXED_TO_INT().
573         * src/type1/t1gload.c: Ditto.
574         * src/type1/t1objs.c: Ditto.
576 2009-09-25  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
578         [autofit] Fix for multi build.
580         * src/autofit/afmodule.h: Include FT_INTERNAL_OBJECTS_H to use
581         FT_DECLARE_MODULE() macro in multi build.
583         * src/autofit/aflatin.c: Include <ft2build.h> to handle
584         FT_ADVANCES_H correctly in multi build.
586 2009-09-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
588         [cache] Check the face filled by FTC_Manager_LookupFace().
590         * src/cache/ftcbasic.c (ftc_basic_family_get_count): Return
591         immediately if FTC_Manager_LookupFace() fills face by NULL.  Such
592         case can occur when the code is optimized by GCC-4.2.x.
594 2009-09-23  Werner Lemberg  <wl@gnu.org>
596         * docs/CHANGES: Updated.
598 2009-09-12  Werner Lemberg  <wl@gnu.org>
600         [raster] Fix 5-levels grayscale output.
601         This was broken since version 2.3.0.
603         * src/raster/ftraster.c (count_table): Use pre-2.3.0 values (which
604         were then computed dynamically).
605         (Vertical_Gray_Sweep_Step): Updated.
607         (ft_black_render): Initialize `worker->gray_lines' (problem found by
608         valgrind).
610         (FT_RASTER_OPTION_ANTI_ALIASING, DEBUG_RASTER): Dont' #undef, just
611         comment out.
613 2009-09-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
615         Improve configure.raw for cross build.
617         * builds/unix/configure.raw: Remove temporal files created by the
618         suffix checking for CC_BUILD.  Set XX_ANSIFLAGS and XX_CFLAGS when
619         cross compiler is GCC.  AC_PROG_CC checks whether the cross compiler
620         is GCC, its result is stored in GCC.
622 2009-09-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
624         [BDF] Modify hash API to take size_t value instead of void *.
626         The hash API in BDF driver is designed to be generic, it takes
627         void * typed data.  But BDF driver always gives an unsigned long
628         integer (the index to a property).  To reduce non-essential
629         casts from unsigned long to void* and from void* to unsigned
630         long, the hash API is changed to take size_t integer.
631         The issue of incompatible cast between unsigned long and void*
632         on LLP64 platform is reported by NightStrike from MinGW-Win64
633         project.  See
634         http://lists.gnu.org/archive/html/freetype/2009-09/msg00000.html
636         * src/bdf/bdf.h: The type of hashnode->data is changed from
637         void* to size_t.
639         * src/bdf/bdflib.c (hash_insert): Get size_t data, instead of
640         void* data.
641         (bdf_create_property): Get the name length of new property by
642         size_t variable, with a cut-off at FT_ULONG_MAX.
643         (_bdf_set_default_spacing): Get the name length of the face by
644         size_t variable, with a cut-off at 256.
645         (bdf_get_property): Get the property id by size_t variable to
646         reduce the casts between 32-bit prop ID & hashnode->data during
647         simple copying.
648         (_bdf_add_property): Ditto.
649         (_bdf_parse_start): Calculate the index to the property array
650         by size_t variable.
651         (bdf_get_font_property): Drop a cast to unsigned long.
653 2009-09-10  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
655         [Win64] Improve the computation of random seed from stack address.
657         On LLP64 platform, the conversion from pointer to FT_Fixed need
658         to drop higher 32-bit.  Explict casts are required. Reported by
659         NightStrike from MinGW-w64 project.  See
660         http://lists.gnu.org/archive/html/freetype/2009-09/msg00000.html
662         * src/cff/cffgload.c: Convert the pointers to FT_Fixed explicitly.
664         * src/psaux/t1decode.c: Ditto.
667 2009-09-03  Werner Lemberg  <wl@gnu.org>
669         [raster] Improvements for stand-alone mode.
671         * src/raster/rules.mk: Don't handle ftmisc.h.  It is needed for
672         stand-alone mode only.
674         * src/raster/ftmisc.h (FT_MemoryRec , FT_Alloc_Func, FT_Free_Func,
675         FT_Realloc_Func): Copy declarations from ftsystem.h.
677 2009-09-02  Bram Tassyns  <bramt@enfocus.be>
679         Improve vertical metrics calculation (Savannah bug #27364).
681         The calculation of `vertBearingX' is not defined in the OTF font
682         spec so FreeType does a `best effort' attempt.  However, this value
683         is defined in the PDF and PostScript specs, and that algorithm is
684         better than the one FreeType currently uses:
686           FreeType: Use the middle of the bounding box as the X coordinate
687                     of the vertical origin.
689           Adobe PDF spec: Use the middle of the horizontal advance vector as
690                           the X coordinate of the vertical origin.
692         FreeType's algorithm goes wrong if you have a really small glyph
693         (like the full-width, circle-like dot at the end of the sentence, as
694         used in CJK scripts) with large bearings.  With the FreeType
695         algorithm this dot gets centered on the baseline; with the PDF
696         algorithm it gets the correct location (in the top right).  Note
697         that this is a serious issue, it's like printing the dot at the end
698         of a Roman sentence at the center of the textline instead of on the
699         baseline like it should. So i believe the PDF spec's algorithm
700         should be used in FreeType as well.
702         The `vertBearingY' value for such small glyphs is also very strange
703         if no `vmtx' information is present, since the height of the bbox is
704         not representable for the height of the glyph visually (the
705         whitespace up to the baseline is part of the glyph).  The fix also
706         includes some code for a better estimate of `vertBearingY'.
708         * src/base/ftobjs.c (ft_synthesize_vertical_metrics): `vertBearingX'
709         is now calculated as described by the Adobe PDF Spec.  Estimate for
710         `vertBearingY' now works better for small glyphs completely above or
711         below the baseline into account.
713         * src/cff/cffgload.c (cff_slot_load): `vertBearingX' is now
714         calculated as described by the Adobe PDF Spec.  Vertical metrics
715         information was always ignored when FT_CONFIG_OPTION_OLD_INTERNALS
716         was not defined.
718         * src/truetype/ttgload.c (compute_glyph_metrics): `vertBearingX' is
719         now calculated as described by the Adobe PDF Spec.
721 2009-09-01  John Tytgat  <John.Tytgat@esko.com>
723         Fix custom cmap for empty Type 1 font (Savannah bug #27294).
725         * include/freetype/internal/t1types.h (T1_EncodingRecRec_): Update
726         comment to reflect revised code_last meaning.
727         * src/type1/t1load.c (T1_Open_Face), src/type42/t42objs.c
728         (T42_Open_Face): Assign max_char as highest character code + 1 and
729         use this for T1_EncodingRecRec_::code_last.
730         * src/psaux/t1cmap.c (t1_cmap_custom_init): Follow revised
731         T1_EncodingRecRec_::code_last meaning.
733 2009-08-25  Werner Lemberg  <wl@gnu.org>
735         Fix rendering of horizontally compressed CFFs.
736         Bug reported by Ivan Nincic <inincic@pdftron.com>.
738         * src/cff/cffgload.c (cff_slot_load): Thinko: Check `xx' element of
739         `font_matrix' also.
741         * docs/CHANGES: Updated.
743 2009-08-03  suyu0925@gmail.com
745         Don't call `ft_fseek' every time when executing `ft_fread'.
747         * src/base/ftstream.c (FT_Stream_Seek), src/base/ftsystem.c
748         (ft_ansi_stream_io): Implement it.
750 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
752         sfnt: Cast a charcode to 32-bit in cmap format 14 parser.
753         
754         * src/sfnt/ttcmap.c (tt_cmap14_char_var_index,
755         tt_cmap14_char_var_isdefault, tt_cmap14_char_variants,
756         tt_cmap14_variant_chars): Correct mismatches from
757         FT_CMap_CharVarIndexFunc prototype, FT_ULong arguments
758         are replaced by FT_UInt32 arguments.
760 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
762         sfnt: Cast a charcode to 32-bit in cmap format 12 parser.
764         * src/sfnt/ttcmap.c (tt_cmap12_char_next):
765         Insert explicit cast from FT_UFast to FT_UInt32
766         for return value.
768 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
770         psaux: Fix a few casts to FT_Int32 value.
772         * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
773         Fix a few casts setting `value' from FT_Long to FT_Int32,
774         because `value' is typed as FT_Int32 since 2009-06-22.
776 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
778         sfnt: Fix a data type mismatching with its source.
780         * src/sfnt/ttcmap.c (tt_cmap13_char_next): Fix the
781         type of `gindex' from FT_ULong to FT_UInt because
782         it is set by FT_UInt tt_cmap13_char_map_binary() or
783         TT_CMap13->cur_gindex.
785 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
787         sfnt: Extend a few local variables to load 32-bit values.
789         * src/sfnt/ttkern.c (tt_face_load_kern): Extend `count'
790         and `kern' to load 32-bit values.
792 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
794         pfr: Extend `num_aux' to take 32-bit value.
796         * src/pfr/pfrload.c (pfr_phy_font_load): Extend
797         `num_aux' to load 32-bit value.
799 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
801         pcf: Truncate FT_ULong `nprops' to fit to int PCF_Face->nprops.
803         * src/pcf/pcfread.c (pcf_get_properties): Load `nprops'
804         as FT_ULong value from PCF file, but truncate it as
805         int to fit PCF_Face->nprops.  The number of truncated
806         properties is shown in the trace message.
808 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
810         gxvalid: Extend a few local variables to reduce the casts.
812         * src/gxvalid/gxvmorx.c (gxv_morx_subtables_validate):
813         Extend `type' and `rest' to take FT_ULong values.
815 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
817         gxvalid: Extend `settingTable' to take 32-bit offset.
819         * src/gxvalid/gxvfeat.c (gxv_feat_name_validate):
820         Extend `settingTable' to take 32-bit offset.
822 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
824         autofit: Cast FT_Long glyph_count to compare with FT_UInt GID.
826         * src/autofit/afglobal.c (af_face_globals_is_digit,
827         af_face_globals_compute_script_coverage): Cast FT_Long
828         globals->glyph_count to FT_ULong, to compare with FT_UInt
829         gindex.
831 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
833         smooth: Exclude 16-bit system in invalid pitch/height check.
835         * src/smooth/ftsmooth.c (ft_smooth_render_generic):
836         pitch and height are typed as FT_UInt but checked to fit
837         16-bit range, to avoid the overflows.  On 16-bit system,
838         this checking inserts a conditional that never occurs.
840 2009-07-03  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
842         cff: Type large constants > 0x7FFF as long for 16-bit systems.
844         * src/cff/cffload.c (cff_charset_load): Type large
845         constants > 0x7FFF as long, because normal constants
846         are typed signed integer that is less than 0x8000 on
847         16-bit systems.
849 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
851         base: Remove an unused variable.
853         * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Remove an
854         unused variable `library'.  glyph->library is used.
856 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
858         cache: Check higher bits in flags for non ILP32 systems.
860         4 public functions ought to take FT_ULong flags, but take
861         FT_UInt flags. To keep binary compatibility, we drop higher
862         bits on non ILP32 platforms,
863                 ILP64 systems: No drop occurs.
864                 LP64 systems: Higher bits are not used.
865                 16-bit systems: Drop can occur.
866         See
867         http://lists.gnu.org/archive/html/freetype-devel/2008-12/msg00065.html
868         These functions will be refined to take FT_ULong flags in
869         next bump with incompatible API change.
871         * src/cache/ftcbasic.c (FTC_ImageCache_Lookup):
872         Check `flags' in `type', the 2nd argument.
873         (FTC_SBitCache_Lookup): Ditto.
874         (FTC_ImageCache_LookupScaler): Check `load_flags',
875         the 3rd argument.
876         (FTC_SBitCache_LookupScaler): Ditto.
878 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
880         sfnt: Ignore invalid GIDs in glyph name lookup.
882         * include/freetype/internal/fttrace.h:
883         New trace module for sfdriver.c is added.
885         * src/sfnt/sfdriver.c (sfnt_get_name_index):
886         Restrict glyph name lookup to FT_UInt GID.
887         Genuine TrueType can hold 16-bit glyphs.
889 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
891         pcf: Fix a comparison between FT_Long and FT_ULong.
893         * src/pcf/pcfread.c (pcf_get_bitmaps): Return an error
894         if PCF_Face->nemetrics is negative.
896 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
898         gxvalid: Guarantee `nFeatureFlags' size up to 32-bit.
900         * src/gxvalid/gxvmort.c (gxv_mort_featurearray_validate):
901         Extend the 3rd argument `nFeatureFlags' to FT_ULong.
902         * src/gxvalid/gxvmort.h: Ditto.
904 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
906         sfnt: Insert explicit cast for LP64 system.
908         * src/sfnt/ttkern.c (tt_face_load_kern): Insert
909         cast from unsigned long to FT_UInt32.
911 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
913         gxvalid: Guarantee `just' table size upto 32-bit.
915         * src/gxvalid/gxvjust.c (gxv_just_validate):
916         The type of `offset' is changed from FT_UInt to
917         FT_Offset, for 16-bit platforms.
919 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
921         gxvalid: Guarantee `trak' table size upto 32-bit.
923         * src/gxvalid/gxvtrak.c (gxv_trak_validate):
924         The type of `offset' is changed from FT_UInt to
925         FT_Offset, for 16-bit platforms.
927 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
929         type1: Fix a data type mismatching with its source.
931         * include/freetype/internal/t1types.h: The type of
932         T1_Face->buildchar is matched with T1_Decorder->top.
934 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
936         pfr: Fix a data type mismatching with its source.
938         * src/pfr/pfrtypes.h: The type of PFR_KernItem->offset
939         is extended from FT_UInt32 to FT_Offset, because it is
940         calculated with the pointer difference, in
941         pfr_extra_item_load_kerning_pairs().
943 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
945         pfr: Fix a data type mismatching with its source.
947         * src/pfr/pfrtypes.h: The type of PFR_PhysFont->chars_offset
948         is extended from FT_UInt32 to FT_Offset, because it is
949         calculated with the pointer difference in pfr_phy_font_load().
951 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
953         pfr: Fix a data type mismatching with its source.
955         * src/pfr/pfrtypes.h: The type of PFR_PhyFont->bct_offset
956         is extended from FT_UInt32 to FT_Long, because it is
957         loaded by FT_STREAM_POS() in pfr_phy_font_load().
959 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
961         smooth: Improve the format in debug message.
963         * src/smooth/ftgrays.c (gray_dump_cells): Improve the
964         format specifications to dump variables.
966 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
968         sfnt: Fix a data type mismatching with its source.
970         * src/sfnt/sfobjs.c (sfnt_load_face): The type of
971         local `flags' is matched with FT_Face->face_flags.
973 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
975         psaux: Fix a data type mismatching with its source.
977         * include/freetype/internal/psaux.h: The type of
978         T1_DecorderRec.buildchar is matched with
979         T1_DecorderRec.top.
981 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
983         truetype: Extend TrueType GX packed deltas to FT_Offset.
985         * src/truetype/ttgxvar.c (ft_var_readpackeddeltas):
986         The type of 2nd argument `delta_cnt' is changed from
987         FT_Int to FT_Offset, because its source can be cvt
988         table size calculated from stream position.
990 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
992         truetype: Extend mmvar_len to hold size_t values.
994         * src/truetype/ttgxvar.h: The type of
995         GX_BlendRec.mmvar_len is changed from FT_Int to
996         FT_Offset, because TT_Get_MM_Var() calculates it
997         by sizeof() results.
999 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1001         truetype: Check invalid function number in IDEF instruction.
1003         * src/truetype/ttinterp.c (Ins_IDEF): Check
1004         if the operand fits to 8-bit opcode limitation.
1006 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1008         truetype: Check invalid function number in FDEF instruction.
1010         * src/truetype/ttinterp.c (Ins_FDEF): Check
1011         if the operand fits 16-bit function number.
1013 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1015         truetype: Truncate the deltas of composite glyph at 16-bit values.
1017         * src/truetype/ttgload.c (load_truetype_glyph):
1018         Insert cast from FT_Long (deltas[i].{x,y}) to
1019         FT_Int16 in the summation of deltas[] for composite
1020         glyphs.  Because deltas[i] is typed as FT_Pos,
1021         its component x, y are typed as FT_Long, but
1022         their sources are always FT_Int16 when they are
1023         loaded by ft_var_readpackeddeltas().  However,
1024         the limitation about the summed deltas is unclear.
1026 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1028         truetype: Truncate the instructions upto 16-bit per a glyph.
1030         * src/truetype/ttgload.c (TT_Hint_Glyph): Truncate
1031         the instructions upto 16-bit length per a glyph.
1033 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1035         truetype: Cast the numerical operands to 32-bit for LP64 systems.
1037         * src/truetype/ttinterp.c (Ins_SPHIX, INS_MIAP,
1038         Ins_MIRP): Insert cast from long (args[], the
1039         operands passed to TrueType operator) to FT_Int32
1040         (the argument of TT_MulFix14()).
1042 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1044         truetype: Cast the project vector to 32-bit for LP64 system.
1046         * src/truetype/ttinterp.c (Project, DualProject):
1047         Insert casts from FT_Pos (the arguments `dx', `dy')
1048         to FT_UInt32 (the argument to TT_DotFix14()).
1050 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1052         truetype: Cast the scaling params to 32-bit for LP64 system.
1054         * src/truetype/ttgload.c (TT_Process_Composite_Component):
1055         Insert casts from long (return value of FT_MulFix()) to
1056         FT_Int32 (the argument to FT_SqrtFixed()).
1058 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1060         sfnt: Cast a character code to FT_UInt32 for LP64 system.
1062         * src/sfnt/ttcmap.c (tt_cmap14_char_map_nondef_binary,
1063         tt_cmap14_variants, tt_cmap14_char_variants,
1064         tt_cmap14_def_char_count, tt_cmap14_get_def_chars,
1065         tt_cmap14_get_nondef_chars, tt_cmap14_variant_chars)
1066         Insert casts when FT_UInt32 variable is loaded by
1067         TT_NEXT_{UINT24|ULONG}.  Because most of them are
1068         compared with FT_UInt32 values in public API, replacing
1069         FT_UFast is not recommended.
1071 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1073         sfnt: Cast a character code to FT_UInt32 for LP64 system.
1075         * src/sfnt/ttcmap.c (tt_cmap4_init, tt_cmap4_next):
1076         Insert the casts from unsigned long constant to
1077         FT_UInt32.
1079 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1081         sfnt: Extend TT_BDF->strings_size to FT_ULong for huge BDF.
1083         * include/freetype/internal/tttypes.h: The type
1084         of TT_BDF->string_size is extended from FT_UInt32
1085         to FT_ULong, because BDF specification does not
1086         restrict the length of string.
1087         * src/sfnt/ttbdf.c: The scratch variable `strings'
1088         to load TT_BDF->string_size is matched with
1089         TT_BDF->string_size.
1091 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1093         psaux: Handle the string length by FT_Offset variables.
1095         * src/psaux/afmparse.c (afm_parser_next_key,
1096         afm_tokenize, afm_parse_track_kern,
1097         afm_parse_kern_pairs, afm_parse_kern_data,
1098         afm_parser_skip_section, afm_parser_parse):
1099         The length of key is handled by FT_Offset,
1100         instead of FT_UInt.  Although the length of
1101         PostScript strings or name object is 16-bit,
1102         AFM_STREAM_KEY_LEN() calculates the length
1103         from the pointer difference.
1105         * src/psaux/afmparse.h (afm_parser_next_key):
1106         Ditto.
1108 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1110         pcf: Fix some data types mismatching with their sources.
1112         * src/pcf/pcfread.c (pcf_get_bitmaps): The types
1113         of `nbitmaps', `i', `sizebitmaps' are matched with
1114         the type of area FT_Bitmap.pitch * FT_Bitmap.rows.
1116 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1118         pcf: Handle the string length by size_t variables.
1120         * src/pcf/pcfread.c (pcf_interpret_style): The types
1121         of nn, len, lengths[4] are changed to size_t, because
1122         they are loaded by (or compared with) ft_strlen().
1124         * src/pcf/pcfutil.c (BitOrderInvert, TwoByteSwap,
1125         FourByteSwap): The type of the 2nd argument `nbytes'
1126         is changed to size_t, for similarity with ANSI C
1127         string functions.
1129         * src/pcf/pcfdrivr.c (PCF_Glyph_Load): The type of
1130         `bytes' is changed to FT_Offset, because it is passed
1131         to FT_ALLOC(), via ft_glyphslot_alloc_bitmap().  At
1132         least, using unsigned type is better.
1134 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1136         pcf: Fix some data types mismatching with their sources.
1138         * src/pcf/pcfread.c (pcf_seek_to_table_type,
1139         pcf_has_table_type): The type of 3rd argument
1140         `ntables' is matched with PCF_Toc->count.
1142 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1144         otvalid: Truncate the glyph index to 16-bit.
1146         * src/otvalid/otvalid.c (otv_validate): Checks
1147         face->num_glyphs does not exceed 16-bit limit,
1148         pass FT_UInt num_glyphs to backend functions
1149         otv_{GPOS|GSUB|GDEF|JSTF|MATH}_validate().
1151 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1153         cache: Insert explict casts for LP64 systems.
1155         * src/cache/ftcbasic.c (FTC_ImageCache_Lookup,
1156         FTC_SBitCache_Lookup): The type of FTC_ImageType->width
1157         is FT_Int, so the cast to unsigned larger type FT_ULong
1158         is introduced for the comparisons with 0x10000L for
1159         LP64 platform.
1161 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1163         cache: Fix some data types mismatching with their sources.
1165         * src/cache/ftccache.h: The type of return value
1166         by FTC_Node_WeightFunc function is changed to
1167         FT_Offset.  The type of FTC_CacheClass->cache_size
1168         is changed to FT_Offset, too.
1170         * src/cache/ftccback.h (ft_inode_weight,
1171         ftc_snode_weight): Ditto.
1173         * src/cache/ftccmap.c (ftc_cmap_node_weight): Ditto.
1175         * src/cache/ftcimage.c (ftc_inode_weight,
1176         FTC_INode_Weight): Ditto.
1178         * src/cache/ftcsbits.c (ftc_snode_weight,
1179         FTC_SNode_Weight): Ditto.
1181         * src/cache/ftcmru.h: The type of
1182         FTC_MruListClass->node_size is changed to FT_Offset,
1183         because it is passed to FT_ALLOC() to specify the
1184         size of buffer.
1186 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1188         XXX_cmap_encoding_char_next() return FT_UInt32 values.
1190         * include/freetype/internal/services/svpscmap.h:
1191         The size of the charcode value returned by
1192         the function typed PS_Unicodes_CharNextFunc is
1193         matched with its input charcode value.
1195         * src/cff/cffmap.c (cff_cmap_encoding_char_next,
1196         cff_cmap_unicode_char_next): Ditto.
1198         * src/pfr/pfrmap.c (pfr_cmap_encoding_char_next):
1199         Ditto.
1201         * src/psaux/t1cmap.c (t1_cmap_std_char_next,
1202         t1_cmap_custom_char_next, t1_cmap_unicode_char_next):
1203         Ditto.
1205         * src/psnames/psmodule.c (ps_unicodes_char_next):
1206         Ditto.
1208         * src/winfonts/winfnt.c (fnt_cmap_char_next):
1209         Ditto.
1211         * src/sfnt/ttcmap.c (tt_cmap0_char_next,
1212         tt_cmap2_char_next, tt_cmap4_char_next,
1213         tt_cmap6_char_next, tt_cmap10_char_next,
1214         tt_cmap12_char_next, tt_cmap13_char_next): Ditto.
1215         (tt_cmap14_char_variants): Handle base unicode
1216         codepoint by FT_UInt32 variable to avoid overflow
1217         on 16-bit platforms.
1218         (tt_cmap14_ensure): The type of `num_results' is
1219         extend to FT_UInt32, to cover unsigned 32-bit
1220         `numVarSelectorRecords' in cmap14 table header.
1222 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1224         truetype: Extend TT_Face->num_locations for broken TTFs.
1226         * include/freetype/internal/tttypes.h:
1227         TT_Face->num_locations are extended from FT_UInt
1228         to FT_ULong, to stand with broken huge loca table.
1229         Some people insists there are broken TTF including
1230         the glyphs over 16-bit limitation, in PRC market.
1231         * src/truetype/ttpload.c (tt_face_load_loca):
1232         Remove unrequired 16-bit truncation for FT_UInt
1233         TT_Face->num_locations.
1235 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1237         smooth: Fix some data types mismatching with their sources.
1239         * src/smooth/ftgrays.c: The type of `TCoord' is
1240         matched to `TPos', because they are mixed in
1241         gray_set_cell().  The type of TCell->x is extended
1242         to `TPos', because gray_find_cell() sets it by
1243         TWorker.ex.  The type of TCell->cover is extended
1244         to `TCoord', because gray_render_scanline() adds
1245         TCoord value to it.  The type of TWork.cover is matched
1246         with TCell->cover.  The types of
1247         TWork.{max_cells,num_cells} are changed to FT_PtrDist,
1248         because they are calculated from the memory addresses.
1249         The type of TWork.ycount is changed to TPos, because
1250         it is calculated from TPos variables.
1251         (gray_find_cell): The type of `x' is matched with
1252         its initial value ras.ex.
1253         (gray_render_scanline): The types of `mod', `lift'
1254         and `rem' are changed to TCoord, because their values
1255         are set with explicit casts to TCoord.  When ras.area
1256         is updated by the differential values including
1257         `delta', they are explicitly cast to TArea, because
1258         the type of `delta' is not TArea but TCoord.
1259         (gray_render_line): The type of `mod' is extended
1260         from int to TCoord, because (TCoord)dy is added to mod.
1261         (gray_hline): The argument `acount' is extended to
1262         TCoord, to match with the parameters in the callers.
1264 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1266         cff: Fix some data types mismatching with their sources.
1268         * src/cff/cffobjs.c (cff_face_init): The type of
1269         `scaling' is matched with the scaling parameter
1270         in FT_Matrix_Multiply_Scaled() and
1271         FT_Vector_Transform_Scaled().
1273         * src/cff/cffparse.c (cff_parse_real): The type of
1274         `power_ten', `scaling', `exponent_add',
1275         `integer_length', `fraction_length',
1276         `new_fraction_length' and `shift' are matched with
1277         the type of `exponent' to avoid unexpected truncation.
1278         (cff_parse_fixed_scaled): The type of `scaling' is
1279         matched with the `scaling' argument to
1280         cff_parse_real().
1281         (cff_parse_fixed_dynamic): Ditto.
1282         (cff_parse_font_matrix): The type of `scaling' is
1283         matched with the `scaling' argument to
1284         cff_parse_dynamic().
1286 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1288         autofit: Fix some data types mismatching with their sources.
1290         * src/autofit/afglobal.c: Correct the type of
1291         AF_FaceGlobalsRec.glyph_count to match with
1292         FT_Face->num_glyphs.
1293         (af_face_globals_compute_script_coverage):
1294         Insert explicit cast to compare
1295         FT_Long AF_FaceGlobalsRec.glyph_count versus
1296         FT_UInt gindex.  The type of `nn' is changed
1297         to scan glyph index upto AF_FaceGlobalsRec.glyph_count.
1298         (af_face_globals_get_metrics): The type of `script_max'
1299         is changed to cover size_t value.  Insert explicit cast
1300         to compare FT_Long AF_FaceGlobalsRec.glyph_count versus
1301         FT_UInt gindex.
1303         * src/autofit/afhints.c (af_axis_hints_new_segment):
1304         Insert explicit cast to calculate `big_max' from
1305         integer and size_t values.
1306         (af_axis_hints_new_edge): Ditto.
1308         * src/autofit/aflatin.c (af_latin_metrics_init_blues):
1309         The type of `best_y' is matched to FT_Vector.y.
1310         (af_latin_compute_stem_width): The type of `delta' is
1311         matched to `dist' and `org_dist'.
1313 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1315         autofit: Count the size of the memory object by ptrdiff_t.
1317         * src/autofit/afcjk.c (af_cjk_hint_edges): The
1318         number of edges `n_edges' should be counted by
1319         FT_PtrDist variable instead of FT_Int.
1321         * src/autofit/aflatin.c (af_latin_hint_edges):
1322         Ditto.
1324         * src/autofit/aftypes.h: In AF_ScriptClassRec,
1325         the size of metric `script_metrics_size' should
1326         be counted by FT_Offset variable instead of FT_UInt.
1328         * src/autofit/afhints.c
1329         (af_glyph_hints_align_strong_points): The cursors
1330         for the edges `min', `max', `mid' in the memory
1331         buffer should be typed FT_PtrDist.
1333 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1335         autofit: Fix for unused variable `first'.
1337         * src/autofit/afhints.c (af_glyph_hints_reload): Insert
1338         FT_UNUSED() to hide the unused variable warning.
1340 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1342         Improve bitmap size or pixel variables for 16-bit systems.
1344         * include/freetype/config/ftstdlib.h: Introduce
1345         FT_INT_MIN, to use in signed integer overflow in
1346         16-bit and 64-bit platforms.
1347         
1348         * include/freetype/internal/fttrace.h: Add a tracer
1349         to ftsynth.c.
1350         
1351         * src/base/ftbitmap.c (FT_Bitmap_Embolden): Check
1352         invalid strength causing integer overflow on 16-bit
1353         platform.
1354         
1355         * src/base/ftcalc.c (ft_corner_orientation): Change
1356         the internal calculation from FT_Int to FT_Long, to
1357         avoid an overflow on 16-bit platforms.  The caller of
1358         this function should use only the sign of result,
1359         so the cast to FT_Int is acceptable.
1360         
1361         * src/base/ftsynth.c: Introduce a tracer for synth module.
1362         (FT_GlyphSlot_Embolden): Check invalid strength causing
1363         integer overflow on 16-bit platform.
1364         
1365         * src/bdf/bdfdrivr.c (BDF_Face_Init): The glyph index
1366         in FT2 API is typed as FT_UInt, although BDF driver
1367         can handle unsigned long glyph index internally.  To
1368         avoid integer overflow on 16-bit platform, too large
1369         glyph index should be excluded.
1370         (BDF_Glyph_Load): The glyph pitch in FT2 is typed as
1371         FT_UInt, although BDF driver can handle unsigned long
1372         glyph pitch internally.  To avoid integer overflow on
1373         16-bit platform, too large glyph pitch should not be
1374         returned.
1375         
1376         * src/pfr/pfrsbit.c (pfr_slot_load_bitmap): The glyph
1377         pitch in FT2 is typed as FT_UInt, although PFR font
1378         format can include huge bitmap glyph with 24-bit pitch
1379         (however, a glyph spends 16.7 pixel, it's not realistic).
1380         To avoid integer overflow on 16-bit platform, huge
1381         bitmap glyph should be excluded.
1382         
1383         * src/smooth/ftgrays.c (gray_hline): As FT_Span.x is
1384         truncated to fit its type (16-bit short), FT_Span.y
1385         should be truncated to fit its type (FT_Int).
1386         
1387         * src/cff/cffdrivr.c (cff_get_ros): CFF specification
1388         defines the supplement in ROS as a real number.
1389         Truncate it to fit public FT2 API.
1390         
1391         * src/cff/cffparse.c (cff_parse_cid_ros): Warn the
1392         supplement if it is truncated or rounded in cff_get_ros().
1393         
1394         * src/cff/cfftypes.h: Change the type of internal variable
1395         `supplement' from FT_Long to FT_ULong to fit the signedness
1396         to the type in public API.
1398 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1400         psaux: Prevent invalid arguments to afm_parser_read_vals().
1402         * src/psaux/afmparse.c (afm_parser_read_vals): Change
1403         the type of `n' to prevent negative number how many
1404         arguments should be parsed.
1406         * src/psaux/afmparse.h (afm_parser_read_vals): Ditto.
1408 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1410         base: Prevent some overflows on LP64 systems.
1412         * src/base/ftadvance.c (FT_Get_Advances): Cast the
1413         unsigned long constant FT_LOAD_ADVANCE_ONLY to FT_UInt32
1414         for LP64 platforms.
1416         * src/base/ftcalc.c (FT_Sqrt32): All internal variables
1417         are changed to FT_UInt32 from FT_ULong.
1418         (FT_MulDiv): Insert casts to FT_Int32 for LP64 platforms.
1419         This function is designed for 32-bit integer, although
1420         their arguments and return value are FT_Long.
1422         * src/base/ftobjs.c (FT_Get_Char_Index): Check `charcode'
1423         is within unsigned 32-bit integer for LP64 platforms.
1424         (FT_Face_GetCharVariantIndex): Check `charcode' and
1425         `variantSelector' are within 32-bit integer for LP64
1426         platforms.
1427         (FT_Face_GetCharsOfVariant): Check `variantSelector' is
1428         within unsigned 32-bit integer for LP64 platforms.
1430         * src/base/fttrigon.c (ft_trig_downscale): The FT_Fixed
1431         variable `val' and unsigned long constant FT_TRIG_SCALE
1432         are cast to FT_UInt32, when calculates FT_UInt32.
1433         (FT_Vector_Rotate): The long constant 1L is cast to
1434         FT_Int32 to calculate FT_Int32 `half'.
1436 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1438         cff: Cast the long variables to 32-bit for LP64 systems.
1440         * src/cff/cffdrivr.c (cff_get_advances): Insert
1441         explicit cast to modify a 32-bit flag by unsigned
1442         long constant.
1444         * src/cff/cffobjs.c (cff_face_init): Ditto.
1446         * src/cff/cffgload.c (cff_decoder_parse_charstrings):
1447         Replace the casts to FT_Long by the casts to FT_Int32
1448         for LP64 platforms.
1450 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1452         pcf: Improve PCF_PropertyRec.value names on LP64 platforms.
1454         * src/pcf/pcf.h: In PCF_PropertyRec.value, the member
1455         `integer' is replaced by `l', `cardinal' is replaced
1456         by `ul', to fix the difference between the name and
1457         the types on LP64 platforms.
1459         * src/pcf/pcfdrivr.c (pcf_get_bdf_property): Reflect
1460         PCF_PropertyRec.value change, with appropriate casts
1461         to FT_Int32/FT_UInt32.  Their destinations
1462         BDF_PropertyRec.{integer|cardinal} are public and
1463         explicitly defined as FT_Int32/FT_UInt32.
1465         * src/pcf/pcfread.c (pcf_get_properties, pcf_load_font):
1466         Reflect PCF_PropertyRec.value change.
1468 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1470         pcf: Fix some data types mismatching with their sources.
1472         * src/pcf/pcfdrivr.c (pcf_cmap_char_index): The type of
1473         `code' is matched to PCF_Encoding->enc.
1474         (pcf_cmap_char_next): The type of `charcode' is matched
1475         to PCF_Encoding->enc.  When *acharcode is set by charcode,
1476         an overflow is checked and cast to unsigned 32-bit
1477         integer.
1479 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1481         bdf: Improve bdf_property_t.value names for LP64 platforms.
1483         * src/bdf/bdf.h: In bdf_property_t.value, the member
1484         `int32' is replaced by `l', `card32' is replaced by
1485         `ul', to fix the difference between the name and the
1486         types on LP64 platforms.
1488         * src/bdf/bdfdrivr.c (BDF_Face_Init): Reflect
1489         bdf_property_t.value change.
1490         (bdf_get_bdf_property): Reflect bdf_property_t.value
1491         change, with appropriate casts to FT_Int32/FT_UInt32.
1492         Their destinations BDF_PropertyRec.{integer|cardinal}
1493         are public and explicitly defined as FT_Int32/FT_UInt32.
1495         * src/bdf/bdflib.c (_bdf_add_property): Reflect
1496         bdf_property_t.value change.
1498 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1500         bdf: Fix some data types mismatching with their sources.
1502         * src/bdf/bdrdrivr.c (bdf_cmap_char_index): The type
1503         of `code' is matched with BDF_encoding_el->enc.
1504         (bdf_cmap_char_next): The type of `charcode' is
1505         matched with BDF_encoding_el->enc.  When *acharcode
1506         is set by charcode, an overflow is checked and
1507         cast to unsigned 32-bit integer.
1509 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1511         autofit: Improve Unicode range definitions.
1513         * src/autofit/aftypes.h (AF_UNIRANGE_REC): New macro
1514         to declare a range by two unsigned 32-bit integer,
1515         to avoid 64-bit range definition on LP64 platforms.
1517         * src/autofit/aflatin.c (af_latin_uniranges): Ditto.
1519         * src/autofit/aflatin2.c (af_latin2_uniranges): Ditto.
1521         * src/autofit/afindic.c (af_indic_uniranges): Ditto.
1523         * src/autofit/afcjk.c (af_cjk_uniranges): Declare
1524         the ranges by AF_UNIRANGE_REC.
1526 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1528         smooth: Fix a data type mismatching with its source.
1530         * src/smooth/ftgrays.c (gray_sweep): The type of
1531         `area' is matched with the 3rd argument `area'
1532         of gray_hline().
1534 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1536         smooth: Fix a data type mismatching with its source.
1538         * src/smooth/ftgrays.c (gray_render_line): The type
1539         of `area' is matched with TWorker.area.
1541 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1543         cache: Disable the legacy compatibility if 16-bit system.
1545         * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Exclude
1546         the legacy behaviour from 16-bit platform, because the
1547         current hack cannot detect the caller uses this function
1548         via legacy convension.
1549         (FTC_SBitCache_Lookup): Ditto.
1551 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1553         cache: Check 32-bit glyph index on 16-bit systems.
1555         * src/cache/ftcbasic.c (ftc_basic_family_get_count):
1556         Check overflow caused by the face including large
1557         number of glyphs > 64k.
1559 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1561         cache: Fix some data types mismatching with their sources.
1563         * src/cache/ftccache.c (ftc_cache_resize): The types of
1564         `p', `mask', `count' are matched with FTC_Cache->{p,mask}.
1565         (FTC_Cache_Clear): The type of `old_index' is matched to
1566         FTC_Cache->{p,mask}.
1568         * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): The type
1569         of `_idx' is matched with FTC_Cache->{p,mask}.
1571 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1573         cache: Fix some data types mismatching with their sources.
1575         * src/cache/ftcsbits.c (ftc_snode_load): The types
1576         of `xadvance' and `yadvance' are matched with
1577         FT_GlyphSlot->advance.{x|y}.
1579 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1581         cache: Cast NULL to a required function type explicitly.
1583         * src/cache/ftcmanag.c (FTC_Manager_RemoveFaceID):
1584         Insert explicit cast from NULL to function type.
1586 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1588         fttypes.h: Cast FT_MAKE_TAG output to FT_Tag exlicitly.
1590         * include/freetype/fttypes.h (FT_MAKE_TAG):
1591         Cast the result to FT_Tag.
1593 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1595         psnames: Handle Unicode codepoints by FT_UInt32 variables.
1597         * src/psnames/psmodule.c (BASE_GLYPH): Cast the result
1598         to unsigned 32-bit integer for LP64 platform.
1599         (ps_unicode_value): Return the value by unsigned 32-bit
1600         integer instead of unsigned long.
1602 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1604         psaux: Use size_t variable to pass the buffer size.
1606         * src/psaux/psaux.h (to_bytes): The type of `max_bytes'
1607         (the argument to pass the buffer size) is changed to
1608         size_t, to match with ANSI C string functions.
1610         * src/psaux/psconv.h (PS_Conv_StringDecode,
1611         PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Ditto.
1613         * src/psaux/psconv.c (PS_Conv_StringDecode,
1614         PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Ditto.
1616         * src/psaux/psobjs.h (ps_parser_to_bytes): Ditto.
1618         * src/psaux/psobjs.c (ps_parser_to_bytes): Ditto.
1620 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1622         type1: Use size_t variable to pass the string length.
1624         * psaux.h: The type of `len' (the argument to pass
1625         the buffer size to the function in AFM_ParserRec)
1626         is changed to size_t, to match with ANSI C string
1627         functions.
1629         * t1afm.c (t1_get_index): Ditto.
1631         * test_afm.c (dummy_get_index): Ditto.
1633         * afmparse.c (afm_parser_read_vals): To call
1634         AFM_ParserRec.get_index, the length of token
1635         `len' is cast to size_t.
1637 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1639         cid: Fix some data types mismatching with their sources.
1641         * src/cid/cidparse.c (cid_parser_new): The types of
1642         `read_len' and `stream_len' are matched to
1643         FT_Stream->size.  Unrequired cast is removed.
1645 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1647         cff: Fix for unused variable `rest'.
1649         * src/cff/cffparse.c (cff_parse_real): Insert
1650         FT_UNUSED() to hide the unused variable warning.
1652 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1654         cff: Fix some data types mismatching with their sources.
1656         * src/cff/cffgload.c (cff_slot_load): The types of      
1657         `top_upm' and `sub_upm' are matched with
1658         CFF_FontRecDict->units_per_em.
1660         * src/cff/cffobjs.c (cff_size_select): Ditto.
1661         (cff_size_request): Ditto.
1663 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1665         bdf: Fix some data types mismatching with their sources.
1667         * bdflib.c (_bdf_list_ensure): The type of `num_items'
1668         is matched with _bdf_list_t.used.  Also the types of
1669         `oldsize', `newsize', `bigsize' are matched too.
1670         (_bdf_readstream): `cursor' is used as an offset to
1671         the pointer, it should be typed as FT_Offset.  Also
1672         the types of `bytes', `start', `end', `avail' are matched.
1674         * bdfdrivr.c: The type of BDF_CMap->num_encodings is
1675         matched with FT_CMap->clazz->size.
1676         (bdf_cmap_char_index): The types of `min', `max', `mid'
1677         are matched with BDF_CMap->num_encodings.  The type of
1678         `result' is matched with encoding->glyph.
1679         (bdf_cmap_char_next): Ditto, the type of `code' is
1680         matched with BDF_encoding_el.enc.
1681         (bdf_interpret_style): The type of `lengths' is changed
1682         to size_t, to take the value by ft_strlen().  Also the
1683         types of `len', `nn', `mm' are matched.
1685 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1687         sfnt: Count the size of the memory object by ptrdiff_t.
1689         * src/sfnt/ttbdf.c (tt_face_find_bdf_prop): The type of
1690         `peroperty_len' is changed from FT_UInt to FT_Offset,
1691         to match with size_t, which is appropriate type for the
1692         object in the memory buffer.
1694 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1696         lzw: Count the size of the memory object by ptrdiff_t.
1698         * src/lzw/ftzopen.h: The types of FT_LzwState->{buf_total,
1699         stack_size} are changed from FT_UInt to FT_Offset, to match
1700         with size_t, which is appropriate type for the object in
1701         the memory buffer.
1703         * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): The types of
1704         `old_size' and `new_size' are changed from FT_UInt to
1705         FT_Offset, to match with size_t, which is appropriate type
1706         for the object in the memory buffer.
1708 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1710         otvalid: Count the table size on memory by ptrdiff_t.
1712         * src/otvalid/otvgpos.c (otv_ValueRecord_validate):
1713         Change the type of table size from FT_UInt to
1714         FT_PtrDist because it is calculated by the memory
1715         addresses.
1717 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1719         otvalid: Prevent an overflow by GPOS/GSUB 32b-bit offset.
1721         * src/otvalid/otvgpos.c (otv_ExtensionPos_validate):
1722         Extend ExtensionOffset from FT_UInt to FT_ULong, to
1723         cover 32-bit offset on 16-bit platform.
1725         * src/otvalid/otvgsub.c (otv_ExtensionSubst_validate):
1726         Ditto.
1728 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1730         ftobjs.c: Prevent an overflow in glyph index handling.
1732         * src/base/ftobjs.c (FT_Face_GetCharsOfVariant):
1733         Improve the cast in comparison to avoid the truncation.
1735 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1737         Improve the variable types in raccess_make_file_name().
1739         * src/base/ftrfork.c (raccess_make_file_name):
1740         Change the type of cursor variable `tmp' to const char*,
1741         to prevent the unexpected modification of original pathname.
1742         (raccess_make_file_name): Change the type of new_length
1743         to size_t.
1745 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1747         ftpatent.c: Fix for unused variable `error'.
1749         * src/base/ftpatent.c (_tt_check_patents_in_range):
1750         Fix warning for unused variable `error'.
1752 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1754         type1: Check invalid string longer than PostScript limit.
1756         * src/type1/t1afm.c (t1_get_index): Check invalid string
1757         which exceeds the limit of PostScript string/name objects.
1759 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1761         gzip: Use FT2 zcalloc() & zfree() in ftgzip.c by default.
1763         * src/gzip/ftgzip.c (zcalloc, zcfree): Disable all
1764         zcalloc() & zfree() by zlib in zutil.c, those in
1765         ftgzip.c by FT2 are enabled by default.  To use
1766         zlib zcalloc() & zfree(), define USE_ZLIB_ZCALLOC.
1767         See discussion:
1768         http://lists.gnu.org/archive/html/freetype-devel/2009-02/msg00000.html
1770 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1772         gzip: Distinguish PureC from TurboC on MSDOS.
1774         * src/gzip/zutil.c (zcalloc, zcfree): Enable only for
1775         MSDOS platform.
1777 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1779         gxvalid: Insert PureC pragma to allow unevaluated variables.
1781         * builds/atari/ATARI.H: Insert PureC pragma not to
1782         warn against set-but-unevaluated variable in gxvalid
1783         module.
1785 2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1787         gxvalid: Pass the union by the pointer instead of the value.
1789         * src/gxvalid/gxvcommn.h:
1790           - Declare new type `GXV_LookupValueCPtr'.
1791           - Update the type of the 2nd argument to pass GXV_LookupValueDesc
1792             data to the function prototyped as GXV_Lookup_Value_Validate_Func,
1793             from GXV_LookupValueDesc to GXV_LookupValueCPtr.
1794           - Likewise for the function prototyped as
1795             GXV_Lookup_Fmt4_Transit_Func.
1797           - Declare new type `GXV_StateTable_GlyphOffsetCPtr'.
1798           - Update the type of the 3rd argument to pass
1799             GXV_StateTable_GlyphOffsetDesc data to the function prototyped
1800             as GXV_StateTable_Entry_Validate_Func, from
1801             GXV_StateTable_GlyphOffsetDesc to GXV_StateTable_GlyphOffsetCPtr.
1803           - Declare new type `GXV_XStateTable_GlyphOffsetCPtr'.
1804           - Update the type of the 3rd argument to pass
1805             GXV_XStateTable_GlyphOffsetDesc data to the function prototyped
1806             as GXV_XStateTable_Entry_Validate_Func,
1807             from GXV_XStateTable_GlyphOffsetDesc
1808             to GXV_XStateTable_GlyphOffsetCPtr.
1810         * src/gxvalid/gxvcommn.c (gxv_LookupTable_fmt0_validate,
1811         gxv_XClassTable_lookupval_validate,
1812         gxv_XClassTable_lookupfmt4_transit):
1813         Update from GXV_LookupValueDesc to GXV_LookupValueCPtr.
1814         
1815         * src/gxvalid/gxvbsln.c (gxv_bsln_LookupValue_validate,
1816         gxv_bsln_LookupFmt4_transit): Ditto.
1817         
1818         * src/gxvalid/gxvjust.c
1819         (gxv_just_pcTable_LookupValue_entry_validate,
1820         gxv_just_classTable_entry_validate,
1821         gxv_just_wdcTable_LookupValue_validate): Ditto.
1822         
1823         * src/gxvalid/gxvkern.c
1824         (gxv_kern_subtable_fmt1_entry_validate): Ditto.
1825         
1826         * src/gxvalid/gxvlcar.c (gxv_lcar_LookupValue_validate,
1827         gxv_lcar_LookupFmt4_transit): Ditto.
1828         
1829         * src/gxvalid/gxvopbd.c (gxv_opbd_LookupValue_validate,
1830         gxv_opbd_LookupFmt4_transit): Ditto.
1831         
1832         * src/gxvalid/gxvprop.c (gxv_prop_LookupValue_validate,
1833         gxv_prop_LookupFmt4_transit): Ditto.
1834         
1835         * src/gxvalid/gxvmort4.c
1836         (gxv_mort_subtable_type4_lookupval_validate): Ditto.
1837         
1838         * src/gxvalid/gxvmort0.c
1839         (gxv_mort_subtable_type0_entry_validate): Update
1840         from GXV_StateTable_GlyphOffsetDesc
1841         to GXV_StateTable_GlyphOffsetCPtr.
1842         
1843         * src/gxvalid/gxvmort1.c
1844         (gxv_mort_subtable_type1_entry_validate): Ditto.
1845         
1846         * src/gxvalid/gxvmort2.c
1847         (gxv_mort_subtable_type2_entry_validate): Ditto.
1848         
1849         * src/gxvalid/gxvmort5.c
1850         (gxv_mort_subtable_type5_entry_validate): Ditto.
1851         
1852         * src/gxvalid/gxvmorx2.c
1853         (gxv_morx_subtable_type2_entry_validate): Ditto.
1854         
1855         * src/gxvalid/gxvmorx5.c
1856         (gxv_morx_subtable_type5_entry_validate): Ditto.
1857         
1858         * src/gxvalid/gxvmorx1.c
1859         (gxv_morx_subtable_type1_entry_validate): Ditto.
1860         (gxv_morx_subtable_type1_LookupValue_validate,
1861         gxv_morx_subtable_type1_LookupFmt4_transit):
1862         Update from GXV_LookupValueDesc to GXV_LookupValueCPtr.
1863         
1864         * src/gxvalid/gxvmorx0.c
1865         (gxv_morx_subtable_type0_entry_validate): Update
1866         from GXV_XStateTable_GlyphOffsetDesc
1867         to GXV_XStateTable_GlyphOffsetCPtr.
1869 2009-07-29  Fabrice Bellet  <fabrice@bellet.info>
1871         Fix Redhat bugzilla #513582 and Savannah bug #26849.
1873         * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP) <FTC_INLINE>: Fix
1874         aliasing bug.
1876 2009-07-19  Werner Lemberg  <wl@gnu.org>
1878         Document recent library changes.
1880         * docs/CHANGES: Do it.
1882 2009-07-17  Werner Lemberg  <wl@gnu.org>
1884         Fix Savannah bug #23786.
1886         * src/truetype/ttobjs.c (tt_size_init_bytecode): Don't reset x_ppem
1887         and y_ppem.  Otherwise the `*_CVT_Stretched' functions in ttinterp.c
1888         get never called.
1889         An anonymous guy suggested this change on Savannah, and it seems to
1890         be the right solution.
1892 2009-07-15  Werner Lemberg  <wl@gnu.org>
1894         * docs/release: Updated.
1896 2009-07-15  Werner Lemberg  <wl@gnu.org>
1898         README.CVS -> README.git
1900         * README.CVS: Renamed to...
1901         * README.git: This.
1902         Updated.
1904 2009-07-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1906         Borland C++ compiler patch proposed by Mirco Babin.
1907         http://lists.gnu.org/archive/html/freetype/2009-07/msg00016.html.
1909         * builds/exports.mk: Delete unused flags, CCexe_{CFLAGS,LDFLAGS}.
1910         Fix APINAMES_C and APINAMES_EXE pathnames to reflect the platform
1911         specific pathname syntax.
1912         * builds/compiler/bcc.mk: Remove unused flag, CCexe_LDFLAGS.
1913         Define TE = `-e' separately (bcc32 cannot specify the pathname of
1914         binary executable by T = `-o').
1915         Extend the large page size in linking freetype.lib.
1916         Add extra CLEAN target to delete bcc specific temporary files.
1917         * builds/compiler/bcc-dev.mk: Ditto.
1919 2009-07-14  Werner Lemberg  <wl@gnu.org>
1921         Fix Savannah bug #27026.
1923         * builds/win32/vc2005/freetype.sln: Use correct version number.
1925 2009-07-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1927         Add a script to check the undefined and unused trace macros.
1929         * src/tools/chktrcmp.py: A script to check trace_XXXX macros
1930         that are used in C source but undefined in fttrace.h, or
1931         defined in fttrace.h but unused in C sources.  See
1932         http://lists.gnu.org/archive/html/freetype-devel/2009-07/msg00013.html.
1933         * docs/DEBUG: Mention on chktrcmp.py.
1934         * docs/release: Ditto.
1936 2009-07-09  Werner Lemberg  <wl@gnu.org>
1938         [ftraster] Make it compile again with -D_STANDALONE_.
1940         * src/raster/ftraster.c [_STANDALONE_]: Define
1941         FT_CONFIG_STANDARD_LIBRARY_H.
1942         Include `string.h'.
1943         Don't include `rastpic.h'.
1944         Define FT_DEFINE_RASTER_FUNCS.
1946 2009-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1948         smooth: Check glyph size by width/height, instead of pitch/height.
1949         Suggested by der Mouse <mouse@Rodents-Montreal.ORG>.
1951         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Improve
1952         the check for too large glyph.  Replace the pair of `pitch' and
1953         `height' by the pair of `width' and `height'.  `pitch' cannot
1954         be greater than `height'.  The required is checking the product
1955         `pitch' * `height' <= FT_ULONG_MAX, but we use cheap checks for
1956         the realistic case only.
1958 2009-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1960         Register 2 missing trace components, t1afm and ttbdf.
1962         * include/freetype/internal/fttrace.h: Add FT_TRACE_DEF( t1afm )
1963         and FT_TRACE_DEF( ttbdf ).  See
1964         http://lists.gnu.org/archive/html/freetype-devel/2009-07/msg00013.html
1966 2009-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1968         Register a trace component for ftgloadr.c.
1970         * include/freetype/internal/fttrace.h: Add FT_TRACE_DEF( gloader ).
1971         The macro `trace_gloader' was already used in the initial version
1972         on 2002-02-24.
1974 2009-07-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1976         Prevent the overflows by a glyph with too many points or contours.
1977         The bug is reported by Boris Letocha <b.letocha@gmc.net>.  See
1978         http://lists.gnu.org/archive/html/freetype-devel/2009-06/msg00031.html
1979         http://lists.gnu.org/archive/html/freetype-devel/2009-07/msg00002.html  
1981         * include/freetype/ftimage.h (FT_OUTLINE_CONTOURS_MAX,
1982         FT_OUTLINE_POINTS_MAX): New macros to declare the maximum
1983         values of FT_Outline.{n_contours,n_points}.
1984         * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Check the
1985         total numbers of points and contours cause no overflows in
1986         FT_Outline.{n_contours,n_points}.
1988         * include/freetype/internal/ftgloadr.h (FT_GLYPHLOADER_CHECK_P,
1989         FT_GLYPHLOADER_CHECK_C): Compare the numbers of points and
1990         contours as unsigned long number, instead of signed int, to
1991         prevent the overflows on 16-bit systems.
1993 2009-07-05  Bram Tassyns  <bramt@enfocus.be>
1995         Improve compatibility to Acroread.
1996         This fixes Savannah bug #26944.
1998         * src/cff/cffload.c (cff_charset_compute_cids): For multiple GID to
1999         single CID mappings, make the lowest value win.
2001 2009-06-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2003         ftpatent: Fix a bug by wrong usage of service->table_info().
2004         http://lists.gnu.org/archive/html/freetype-devel/2008-12/msg00039.html
2006         * include/freetype/internal/services/svsfnt.h: Extend
2007         FT_SFNT_TableInfoFunc() to take new argument to obtain the offset
2008         to the specified table.
2009         * src/sfnt/sfdriver.c (sfnt_table_info): Extend to return the
2010         table-offset to the caller function.
2011         * src/base/ftpatent.c (_tt_check_patents_in_table): Use new
2012         service->table_info().
2013         * src/base/ftobjs.c (FT_Sfnt_Table_Info): Synchronize to new
2014         service->table_info().
2016 2009-06-28  Werner Lemberg  <wl@gnu.org>
2018         [psaux, cff] Protect against nested `seac' calls.
2020         * include/freetype/internal/psaux.h (T1_Decoder), src/cff/cffgload.h
2021         (CFF_Decoder): Add `seac' boolean variable.
2023         * src/cff/cffgload.c (cff_operator_seac), src/psaux/t1decode.c
2024         (t1operator_seac): Use it.
2026 2009-06-28  Werner Lemberg  <wl@gnu.org>
2028         Thinko.
2030         * src/psaux/t1decode.c (t1operator_seac)
2031         [FT_CONFIG_OPTION_INCREMENTAL]: Test for existence of incremental
2032         interface.
2034 2009-06-28  Werner Lemberg  <wl@gnu.org>
2036         * devel/ftoption.h [FT_CONFIG_OPTION_INCREMENTAL]: Define.
2038 2009-06-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2040         Add tools to preprocess the source files for AtariST PureC.
2042         * builds/atari/deflinejoiner.awk: New file to filter C source files
2043         for broken C preprocessor of PureC compiler.
2045         * builds/atari/gen-purec-patch.sh: New file to generate a patch set
2046         for PureC, by using deflinejoiner.awk.
2048 2009-06-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2050         Keep existing modules.cfg in the building tree.
2052         * configure: If `configure' is executed outside of the source tree,
2053         an existing `modules.cfg' file in the build directory should be
2054         kept, not overwritten by the version in the source tree.
2056 2009-06-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2058         Filter --srcdir= option before invoking builds/unix/configure.
2060         * configure: If builds/unix/configure is invoked with --srcdir
2061         option, the option should take `builds/unix' directory instead of
2062         the top source directory.  Thus the configure script in the top
2063         directory should modify the --srcdir= option if
2064         `builds/unix/configure' is invoked.
2066 2009-06-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2068         Improve configure.raw for cross-building on exe-suffixed systems.
2070         * builds/unix/configure.raw: Fix a bug in sed script to extract
2071         native suffix for binary executables, patch by Peter Breitenlohner.
2072         http://lists.gnu.org/archive/html/freetype-devel/2009-04/msg00036.html
2074 2009-06-26  Werner Lemberg  <wl@gnu.org>
2076         [truetype] Remove TT_SubGlyphRec.
2078         * src/truetype/ttobjs.h (TT_SubGlyphRec): Removed, unused.
2080 2009-06-26  Werner Lemberg  <wl@gnu.org>
2082         * */*: For warning messages, replace FT_ERROR with FT_TRACE0.
2084         FT_ERROR is now used only if a function produces a non-zero `error'
2085         value.
2087         Formatting, improving and harmonizing debug strings.
2089 2009-06-25  Werner Lemberg  <wl@gnu.org>
2091         Provide version information better.
2093         * src/base/ftinit.c (FT_Init_FreeType): Don't set version here
2094         but...
2095         * src/base/ftobjs.c (FT_New_Library): Here.
2097 2009-06-22  Werner Lemberg  <wl@gnu.org>
2099         Use 16.16 format while parsing Type 1 charstrings.
2100         This fixes Savannah bug #26867.
2102         Previously, only integers have been used which can lead to serious
2103         rounding errors.
2105         However, fractional values are only used internally; after the
2106         charstrings (of either Type 1 or 2) have been processed, the
2107         resulting coordinates get rounded to integers currently -- before
2108         applying scaling.  This should be fixed; at the same time a new load
2109         flag should be introduced, to be used in combination with
2110         FT_LOAD_NO_SCALE, which indicates that font units are returned in
2111         16.16 format.  Similarly, the incremental interface should be
2112         extended to allow fractional values for metrics.
2114         * include/freetype/internal/psaux.h (T1_BuilderRec): Remove `shift'
2115         field.
2116         * include/freetype/internal/pshints.h (T1_Hints_SetStemFunc,
2117         T1_Hints_SetStem3Func): Use FT_Fixed for coordinates.
2119         * src/psaux/psobjs.c: Include FT_INTERNAL_CALC_H.
2120         (t1_build_add_point): Always convert fixed to integer.
2121         * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
2122         Use 16.16 format everywhere (except for large integers followed by a
2123         `div').
2124         [CAN_HANDLE_NON_INTEGRAL_T1_OPERANDS]: Remove #ifdef and activate
2125         code uncoditionally.
2126         Add support for random numbers and update remaining code
2127         accordingly; this should work now.
2128         (t1_operator_seac): Updated.
2129         * src/psaux/pshrec.c: Include FT_INTERNAL_CALC_H.
2130         (ps_hints_t1stem3, t1_hints_stem): Updated.
2132         * src/cid/cidgload.c: Include FT_INTERNAL_CALC_H.
2133         (cid_load_glyph) [FT_CONFIG_OPTION_INCREMENTAL],
2134         (cid_face_compute_max_advance, cid_slot_load_glyph): Updated.
2136         * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String)
2137         [FT_CONFIG_OPTION_INCREMENTAL], (T1_Get_Advances, T1_Load_Glyph):
2138         Updated.
2139         * src/type1/t1load.c: Include FT_INTERNAL_CALC_H.
2140         * src/type1/t1objs.c (T1_Face_Init): Updated.
2142 2009-06-21  Werner Lemberg  <wl@gnu.org>
2144         * src/pshinter/pshrec.c: Use PSH_Err_Ok.
2146 2009-06-21  Werner Lemberg  <wl@gnu.org>
2148         Code beautification.
2150         * src/type1/t1load.c (FT_INT_TO_FIXED): Removed.
2151         Replace everywhere with INT_TO_FIXED.
2152         (FT_FIXED_TO_INT): Move to ...
2153         * include/freetype/internal/ftcalc.h (FIXED_TO_INT): Here.
2154         Update all users.
2156 2009-06-20  Werner Lemberg  <wl@gnu.org>
2158         Remove unused variables.
2160         * include/freetype/internal/psaux.h (T1_BuilderRec),
2161         src/cff/cffgload.h (CFF_Builder): Remove `last'.
2162         Update all users.
2164 2009-06-20  Werner Lemberg  <wl@gnu.org>
2166         [psaux] Check large integers while parsing charstrings.
2168         * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Large
2169         integers must be followed by a `div' operator.
2171 2009-06-20  Werner Lemberg  <wl@gnu.org>
2173         [cff] Revert last change.
2175         * src/cff/cffgload.c (cff_decoder_parse_charstrings): Do it.
2176         Next time, don't confuse Type 2 charstring opcodes with TOP DICT
2177         values...
2179 2009-06-20  Werner Lemberg  <wl@gnu.org>
2181         * src/autofit/aflatin.c (af_latin_metrics_check_digits): Fix
2182         compiler warning.
2184 2009-06-20  Werner Lemberg  <wl@gnu.org>
2186         * builds/compiler/gcc.mk (CFLAGS): Use -O3, not -O6.
2188 2009-06-19  Werner Lemberg  <wl@gnu.org>
2190         [cff] Fix handling of reserved byte 0xFF.
2192         * src/cff/cffgload.c (cff_decoder_parse_charstrings): Abort if byte
2193         0xFF is encountered.
2195 2009-06-19  Werner Lemberg  <wl@gnu.org>
2197         Improve debug messages for Type1 charstrings.
2199         * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Emit newlines
2200         after instructions.
2201         Prettify output.
2203 2009-06-19  Werner Lemberg  <wl@gnu.org>
2205         More ftgray fixes for FT_STATIC_RASTER.
2206         Problems reported by suyu@cooee.cn.
2208         * src/smooth/ftgrays.c (gray_move_to, gray_raster_render): Use
2209         RAS_VAR.
2211 2009-06-18  Werner Lemberg  <wl@gnu.org>
2213         * docs/CHANGES: Updated.
2215 2009-06-18  Werner Lemberg  <wl@gnu.org>
2217         Fix B/W rasterization of subglyphs with different drop-out modes.
2219         Normally, the SCANMODE instruction (if present) to set the drop-out
2220         mode in a TrueType font is located in the `prep' table only and thus
2221         valid for all glyphs.  However, there are fonts like `pala.ttf'
2222         which additionally contain this instruction in the hinting code of
2223         some glyphs (but not all).  As a result it can happen that a
2224         composite glyph needs multiple drop-out modes for its subglyphs
2225         since the rendering state gets reset for each subglyph.
2227         FreeType collects the hinted outlines from all subglyphs, then it
2228         sends the data to the rasterizer.  It also sends the drop-out mode
2229         -- after hinting has been applied -- and here is the error: It sends
2230         the drop-out mode of the last subglyph only; drop-out modes of all
2231         other subglyphs are lost.
2233         This patch fixes the problem; it adds a second, alternative
2234         mechanism to pass the drop-out mode: For each contour, the
2235         rasterizer now checks the first `tags' array element.  If bit 2 is
2236         set, bits 5-7 contain the contour's drop-out mode, overriding the
2237         global drop-out mode.
2239         * include/freetype/ftimage.h (FT_CURVE_TAG_HAS_SCANMODE): New macro.
2241         * src/truetype/ttgload.c (TT_Hint_Glyph): Store drop-out mode in
2242         `tags[0]'.
2244         * src/raster/ftraster.c (Flow_Up, Overshoot_Top, Overshoot_Bottom):
2245         Use bits 3-5 instead of 0-2.
2246         (New_Profile): Set the drop-out mode in the profile's `flags' field.
2247         (Decompose_Curve): Check `tags[0]' and set `dropOutControl' if
2248         necessary.
2249         (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
2250         Horizontal_Gray_Sweep_Drop, Draw_Sweep): Use the profile's drop-out
2251         mode.
2253 2009-06-16  Werner Lemberg  <wl@gnu.org>
2255         Improve scan conversion rules 4 and 6.
2257         Two new constraints are introduced to better identify a `stub' -- a
2258         concept which is only vaguely described in the OpenType
2259         specification.  The old code was too rigorous and suppressed more
2260         pixel than it should.
2262           . The intersection of the two profiles with the scanline is less
2263             than a half pixel.  Code related to this was already present in
2264             the sources but has been commented out.
2266           . The endpoint of the original contour forming a profile has a
2267             distance (`overshoot') less than half a pixel to the scanline.
2269         Note that the two additional conditions fix almost all differences
2270         to the Windows rasterizer, but some problematic cases remain.
2272         * src/raster/ftraster.c (Overshoot_Top, Overshoot_Bottom): New
2273         macros for the `flags' field in the `TProfile' structure.
2274         (IS_BOTTOM_OVERSHOOT, IS_TOP_OVERSHOOT): New macros.
2275         (New_Profile, End_Profile): Pass overshoot flag as an argument and
2276         set it accordingly.
2277         Update callers.
2278         (Vertical_Sweep_Drop, Horizontal_Sweep_Drop): Implement the two new
2279         constraints.
2281 2009-06-11  Werner Lemberg  <wl@gnu.org>
2283         Increase precision for B/W rasterizer.
2285         * src/raster/ftraster.c (Set_High_Precision): Add two more bits to
2286         the precision.  This corrects rendering of some small glyphs, for
2287         example, glyph `xi' in verdana.ttf at 13 ppem.  Testing with ftbench
2288         on my GNU/Linux box I don't see a performance degradation.
2290 2009-06-08  Michael Zucchi  <notzed@gmail.com>
2292         Handle FT_STROKER_LINECAP_BUTT.
2293         This fixes Savannah bug #26757.
2295         * src/base/ftstroke.c (ft_stroker_cap): Implement it.
2297 2009-06-07  Harald Fernengel  <harry@kdevelop.org>
2299         Fix some potential out-of-memory crashes.
2301         * src/base/ftobjs.c (ft_glyphslot_done): Check `slot->internal'.
2302         * src/base/ftstream.c (FT_Stream_ReleaseFrame): Check `stream'.
2303         * src/truetype/ttinterp.c (TT_New_Context): Avoid double-free of
2304         `exec' in case of failure.
2306 2009-06-07  Werner Lemberg  <wl@gnu.org>
2308         Simplify math.
2309         Suggested by Alexei Podtelezhnikov <apodtele@gmail.com>.
2311         * src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
2312         Horizontal_Gray_Sweep_Drop): Do it.
2314 2009-06-04  Werner Lemberg  <wl@gnu.org>
2316         Preparation for fixing scan conversion rules 4 and 6.
2318         * src/raster/ftraster.c (TFlow): Replace enumeration with...
2319         (Flow_Up): This macro.
2320         (TProfile): Replace `flow' member with `flags' bit field.
2321         Update all affected code.
2323 2009-05-29  James Cloos  <cloos@jhcloos.com>
2325         Enable autohinting for glyphs rotated by multiples of 90°.
2327         * src/base/ftobjs.c (FT_Load_Glyph): Alter check for permitted
2328         matrices to allow rotations by multiples of 90°, not only unrotated,
2329         possibly slanted matrices.
2331 2009-05-28  Werner Lemberg  <wl@gnu.org>
2333         Remove compiler warning.
2334         Reported by Krzysztof Kowalczyk <kkowalczyk@gmail.com>.
2336         * src/autofit/aflatin2.c (af_latin2_hint_edges): Move declaration of
2337         `n_edges' into `#if' block.
2339 2009-05-28  Werner Lemberg  <wl@gnu.org>
2341         Make compilation work with FT_CONFIG_OPTION_USE_ZLIB not defined.
2342         Reported by Krzysztof Kowalczyk <kkowalczyk@gmail.com>.
2344         * src/pcf/pcfdrivr.c (PCF_Face_Init) [!FT_CONFIG_OPTION_USE_ZLIB]:
2345         Make it work.
2346         Simplify #ifdef logic.
2348 2009-05-22  Werner Lemberg  <wl@gnu.org>
2350         Improve b/w rasterizer.
2351         Problem reported by Krzysztof Kotlenga <pocek@users.sf.net>.
2353         * src/raster/raster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
2354         Horizontal_Gray_Sweep_Drop): For smart drop-out mode, if
2355         intersections are equally distant relative to next pixel center,
2356         select the left pixel, not the right one.
2358 2009-05-19  Werner Lemberg  <wl@gnu.org>
2360         Fix Savannah bug #26600.
2362         * src/type42/t42parse.c (t42_load_keyword): Handle
2363         T1_FIELD_LOCATION_FONT_EXTRA.
2365 2009-04-30  Werner Lemberg  <wl@gnu.org>
2367         Document recent changes to ftview.
2369         * docs/CHANGES: Do it.
2371 2009-04-27  Werner Lemberg  <wl@gnu.org>
2373         autohinter: Don't change digit widths if all widths are the same.
2374         This fixes FreeDesktop bug #21197.
2376         * src/autofit/afglobal.c (AF_DIGIT): New macro.
2377         (af_face_globals_compute_script_coverage): Mark ASCII digits in
2378         `glyph_scripts' array.
2379         (af_face_globals_get_metrics): Updated.
2380         (af_face_globals_is_digit): New function.
2381         * src/autofit/afglobal.h: Updated.
2382         (AF_ScriptMetricsRec): Add `digits_have_same_width' flag.
2384         * src/autofit/aflatin.c: Include FT_ADVANCES_H.
2385         (af_latin_metrics_check_digits): New function.
2386         (af_latin_metrics_init): Use it.
2387         * src/autofit/aflatin.h: Updated.
2388         * src/autofit/afcjk.c (af_cjk_metrics_init): Updated.
2390         * src/autofit/aflatin2.c: Similar changes as with aflatin.c.
2392         * src/autofit/afloader.c (af_loader_load_g): Test digit width.
2394         * docs/CHANGES: Document it.
2396 2009-04-26  Werner Lemberg  <wl@gnu.org>
2398         Make ftgrays compile with _STANDALONE_ and FT_STATIC_RASTER again.
2399         Problems reported by suyu@cooee.cn.
2401         * src/smooth/ftgrays.c (FT_DEFINE_OUTLINE_FUNCS,
2402         FT_DEFINE_RASTER_FUNCS) [_STANDALONE_]: Define.
2403         [!_STANDALONE_]: Include ftspic.h only here.
2404         (ras): Define/declare after definition of `TWorker'.
2405         Use `RAS_VAR_' where necessary.
2407 2009-04-21  Karl Berry  <karl@gnu.org>
2409         Fix AC_CHECK_FT2.
2411         * builds/unix/freetype2.m4: Only check PATH for freetype-config if
2412         we did not already find it from a prefix option.
2414 2009-04-05  Oran Agra  <oran@monfort.co.il>
2416         Add #error to modules and files that do not support PIC yet.
2418         When FT_CONFIG_OPTION_PIC is defined the following files will
2419         create #error:
2420         * src/bdf/bdfdrivr.h
2421         * src/cache/ftcmanag.c
2422         * src/cid/cidriver.h
2423         * src/gxvalid/gxvmod.h
2424         * src/gzip/ftgzip.c
2425         * src/lzw/ftlzw.c
2426         * src/otvalid/otvmod.h
2427         * src/pcf/pcfdrivr.h
2428         * src/pfr/pfrdrivr.h
2429         * src/psaux/psauxmod.h
2430         * src/type1/t1driver.h
2431         * src/type42/t42drivr.h
2432         * src/winfonts/winfnt.h
2434 2009-04-05  Oran Agra  <oran@monfort.co.il>
2436         Position Independent Code (PIC) support in autofit module.
2438         * include/freetype/internal/autohint.h add macros to init
2439         instances of FT_AutoHinter_ServiceRec.
2441         * src/autofit/afmodule.h declare autofit_module_class
2442         using macros from ftmodapi.h,
2443         when FT_CONFIG_OPTION_PIC is defined create and destroy
2444         functions will be declared.
2445         * src/autofit/afmodule.c when FT_CONFIG_OPTION_PIC is defined
2446         af_autofitter_service and autofit_module_class structs
2447         will have functions to init or create and destroy them
2448         instead of being allocated in the global scope.
2449         And macros will be used from afpic.h in order to access them.
2451         * src/autofit/aftypes.h add macros to init and declare
2452         instances of AF_ScriptClassRec.
2454         * src/autofit/afcjk.h declare af_cjk_script_class
2455         using macros from aftypes.h,
2456         when FT_CONFIG_OPTION_PIC is defined init function will be declared.
2457         * src/autofit/afcjk.c when FT_CONFIG_OPTION_PIC is defined
2458         af_cjk_script_class struct will have function to init it instead of
2459         being allocated in the global scope.
2461         * src/autofit/afdummy.h declare af_dummy_script_class
2462         using macros from aftypes.h,
2463         when FT_CONFIG_OPTION_PIC is defined init function will be declared.
2464         * src/autofit/afdummy.c when FT_CONFIG_OPTION_PIC is defined
2465         af_dummy_script_class struct will have function to init it instead of
2466         being allocated in the global scope.
2468         * src/autofit/afindic.h declare af_indic_script_class
2469         using macros from aftypes.h,
2470         when FT_CONFIG_OPTION_PIC is defined init function will be declared.
2471         * src/autofit/afindic.c when FT_CONFIG_OPTION_PIC is defined
2472         af_indic_script_class struct will have function to init it instead of
2473         being allocated in the global scope.
2475         * src/autofit/aflatin.h declare af_latin_script_class
2476         using macros from aftypes.h,
2477         when FT_CONFIG_OPTION_PIC is defined init function will be declared.
2478         * src/autofit/aflatin.c when FT_CONFIG_OPTION_PIC is defined
2479         af_latin_script_class struct will have function to init it instead of
2480         being allocated in the global scope.
2481         Change af_latin_blue_chars to be PIC-compatible by being a two
2482         dimentional array rather than array of pointers.
2485         * src/autofit/aflatin2.h declare af_latin2_script_class
2486         using macros from aftypes.h,
2487         when FT_CONFIG_OPTION_PIC is defined init function will be declared.
2488         * src/autofit/aflatin2.c when FT_CONFIG_OPTION_PIC is defined
2489         af_latin2_script_class struct will have function to init it instead of
2490         being allocated in the global scope.
2491         Change af_latin2_blue_chars to be PIC-compatible by being a two
2492         dimentional array rather than array of pointers.
2494         * src/autofit/afglobal.c when FT_CONFIG_OPTION_PIC is defined
2495         af_script_classes array initialization was moved to afpic.c and
2496         is later refered using macros defeined in afpic.h.
2498         New Files:
2499         * src/autofit/afpic.h declare struct to hold PIC globals for autofit
2500         module and macros to access them.
2501         * src/autofit/afpic.c implement functions to allocate, destroy and
2502         initialize PIC globals for autofit module.
2504         * src/autofit/autofit.c add new file to build: afpic.c.
2505         * src/autofit/jamfile add new files to FT2_MULTI build: afpic.c.
2507 2009-04-05  Oran Agra  <oran@monfort.co.il>
2509         Position Independent Code (PIC) support in pshinter module.
2511         * include/freetype/internal/pshints.h add macros to init
2512         instances of PSHinter_Interface.
2514         * src/pshinter/pshmod.h declare pshinter_module_class
2515         using macros from ftmodapi.h,
2516         when FT_CONFIG_OPTION_PIC is defined create and destroy
2517         functions will be declared.
2518         * src/pshinter/pshmod.c when FT_CONFIG_OPTION_PIC is defined
2519         pshinter_interface and pshinter_module_class structs
2520         will have functions to init or create and destroy them
2521         instead of being allocated in the global scope.
2522         And macros will be used from pshpic.h in order to access them.
2524         New Files:
2525         * src/pshinter/pshpic.h declare struct to hold PIC globals for pshinter
2526         module and macros to access them.
2527         * src/pshinter/pshpic.c implement functions to allocate, destroy and
2528         initialize PIC globals for pshinter module.
2530         * src/pshinter/pshinter.c add new file to build: pshpic.c.
2531         * src/pshinter/jamfile add new files to FT2_MULTI build: pshpic.c.
2533 2009-04-05  Oran Agra  <oran@monfort.co.il>
2535         Position Independent Code (PIC) support in psnames module.
2537         * include/freetype/internal/services/svpscmap.h add macros to init
2538         instances of FT_Service_PsCMapsRec.
2540         * src/psnames/psmodule.h declare psnames_module_class
2541         using macros from ftmodapi.h,
2542         when FT_CONFIG_OPTION_PIC is defined create and destroy
2543         functions will be declared.
2544         * src/psnames/psmodule.c when FT_CONFIG_OPTION_PIC is defined
2545         pscmaps_interface and pscmaps_services structs
2546         and psnames_module_class array
2547         will have functions to init or create and destroy them
2548         instead of being allocated in the global scope.
2549         And macros will be used from pspic.h in order to access them.
2551         New Files:
2552         * src/psnames/pspic.h declare struct to hold PIC globals for psnames
2553         module and macros to access them.
2554         * src/psnames/pspic.c implement functions to allocate, destroy and
2555         initialize PIC globals for psnames module.
2557         * src/psnames/psnames.c add new file to build: pspic.c.
2558         * src/psnames/jamfile add new files to FT2_MULTI build: pspic.c.
2560 2009-04-05  Oran Agra  <oran@monfort.co.il>
2562         Position Independent Code (PIC) support in raster renderer.
2564         * src/raster/ftrend1.h declare ft_raster1_renderer_class
2565         and ft_raster5_renderer_class
2566         using macros from ftrender.h,
2567         when FT_CONFIG_OPTION_PIC is defined create and destroy
2568         functions will be declared.
2569         * src/smooth/ftrend1.c when FT_CONFIG_OPTION_PIC is defined
2570         ft_raster1_renderer_class and ft_raster5_renderer_class structs
2571         will have functions to init or create and destroy them
2572         instead of being allocated in the global scope.
2573         Macros will be used from rastpic.h in order to access
2574         ft_standard_raster from the pic_container (allocated in ftraster.c).
2575         In ft_raster1_render when PIC is enabled, the last letter of
2576         module_name is used to verfy the renderer class rather than the
2577         class pointer.
2579         * src/raster/ftraster.c when FT_CONFIG_OPTION_PIC is defined
2580         ft_standard_raster struct will have function to init it
2581         instead of being allocated in the global scope.
2583         New Files:
2584         * src/raster/rastpic.h declare struct to hold PIC globals for raster
2585         renderer and macros to access them.
2586         * src/raster/rastpic.c implement functions to allocate, destroy and
2587         initialize PIC globals for raster renderer.
2589         * src/raster/raster.c add new file to build: rastpic.c.
2590         * src/raster/jamfile add new files to FT2_MULTI build: rastpic.c.
2592 2009-04-05  Oran Agra  <oran@monfort.co.il>
2594         Position Independent Code (PIC) support in smooth renderer.
2596         * src/smooth/ftsmooth.h declare ft_smooth_renderer_class,
2597         ft_smooth_lcd_renderer_class and ft_smooth_lcd_v_renderer_class
2598         using macros from ftrender.h,
2599         when FT_CONFIG_OPTION_PIC is defined create and destroy
2600         functions will be declared.
2601         * src/smooth/ftsmooth.c when FT_CONFIG_OPTION_PIC is defined
2602         the following structs:
2603         ft_smooth_renderer_class, ft_smooth_lcd_renderer_class
2604         and ft_smooth_lcd_v_renderer_class
2605         will have functions to init or create and destroy them
2606         instead of being allocated in the global scope.
2607         And macros will be used from ftspic.h in order to access
2608         ft_grays_raster from the pic_container (allocated in ftgrays.c).
2610         * src/smooth/ftgrays.h include FT_CONFIG_CONFIG_H
2611         * src/smooth/ftgrays.c when FT_CONFIG_OPTION_PIC is NOT defined
2612         func_interface was moved from gray_convert_glyph_inner function
2613         to the global scope.
2614         When FT_CONFIG_OPTION_PIC is defined
2615         func_interface and ft_grays_raster structs
2616         will have functions to init them
2617         instead of being allocated in the global scope.
2618         And func_interface will be allocated on the stack of
2619         gray_convert_glyph_inner.
2621         New Files:
2622         * src/smooth/ftspic.h declare struct to hold PIC globals for smooth
2623         renderer and macros to access them.
2624         * src/smooth/ftspic.c implement functions to allocate, destroy and
2625         initialize PIC globals for smooth renderer.
2627         * src/smooth/smooth.c add new file to build: ftspic.c.
2628         * src/smooth/jamfile add new files to FT2_MULTI build: ftspic.c.
2630 2009-04-05  Oran Agra  <oran@monfort.co.il>
2632         Position Independent Code (PIC) support in cff driver.
2634         * include/freetype/internal/services/svcid.h add macros to init
2635         instances of FT_Service_CIDRec.
2636         * include/freetype/internal/services/svpsinfo.h add macros to init
2637         instances of FT_Service_PsInfoRec.
2639         * src/cff/cffcmap.h declare cff_cmap_encoding_class_rec
2640         and cff_cmap_unicode_class_rec using macros from
2641         ftobjs.h, when FT_CONFIG_OPTION_PIC is defined create and destroy
2642         functions will be declared.
2643         * src/cff/cffcmap.c when FT_CONFIG_OPTION_PIC is defined
2644         the following structs:
2645         cff_cmap_encoding_class_rec and cff_cmap_unicode_class_rec
2646         will have functions to init or create and destroy them
2647         instead of being allocated in the global scope.
2649         * src/cff/cffdrivr.h declare cff_driver_class using macros from
2650         ftdriver.h, when FT_CONFIG_OPTION_PIC is defined create and destroy
2651         functions will be declared.
2652         * src/cff/cffdrivr.c when FT_CONFIG_OPTION_PIC is defined
2653         the following structs:
2654         cff_service_glyph_dict, cff_service_ps_info, cff_service_ps_name
2655         cff_service_get_cmap_info, cff_service_cid_info, cff_driver_class,
2656         and cff_services array
2657         will have functions to init or create and destroy them
2658         instead of being allocated in the global scope.
2659         And macros will be used from cffpic.h in order to access them
2660         from the pic_container.
2661         Use macros from cffpic.h in order to access the
2662         structs allocated in cffcmap.c
2664         * src/cff/cffobjs.c Use macros from cffpic.h in order to access the
2665         structs allocated in cffcmap.c
2667         * src/cff/parser.c when FT_CONFIG_OPTION_PIC is defined
2668         implement functions to create and destroy cff_field_handlers array
2669         instead of being allocated in the global scope.
2670         And macros will be used from cffpic.h in order to access it
2671         from the pic_container.
2673         New Files:
2674         * src/cff/cffpic.h declare struct to hold PIC globals for cff
2675         driver and macros to access them.
2676         * src/cff/cffpic.c implement functions to allocate, destroy and
2677         initialize PIC globals for cff driver.
2679         * src/cff/cff.c add new file to build: cffpic.c.
2680         * src/cff/jamfile add new files to FT2_MULTI build: cffpic.c.
2682 2009-04-05  Oran Agra  <oran@monfort.co.il>
2684         Position Independent Code (PIC) support in sfnt driver.
2686         * include/freetype/internal/services/svbdf.h add macros to init
2687         instances of FT_Service_BDFRec.
2688         * include/freetype/internal/services/svgldict.h add macros to init
2689         instances of FT_Service_GlyphDictRec.
2690         * include/freetype/internal/services/svpostnm.h add macros to init
2691         instances of FT_Service_PsFontNameRec.
2692         * include/freetype/internal/services/svsfnt.h add macros to init
2693         instances of FT_Service_SFNT_TableRec.
2694         * include/freetype/internal/services/svttcmap.h add macros to init
2695         instances of FT_Service_TTCMapsRec.
2696         * include/freetype/internal/sfnt.h add macros to init
2697         instances of SFNT_Interface.
2699         * src/sfnt/sfdriver.h declare sfnt_module_class using macros from
2700         ftmodapi.h, when FT_CONFIG_OPTION_PIC is defined create and destroy
2701         functions will be declared.
2702         * src/sfnt/sfdriver.c when FT_CONFIG_OPTION_PIC is defined
2703         the following structs:
2704         sfnt_service_sfnt_table, sfnt_service_glyph_dict, sfnt_service_ps_name
2705         tt_service_get_cmap_info, sfnt_service_bdf, sfnt_interface,
2706         sfnt_module_class, and sfnt_services array
2707         will have functions to init or create and destroy them
2708         instead of being allocated in the global scope.
2709         And macros will be used from sfntpic.h in order to access them
2710         from the pic_container.
2712         * src/sfnt/ttcmap.h add macros to init
2713         instances of TT_CMap_ClassRec.
2714         * src/sfnt/ttcmap.c when FT_CONFIG_OPTION_PIC is defined
2715         the following structs:
2716         tt_cmap0_class_rec, tt_cmap2_class_rec, tt_cmap4_class_rec
2717         tt_cmap6_class_rec, tt_cmap8_class_rec, tt_cmap10_class_rec,
2718         tt_cmap12_class_rec, tt_cmap14_class_rec and tt_cmap_classes array
2719         will have functions to init or create and destroy them
2720         instead of being allocated in the global scope.
2721         And macros will be used from sfntpic.h in order to access them
2722         from the pic_container.
2723         The content of tt_cmap_classes is now described in the
2724         new file 'ttcmapc.h'.
2726         New Files:
2727         * src/sfnt/sfntpic.h declare struct to hold PIC globals for sfnt
2728         driver and macros to access them.
2729         * src/sfnt/sfntpic.c implement functions to allocate, destroy and
2730         initialize PIC globals for sfnt driver.
2731         * src/sfnt/ttcmapc.h describing the content of
2732         tt_cmap_classes allocated in ttcmap.c
2734         * src/sfnt/sfnt.c add new file to build: sfntpic.c.
2735         * src/sfnt/jamfile add new files to FT2_MULTI build: sfntpic.c.
2737 2009-04-05  Oran Agra  <oran@monfort.co.il>
2739         Position Independent Code (PIC) support in truetype driver.
2741         * include/freetype/internal/services/svmm.h add macros to init
2742         instances of FT_Service_MultiMastersRec.
2743         * include/freetype/internal/services/svttglyf.h add macros to init
2744         instances of FT_Service_TTGlyfRec.
2746         * src/truetype/ttdriver.h declare tt_driver_class using macros from
2747         ftdriver.h, when FT_CONFIG_OPTION_PIC is defined create and destroy
2748         functions will be declared.
2749         * src/truetype/ttdriver.c when FT_CONFIG_OPTION_PIC is defined
2750         the following structs:
2751         tt_service_gx_multi_masters, tt_service_truetype_glyf, tt_driver_class
2752         and tt_services array,
2753         will have functions to init or create and destroy them
2754         instead of being allocated in the global scope.
2755         And macros will be used from ttpic.h in order to access them
2756         from the pic_container.
2757         * src/truetype/ttobjs.c change trick_names array to be
2758         PIC-compatible by being a two dimentional array rather than array
2759         of pointers.
2761         New Files:
2762         * src/truetype/ttpic.h declare struct to hold PIC globals for truetype
2763         driver and macros to access them.
2764         * src/truetype/ttpic.c implement functions to allocate, destroy and
2765         initialize PIC globals for truetype driver.
2767         * src/truetype/truetype.c add new file to build: ttpic.c.
2768         * src/truetype/jamfile add new files to FT2_MULTI build: ttpic.c.
2770 2009-04-05  Oran Agra  <oran@monfort.co.il>
2772         Position Independent Code (PIC) support and infrastructure in base.
2774         * include/freetype/config/ftoption.h add FT_CONFIG_OPTION_PIC
2775         * include/freetype/internal/ftobjs.h Add pic_container member to
2776         FT_LibraryRec.
2777         Add macros to declare and init instances of FT_CMap_ClassRec.
2778         Add macros to init instances of FT_Outline_Funcs and FT_Raster_Funcs.
2779         Add macros to declare, allocate and initialize modules
2780         (FT_Module_Class).
2781         Add macros to declare, allocate and initialize renderers
2782         (FT_Renderer_Class).
2783         Add macro to init instances of FT_Glyph_Class.
2784         Add macros to declare, allocate and initialize drivers
2785         (FT_Driver_ClassRec).
2786         * include/freetype/internal/ftpic.h new file to declare the
2787         FT_PIC_Container struct and the functions to allocate and detroy it.
2788         * include/freetype/internal/ftserv.h add macros to allocate and
2789         destory arrays of FT_ServiceDescRec.
2790         * include/freetype/internal/internal.h define macro to include
2791         ftpic.h.
2793         New Files:
2794         * src/base/ftpic.c implement functions to allocate and destory the
2795         global pic_container.
2796         * src/base/basepic.h declare struct to hold PIC globals for base and
2797         macros to access them.
2798         * src/base/basepic.c implement functions to allocate, destroy and
2799         initialize PIC globals for base.
2801         * src/base/ftinit.c when FT_CONFIG_OPTION_PIC is defined implement
2802         functions that allocate and destroy ft_default_modules according to
2803         FT_CONFIG_MODULES_H in the pic_container instead of the global scope
2804         and use macro from basepic.h to access it.
2805         * src/base/ftobjs.c add calls to the functions that allocate and
2806         destroy the global pic_container when the library is created and
2807         destroyed.
2809         * src/base/jamfile add new files to FT2_MULTI build:
2810         ftpic.c and basepic.c.
2811         * src/base/ftbase.c add new files to build:
2812         ftpic.c and basepic.c.
2814         * src/base/ftglyph.c when FT_CONFIG_OPTION_PIC is defined
2815         ft_bitmap_glyph_class and ft_outline_glyph_class will be allocated
2816         in the pic_container instead of the global scope and use macros from
2817         basepic.h to access them.
2818         * src/base/ftbbox.c allocate bbox_interface stract on the stack
2819         instead of the global scope when FT_CONFIG_OPTION_PIC is defined.
2820         * src/base/ftstroke.c access ft_outline_glyph_class allocated in
2821         ftglyph.c via macros from basepic.h
2823 2009-04-05  Oran Agra  <oran@monfort.co.il>
2825         Preparing changes in cff parser later needed for PIC version.
2827         * src/cff/cffload.c, src/cff/cffload.h, src/cff/cffobjs.c,
2828         src/cff/cffparse.c, src/cff/cffparse.h: Add library pointer to
2829         'CFF_ParserRec' set by `cff_parser_init'.
2830         Route library pointer from 'cff_face_init' to 'cff_subfont_load'
2831         for `cff_parser_init'.
2833         * src/cff/cffparse.c (CFF_Field_Handler): Move it to...
2834         * src/cff/cffparse.h: This file, to be used by other C files.
2836 2009-04-05  Oran Agra  <oran@monfort.co.il>
2838         Minor change in ftstroke.c.
2840         * src/base/ftstroke.c (FT_StrokerRec): Replace `memory' member with
2841         `library' needed for PIC version.
2842         Update all callers.
2844 2009-04-04  Werner Lemberg  <wl@gnu.org>
2846         ftnames.c -> ftsnames.c
2848         * src/base/ftnames.c: Rename to...
2849         * src/base/ftsnames.c: This.
2850         * src/base/Jamfile, src/base/rules.mk, src/base/ftbase.c: Updated.
2852 2009-04-04  Werner Lemberg  <wl@gnu.org>
2854         Add support for cmap type 13.
2856         * devel/ftoption.h, include/freetype/config/ftoption.h
2857         (TT_CONFIG_CMAP_FORMAT_13): New macro.
2859         * src/sfnt/ttcmap.c (TT_CMap13Rec, tt_cmap13_init,
2860         tt_cmap13_validate, tt_cmap13_char_index, tt_cmap13_char_next,
2861         tt_cmap13_get_info, tt_cmap13_char_map_def_binary,
2862         tt_cmap14_class_rec): New functions and structures for cmap 13
2863         support.
2864         (tt_cmap_classes): Register tt_cmap13_class_rec.
2866         * docs/CHANGES: Mention cmap 13 support.
2868 2009-04-01  Werner Lemberg  <wl@gnu.org>
2870         Ignore empty contours in CFF glyphs.
2872         Problem reported by Albert Astals Cid <aacid@kde.org>.
2874         * src/cff/cffgload.c (cff_builder_close_contour): Synchronize with
2875         t1_builder_close_contour.
2877 2009-03-21  Werner Lemberg  <wl@gnu.org>
2879         Another redundant header inclusion.
2881         * src/truetype/ttgxvar.c: Fix Ghostscript Coverity issue #4041.
2883 2009-03-21  Werner Lemberg  <wl@gnu.org>
2885         Remove redundant header inclusions.
2887         This covers many Ghostscript Coverity issues.
2889         * src/*: Do it.
2891 2009-03-21  Werner Lemberg  <wl@gnu.org>
2893         Fix Ghostscript Coverity issue #3904.
2895         * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Protect against
2896         invalid values of `runcnt'.
2898 2009-03-20  Werner Lemberg  <wl@gnu.org>
2900         Fix `make multi' run.
2902         * src/smooth/ftsmooth.h: Include FT_INTERNAL_DEBUG_H.
2904 2009-03-20  Werner Lemberg  <wl@gnu.org>
2906         Fix Savannah bug #25923.
2908         * src/cache/ftccmap.c (FTC_CMAP_HASH): Fix typo.
2910 2009-03-20  Werner Lemberg  <wl@gnu.org>
2912         Protect against too large glyphs.
2914         Problem reported by Tavis Ormandy <taviso@google.com>.
2916         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Don't allow
2917         `pitch' or `height' to be larger than 0xFFFF.
2919 2009-03-20  Werner Lemberg  <wl@gnu.org>
2920             Tavis Ormandy  <taviso@google.com>
2922         Fix validation for various cmap table formats.
2924         * src/sfnt/ttcmap.c (tt_cmap8_validate, tt_cmap10_validate,
2925         tt_cmap12_validate): Check `length' correctly.
2926         (tt_cmap_14_validate): Check `length' and `numMappings' correctly.
2928 2009-03-20  Werner Lemberg  <wl@gnu.org>
2930         Protect against malformed compressed data.
2932         * src/lzw/ftzopen.c (ft_lzwstate_io): Test whether `state->prefix' is
2933         zero.
2935 2009-03-20  Werner Lemberg  <wl@gnu.org>
2937         Protect against invalid SID values in CFFs.
2939         Problem reported by Tavis Ormandy <taviso@google.com>.
2941         * src/cff/cffload.c (cff_charset_load): Reject SID values larger
2942         than 64999.
2944 2009-03-19  Vincent Richomme  <richom.v@free.fr>
2946         Update WinCE Visual C project files.
2948         * builds/wince/vc2005-ce/freetype.vcproj,
2949         builds/wince/vc2008-ce/freetype.vcproj: Add missing base extension
2950         files.
2952 2009-03-19  Werner Lemberg  <wl@gnu.org>
2954         Remove unused Win32 code.
2956         * builds/wince/ftdebug.c: Remove code guarded with `!_WIN32_WCE'.
2957         Since Win32 is handled separately this is no longer needed.
2959 2009-03-19  Vincent Richomme  <richom.v@free.fr>
2961         Make `gzip' module compile on WinCE.
2963         * src/gzip/zconf.h [_WIN32_WCE]: Define NO_ERRNO_H.
2965 2009-03-19  Werner Lemberg  <wl@gnu.org>
2967         Remove unused WinCE code.
2969         * builds/win32/ftdebug.c: Remove code guarded with `_WIN32_WCE'.
2970         Since WinCE is handled separately this is no longer needed.
2972 2009-03-16  Werner Lemberg  <wl@gnu.org>
2974         docmaker: Don't ignore single-line code blocks.
2976         * src/tools/docmaker/content.py (DocBlock::_init__): Fix change from
2977         2009-01-31.
2979 2009-03-15  Steve Langasek  <steve.langasek@canonical.com>
2981         Use __asm__ for declaring assembly instead of asm.
2983         * builds/unix/ftconfig.in (FT_MulFix_arm): Use __asm__ instead of
2984         asm on arm, fixing a build failure on armel with -pedantic.
2986 2009-03-14  Werner Lemberg  <wl@gnu.org>
2988         Fix valgrind warning.
2990         * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_bit_aligned): Don't read
2991         past the end of the frame.
2993 2009-03-12  Werner Lemberg  <wl@gnu.org>
2995         * Version 2.3.9 released.
2996         =========================
2999         Tag sources with `VER-2-3-9'.
3001 2009-03-12  Werner Lemberg  <wl@gnu.org>
3003         * builds/unix/freetype2.in: Move @FT2_EXTRA_LIBS@ to `Libs.private'.
3005 2009-03-12  Werner Lemberg  <wl@gnu.org>
3007         Fix some FreeType Coverity issues as reported for Ghostscript.
3009         * src/base/ftobjs.c (FT_New_Face, FT_New_Memory_Face): Initialize
3010         `args.stream' (#3874, #3875).
3011         (open_face_PS_from_sfnt_stream): Improve error management (#3786).
3012         * src/base/ftmm.c (ft_face_get_mm_service): Fix check of `aservice'
3013         (#3870).
3014         * src/base/ftstroke.c (ft_stroke_border_get_counts): Remove dead
3015         code (#3790).
3016         * src/base/ftrfork.c (raccess_guess_apple_generic): Check error
3017         value of `FT_Stream_Skip' (#3784).
3019         * src/type1/t1gload.c (T1_Load_Glyph): Check `size' before accessing
3020         it (#3872)
3022         * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Check `face' before accessing
3023         it (#3871).
3024         * src/pcf/pcfread.c (pcf_get_metrics): Handle return value of
3025         `pcf_get_metric' (#3789, #3782).
3026         (pcf_get_properties): Use FT_STREAM_SKIP (#3783).
3028         * src/cache/ftcmanag.c (FTC_Manager_RegisterCache): Fix check of
3029         `acache' (#3797)
3031         * src/cff/cffdrivr.c (cff_ps_get_font_info): Fix check of `cff'
3032         (#3796).
3033         * src/cff/cffgload.c (cff_decoder_prepare): Check `size' (#3795).
3034         * src/cff/cffload.c (cff_index_get_pointers): Add comment (#3794).
3036         * src/bdf/bdflib.c (_bdf_add_property): Check `fp->value.atom'
3037         (#3793).
3038         (_bdf_parse_start): Add comment (#3792).
3040         * src/raster/ftraster.c (Finalize_Profile_Table): Check
3041         `ras.fProfile' (#3791).
3043         * src/sfnt/ttsbit.c (Load_SBit_Image): Use FT_STREAM_SKIP (#3785).
3045         * src/gzip/ftgzip.c (ft_gzip_get_uncompressed_size): Properly ignore
3046         seek error (#3781).
3048 2009-03-11  Michael Toftdal  <toftdal@gmail.com>
3050         Extend CID service functions to handle CID-keyed CFFs as CID fonts.
3052         * include/freetype/ftcid.h (FT_Get_CID_Is_Internally_CID_keyed,
3053         FT_Get_CID_From_Glyph_Index): New functions.
3055         * include/freetype/internal/services/svcid.h
3056         (FT_CID_GetIsInternallyCIDKeyedFunc,
3057         FT_CID_GetCIDFromGlyphIndexFunc): New function typedefs.
3058         (CID Service): Use them.
3060         * src/base/ftcid.c: Include FT_CID_H.
3061         (FT_Get_CID_Is_Internally_CID_keyed, FT_Get_CID_From_Glyph_Index):
3062         New functions.
3064         * src/cff/cffdrivr.c (cff_get_is_cid, cff_get_cid_from_glyph_index):
3065         New functions.
3066         (cff_service_cid_info): Add them.
3067         * src/cff/cffload.c (cff_font_load): Don't free `font->charset.sids'
3068         -- it is needed for access as a CID-keyed font.  It gets deleted
3069         later on.
3071         * src/cid/cidriver.c (cid_get_is_cid, cid_get_cid_from_glyph_index):
3072         New functions.
3073         (cid_service_cid_info): Add them.
3075         * docs/CHANGES: Updated.
3077 2009-03-11  Bram Tassyns  <bramt@enfocus.be>
3079         Fix Savannah bug #25597.
3081         * src/cff/cffparse.c (cff_parse_real): Don't allow fraction_length
3082         to become larger than 9.
3084 2009-03-11  Werner Lemberg  <wl@gnu.org>
3086         Fix Savannah bug #25814.
3088         * builds/unix/freetype2.in: As suggested in the bug report, move
3089         @LIBZ@ to `Libs.private'.
3091 2009-03-11  Werner Lemberg  <wl@gnu.org>
3093         Fix Savannah bug #25781.
3094         We now simply check for a valid `offset', no longer handling `delta
3095         = 1' specially.
3097         * src/sfnt/ttcmap.c (tt_cmap4_validate): Don't check `delta' for
3098         last segment.
3099         (tt_cmap4_set_range, tt_cmap4_char_map_linear,
3100         tt_cmap4_char_map_binary): Check offset.
3102 2009-03-11  Werner Lemberg  <wl@gnu.org>
3104         * src/base/Jamfile: Fix handling of ftadvanc.c.
3105         Reported by Oran Agra <oran@monfort.co.il>.
3107 2009-03-10  Vincent Richomme  <richom.v@free.fr>
3109         Restructure Win32 and Wince compiler support.
3111         * src/builds/win32: Remove files for WinCE.
3112         Move VC 2005 support to a separate directory.
3113         Add directory for VC 2008 support.
3115         * src/builds/wince: New directory hierarchy for WinCE compilers
3116         (VC 2005 and VC 2008).
3118 2009-03-09  Werner Lemberg  <wl@gnu.org>
3120         More preparations for 2.3.9 release.
3122         * docs/CHANGES: Updated.
3124         * Jamfile, README: s/2.3.8/2.3.9/, s/238/239/.
3126 2009-03-09  Werner Lemberg  <wl@gnu.org>
3128         * src/sfnt/rules.mk (SFNT_DRV_H): Add ttsbit0.c.
3130 2009-03-09  Alexey Kryukov  <anagnost@yandex.ru>
3132         Fix handling of EBDT formats 8 and 9 (part 2).
3134         This patch fixes the following problems in ttsbit0.c:
3136         . Bitmaps for compound glyphs were never allocated.
3138         . `SBitDecoder' refused to load metrics if some other metrics have
3139           already been loaded.  This condition certainly makes no sense for
3140           recursive calls, so I've just disabled it.  Another possibility
3141           would be resetting `decoder->metrics_loaded' to false before
3142           loading each composite component.  However, we must restore the
3143           original metrics after finishing the recursion; otherwise we can
3144           get a misaligned glyph.
3146         . `tt_sbit_decoder_load_bit_aligned' incorrectly handled `x_pos',
3147           causing some glyph components to be shifted too far to the right
3148           (especially noticeable for small sizes).
3150         Note that support for grayscale bitmaps (not necessarily compound) is
3151         completely broken in ttsbit0.c.
3153         * src/sfnt/tt_sbit_decoder_load_metrics: Always load metrics.
3154         (tt_sbit_decoder_load_bit_aligned): Handle `x_pos' correctly in case
3155         of `h == height'.
3156         (tt_sbit_decoder_load_compound): Reset metrics after loading
3157         components.
3158         Allocate bitmap.
3160 2009-03-09  Werner Lemberg  <wl@gnu.org>
3162         * builds/unix/configure.raw (version_info): Set to 9:20:3.
3164 2009-03-03  David Turner  <david@freetype.org>
3166         Protect SFNT kerning table parser against malformed tables.
3168         This closes Savannah BUG #25750.
3170         * src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning): Fix a
3171         bug where a malformed table would be successfully loaded but later
3172         crash the engine during parsing.
3174 2009-03-03  David Turner  <david@freetype.org>
3176         Update documentation and bump version number to 2.3.9.
3178         * include/freetype/freetype.h: Bump patch version to 9.
3179         * docs/CHANGES: Document the ABI break in 2.3.8.
3180         * docs/VERSION.DLL: Update version numbers table for 2.3.9.
3182 2009-03-03  David Turner  <david@freetype.org>
3184         Remove ABI-breaking field in public PS_InfoFontRec definition.
3186         Instead, we define a new internal PS_FontExtraRec structure to
3187         hold the additional field, then place it in various internal
3188         positions of the corresponding FT_Face derived objects.
3190         * include/freetype/t1tables.h (PS_FontInfoRec): Remove the
3191         `fs_type' field from the public structure.
3192         * include/freetype/internal/psaux.h (T1_FieldLocation): New
3193         enumeration `T1_FIELD_LOCATION_FONT_EXTRA'.
3194         * include/freetype/internal/t1types.h (PS_FontExtraRec): New
3195         structure.
3196         (T1_FontRec, CID_FaceRec): Add it.
3198         * src/cid/cidload.c (cid_load_keyword): Handle
3199         T1_FIELD_LOCATION_FONT_EXTRA.
3200         * src/cid/cidtoken.h, src/type1/t1tokens.h, src/type42/t42parse.c:
3201         Adjust FT_STRUCTURE and T1CODE properly to handle `FSType'.
3202         * src/type1/t1load.c (t1_load_keyword): Handle
3203         T1_FIELD_LOCATION_FONT_EXTRA.
3205         * include/freetype/internal/services/svpsinfo.h (PsInfo service):
3206         Add `PS_GetFontExtraFunc' function typedef.
3208         * src/base/ftfstype.c: Include FT_INTERNAL_SERVICE_H and
3209         FT_SERVICE_POSTSCRIPT_INFO_H.
3210         (FT_Get_FSType_Flags): Use POSTSCRIPT_INFO service.
3212         * src/cff/cffdrivr.c (cff_service_ps_info): Updated.
3213         * src/cid/cidriver.c (cid_ps_get_font_extra): New function.
3214         (cid_service_ps_info): Updated.
3215         * src/type1/t1driver.c (t1_ps_get_font_extra): New function.
3216         (t1_service_ps_info): Updated.
3217         * src/type42/t42drivr.c (t42_ps_get_font_extra): New function.
3218         (t42_service_ps_info): Updated.
3220 2009-03-02  Alexey Kryukov  <anagnost@yandex.ru>
3222         Fix handling of EBDT formats 8 and 9.
3224         The main cycle in `blit_sbit' makes too many iterations: it actually
3225         needs the count of lines in the source bitmap rather than in the
3226         target image.
3228         * src/sfnt/ttsbit.c (blit_sbit) [FT_CONFIG_OPTION_OLD_INTERNALS]:
3229         Add parameter `source_height' and use it for main loop.
3230         (Load_SBit_Single) [FT_CONFIG_OPTION_OLD_INTERNALS]: Updated.
3232 2009-02-23  Werner Lemberg  <wl@gnu.org>
3234         Fix Savannah bug #25669.
3236         * src/base/ftadvanc.h (FT_Get_Advances): Fix serious typo.
3238         * src/base/ftobjs.c (FT_Select_Metrics, FT_Request_Metrics): Fix
3239         scaling factor for non-scalable fonts.
3241         * src/cff/cffdrivr.c (cff_get_advances): Use correct advance width
3242         value to prevent incorrect scaling.
3244         * docs/CHANGES: Document it.
3246 2009-02-15  Matt Godbolt  <matt@godbolt.org>
3248         Fix Savannah bug #25588.
3250         * builds/unix/ftconfig.in (FT_MulFix_arm): Use correct syntax for
3251         `orr' instruction.
3253 2009-02-11  Werner Lemberg  <wl@gnu.org>
3255         * src/truetype/ttobjs.c (tt_check_trickyness): Add `DFKaiShu'.
3256         Reported by David Bevan <dbevan@emtex.com>.
3258 2009-02-09  Werner Lemberg  <wl@gnu.org>
3260         Fix Savannah bug #25495.
3262         * src/sfnt/sfobjs.c (sfnt_load_face): Test for bitmap strikes before
3263         setting metrics and bbox values.  This ensures that the check for a
3264         font with neither a `glyf' table nor bitmap strikes can be performed
3265         early enough to set metrics and bbox values too.
3267 2009-02-04  Werner Lemberg  <wl@gnu.org>
3269         Fix Savannah bug #25480.
3271         * builds/unix/freetype-config.in: For --ftversion, don't use $prefix
3272         but $includedir.
3274 2009-01-31  Werner Lemberg  <wl@gnu.org>
3276         Minor docmaker improvements.
3278         * src/tools/docmaker/content.py (DocBlock::__init__): Ignore empty
3279         code blocks.
3281 2009-01-25  Werner Lemberg  <wl@gnu.org>
3283         Fix SCANCTRL handling in TTFs.
3284         Problem reported by Alexey Kryukov <anagnost@yandex.ru>.
3286         * src/truetype/ttinterp.c (Ins_SCANCTRL): Fix threshold handling.
3288 2009-01-23  Werner Lemberg  <wl@gnu.org>
3290         Move FT_Get_FSType_Flags to a separate file.
3291         Problem reported by Mickey Gabel <mickey@monfort.co.il>.
3293         * src/base/ftobjs.c (FT_Get_FSType_Flags): Move to...
3294         * src/base/ftfstype.c: This new file.
3296         * modules.cfg (BASE_EXTENSION): Add ftfstype.c.
3298         * docs/INSTALL.ANY: Updated.
3300         * builds/mac/*.txt, builds/amiga/*makefile*,
3301         builds/win32/{visualc,visualce}/freetype.*, builds/symbian/*:
3302         Updated.
3304 2009-01-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3306         * builds/unix/ftsystem.c (FT_Stream_Open): Fix 2 error
3307         messages ending without "\n".
3309 2009-01-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3311         Fix Savannah bug #25347.
3313         * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Rewind
3314         the stream to the original position passed to this function,
3315         when ft_lookup_PS_in_sfnt_stream() failed.
3316         (Mac_Read_sfnt_Resource): Rewind the stream to the head of
3317         sfnt resource body, when open_face_PS_from_sfnt_stream()
3318         failed.
3320 2009-01-19  Michael Lotz  <mmlr@mlotz.ch>
3322         Fix Savannah bug #25355.
3324         * include/freetype/config/ftconfig.h (FT_MulFix_i386): Make
3325         assembler code work with gcc 2.95.3 (as used by the Haiku project).
3326         Add `cc' register to the clobber list.
3328 2009-01-18  Werner Lemberg  <wl@gnu.org>
3330         Protect FT_Get_Next_Char.
3332         * src/sfnt/ttcmap.c (tt_cmap4_set_range): Apply fix similar to
3333         change from 2008-07-22.
3335         Patch from Ronen Ghoshal <rghoshal@emtex.com>.
3337 2009-01-18  Werner Lemberg  <wl@gnu.org>
3339         Implement FT_Get_Name_Index for SFNT driver.
3341         * src/sfnt/sfdriver.c (sfnt_get_name_index): New function.
3342         (sfnt_service_glyph_dict): Use it.
3344         Problem reported by Truc Truong <tructv@necsv.com>.
3346 2009-01-18  Werner Lemberg  <wl@gnu.org>
3348         * include/freetype/ftstroke.h (FT_Outline_GetInsideBorder): Fix
3349         documentation.  Problem reported by Truc Truong <tructv@necsv.com>.
3351         * docs/CHANGES: Updated.
3353 2009-01-14  Werner Lemberg  <wl@gnu.org>
3355         * Version 2.3.8 released.
3356         =========================
3359         Tag sources with `VER-2-3-8'.
3361         * docs/VERSION.DLL: Update documentation and bump version number to
3362         2.3.8.
3364         * README, Jamfile (RefDoc), builds/win32/visualc/index.html,
3365         builds/win32/visualc/freetype.dsp,
3366         builds/win32/visualc/freetype.vcproj,
3367         builds/win32/visualce/index.html,
3368         builds/win32/visualce/freetype.dsp,
3369         builds/win32/visualce/freetype.vcproj: s/2.3.7/2.3.8/, s/237/238/.
3371         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 8.
3373         * builds/unix/configure.raw (version_info): Set to 9:19:3.
3375         * docs/release: Updated.
3377 2009-01-14  Werner Lemberg  <wl@gnu.org>
3379         * builds/toplevel.mk (dist): Compress better.
3381 2009-01-13  Werner Lemberg  <wl@gnu.org>
3383         * src/base/ftobjs.c (FT_Get_FSType_Flags): Cast for compilation
3384         with C++.
3386 2009-01-13  Werner Lemberg  <wl@gnu.org>
3388         Don't use stdlib.h and friends directly.
3389         Reported by Mickey Gabel <mickey@monfort.co.il>.
3391         * src/base/ftdbgmem.c: s/<stdlib.h>/FT_CONFIG_STANDARD_LIBRARY_H/.
3393         * src/gzip/ftgzip.c, src/lzw/ftlzw.c, src/raster/ftmisc.h:
3394         s/<string.h>/FT_CONFIG_STANDARD_LIBRARY_H/.
3396         * src/autofit/aftypes.h, src/autofit/afhints.c,
3397         src/pshinter/pshalgo.c: s/<stdio.h>/FT_CONFIG_STANDARD_LIBRARY_H/
3399         * src/lzw/ftlzw.c, src/base/ftdbgmem.c: Don't include stdio.h.
3401 2009-01-12  Werner Lemberg  <wl@gnu.org>
3403         Avoid compiler warnings.
3405         * */*: s/do ; while ( 0 )/do { } while ( 0 )/.
3406         Reported by Sean McBride <sean@rogue-research.com>.
3408 2009-01-12  Werner Lemberg  <wl@gnu.org>
3410         Fix stdlib dependencies.
3412         Problem reported by Mickey Gabel <mickey@monfort.co.il>.
3414         * include/freetype/config/ftstdlib.h (ft_exit): Removed.  Unused.
3416         * src/autofit/afhints.c, src/base/ftlcdfil.c, src/smooth/ftsmooth.c:
3417         s/memcpy/ft_memcpy/.
3418         * src/psaux/t1decode.c: s/memset/ft_memset/, s/memcpy/ft_memcpy/.
3420 2009-01-11  Werner Lemberg  <wl@gnu.org>
3422         * docs/formats.txt: Add link to PCF specification.
3424         * include/freetype/ftbdf.h (FT_Get_BDF_Property): Improve
3425         documentation.
3427 2009-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3429         * src/base/ftadvanc.c (_ft_face_scale_advances, FT_Get_Advance,
3430         FT_Get_Advances): Change the type of load_flags from FT_UInt32 to
3431         FT_Int32, to match with the flags for FT_Load_Glyph().
3432         * src/cff/cffdrivr.c (cff_get_advances): Ditto.
3433         * src/truetype/ttdriver.c (tt_get_advances): Ditto.
3434         * include/freetype/ftadvanc.h (FT_Get_Advance, FT_Get_Advances):
3435         Ditto.
3436         * include/freetype/internal/ftdriver.h (FT_Face_GetAdvancesFunc):
3437         Ditto.
3439 2009-01-09  Daniel Zimmermann  <netzimme@aol.com>
3441         * src/gxvalid/gxvmort.c (gxv_mort_feature_validate): Fix wrong
3442         length check.  From Savannah patch #6682.
3444 2009-01-09  Werner Lemberg  <wl@gnu.org>
3446         Fix problem with T1_FIELD_{NUM,FIXED}_TABLE2.
3448         * src/psaux/psobjs.c (ps_parser_load_field_table): Don't handle
3449         `count_offset' if it is zero (i.e., unused).  Otherwise, the first
3450         element of the structure which holds the data is erroneously
3451         modified.  Problem reported by Chi Nguyen <chint@necsv.com>.
3453 2009-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3455         * src/base/ftadvanc.c (_ft_face_scale_advances, FT_Get_Advance,
3456         FT_Get_Advances): Extend the type of load_flags from FT_UInt to
3457         FT_UInt32, to pass 32-bit flags on 16bit platforms.
3458         * src/cff/cffdrivr.c (cff_get_advances): Ditto.
3459         * src/truetype/ttdriver.c (tt_get_advances): Ditto.
3460         * include/freetype/ftadvanc.h (FT_Get_Advance, FT_Get_Advances):
3461         Ditto.
3462         * include/freetype/internal/ftdriver.h (FT_Face_GetAdvancesFunc):
3463         Ditto.
3465 2009-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3467         * src/base/ftobjs.c (FT_Done_Library): Issue an error message when
3468         FT_Done_Face() cannot free all faces. If the list of the opened
3469         faces includes broken face which FT_Done_Face() cannot free,
3470         FT_Done_Library() retries FT_Done_Face() and it can fall into
3471         an endless loop. See the discussion:
3472         http://lists.gnu.org/archive/html/freetype-devel/2008-09/msg00047.html
3473         http://lists.gnu.org/archive/html/freetype-devel/2008-10/msg00000.html
3475 2009-01-07  Werner Lemberg  <wl@gnu.org>
3477         * docs/CHANGES: Document new key `a' in ftdiff.
3479 2009-01-06  Werner Lemberg  <wl@gnu.org>
3481         * autogen.sh: Don't use GNUisms while calling sed.  Problem reported
3482         by Sean McBride.
3484 2009-01-06  Werner Lemberg  <wl@gnu.org>
3486         * src/base/ftbitmap.c (FT_Bitmap_Convert): Handle FT_PIXEL_MODE_LCD
3487         and FT_PIXEL_MODE_LCD_V.  Problem reported by Chi Nguyen
3488         <chint@necsv.com>.
3490 2009-01-06  Diego Pettenò  <flameeyes@gmail.com>
3492         * builds/unix/configure.raw: Don't call AC_CANONICAL_BUILD and
3493         AC_CANONICAL_TARGET and use $host_os only.  A nice explanation for
3494         this change can be found at
3495         http://blog.flameeyes.eu/s/canonical-target.
3497         From Savannah patch #6712.
3499 2009-01-06  Sean McBride  <sean@rogue-research.com>
3501         * src/base/ftdbgmem.c (_debug_mem_dummy): Make it static.
3503         * src/base/ftmac.c: Remove some #undefs.
3505 2008-12-26  Werner Lemberg  <wl@gnu.org>
3507         Set `face_index' field in FT_Face for all font formats.
3509         * cff/cffobjs.c (cff_face_init), winfonts/winfnt.c (FNT_Face_Init),
3510         sfnt/sfobjs.c (sfnt_init_face): Do it.
3512         * docs/CHANGES: Document it.
3514 2008-12-22  Steve Grubb
3516         * builds/unix/ftsystem.c (FT_Stream_Open): Reject zero-length files.
3517         Patch from Savannah bug #25151.
3519 2008-12-21  Werner Lemberg  <wl@gnu.org>
3521         * src/pfr/pfrdrivr.c, src/winfonts/winfnt.c, src/cache/ftcmanag.c,
3522         src/smooth/ftgrays.c, src/base/ftobjc.s, src/sfobjs.c:
3523         s/_Err_Bad_Argument/_Err_Invalid_Argument/.  The former is for
3524         errors in the bytecode interpreter only.
3526 2008-12-21  Werner Lemberg  <wl@gnu.org>
3528         * src/base/ftpfr.c (FT_Get_PFR_Metrics): Protect against NULL
3529         arguments.
3530         Fix return value for non-PFR fonts.  Both problems reported by Chi
3531         Nguyen <chint@necsv.com>.
3533 2008-12-21  anonymous
3535         FT_USE_MODULE declares things as:
3537           extern const FT_Module_Class
3539         (or similar for C++).  However, the actual types of the variables
3540         being declared are often different, e.g., FT_Driver_ClassRec or
3541         FT_Renderer_Class.  (Some are, indeed, FT_Module_Class.)
3543         This works with most C compilers (since those structs begin with an
3544         FT_Module_Class struct), but technically it's undefined behavior.
3546         To quote the ISO/IEC 9899:TC2 final committee draft, section 6.2.7
3547         paragraph 2:
3549           All declarations that refer to the same object or function shall
3550           have compatible type; otherwise, the behavior is undefined.
3552         (And they are not compatible types.)
3554         Most C compilers don't reject (or even detect!) code which has this
3555         issue, but the GCC LTO development branch compiler does.  (It
3556         outputs the types of the objects while generating .o files, along
3557         with a bunch of other information, then compares them when doing the
3558         final link-time code generation pass.)
3560         Patch from Savannah bug #25133.
3562         * src/base/ftinit.c (FT_USE_MODULE): Include variable type.
3564         * builds/amiga/include/freetype/config/ftmodule.h,
3565         include/freetype/config/ftmodule.h, */module.mk: Updated to declare
3566         pass correct types to FT_USE_MODULE.
3568 2008-12-21  Hongbo Ni  <hongbo@njstar.com>
3570         * src/autofit/aflatin.c (af_latin_hint_edges),
3571         src/autofit/aflatin2.c (af_latin2_hint_edges), src/autofit/afcjk.c
3572         (af_cjk_hint_edges): Protect against division by zero.  This fixes
3573         Savannah bug #25124.
3575 2008-12-18  Werner Lemberg  <wl@gnu.org>
3577         * docs/CHANGES: Updated.
3579 2008-12-18  Bevan, David  <dbevan@emtex.com>
3581         Provide API for accessing embedding and subsetting restriction
3582         information.
3584         * include/freetype.h (FT_FSTYPE_INSTALLABLE_EMBEDDING,
3585         FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING,
3586         FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING, FT_FSTYPE_EDITABLE_EMBEDDING,
3587         FT_FSTYPE_NO_SUBSETTING, FT_FSTYPE_BITMAP_EMBEDDING_ONLY): New
3588         macros.
3589         (FT_Get_FSType_Flags): New function declaration.
3591         * src/base/ftobjs.c (FT_Get_FSType_Flags): New function.
3593         * src/cid/cidtoken.h, src/type1/t1tokens.h, src/type42/t42parse.c
3594         (t42_keywords): Handle `FSType'.
3596         * include/freetype/t1tables.h (PS_FontInfoRec): Add `fs_type' field.
3598 2008-12-17  Werner Lemberg  <wl@gnu.org>
3600         * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Don't use internal
3601         macros so that copying the source code into an application works
3602         out of the box.
3604 2008-12-17  Werner Lemberg  <wl@gnu.org>
3606         * include/freetype/ftsynth.h, src/base/ftsynth.c: Move
3607         FT_GlyphSlot_Own_Bitmap to...
3608         * include/freetype/ftbitmap.h, src/base/ftbitmap.c: These files.
3610         * docs/CHANGES: Document it.
3612 2008-12-10  Werner Lemberg  <wl@gnu.org>
3614         Generalize the concept of `tricky' fonts by introducing
3615         FT_FACE_FLAG_TRICKY to indicate that the font format's hinting
3616         engine is necessary for correct rendering.
3618         At the same time, slightly modify the behaviour of tricky fonts:
3619         FT_LOAD_NO_HINTING is now ignored.  To really force raw loading
3620         of tricky fonts (without hinting), both FT_LOAD_NO_HINTING and
3621         FT_LOAD_NO_AUTOHINT must be used.
3623         Finally, tricky TrueType fonts always use the bytecode interpreter
3624         even if the patented code is used.
3626         * include/freetype/freetype.h (FT_FACE_FLAG_TRICKY, FT_IS_TRICKY):
3627         New macros.
3629         * src/truetype/ttdriver.c (Load_Glyph): Handle new load flags
3630         semantics as described above.
3632         * src/truetype/ttobjs.c (tt_check_trickyness): New function, using
3633         code of ...
3634         (tt_face_init): This function, now simplified and updated to new
3635         semantics.
3637         * src/base/ftobjs.c (FT_Load_Glyph): Don't use autohinter for tricky
3638         fonts.
3640         * docs/CHANGES: Document it.
3642 2008-12-09  Werner Lemberg  <wl@gnu.org>
3644         Really fix Savannah bug #25010: An SFNT font with neither outlines
3645         nor bitmaps can be considered as containing space `glyphs' only.
3647         * src/truetype/ttpload.c (tt_face_load_loca): Handle the case where
3648         a `glyf' table is missing.
3650         * src/truetype/ttgload.c (load_truetype_glyph): Abort if we have no
3651         `glyf' table but a non-zero `loca' entry.
3652         (tt_loader_init): Handle missing `glyf' table.
3654         * src/base/ftobjs.c (FT_Load_Glyph): Undo change 2008-12-05.
3656         * src/sfnt/sfobjs.c (sfnt_load_face): A font with neither outlines
3657         nor bitmaps is scalable.
3659 2008-12-05  Werner Lemberg  <wl@nu.org>
3661         * src/autofit/aflatin.c (af_latin_uniranges): Add more ranges.  This
3662         fixes Savannah bug #21190 which also provides a basic patch.
3664 2008-12-05  Werner Lemberg  <wl@nu.org>
3666         * include/freetype/freetype.h (FT_LOAD_ADVANCE_ONLY): Use value
3667         0x100 instead of 0x10000; the latter value is already occupied by
3668         FT_LOAD_TARGET_LIGHT.  Bug reported by James Cloos.
3671         Handle SFNT with neither outlines nor bitmaps.  This fixes Savannah
3672         bug #25010.
3674         * src/base/ftobjs.c (FT_Load_Glyph): Reject fonts with neither
3675         outlines nor bitmaps.
3677         * src/sfnt/sfobjs.c (sfnt_load_face): Don't return an error if there
3678         is no table with glyphs.
3681         * src/sfnt/ttload.c (tt_face_lookup_table): Improve debugging
3682         message.
3684 2008-12-01  Werner Lemberg  <wl@gnu.org>
3686         GDEF tables need `glyph_count' too for validation.  Problem reported
3687         by Chi Nguyen <chint@necsv.com>.
3689         * src/otvalid/otvgdef.c (otv_GDEF_validate), src/otvalid/otvalid.h
3690         (otv_GDEF_validate), src/otvalid/otvmod.c (otv_validate): Pass
3691         `glyph_count'.
3693 2008-11-29  Werner Lemberg  <wl@gnu.org>
3695         * src/autofit/afcjk.c, src/base/ftoutln.c, src/base/ftrfork.c,
3696         src/bdf/bdfdrivr.c, src/gxvalid/gxvmorx.c, src/otvalid/otvmath.c,
3697         src/pcf/pcfdrivr.c, src/psnames/pstables.h, src/smooth/ftgrays.c,
3698         src/tools/glnames.py, src/truetype/ttinterp.c, src/type1/t1load.c,
3699         src/type42/t42objs.c, src/winfonts/winfnt.c: Fix compiler warnings
3700         (Atari PureC).
3702 2008-11-29  James Cloos  <cloos@jhcloos.com>
3704         * src/type/t1load.c (mm_axis_unmap): Revert previous patch and fix
3705         it correctly by using FT_INT_TO_FIXED (FreeType expects 16.16 values
3706         in the /BlendDesignMap space).
3708 2008-11-29  James Cloos  <cloos@jhcloos.com>
3710         * src/type1/t1load.c (mm_axis_unmap): `blend_points' is FT_Fixed*,
3711         whereas `design_points' is FT_Long*.  Therefore, return blend rather
3712         than design points.
3714 2008-11-27  Werner Lemberg  <wl@gnu.org>
3716         * src/cff/cffparse.c (cff_parse_real): Handle more than nine
3717         significant digits correctly.  This fixes Savannah bug #24953.
3719 2008-11-25  Daniel Zimmermann  <netzimme@aol.com>
3721         * src/base/ftstream.c (FT_Stream_ReadFields): Don't access stream
3722         before the NULL check.  From Savannah patch #6681.
3724 2008-11-24  Werner Lemberg  <wl@gnu.org>
3726         Fixes from the gnuwin32 port.
3728         * src/base/ftlcdfil.c: s/EXPORT/EXPORT_DEF/.
3730         * src/base/ftotval.c: Include FT_OPENTYPE_VALIDATE_H.
3732         * src/psaux/psobjs.c (ps_table_add): Check `length'.
3734 2008-11-15  Werner Lemberg  <wl@gnu.org>
3736         * src/truetype/ttinterp.c (tt_default_graphics_state): The default
3737         value for `scan_type' is zero, as confirmed by Greg Hitchcock from
3738         Microsoft.  Problem reported by Michal Nowakowski
3739         <miszka@limes.com.pl>.
3741 2008-11-12  Tor Andersson  <tor.andersson@gmail.com>
3743         * src/cff/cffdrivr.c (cff_get_cmap_info): Initialize `format' field.
3744         This fixes Savannah bug #24819.
3746 2008-11-08  Werner Lemberg  <wl@gnu.org>
3748         * src/sfnt/sfobjs.c (sfnt_load_face): Remove #if 0/#endif guards
3749         since OpenType version 1.5 has been released.
3751         * include/ttnameid.h (TT_NAME_ID_WWS_FAMILY,
3752         TT_NAME_ID_WWS_SUBFAMILY): New macros for OpenType 1.5.
3753         (TT_URC_COPTIC, TT_URC_VAI, TT_URC_NKO, TT_URC_BALINESE,
3754         TT_URC_PHAGSPA, TT_URC_NON_PLANE_0, TT_URC_PHOENICIAN,
3755         TT_URC_TAI_LE, TT_URC_NEW_TAI_LUE, TT_URC_BUGINESE,
3756         TT_URC_GLAGOLITIC, TT_URC_YIJING, TT_URC_SYLOTI_NAGRI,
3757         TT_URC_LINEAR_B, TT_URC_ANCIENT_GREEK_NUMBERS, TT_URC_UGARITIC,
3758         TT_URC_OLD_PERSIAN, TT_URC_SHAVIAN, TT_URC_OSMANYA,
3759         TT_URC_CYPRIOT_SYLLABARY, TT_URC_KHAROSHTHI, TT_URC_TAI_XUAN_JING,
3760         TT_URC_CUNEIFORM, TT_URC_COUNTING_ROD_NUMERALS, TT_URC_SUNDANESE,
3761         TT_URC_LEPCHA, TT_URC_OL_CHIKI, TT_URC_SAURASHTRA, TT_URC_KAYAH_LI,
3762         TT_URC_REJANG, TT_URC_CHAM, TT_URC_ANCIENT_SYMBOLS,
3763         TT_URC_PHAISTOS_DISC, TT_URC_OLD_ANATOLIAN, TT_URC_GAME_TILES): New
3764         macros for OpenType 1.5.
3766 2008-11-08  Wenlin Institute  <wenlin@wenlin.com>
3768         * src/base/ftobjs.c (ft_glyphslot_free_bitmap): Protect against
3769         slot->internal == NULL.  Reported by Graham Asher.
3771 2008-11-08  Werner Lemberg  <wl@gnu.org>
3773         * src/sfnt/sfobjs.c (tt_face_get_name): Modified to return an error
3774         code so that memory allocation problems can be distinguished from
3775         missing table entries.  Reported by Graham Asher.
3776         (GET_NAME): New macro.
3777         (sfnt_load_face): Use it.
3779 2008-11-05  Werner Lemberg  <wl@gnu.org>
3781         * devel/ftoption.h, include/freetype/config/ftoption.h
3782         [TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Undefine
3783         TT_CONFIG_OPTION_UNPATENTED_HINTING.  This fixes the return value of
3784         `FT_Get_TrueType_Engine_Type' (and makes it work as documented).
3785         Reported in bug #441638 of bugzilla.novell.com.
3787         * docs/CHANGES: Document it.
3789 2008-11-03  Werner Lemberg  <wl@gnu.org>
3791         * src/type1/t1load.c (parse_subrs): Use an endless loop.  There are
3792         fonts (like HELVI.PFB version 003.001, used on OS/2) which define
3793         some `subrs' elements more than once.  Problem reported by Peter
3794         Weilbacher <mozilla@weilbacher.org>.
3796 2008-10-15  Graham Asher  <graham.asher@btinternet.com>
3798         * src/sfnt/ttpost.c (tt_post_default_names): Add `const'.
3800 2008-10-15  David Turner  <david@freetype.org>
3802         * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Disambiguate for
3803         meddlesome compilers' warning against `for ( ...; ...; ...) ;'.
3805 2008-10-14  Werner Lemberg  <wl@gnu.org>
3807         * src/cff/cffobjs.c (cff_face_init): Remove compiler warning.
3808         Suggested by Bram Tassyns in Savannah patch #6651.
3810 2008-10-12  Graham Asher  <graham.asher@btinternet.com>
3812         * src/sfnt/sfobjs.c (sfnt_load_face): Fix computation of
3813         `underline_position'.
3815 2008-10-12  Werner Lemberg  <wl@gnu.org>
3817         * docs/CHANGES: Updated.
3819 2008-10-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3821         Fix Savannah bug #24468.
3823         According to include/freetype/internal/ftobjs.h, the appropriate
3824         type to interchange single character codepoint is FT_UInt32. It
3825         should be distinguished from FT_UInt which can be 16bit integer.
3827         * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Change the type
3828         of the second argument `pcharcode' from FT_UInt* to FT_UInt32*.
3829         (tt_cmap4_char_map_binary): Ditto.
3830         (tt_cmap14_get_nondef_chars): Change the type of return value
3831         from FT_UInt* to FT_UInt32*.
3833 2008-10-08  John Tytgat  <John.Tytgat@esko.com>
3835         Fix Savannah bug #24485.
3837         * src/type1/t1load.c (parse_charstrings): Assure that we always have
3838         a .notdef glyph.
3840 2008-10-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3842         * src/base/ftmac.c: Include FT_TRUETYPE_TAGS_H for multi build.
3843         * builds/mac/ftmac.c: Ditto.
3845 2008-10-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3847         * include/freetype/tttags.h (TTAG_TYP1, TTAG_typ1): Fix definitions.
3848         * src/base/ftobjs.c: Include FT_TRUETYPE_TAGS_H.
3850 2008-10-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3852         * src/sfnt/sfobjs.c (sfnt_open_font): Allow `typ1' version tag in
3853         the beginning of sfnt container.
3854         * src/sfnt/ttload.c (check_table_dir): Return
3855         `SFNT_Err_Table_Missing' when sfnt table directory structure is
3856         correct but essential tables for TrueType fonts (`head', `bhed' or
3857         `SING') are missing.  Other errors are returned by
3858         SFNT_Err_Unknown_File_Format.
3860         * src/base/ftobjs.c (FT_Open_Face): When TrueType driver returns
3861         `FT_Err_Table_Missing', try `open_face_PS_from_sfnt_stream'.  It is
3862         enabled only when old mac font support is configured.
3864 2008-10-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3866         * include/freetype/tttags.h (TTAG_CID, TTAG_FOND, TTAG_LWFN,
3867         TTAG_POST, TTAG_sfnt, TTAG_TYP1, TTAG_typ1): New tags to simplify
3868         the repeated calculations of these values in ftobjs.c and ftmac.c.
3869         * src/base/ftobjs.c: Replace all FT_MAKE_TAG by new tags.
3870         * src/base/ftmac.c: Ditto.
3871         * builds/mac/ftmac.c: Ditto.
3873 2008-10-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3875         * src/base/ftobjs.c (ft_lookup_PS_in_sfnt_stream): Remove wrong
3876         initialization of *is_sfnt_cid.
3878 2008-10-04  Werner Lemberg  <wl@gnu.org>
3880         * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Remove compiler
3881         warnings.
3883 2008-10-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3885         * src/base/ftobjs.c (ft_lookup_PS_in_sfnt): Replaced by...
3886         (ft_lookup_PS_in_sfnt_stream): This.
3887         (open_face_PS_from_sfnt_stream): New function.  It checks whether
3888         the stream is sfnt-wrapped Type1 PS font or sfnt-wrapped CID-keyed
3889         font, then try to open a face for given face_index.
3890         (Mac_Read_sfnt_Resource): Replace the combination of
3891         `ft_lookup_PS_in_sfnt' and `open_face_from_buffer' by
3892         `open_face_PS_from_sfnt_stream'.
3893         * src/base/ftmac.c (FT_New_Face_From_SFNT): Ditto.
3894         * builds/mac/ftmac.c (FT_New_Face_From_SFNT): Ditto.
3895         * src/base/ftbase.h: Remove `ft_lookup_PS_in_sfnt' and add
3896         `open_face_PS_from_sfnt_stream'.
3898 2008-10-03  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3900         * src/base/ftobjs.c (ft_lookup_PS_in_sfnt): Set *is_sfnt_cid to
3901         FALSE if neither `CID ' nor `TYP1' is found in the sfnt container.
3903 2008-10-03  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3905         * include/freetype/config/ftconfig.h: Define FT_MACINTOSH when SC or
3906         MrC compiler of MPW is used.  These compilers do not define the
3907         macro __APPLE__ by themselves.
3908         * builds/unix/ftconfig.in: Ditto.
3909         * builds/vms/ftconfig.h: Ditto.
3910         * src/base/ftbase.c: Use FT_MACINTOSH instead of __APPLE__, to
3911         include ftmac.c if FreeType 2 is built by MPW.
3912         * src/base/ftobjs.c: Use FT_MACINTOSH instead of __APPLE__, to
3913         enable shared functions for ftmac.c if FreeType 2 is built by MPW.
3915         * builds/mac/ftmac.c: Include ftbase.h.
3916         (memory_stream_close): Removed.
3917         (new_memory_stream): Ditto.
3918         (open_face_from_buffer): Removed.  Use the implementation in
3919         ftobjs.c.
3920         (ft_lookup_PS_in_sfnt): Ditto.
3922         * builds/mac/FreeType.m68k_far.make.txt: Build ftmac.c as an
3923         included part of ftbase.c, to share the functions in ftobjs.c.  The
3924         rule compiling ftmac.c separately is removed and the rule copying
3925         ftbase.c from src/base/ftbase.c to builds/mac/ftbase.c is added.
3926         * builds/mac/FreeType.m68k_cfm.make.txt: Ditto.
3927         * builds/mac/FreeType.ppc_classic.make.txt: Ditto.
3928         * builds/mac/FreeType.ppc_carbon.make.txt: Ditto.
3930 2008-10-02  Bram Tassyns  <bramt@enfocus.be>
3932         * src/cff/cffgload.c (cff_slot_load): Map CID 0 to GID 0.  This
3933         fixes Savannah bug #24430.
3935 2008-10-02  Werner Lemberg  <wl@gnu.org>
3937         * builds/freetype.mk (BASE_H): Rename to...
3938         (INTERNAL_H): This.
3939         (FREETYPE_H): Updated.
3940         * src/base/rules.mk: (BASE_OBJ_S, OBJ_DIR/%.$O): Add BASE_H.
3941         * src/bdf/rules.mk (BDF_DRV_H): Add bdferror.h.
3942         * src/cache/rules.mk (CACHE_DRV_H): Add ftccache.h and ftcsbits.h.
3943         * src/pcf/rules.mk (PCF_DRV_H): Add pcfread.h.
3944         * src/raster/rules.mk (RASTER_DRV_H): Add ftmisc.h.
3945         * src/type42/rules.mk (T42_DRV_H): Add t42types.h.
3947 2008-10-02  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3949         * src/base/ftbase.h: New file to declare the private utility
3950         functions shared by the sources of base modules.  Currently,
3951         `ft_lookup_PS_in_sfnt' and `open_face_from_buffer' are declared to
3952         share between ftobjs.c and ftmac.c.
3954         * src/base/rule.mk: Add ftbase.h.
3956         * src/base/ftobjs.c: Include ftbase.h.
3957         (memory_stream_close): Build on any platform when old MacOS font
3958         support is enabled.
3959         (new_memory_stream): Ditto.
3960         (open_face_from_buffer): Build on any platform when old MacOS font
3961         support is enabled.  The counting of the face in a font file is
3962         slightly different between Carbon-dependent parser and Carbon-free
3963         parser.  They are merged with the platform-specific conditional.
3964         (ft_lookup_PS_in_sfnt): Ditto.
3966         * src/base/ftmac.c: Include ftbase.h.
3967         (memory_stream_close): Removed.
3968         (new_memory_stream): Ditto.
3969         (open_face_from_buffer): Removed.  Use the implementation in
3970         ftobjs.c.
3971         (ft_lookup_PS_in_sfnt): Ditto.
3973 2008-10-02  Werner Lemberg  <wl@gnu.org>
3975         * src/sfnt/sfobjs.c (sfnt_load_face): `psnames_error' is only needed
3976         if TT_CONFIG_OPTION_POSTSCRIPT_NAMES is defined.
3978 2008-10-01  Werner Lemberg  <wl@gnu.org>
3980         * src/truetype/ttobjs.c (tt_face_done), src/cff/cffobjs.c
3981         (cff_face_done), src/pfr/pfrobjs.c (pfr_face_done),
3982         src/pcf/pcfdrivr.c (PCF_Face_Done), src/cid/cidobjs.c
3983         (cid_face_done), src/bdf/bdfdrivr. (BDF_Face_Done),
3984         src/sfnt/sfobjs.c (sfnt_face_done): Protect against face == 0.
3985         Reported by Graham Asher.
3987 2008-09-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3989         * src/base/rules.mk: Add conditional source to BASE_SRC, for `make
3990         multi' on Mac OS X.  If the macro $(ftmac_c) is defined,
3991         $(BASE_DIR)/$(ftmac_c) is added to BASE_SRC.  In a normal build, the
3992         lack of ftmac.c in BASE_SRC is not serious because ftbase.c includes
3993         ftmac.c.
3994         * builds/unix/unix-def.in: Add a macro definition of $(ftmac_c).
3995         * builds/unix/configure.raw: Add procedure to set up appropriate
3996         value of $(ftmac_c) with the consideration of the availability of
3997         Carbon framework.
3999 2008-09-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4001         * src/base/Jamfile: Add target for multi build by jam on Mac OS X.
4002         * src/base/ftobjs.c (FT_New_Face): Fix the condition to include this
4003         function for MPW building.  It is synchronized the condition to
4004         include ftmac.c source into ftbase.c.
4006 2008-09-22  Werner Lemberg  <wl@gnu.org>
4008         * src/cff/cffgload.c (CFF_Operator, cff_argument_counts,
4009         cff_decoder_parse_charstrings): Handle (invalid)
4010         `callothersubr' and `pop' instructions.
4012 2008-09-22  John Tytgat  <John.Tytgat@esko.com>
4014         Fix Savannah bug #24307.
4016         * include/freetype/internal/t1types.h (CID_FaceRec),
4017         src/type42/t42types.h (T42_FaceRec): Comment out `afm_data'.
4019 2008-09-21  Werner Lemberg  <wl@gnu.org>
4021         * src/smooth/ftgrays.c (gray_raster_render): Don't dereference
4022         `target_map' if FT_RASTER_FLAG_DIRECT is set.  Problem reported by
4023         Stephan T. Lavavej <stl@nuwen.net>.
4025 2008-09-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4027         * src/otvalid/Jamfile: Add missing target `otvmath' for multi build
4028         by jam.
4029         * src/sfnt/Jamfile: Add missing target `ttmtx' for multi build by
4030         jam.
4032 2008-09-20  Werner Lemberg  <wl@gnu.org>
4034         * src/smooth/ftgrays.c (gray_find_cell): Fix threshold.  The values
4035         passed to this function are already `normalized'.  Problem reported
4036         by Stephan T. Lavavej <stl@nuwen.net>.
4038         * docs/CHANGES: Document it.
4040 2008-09-20  Werner Lemberg  <wl@gnu.org>
4042         * src/base/ftoutln.c: Include FT_INTERNAL_DEBUG_H.
4043         (FT_Outline_Decompose): Decorate with tracing messages.
4045         * src/smooth/ftgrays.c [DEBUG_GRAYS]: Replace with
4046         FT_DEBUG_LEVEL_TRACE.
4047         [_STANDALONE_ && FT_DEBUG_LEVEL_TRACE]: Include stdio.h and
4048         stdarg.h.
4050         (FT_TRACE) [_STANDALONE_]: Remove.
4051         (FT_Message) [_STANDALONE_ && FT_DEBUG_LEVEL_TRACE]: New function.
4052         (FT_TRACE5, FT_TRACE7) [_STANDALONE_]: New macros.
4053         (FT_ERROR) [_STANDALONE_]: Updated.
4055         (gray_hline) [FT_DEBUG_LEVEL_TRACE]: Fix condition.
4056         Use FT_TRACE7.
4057         (gray_dump_cells): Make it `static void'.
4058         (gray_convert_glyph): Use FT_TRACE7.
4060         (FT_Outline_Decompose) [_STANDALONE_]: Synchronize with version in
4061         ftoutln.c.
4063         * src/base/ftadvanc.c (FT_Get_Advance, FT_Get_Advances): Use
4064         FT_ERROR_BASE.
4066         * docs/formats.txt: Updated.
4068 2008-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4070         * src/base/ftmac.c: Import sfnt-wrapped Type1 and sfnt-wrapped
4071         CID-keyed font support.
4072         * builds/mac/ftmac.c: Ditto.
4074 2008-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4076         * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Fix double free bug in
4077         sfnt-wrapped Type1 and sfnt-wrapped CID-keyed font support code.
4078         `open_face_from_buffer' frees the passed buffer if it cannot open a
4079         face from the buffer, so the caller must not free it.
4081 2008-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4083         * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add initial support
4084         for sfnt-wrapped Type1 and sfnt-wrapped CID-keyed font.
4085         (ft_lookup_PS_in_sfnt): New function to look up `TYP1' or `CID '
4086         table in sfnt table directory.  It is used before loading TrueType
4087         font driver.
4089         * docs/CHANGES: Add note about the current status of sfnt-wrapped
4090         Type1 and sfnt-wrapped CID-keyed font support.
4092 2008-09-18  Werner Lemberg  <wl@gnu.org>
4094         * src/base/ftsystem.c (FT_Done_Memory): Use ft_sfree directly for
4095         orthogonality (ft_free and ft_sfree could belong to different memory
4096         pools).  This fixes Savannah bug #24297.
4098 2008-09-18  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4100         * src/cff/cffobjs.c (cff_face_init): Use TTAG_OTTO defined
4101         in ttags.h instead of numerical value 0x4F54544FL.
4103 2008-09-16  Werner Lemberg  <wl@gnu.org>
4105         * src/cff/cffgload.h, src/cff/cffgload.c
4106         (cff_decoder_set_width_only): Eliminate function call.
4108 2008-09-15  George Williams  <gww@silcom.com>
4110         Fix Savannah bug #24179, reported by Bram Tassyns.
4112         * src/type1/t1load.c (mm_axis_unmap, T1_Get_MM_Var): Fix computation
4113         of default values.
4115 2008-09-15  Werner Lemberg  <wl@gnu.org>
4117         * src/tools/glnames.py (main): Surround `ft_get_adobe_glyph_index'
4118         and `ft_adobe_glyph_list' with FT_CONFIG_OPTION_ADOBE_GLYPH_LIST to
4119         prevent unconditional definition.  This fixes Savannah bug #24241.
4121         * src/psnames/pstables.h: Regenerated.
4123 2008-09-13  Werner Lemberg  <wl@gnu.org>
4125         * autogen.sh, builds/unix/configure.raw,
4126         include/freetype/config/ftconfig.h, builds/unix/ftconfig.in: Minor
4127         beautifying.
4129         * include/freetype/ftadvanc.h, include/freetype/ftgasp.h,
4130         include/freetype/ftlcdfil.h: Protect against FreeType 1.
4131         Some other minor fixes.
4133         * devel/ftoption.h: Synchronize with
4134         include/freetype/config/ftoption.h.
4136 2008-09-11  Werner Lemberg  <wl@gnu.org>
4138         * src/base/ftbase.c: Include ftadvanc.c.
4140 2008-09-11  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4142         * builds/unix/ftconfig.in: Duplicate the cpp computation of
4143         FT_SIZEOF_{INT|LONG} from include/freetype/config/ftconfig.h.
4144         (FT_USE_AUTOCONF_SIZEOF_TYPES): New macro.  If defined, the cpp
4145         computation is disabled and the statically configured sizes are
4146         used.  This fixes Savannah bug #21250.
4148         * builds/unix/configure.raw: Add the checks to compare the cpp
4149         computation results of the bit length of int and long versus the
4150         sizes detected by running `configure'.  If the results are
4151         different, FT_USE_AUTOCONF_SIZEOF_TYPES is defined to prioritize the
4152         results.
4153         New option --{enable|disable}-biarch-config is added to define or
4154         undefine FT_USE_AUTOCONF_SIZEOF_TYPES manually.
4156 2008-09-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4158         * builds/unix/configure.raw: Clear FT2_EXTRA_LIBS when Carbon or
4159         ApplicationService framework is missing.  Although this value is not
4160         used in building of FreeType2, it is written in `freetype2.pc' and
4161         `freetype-config'.
4163 2008-09-01  david turner  <david@freetype.org>
4165         * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Accept a negative cmap
4166         index to mean `use default cached FT_Face's charmap'.  This fixes
4167         Savannah bug #22625.
4168         * include/freetype/ftcache.h: Document it.
4171         Make FT_MulFix an inlined function.  This is done to speed up
4172         FreeType a little (on x86 3% when loading+hinting, 10% when
4173         rendering, ARM savings are more important though).  Disable this by
4174         undefining FT_CONFIG_OPTION_INLINE_MULFIX.
4176         Use of assembler code can now be controlled with
4177         FT_CONFIG_OPTION_NO_ASSEMBLER.
4179         * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in
4180         [!FT_CONFIG_OPTION_NO_ASSEMBLER] (FT_MulFix_arm): New assembler
4181         implementation.
4182         [!FT_CONFIG_OPTION_NO_ASSEMBLER] (FT_MulFix_i386): Assembler
4183         implementation taken from `ftcalc.c'.
4184         [!FT_CONFIG_OPTION_NO_ASSEMBLER] (FT_MULFIX_ASSEMBLER): New macro
4185         which is defined to the platform-specific assembler implementation
4186         of FT_MulFix.
4187         [FT_CONFIG_OPTION_INLINE_MULFIX && FT_MULFIX_ASSEMBLER]
4188         (FT_MULFIX_INLINED): New macro.
4190         * include/freetype/config/ftoption.h (FT_CONFIG_OPTION_NO_ASSEMBLER,
4191         FT_CONFIG_OPTION_INLINE_MULFIX): New macros.
4193         * include/freetype/freetype.h: Updated to handle FT_MULFIX_INLINED.
4195         * src/base/ftcalc.c: Updated to use FT_MULFIX_ASSEMBLER and
4196         FT_MULFIX_INLINED.
4199         Add a new header named FT_ADVANCES_H declaring some new APIs to
4200         extract the advances of one or more glyphs without necessarily
4201         loading their outlines.  Also provide `fast loaders' for the
4202         TrueType, Type1, and CFF font drivers (more to come later).
4204         * src/base/ftadvanc.c, include/freetype/ftadvanc.h: New files.
4206         * include/freetype/config/ftheader.h (FT_ADVANCES_H): New macro.
4207         * include/freetype/freetype.h (FT_LOAD_ADVANCE_ONLY): New macro.
4209         * include/freetype/internal/ftdriver.h (FT_Face_GetAdvancesFunc):
4210         `flags' and `advances' are now of type `FT_UInt' and `FT_Fixed',
4211         respectively.
4213         * src/base/Jamfile (_sources), src/base/rules.mk (BASE_SRC): Add
4214         ftadvanc.c.
4216         * src/cff/cffdrivr.c (cff_get_advances): New function.
4217         (cff_driver_class): Register it.
4219         * src/cff/cffgload.c (cff_decoder_set_width_only): New function.
4220         (cff_decoder_parse_charstrings): Handle `width_only'.
4221         (cff_slot_load): Handle FT_LOAD_ADVANCE_ONLY.
4223         * src/cff/cffgload.h (cff_decoder): New element `width_only'.
4224         (cff_decoder_set_width_only): New declaration.
4226         * src/truetype/ttdriver.c (tt_get_advances): New function.
4227         (tt_driver_class): Register it.
4229         * src/truetype/ttgload.c (Get_HMetrics, Get_VMetrics): Renamed to...
4230         (TT_Get_HMetrics, TT_Get_VMetrics): This.
4231         Update callers.
4232         * src/truetype/ttgload.h: Declare them.
4234         * src/type1/t1gload.h, src/type1/t1gload.c (T1_Get_Advances): New
4235         function.
4236         * src/type1/t1driver.c (t1_driver_class): Register T1_Get_Advances.
4239         Add checks for minimum version of the `autotools' stuff.
4241         * autogen.sh: Implement it.
4242         (get_major_version, get_minor_version, get_patch_version,
4243         compare_to_minimum_version, check_tool_version): New auxiliary
4244         functions.
4246         * README.CVS: Document it.
4248 2008-08-29  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4250         * src/sfnt/sfobjs.c (sfnt_open_font): Use TTAG_OTTO defined in
4251         ttags.h instead of FT_MAKE_TAG( 'O', 'T', 'T', 'O' ).
4253 2008-08-28  Werner Lemberg  <wl@gnu.org>
4255         * src/type1/t1load.c (parse_encoding): Protect against infinite
4256         loop.  This fixes Savannah bug #24150 (where a patch has been posted
4257         too).
4259 2008-08-23  Werner Lemberg  <wl@gnu.org>
4261         * src/type/t1afm.c (compare_kern_pairs), src/pxaux/afmparse.c
4262         (afm_compare_kern_pairs): Fix comparison.  This fixes Savannah bug
4263         #24119.
4265 2008-08-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4267         * src/base/ftobjs.c (FT_Stream_New): Initialize *astream always,
4268         even if passed library or arguments are invalid.  This fixes a bug
4269         that an uninitialized stream is freed when an invalid library handle
4270         is passed.  Originally proposed by Mike Fabian, 2008/08/18 on
4271         freetype-devel.
4272         (FT_Open_Face): Ditto (stream).
4273         (load_face_in_embedded_rfork): Ditto (stream2).
4275 2008-08-18  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4277         * src/base/ftmac.c: Add a fallback to guess the availability of the
4278         `ResourceIndex' type.  It is used when built without configure
4279         (e.g., a build with Jam).
4280         * builds/mac/ftmac.c: Ditto.
4281         * builds/unix/configure.raw: Set HAVE_TYPE_RESOURCE_INDEX to 1 or 0
4282         explicitly, even if `ResourceIndex' is unavailable.
4284 2008-08-18  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4286         * builds/unix/configure.raw: In checking of Mac OS X features,
4287         all-in-one header file `Carbon.h' is replaced by the minimum
4288         header file `CoreServices.h', similar to current src/base/ftmac.c.
4290 2008-08-18  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4292         * src/sfnt/ttcmap.c (tt_cmap2_validate): Skip the validation of
4293         sub-header when its code_count is 0.  Many Japanese Dynalab fonts
4294         include such an empty sub-header (code_count == 0, first_code == 0
4295         delta == 0, but offset != 0) as the second sub-header in SJIS cmap.
4297 2008-08-04  Werner Lemberg  <wl@gnu.org>
4299         * src/type1/t1tokens.h: Handle `ForceBold' keyword.  This fixes
4300         Savannah bug #23995.
4302         * src/cid/cidload.c (parse_expansion_factor): New callback function.
4303         (cid_field_records): Use it for `ExpansionFactor'.
4304         * src/cod/cidtoken.h: Handle `ForceBold' keyword.
4305         Don't handle `ExpansionFactor'.
4307 2008-08-04  Bram Tassyns  <bramt@enfocus.be>
4309         * src/cff/cffparse.c (cff_parse_fixed_scaled): Fix thinko which
4310         resulted in incorrect scaling.  This fixes Savannah bug #23973.
4312 2008-08-04  Werner Lemberg  <wl@gnu.org>
4314         Be more tolerant w.r.t. invalid entries in SFNT table directory.
4316         * src/sfnt/ttload.c (check_table_dir): Ignore invalid entries and
4317         adjust table count.
4318         Add more trace messages.
4319         (tt_face_load_font_dir): Updated.
4321 2008-07-30  Werner Lemberg  <wl@gnu.org>
4323         * src/cff/cffgload.c (cff_decoder_parse_charstrings): No longer
4324         assume that the first argument on the stack is the bottom-most
4325         element.  Two reasons:
4327           o According to people from Adobe it is missing in the Type 2
4328             specification that pushing of additional, superfluous arguments
4329             on the stack is prohibited.
4331           o Acroread in general handles fonts differently, namely by popping
4332             the number of arguments needed for a particular operand (as a PS
4333             interpreter would do).  In case of buggy fonts this causes a
4334             different interpretation which of the elements on the stack are
4335             superfluous and which not.
4337         Since there are CFF subfonts (embedded in PDFs) which rely on
4338         Acroread's behaviour, FreeType now does the same.
4340 2008-07-27  Werner Lemberg  <wl@gnu.org>
4342         Add extra mappings for `Tcommaaccent' and `tcommaaccent'.  This
4343         fixes Savannah bug #23940.
4345         * src/psnames/psmodule.c (WGL_EXTRA_LIST_SIZE): Rename to...
4346         (EXTRA_GLYPH_LIST_SIZE): This.
4347         Increase by 2.
4348         (ft_wgl_extra_unicodes): Rename to...
4349         (ft_extra_glyph_unicodes): This.
4350         Add two code values.
4351         (ft_wgl_extra_glyph_names): Rename to...
4352         (ft_extra_glyph_names): This.
4353         Add two glyphs.
4354         (ft_wgl_extra_glyph_name_offsets): Rename to...
4355         (ft_extra_glyph_name_offsets): This.
4356         Add two offsets.
4358         (ps_check_wgl_name, ps_check_wgl_unicode): Rename to...
4359         (ps_check_extra_glyph_name, ps_check_extra_glyph_unicode): This.
4360         Updated.
4361         (ps_unicodes_init): Updated.
4363 2008-07-26  Werner Lemberg  <wl@gnu.org>
4365         * src/cff/cffgload.c (cff_decoder_prepare,
4366         cff_decoder_parse_charstrings): Improve debug output.
4368 2008-07-22  Martin McBride  <mmcbride@emtex.com>
4370         * src/sfnt/ttcmap.c (tt_cmap4_validate, tt_cmap4_char_map_linear,
4371         tt_cmap4_char_map_binary): Handle fonts which treat the last segment
4372         specially.  According to the specification, such fonts would be
4373         invalid but acroread accepts them.
4375 2008-07-16  Jon Foster  <Jon.Foster@cabot.co.uk>
4377         * src/pfr/pfrdrivr.c (pfr_get_advance): Fix off-by-one error.
4379         * src/base/ftcalc.c (FT_MulFix): Fix portability issue.
4381         * src/sfnt/ttpost.c (MAC_NAME) [!FT_CONFIG_OPTION_POSTSCRIPT_NAMES]:
4382         Fix compiler warning.
4384 2008-07-16  Werner Lemberg  <wl@gnu.org>
4386         Handle CID-keyed fonts wrapped in an SFNT (with cmaps) correctly.
4388         * src/cff/cffload.c (cff_font_load): Pass `pure_cff'.
4389         Invert sids table only if `pure_cff' is set.
4390         * src/cff/cffload.h: Udpated.
4392         * src/cff/cffobjs.c (cff_face_init): Updated.
4393         Set FT_FACE_FLAG_CID_KEYED only if pure_cff is set.
4395         * docs/CHANGES: Updated.
4397 2008-07-09  Werner Lemberg  <wl@gnu.org>
4399         * src/truetype/ttpload.c (tt_face_load_loca): Handle buggy fonts
4400         where num_locations < num_glyphs.  Problem reported by Ding Li.
4402 2008-07-05  Werner Lemberg  <wl@gnu.org>
4404         Since FreeType uses `$(value ...)', we now need GNU make 3.80 or
4405         newer.  This fixes Savannah bug #23648.
4407         * configure: zsh doesn't like ${1+"$@"}.
4408         Update needed GNU make version.
4409         * builds/toplevel.mk: Check for `$(eval ...)'.
4410         * docs/INSTALL.GNU, docs/INSTALL.CROSS, docs/INSTALL.UNIX: Document
4411         it.
4413 2008-07-04  Werner Lemberg  <wl@gnu.org>
4415         * src/raster/ftraster.c (Draw_Sweep): If span is smaller than one
4416         pixel, only check for dropouts if neither start nor end point lies
4417         on a pixel center.  This fixes Savannah bug #23762.
4419 2008-06-29  Werner Lemberg  <wl@gnu.org>
4421         * Version 2.3.7 released.
4422         =========================
4425         Tag sources with `VER-2-3-7'.
4427         * docs/CHANGES, docs/VERSION.DLL: Update documentation and bump
4428         version number to 2.3.7.
4430         * README, Jamfile (RefDoc), builds/win32/visualc/index.html,
4431         builds/win32/visualc/freetype.dsp,
4432         builds/win32/visualc/freetype.vcproj,
4433         builds/win32/visualce/index.html,
4434         builds/win32/visualce/freetype.dsp,
4435         builds/win32/visualce/freetype.vcproj: s/2.3.6/2.3.7/, s/236/237/.
4437         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 7.
4439         * builds/unix/configure.raw (version_info): Set to 9:18:3.
4441         * docs/release: Updated.
4443 2008-06-28  Werner Lemberg  <wl@gnu.org>
4445         * src/ftglyph.c (FT_Matrix_Multiply, FT_Matrix_Invert): Move to...
4446         * src/ftcalc.c: Here.  This fixes Savannah bug #23729.
4448 2008-06-27  Werner Lemberg  <wl@gnu.org>
4450         * src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
4451         Horizontal_Gray_Sweep_Drop): Test for intersections which
4452         degenerate to a single point can be ignored; this has been confirmed
4453         by Greg Hitchcock from Microsoft.  (This was commented out code.)
4455 2008-06-26  Werner Lemberg  <wl@gnu.org>
4457         Improve navigation in API reference.
4459         * src/tools/docmaker/tohtml.py (html_header_3): Renamed to...
4460         (html_header_6): This.
4461         (html_header_3, html_header_3i, html_header_4, html_header_5,
4462         html_header_5t): New strings.
4463         (toc_footer_start, toc_footer_end): New strings.
4464         (HtmlFormatter::html_header): Updated.
4465         (HtmlFormatter::html_index_header, HtmlFormatter::html_toc_header):
4466         New strings.
4467         (HtmlFormatter::index_enter): Use `html_index_header'.
4468         (HtmlFormatter::index_exit): Print `html_footer'.
4469         (HtmlFormatter::toc_enter): Use `html_toc_header'.
4470         (HtmlFormatter::toc_exit): Print proper footer.
4472         Convert ~ to non-breakable space.
4474         * src/tools/docmaker/tohtml.py (make_html_para): Implement it.
4475         Update header files accordingly.
4477 2008-06-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4479         * builds/unix/configure.raw: Check type `ResourceIndex' explicitly
4480         and define HAVE_TYPE_RESOURCE_INDEX if it is defined.  Mac OS X 10.5
4481         bundles 10.4u SDK with MAC_OS_X_VERSION_10_5 macro but without
4482         ResourceIndex type definition.  The macro does not inform the type
4483         availability.
4484         * src/base/ftmac.c: More parentheses are inserted to clarify the
4485         conditionals to disable legacy APIs in `10.5 and later' cases.  If
4486         HAVE_TYPE_RESOURCE_INDEX is not defined, ResourceIndex is defined.
4488 2008-06-24  Werner Lemberg  <wl@gnu.org>
4490         * src/truetype/ttinterp.c (Ins_SCANTYPE): Don't check rendering
4491         mode.
4493         * src/raster/ftraster.c (Render_Glyph, Render_Gray_Glyph,
4494         Draw_Sweep): No-dropout mode is value 2, not value 0.
4495         (Draw_Sweep): Really skip dropout handling for no-dropout mode.
4497 2008-06-24  Werner Lemberg  <wl@gnu.org>
4499         * src/psaux/psobjs.c (t1_builder_close_contour): Don't add contour
4500         if it consists of one point only.  Based on a patch from Savannah
4501         bug #23683 (from John Tytgat).
4503 2008-06-22  Werner Lemberg  <wl@gnu.org>
4505         * src/truetype/ttgload.c (TT_Load_Glyph): Protect bytecode stuff
4506         with IS_HINTED.
4508         * docs/CHANGES: Updated.
4510 2008-06-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4512         * builds/unix/configure.raw: If CFLAGS has `-isysroot XXX' option
4513         but LDFLAGS does not, import it to LDFLAGS.  The option is used to
4514         specify non-default SDK on Mac OS X (e.g., universal binary SDK for
4515         Mac OS X 10.4 on PowerPC platform).  Although Apple TechNote 2137
4516         recommends to add the option only to CFLAGS, LDFLAGS should include
4517         it because libfreetype.la is built with -no-undefined.  This fixes a
4518         bug reported by Ryan Schmidt in MacPorts,
4519         http://trac.macports.org/ticket/15331.
4521 2008-06-21  Werner Lemberg  <wl@gnu.org>
4523         Enable access to the various dropout rules of the B&W rasterizer.
4524         Pass dropout rules from the TT bytecode interpreter to the
4525         rasterizer.
4527         * include/freetype/ftimage.h (FT_OUTLINE_SMART_DROPOUTS,
4528         FT_OUTLINE_EXCLUDE_STUBS): New flags for FT_Outline.
4530         * src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
4531         Horizontal_Gray_Sweep_Drop): Use same mode numbers as given in the
4532         OpenType specification.
4533         Fix mode 4 computation.
4534         (Render_Glyph, Render_Gray_Glyph): Handle new outline flags.
4536         * src/truetype/ttgload.c (TT_Load_Glyph) Convert scan conversion
4537         mode to FT_OUTLINE_XXX flags.
4539         * src/truetype/ttinterp.c (Ins_SCANCTRL): Enable ppem check.
4541 2008-06-19  Werner Lemberg  <wl@gnu.org>
4543         * src/cff/cffobjs.c (cff_face_init): Compute final
4544         `dict->units_per_em' value before assigning it to
4545         `cffface->units_per_EM'.  Otherwise, CFFs without subfonts are
4546         scaled incorrectly if the font matrix is non-standard.  This fixes
4547         Savannah bug #23630.
4549         * docs/CHANGES: Updated.
4551 2008-06-19  Werner Lemberg  <wl@gnu.org>
4553         * src/type/t1objs.c (T1_Face_Init): Slightly improve algorithm fix
4554         from 2008-06-19.
4556 2008-06-18  Werner Lemberg  <wl@gnu.org>
4558         * src/type/t1objs.c (T1_Face_Init): Fix change from 2008-03-21.
4559         Reported by Peter Weilbacher <mozilla@weilbacher.org>.
4561         * docs/CHANGES: Updated.
4563 2008-06-15  George Williams  <gww@silcom.com>
4565         * src/otvalid/otvgpos.c (otv_MarkBasePos_validate): Set
4566         `valid->extra2' to 1.  This is undocumented in the OpenType 1.5
4567         specification.
4569 2008-06-15  Werner Lemberg  <wl@gnu.org>
4571         * src/base/ftcalc.c (FT_MulFix) <asm>: Protect registers correctly
4572         from clobbering.  Patch from Savannah bug report #23556.
4574         * docs/CHANGES: Document it.
4576 2008-06-10  Werner Lemberg  <wl@gnu.org>
4578         * autogen.sh: Add option `--install' to libtoolize.
4580 2008-06-10  Werner Lemberg  <wl@gnu.org>
4582         * Version 2.3.6 released.
4583         =========================
4586         Tag sources with `VER-2-3-6'.
4588         * docs/CHANGES, docs/VERSION.DLL: Update documentation and bump
4589         version number to 2.3.6.
4591         * README, Jamfile (RefDoc), builds/win32/visualc/index.html,
4592         builds/win32/visualc/freetype.dsp,
4593         builds/win32/visualc/freetype.vcproj,
4594         builds/win32/visualce/index.html,
4595         builds/win32/visualce/freetype.dsp,
4596         builds/win32/visualce/freetype.vcproj: s/2.3.5/2.3.6/, s/235/236/.
4598         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 6.
4600         * builds/unix/configure.raw (version_info): Set to 9:17:3.
4603         * include/freetype/internal/psaux.h (T1_BuilderRec): Remove `scale_x'
4604         and `scale_y'.
4605         * src/cff/cffgload.h (CFF_Builder): Remove `scale_x' and `scale_y'.
4608         * src/cff/cffparse.c: Include FT_INTERNAL_DEBUG_H.
4609         * src/cff/cffobjs.h: Include FT_INTERNAL_POSTSCRIPT_HINTS_H.
4611 2008-06-10  Werner Lemberg  <wl@gnu.org>
4613         * src/base/ftobjs.c (open_face): Check `clazz->init_face' and
4614         `clazz->done_face'.
4616 2008-06-09  VaDiM  <s_sliva@rambler.ru>
4618         Support debugging on WinCE.  From Savannah patch #6536; this fixes
4619         bug #23497.
4621         * builds/win32/ftdebug.c (OutputDebugStringEx): New function/macro
4622         as a replacement for OutputDebugStringA (which WinCE doesn't have).
4623         Update all callers.
4624         (ft_debug_init) [_WIN32_CE]: WinCE apparently doesn't have
4625         environment variables.
4627 2008-06-09  Werner Lemberg  <wl@gnu.org>
4629         * README.CVS: Updated.
4631         * builds/unix/configure.raw, builds/unix/freetype-config.in: Updated
4632         for newer versions of autoconf and friends.
4634 2008-06-08  Werner Lemberg  <wl@gnu.org>
4636         * src/type1/t1parse.h (T1_ParserRec): Make `base_len' and
4637         `private_len' unsigned.
4639         * src/type1/t1parse.c (read_pfb_tag): Make `asize' unsigned and read
4640         it as such.
4641         (T1_New_Parser, T1_Get_Private_Dict): Make `size' unsigned.
4644         * src/base/ftstream.c (FT_Stream_Skip): Reject negative values.
4647         * src/type1/t1load.c (parse_blend_design_positions): Check `n_axis'
4648         for sane value.
4649         Fix typo.
4652         * src/psaux/psobjs.c (ps_table_add): Check `idx' correctly.
4655         * src/truetype/ttinterp (Ins_SHC): Use BOUNDS() to check
4656         `last_point'.
4659         * src/sfnt/ttload.c (tt_face_load_max_profile): Limit
4660         `maxTwilightPoints'.
4662 2008-06-06  Werner Lemberg  <wl@gnu.org>
4664         * src/truetype/ttinterp.c (Ins_IP): Handle case `org_dist == 0'
4665         correctly.  This fixes glyphs `t' and `h' of Arial Narrow at 12ppem.
4667 2008-06-03  Werner Lemberg  <wl@gnu.org>
4669         * include/freetype/ftcache.h (FTC_FaceID): Change type back to
4670         FT_Pointer.  Reported by Ian Britten <britten@caris.com>.
4672 2008-06-02  Werner Lemberg  <wl@gnu.org>
4674         Emit header info for defined FreeType objects in reference.
4676         * src/tools/docmaker/content.py (re_header_macro): New regexp.
4677         (ContentProcessor::__init__): Initialize new dictionary `headers'.
4678         (DocBlock::__init__): Collect macro header definitions.
4680         * src/tools/docmaker/tohtml.py (header_location_header,
4681         header_location_footer): New strings.
4682         (HtmlFormatter::__init__): Pass `headers' dictionary.
4683         (HtmlFormatter::print_html_field): Don't emit paragraph tags.
4684         (HtmlFormatter::print_html_field_list): Emit empty paragraph.
4685         (HtmlFormatter::block_enter): Emit header info.
4687 2008-06-01  Werner Lemberg  <wl@gnu.org>
4689         * include/freetype/config/ftheader.h (FT_UNPATENTED_HINTING_H,
4690         FT_INCREMENTAL_H): Added.
4692 2008-05-28  Werner Lemberg  <wl@gnu.org>
4694         * src/tools/docmaker/sources.py (SourceBlock::__init__): While
4695         looking for markup tags, return immediately as soon a single one is
4696         found.
4698 2008-05-28  Werner Lemberg  <wl@gnu.org>
4700         * src/truetype/ttinterp.c (Ins_MD): The MD instruction also uses
4701         original, unscaled input values.  Confirmed by Greg Hitchcock from
4702         Microsoft.
4704 2008-05-27  Werner Lemberg  <wl@gnu.org>
4706         * src/tools/docmaker/tohtml.py (block_footer_start,
4707         block_footer_middle): Beautify output.
4709 2008-05-25  Werner Lemberg  <wl@gnu.org>
4711         * src/raster/ftraster.c (fc_black_render): Return 0 when we are
4712         trying to render into a zero-width/height bitmap, not an error code.
4714         * src/truetype/ttgload.c (load_truetype_glyph): Move initialization
4715         of the graphics state for subglyphs to...
4716         (TT_Hint_Glyph): This function.
4717         Hinting instructions for a composite glyph apparently refer to the
4718         just hinted subglyphs, not the unhinted, unscaled outline.  This
4719         seems to fix Savannah bugs #20973 and (at least partially) #23310.
4721 2008-05-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4723         * src/base/ftmac.c (FT_New_Face_From_Suitcase): Check if valid
4724         `aface' is returned by FT_New_Face_From_FOND().  The patch was
4725         proposed by an anonymous reporter of Savannah bug #23204.
4727 2008-05-18  Werner Lemberg  <wl@gnu.org>
4729         * src/pshinter/pshalgo.c (ps_hints_apply): Reset scale values after
4730         correction for pixel boundary.  Without this patch, the effect can
4731         be cumulative under certain circumstances, making glyphs taller and
4732         taller after each call.  This fixes Savannah bug #19976.
4734 2008-05-18  Werner Lemberg  <wl@gnu.org>
4736         * src/base/ftdebug.c (FT_Message, FT_Panic): Send output to stderr.
4737         This fixes Savannah bug #23280.
4739         * docs/CHANGES: Updated.
4741 2008-05-18  David Turner  <david@freetype.org>
4743         * src/psnames/psmodule.c (ft_wgl_extra_unicodes,
4744         ft_wgl_extra_glyph_names, ft_wgl_extra_glyph_name_offsets,
4745         ps_check_wgl_name, ps_check_wgl_unicode): Use `static' to make
4746         declarations non-global.
4748         * src/type1/t1load.c: Add missing comment.
4750 2008-05-17  Sam Hocevar  <samh>
4752         * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Handle zero-contour
4753         glyphs correctly.  Patch from Savannah bug #23277.
4755 2008-05-16  Werner Lemberg  <wl@gnu.org>
4757         * docs/CHANGES: Updated.
4759 2008-05-16  Sergey Tolstov  <stolstov@esri.com>
4761         Improve support for WGL4 encoded fonts.
4763         * src/psnames/psmodule.c (WGL_EXTRA_LIST_SIZE): New macro.
4764         (ft_wgl_extra_unicodes, ft_wgl_extra_glyph_names,
4765         ft_wgl_extra_glyph_name_offsets): New arrays.
4766         (ps_check_wgl_name, ps_check_wgl_unicode): New functions.
4767         (ps_unicodes_init): Use them to add additional Unicode mappings.
4769 2008-05-15  Werner Lemberg  <wl@gnu.org>
4771         * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
4772         <op_closepath>: `closepath' without a path is a no-op, not an error
4773         (cf. the PS reference manual).
4775         Reported by Martin McBride.
4777 2008-05-15  Werner Lemberg  <wl@gnu.org>
4779         * builds/toplevel.mk (CONFIG_GUESS, CONFIG_SUB): Updated.
4781 2008-05-15  Werner Lemberg  <wl@gnu.org>
4783         * src/type1/t1load.c (parse_subrs): Accept fonts with a subrs array
4784         which contains a single but empty entry.  This is technically
4785         invalid (since it must end with `return'), but...
4787         Reported by Martin McBride.
4789 2008-05-14  Werner Lemberg  <wl@gnu.org>
4791         Finish fix of scaling bug of CID-keyed CFF subfonts.
4793         * include/freetype/internal/ftcalc.h, src/base/ftcalc.c
4794         (FT_Matrix_Multiply_Scaled, FT_Vector_Transform_Scaled): New
4795         functions.
4797         * src/cff/cffobjs.h (CFF_Internal): New struct.  It is used to
4798         provide global hinting data for both the top-font and all subfonts
4799         (with proper scaling).
4801         * src/cff/cffobjs.c (cff_make_private_dict): New function, using
4802         code from `cff_size_init'.
4803         (cff_size_init, cff_size_done, cff_size_select, cff_size_request):
4804         Use CFF_Internal and handle subfonts.
4805         (cff_face_init): Handle top-dict and subfont matrices correctly;
4806         apply some heuristic in case of unlikely matrix concatenation
4807         results.  This has been discussed with people from Adobe (thanks
4808         goes mainly to David Lemon) who confirm that the CFF specs are fuzzy
4809         and not correct.
4811         * src/cff/cffgload.h (cff_decoder_prepare): Add `size' argument.
4813         * src/cff/cffgload.c (cff_builder_init): Updated.
4814         (cff_decoder_prepare): Handle hints globals for subfonts.
4815         Update all callers.
4816         (cff_slot_load): Handling scaling of subfonts properly.
4818         * src/cff/cffparse.c (cff_parse_fixed_dynamic): New function.
4819         (cff_parse_font_matrix): Use it.
4821         * src/cff/cfftypes.h (CFF_FontDictRec): Make `units_per_em'
4822         FT_ULong.
4824         * docs/CHANGES: Document it.
4826 2008-05-13  Werner Lemberg  <wl@gnu.org>
4828         * src/winfonts/winfnt.c (fnt_face_get_dll_font, FNT_Face_Init):
4829         Handle case `face_index < 0'.
4830         * docs/CHANGES: Document it.
4832 2008-05-04  Werner Lemberg  <wl@gnu.org>
4834         First steps to fix the scaling bug of CID-keyed CFF subfonts,
4835         reported by Ding Li on 2008/03/28 on freetype-devel.
4837         * src/base/cff/cffparse.c (power_tens): New array.
4838         (cff_parse_real): Rewritten to introduce a fourth parameter which
4839         returns the `scaling' of the real number so that we have no
4840         precision loss.  This is not used yet.
4841         Update all callers.
4842         (cff_parse_fixed_thousand): Replace with...
4843         (cff_parse_fixed_scaled): This function.  Update all callers.
4845 2008-05-03  Werner Lemberg  <wl@gnu.org>
4847         * src/base/ftobjs.c (FT_Load_Glyph): Call the auto-hinter without
4848         transformation since it recursively calls FT_Load_Glyph.  This fixes
4849         Savannah bug #23143.
4851 2008-04-26  Werner Lemberg  <wl@gnu.org>
4853         * include/freetype/internal/psaux.h (T1_BuilderRec): Mark `scale_x'
4854         and `scale_y' as obsolete since they aren't used.
4855         * src/psaux/psobjs.c (t1_builder_init): Updated.
4857         * src/cff/cffgload.h (CFF_Builder): Mark `scale_x' and `scale_y' as
4858         obsolete since they aren't used.
4859         * src/cff/cffgload.c (cff_builder_init): Updated.
4861 2008-04-14  Werner Lemberg  <wl@gnu.org>
4863         * src/pcf/pcfdrivr.c (PCF_Face_Init): Protect call to
4864         `FT_Stream_OpenLZW' with `FT_CONFIG_OPTION_USE_LZ'.  From Savannah
4865         bug #22909.
4867 2008-04-13  Werner Lemberg  <wl@gnu.org>
4869         * src/psaux/psconv.c (PS_Conv_ToFixed): Increase precision if
4870         integer part is zero.
4872 2008-04-01  Werner Lemberg  <wl@gnu.org>
4874         Fix compilation with g++ 4.1 (with both `single' and `multi'
4875         targets).
4877         * src/base/ftobjs.c (FT_Open_Face): Don't define a variable in block
4878         which is crossed by a `goto'.
4880         * src/otvalid/otvalid.h (otv_MATH_validate): Add prototype.
4882 2008-03-31  Werner Lemberg  <wl@gnu.org>
4884         Fix support for subsetted CID-keyed CFFs.
4886         * include/freetype/freetype.h (FT_FACE_FLAG_CID_KEYED,
4887         FT_IS_CID_KEYED): New macros.
4889         * src/cff/cffobjs.c (cff_face_init): Set number of glyphs to the
4890         maximum CID value in CID-keyed CFFs.
4891         Handle FT_FACE_FLAG_CID_KEYED flag.
4893         * docs/CHANGES: Document it.
4896         Fix CFF font matrix calculation and improve precision.
4898         * src/cff/cffparse.c (cff_parse_real): Increase precision if integer
4899         part is zero.
4900         (cff_parse_font_matrix): Simplify computation of `units_per_em';
4901         this prevents overflow also.
4904         Support FT_Get_CID_Registry_Ordering_Supplement for PS CID fonts.
4906         * src/cid/cidriver.c: Include FT_SERVICE_CID_H.
4907         (cid_get_ros): New function.
4908         (cid_service_cid_info): New service structure.
4909         (cid_services): Register it.
4911 2008-03-23  Werner Lemberg  <wl@gnu.org>
4913         Adjustments for Visual C++ 8.0, as reported by Rainer Deyke.
4915         * builds/compiler/visualc.mk (CFLAGS): Remove /W5.
4916         (ANSIFLAGS): Add _CRT_SECURE_NO_DEPRECATE.
4918 2008-03-21  Laurence Darby  <ldarby>
4920         * src/type1/t1objs.c (T1_Face_Init): Use `/Weight'.  Patch from
4921         Savannah bug #22675.
4923 2008-03-13  Derek Clegg  <dclegg@apple.com>
4925         * src/truetype/ttgxvar.c (TT_Get_MM_Var): Fix named style loop.
4926         Patch from Savannah bug #22541.
4928 2008-03-03  Masatoshi Kimura  <VYV03354@nifty.ne.jp>
4930         * src/sfnt/ttcmap.c (tt_cmap14_char_map_nondef_binary,
4931         tt_cmap14_find_variant): Return correct value.
4932         (tt_cmap14_variant_chars): Fix check for `di'.
4934 2008-02-29  Wermer Lemberg  <wl@gnu.org>
4936         * docs/CHANGES: Updated.
4938 2008-02-29  Wolf
4940         Add build support for symbian platform.  From Savannah bug #22440.
4942         * builds/symbian/*: New files.
4944 2008-02-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4946         * src/base/ftmac.c (parse_fond): Fix a bug of PostScript font name
4947         synthesis.  For any face of a specified FOND, always the name for
4948         the first face was used.  Except of a FOND that refers multiple
4949         Type1 font files, wrong synthesized font names are not used at all,
4950         so this is an invisible bug.  A few limit checks are added too.
4952         * builds/mac/ftmac.c: Ditto.
4954 2008-02-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4956         * builds/unix/configure.raw: Split compiler option to link Carbon
4957         frameworks to one option for CoreServices framework and another
4958         option for ApplicationServices framework.  The split options can be
4959         managed by GNU libtool to avoid unrequired duplication when FreeType
4960         is linked with other applications.  Suggested by Daniel Macks,
4961         Savannah bug #22366.
4963 2008-02-18  Victor Stinner  <victor.stinner@haypocalc.com>
4965         * src/truetype/ttinterp.c (Ins_IUP): Check number of points.  Fix
4966         from Savannah bug #22356.
4968 2008-02-17  Jonathan Blow  <jon@number-none.com>
4970         * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
4971         Check for valid callback pointers.
4973 2008-02-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4975         * src/base/ftmac.c (FT_New_Face_From_SFNT): Check the sfnt resource
4976         handle by its value instead of ResError(), fix provided by Deron
4977         Kazmaier.  According to the Resource Manager Reference,
4978         GetResource(), Get1Resource(), GetNamedResource(),
4979         Get1NamedResource() and RGetResource() set noErr but return NULL
4980         handle when they can not find the requested resource.  These
4981         functions never return undefined values, so it is sufficient to
4982         check if the handle is not NULL.
4984         * builds/mac/ftmac.c (FT_New_Face_From_SFNT): Ditto.
4986 2008-02-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4988         * src/base/ftbase.c: <ftmac.c> is replaced by "ftmac.c" as other
4989         inclusion styles.  Now it always includes src/base/ftmac.c;
4990         builds/mac/ftmac.c is never included in any configuration.
4992         * builds/unix/configure.raw: Print warning if configure is executed
4993         with options to specify Carbon functionalities explicitly.
4995         * docs/INSTALL.MAC: Note that legacy builds/mac/ftmac.c is not
4996         included automatically and manual replacement is required.
4998 2008-02-11  Werner Lemberg  <wl@gnu.org>
5000         * builds/modules.mk (CLOSE_MODULE, REMOVE_MODULE), builds/detect.mk
5001         (dos_setup), builds/freetype.mk (clean_project_dos,
5002         distclean_project_dos): Don't use \ but $(SEP).  Reported by Duncan
5003         Murdoch.
5005 2008-01-18  Sylvain Pasche  <sylvain.pasche@gmail.com>
5007         * src/base/ftlcdfil.c (_ft_lcd_filter_legacy): Updated comment to
5008         mention intra-pixel algorithm.
5010         * include/freetype/freetype.h (FT_Render_Mode): Mention that
5011         FT_Library_SetLcdFilter can be used to reduce fringes.
5013 2008-01-16  Werner Lemberg  <wl@gnu.org>
5015         * src/raster/ftraster.c (ft_black_render): Check `outline' before
5016         using it.  Reported by Allan Yang.
5018 2008-01-12  Werner Lemberg  <wl@gnu.org>
5020         * src/raster/ftraster.c (FT_CONFIG_OPTION_5_GRAY_LEVELS): Remove.
5022 2008-01-12  Allan Yang, Jian Hua - SH  <Allan.Yang@fmc.fujitsu.com>
5024         * src/raster/ftraster.c (ft_black_init)
5025         [FT_RASTER_OPTION_ANTI_ALIASING]: Fix compilation.
5027 2008-01-10  Werner Lemberg  <wl@gnu.org>
5029         * src/truetype/ttgload.c (load_truetype_glyph): Handle the case
5030         where the number of contours in a simple glyph is zero (and which
5031         does contain an entry in the `glyf' table).  This fixes Savannah bug
5032         #21990.
5034 2008-01-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5036         Formatting suggested by Sean McBride.
5038         * builds/mac/ftmac.c: Formatting (tab expanded).
5039         * src/autofit/afindic.c: Ditto.
5040         * src/base/ftcid.c: Ditto.
5041         * src/base/ftmac.c: Ditto.
5043 2007-12-30  Werner Lemberg  <wl@gnu.org>
5045         * src/smooth/ftgrays.c (gray_raster_render): Check `outline'
5046         correctly.
5048 2007-12-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5050         Improvement of POSIX resource-fork accessor to load unsorted
5051         references in a resource.  In HelveLTMM (resource-fork PostScript
5052         Type1 font bundled with Mac OS X since 10.3.x), the appearance order
5053         of PFB chunks is not sorted; sorting the chunks by reference IDs is
5054         required.
5056         * include/freetype/internal/ftrfork.h (FT_RFork_Ref): New structure
5057         type to store a pair of reference ID and offset to the chunk.
5059         * src/base/ftrfork.c (ft_raccess_sort_ref_by_id): New function to
5060         sort FT_RFork_Ref by their reference IDs.
5062         (FT_Raccess_Get_DataOffsets): Returns an array of offsets that is
5063         sorted by reference ID.
5065 2007-12-14  Werner Lemberg  <wl@gnu.org>
5067         * src/cff/cffparse.c (cff_parse_real): Don't apply `power_ten'
5068         division too early; otherwise the most significant digit(s) of the
5069         final result are lost as the value is truncated to an integer.  This
5070         fixes Savannah bug #21794 (where the patch has been posted too).
5072 2007-12-06  Fix  <4d876b82@gmail.com>
5074         Pass options from one configure script to another as-is (not
5075         expanded).  This is needed for options like
5076         --includedir='${prefix}/include'.
5078         * builds/unix/detect.mk, configure: Prevent argument expansion in
5079         call to the (real) `configure' script.
5081 2007-12-06  Werner Lemberg  <wl@gnu.org>
5083         * src/truetype/ttgload.c (load_truetype_glyph): Fix compilation if
5084         TT_USE_BYTECODE_INTERPRETER isn't defined.
5086 2007-12-06  Werner Lemberg  <wl@gnu.org>
5088         There exist CFFs which contain opcodes for the Type 1 operators
5089         `hsbw' and `closepath' which are both invalid in Type 2 charstrings.
5090         However, it doesn't harm to support them.
5092         * src/cff/cffgload.c (CFF_Operator): Add `cff_op_hsbw' and
5093         `cff_op_closepath.'
5094         (cff_argument_counts): Ditto.
5096         (cff_decoder_parse_charstrings): Handle Type 1 opcodes 9 (closepath)
5097         and 13 (hsbw) which are invalid in Type 2 charstrings.
5099 2007-12-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5101         * src/base/ftrfork.c (raccess_guess_darwin_newvfs): New function to
5102         support new pathname syntax `..namedfork/rsrc' to access a resource
5103         fork on Mac OS X.  The legacy syntax `/rsrc' does not work on
5104         case-sensitive HFS+.
5105         (raccess_guess_darwin_hfsplus): Fix a bug in the calculation of
5106         buffer size to store a pathname.
5107         * include/freetype/internal/ftrfork.h: Increment the number of
5108         resource fork guessing rule.
5110 2007-12-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5112         * builds/unix/configure.raw: Improve the compile tests to search
5113         Carbon functions.
5114         * builds/mac/ftmac.c: Import fixes for Carbon incompatibilities
5115         proposed by Sean McBride from src/base/ftmac.c (see 2007-11-16).
5117 2007-12-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5119         The documents and comments for Mac OS X are improved by Sean
5120         McBride.
5122         * src/base/ftmac.c: Fix a comment.
5123         * include/freetype/ftmac.h: Ditto.
5124         * docs/INSTALL.MAC: Improve English and add comment on lowest
5125         system version specified by MACOSX_DEPLOYMENT_TARGET.
5127 2007-12-04  Werner Lemberg  <wl@gnu.org>
5129         * src/cff/cffload.c (cff_subfont_load): Don't use logical OR to
5130         concatenate error codes.
5131         * src/sfnt/ttsbit.c (Load_SBit_Range): Ditto.
5133 2007-12-04  Graham Asher  <graham.asher@btinternet.com>
5135         * src/truetype/ttobjs.c (tt_face_init): Don't use logical OR to
5136         concatenate error codes.
5138 2007-12-04  Sean McBride  <sean@rogue-research.com>
5140         * src/pfr/pfrgload.c (pfr_glyph_load_compound): Remove compiler
5141         warning.
5143 2007-11-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5145         Fix MacOS legacy font support by Masatake Yamato on Mac OS X.  It is
5146         not working since 2.3.5.  In FT_Open_New(), if FT_New_Stream()
5147         cannot mmap() the specified file and cannot seek to head of the
5148         specified file, it returns NULL stream and FT_Open_New() returns the
5149         error immediately.  On MacOS, most legacy MacOS fonts fall into such
5150         a scenario because their data forks are zero-sized and cannot be
5151         sought.  To proceed to guessing of resource fork fonts, the
5152         functions for legacy MacOS font must properly handle the NULL stream
5153         returned by FT_New_Stream().
5155         * src/base/ftobjs.c (IsMacBinary): Return error
5156         FT_Err_Invalid_Stream_Operation immediately when NULL stream is
5157         passed.
5158         (FT_Open_Face): Even when FT_New_Stream() returns an error, proceed
5159         to fallback.  Originally, legacy MacOS font is tested in the cases
5160         of FT_Err_Invalid_Stream_Operation (occurs when data fork is empty)
5161         or FT_Err_Unknown_File_Format (occurs when AppleSingle header or
5162         .dfont header is combined).  Now the case of
5163         FT_Err_Cannot_Open_Stream is included.
5165         * src/base/ftrfork.c (FT_Raccess_Guess): When passed stream is NULL,
5166         skip FT_Stream_Seek(), which seeks to the head of stream, and
5167         proceed to unit testing of raccess_guess_XXX().  FT_Stream_Seek()
5168         for a NULL stream causes a Bus error on Mac OS X.
5169         (raccess_guess_apple_double): Return FT_Err_Cannot_Open_Stream
5170         immediately if passed stream is NULL.
5171         (raccess_guess_apple_single): Ditto.
5173 2007-11-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5175         Fix for Carbon incompatibilities since Mac OS X 10.5,
5176         proposed by Sean McBride.
5178         * doc/INSTALL.MAC: Comment on MACOSX_DEPLOYMENT_TARGET.
5180         * include/freetype/ftmac.h: Deprecate FT_New_Face_From_FOND and
5181         FT_GetFilePath_From_Mac_ATS_Name.  Since Mac OS X 10.5, calling
5182         Carbon functions from a forked process is classified as unsafe
5183         by Apple.  All Carbon-dependent functions should be deprecated.
5185         * src/base/ftmac.c: Use essential header files
5186         <CoreServices/CoreServices.h> and
5187         <ApplicationServices/ApplicationServices.h> instead of
5188         all-in-one header file <Carbon/Carbon.h>.
5190         Include <sys/syslimits.h> and replace HFS_MAXPATHLEN by Apple
5191         genuine macro PATH_MAX.
5193         Add fallback macro for kATSOptionFlagsUnRestrictedScope which
5194         is not found in Mac OS X 10.0.
5196         Multi-character constants ('POST', 'sfnt' etc) are replaced by
5197         64bit constants calculated by FT_MAKE_TAG() macro.
5199         For the index in the segment of resource fork, new portable
5200         type ResourceIndex is introduced for better compatibility.
5201         This type is since Mac OS X 10.5, so it is defined as short
5202         when built on older platforms.
5204         (FT_ATSFontGetFileReference): If build target is only the systems
5205         10.5 and newer, it calls Apple genuine ATSFontGetFileReference().
5207         (FT_GetFile_From_Mac_ATS_Name): Return an error if system is 10.5
5208         and newer or 64bit platform, because legacy type FSSpec type is
5209         removed completely.
5211         (FT_New_Face_From_FSSpec): Ditto.
5213 2007-11-01  Werner Lemberg  <wl@gnu.org>
5215         * src/sfnt/sfobjs.c (sfnt_done_face): Check `sfnt' everywhere.  This
5216         fixes Savannah bug #21485.
5218 2007-10-29  Daniel Svoboda  <dasvo@planeta@cz>
5220         * src/winfonts/winfnt.c (FNT_Face_Init): Check first that the driver
5221         can handle the font at all, then check `face_index'.  Otherwise, the
5222         driver might return the wrong error code.  This fixes Savannah bug
5223         #21468.
5225 2007-10-21  Werner Lemberg  <wl@gnu.org>
5227         * src/sfnt/sfobjs.c (sfnt_load_face): Support bit 9 and prepare
5228         support for bit 8 of the `fsSelection' field in the `OS/2' table.
5229         MS is already using this; hopefully, this becomes part of OpenType
5230         1.5.
5231         Prepare also support for `name' IDs 21 (WWS_FAMILY) and 22
5232         (WWS_SUBFAMILY).
5234 2007-10-20  Werner Lemberg  <wl@gnu.org>
5236         * src/tools/docmaker/tohtml.py (html_header_2): Fix typo.
5237         Add `td.left' element to CSS.
5238         (toc_section_enter): Use it.
5240 2007-10-18  David Turner  <david@freetype.org>
5242         * include/freetype/freetype.h, src/base/ftobjs.c: Rename API
5243         functions related to cmap type 14 support to the
5244         `FT_Object_ActionName' scheme:
5246           FT_Get_Char_Variant_index     -> FT_Face_GetCharVariantIndex
5247           FT_Get_Char_Variant_IsDefault -> FT_Face_GetCharVariantIsDefault
5248           FT_Get_Variant_Selectors      -> FT_Face_GetVariantSelectors
5249           FT_Get_Variants_Of_Char       -> FT_Face_GetVariantsOfChar
5250           FT_Get_Chars_Of_Variant       -> FT_Face_GetCharsOfVariant
5252         Update documentation accordingly.
5254         * src/sfnt/ttcmap.c: Stronger cmap 14 validation.
5255         Make the code a little more consistent with FreeType coding
5256         conventions and modify the cmap14 functions that returned a newly
5257         allocated array to use a persistent vector from the TT_CMap14 object
5258         instead.
5260         (TT_CMap14Rec): Provide array and auxiliary data for result.
5261         (tt_cmap14_done, tt_cmap14_ensure): New functions.
5263         (tt_cmap14_init, tt_cmap14_validate, tt_cmap14_char_map_def_binary,
5264         tt_cmap14_char_map_nondef_binary, tt_cmap14_find_variant,
5265         tt_cmap14_char_var_index, tt_cmap14_variants,
5266         tt_cmap14_char_variants, tt_cmap14_def_char_count,
5267         tt_cmap14_get_def_chars, tt_cmap14_get_nondef_chars,
5268         tt_cmap14_variant_chars, tt_cmap14_class_rec): Updated and improved.
5270 2007-10-15  George Williams  <gww@silcom.com>
5272         Add support for cmap type 14.
5274         * devel/ftoption.h, include/freetype/config/ftoption.h
5275         (TT_CONFIG_CMAP_FORMAT_14): New macro.
5277         * include/freetype/internal/ftobjs.h (FT_CMap_CharVarIndexFunc,
5278         FT_CMap_CharVarIsDefaultFunc, FT_CMap_VariantListFunc,
5279         FT_CMap_CharVariantListFunc, FT_CMap_VariantCharListFunc): New
5280         support function prototypes.
5281         (FT_CMap_ClassRec): Add them.
5282         Update all users.
5284         * include/freetype/ttnameid.h (TT_APPLE_ID_VARIANT_SELECTOR): New
5285         macro.
5287         * include/freetype/freetype.h (FT_Get_Char_Variant_Index,
5288         FT_Get_Char_Variant_IsDefault, FT_Get_Variant_Selectors,
5289         FT_Get_Variants_Of_Char, FT_Get_Chars_Of_Variant): New API
5290         functions.
5292         * src/base/ftobjs.c (find_variant_selector_charmap): New auxiliary
5293         function.
5294         (FT_Set_Charmap): Disallow cmaps of type 14.
5295         (FT_Get_Char_Variant_Index, FT_Get_Char_Variant_IsDefault,
5296         FT_Get_Variant_Selectors, FT_Get_Variants_Of_Char,
5297         FT_Get_Chars_Of_Variant): New API functions.
5299         * src/sfnt/ttcmap.c (TT_PEEK_UINT24, TT_NEXT_UINT24): New macros.
5301         (TT_CMap14Rec, tt_cmap14_init, tt_cmap14_validate,
5302         tt_cmap14_char_index, tt_cmap14_char_next, tt_cmap14_get_info,
5303         tt_cmap14_char_map_def_binary, tt_cmap14_char_map_nondef_binary,
5304         tt_cmap14_find_variant, tt_cmap14_char_var_index,
5305         tt_cmap14_char_var_isdefault, tt_cmap14_variants,
5306         tt_cmap14_char_variants, tt_cmap14_def_char_count,
5307         tt_cmap14_get_def_chars, tt_cmap14_get_nondef_chars,
5308         tt_cmap14_variant_chars, tt_cmap14_class_rec): New functions and
5309         structures for cmap 14 support.
5310         (tt_cmap_classes): Register tt_cmap14_class_rec.
5311         (tt_face_build_cmaps): One more error message.
5313         * docs/CHANGES: Mention cmap 14 support.
5315 2007-10-01  Werner Lemberg  <wl@gnu.org>
5317         * src/base/ftobjs.c (find_unicode_charmap): If search for a UCS-4
5318         charmap fails, do the loop again while searching a UCS-2 charmap.
5319         This favours MS charmaps over Apple ones.
5321 2007-08-29  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5323         * src/base/ftmac.c: Introduction of abstract `short' data types,
5324         ResFileRefNum and ResID.  These types were introduced for Copland,
5325         then backported to MPW.  The variables exchanged with FileManager
5326         QuickDraw frameworks are redefined by these data types.  Patch was
5327         proposed by Sean McBride.
5328         * builds/mac/ftmac.c: Ditto.
5330 2007-08-18  Werner Lemberg  <wl@gnu.org>
5332         * src/otvalid/otvcmmn.c (otv_x_y_ux_sy): Skip context glyphs.  Found
5333         by Imran Yousaf.  Fixes Savannah bug #20773.
5335         (otv_Lookup_validate): Correct handling of LookupType.  Found by
5336         Imran Yousaf.  Fixes Savannah bug #20782.
5338 2007-08-17  George Williams  <gww@silcom.com>
5340         * src/otvalid/otvgsub.c (otv_SingleSubst_validate): Fix handling of
5341         SingleSubstFormat1.
5343 2007-08-11  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5345         * builds/unix/configure.raw: Fix a bug which sets CC_BUILD by
5346         ${build-gcc} (unchecked) instead of by ${build}-gcc (checked).
5347         Found by Ryan Hill.
5349 2007-08-11  George Williams  <gww@silcom.com>
5351         * src/otvalid/otvcommn.c, src/otvalid/otvcommn.h
5352         (otv_Coverage_validate): Add fourth argument to pass an expected
5353         count value.  Update all users.
5354         Check glyph IDs.
5355         (otv_ClassDef_validate): Check `StartGlyph'.
5357         * src/otvalid/otvgsub.c (otv_SingleSubst_validate): More glyph ID
5358         checks.
5360         * src/otvalid/otvmath.c (otv_MathConstants_validate): There are only
5361         56 constants.
5362         (otv_GlyphAssembly_validate, otv_MathGlyphConstruction_validate):
5363         Check glyph IDs.
5365 2007-08-08  Werner Lemberg  <wl@gnu.org>
5367         * src/otvalid/otvbase.c, src/otvalid/otvcommn.c,
5368         src/otvalid/otvgdef.c, src/otvalid/otvgpos.c, src/otvalid/otvgsub.c,
5369         src/otvalid/otvjstf.c: s/FT_INVALID_DATA/FT_INVALID_FORMAT/ where
5370         appropriate.  Reported by George.
5372         * include/freetype/internal/fttrace.h: Define `trace_otvmath'.
5374         * src/otvalid/rules.mk (OTV_DRV_SRC): Add otvmath.c.
5376         * docs/CHANGES: Updated.
5378 2007-08-08  George Williams  <gww@silcom.com>
5380         Add `MATH' validating support to otvalid module.
5382         * include/freetype/tttags.h (TTAG_MATH): New macro.
5383         * include/freetype/ftotval.h (FT_VALIDATE_MATH): New macro.
5384         (FT_VALIDATE_OT): Updated.
5386         * src/otvalid/otmath.c: New file.
5388         * src/otvalid/otvalid.c: Include otvmath.c.
5389         * src/otvalid/otvmod.c (otv_validate): Handle `MATH' table.
5391 2007-08-04  Werner Lemberg  <wl@gnu.org>
5393         * builds/unix/configure.raw: Add call to AC_LIBTOOL_WIN32_DLL.
5394         Fixes Savannah bug #20686.
5396 2007-08-03  Werner Lemberg  <wl@gnu.org>
5398         * src/psnames/psmodule.c: Fix usage of
5399         FT_CONFIG_OPTION_POSTSCRIPT_NAMES macro.  Reported by Graham Asher.
5401 2007-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5403         * src/base/ftmac.c (open_face_from_buffer): The argument
5404         `driver_name' is typed as `const char*' to match with the
5405         callers in FT_New_Face_From_LWFN and FT_New_Face_From_SFNT.
5406         This is same with open_face_from_buffer in src/base/ftobjs.c.
5407         Found and fixed by Sean McBride.
5409 2007-07-28  Werner Lemberg  <wl@gnu.org>
5411         * src/raster/ftraster.c (count_table): Make it conditional.
5412         * src/base/ftobjs.c (FT_New_Library): Check FT_RENDER_POOL_SIZE with
5413         a preprocessor statement.
5415 2007-07-27  Werner Lemberg  <wl@gnu.org>
5417         * src/base/ftoutln.c (FT_Outline_Translate): Check `outline' before
5418         first usage.  From Savannah patch #6115.
5420 2007-07-16  Werner Lemberg  <wl@gnu.org>
5422         * docs/CHANGES: Updated.
5424 2007-07-16  Derek Clegg  <dclegg@apple.com>
5426         Add new service for getting the ROS from a CID font.
5428         * include/freetype/config/ftheader.h (FT_CID_H): New macro.
5429         * include/freetype/ftcid.h: New file.
5431         * include/freetype/internal/ftserv.h (FT_SERVIVE_CID_H): New macro.
5432         * include/freetype/internal/services/svcid.h: New file.
5434         * src/base/ftcid.c: New file.
5436         * src/cff/cffdrivr.c: Include FT_SERVICE_CID_H.
5437         (cff_get_ros): New function.
5438         (cff_service_cid_info): New service structure.
5439         (cff_services): Register it.
5441         * src/cff/cffload.c (cff_font_done): Free registry and ordering.
5443         * src/cff/cfftypes.h (CFF_FontRec): Add `registry' and `ordering'.
5445         * modules.cfg (BASE_EXTENSIONS): Add ftcid.c.
5447 2007-07-11  Derek Clegg  <dclegg@apple.com>
5449         Add support for postscript name service to CFF driver.
5451         * src/cff/cffdrivr.c: Include FT_SERVICE_POSTSCRIPT_NAME_H.
5452         (cff_get_ps_name): New function.
5453         (cff_service_ps_name): New service structure.
5454         (cff_services): Register it.
5456 2007-07-07  Werner Lemberg  <wl@gnu.org>
5458         * src/base/ftglyph.c (FT_Glyph_Copy): Fix initialization of
5459         `target'.  Reported by Sean McBride.
5461 2007-07-06  Werner Lemberg  <wl@gnu.org>
5463         * src/pfr/pfrcmap.c: Include pfrerror.h.
5465         * src/autofit/afindic.c: Add some external declarations to pacify
5466         `make multi' compilation.
5468         * src/cid/cidgload.c (cid_load_glyph): Pacify compiler.
5470         * src/cff/cffdrivr.c (cff_ps_get_font_info), src/cff/cffobjs.c
5471         (cff_strcpy), include/freetype/internal/ftmemory.h (FT_MEM_STRDUP),
5472         src/autofit/aflatin.c (af_latin_hints_compute_edges),
5473         src/autofit/afcjk.c (af_cjk_hints_compute_edges), src/sfnt/ttmtx.c
5474         (tt_face_get_metrics), src/base/ftobjs.c (open_face)
5475         [FT_CONFIG_OPTION_INCREMENTAL]: Fix compilation with C++ compiler.
5477         * docs/release: Mention test compilation targets.
5479 2007-07-04  Werner Lemberg  <wl@gnu.org>
5481         * docs/PROBLEMS: Mention that some PS based fonts can't be
5482         handled correctly by FreeType.
5484         * src/truetype/ttgload.c (load_truetype_glyph): Always allow a
5485         recursion depth of 1.  This was the maximum value in TrueType 1.0,
5486         and some older fonts don't set this field correctly.
5488         * src/gxvalid/gxvmort1.c
5489         (gxv_mort_subtable_type1_substTable_validate): Fix tracing message.
5491 2007-07-03  Werner Lemberg  <wl@gnu.org>
5493         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Initialize
5494         `round' to pacify compiler.
5496 2007-07-02  Werner Lemberg  <wl@gnu.org>
5499         * Version 2.3.5 released.
5500         =========================
5503         Tag sources with `VER-2-3-5'.
5505         * docs/CHANGES, docs/VERSION.DLL: Update documentation and bump
5506         version number to 2.3.5.
5508         * README, Jamfile (RefDoc), builds/win32/visualc/index.html,
5509         builds/win32/visualc/freetype.dsp,
5510         builds/win32/visualc/freetype.vcproj,
5511         builds/win32/visualce/index.html,
5512         builds/win32/visualce/freetype.dsp,
5513         builds/win32/visualce/freetype.vcproj: s/2.3.4/2.3.5/, s/234/235/.
5515         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
5517         * builds/unix/configure.raw (version_info): Set to 9:16:3.
5519 2007-07-01  David Turner  <david@freetype.org>
5521         * include/freetype/freetype.h, src/base/ftpatent.c
5522         (FT_Face_SetUnpatentedHinting): New function to dynamically change
5523         the setting after a face is created.
5525         * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Fix a small bug
5526         that created distortions in the bytecode interpreter results.
5528 2007-06-30  David Turner  <david@freetype.org>
5530         * src/truetype/ttinterp.c (Ins_IUP): Add missing variable
5531         initialization.
5533         * src/autofit/aflatin.c (af_latin_metric_init_blues): Get rid of an
5534         infinite loop in the case of degenerate fonts.
5536 2007-06-26  Rahul Bhalerao  <b.rahul.pm@gmail.com>
5538         Add autofit module for Indic scripts.  This currently just reuses
5539         the CJK-specific functions.
5541         * include/freetype/config/ftoption.h (AF_CONFIG_OPTION_INDIC): New
5542         macro.
5543         * devel/ftoption.h: Synchronize with
5544         include/freetype/config/ftoption.h.
5546         * src/autofit/afindic.c, src/autofit/afindic.h: New files.
5548         * src/autofit/afglobal.c, src/autofit/aftypes.h,
5549         src/autofit/autofit.c: Updated.
5551         * src/autofit/Jamfile (_sources), * src/autofit/rules.mk
5552         (AUTOF_DRV_SRC): Updated.
5554 2007-06-23  David Turner  <david@freetype.org>
5556         * src/truetype/ttgload.c (TT_Load_Simple): Fix change from
5557         2007-06-16 that prevented the TrueType module from loading most
5558         glyphs.
5560 2007-06-20  Werner Lemberg  <wl@gnu.org>
5562         * src/cff/cffgload.c (cff_slot_load): Fix logic of 2007-05-28
5563         change.
5565 2007-06-19  Werner Lemberg  <wl@gnu.org>
5567         * src/type1/t1load.c (parse_encoding): Handle one more error.
5569 2007-06-19  Dmitry Timoshkov  <dmitry@codeweavers.com>
5571         * src/winfonts/winfnt.c (fnt_face_get_dll_font): Return error
5572         FNT_Err_Invalid_File_Format if file format was recognized but
5573         the file doesn't contain any FNT(NE) or RT_FONT(PE) resources.
5574         Add verbose debug logs to make it easier to debug failing load
5575         attempts.
5576         (FNT_Face_Init): A single FNT font can't contain more than 1 face,
5577         so return an error if requested face index is > 0.
5578         Do not do further attempt to load fonts if a previous attempt has
5579         failed but returned error FNT_Err_Invalid_File_Format, i.e., the
5580         file format has been recognized but no fonts found in the file.
5582 2007-07-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5584         * src/base/ftmac.c: Apply patches proposed by Sean McBride.
5585         (FT_GetFile_From_Mac_Name): Insert FT_UNUSED macros to fix
5586         the compiler warnings against unused arguments.
5587         (FT_ATSFontGetFileReference): Ditto.
5588         (FT_GetFile_From_Mac_ATS_Name): Ditto.
5589         (FT_New_Face_From_FSSpec): Ditto.
5590         (lookup_lwfn_by_fond): Fix wrong comment.
5591         Replace `const StringPtr' by more appropriate type
5592         `ConstStr255Param'.
5593         FSRefMakePathPath always returns UTF8 POSIX pathname in
5594         Mach-O, thus HFS pathname support is dropped.
5595         (count_faces): Remove HLock and HUnlock which is not
5596         required on Mac OS X anymore.
5597         (FT_New_Face_From_SFNT): Ditto.
5598         (FT_New_Face_From_FOND): Ditto.
5599         * builds/mac/ftmac.c: Synchronize to src/base/ftmac.c,
5600         except of HFS pathname support and HLock/HUnlock.
5601         They are required on classic CFM environment.
5603 2007-06-18  Werner Lemberg  <wl@gnu.org>
5605         * src/psaux/psobjs.c (ps_parser_skip_PS_token): Remove incorrect
5606         assertion.
5607         (ps_parser_to_bytes): Fix error message.
5609         * src/type42/t42objs.c (T42_Open_Face): Handle one more error.
5610         * src/type42/t42parse.c (t42_parse_sfnts): s/alloc/allocated/.
5611         Don't allow mixed binary and hex strings.
5612         Handle string_size == 0 and string_buf == 0.
5613         (t42_parse_encoding): Handle one more error.
5615 2007-06-18  Werner Lemberg  <wl@gnu.org>
5617         * src/psaux/psobjs.c (ps_tofixedarray, ps_tocoordarray): Fix exit
5618         logic.
5619         (ps_parser_load_field) <T1_FIELD_TYPE_BBOX>: Skip delimiters
5620         correctly.
5621         (ps_parser_load_field_table): Use `fields->array_max' instead of
5622         T1_MAX_TABLE_ELEMENTS to limit the number of arguments.
5624         * src/cff/cffgload.c (cff_decoder_prepare): Fix change from
5625         2007-06-06.
5627 2007-06-17  Werner Lemberg  <wl@gnu.org>
5629         * src/tools/ftrandom.c (font_size): New global variable.
5630         (TestFace): Use it.
5631         (main): Handle new option `--size' to set `font_size'.
5632         (Usage): Updated.
5634         * src/winfonts/winfnt.c (fnt_face_get_dll_font): Exit in case of
5635         invalid font.
5636         (FNT_Load_Glyph): Protect against invalid bitmap width.
5638 2007-06-16  David Turner  <david@freetype.org>
5640         * src/smooth/ftgrays.c (gray_find_cell, gray_set_cell, gray_hline):
5641         Prevent integer overflows when rendering very large outlines.
5643         * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check the
5644         well-formedness of the contours array when loading a glyph.
5646         * src/truetype/ttinterp.c (TT_Load_Context): Initialize `zp0', `zp1',
5647         and `zp2'.
5648         (Ins_IP): Check argument ranges to reject bogus operations properly.
5649         (IUP_WorkerRec): Add `max_points' member.
5650         (_iup_worker_interpolate): Check argument ranges.
5651         (Ins_IUP): Ignore empty outlines.
5653 2007-06-16  Dmitry Timoshkov  <dmitry@codeweavers.com>
5655         * src/winfonts/winfnt.h: Add necessary structures for PE resource
5656         parsing.
5657         (WinPE32_HeaderRec): New structure.
5658         (WinPE32_SectionRec): New structure.
5659         (WinPE_RsrcDirRec): New structure.
5660         (WinPE_RsrcDirEntryRec): New structure.
5661         (WinPE_RsrcDataEntryRec): New structure.
5662         (FNT_FontRec): Remove unused `size_shift' field.
5664         * src/winfonts/winfnt.c (fnt_face_get_dll_font): Add support for
5665         loading bitmap .fon files in PE format.
5667 2007-06-15  Dmitry Timoshkov  <dmitry@codeweavers.com>
5669         * builds/win32/ftdebug.c: Unify debug level handling with other
5670         platforms.
5672 2007-06-14  Dmitry Timoshkov  <dmitry@codeweavers.com>
5674         * builds/win32/ftdebug.c (FT_Message): Send debug output to the
5675         console as well as to the debugger.
5677 2007-06-14  Werner Lemberg  <wl@gnu.org>
5679         * src/autofit/aflatin.c (af_latin_uniranges): Expand structure to
5680         cover all ranges which could possibly be handled by the aflatin
5681         module (since the default fallback for unknown ranges is now the
5682         afcjk module).  It might be necessary to fine-tune this further by
5683         splitting off modules for Greek, Cyrillic, or other blocks.
5685 2007-06-11  David Turner  <david@freetype.org>
5687         * src/autofit/aflatin.c (af_latin_hints_link_segments): Fix
5688         incorrect segment linking computation.  This was the root cause of
5689         Savannah bug #19565.
5692         * src/autofit/* [FT_OPTION_AUTOFIT2]: Some very experimental changes
5693         to improve the Latin auto-hinter.  Note that the new code is
5694         disabled by default since it is not stabilized yet.
5696         * src/autofit/aflatin2.c, src/autofit/aflatin2.h: New files
5697         (disabled currently).
5699         * src/autofit/afhints.c: Remove dead code.
5700         (af_axis_hints_new_edge): Add argument to handle segment directions.
5701         (af_edge_flags_to_string): New function.
5702         (af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Handle
5703         option flags.
5704         (af_glyph_hints_reload): Add argument to handle inflections.
5705         Simplify.
5706         (af_direction_compute): Fine tuning.
5707         (af_glyph_hints_align_edge_points): Fix logic.
5708         (af_glyph_hints_align_strong_points): Do linear search for small
5709         edge counts.
5710         (af_glyph_hints_align_weak_points): Skip any touched neighbors.
5711         (af_iup_shift): Handle zero `delta'.
5713         * src/autofit/afhints.h: Updated.
5714         (AF_SORT_SEGMENTS): New macro (disabled).
5715         (AF_AxisHintsRec) [AF_SORT_SEGMENTS]: New member `mid_segments'.
5717         * src/autofit/afglobal.c (af_face_globals_get_metrics): Add
5718         argument to pass option flags for handling scripts.
5719         * src/autofit/afglobal.h: Updated.
5721         * src/autofit/afcjk.c: Updated.
5722         * src/autofit/aflatin.c: Updated.
5723         (af_latin_metrics_scale_dim): Don't reduce scale by 2%.
5725         (af_latin_hints_compute_segments) [AF_HINT_METRICS]: Remove dead code.
5726         (af_latin_hints_compute_edges) [AF_HINT_METRICS]: Remove dead code.
5727         Don't set `edge->dir'
5728         (af_latin_hint_edges): Add more logging.
5730         * src/autofit/afloader.c: Updated.
5732 2007-06-11  Werner Lemberg  <wl@gnu.org>
5734         * docs/CHANGES: Document FT_Face_CheckTrueTypePatents.
5736 2007-06-10  David Turner  <david@freetype.org>
5738         * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Slight speed-up to
5739         the TrueType glyph loader.
5741         * include/freetype/config/ftoption.h: Clarify documentation
5742         regarding unpatented hinting.
5745         Add new `FT_Face_CheckTrueTypePatents' API.
5747         * include/freetype/freetype.h (FT_Face_CheckTrueTypePatents): New
5748         declaration.
5750         * include/freetype/internal/services/svttglyf.h,
5751         src/base/ftpatent.c: New files.
5753         * include/freetype/internal/ftserv.h (FT_SERVICE_TRUETYPE_GLYF_H):
5754         New macro.
5756         * src/truetype/ttdriver.c: Include FT_SERVICE_TRUETYPE_GLYF_H and
5757         `ttpload.h'.
5758         (tt_service_truetype_glyf): New service structure.
5759         (tt_services): Register it.
5761         * modules.cfg (BASE_EXTENSIONS), src/base/Jamfile (_sources): Add
5762         `ftpatent.c'.
5764 2007-06-08  Werner Lemberg  <wl@gnu.org>
5766         * src/sfnt/sfobjs.c (sfnt_load_face): Undo change from 2007-04-28.
5767         Fonts without a cmap must be handled correctly by FreeType (anything
5768         else would be a bug).
5771         * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
5772         [FT_DEBUG_LEVEL_TRACE]: Improve tracing message.
5774 2007-06-07  Werner Lemberg  <wl@gnu.org>
5776         * src/sfnt/ttsbit0.c (tt_sbit_decoder_init,
5777         tt_sbit_decoder_load_image): Protect against integer overflows.
5780         * src/pfr/pfrgload.c (pfr_glyph_load_simple): More bounding checks
5781         for `x_control' and `y_control'.
5783 2007-06-06  Werner Lemberg  <wl@gnu.org>
5785         * src/base/ftoutln.c (FT_Outline_Decompose): Check `last'.
5788         * src/pfr/pfrcmap.c (pfr_cmap_init): Convert assertion into normal
5789         FreeType error.
5792         * src/winfonts/winfnt.c (fnt_face_get_dll_font): Do a rough check of
5793         `font_count'.
5796         * src/type1/t1load.c (parse_font_matrix): Check `temp_scale'.
5799         * src/cff/cffgload.c (cff_decoder_prepare): Change return type to
5800         `FT_Error'.
5801         Check `fd_index'.
5802         (cff_slot_load): Updated.
5803         * src/cff/cffgload.h: Updated.
5805 2007-06-05  Werner Lemberg  <wl@gnu.org>
5807         * src/pfr/pfrgload.c (pfr_glyph_done): Comment out unused code.
5808         (pfr_glyph_load_simple): Convert assertion into normal FreeType
5809         error.
5810         Check `idx'.
5811         (pfr_glyph_load_compound, pfr_glyph_curve_to, pfr_glyph_line_to):
5812         Convert assertion into normal FreeType error.
5814         * src/pfr/pfrtypes.h (PFR_GlyphRec): Comment out unused code.
5817         * src/winfonts/winfnt.c (FNT_Face_Init): Check `family_size'.
5820         * src/psaux/psobjs.c (ps_tocoordarray, ps_tofixedarray): Return -1
5821         in case of parsing error.
5822         (ps_parser_load_field): Updated.
5824         * src/type1/t1load.c (parse_font_matrix): Updated.
5826 2007-06-04  Werner Lemberg  <wl@gnu.org>
5828         * src/cid/cidgload.c (cid_load_glyph): Check `fd_select'.
5830         * src/tools/ftrandom/Makefile: Depend on `libfreetype.a'.
5832 2007-06-03  Werner Lemberg  <wl@gnu.org>
5834         * src/tools/ftrandom/*: Add the `ftrandom' test program written by
5835         George Williams (with some modifications).
5837 2007-06-03  Werner Lemberg  <wl@gnu.org>
5839         * src/base/ftobjs.c (destroy_charmaps), src/type1/t1objs.c
5840         (T1_Face_Done), src/winfonts/winfnt.c (FNT_Face_Done): Check for
5841         face == NULL.  Suggested by Graham Asher.
5843 2007-06-03  Ismail Dönmez  <ismail@pardus.org.tr>
5845         * src/base/ftobjs.c (FT_Request_Metrics): Fix compiler warning.
5847 2007-06-02  Werner Lemberg  <wl@gnu.org>
5849         * include/freetype/fterrdef.h (FT_Err_Corrupted_Font_Header,
5850         FT_Err_Corrupted_Font_Glyphs): New error codes for BDF files.
5852         * src/bdf/bdflib.c (bdf_load_font): Use them.
5854         * src/bdf/bdflib.c (_bdf_parse_start): Check `FONT' better.
5856 2007-06-01  Werner Lemberg  <wl@gnu.org>
5858         * src/base/ftobjs.c (FT_Request_Metrics), src/cache/ftccmap.c
5859         (FTC_CMapCache_Lookup): Remove unused code.
5861 2007-06-01  Sean McBride  <sean@rogue-research.com>
5863         * src/truetype/ttinterp.c (Null_Vector, NULL_Vector): Removed,
5864         unused.
5866 2007-06-01  Werner Lemberg  <wl@gnu.org>
5868         * src/cid/cidparse.c (cid_parser_new): Don't continue second search
5869         pass for `StartData' if an error has occurred.
5870         Exit properly if no `StartData' has been seen at all.
5872         * builds/unix/ftsystem.c (FT_Stream_Open): Don't use ULONG_MAX but
5873         LONG_MAX to avoid compiler warning.  Suggested by Sean McBride.
5875 2007-05-30  Werner Lemberg  <wl@gnu.org>
5877         * src/type1/t1load.c (parse_subrs, parse_charstrings): Protect
5878         against too small binary data strings.
5880         * src/bdf/bdflib.c (_bdf_parse_glyphs): Check `STARTCHAR' better.
5882 2007-05-28  David Turner  <david@freetype.org>
5884         * src/cff/cffgload.c (cff_slot_load): Do not apply the identity
5885         transformation.  This significantly reduces the loading time of CFF
5886         glyphs.
5888         * docs/CHANGES: Updated.
5890         * src/autofit/afglobal.c (AF_SCRIPT_LIST_DEFAULT): Change default
5891         hinting script to CJK, since it works well with more scripts than
5892         latin.  Thanks to Rahul Bhalerao <b.rahul.pm@gmail.com> for pointing
5893         this out!
5895 2007-05-25  Werner Lemberg  <wl@gnu.org>
5897         * docs/CHANGES: Updated.
5899 2007-05-24  Werner Lemberg  <wl@gnu.org>
5901         * src/truetype/ttobjs.h (tt_size_ready_bytecode): Move declaration
5902         into TT_USE_BYTECODE_INTERPRETER preprocessor block.
5904 2007-05-24  Graham Asher  <graham.asher@btinternet.com>
5906         * src/truetype/ttobjs.c (tt_size_ready_bytecode)
5907         [!TT_USE_BYTECODE_INTERPRETER]: Removed.  Unused.
5909 2007-05-22  David Turner  <david@freetype.org>
5911         * src/truetype/ttgload.c (load_truetype_glyph): Fix last change to
5912         avoid crashes in case the bytecode interpreter is not used.
5915         Avoid heap blowup with very large .Z font files.  This fixes
5916         Savannah bug #19910.
5918         * src/lzw/ftzopen.h (FT_LzwStateRec): Remove `in_cursor',
5919         `in_limit', `pad', `pad_bits', and `in_buff' members.
5920         Add `buf_tab', `buf_offset', `buf_size', `buf_clear', and
5921         `buf_total' members.
5923         * src/lzw/ftzopen.c (ft_lzwstate_get_code): Rewritten.  It now takes
5924         only one argument.
5925         (ft_lzwstate_refill, ft_lzwstate_reset, ft_lzwstate_io): Updated.
5927 2007-05-20  Ismail Dönmez  <ismail@pardus.org.tr>
5929         * src/pshinter/pshrec.c (ps_mask_table_set_bits): Add `const'.
5930         (ps_dimension_set_mask_bits): Remove `const'.
5932 2007-05-19  Werner Lemberg  <wl@gnu.org>
5934         * src/sfnt/ttmtx.c (tt_face_get_metrics)
5935         [!FT_CONFIG_OPTION_OLD_INTERNALS]: Another type-punning fix.
5937 2007-05-19  Derek Clegg  <dclegg@apple.com>
5939         Savannah patch #5929.
5941         * include/freetype/tttables.h, src/base/ftobjcs.c
5942         (FT_Get_CMap_Format): New function.
5944         * include/freetype/internal/services/svttcmap.c (TT_CMapInfo): Add
5945         `format' member.
5946         * src/sfnt/ttcmap.c (tt_cmap{0,2,4,6,8,10,12}_get_info): Set
5947         cmap_info->format.
5949 2007-05-19  Werner Lemberg  <wl@gnu.org>
5951         * src/truetype/ttgload.c (load_truetype_glyph): Save graphics state
5952         before handling subglyphs so that it can be reinitialized each time.
5953         This fixes Savannah bug #19859.
5955 2007-05-16  Werner Lemberg  <wl@gnu.org>
5957         * src/cache/ftccache.c (ftc_node_mru_link, ftc_node_mru_unlink),
5958         src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP), src/cache/ftcglyph.h
5959         (FTC_GCACHE_LOOKUP_CMP), src/pshinter/pshmod.c (ps_hinter_init),
5960         src/sfnt/ttmtx.c (tt_face_load_hmtx, tt_face_load_hhea,
5961         tt_face_get_metrics): Fix type-punning issues.
5963 2007-05-15  David Turner  <david@freetype.org>
5965         * include/freetype/config/ftstdlib.h,
5966         include/freetype/internal/ftobjs.h: As suggested by Graham Asher,
5967         ensure that ft_isalnum, ft_isdigit, etc., use hard-coded values
5968         instead on relying on the locale-dependent functions provided by
5969         <ctypes.h>.
5971 2007-05-15  Graham Asher  <graham.asher@btinternet.com>
5973         * src/autofit/afcjk.c (af_cjk_hints_compute_edges): Remove unused
5974         variable.
5975         * src/autofit/afloader.c (af_loader_load_g): Ditto.
5977         * src/base/ftobjs.c (ft_validator_error): Use `ft_jmp_buf'.
5978         (open_face_from_buffer): Initialize `stream'.
5979         (FT_Request_Metrics): Remove unused variable.
5980         Remove redundant `break' statements.
5981         (FT_Get_Track_Kerning): Remove unused variable.
5983         * src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs,
5984         afm_parse_kern_data): Remove redundant
5985         `break' statements.
5986         (afm_parser_parse): Ditto.
5987         Don't use uninitialized variables.
5989         * src/psnames/psmodule.c (VARIANT_BIT): Define as unsigned long.
5990         Use `|' operator instead of `^' to set it.
5991         Update all users.
5993         * src/sfnt/ttcmap.c (tt_face_build_cmaps): Use `ft_jmp_buf'.
5994         * src/sfnt/ttkern.c (tt_face_load_kern): Remove unused variable.
5996         * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Remove redundant
5997         comparison.
5998         (TT_Process_Simple_Glyph): Use FT_UInt for `n_points' and `i'.
5999         (TT_Load_Glyph): Remove unused variable.
6001 2007-05-13  Derek Clegg  <dclegg@apple.com>
6003         * src/base/ftobjs.c (FT_New_Library): Only allocate rendering pool
6004         if FT_RENDER_POOL_SIZE is > 0.  From Savannah patch #5928.
6006 2007-05-11  David Turner  <david@freetype.org>
6008         * src/cache/ftbasic.c, include/freetype/ftcache.h
6009         (FTC_ImageCache_LookupScaler, FTC_SBit_Cache_LookupScaler): Two new
6010         functions that allow us to look up glyphs using an FTC_Scaler object
6011         to specify the size, making it possible to use fractional pixel
6012         sizes.
6014         * src/truetype/ttobjs.c (tt_size_ready_bytecode): Set
6015         `size->cvt_ready'.  Reported by Boris Letocha.
6017 2007-05-09  Graham Asher  <graham.asher@btinternet.com>
6019         * src/truetype/ttinterp.c (Ins_IP), src/autofit/aflatin.c
6020         (af_latin_metrics_scale_dim): Fix compiler warnings.
6022 2007-05-06  Werner Lemberg  <wl@gnu.org>
6024         * builds/win32/visualce/freetype.sln: Removed, as requested by
6025         Vincent.
6027 2007-05-04  Vincent RICHOMME  <richom.v@free.fr>
6029         * builds/win32/visualce/*: Add Visual C++ project files for Pocket
6030         PC targets.
6032         * docs/CHANGES: Document them.
6034 2007-05-04  <harry@kdevelop.org>
6036         * builds/unix/ftsystem.c (FT_Stream_Open): Handle return value 0 of
6037         mmap (which might happen on some RTOS).  From Savannah patch #5909.
6039 2007-05-03  Werner Lemberg  <wl@gnu.org>
6041         * src/base/ftobjs.c (FT_Set_Char_Size): Simplify code.
6042         * include/freetype/freetype.h (FT_Set_Char_Size): Update
6043         documentation.
6045 2007-04-28  Victor Stinner  <victor.stinner@inl.fr>
6047         * src/sfnt/sfobjs.c (sfnt_load_face): Check error code after loading
6048         `cmap'.
6050 2007-04-27  Werner Lemberg  <wl@gnu.org>
6052         * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check for negative
6053         number of points in contours.  Problem reported by Victor Stinner
6054         <victor.stinner@haypocalc.com>.
6055         (TT_Process_Simple_Glyph): Synchronize variable types.
6057 2007-04-26  Werner Lemberg  <wl@gnu.org>
6059         * src/base/ftglyph.c (FT_Glyph_Copy): Always set second argument to
6060         zero in case of error.  This fixes Savannah bug #19689.
6062 2007-04-25  Boris Letocha  <b.letocha@cz.gmc.net>
6064         * src/truetype/ttobjs.c: Fix a typo that created a speed regression
6065         in the TrueType bytecode loader.
6067 2007-04-10  Martin Horak  <horakm@centrum.cz>
6069         * src/sfnt/sfobjs.c (sfnt_load_face) [FT_CONFIG_OPTION_INCREMENTAL]:
6070         Ignore `hhea' table.  This fixes Savannah bug #19261.
6072 2007-04-09  Werner Lemberg  <wl@gnu.org>
6075         * Version 2.3.4 released.
6076         =========================
6079         Tag sources with `VER-2-3-4'.
6081         * docs/CHANGES, docs/VERSION.DLL: Update documentation and bump
6082         version number to 2.3.4.
6084         * README, Jamfile (RefDoc), builds/win32/visualc/index.html,
6085         builds/win32/visualc/freetype.dsp,
6086         builds/win32/visualc/freetype.vcproj: s/2.3.3/2.3.4/, s/233/234/.
6088         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
6090         * builds/unix/configure.raw (version_info): Set to 9:15:3.
6092 2007-04-09  Martin Horak  <horakm@centrum.cz>
6094         * src/truetype/ttgload.c (load_truetype_glyph): Save and restore
6095         memory stream to avoid a crash with the incremental memory
6096         interface (Savannah bug #19260).
6098 2007-04-06  David Turner  <david@freetype.org>
6100         * src/base/ftbimap.c (ft_bitmap_assure_buffer): Fix buffer-overwrite bug
6101         (Savannah bug #19536).
6103 2007-04-04  Werner Lemberg  <wl@gnu.org>
6106         * Version 2.3.3 released.
6107         =========================
6110         Tag sources with `VER-2-3-3'.
6112         * docs/CHANGES: Mention CVE-2007-1351.
6114 2007-04-03  David Turner  <david@freetype.org>
6116         * src/base/ftobjs.c (FT_Set_Char_Size): As suggested by James Cloos,
6117         if one of the resolution values is 0, treat it as if it were the
6118         same as the other value.
6120 2007-04-02  David Turner  <david@freetype.org>
6122         Add special code to detect `extra-light' fonts and do not snap their
6123         stem widths too much to avoid bizarre hinting effects.
6125         * src/autofit/aflatin.h (AF_LatinAxisRec): Add `standard_width' and
6126         `extra_light' members.
6128         * src/autofit/aflatin.c (af_latin_metrics_init_widths): Initialize
6129         them.
6130         (af_latin_metrics_scale_dim): Set `extra_light'.
6131         (af_latin_compute_stem_width): Use `extra_light'.
6133 2007-03-28  David Turner  <david@freetype.org>
6135         * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Fix zero-ing of the
6136         padding.
6138 2007-03-28  Werner Lemberg  <wl@gnu.org>
6140         * src/bdf/bdflib.c (setsbit, sbitset): Handle values >= 128
6141         gracefully.
6142         (_bdf_set_default_spacing): Increase `name' buffer size to 256 and
6143         issue an error for longer names.  This fixes CVE-2007-1351.
6144         (_bdf_parse_glyphs): Limit allowed number of glyphs in font to the
6145         number of code points in Unicode.
6147         * builds/win32/visualc/index.html,
6148         builds/win32/visualc/freetype.dsp,
6149         builds/win32/visualc/freetype.vcproj, README: s/2.3.2/2.3.3/,
6150         s/232/233/.
6152         * docs/CHANGES: Mention ftdiff.
6154 2007-03-26  David Turner  <david@freetype.org>
6156         * src/truetype/ttinterp.c [FIX_BYTECODE]: Remove it and
6157         corresponding code.
6158         (Ins_MD): Last regression fix.
6160         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix blues
6161         computations in order to ignore single-point contours.  These are
6162         never rasterized and correspond in certain fonts to mark-attach
6163         points that are very far from the glyph's real outline, ruining the
6164         computation.
6166         * src/autofit/afloader.c (af_loader_load_g): In the case of
6167         monospaced fonts, always set `rsb_delta' and `lsb_delta' to 0.
6168         Otherwise code that uses them will most certainly ruin the fixed
6169         advance property.
6171         * docs/CHANGES, docs/VERSION.DLL, README, Jamfile (RefDoc): Update
6172         documentation and bump version number to 2.3.3.
6174         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
6176         * builds/unix/configure.raw (version_info): Set to 9:14:3.
6178 2007-03-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6180         * builds/unix/ftconfig.in: Disable Carbon framework dependency on
6181         64bit ABI on Mac OS X 10.4.x (ppc & i386).  Found by Sean McBride.
6182         * builds/vms/ftconfig.h: Ditto.
6183         * include/freetype/config/ftconfig.h: Ditto.
6185 2007-03-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6187         * builds/unix/ftsystem.c (FT_Stream_Open): Temporary fix to prevent
6188         32bit unsigned long overflow by 64bit filesize on LP64 platform, as
6189         proposed by Sean McBride:
6190         http://lists.gnu.org/archive/html/freetype-devel/2007-03/msg00032.html
6192 2007-03-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6194         * builds/unix/ftconfig.in: Suppress SGI compiler's warning against
6195         setjmp, proposed by Sean McBride:
6196         http://lists.gnu.org/archive/html/freetype-devel/2007-03/msg00032.html
6198 2007-03-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6200         * builds/unix/configure.raw: Dequote `OS_INLINE' in comment of
6201         conftest.c, to avoid unexpected shell evaluation.  Possibly it is a
6202         bug or undocumented behaviour of autoconf.
6204 2007-03-18  David Turner   <david@freetype.org>
6206         * src/truetype/ttinterp.c (Ins_MDRP): Another bytecode regression
6207         fix; testing still needed.
6209         * src/truetype/ttinterp.c (Ins_MD): Another bytecode regression fix.
6211 2007-03-17  David Turner   <david@freetype.org>
6213         * src/truetype/ttinterp.c (Ins_IP): Fix wrong handling of the
6214         (undocumented) twilight zone special case.
6216 2007-03-09  Werner Lemberg  <wl@gnu.org>
6219         * Version 2.3.2 released.
6220         =========================
6223         Tag sources with `VER-2-3-2'.
6225         * builds/win32/visualc/index.html,
6226         builds/win32/visualc/freetype.dsp,
6227         builds/win32/visualc/freetype.vcproj, README: s/2.3.1/2.3.2/,
6228         s/231/232/.
6230 2007-03-08  David Turner  <david@freetype.org>
6232         * docs/CHANGES, docs/VERSION.DLL: Updated for upcoming release.
6234         * builds/unix/configure.raw (version_info): Set to 9:13:3.
6236         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
6238         * README, Jamfile (RefDoc): s/2.3.1/2.3.2/.
6240         * src/base/ftutil.c (ft_mem_strcpyn): Fix a bug that prevented the
6241         function to work properly, over-writing user-provided buffers in
6242         some cases.  Reported by James Cloos <cloos@jhcloos.com>.
6245 2007-03-05  Werner Lemberg  <wl@gnu.org>
6247         * include/freetype/config/ftstdlib.h (ft_strstr): New wrapper
6248         macro for `strstr'.
6250         * src/truetype/ttobjs.c (tt_face_init): Use ft_strstr for scanning
6251         `trick_names', as suggested by Ivan Nincic.
6253 2007-03-05  David Turner  <david@freetype.org>
6255         * src/base/ftinit.c (FT_Init_FreeType): Fix a small memory leak in
6256         case FT_Init_FreeType fails for some reason.  Problem reported by
6257         Maximilian Schwerin <maximilian.schwerin@buelowssiege.de>.
6259         * src/truetype/ttobs.c (tt_size_init_bytecode): Clear the `x_ppem'
6260         and `y_ppem' fields of the `TT_Size.metrics' structure, not those of
6261         `TT_Size.root.metrics'.  Problem reported by Daniel Glöckner
6262         <daniel-gl@gmx.net>.
6264         * src/type1/t1afm.c (T1_Read_PFM): Read kerning values as 16-bit
6265         signed values, not unsigned ones.  Problem reported by Johannes
6266         Walther <joh_walt@yahoo.de>.
6268 2007-02-21  David Turner  <david@freetype.org>
6270         * src/pshinter/pshalgo.c (psh_hint_align): Fix a bug in the hinting
6271         of small and ghost stems in the Postscript interpreter.
6273 2007-02-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6275         * src/base/ftmac.c (FT_GetFileRef_From_Mac_ATS_Name): Fix memory
6276         leak, patch by "Jjgod Jiang" <gzjjgod@gmail.com>.
6277         * builds/mac/ftmac.c (FT_GetFileRef_From_Mac_ATS_Name): Ditto.
6279 2007-02-16  Werner Lemberg  <wl@gnu.org>
6281         * src/truetype/ttinterp.c (Ins_MD): Remove unused variable.
6282         * src/autofit/aflatin.c (af_latin_hints_link_segments): Ditto.
6284 2007-02-14  David Turner  <david@freetype.org>
6286         It seems that the following changes fix most of the known
6287         interpreter problems with my fonts, but more testing is needed,
6288         though.
6290         * src/truetype/ttinterp.c (FIX_BYTECODE): Activate.
6291         (TT_MulFix14): Rewrite.
6292         (Ins_MD, Ins_MDRP, Ins_IP) [FIX_BYTECODE]: Improved and updated.
6293         (Ins_MIRP): Ditto.
6295 2007-02-12  Werner Lemberg  <wl@gnu.org>
6297         * src/truetype/ttinterp.c (Project_x, Project_y): Remove compiler
6298         warnings.
6300         * src/pcf/pcfread.c (pcf_interpret_style), src/bdf/bdfdrivr.c
6301         (bdf_interpret_style): Ditto.
6303 2007-02-12  David Turner  <david@freetype.org>
6305         Simplify projection and dual-projection code interface.
6307         * src/truetype/ttinterp.h (TT_Project_Func): Use `FT_Pos', not
6308         FT_Vector' as argument type.
6309         * src/truetype/ttinterp.c (CUR_Func_project, CUR_Func_dualproj):
6310         Updated.
6311         (CUR_fast_project, CUR_fast_dualproj): New macros.
6312         (Project, Dual_Project, Project_x, Project_y): Updated.
6313         (Ins_GC, Ins_SCFS, Ins_MDAP, Ins_MIAP, Ins_IP): Use new `fast'
6314         macros.
6317         * src/autofit/afloader.c (af_loader_load_g): Improve spacing
6318         adjustments for the non-light auto-hinted modes.  Gets rid of
6319         `inter-letter spacing is too wide' problems.
6321         * src/autofit/aflatin.c (af_latin_hints_link_segments,
6322         af_latin_hints_compute_edges): Slight optimization of the segment
6323         linker and better handling of serif segments to get rid of broken
6324         `9' in Arial at 9pt (96dpi).
6327         Introduce new string functions and the corresponding macros to get
6328         rid of various uses of strcpy and other `evil' functions, as well as
6329         to simplify a few things.
6331         * include/freetype/internal/ftmemory.h (ft_mem_strdup, ft_mem_dup,
6332         ft_mem_strcpyn): New declarations.
6333         (FT_MEM_STRDUP, FT_STRDUP, FT_MEM_DUP, FT_DUP, FT_STRCPYN): New
6334         macros.
6335         * src/base/ftutil.c (ft_mem_dup, ft_mem_strdup, ft_mem_strcpyn): New
6336         functions.
6338         * src/bfd/bfddrivr.c (bdf_interpret_style, BDF_Face_Init),
6339         src/bdf/bdflib.c (_bdf_add_property), src/pcf/pcfread.c
6340         (pcf_get_properties, pcf_interpret_style, pcf_load_font),
6341         src/cff/cffdrivr.c (cff_get_glyph_name), src/cff/cffload.c
6342         (cff_index_get_sid_string), src/cff/cffobjs.c (cff_strcpy),
6343         src/sfnt/sfdriver.c (sfnt_get_glyph_name), src/type1/t1driver.c
6344         (t1_get_glyph_name), src/type42/t42drivr.c (t42_get_glyph_name,
6345         t42_get_name_index): Use new functions and simplify code.
6347         * builds/mac/ftmac.c (FT_FSPathMakeSpec): Don't use FT_MIN.
6349 2007-02-11  Werner Lemberg  <wl@gnu.org>
6351         * src/autofit/afloader.c (af_loader_load_g): Don't change width for
6352         non-spacing glyphs.
6354 2007-02-07  Tom Parker  <palfrey@tevp.net>
6356         * src/cff/cffdrivr.c (cff_get_name_index): Protect against NULL
6357         pointer.
6359 2007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6361         * include/freetype/ftmac.h (FT_DEPRECATED_ATTRIBUTE):
6362         Introduce __attribute((deprecated))__ to warn functions
6363         which use non-ANSI data types in its interfaces.
6364         (FT_GetFile_From_Mac_Name): Deprecated, using FSSpec.
6365         (FT_GetFile_From_Mac_ATS_Name): Deprecated, using FSSpec.
6366         (FT_New_Face_From_FSSpec): Deprecated, using FSSpec.
6367         (FT_New_Face_From_FSRef): Deprecated, using FSRef.
6369         * src/base/ftmac.c: Predefine FT_DEPRECATED_ATTRIBUTE as void
6370         to avoid warning in building FreeType.
6371         * builds/mac/ftmac.c: Ditto.
6373 2007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6375         * src/base/ftbase.c: Fix to use builds/mac/ftmac.c, if configured
6376         `--with-fsspec' etc.  Replace #include "ftmac.c" with
6377         #include <ftmac.c>.
6379 2007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6381         * include/freetype/ftmac.h (FT_GetFilePath_From_Mac_ATS_Name):
6382         Introduced as replacement of FT_GetFile_From_Mac_ATS_Name.
6383         * src/base/ftmac.c (FT_GetFilePath_From_Mac_ATS_Name): Ditto.
6384         (FT_GetFile_From_Mac_ATS_Name): Rewritten as wrapper of
6385         FT_GetFilePath_From_Mac_ATS_Name.
6386         * builds/mac/ftmac.c: Ditto.
6388 2007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6390         * include/freetype/ftmac.h: Fixed wrong comment: FSSpec of
6391         FT_GetFile_From_Mac_Name, FT_GetFile_From_Mac_ATS_Name are
6392         for passing to FT_New_Face_From_FSSpec.
6394 2007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6396         * builds/unix/configure.raw: Check whether Mac OS X system headers
6397         can be built under ANSI C mode.
6399         * src/base/ftmac.c (OS_INLINE): Redefine OS_INLINE by a version
6400         compatible to ANSI C in case system headers are ANSI C incompatible.
6401         * builds/mac/ftmac.c (OS_INLINE): Ditto.
6403 2007-02-01  Werner Lemberg  <wl@gnu.org>
6405         * include/freetype/ttnameid.h (TT_MS_LANGID_DZONGHKA_BHUTAN):
6406         Explain why applications shouldn't use it.  Found by Alexei.
6408 2007-02-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
6410         * builds/unix/freetype2.m4 (AC_CHECK_FT2): Fix spelling of warning
6411         message.
6413         * src/gxvalid/gxvmort1.c
6414         (gxv_mort_subtable_type1_substTable_validate): Fix debugging
6415         message.
6417 2007-01-31  Werner Lemberg  <wl@gnu.org>
6420         * Version 2.3.1 released.
6421         =========================
6424         Tag sources with `VER-2-3-1-FINAL'.
6426         * builds/win32/visualc/freetype.dsp,
6427         builds/win32/visualc/freetype.vcproj: s/230/231/.
6428         * builds/win32/visualc/index.html: s/221/231/.
6430         * vms_make.com: Add `ftgasp'.
6432 2007-01-30  David Turner  <david@freetype.org>
6434         Tag sources with VER-2-3-1 to prepare release.
6436         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
6438         * docs/VERSION.DLL, docs/release, README, Jamfile (RefDoc):
6439         s/2.3.0/2.3.1/.
6441         * builds/unix/configure.raw (version_info): Set to 9:12:3.
6444         * src/autofit/aftypes.h (AF_USE_WARPER), src/autofit/afloader.c
6445         (af_loader_load_g): Disable the warper (i.e., the light hinting
6446         improvements) to make a 2.3.1 bugfix release before introducing a
6447         new feature.  This should give us more time to tune and improve the
6448         warper for the next release.
6450         * docs/CHANGES: Update accordingly.
6452 2007-01-25  David Turner  <david@freetype.org>
6454         For light auto-hinting, improve glyph advance widths and resurrect
6455         normal/full hinting to its normal quality.
6457         * src/autofit/afhints.h (AF_GlyphHintsRec): New members `xmin_delta'
6458         and `xmax_delta'.
6459         * src/autofit/afhints.c (af_glyph_hints_reload): Reset `xmin_delta'
6460         and `xmax_delta'.
6462         * src/autofit/afloader.c (af_loader_load_g) <AF_USE_WARPER>: Replace
6463         preprocessor conditional with if-clause, handling both light and
6464         normal mode.
6466         * src/autofit/afwarp.c (AF_WarpScore): Fine-tune again.
6467         (af_warper_compute): Handle `xmin_delta' and `xmax_delta'.
6469 2007-01-25  Werner Lemberg  <wl@gnu.org>
6471         * docs/release: Updated -- Savannah uses a new uploading scheme.
6473 2007-01-25  David Turner  <david@freetype.org>
6475         * src/cff/cffload.c (cff_index_get_pointers): Improve previous fix.
6477         * src/cff/cffgload.c (cff_decoder_parse_charstrings)
6478         <cff_op_callsubr, cff_op_callgsubr>: Fix sanity check for empty
6479         functions.
6481         * docs/CHANGES: Document light auto-hinting improvement.
6483 2007-01-25  Werner Lemberg  <wl@gnu.org>
6485         * src/cff/cffload.c (cff_index_get_pointers): Handle last entry
6486         correctly in a sanity check.  Since this function is only used to
6487         load local and global functions, any charstring that called the last
6488         local/global function would fail otherwise.  This fixes Savannah bug
6489         #18867.
6491         * docs/CHANGES: Document it.
6493 2007-01-23  David Turner  <david@freetype.org>
6495         * src/truetype/ttobjs.c (tt_size_ready_bytecode): Fix typo that
6496         prevented compilation when disabling both the unpatented and the
6497         bytecode interpreter in the TrueType font driver.
6500         Fix and enable the warper to improve `light' hinting mode.  This is
6501         not necessarily a final version, but it seems to work well.
6503         * src/autofit/aflatin.c (af_latin_hints_init) [AF_USE_WARPER]:
6504         Disable code.
6505         (af_latin_hints_apply) [AF_USE_WARPER]: Handle FT_RENDER_MODE_LIGHT.
6506         * src/autofit/aftypes.h: Activate AF_USE_WARPER.
6508         * src/autofit/afwarp.c (AF_WarpScore): Tune table.
6509         (af_warper_compute_line_best): Fix array size of `scores'.
6510         (af_warper_compute): Better handling of border cases.
6511         * src/autofit/afwarp.h (AF_WarperRec): Remove unused members `X1'
6512         and `X2'.
6514 2007-01-21  Werner Lemberg  <wl@gnu.org>
6516         * ChangeLog: Split off older entries into...
6517         * ChangeLog.22: This new file.
6519 2007-01-21  Werner Lemberg  <wl@gnu.org>
6521         * docs/CHANGES: Document SHZ fix.
6523 2007-01-21  George Williams  <gww@silcom.com>
6525         * src/truetype/ttinterp.c (Ins_SHZ): SHZ doesn't move phantom
6526         points.
6528 2007-01-21  Werner Lemberg  <wl@gnu.org>
6530         * src/sfnt/ttmtx.c (tt_face_get_metrics)
6531         [!FT_CONFIG_OPTION_OLD_INTERNALS]: Fix limit check.
6533 2007-01-17  Werner Lemberg  <wl@gnu.org>
6536         * Version 2.3.0 released.
6537         =========================
6540         Tag sources with `VER-2-3-0-FINAL'.
6542 2007-01-17  Werner Lemberg  <wl@gnu.org>
6544         * docs/release: Updated.
6546 2007-01-16  David Turner  <david@freetype.org>
6548         * src/autofit/aflatin.c (af_latin_hints_compute_segments),
6549         src/cff/cffdriver.c (cff_ps_get_font_info), src/truetype/ttobjs.c
6550         (tt_face_init), src/truetype/ttinterp.c (Ins_SHC): Fix compiler
6551         warnings.
6553 2007-01-15  Detlef Würkner  <TetiSoft@apg.lahn.de>
6555         * builds/amiga/makefile, builds/amiga/makefile.os4,
6556         builds/amiga/smakefile: Add `ftgasp.c' and `ftlcdfil.c'.
6558         * builds/amiga/include/freetype/config/ftconfig.h: Synchronize.
6560 2007-01-14  Detlef Würkner  <TetiSoft@apg.lahn.de>
6562         Fix various compiler warnings.
6564         * src/truetype/ttdriver.c (tt_size_select), src/cff/cffobjs.h,
6565         src/cff/cffobjs.c (cff_size_request), src/type42/t42objs.h:
6566         s/index/strike_index/.
6567         * src/base/ftobjs.c (FT_Match_Size): s/index/size_index/.
6569         * src/gxvalid/gxvmorx5.c
6570         (gxv_morx_subtable_type5_InsertList_validate): s/index/table_index/.
6572         * src/truetype/ttinterp.c (Compute_Point_Displacement),
6573         src/pcf/pcfread.c (pcf_seek_to_table_type): Avoid possibly
6574         uninitialized variables.
6576 2007-01-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6578         * docs/CHANGES, docs/INSTALL.MAC: Improvements.
6580 2007-01-13  Werner Lemberg  <wl@gnu.org>
6582         * src/type1/t1afm.c (T1_Read_Metrics): MS Windows allows PFM
6583         versions up to 0x3FF without complaining.
6585 2007-01-13  Derek Clegg  <dclegg@apple.com>
6587         Add FT_Get_PS_Font_Info interface to CFF driver.
6589         * src/cff/cfftypes.h: Include FT_TYPE1_TABLES_H.
6590         (CFF_FontRec): Add `font_info' field.
6592         * src/cff/cffload.c: Include FT_TYPE1_TABLES_H.
6593         (cff_font_done): Free font->font_info if necessary.
6595         * src/cff/cffdrvr.c (cff_ps_get_font_info): New function.
6596         (cff_service_ps_info): Register cff_ps_get_font_info.
6598 2007-01-13  Werner Lemberg  <wl@gnu.org>
6600         * src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix compilation
6601         with C++ compiler.
6603         * src/autofit/afhints.c (af_glyph_hints_dump_segments,
6604         af_glyph_hints_dump_edges): Ditto.
6606         * src/base/rules.mk (BASE_SRC): Remove ftgasp.c (it's already in
6607         `modules.cfg').
6609         * src/sfnt/ttsbit0.h: Remove.
6611         * src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttsbit0.c.
6613 2007-01-12  David Turner  <david@freetype.org>
6615         * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Fix memory stomping
6616         bug in the bitmap emboldener if the pitch of the source bitmap is
6617         much larger than its width.
6619         * src/truetype/ttinterp.c (Update_Max): Fix aliasing-related
6620         compilation warning.
6622 2007-01-12  Werner Lemberg  <wl@gnu.org>
6624         * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from
6625         `automake' CVS module from sources.redhat.com.
6627 2007-01-11  Werner Lemberg  <wl@gnu.org>
6629         * src/type1/t1load.c (is_space): Removed.
6630         (parse_encoding, parse_charstrings): Use IS_PS_DELIM.
6631         (parse_charstrings): Use IS_PS_TOKEN.
6634         * autogen.sh: Avoid bash specific syntax.
6636 2007-01-11  David Turner  <david@freetype.org>
6638         * docs/CHANGES: Small update.
6640         * builds/unix/configure.raw (version_info): Set to 9:11:3.
6642         * src/base/ftobjs.c (IsMacResource): Fix a small bug that caused a
6643         crash with some Mac OS X .dfont files.  Submitted by Masatake
6644         Yamato.
6646         * autogen.sh: Small fix to get it working on Mac OS X properly:
6647         The issue is that GNU libtool is called `glibtool' on this platform,
6648         and we must call `glibtoolize', since `libtoolize' doesn't exist.
6650 2007-01-10  David Turner  <david@freetype.org>
6652         * all-sources: Tag all sources with VER-2-3-0-RC1 and
6653         VER-2-3-0.
6655         * Jamfile (RefDoc), README, builds/win32/visualc/freetype.dsp,
6656         builds/win32/visualc/freetype.vcproj, docs/VERSION.DLL: Update
6657         version number to 2.3.0.
6659         * include/freetype/freetype.h (FREETYPE_MINOR): Set to 3.
6660         (FREETYPE_PATCH): Set to 0.
6662         * include/freetype/ftchapters.h, include/freetype/ftgasp.h,
6663         include/freetype/ftlcdfil.h: Update reference documentation with
6664         GASP support and LCD filtering sections.
6666         * src/pshinter/pshalgo.c (psh_glyph_compute_inflections): Fix a typo
6667         which created an endless loop with some malformed font files.
6669 2007-01-10  Derek Clegg  <dclegg@apple.com>
6671         * src/type1/t1load.c (T1_Get_MM_Var): Always return fixed-point
6672         values.
6674 2007-01-08  David Turner  <david@freetype.org>
6676         * docs/CHANGES: Updated.
6678         * include/freetype/ftgasp.h, src/base/ftgasp.c: New files which add
6679         a new API `FT_Get_Gasp' to return entries of the `gasp' table
6680         corresponding to a given character pixel size.
6682         * src/sfnt/ttload.c (tt_face_load_gasp): Add version check for the
6683         `gasp' table, in order to avoid potential problems with later
6684         versions.
6686         * include/freetype/config/ftheader.h (FT_GASP_H): New macro for
6687         <freetype/ftgasp.h>.
6689         * src/base/rules.mk (BASE_SRC), src/base/Jamfile (_sources),
6690         modules.cfg (BASE_EXTENSIONS), builds/win32/visualc/freetype.dsp,
6691         builds/win32/visualc/freetype.vcproj: Add src/base/ftgasp.c to the
6692         default build.
6694 2007-01-07  Werner Lemberg  <wl@gnu.org>
6696         * src/cid/cidparse.c (cid_parser_new): Improve error message for
6697         Type 11 fonts.
6698         Scan for `/sfnts' token.
6700 2007-01-07  Werner Lemberg  <wl@gnu.org>
6702         * src/cid/cidparse.c (cid_parser_new): Reject Type 11 fonts.
6704 2007-01-06  Werner Lemberg  <wl@gnu.org>
6706         * src/cff/cffload.c (cff_index_init): Remove unused variable.
6707         (cff_index_read_offset): s/perror/errorp/ to avoid global shadowing.
6709 2007-01-04  David Turner  <david@freetype.org>
6711         * src/pfr/pfrobjs.c (pfr_face_init): Detect non-scalable fonts
6712         correctly.  This fixes Savannah bug #17876.
6715         Do not allocate interpreter-specific tables in memory if we are not
6716         going to load glyphs with the bytecode interpreter anyway.
6718         * src/truetype/ttgload.c (tt_loader_init): Load execution context
6719         only if glyph is hinted.
6720         Updated.
6721         * src/truetype/ttobjs.h (TT_SizeRec): Add members `bytecode_ready'
6722         and `cvs_ready'.
6723         Add `tt_size_ready_bytecode' declaration.
6724         * src/truetype/ttobjs.c (tt_size_done_bytecode,
6725         tt_size_init_bytecode, tt_size_ready_bytecode): New functions.
6726         (tt_size_init): Move most code into `tt_size_init_bytecode'.
6727         (tt_size_done): Move most code into `tt_size_done_bytecode'.
6728         (tt_size_reset): Move some code to `tt_size_ready_bytecode'.
6731         Don't extract the metrics table from the SFNT font file.  Instead,
6732         reparse it on each glyph load.  The runtime difference is not
6733         noticeable, and it can save a lot of heap memory when memory-mapped
6734         files are not used.
6736         * include/freetype/internal/tttypes.h (TT_FaceRec): Add members
6737         `horz_metrics_offset' and `vert_metrics_ofset'.
6738         * src/sfnt/ttmtx.c (tt_face_load_hmtx, tt_face_get_metrics):
6739         Updated.
6742         * src/sfnt/ttcmap.c (tt_cmap4_validate): Slight optimization.
6745         Do not load the CFF index offsets into memory, since this wastes a
6746         *lot* of heap memory with large Asian CFF fonts.  There is no
6747         significant performance loss.
6749         * src/cff/cffload.h: Add `cff_charset_cid_to_gindex' declaration.
6750         * src/cff/cfftypes.h (CFF_IndexRec): Add fields `start' and
6751         `data_size'.
6752         (CFF_CharsetRec): Add field `num_glyphs'.
6754         * src/cff/cffload.c (cff_index_read_offset, cff_index_load_offsets,
6755         cff_charset_cid_to_gindex): New functions.
6756         (cff_new_index): Renamed to...
6757         (cff_index_init): This.  Update all callers.
6758         Updated -- some code has been moved to `cff_index_load_offsets'.
6759         (cff_done_index): Renamed to...
6760         (cff_index_done): This.  Update all callers.
6761         (cff_index_get_pointers, cff_index_access_element): Updated to use
6762         stream offsets.
6763         (cff_charset_compute_cids): Set `num_glyphs' field.
6764         (cff_encoding_load): Updated.
6766         * src/cff/cffgload.c (cff_slot_load): Updated.
6768 2007-01-04  David Turner  <david@freetype.org>
6770         * docs/INSTALL.UNIX: Simplify some parts, add reference to
6771         autogen.sh and pointer to README.CVS.
6773         * README.CVS: Add common problem description and solution
6774         when running autogen.sh.
6776         * docs/INSTALL: Add reference to MacOS X.
6778         * docs/MAKEPP, docs/INSTALL.MAC: New documentation files.
6780         * docs/TODO: Remove obsolete items.
6782         * src/raster/ftraster.c: (TRaster_Instance): Replace it with...
6783         (TWorker): This.
6784         Remove `count_table' and `memory'.
6785         Make `grays' a pointer.
6786         (TRaster): New structure.
6787         (count_table): New static array.
6788         (RAS_ARGS, RAS_ARG, RAS_VARS, RAS_VAR, FT_UNUSED_RASTER, cur_ras,
6789         Vertical_Gray_Sweep_Step, ft_black_new, ft_black_done,
6790         ft_black_set_mode, ft_black_render): Updated.
6791         (ft_black_init): Don't initialize `count_table'.
6792         (ft_black_reset): Use the render pool.  This saves about 6KB of
6793         heap space for each FT_Library instance.
6795         * src/smooth/ftgrays.c (TRaster): Replaced with...
6796         (TWorker): This.
6797         Remove `memory'.
6798         (TRaster): New structure.
6800         (RAS_ARG_, RAS_ARG, RAS_VAR_, RAS_VAR, ras, gray_render_line,
6801         gray_move_to, gray_line_to, gray_conic_to, gray_cubic_to,
6802         gray_render_span, gray_raster_render): Updated.
6803         (gray_raster_reset): Use the render pool.  This saves about 6KB of
6804         heap space for each FT_Library instance.
6806         * src/sfnt/sfobjs.c, src/sfnt/ttkern.c, src/sfnt/ttkern.h,
6807         src/sfnt/ttmtx.c, src/sfnt/ttsbit.c, src/sfnt/ttsbit.h,
6808         src/truetype/ttpload.c, include/freetype/config/ftoption.h: Remove
6809         FT_OPTIMIZE_MEMORY macro (and code for !FT_OPTIMIZE_MEMORY) since
6810         the optimization is no longer experimental.
6812         * src/pshinter/pshalgo.c (psh_glyph_interpolate_normal_points):
6813         Remove a typo that results in no hinting and a memory leak with some
6814         large Asian CFF fonts.
6816         * src/base/ftobjs.c (FT_Done_Library): Remove a subtle memory leak
6817         which happens when FT_Done_Library is called with still opened
6818         CFF_Faces in it.  We need to close all faces before destroying the
6819         modules, or else some bad things (memory leaks) may happen.
6821 2007-01-02  Werner Lemberg  <wl@gnu.org>
6823         * src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt0_pairs_validate):
6824         Remove compiler warning.
6826 2007-01-02  David Turner  <david@freetype.org>
6828         * src/sfnt/sfobjs.c: Add documentation comment.
6830 2006-12-31  Masatake YAMATO  <jet@gyve.org>
6832         * src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt0_pairs_validate): New
6833         function.
6834         Check uniqueness of the gid pairs.
6835         (gxv_kern_subtable_fmt0_validate): Move some code to
6836         `gxv_kern_subtable_fmt0_pairs_validate'.
6838 2006-12-22  David Turner  <david@freetype.org>
6840         * src/autofit/aflatin.c, src/truetype/ttgload.c: Remove compiler
6841         warnings.
6843         * builds/win32/visualc/freetype.vcproj: Add _CRT_SECURE_NO_DEPRECATE
6844         to avoid deprecation warnings with Visual C++ 8.
6846 2006-12-16  Anders Kaseorg  <anders@kaseorg.com>
6848         * src/base/ftlcdfil.c (FT_Library_SetLcdFilter)
6849         [FT_FORCE_LIGHT_LCD_FILTER]: Fix typo.
6851 2006-12-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6853         * include/freetype/internal/services/svotval.h: Add `volatile' to
6854         sync with the modification by Jens Claudius on 2006-08-22; cf.
6855           http://cvs.savannah.gnu.org/viewcvs/freetype/freetype2/src/otvalid/otvmod.c?r1=1.4&r2=1.5
6857 2006-12-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6859         * src/base/ftmac.c: Specialized for Mac OS X only.
6860         * builds/unix/ftconfig.in: Fixed for ppc64 missing Carbon framework.
6861         * builds/unix/configure.raw: Ditto.  When explicit switches for
6862         FSSpec/FSRef/QuickDraw/ATS availability are given to configure,
6863         builds/mac/ftmac.c is used instead of default src/base/ftmac.c.
6865 2006-12-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6867         * builds/mac/ftmac.c: Copied src/base/ftmac.c for legacy system.
6868         * builds/mac/FreeType.m68k_cfm.make.txt: Fix to use builds/mac/ftmac.c
6869         instead of src/base/ftmac.c
6870         * builds/mac/FreeType.ppc_carbon.make.txt: Ditto.
6871         * builds/mac/FreeType.ppc_classic.make.txt: Ditto.
6872         * builds/mac/FreeType.m68k_far.make.txt: Ditto, and exclude gxvalid.c
6873         that cannot be built at present.
6875 2006-12-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6877         * src/base/ftobjs.c: Improvement of resource fork handler for
6878         POSIX, cf.
6879           http://lists.gnu.org/archive/html/freetype-devel/2006-10/msg00025.html
6880         (Mac_Read_sfnt_Resource): Count only `sfnt' resource of suitcase font
6881         format or .dfont, to simulate the face index number counted by ftmac.c.
6882         (IsMacResource): Return the number of scalable faces correctly.
6884 2006-12-10  Werner Lemberg  <wl@gnu.org>
6886         * builds/toplevel.mk (version): Protect against `distclean' target.
6888 2006-12-09  Werner Lemberg  <wl@gnu.org>
6890         * builds/*/*def.mk, builds/*/detect.mk (CAT): Define to either `cat'
6891         or `type'.
6893         * builds/freetype.mk (version): Extracted from freetype.h, using
6894         GNU make's built-in string functions.
6895         (refdoc): Use $(version) instead of static version number.
6897 2006-12-08  Werner Lemberg  <wl@gnu.org>
6899         * builds/toplevel.mk (dist): Extract version number from freetype.h.
6901 2006-12-08  Vladimir Volovich  <vvv@vsu.ru>
6903         * src/tools/apinames.c (State): Remove final comma in structure --
6904         xlc v5 under AIX 4.3 doesn't like this.
6906 2006-12-07  David Turner  <david@freetype.org>
6908         * src/autofit/afloader.c (af_loader_load_g): Small adjustment
6909         to the spacing of auto-fitted glyphs.  This only impacts rare
6910         cases (e.g., Arial Bold at rather small character sizes).
6912 2006-12-03  Werner Lemberg  <wl@gnu.org>
6914         * src/sfnt/rules.mk (SFNT_DRV_SRC): Add ttsbit0.c.
6916 2006-12-01  Werner Lemberg  <wl@gnu.org>
6918         * src/sfnt/sfobjs.c (tt_face_get_name): All Unicode strings are
6919         encoded in UTF-16BE.  Patch from Rajeev Pahuja <rpahuja@esri.com>.
6920         (tt_name_entry_ascii_from_ucs4): Removed.
6923         * include/freetype/ftxf86.h: Fix and extend comment so that it
6924         appears in the documentation.
6926         * include/freetype/ftchapters.h: Add `font_format' section.
6929         * src/tools/docmaker/tohtml.py (HtmlFormatter::index_exit): Add link
6930         to TOC in index page.
6932 2006-11-28  David Turner  <david@freetype.org>
6934         * src/smooth/ftgrays.c (gray_raster_render): Return 0 when we are
6935         trying to render into a zero-width/height bitmap, not an error code.
6937         * src/truetype/ttobjs.c (tt_face_init): Fix typo in previous patch.
6939         * src/smooth/ftgrays.c: Remove hard-coded error values; use FreeType
6940         ones instead.
6942         * src/autofit/afhints.c (af_glyph_hints_dump_segments): Remove unused
6943         variable.
6945 2006-11-26  Pierre Hanser  <hanser@club-internet.fr>
6947         * src/truetype/ttobjs.c (tt_face_init): Protect against NULL pointer.
6949 2006-11-25  David Turner  <david@freetype.org>
6951         * src/autofit/afhints.c (af_glyph_hints_dump_points,
6952         af_glyph_hints_dump_segments, af_glyph_hints_dumpedges) [!AF_DEBUG]:
6953         Add stubs to link the `ftgrid' test program when debugging is
6954         disabled in the auto-hinter.
6956 2006-11-23  David Turner  <david@freetype.org>
6958         * src/autofit/afhints.c, src/autofit/afhints.h, src/autofit/aflatin.c,
6959         src/autofit/aftypes.h: Miscellaneous auto-hinter improvements.
6961         * src/autofit/afhints.c (af_glyph_hints_dump_segments) [AF_DEBUG]:
6962         Emit more sensible information.
6964         * src/autofit/afhints.h (AF_SegmentRec): Add `height' member.
6966         * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Improve
6967         rounding of blue values.
6968         (af_latin_hints_compute_segments): Hint segment heights.
6969         (af_latin_hints_link_segments): Reduce `len_score' value.
6970         (af_latin_hints_compute_edges): Increase `segment_length_threshold'
6971         value and use `height' member for comparisons.
6972         (af_latin_hint_edges): Extend logging message.
6973         Improve handling of remaining edges.
6975 2006-11-22  Werner Lemberg  <wl@gnu.org>
6977         Fix Savannah bug #15553.
6979         * src/truetype/ttgload.c (tt_loader_init): Re-execute the CVT
6980         program after a change from mono to grayscaling (and vice versa).
6981         Use correct constant for comparison to get `exec->grayscale'.
6983 2006-11-18  Werner Lemberg  <wl@gnu.org>
6985         Because FT_Load_Glyph expects CID values for CID-keyed fonts, the
6986         test for a valid glyph index must be deferred to the font drivers.
6987         This patch fixes Savannah bug #18301.
6989         * src/base/ftobjs.c (FT_Load_Glyph): Don't check `glyph_index'.
6990         * src/bdf/bdfdrivr.c (BDF_Glyph_Load), src/cff/cffgload.c
6991         (cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph),
6992         src/pcf/pcfdrivr.c (PCF_Glyph_Load), src/pfr/pfrobjs.c
6993         (pfr_slot_load), src/truetype/ttdriver.c (Load_Glyph),
6994         src/type1/t1gload.c (T1_Load_Glyph), src/winfonts/winfnt.c
6995         (FNT_Load_Glyph): Check validity of `glyph_index'.
6997 2006-11-13  David Turner  <david@freetype.org>
6999         * src/truetype/ttinterp.c (FIX_BYTECODE): Undefine.  The interpreter
7000         `enhancements' are still too buggy for general use.
7002         * src/base/ftlcdfil.c: Add support for FT_FORCE_LIGHT_LCD_FILTER and
7003         FT_FORCE_LEGACY_LCD_FILTER at compile time.  Define these macros
7004         when building the library to change the default LCD filter to be
7005         used.  This is only useful for experimentation.
7007         * include/freetype/ftlcdfil.h: Update documentation.
7009 2006-11-10  David Turner  <david@freetype.org>
7011         * src/smooth/ftsmooth.c: API change for the LCD
7012         filter.  The FT_LcdFilter value is an enumeration describing which
7013         filter to apply, with new values FT_LCD_FILTER_LIGHT and
7014         FT_LCD_FILTER_LEGACY (the latter implements the LibXft original
7015         algorithm which produces strong color fringes for everything
7016         except very-well hinted text).
7018         * include/freetype/ftlcdfil.h (FT_Library_SetLcdFilter): Change
7019         second parameter to an enum type.
7021         * src/base/ftlcdfil.c (USE_LEGACY): Define.
7022         (_ft_lcd_filter): Rename to...
7023         (_ft_lcd_filter_fir): This.
7024         Update parameters.
7025         (_ft_lcd_filter_legacy) [USE_LEGACY]: New filter function.
7026         (FT_Library_Set_LcdFilter): Update parameters.
7027         Handle new filter modes.
7029         * include/internal/ftobjs.h: Include FT_LCD_FILTER_H.
7030         (FT_Bitmap_LcdFilterFunc): Change third argument to `FT_Library'.
7031         (FT_LibraryRec) [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Add filtering
7032         callback and update other fields.
7034         * src/smooth/ftsmooth.c (ft_smooth_render_generic)
7035         [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Update.
7036         Other minor improvements.
7038         * src/autofit/aflatin.c: Various tiny improvements that drastically
7039         improve the handling of serif fonts and of LCD/LCD_V hinting modes.
7040         (af_latin_hints_compute_edges): Fix typo.
7041         (af_latin_compute_stem_width): Take better care of diagonal stems.
7043 2006-11-09  David Turner  <david@freetype.org>
7045         * src/pshinter/pshalgo.c (psh_glyph_compute_inflections): Fix
7046         typo which created a variable-used-before-initialized bug.
7048 2006-11-07  Zhe Su  <james.su@gmail.com>
7050         * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Handle vertical layout
7051         also.
7053 2006-11-03  Werner Lemberg  <wl@gnu.org>
7055         * src/base/ftcalc.c: Don't use `long long' but `FT_Int64'.
7057 2006-11-02  David Turner  <david@freetype.org>
7059         Add a few tweaks to better handle serif fonts.
7060         Add more debugging messages.
7062         * src/autofit/aflatin.c (af_latin_hints_compute_edges): Ignore
7063         segments that are less than 1.5 pixels high.  This gets rid of
7064         *many* corner cases with serifs.
7065         (af_latin_align_linked_edge): Add logging message.
7066         (af_latin_hint_edges): Use AF_HINTS_DO_BLUES.
7067         Add logging messages.
7068         Handle AF_EDGE_FLAG flag specially.
7070         * src/autofit/afmodule.c [AF_DEBUG]: Add _af_debug,
7071         _af_debug_disable_blue_hints, and _af_debug_hints variables.
7073         * src/autofit/aftypes.h (AF_LOG) [AF_DEBUG]: Use _af_debug.
7074         Update external declarations.
7075         (af_corner_orientation, af_corner_is_flat): Replaced by...
7077         * include/freetype/internal/ftcalc.h (ft_corner_orientation,
7078         ft_corner_is_flat): These declarations.
7080         * src/autofit/afangles.c (af_corner_orientation, af_corner_is_flat):
7081         Comment out.  Replaced by...
7083         * src/base/ftcalc.h (ft_corner_orientation, ft_corner_is_flat):
7084         These functions.  Update all callers.
7085         (FT_Add64) [!FT_LONG64]: Simplify.
7087         * src/autofit/afhints.c: Include FT_INTERNAL_CALC_H.
7088         (af_direction_compute): Add a missing FT_ABS call.  This bug caused
7089         production of garbage by missing lots of segments.
7091         * src/autofit/afhints.h (AF_HINTS_DO_BLUES): New macro.
7093         * src/autofit/afloader.c (af_loader_init, af_loader_done)
7094         [AF_DEBUG]: Set _af_debug_hints.
7097         * src/pshinter/pshalgo.c: Include FT_INTERNAL_CALC_H.
7098         (psh_corner_is_flat, psh_corner_orientation): Use ft_corner_is_flat
7099         and ft_corner_orientation.
7102         * src/gzip/inftrees.c (huft_build): Remove compiler warning.
7104 2006-10-24  Werner Lemberg  <wl@gnu.org>
7106         * src/cff/cffload.c (cff_encoding_load): Remove unused variable.
7108         * src/base/ftobjs.c (FT_Select_Charmap): Disallow FT_ENCODING_NONE
7109         as argument.
7111 2006-10-23  Zhe Su  <zsu@novell.com>
7113         * src/base/ftoutln.c (FT_Outline_Get_Orientation): Re-implement to
7114         better deal with broken Asian fonts with strange glyphs, having
7115         self-intersections and other peculiarities.  The used algorithm is
7116         based on the nonzero winding rule.
7118 2006-10-23  David Turner  <david@freetype.org>
7120         Speed up the CFF font loader.  With some large CFF fonts,
7121         FT_Open_Face is now more than three times faster.
7123         * src/cff/cffload.c (cff_get_offset): Removed.
7124         (cff_new_index): Inline functionality of `cff_get_offset'.
7125         (cff_charset_compute_cids, cff_charset_free_cids): New functions.
7126         (cff_charset_done): Call `cff_charset_free_cids'.
7127         (cff_charset_load): Call `cff_charset_compute_cids'.
7128         (cff_encoding_load) <Populate>: Ditto, to replace inefficient loop.
7130         * src/sfnt/ttmtx.c (tt_face_load_hmtx): Replace calls to FT_GET_XXX
7131         with FT_NEXT_XXX.
7134         Speed up the Postscript hinter, with more than 100% speed increase
7135         on my machine.
7137         * src/pshinter/pshalgo.c (psh_corner_is_flat,
7138         psh_corner_orientation): New functions.
7139         (psh_glyph_compute_inflections): Merge loops for efficiency.
7140         Use `psh_corner_orientation'.
7141         (psh_glyph_init): Use `psh_corner_is_flat'.
7142         (psh_hint_table_find_strong_point): Renamed to...
7143         (psh_hint_table_find_strong_points): This.
7144         Rewrite, adding argument to handle all points at once.
7145         Update all callers.
7146         (PSH_MAX_STRONG_INTERNAL): New macro.
7147         (psh_glyph_interpolate_normal_points): Rewrite for efficiency.
7149 2006-10-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7151         * src/base/ftmac.c (FT_New_Face_From_FOND): Initialize variable
7152         `error' with FT_Err_Ok.
7154 2006-10-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7156         * docs/INSTALL.CROSS: New document file for cross-building.
7158         * builds/unix/configure.raw: Preliminary cross-building support.
7159         Find native C compiler and pass it by CC_BUILD, and
7160         find suffix for native executable and pass it by EXEEXT_BUILD.
7161         Also suffix for target executable is passed by EXEEXT.
7163         * builds/unix/unix-cc.in (CCraw_build, E_BUILD): New variables to
7164         build `apinames' which runs on building system.  They are set by
7165         CC_BUILD and EXEEXT_BUILD.
7167         * builds/exports.mk (APINAMES_EXE): Change the extension for
7168         apinames from the suffix for target (E) to that for building host
7169         (E_BUILD).
7171 2006-10-12  Werner Lemberg  <wl@gnu.org>
7173         * docs/INSTALL.UNX, docs/UPGRADE.UNX: Renamed to...
7174         * docs/INSTALL.UNIX, docs/UPGRADE.UNIX: This.  Update all documents
7175         which reference those files.
7177 2006-10-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7179         * builds/unix/configure.raw (FT2_EXTRA_LIBS): New variable.  It is
7180         embedded in freetype2.pc and freetype-config.  Use it to record
7181         Carbon dependency of MacOSX.
7183         * builds/unix/freetype2.in: Embed FT2_EXTRA_LIBS.
7185         * builds/unix/freetype-config.in: Ditto.
7187 2006-10-11  Werner Lemberg  <wl@gnu.org>
7189         * devel/ftoption.h (FT_CONFIG_OPTION_SUBPIXEL_RENDERING): Define for
7190         development.
7192 2006-10-03  Jens Claudius  <jens.claudius@yahoo.com>
7194         * include/freetype/config/ftstdlib.h: Cast away volatileness from
7195         argument to ft_setjmp.
7197         * include/freetype/internal/ftvalid.h: Add comment that
7198         ft_validator_run must not be used.
7200 2006-10-01  Werner Lemberg  <wl@gnu.org>
7202         * src/base/ftbase.c: Undo change from 2006-09-30.
7204         * src/base/rules.mk (BASE_SRC): Remove `ftlcdfil.c'.
7206 2006-09-30  David Turner  <david@freetype.org>
7208         * include/freetype/internal/ftobjs.h (FT_Face_InternalRec):
7209         s/unpatented_hinting/ignore_unpatented_hinter/.
7210         Update all callers.
7212         * src/base/ftobjs.c (FT_Load_Glyph): Refine the algorithm whether
7213         auto-hinting shall be used or not.
7215         * src/truetype/ttobjs.c (tt_face_init): Ditto.
7217 2006-09-30  Werner Lemberg  <wl@gnu.org>
7219         * src/base/rules.mk (BASE_SRC): Remove `ftapi.c' (which is no longer
7220         in use).
7222         * src/base/ftbase.c: Include `ftlcdfil.c'.
7224 2006-09-29  Werner Lemberg  <wl@gnu.org>
7226         * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Fix algorithm for
7227         overlapping segments.  Bug reported by Stefan Koch.
7229 2006-09-28  David Turner  <david@freetype.org>
7231         Fix a bug in the automatic unpatented hinting support which prevents
7232         normal bytecode hinting to work properly.
7234         * include/freetype/internal/ftobjs.h (FT_Face_InternalRec):
7235         s/force_autohint/unpatented_hinting/.  Update all callers.
7237         * src/base/ftobjs.c (FT_Load_Glyph): Updated code.
7239         * src/autofit/aftypes.h (AF_DEBUG): Undefine to get rid of traces.
7241 2006-09-27  David Turner  <david@freetype.org>
7243         * include/freetype/freetype.h (FT_FREETYPE_PATCH): Set to 2.
7246         Add a new API to support color filtering of subpixel glyph bitmaps.
7247         In a default build, the function `FT_Library_SetLcdFilter' returns
7248         `FT_Err_Unimplemented_Feature'; you need to #define
7249         FT_CONFIG_OPTION_SUBPIXEL_RENDERING in ftoption.h to compile the
7250         real implementation.
7252         * include/freetype/ftlcdfil.h, src/base/ftlcdfil.c: New files.
7254         * include/freetype/internal/ftobjs.h (FT_Bitmap_LcdFilterFunc): New
7255         typedef.
7256         (FT_LibraryRec) [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: New members
7257         `lcd_filter_weights' and `lcd_filter'.
7259         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Remove arguments
7260         `hmul' and `vmul'.
7262         Handle subpixel rendering.
7263         Simplify function.
7264         (ft_smooth_render_lcd): Use `FT_RENDER_MODE_LCD'.
7265         (ft_smooth_render_lcd_v): Use `FT_RENDER_MODE_LCD_V'.
7267         * include/freetype/config/ftheader.h (FT_LCD_FILTER_H): New macro,
7268         pointing to <freetype/ftlcdfil.h>.
7270         * src/base/Jamfile (_sources), src/base/rules.mk (BASE_SRC),
7271         vms_make.com: Add `ftlcdfil.c' to the list of compiled source files.
7273         * modules.cfg (BASE_EXTENSIONS): Add ftlcdfil.c.
7275 2006-09-26  David Bustin
7277         * src/pfr/pfrobjs.c (pfr_face_get_kerning): Skip adjustment bytes
7278         correctly.  Reported as Savannah bug #17843.
7280 2006-09-26  David Turner  <david@freetype.org>
7282         * src/autofit/afhints.h (AF_HINTS_DO_HORIZONTAL,
7283         AF_HINTS_DO_VERTICAL, AF_HINTS_DO_ADVANCE): New macros to disable
7284         horizontal and vertical hinting for the purpose of debugging the
7285         auto-fitter.
7287         * src/autofit/afmodule.c (_af_debug_disable_horz_hints,
7288         _af_debug_disable_vert_hints) [AF_DEBUG]: New global variables.
7290         * src/autofit/aftypes.h [AF_DEBUG]: Declare above variables.
7292         * include/freetype/config/ftoption.h, devel/ftoption.h
7293         (FT_CONFIG_OPTION_SUBPIXEL_RENDERING): New macro to control whether
7294         we want to compile LCD-optimized rendering code (à la ClearType) or
7295         not.  The macro *must* be disabled in default builds of the library
7296         for patent reasons.
7298         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Disable
7299         LCD-specific rendering when FT_CONFIG_OPTION_SUBPIXEL_RENDERING
7300         isn't defined at compile time.  This only changes the content of the
7301         rendered glyph to match the one of normal gray-level rendering,
7302         hence clients should not need to be modified.
7304         * docs/CHANGES: Updated.
7306 2006-09-18  Garrick Meeker  <garrick@digitalanarchy.com>
7308         * src/base/ftmac.c (FT_New_Face_From_FOND): Fall back to SFNT if
7309         LWFN fails and both are available.
7311 2006-09-11  David Turner  <david@freetype.org>
7313         * src/sfnt/sfobjs.c (tt_face_get_name): Support some fonts which
7314         report their English names through an Apple Roman
7315         (platform,encoding) pair, with language_id != English.
7317         If the font uses another name entry with language_id == English, it
7318         will be selected correctly, though.
7320         * src/truetype/ttobjs.c (tt_face_init): Add unpatented hinting
7321         selection for `mingli.ttf'.
7323 2006-09-05  Werner Lemberg  <wl@gnu.org>
7325         * src/truetype/ttpload.c (tt_face_load_hdmx): Handle `record_size'
7326         values which have the upper two bytes set to 0xFF instead of 0x00
7327         (as it happens in at least two CJKV fonts, `HAN NOM A.ttf' and
7328         `HAN NOM B.ttf').
7330         * src/smooth/ftgrays.c [GRAYS_USE_GAMMA]: Really remove all code.
7332 2006-09-05  David Turner  <david@freetype.org>
7334         Minor source cleanups and optimizations.
7336         * src/smooth/ftgrays.c (GRAYS_COMPACT): Removed.
7337         (TRaster): Remove `count_ex' and `count_ey'.
7338         (gray_find_cell): Remove 2nd and 3rd argument.
7339         (gray_alloc_cell): Merged with `gray_find_cell'.
7340         (gray_record_cell): Simplify.
7341         (gray_set_cell): Rewrite.
7342         (gray_start_cell): Apply offsets to `ras.ex' and `ras.ey'.
7343         (gray_render_span): Don't use FT_MEM_SET for small values.
7344         (gray_dump_cells) [DEBUG_GRAYS]: New function.
7345         (gray_sweep): Avoid buffer overwrites when to drawing the end of a
7346         bitmap scanline.
7347         (gray_convert_glyph): Fix speed-up.
7349 2006-09-04  David Turner  <david@freetype.org>
7351         * src/smooth/ftgrays.c (gray_convert_glyphs): Make it work with
7352         64bit processors.
7354 2006-09-03  Werner Lemberg  <wl@gnu.org>
7356         * devel/ftoption.h: Synchronize with
7357         include/freetype/config/ftoption.h.
7359         * src/smooth/ftgrays.c (gray_record_cell): Remove shadowing
7360         variable declaration.
7361         (gray_convert_glyph): Fix compiler warnings.
7363 2006-09-01  David Turner  <david@freetype.org>
7365         * src/truetype/ttobjs.c (tt_face_init): Update the TrueType loader
7366         to recognize a few fonts that require the automatic unpatented
7367         loader.
7369         * src/smooth/ftgrays.c: Optmize the performance of the anti-aliased
7370         rasterizer.  The speed improvement is between 15% and 25%, depending
7371         on the font data.
7373         (GRAYS_USE_GAMMA, GRAYS_COMPACT): Removed, and all associated code.
7374         (TCell): Redefine.
7375         (TRaster): New members `buffer', `buffer_size', `ycells', `ycount'.
7376         (gray_init_cells): Updated.
7377         (gray_find_cell, gray_alloc_cell): New functions.
7378         (gray_record_cell): Rewritten to use `gray_find_cell' and
7379         `gray_alloc_cell'.
7380         (PACK, LESS_THAN, SWAP_CELLS, DEBUG_SORT, QUICK_SORT, SHELL_SORT,
7381         QSORT_THRESHOLD):
7382         Removed.
7383         (gray_shell_sort, gray_quick_sort, gray_check_sort,
7384         gray_dump_cells): Removed.
7385         (gray_sweep): Rewritten.
7386         (gray_convert_glyph): Rewrite code which used one of the sorting
7387         functions.
7388         (gray_raster_render): Updated.
7390 2006-08-29  Dr. Werner Fink  <werner@suse.de>
7392         * configure: Make it possible to handle configure options which
7393         have strings containing spaces.
7395 2006-08-27  David Turner  <david@freetype.org>
7397         * include/freetype/config/ftoption.h (TT_USE_BYTECODE_INTERPRETER):
7398         New macro, defined if either TT_CONFIG_OPTION_BYTECODE_INTERPRETER
7399         or TT_CONFIG_OPTION_UNPATENTED_HINTING is defined.
7401         * include/freetype/internal/ftcalc.h, src/base/ftcalc.c,
7402         src/truetype/truetype.c, src/truetype/ttdriver.c,
7403         src/truetype/ttgload.c, src/truetype/ttgload.h,
7404         src/truetype/ttinterp.c, src/truetype/ttobjs.c,
7405         src/truetype/ttobjs.h, src/truetype/ttpload.c, src/type42/t42drivr.c:
7406         s/TT_CONFIG_OPTION_BYTECODE_INTERPRETER/TT_USE_BYTECODE_INTERPRETER/.
7408         * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
7409         member `force_autohint'.
7411         * src/base/ftobjs.c (FT_Load_Glyph): Use `force_autohint'.
7413         * src/truetype/ttobjs.c (tt_face_init): Prepare code for testing
7414         against a list of font names which need the bytecode interpreter.
7416 2006-08-27  Jens Claudius  <jens.claudius@yahoo.com>
7418         Fix miscellaneous compiler warnings.
7420         * include/freetype/internal/ftobjs.h: Close comment with `*/' to
7421         avoid `/* in comment' compiler warning.
7423         * src/base/ftdbgmem.c (ft_mem_table_get_source): Turn cast
7424         `(FT_UInt32)(void*)' into `(FT_UInt32)(FT_PtrDist)(void*)' since on
7425         64-bit platforms void* is larger than FT_UInt32.
7427         * src/base/ftobjs.c (t_validator_error): Cast away
7428         volatileness of argument to ft_longjmp.  Spotted by Werner
7429         `Putzfrau' Lemberg.
7431         * src/bdf/bdflib.c (bdf_load_font): Initialize local
7432         variable `lineno'.
7434         * src/gxvalid/gxvmod.c (classic_kern_validate): Mark local variable
7435         `error' as volatile.
7437 2006-08-27  Werner Lemberg  <wl@gnu.org>
7439         * builds/unix/ftconfig.in: Synchronize with main ftconfig.h.
7440         Reported by Jens.
7442 2006-08-22  Jens Claudius  <jens.claudius@yahoo.com>
7444         Fix for previous commit, which caused many compiler warnings/errors
7445         about addresses of volatile objects passed as function arguments as
7446         non-volatile pointers.
7448         * include/freetype/internal/ftvalid.h: Make FT_Validator typedef a
7449         pointer to a volatile object.
7451         * src/gxvalid/gxvmod.c (gxv_load_table): Make function argument
7452         `table' a pointer to a volatile object.
7454         * src/otvalid/otvmod.c (otv_load_table): Make function argument
7455         `table' a pointer to a volatile object.
7457 2006-08-18  Jens Claudius  <jens.claudius@yahoo.com>
7459         * src/gxvalid/gxvmod.c (GXV_TABLE_DECL): Mark local variable `_sfnt'
7460         as volatile since it must keep its value across a call to ft_setjmp.
7461         (gxv_validate): Same for local variables `memory' and `valid'.
7462         (classic_kern_validate): Same for local variables `memory',
7463         `ckern', and `valid'.
7465         * src/otvalid/otvmod.c (otv_validate): Same for function parameter
7466         `face' and local variables `base', `gdef', `gpos', `gsub', `jstf',
7467         and 'valid'.
7469         * src/sfnt/ttcmap.c (tt_face_build_cmaps): Same for local variable
7470         `cmap'.
7472 2006-08-16  David Turner  <david@freetype.org>
7474         * src/cid/cidgload.c (cid_slot_load_glyph): Remove compiler
7475         warnings.
7477         * src/base/ftobjs.c (ft_validator_run): Disable function; it is
7478         buggy by design.  Always return -1.
7481         Improvements to native TrueType hinting.  This is a first try,
7482         controlled by the FIX_BYTECODE macro in src/truetype/ttinterp.c.
7484         * include/freetype/internal/ftgloadr.h (FT_GlyphLoadRec): Add member
7485         `extra_points2'.
7487         * include/freetype/internal/tttypes.h (TT_GlyphZoneRec): Add member
7488         `orus'.
7490         * src/base/ftgloadr.c (FT_GlyphLoader_Reset,
7491         FT_GlyphLoader_Adjust_Points, FT_GlyphLoader_CreateExtra,
7492         FT_GlyphLoader_CheckPoints, FT_GlyphLoader_CopyPoints): Updated to
7493         handle `extra_points2'.
7495         * src/truetype/ttgload.c (tt_prepare_zone): Handle `orus'.
7496         Remove compiler warning.
7497         (cur_to_arg): Remove macro.
7498         (TT_Hint_Glyph): Updated.
7499         (TT_Process_Simple_Glyph): Handle `orus'.
7501         * src/truetype/ttinterp.c (FIX_BYTECODE): New macro.
7502         (Ins_MD, Ins_MDRP, Ins_IP) [FIX_BYTECODE]: Handle `orus'.
7503         (LOC_Ins_IUP): Renamed to...
7504         (IUP_WorkerRec): This.
7505         Add `orus' member.
7506         (Shift): Renamed to...
7507         (_iup_worker_shift): This.
7508         Updated.
7509         (Interp): Renamed to...
7510         (_iup_worker_interpolate): This.
7511         Updated to handle `orus'.
7512         (Ins_IUP): Updated.
7514         * src/truetype/ttobjs.c (tt_glyphzone_done, tt_glyphzone_new):
7515         Handle `orus'.
7517 2006-08-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7519         * modules.cfg (BASE_EXTENSIONS): Compile in ftgxval.c by default to
7520         build ftvalid in ft2demos.  This has been inadvertedly changed
7521         2006-08-13.
7523 2006-08-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7525         `ft_validator_run' wrapping `setjmp' can cause a crash, as found by
7526         Jens:
7527         http://lists.gnu.org/archive/html/freetype-devel/2006-08/msg00004.htm.
7529         * src/otvalid/otvmod.c: Replace `ft_validator_run' by `ft_setjmp'.
7530         It reverts the change introduced on 2005-08-20.
7532         * src/gxvalid/gxvmod.c: Ditto.
7534 2006-08-13  Jens Claudius  <jens.claudius@yahoo.com>
7536         * finclude/freetype/internal/psaux.h: (T1_TokenType): Add
7537         T1_TOKEN_TYPE_KEY.
7538         (T1_FieldRec): Add `dict'.
7539         (T1_FIELD_DICT_FONTDICT, T1_FIELD_DICT_PRIVATE): New macros.
7540         (T1_NEW_XXX, T1_FIELD_XXX): Update to take the dictionary where a PS
7541         keyword is expected as an additional argument.
7543         * src/cid/cidload.c: (cid_field_records): Adjust invocations of
7544         T1_FIELD_XXX.
7546         * src/cid/cidtoken.h: Adjust invocations of T1_FIELD_XXX.
7548         * src/psaux/psobjs.c: Add macro FT_COMPONENT for tracing.
7549         (ps_parser_to_token): Report a PostScript key as T1_TOKEN_TYPE_KEY,
7550         not T1_TOKEN_TYPE_ANY.
7551         (ps_parser_load_field): Make sure a token that should be a string or
7552         name is really a string or name.
7553         Avoid memory leak if a keyword has been already encountered and its
7554         value is overwritten.
7555         * src/type1/t1load.c: (t1_keywords): Adjust invocations of
7556         T1_FIELD_XXX.
7557         (parse_dict): Ignore keywords that occur in the wrong dictionary
7558         (e.g., in `Private' instead of `FontDict').
7560         * src/type1/t1tokens.h: Adjust invocations of T1_FIELD_XXX.
7562         * src/type42/t42parse.c: (t42_keywords): Adjust invocations of
7563         T1_FIELD_XXX.
7565 2006-07-18  Jens Claudius  <jens.claudius@yahoo.com>
7567         Move creation of field `buildchar' of T1_DecoderRec out of
7568         `t1_decoder_init' and let the caller of `t1_decoder_init' take care
7569         of it.
7571         Call the finisher for T1_Decoder in `cid_face_compute_max_advance'
7572         and `T1_Compute_Max_Advance'.
7574         * include/freetype/internal/psaux.h (T1_DecoderRec): Remove field
7575         `face', add `len_buildchar'.
7577         * include/freetype/internal/t1types.h (T1_FaceRec): Add field
7578         `buildchar'.
7580         * src/cid/cidgload.c (cid_face_compute_max_advance): Call finisher
7581         for T1_Decoder.
7582         (cid_slot_load_glyph): Do not ignore failure when initializing the
7583         T1_Decoder.
7585         * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Updated.
7586         (t1_decoder_init): Remove initialization of fields `buildchar' and
7587         `len_buildchar'.
7588         (t1_decoder_done): Remove deallocation of field `buildchar'.
7590         * freetype/src/type1/t1gload.c (T1_Compute_Max_Advance): Initialize
7591         T1_Decoder's `buildchar' and `len_buildchar'; call finisher for
7592         T1_Decoder.
7593         (T1_Load_Glyph): Initialize T1_Decoder's `buildchar' and
7594         `len_buildchar'; make sure to call finisher for T1_Decoder even in
7595         case of error.
7597         * src/type1/t1load.c (T1_Open_Face): Allocate new field `buildchar'
7598         of T1_FaceRec.
7600         * src/type1/t1objs.c (T1_Face_Done): Free new field `buildchar' of
7601         T1_FaceRec.
7603 2006-07-14  Jens Claudius  <jens.claudius@yahoo.com>
7605         * include/freetype/internal/psaux.h: New macros IS_PS_NEWLINE,
7606         IS_PS_SPACE, IS_PS_SPECIAL, IS_PS_DELIM, IS_PS_DIGIT, IS_PS_XDIGIT,
7607         and IS_PS_BASE85 (from src/psaux/psconv.h).
7608         (T1_FieldLocation): Add T1_FIELD_LOCATION_LOADER,
7609         T1_FIELD_LOCATION_FACE, and T1_FIELD_LOCATION_BLEND.
7610         (T1_DecoderRec): New fields `buildchar' and `face'.
7611         (IS_PS_TOKEN): New macro.
7613         * include/freetype/internal/t1types.h (T1_FaceRec): New fields
7614         `ndv_idx', `cdv_idx', and `len_buildchar'.
7616         * include/freetype/t1tables.h (PS_BlendRec): New fields
7617         `default_design_vector' and `num_default_design_vector'.
7619         * src/psaux/psconv.h: Move macros IS_PS_NEWLINE, IS_PS_SPACE,
7620         IS_PS_SPECIAL, IS_PS_DELIM, IS_PS_DIGIT, IS_PS_XDIGIT, and
7621         IS_PS_BASE85 to include/freetype/internal/psaux.h.
7623         * src/psaux/psobjs.c (ps_parser_to_token_array): Allow `token'
7624         argument to be NULL if we want only to count the number of tokens.
7625         (ps_tocoordarray): Allow `coords' argument to be NULL if we just
7626         want to skip the array.
7627         (ps_tofixedarray): Allow `values' argument to be NULL if we just
7628         want to skip the array.
7630         * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add support
7631         for (partially commented out) othersubrs 19-25, 27, and 28.
7632         (t1_decoder_init): Initialize new fields `face' and `buildchar'.
7633         (t1_decoder_done): Release new field `buildchar'.
7635         * src/type1/t1load.c (parse_buildchar, parse_private): New
7636         functions.
7637         (t1_keywords): Register them.
7638         (t1_allocate_blend): Updated.
7639         (t1_load_keyword): Handle field types T1_FIELD_LOCATION_LOADER,
7640         T1_FIELD_LOCATION_FACE and T1_FIELD_LOCATION_BLEND.
7641         (parse_dict): Remove `keyword_flags' argument.
7642         Use new macro IS_PS_TOKEN.
7643         Changed function so that later PostScript definitions override
7644         earlier ones.
7645         (t1_init_loader): Initialize new field `keywords_encountered'.
7646         (T1_Open_Face): Initialize new fields `ndv_idx', `cdv_idx', and
7647         `len_buildchar'.
7648         Remove `keywords_flags'.
7650         * src/type1/t1load.h (T1_LoaderRect): New field
7651         `keywords_encountered'.
7652         (T1_PRIVATE, T1_FONTDIR_AFTER_PRIVATE): New macros.
7654         * src/type1/t1tokens.h [!T1_CONFIG_OPTION_NO_MM_SUPPORT]: New
7655         entries for parsing /NDV, /CDV, and /DesignVector.
7657 2006-07-07  Werner Lemberg  <wl@gnu.org>
7659         Add many checks to protect against malformed PCF files.
7661         * src/pcf/pcfdrivr.c (PCF_Face_Done): Protect against NULL pointers.
7662         (PCF_Face_Init): Add calls to PCF_Face_Done in case of errors.
7664         * src/pcf/pcfread.c (pcf_read_TOC): Protect against malformed table
7665         data and check that tables don't overlap (using a simple
7666         bubblesort).
7667         (PCF_METRIC_SIZE, PCF_COMPRESSED_METRIC_SIZE, PCF_PROPERTY_SIZE):
7668         New macros which give the size of data structures in the data
7669         stream.
7670         (pcf_get_properties): Use rough estimates to get array size limits.
7671         Assign `face->nprops' and `face->properties' earlier so that a call
7672         to PCF_Face_Done can do the clean-up in case of error.
7673         Protect against invalid string offsets.
7674         (pcf_get_metrics): Clean up code.
7675         Adjust tracing message levels.
7676         Use rough estimate to get array size limit.
7677         (pcf_get_bitmaps): Clean up code.
7678         Adjust tracing message levels.
7679         Use rough estimates to get offset limits.
7680         (pcf_get_encodings): Adjust tracing message level.
7681         (pcf_get_accel): Clean up code.
7683 2006-06-26  Werner Lemberg  <wl@gnu.org>
7685         * src/bdf/bdfdrivr.c (BDF_Face_Init): Handle fonts correctly which
7686         don't have a POINT_SIZE property.  This fixes Savannah bug #16914.
7688 2006-06-26  Jens Claudius  <jens.claudius@yahoo.com>
7690         * src/psaux/t1decode.c (T1_Operator, t1_args_count): Add opcode 15.
7691         (t1_decoder_parse_charstrings): Operator with
7692         opcode 15 pops its two arguments.
7693         Handle the case where the pops of an othersubr may be part of a
7694         subroutine.
7695         Handle unknown othersubrs gracefully: count their operands and let
7696         the following pop operators push the operands as the results onto
7697         the Type1 stack.
7698         Improve handling of setcurrentpoint opcode.
7700 2006-06-25  Jens Claudius  <jens.claudius@yahoo.com>
7702         The Type 1 parser now skips over top-level procedures as required
7703         for a `Simplified Parser'.  This makes the parser more robust as it
7704         doesn't poke around in PostScript code.  Additionally, it makes the
7705         FontDirectory hackery in src/type1/t1load.c unnecessary.
7707         * src/psaux/psobjs.c (IS_OCTAL_DIGIT): New macro.
7708         (skip_literal_string): Add FT_Error as return value.
7709         Handle escapes better.
7710         (skip_string): Add FT_Error as return value.
7711         Don't set `parser->error' but return error code directly.
7712         (skip_procedure): New function.
7713         (ps_parser_skip_PS_token): Handle procedures.
7714         Update code.
7715         (ps_parser_to_token): Update code.
7716         (ps_parser_load_field_table): Handle bbox entries also.
7718         * src/type1/t1load.c (parse_dict): Remove FontDirectory hackery.
7719         Add commented-out code for synthetic fonts.
7721 2006-06-24  Eugeniy Meshcheryakov  <eugen@univ.kiev.ua>
7723         Fix two hinting bugs as reported in
7724         http://lists.gnu.org/archive/html/freetype-devel/2006-06/msg00057.html.
7726         * include/freetype/internal/tttypes.h (TT_GlyphZoneRec): Add
7727         `first_point' member.
7729         * src/truetype/ttgload.c (tt_prepare_zone): Initialize
7730         `first_point'.
7731         (TT_Process_Composite_Glyph): Always untouch points.
7733         * src/truetype/ttinterp.c (Ins_SHC): Fix computation of
7734         `first_point' and `last_point' in case of composite glyphs.
7735         (Ins_IUP): Fix computation of `end_point'.
7737 2006-06-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7739         Insert EndianS16_BtoN and EndianS32_BtoN as workaround for Intel
7740         Mac.  The original patch was written by David Sachitano and Lawrence
7741         Coopet, and modified by Sean McBride for MPW compatibility.  Only
7742         required data are converted; unused data are left in big endian.
7744         * src/base/ftmac.c: Include <Endian.h> for byteorder macros for non
7745         Mac OS X platforms.
7746         (OS_INLINE): Undefine before definition.
7747         (count_faces_sfnt): Insert EndianS16_BtoN to parse the header of
7748         FontAssociation table in FOND resource.
7749         (count_faces_scalable): Insert EndianS16_BtoN to parse the header
7750         and fontSize at each entry of FontAssociation table in FOND
7751         resource.
7752         (parse_fond): Insert EndianS16_BtoN and EndianS32_BtoN to parse
7753         ffStylOff of FamilyRecord header of FOND resource, the header,
7754         fontSize, fontID at each entry of FontAssociation table, and
7755         StyleMapping table.
7756         (count_faces): Call `HUnlock' after all FOND utilization.
7758 2006-06-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7760         Public API of TrueTypeGX, OpenType, and classic kern table validator
7761         should return `FT_Err_Unimplemented_Feature' if validation service
7762         is unavailable (disabled in `modules.cfg').  It is originally
7763         suggested by David Turner, cf.
7764         http://lists.gnu.org/archive/html/freetype-devel/2005-11/msg00078.html
7766         * src/base/ftgxval.c (FT_TrueTypeGX_Validate): Return
7767         FT_Err_Unimplemented_Feature if TrueTypeGX validation service is
7768         unavailable.
7769         (FT_ClassicKern_Validate): Return FT_Err_Unimplemented_Feature if
7770         classic kern table validation service is unavailable.
7772         * src/base/ftotval.c (FT_OpenType_Validate): Return
7773         FT_Err_Unimplemented_Feature if OpenType validation service is
7774         unavailable.
7776 2006-06-08  Werner Lemberg  <wl@gnu.org>
7778         * src/bdf/bdflib.c (bdf_load_font): Fix memory leaks in case of
7779         errors.
7781 2006-06-07  David Turner  <david@freetype.org>
7783         * src/type1/t1afm.c (KERN_INDEX): Make it more robust.
7784         (T1_Read_Metrics): Fix memory leak which happened when the metrics
7785         file doesn't have kerning pairs.  This fixes Savannah bug #16768.
7787 2006-06-06  David Turner  <david@freetype.org>
7789         Fix memory leak described in Savannah bug #16759.
7791         We change `ps_unicodes_init' so that it also takes a
7792         `free_glyph_name' callback to release the glyph names returned by
7793         `get_glyph_name'
7795         * include/freetype/internal/services/svpscmap.h (PS_Glyph_NameFunc):
7796         Renamed to ...
7797         (PS_GetGlyphNameFunc): This.
7798         (PS_FreeGlyphNameFunc): New typedef.
7799         (PS_Unicodes_InitFunc): Add variable for PS_FreeGlyphNameFunc.
7801         * src/cff/cffcmap.c (cff_sid_to_glyph_name): Use `TT_Face' for first
7802         argument.
7803         (cff_sid_free_glyph_name): New function.
7804         (cff_cmap_unicode_init): Updated.
7806         * src/psaux/t1cmap.c (t1_cmap_unicode_init): Updated.
7808         * src/psnames/psmodule.c (ps_unicodes_init): Add variable for
7809         PS_FreeGlyphNameFunc and use it.
7812 2006-06-04  David Turner  <david@freetype.org>
7814         * src/base/ftutil.c (ft_mem_qrealloc): Fix the function to accept
7815         `item_size == 0' as well -- though this sounds weird, it can
7816         theoretically happen.  This fixes Savannah bug #16669.
7818         * src/pfr/pfrobjs.c (pfr_face_init): Fix the computation
7819         of `face->num_glyphs' which missed the last glyph, due to
7820         the offset-by-1 computation, since the PFR format doesn't
7821         guarantee that glyph index 0 corresponds to the `missing
7822         glyph.  This fixes Savannah bug #16668.
7824 2006-05-25  Werner Lemberg  <wl@gnu.org>
7826         * builds/unix/unix-cc.in (LINK_LIBRARY): Don't comment out
7827         `-no-undefined'.  Reported by Christian Biesinger.
7829 2006-05-19  Brian Weed  <bw@imaginengine.com>
7831         * builds/win32/visualc/freetype.dsp: Release libraries no longer
7832         have debug information, and debug libraries use `C7 compatible'
7833         debug info.
7835 2006-05-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7837         Apply patch by Derek Clegg to fix two memory leaks in the MacOS
7838         resource fork handler.  This fixes Savannah bug #16631.
7840         * src/base/ftobjs.c (load_face_in_embedded_rfork): Replace
7841         `FT_Stream_Close' by `FT_Stream_Free' to fix memory leak.
7843         * src/base/ftrfrk.c (raccess_guess_linux_double_from_file_name):
7844         Replace `FT_Stream_Close' by `FT_Stream_Free' to fix memory leak.
7846 2006-05-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7848         * build/unix/configure.raw: Add a fallback to disable Carbon
7849         dependency, if configured with no options on Mac OS X.
7851 2006-05-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7853         * src/base/ftmac.c (open_face_from_buffer): Deallocate stream when
7854         its content cannot be parsed as supported font.  This fixes
7855         the second part of Savannah bug #16590.
7857 2006-05-18  Werner Lemberg  <wl@gnu.org>
7859         * src/truetype/ttgload.c (TT_Load_Composite_Glyph)
7860         [FT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Make it compilable again.
7862 2006-05-17  David Turner  <david@freetype.org>
7864         This is a major patch used to drastically improve the performance of
7865         loading glyphs.  This both speeds up loading the glyph vectors
7866         themselves and the auto-fitter module.
7868         We now use inline assembler code with GCC to implement `FT_MulFix',
7869         which is probably the most important function related to the
7870         engine's performance.
7872         The resulting speed-up is about 25%.
7875         * include/freetype/internal/tttypes.h (TT_LoaderRec): Add fields
7876         `cursor' and `limit'.
7878         * src/autofit/afangles.c (af_corner_is_flat, af_corner_orientation):
7879         New functions.
7880         (AF_ATAN_BITS, af_arctan, af_angle_atan): Comment out.
7881         [TEST]: Remove.
7883         * src/autofit/afcjk.c (AF_Script_UniRangeRec): Comment out test
7884         code.
7886         * src/autofit/afhints.c (af_axis_hints_new_segment): Don't call
7887         `FT_ZERO'
7888         (af_direction_compute, af_glyph_hints_compute_inflections): Rewritten.
7889         (af_glyph_hints_reload: Rewrite recognition of weak points.
7891         * src/autofit/aflatin.c (af_latin_hints_compute_segments): Move
7892         constant values out of the loops.
7894         * src/autofit/aftypes.h: Updated.
7896         * src/base/ftcalc.c (FT_MulFix): Use inline assembler code.
7898         * src/base/ftoutln.c (FT_Outline_Get_Orientation): Use vector
7899         product to get orientation.
7901         * src/gzip/ftgzip.c (ft_get_uncompressed_size): New function.
7902         (FT_Stream_OpenGzip): Use it to handle small files directly in
7903         memory.
7905         * src/psaux/psconv.c (PS_Conv_ASCIIHexDecode, PS_ConvEexecDecode):
7906         Improve performance.
7908         * src/truetype/ttgload.c (TT_Access_Glyph_Frame): Set `cursor' and
7909         `limit'.
7911         (TT_Load_Glyph_Header, TT_Load_Simple_Glyph,
7912         TT_Load_Composite_Glyph): Updated.  Add threshold to protect against
7913         exceedingly large values of number of contours.  Speed up by
7914         reducing the number of loops.
7916         * src/type1/t1gload.c (T1_Load_Glyph): Don't apply unit matrix.
7919         * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Change the threshold
7920         used to detect rogue clients from 4 to 16.  This is to prevent some
7921         segmentation faults with fonts like `KozMinProVI-Regular.otf' which
7922         comes from the Japanese Adobe Reader Asian Font pack.
7924 2007-05-17  Werner Lemberg  <wl@gnu.org>
7926         * src/cff/cffload.c (cff_font_done): Deallocate subfont array.  This
7927         fixes the first part of Savannah bug #16590.
7929 2006-05-16  Werner Lemberg  <wl@gnu.org>
7931         * docs/PROBLEMS: Updated icl issues.
7933 ----------------------------------------------------------------------------
7935 Copyright 2006, 2007, 2008, 2009, 2010 by
7936 David Turner, Robert Wilhelm, and Werner Lemberg.
7938 This file is part of the FreeType project, and may only be used, modified,
7939 and distributed under the terms of the FreeType project license,
7940 LICENSE.TXT.  By continuing to use, modify, or distribute this file you
7941 indicate that you have read the license and understand and accept it
7942 fully.
7945 Local Variables:
7946 version-control: never
7947 coding: utf-8
7948 End: