start service tasks separately in-case platforms need to perform additional set-up...
[AROS.git] / workbench / libs / freetype / ChangeLog.22
blob4144288a5bf1e27bb315be519ef4f822b4d675ae
1 2006-05-12  Werner Lemberg  <wl@gnu.org>
4         * Version 2.2.1 released.
5         =========================
8         Tag sources with `VER-2-2-1'.
10 2006-05-12  Werner Lemberg  <wl@gnu.org>
12         * src/tools/docmaker/sources.py (re_source_keywords): Add word
13         boundary markers.
14         * src/tools/docmaker/content.py (re_field): Allow `.' in field names
15         (but not at the beginning or end).
16         * src/tools/docmaker/tohtml.py (html_header_1): Use `utf-8' charset.
17         (block_footer): Split into...
18         (block_footer_start, block_footer_middle, block_footer_end): This to
19         add navigation buttons.
20         (HtmlFormatter::block_exit): Updated.
22         * include/freetype/*: Many minor documentation improvements (adding
23         links, spelling errors, etc.).
25 2006-05-11  Werner Lemberg  <wl@gnu.org>
27         * README: Minor updates.
29         * include/freetype/*: s/scale/scaling value/ where appropriate.
30         Many other minor documentation improvements.
32         * src/tools/docmaker/sources.py (re_italic, re_bold): Handle
33         trailing punctuation.
34         * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word): Add
35         warning message for undefined cross references.
36         Update handling of re_italic and re_bold.
38 2006-05-11  Masatake YAMATO  <jet@gyve.org>
40         * builds/unix/ftsystem.c (FT_Stream_Open): Check errno only if
41         read system call returns -1.
42         Remove a redundant parenthesis.
44 2006-05-10  Werner Lemberg  <wl@gnu.org>
46         * builds/unix/ftsystem.c (FT_Stream_Open): Avoid infinite loop if
47         given an empty, un-mmap()able file.  Reported and suggested fix in
48         Savannah bug #16555.
50         * builds/freetype.mk (refdoc): Write-protect the `docmaker'
51         directory to suppress generation of .pyc files.  According to the
52         Python docs there isn't a more elegant solution (currently).
54         * builds/toplevel.mk (dist): New target which builds .tar.gz,
55         .tar.bz2, and .zip files.  Note that the version number is still
56         hard-coded.
57         (do-dist): Sub-target of `dist'.
58         (CONFIG_GUESS, CONFIG_SUB): New variables.
59         (.PHONY): Updated.
61 2006-05-09  Rajeev Pahuja  <rpahuja@esri.com>
63         * builds/win32/visualc/freetype.sln,
64         builds/win32/visualc/freetype.vcproj: Upgraded to VS.NET 2005 from
65         VS.NET 2003
66         Added files ftbbox.c, fttype1.c, ftwinfnt.c, ftsynth.c.
68         * builds/win32/visualc/index.html: Updated.
70 2006-05-07  Werner Lemberg  <wl@gnu.org>
72         Put version information into the configure script.  Reported by Paul
73         Watson <pwatson@redlinepy.com>.
75         * builds/unix/configure.ac: Renamed to...
76         * builds/unix/configure.raw: This which now serves (with appropriate
77         modifications) as a template for configure.ac.
79         * version.sed: New script.
81         * autogen.sh: Generate configure.ac from configure.raw, using
82         FREETYPE_MAJOR, FREETYPE_MINOR, and FREETYPE_PATCH from freetype.h.
84 2006-05-06  Werner Lemberg  <wl@gnu.org>
86         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
88         * builds/unix/configure.ac (version_info): Set to 9:10:3.
90         * builds/win32/visualc/index.html,
91         builds/win32/visualc/freetype.dsp,
92         builds/win32/visualc/freetype.vcproj, builds/freetype.mk (refdoc),
93         Jamfile (RefDoc), README: s/220/221/, s/2.2.0/2.2.1/.
94         Minor updates.
96         * docs/CHANGES, docs/VERSION.DLL, docs/PROBLEMS, README.CVS:
97         Updated.
99         * builds/unix/install-sh: Updated from `texinfo' CVS module at
100         savannah.gnu.org.
102         * devel/ftoption.h: Synchronize with
103         include/freetype/config/ftoption.h.
105 2006-05-04  Werner Lemberg  <wl@gnu.org>
107         * src/lzw/ftlzw2.c: Renamed to...
108         * src/lzw/ftlzw.c: This.
110         * src/lzw/Jamfile, src/lzw/rules.mk: Updated.
112         * builds/mac/FreeType.m68k_cfm.make.txt,
113         builds/mac/FreeType.m68k_far.make.txt,
114         builds/mac/FreeType.ppc_carbon.make.txt,
115         builds/mac/FreeType.ppc_classic.make.txt: Updated.
117 2006-05-03  David Turner  <david@freetype.org>
119         Allow compilation again with C++ compilers.
121         * include/freetype/internal/ftmemory.h (FT_ASSIGNP,
122         FT_ASSIGNP_INNER): New macros which do the actual assignment, and
123         which exist in two variants (for C and C++).
124         Update callers accordingly.
126 2006-05-03  Werner Lemberg  <wl@gnu.org>
128         * include/freetype/config/ftoption.h (FT_STRICT_ALIASING): Removed.
130 2006-05-02  Werner Lemberg  <wl@gnu.org>
132         * include/freetype/internal/ftmemory.h: s/new/newsz/ (for C++).
133         (FT_ALLOC): Remove redundant redefinition.
135         * builds/compiler/gcc-dev.mk (CFLAGS) [g++]: Don't use
136         `-Wstrict-prototypes'.
138         * src/base/ftstream.c (FT_Stream_EnterFrame): Add cast.
140         * include/freetype/config/ftconfig.h (FT_BASE_DEF) [__cplusplus]:
141         Remove `extern'.
143 2006-05-02  David Turner  <david@freetype.org>
145         Update the memory management functions and macros to safely deal
146         with array size buffer overflows.  This corresponds to attempts to
147         allocate arrays that are too large.  For an example, consider the
148         following code:
150           count = read_uint32_from_file(); array = malloc( sizeof ( Item ) *
151           count ); for ( nn = 0; nn < count; nn++ )
152             array[nn] = read_item_from_file();
154         If `count' is larger than `FT_UINT_MAX/sizeof(Item)', the
155         multiplication overflows, and the array allocated os smaller than
156         the data read from the file.  In this case, the heap will be
157         trashed, and this can be used as a denial-of-service attack, or make
158         the engine crash later.
160         The FT_ARRAY_NEW and FT_ARRAY_RENEW macros now ensure that the new
161         count is no larger than `FT_INT_MAX/item_size', otherwise a new
162         error code `FT_Err_Array_Too_Large' will be returned.
164         Note that the memory debugger now works again when FT_DEBUG_MEMORY
165         is defined.  FT_STRICT_ALIASING has disappeared; the corresponding
166         code is now the default.
169         * include/freetype/config/ftconfig.h (FT_BASE_DEF) [!__cplusplus]:
170         Don't use `extern'.
172         * include/freetype/fterrdef.h (FT_Err_Array_Too_Large): New error
173         code.
175         * include/freetype/internal/ftmemory.h (FT_DEBUG_INNER)
176         [FT_DEBUG_MEMORY]: New macro.
177         (ft_mem_realloc, ft_mem_qrealloc): Pass new object size count also.
178         (ft_mem_alloc_debug, ft_mem_qalloc_debug, ft_mem_realloc_debug,
179         ft_mem_qrealloc_debug, ft_mem_free_debug): Removed.
180         (FT_MEM_ALLOC, FT_MEM_REALLOC, FT_MEM_QALLOC, FT_MEM_QREALLOC,
181         FT_MEM_FREE): Redefine.
182         (FT_MEM_NEW_ARRAY, FT_MEM_RENEW_ARRAY, FT_MEM_QNEW_ARRAY,
183         FT_MEM_QRENEW_ARRAY): Redefine.
184         (FT_ALLOC_MULT, FT_REALLOC_MULT, FT_MEM_QALLOC_MULT,
185         FT_MEM_QREALLOC_MULT): New macros.  Update callers where
186         appropriate.
187         (FT_MEM_SET_ERROR): Slightly redefine.
190         * src/base/ftdbgmem.c (_ft_debug_file, _ft_debug_lineno)
191         [FT_DEBUG_MEMORY]: New global variables, replacing...
192         (FT_MemTable_Rec) [FT_DEBUG_MEMORY]: Remove `filename' and
193         `line_no'.  Update all callers.
194         (ft_mem_debug_alloc) [FT_DEBUG_MEMORY]: Avoid possible integer
195         overflow.
196         (ft_mem_alloc_debug, ft_mem_realloc_debug, ft_mem_qalloc_debug,
197         ft_mem_qrealloc_debug, ft_mem_free_debug): Removed.
199         * src/base/ftmac.c (read_lwfn): Catch integer overflow.
200         * src/base/ftrfork.c (raccess_guess_darwin_hfsplus): Ditto.
201         * src/base/ftutil.c: Remove special code for FT_STRICT_ALIASING.
202         (ft_mem_alloc, ft_mem_realloc, ft_mem_qrealloc): Rewrite.
205         * include/freetype/ftstream.h (FT_FRAME_ENTER, FT_FRAME_EXIT,
206         FT_FRAME_EXTRACT, FT_FRAME_RELEASE): Use FT_DEBUG_INNER to report the
207         place where the frames were entered, extracted, exited or released
208         in the memory debugger.
210         * src/base/ftstream.c (FT_Stream_ReleaseFrame) [FT_DEBUG_MEMORY]:
211         Call ft_mem_free.
212         (FT_Stream_EnterFrame) [FT_DEBUG_MEMORY]: Use ft_mem_qalloc.
213         (FT_Stream_ExitFrame) [FT_DEBUG_MEMORY]: Use ft_mem_free.
215 2006-04-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
217         * src/base/ftobjs.c (Mac_Read_POST_Resource): Correct pfb_pos
218         initialization, remove extra cast to copy to pfb_lenpos.  This fixes
219         parsing of PFB fonts with MacOS resource fork (bug introduced
220         2003-09-11).  Patch provided by Huib-Jan Imbens <ft@imbens.nl>.
222 2006-04-29  Werner Lemberg  <wl@gnu.org>
224         Further C library abstraction.  Based on a patch from
225         msn2@bidyut.com.
227         * include/freetype/config/ftstdlib.h (FT_CHAR_BIT, FT_FILE,
228         ft_fopen, ft_fclose, ft_fseek, ft_ftell, ft_fread, ft_smalloc,
229         ft_scalloc, ft_srealloc, ft_sfree, ft_labs): New wrapper macros for
230         C library functions.  Update all users accordingly (and catch some
231         other places where the C library function was used instead of the
232         wrapper functions).
234         * src/base/ftsystem.c: Don't include stdio.h and stdlib.h.
235         * src/gzip/zutil.h [MSDOS && !(__TURBOC__ || __BORLANDC__)]: Don't
236         include malloc.h.
239         * builds/unix/unix-def.in (datarootdir): Define, for autoconf 2.59c
240         and forthcoming versions.
242 2006-04-28  Werner Lemberg  <wl@gnu.org>
244         * src/lzw/ftlzw.c, src/lzw/zopen.c, src/lzw/zopen.h: Removed,
245         obsolete.
247 2006-04-27  yi luo  <luoyi.ly@gmail.com>
249         * builds/win32/visualc/freetype.vcproj: Updated.
251 2006-04-26  David Turner  <david@freetype.org>
254         * Version 2.2 released.
255         =======================
258         Tag sources with `VER-2-2-0'.
260 2006-04-26  Werner Lemberg  <wl@gnu.org>
262         * src/psaux/psobjs.c (shift_elements): Don't use FT_Long but
263         FT_PtrDiff for `delta'.  Reported by Céline PILLET
264         <Celine.Pillet@Tagginfo.com>.
266 2006-04-21  David Turner  <david@freetype.org>
268         * include/freetype/ftincrem.h: Documentation updates.
269         (FT_Incremental_Interface): New typedef.
271         * include/freetype/ftmodapi.h, include/freetype/ftglyph.h:
272         Documentation updates.
274         * include/freetype/freetype.h: Documentation update.
275         (FT_HAS_FAST_GLYPHS): Always set to 0.
277         * include/freetype/ftstroke.h, src/base/ftstroke.c (FT_Stroker_New):
278         Take an FT_Library argument instead of FT_Memory.
280         * src/sfnt/ttcmap.c: Remove compiler warnings (gcc-4.0.2).
282 2006-04-13  David Turner  <david@freetype.org>
284         * src/autofit/afloader.c (af_loader_init, af_loader_load_g): Remove
285         superfluous code in the auto-fitter's loader.
287 2006-04-05  Detlef Würkner  <TetiSoft@apg.lahn.de>
289         * builds/amiga/makefile, builds/amiga/makefile.os4,
290         builds/amiga/smakefile: Added FT2_BUILD_LIBRARY define.
292 2006-04-03  luoyi  <luoyi.ly@gmail.com>
294         * builds/compiler/intelc.mk (TE): New variable.
295         (ANSIFLAGS): Updated.
297 2006-04-03  Werner Lemberg  <wl@gnu.org>
299         * builds/exports.mk (clean_symbols_list, clean_apinames): Removed.
300         (CLEAN): Add $(EXPORTS_LIST) and $(APINAMES_EXE).
301         (.PHONY): Updated.
303         * configure.ac: Minor fixes to improve --help output.
306         * docs/PROBLEMS: New file.
308 2006-04-01  David Turner  <david@freetype.org>
310         * docs/CHANGES: Updated.
312         * include/freetype/ftcache.h, include/freetype/config/ftheader.h:
313         Update documentation comments.
315 2006-04-01  Werner Lemberg  <wl@gnu.org>
317         * builds/unix/install.mk (uninstall): Don't handle `cache'
318         directory which no longer exists.
320 2006-03-29  Detlef Würkner  <TetiSoft@apg.lahn.de>
322         * src/psaux/psconv.c: Changed some variables which are expected to
323         hold negative values from `char' to `FT_Char' to allow building with
324         a compiler where `char' is unsigned by default.
326 2006-03-27  David Turner  <david@freetype.org>
328         * src/sfnt/ttkern.c (tt_face_get_kerning): Fix a serious bug that
329         causes some programs to go into an infinite loop when dealing with
330         fonts that don't have a properly sorted kerning sub-table.
332 2006-03-26  Werner Lemberg  <wl@gnu.org>
334         * src/bdf/bdflib.c (ERRMSG4): New macro.
335         (_bdf_parse_glyphs): Handle invalid BBX values.
337         * include/freetype/fterrdef.h (FT_Err_Bbx_Too_Big): New error
338         macro.
340 2006-03-23  Werner Lemberg  <wl@gnu.org>
342         * docs/CHANGES: Updated.
345         * src/tools/docmaker/tohtml.py (html_header_2): Add horizontal
346         padding between table elements.
347         (html_header_1): The `DOCTYPE' comment must be in uppercase.
348         (make_html_para): Convert `...' quotations into real left and
349         right single quotes.
350         Use `para_header' and `para_footer'.
352         * src/tools/docmaker/sources.py (re_bold, re_italic): Accept "'"
353         also.
355 2006-03-23  David Turner <david@freetype.org>
357         Add FT_Get_SubGlyph_Info API to retrieve subglyph data.  Note that
358         we do not expose the FT_SubGlyphRec structure.
360         * include/freetype/internal/ftgloadr.h (FT_SUBGLYPH_FLAGS_*): Moved
361         to...
362         * include/freetype/freetype.h (FT_SUBGLYPH_FLAGS_*): Here.
363         (FT_Get_SybGlyph_Info): New declaration.
365         * src/base/ftobjs.c (FT_Get_SubGlyph_Info): New function.
368         * src/autofit/afloader.c (af_loader_load_g): Compute lsb_delta and
369         rsb_delta correctly in edge cases.
371 2006-03-22  Werner Lemberg  <wl@gnu.org>
373         * src/cache/ftccache.c, (ftc_node_mru_up, FTC_Cache_Lookup)
374         [!FTC_INLINE]: Compile conditionally.
375         * src/cache/ftccache.h: Updated.
377         * src/cache/ftcglyph.c (FTC_GNode_Init, FTC_GNode_UnselectFamily,
378         FTC_GNode_Done, FTC_GNode_Compare, FTC_Family_Init, FTC_GCache_New):
379         s/FT_EXPORT/FT_LOCAL/.
380         (FTC_GCache_Init, FTC_GCache_Done): Commented out.
381         (FTC_GCache_Lookup) [!FTC_INLINE]: Compile conditionally.
382         s/FT_EXPORT/FT_LOCAL/.
383         * src/cache/ftcglyph.h: Updated.
385         * src/cache/ftcimage.c (FTC_INode_Free, FTC_INode_New):
386         s/FT_EXPORT/FT_LOCAL/.
387         (FTC_INode_Weight): Commented out.
388         * src/cache/ftcimage.h: Updated.
390         * src/cache/ftmanag.c (FTC_Manager_Compress,
391         FTC_Manager_RegisterCache, FTC_Manager_FlushN):
392         s/FT_EXPORT/FT_LOCAL/.
393         * src/cache/ftmanag.h: Updated.
395         * src/cache/ftcsbits.c (FTC_SNode_Free, FTC_SNode_New,
396         FTC_SNode_Compare): s/FT_EXPORT/FT_LOCAL/.
397         (FTC_SNode_Weight): Commented out.
398         * src/cache/ftcsbits.h: Updated.
400 2006-03-22  Werner Lemberg  <wl@gnu.org>
402         * src/cache/ftccache.c, src/cache/ftccache.h (FTC_Node_Destroy):
403         Remove, unused.
405         * src/cache/ftccmap.h: Remove, unused.
407         * src/cache/rules.mk (CACHE_DRV_H): Remove ftccmap.h.
409 2006-03-21  Zhe Su  <james.su@gmail.com>
411         * src/base/ftoutln.c (FT_Outline_Get_Orientation): Improve
412         algorithm.
414 2006-03-21  Werner Lemberg  <wl@gnu.org>
416         * src/cff/cfftypes.h (CFF_CharsetRec): Add `max_cid' member.
418         * src/cff/cffload.c (cff_charset_load): Set `charset->max_cid'.
420         * src/cff/cffgload.c (cff_slot_load): Change type of third parameter
421         to `FT_UInt'.
422         Check range of `glyph_index'.
423         * src/cff/cffgload.h: Updated.
426         * src/sfnt/ttcmap.c (tt_face_build_cmaps): Handle invalid offset
427         correctly.
430         * builds/freetype.mk (refdoc), docs/CHANGES, Jamfile (RefDoc),
431         README: s/2.1.10/2.2/.
433 2006-03-21  David Turner  <david@freetype.org>
435         * src/autofit/aflatin.c (af_latin_metrics_scale): Fix small bug
436         that crashes the auto-hinter (introduced by previous patch).
438 2006-03-20  Werner Lemberg  <wl@gnu.org>
440         * builds/freetype.mk (CACHE_DIR, CACHE_H): Remove.
441         (FREETYPE_H): Updated.
443         * src/cache/rules.mk (CACHE_H_DIR): Remove.
444         (CACHE_DRV_H): Updated.
446 2006-03-20  David Turner  <david@freetype.org>
448         * include/freetype/cache/ftccache.h,
449         include/freetype/cache/ftccmap.h, include/freetype/cache/ftcglyph.h
450         include/freetype/cache/ftcimage.h include/freetype/cache/ftcmanag.h
451         include/freetype/cache/ftcmru.h include/freetype/cache/ftcsbits.h:
452         Move to...
454         * src/cache/ftccache.h, src/cache/ftcglyph.h, src/cache/ftcimage.h,
455         src/cache/ftcsbits.h, src/cache/ftcmanag.h, src/cache/ftccmap.h,
456         src/cache/ftcmru.h: This new location.
457         Update declarations according to the changes in the corresponding
458         source files.
460         Note that these files are not used by FreeType clients; all public
461         APIs of the cache module have been already moved to
462         `include/freetype/ftcache.h', and all FT_CACHE_INTERNAL_XXXX_H
463         macros resolve to it.
465         Reason for the move is to allow modifications of the internals
466         without interferences with rogue clients.  Note that there are no
467         known clients that access the cache internals at the moment.
469         * builds/unix/install.mk (install): Don't install headers from
470         $(CACHE_H).
471         Remove `freetype/cache' from the target directory.
473         * include/freetype/config/ftheader.h (FT_CACHE_MANAGER_H,
474         FT_CACHE_INTERNAL_MRU_H, FT_CACHE_INTERNAL_MANAGER_H,
475         FT_CACHE_INTERNAL_CACHE_H, FT_CACHE_INTERNAL_GLYPH_H,
476         FT_CACHE_INTERNAL_IMAGE_H, FT_CACHE_INTERNAL_SBITS_H): Point to
477         FT_CACHE_H.
479         * src/cache/ftcbasic.c, src/cache/ftccache.h, src/cache/ftccback.h,
480         src/cache/ftccmap.c, src/cache/ftcglyph.c, src/cache/ftcglyph.h,
481         src/cache/ftcimage.c, src/cache/ftcimage.h, src/cache/ftcmanag.c,
482         src/cache/ftcmanag.h, src/cache/ftcmru.h, src/cache/ftcsbits.c,
483         src/cache/ftcsbits.h: Don't use the FT_CACHE_INTERNAL_XXX_H macros
484         but include the headers directly (which are now in `src/cache').
486         * src/cache/ftccache.c:  Don't use the FT_CACHE_INTERNAL_XXX_H
487         macros but include the headers directly.
488         (FTC_Cache_Init, FTC_Cache_Done, FTC_Cache_NewNode,
489         FTC_Cache_Lookup, FTC_Cache_RemoveFaceID): Declare as FT_LOCAL_DEF.
491         * src/cache/ftccache.c:  Don't use the FT_CACHE_INTERNAL_XXX_H
492         macros but include the headers directly.
493         (FTC_MruNode_Prepend, FTC_MruNode_Up, FTC_MruNode_Remove,
494         FTC_MruList_Init, FTC_MruList_Reset, FTC_MruList_Done,
495         FTC_MruList_New, FTC_MruList_Remove, FTC_MruList_RemoveSelection):
496         Declare as FT_LOCAL_DEF.
497         (FTC_MruListFind, FTC_MruList_Lookup) [!FTC_INLINE]: Compile
498         conditionally.
499         Declare as FT_LOCAL_DEF.
502         * builds/win32/visualc/freetype.dsp: Update project file, add
503         missing base source files (ftstroke.c, ftxf86.c, etc.).
506         * src/autofit/afcjk.c, src/autofit/aflatin.c, src/base/ftobjs.c,
507         src/cff/cffobjs.c, src/cid/cidobjs.c, src/pfr/pfrobjs.c,
508         src/sfnt/sfobjs.c, src/sfnt/ttmtx.c, src/type1/t1afm.c,
509         src/type1/t1objs.c: Remove compiler warnings when building with
510         Visual C++ 6 and /W4.
512         * src/autofit/aflatin.c (af_latin_hints_init): Disable horizontal
513         hinting for italic/oblique fonts.
517         * src/truetype/ttpload.c, src/truetype/ttpload.h
518         (tt_face_get_device_metrics): Change second argument to `FT_UInt'.
520 2006-03-06  David Turner  <david@freetype.org>
522         * src/cache/ftcmanag.c (FTC_Manager_Lookup_Size): Prevent crashes in
523         Mozilla/FireFox print preview in Ubuntu Hoary.
525 2006-02-28  Chia-I Wu  <b90201047@ntu.edu.tw>
527         * src/base/ftutil.c (ft_mem_qalloc) [FT_STRICT_ALIASING]: Do not
528         return error when size == 0.
530 2006-02-28  Chia-I Wu  <b90201047@ntu.edu.tw>
532         * src/base/ftobjs.c (FT_Done_Library): Remove modules in reverse
533         order so that type42 module is removed before truetype module.  This
534         avoids double free in some occasions.
536 2006-02-28  David Turner  <david@freetype.org>
538         * Release candidate VER-2-2-0-RC4.
539         ----------------------------------
541         * docs/CHANGES: Documentation updates.
543 2006-02-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
545         * modules.cfg (BASE_EXTENSIONS): Compile in ftgxval.c by default to
546         build ftvalid in ft2demos.  It works as dummy ABI if gxvalid is not
547         built.
549 2006-02-27  Werner Lemberg  <wl@gnu.org>
551         * include/freetype/cache/ftccache.h
552         [FT_CONFIG_OPTION_OLD_INTERNALS]: Remove declaration of
553         ftc_node_done.
555         * src/cache/ftccache.c (ftc_node_destroy)
556         [!FT_CONFIG_OPTION_OLD_INTERNALS]: Mark as FT_LOCAL_DEF.  This
557         should now fix all possible compilation options.
559 2006-02-27  David Turner  <david@freetype.org>
561         * src/base/ftutil.c (ft_mem_alloc, ft_mem_qalloc, ft_mem_realloc,
562         ft_mem_qrealloc): Return an error if a negative size is passed in
563         parameters.
565         * src/cache/ftccache.c (ftc_node_destroy): Mark as FT_BASE_DEF since
566         it needs to be exported for rogue clients.
568         * src/pshinter/pshglob.c (psh_blues_set_zones_0): Prevent problems
569         with malformed fonts which have an odd number of blue values (these
570         are broken according to the specs).
572         * src/cff/cffload.c (cff_subfont_load), src/type1/t1load.c
573         (T1_Open_Face): Modify the loaders to force even-ness of
574         `num_blue_values'.
576         (cff_index_access_element): Ignore invalid entries in index files.
578 2006-02-27  Chia-I Wu  <b90201047@ntu.edu.tw>
580         * src/base/ftobjs.c (FT_Set_Char_Size): Check the case where width
581         or height is 0.
583 2006-02-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
585         * builds/mac/FreeType.m68k_cfm.make.txt,
586         builds/mac/FreeType.m68k_far.make.txt,
587         builds/mac/FreeType.ppc_carbon.make.txt,
588         builds/mac/FreeType.ppc_classic.make.txt: Update to new header
589         inclusion introduced on 2006-02-16.
591 2006-02-27  Chia-I Wu  <b90201047@ntu.edu.tw>
593         * src/base/ftobjs.c (GRID_FIT_METRICS): New macro.
594         (ft_glyphslot_grid_fit_metrics, FT_Load_Glyph) [GRID_FIT_METRICS]:
595         Re-enable glyph metrics grid-fitting.  It is now done in the base
596         layer.
597         (FT_Set_Char_Size, FT_Set_Pixel_Sizes): Make sure the width and
598         height are not too small or too large, just like we were doing in
599         2.1.10.
601         * src/autofit/afloader.c (af_loader_load_g): The vertical metrics
602         are not scaled.
604 2006-02-26  Werner Lemberg  <wl@gnu.org>
606         * docs/release: Minor additions and clarifications.
608         * docs/CHANGES: Updated to reflect many fixes for backwards
609         compatibility.  Still incomplete.
611 2006-02-26  David Turner  <david@freetype.org>
613         * src/base/ftobjs.c (ft_recompute_scaled_metrics): Re-enable
614         conservative rounding of metrics to avoid breaking clients like
615         Pango (see http://bugzilla.gnome.org/show_bug.cgi?id=327852).
617 2006-02-25  Werner Lemberg  <wl@gnu.org>
619         * devel/ftoption.h: Synchronize with
620         include/freetype/config/ftoption.h.
622         * src/cache/ftccache.c (ftc_node_destroy): Use FT_LOCAL_DEF (again).
624 2006-02-25  David Turner  <david@freetype.org>
626         Fix compiler warnings as well as C++ compilation problems.
627         Add missing prototypes.
629         * src/autofit/afcjk.c, src/base/ftobjs.c, src/base/ftutil.c,
630         src/bdf/bdfdrivr.c, src/cff/cffcmap.c, src/cff/cffobjs.c,
631         src/psaux/afmparse.c,, src/psaux/t1cmap.c, src/smooth/ftgrays.c
632         src/tools/apinames.c, src/truetype/ttdriver.c: Add various casts,
633         initialize variables, and decorate functions with FT_CALLBACK_DEF,
634         etc., to fix compiler warnings (and C++ compiling errors).
636         * src/cache/ftcbasic.c: Fix `-Wmissing-prototypes' warnings with
637         gcc.
639         * builds/unix/ftsystem.c: Don't include FT_INTERNAL_OBJECTS_H but
640         FT_INTERNAL_STREAM_H.
642         * src/base/ftsystem.c: Include FT_INTERNAL_STREAM_H.
644         * include/freetype/config/ftheader.h (FT_PFR_H): New macro.
646         * include/freetype/config/ftoption.h (FT_STRICT_ALIASING): Don't
647         define for C++.
649         * include/freetype/internal/services/svotval.h: Don't include
650         FT_OPENTYPE_VALIDATE_H but FT_INTERNAL_VALIDATE_H.
652         * include/freetype/internal/services/svpfr.h: Include FT_PFR_H.
654         * src/gzip/ftgzip.c: Include FT_GZIP_H.
656         * src/lzw/ftlzw.c, src/lzw/ftlzw2.c: Include FT_LZW_H.
658         * src/sfnt/ttbdf.c (tt_face_load_bdf_props): Rearrange code.
660 2006-02-24  Chia-I Wu  <b90201047@ntu.edu.tw>
662         * src/base/ftoutln.c (FT_OUTLINE_GET_CONTOUR, ft_contour_has,
663         ft_contour_enclosed, ft_outline_get_orientation): Commented out.  We
664         have to wait until `FT_GlyphSlot_Own_Bitmap' is stabilized.
665         (FT_Outline_Embolden): Use `FT_Outline_Get_Orientation'.
667 2006-02-24  Chia-I Wu  <b90201047@ntu.edu.tw>
669         * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): Update
670         documentation.
672         * include/freetype/ftsynth.h (FT_GlyphSlot_Own_Bitmap),
673         src/base/ftsynth.c (FT_GlyphSlot_Own_Bitmap): New function to make
674         sure a glyph slot owns its bitmap.  It is also marked experimental
675         and due to change.
676         (FT_GlyphSlot_Embolden): Undo the last change.  It turns out that
677         rendering the outline confuses some applications.
679 2006-02-24  David Turner  <david@freetype.org>
681         * Release candidate VER-2-2-0-RC3.
682         ----------------------------------
684         * src/cache/ftcbasic.c: Correct compatibility hack bug.
686 2006-02-24  Chia-I Wu  <b90201047@ntu.edu.tw>
688         * include/freetype/freetype.h (FT_Size_RequestRec): Change the type
689         of `width' and `height' to `FT_Long'.
690         (enum FT_Size_Request_Type), src/base/ftobjs.c (FT_Request_Metrics):
691         New request type `FT_SIZE_REQUEST_TYPE_SCALES' to specify the scales
692         directly.
694 2006-02-23  David Turner  <david@freetype.org>
696         Two BDF patches from Debian libfreetype6 for 2.1.10.
698         * src/bdf/bdflib.c (_bdf_parse_glyphs): Fix a bug with zero-width
699         glyphs.
700         Fix a problem with large encodings.
703         Fix binary compatibility issues for gnustep-back (GNUstep backend
704         module) which still crashes under Sarge.
706         * src/cache/ftccmap.c (FTC_OldCMapType, FTC_OldCMapIdRec,
707         FTC_OldCMapDesc) [FT_CONFIG_OPTION_OLD_INTERNALS]: New data
708         structures and enumerations.
709         (FTC_CMapCache_Lookup) [FT_CONFIG_OPTION_OLD_INTERNALS]: New
710         compatibility code.
712         * src/cache/ftcbasic.c: Fix a silly bug that prevented our `hack' to
713         support rogue clients compiled against 2.1.7 to work correctly.
714         This probably explains the GNUstep crashes with the second release
715         candidate.
717 2006-02-23  Chia-I Wu  <b90201047@ntu.edu.tw>
719         * include/freetype/ftoutln.h (enum FT_Orientation): New value
720         `FT_ORIENTATION_NONE'.
722         * src/base/ftoutln.c (FT_OUTLINE_GET_CONTOUR, ft_contour_has,
723         ft_contour_enclosed, ft_outline_get_orientation): Another version of
724         `FT_Outline_Get_Orientation'.  This version differs from the public
725         one in that each part (contour not enclosed in another contour) of the
726         outline is checked for orientation.
727         (FT_Outline_Embolden): Use `ft_outline_get_orientation'.
729         * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Render the outline and
730         use bitmap's embolden routine when the outline one failed.
732 2006-02-22  Chia-I Wu  <b90201047@ntu.edu.tw>
734         * modules.cfg: Compile in ftotval.c and ftxf86.c by default for ABI
735         compatibility.
737         * src/sfnt/sfobjs.c (sfnt_done_face): Fix a memory leak.
739         * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_bit_aligned,
740         tt_sbit_decoder_load_byte_aligned) [FT_OPTIMIZE_MEMORY]: Fix sbit
741         loading.  (Only tested with bit aligned sbit with x_pos == 0.)
743         * src/truetype/ttpload.c (tt_face_load_hdmx,
744         tt_face_get_device_metrics) [FT_OPTIMIZE_MEMORY]: `hdmx' is not
745         actually used.
747 2006-02-21  David Turner  <david@freetype.org>
749         Add a new API named FT_Get_TrueType_Engine_Type to determine whether
750         we have a patented, unpatented, or unimplemented TrueType bytecode
751         interpreter.
753         The FT_Get_Module_Flags API was removed consequently.
755         * include/freetype/ftmodapi.h (FT_Module_Get_Flags): Removed.
756         Replaced with...
757         (FT_Get_TrueType_Engine_Type): This.
758         (FT_TrueTypeEngineType): New enumeration.
760         * include/freetype/internal/ftserv.h (FT_SERVICE_TRUETYPE_ENGINE_H):
761         New macro.
763         * src/base/ftobjs.c: Include FT_SERVICE_TRUETYPE_ENGINE_H.
764         (FT_Module_Get_Flags): Removed.  Replaced with...
765         (FT_Get_TrueType_Engine_Type): This.
767         * src/truetype/ttdriver.c: Include FT_SERVICE_TRUETYPE_ENGINE_H.
768         (tt_service_truetype_engine): New service structure.
769         (tt_services): Register it.
771         * include/freetype/internal/services/svtteng.h: New file.
774         * src/sfnt/sfobjs.c (sfnt_load_face): Fix silly bug that prevented
775         embedded bitmaps from being correctly listed and used.
778         * src/sfnt/ttmtx.c (tt_face_load_hmtx): Disable memory optimization
779         if FT_CONFIG_OPTION_OLD_INTERNALS is used.  The is necessary because
780         libXfont is directly accessing the HMTX data, unfortunately.
781         Fix some compiler warnings.
782         (tt_face_get_metrics): Ditto.
785         * src/pfr/pfrsbit.c (pfr_slot_load_bitmap): Fix handling of
786         character advances.
788 2006-02-20  David Turner  <david@freetype.org>
790         Support binary compatibility with the X.Org server's Xfont library.
791         Note that this change unfortunately prevents memory optimizations
792         for the embedded bitmap loader.
794         * include/freetype/internal/sfnt.h (SFNT_Interface): Move
795         `set_sbit_strike' and `load_sbit_metrics' fields to the location of
796         version 2.1.8.
798         * src/sfnt/sfdriver.c (tt_face_set_sbit_strike_stub): Call
799         FT_Size_Request.
800         (sfnt_interface): Updated.
802         * src/sfnt/ttsbit.c [FT_CONFIG_OPTION_OLD_INTERNALS]: Don't load
803         ttsbit0.c.
804         (tt_load_sbit_metrics): Make `sbit_small_metrics_fields' static.
806         * src/sfnt/ttsbit.h: Updated.
808 2006-02-17  David Turner  <david@freetype.org>
810         * builds/unix/unix-cc.in (LINK_LIBRARY): Don't filter out exported
811         functions anymore.  This ensures that all FT_BASE internal functions
812         are available for dynamic linking.
814         * include/freetype/ftcache.h (FTC_IMAGE_TYPE_COMPARE,
815         FTC_IMAGE_TYPE_HASH), src/cache/ftcbasic.c (FTC_OldFontRec,
816         FTC_OldImageDescRec, FTC_ImageCache_Lookup, FTC_Image_Cache_New,
817         FTC_OldImage_Desc, FTC_OLD_IMAGE_FORMAT, ftc_old_image_xxx,
818         ftc_image_type_from_old_desc, FTC_Image_Cache_Lookup,
819         FTC_SBitCache_Lookup, FTC_SBit_Cache_New, FTC_SBit_Cache_Lookup)
820         [FT_CONFIG_OPTION_OLD_INTERNALS]: Try to revive old functions of the
821         cache sub-system.  We try to recognize old legacy signatures with a
822         gross hack (hope it works).
824 2006-02-17  Werner Lemberg  <wl@gnu.org>
826         * devel/ftoption.h: Synchronize with
827         include/freetype/config/ftoption.h.
829 2006-02-16  David Turner  <david@freetype.org>
831         Massive changes to the internals to respect the internal object
832         layouts and exported functions of FreeType 2.1.7.  Note that the
833         cache sub-system cannot be fully retrofitted, unfortunately.
835         * include/freetype/config/ftoption.h
836         (FT_CONFIG_OPTION_OLD_INTERNALS): New macro.
838         * include/freetype/ftcache.h, include/freetype/cache/ftccache.h,
839         include/freetype/cache/ftccmap.h,
840         include/freetype/internal/ftcalc.h,
841         include/freetype/internal/ftdriver.h,
842         include/freetype/internal/ftmemory.h,
843         include/freetype/internal/ftobjs.h,
844         include/freetype/internal/psaux.h, include/freetype/internal/sfnt.h,
845         include/freetype/internal/t1types.h,
846         include/freetype/internal/tttypes.h, src/base/ftcalc.c,
847         src/base/ftdbgmem.c, src/base/ftobjs.c, src/base/ftutil.c,
848         src/bdf/bdfdrivr.c, src/cache/ftccache.c, src/cache/ftccback.h,
849         src/cache/ftcmanag.c, src/cff/cffdrivr.c, src/cid/cidriver.c,
850         src/pcf/pcfdrivr.c, src/pfr/pfrdrivr.c, src/psaux/psauxmod.c,
851         src/sfnt/sfdriver.c, src/truetype/ttdriver.c, src/type1/t1driver.c,
852         src/type1/t1objs.c, src/type42/t42drivr.c, src/winfonts/winfnt.c:
853         Use FT_CONFIG_OPTION_OLD_INTERNALS to revive old functions and data
854         structures.
856         Move newly added structure elements to the end of the affected
857         structure and add stub fields (if FT_CONFIG_OPTION_OLD_INTERNALS is
858         defined) to assure binary compatibility with older FreeType
859         versions.
860         Use FT_CONFIG_OPTION_OLD_INTERNALS to add function stubs for old
861         functions:
863           ft_stub_set_char_sizes
864           ft_stub_set_pixel_sizes
866         Rename the following internal functions to provide the old function
867         names as stubs:
869           FT_Alloc          -> ft_mem_alloc
870           FT_QAlloc         -> ft_mem_qalloc
871           FT_Realloc        -> ft_mem_realloc
872           FT_QRealloc       -> ft_mem_qrealloc
873           FT_Free           -> ft_mem_free
874           FT_Alloc_Debug    -> ft_mem_alloc_debug
875           FT_QAlloc_Debug   -> ft_mem_qalloc_debug
876           FT_Realloc_Debug  -> ft_mem_realloc_debug
877           FT_QRealloc_Debug -> ft_mem_qrealloc_debug
878           FT_Free_Debug     -> ft_mem_free_debug
880 2006-02-15  Chia-I Wu  <b90201047@ntu.edu.tw>
882         * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove
883         unused `max_points' and `max_contours'.
885         * src/cid/cidobjs.c (cid_face_init), src/type1/t1objs.c
886         (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Update.
888         * include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
889         `max_components'.
891         * src/truetype/ttinterp.h (TT_ExecContextRec): Remove unused
892         `loadSize' and `loadStack'.
894         * src/truetype/ttinterp.c (TT_Done_Context, TT_Load_Context),
895         src/sfnt/ttload.c (tt_face_load_maxp): Update.
897         * src/cff/cffobjs.h (cff_size_select), src/sfnt/sfdriver.c
898         (sfnt_interface), src/truetype/ttdriver.c (tt_size_request): Fix
899         compiler errors/warnings when TT_CONFIG_OPTION_EMBEDDED_BITMAPS is not
900         defined.
902         * src/sfnt/ttmtx.c (tt_face_load_hmtx, tt_face_get_metrics): Fix
903         possible segment faults for the non-FT_OPTIMIZE_MEMORY'ed versions.
904         (finally!)
907         For most OpenType tables, `tt_face_load_xxxx' simply loads the table
908         and `face->root' is set later in `sfnt_load_face'.  Here, we try to
909         make this work for _all_ tables.  Also improve tracing messages.
911         * src/sfnt/ttsbit.c, src/sfnt/ttsbit0.c, src/sfnt/ttload.c,
912         src/sfnt/ttmtx.c: all `tt_face_load_xxxx' should load the table and
913         then exit.  Error handling or setting face->root is done later in
914         `sfnt_load_face'.
916         * src/sfnt/sfobjs.c (sfnt_load_face): Work harder.
917         Mac bitmap-only fonts are not scalable.
918         Check that `face->header.Units_Per_EM' is not zero.
919         (LOAD_, LOADM_): Emit pretty trace messages.
921         * src/sfnt/ttsbit0.c (tt_face_load_strike_metrics): Read metrics
922         from `eblc'.
924         * src/sfnt/ttcmap.c (tt_face_build_cmaps), src/sfnt/ttpost.c
925         (load_format_20, load_format_25, tt_face_get_ps_name): Use
926         face->max_profile.numGlyphs, instead of face->root.num_glyphs.
928 2006-02-14  Werner Lemberg  <wl@gnu.org>
930         * include/freetype/ftoutln.h (FT_Outline_Embolden): Mention in
931         documentation that negative strength values are possible.
932         Give an example call.
934         * include/freetype/freetype.h (FT_GlyphSlotRec): Improve
935         documentation of `outline' field.
937         * src/sfnt/sfobjc.s: Inckude FT_INTERNAL_DEBUG_H.
938         * src/sfnt/sfdriver.c: Include ttmtx.h.
940         * src/autofit/afcjk.c: Include aftypes.h and aflatin.h.
942 2006-02-14  Chia-I Wu  <b90201047@ntu.edu.tw>
944         * src/sfnt/ttmtx.c (tt_face_get_metrics): Typo.
946 2006-02-14  Chia-I Wu  <b90201047@ntu.edu.tw>
948         * src/sfnt/ttmtx.c (tt_face_load_hhea, tt_face_load_hmtx): Simply
949         return error if table is missing.
950         Check table length in non-FT_OPTIMIZE_MEMORY'ed `tt_face_load_hmtx'.
952         * src/sfnt/sfobjs.c (sfnt_load_face): Take care of missing metrics
953         tables.  The last change makes Mac bitmap-only font not load and
954         this fixes it.
956         * src/truetype/ttgload.c (load_truetype_glyph): Fix compilation
957         error when FT_CONFIG_OPTION_INCREMENTAL is defined.
959 2006-02-13  Chia-I Wu  <b90201047@ntu.edu.tw>
961         Clean up the SFNT_Interface.  In this final pass, `load_hmtx' is
962         split from `load_hhea'.
964         * include/freetype/internal/sfnt.h, src/sfnt/sfdriver.c,
965         src/sfnt/ttmtx.c, src/sfnt/ttmtx.h: Split `hmtx' from `hhea'.
967         * src/sfnt/sfobjs.c (sfnt_load_face): Update.
969 2006-02-13  Chia-I Wu  <b90201047@ntu.edu.tw>
971         * src/sfnt/ttmtx.h, src/sfnt/ttmtx.c: Why are there two copies of
972         code...
974 2006-02-13  Chia-I Wu  <b90201047@ntu.edu.tw>
976         Clean up the SFNT_Interface.  In this pass, we want to treat the
977         font directory (offset table and table directory) as a normal table
978         like the others.  This also means that TTCs are no longer recognized
979         there but in `init_face'.
981         * include/freetype/internal/sfnt.h (SFNT_Interface),
982         src/sfnt/sfdriver.c: `load_sfnt_header' and `load_directory' are
983         combined and renamed to `load_font_dir'.
985         * src/sfnt/ttload.h, src/sfnt/ttload.c:
986         s/sfnt_dir_check/check_table_dir/.
987         `sfnt_init' is moved to sfobjs.c and renamed to `sfnt_open_font'.
988         `tt_face_load_sfnt_header' and `tt_face_load_directory' are combined
989         and renamed to `tt_face_load_font_dir'.
991         * src/sfnt/sfobjs.c (sfnt_init_face): Recognize TTC here.
993 2006-02-13  Chia-I Wu  <b90201047@ntu.edu.tw>
995         Clean up the SFNT_Interface.  Table loading functions are now named
996         after the tables' tags; `hdmx' is TrueType-specific and thus the
997         code is moved to the truetype module; `get_metrics' is moved here
998         from the truetype module so that the code can be shared with the cff
999         module.
1001         This pass involves no real changes.  That is, the code is moved
1002         verbatim mostly.  The only exception is the return value of
1003         `tt_face_get_metrics'.
1005         * include/freetype/internal/sfnt.h, src/sfnt/rules.mk,
1006         src/sfnt/sfdriver.c, src/sfnt/sfnt.c, src/sfnt/sfobjs.c,
1007         src/sfnt/ttload.c, src/sfnt/ttload.h, src/sfnt/ttsbit.c,
1008         src/sfnt/ttsbit.h, src/sfnt/ttsbit0.c: Clean up the SFNT_Interface.
1010         * src/sfnt/ttmtx.c, src/sfnt/ttmtx.h: New files.  Metrics-related
1011         tables' loading and parsing code is moved to here.
1012         Move `tt_face_get_metrics' here from the truetype module.  The
1013         return value is changed from `void' to `FT_Error'.
1015         * include/freetype/internal/fttrace.h: New trace: ttmtx.
1017         * src/truetype/ttpload.c, src/truetype/ttpload.h: `hdmx' loading and
1018         parsing code is moved here.
1019         New function `tt_face_load_prep' split from `tt_face_load_fpgm'.
1020         `tt_face_load_fpgm' returns `FT_Err_Ok' if `fpgm' doesn't exist.
1022         * src/cff/cffgload.c, src/cff/cffobjs.c: Update.
1024         * src/truetype/ttgload.c, src/truetype/ttobjs.c: Update.
1026 2006-02-11  Chia-I Wu  <b90201047@ntu.edu.tw>
1028         * src/autofit/afcjk.c (af_cjk_metrics_init): Fix a stupid bug...
1030         * src/autofit/aflatin.c (af_latin_metrics_init_widths): Use
1031         AF_LatinMetricsRec as the dummy metrics because we cast the metrics
1032         to it later in `af_latin_hints_link_segments'.
1034 2006-02-11  Chia-I Wu  <b90201047@ntu.edu.tw>
1036         * include/freetype/config/ftoption.h (AF_CONFIG_OPTION_CJK): #define
1037         to enable autofit CJK script support.  (#define'd by default.)
1039         * src/autofit/aflatin.h (AF_LATIN_CONSTANT): New macro.
1041         * src/autofit/aflatin.c (af_latin_metrics_init_widths): Make sure
1042         that `edge_distance_threshold' is always set.
1043         (af_latin_hints_link_segments): Potential divide-by-zero bug.
1044         Use latin constant in the scoring formula.
1046         * src/autofit/afcjk.c: Minor updates due to the above three changes.
1048         * docs/TODO, docs/CHANGES: Updated.
1050 2006-02-09  Chia-I Wu  <b90201047@ntu.edu.tw>
1052         Introduce experimental autofit CJK module based on akito's autohint
1053         patch.  You need to #define AF_MOD_CJK in afcjk.c to enable it.
1055         * src/autofit/afglobal.c, src/autofit/afcjk.h, src/autofit/afcjk.c,
1056         src/autofit/rules.mk, src/autofit/autofit.c, src/autofit/aftypes.h:
1057         Add CJK module based on akito's autohint patch.
1059         * src/autofit/afhints.h (AF_SegmentRec): New field `len' for the
1060         overlap length of the segments.
1061         (AF_SEGMENT_LEN, AF_SEGMENT_DIST): New macros.
1063         * src/autofit/aflatin.h (af_latin_metrics_init_widths),
1064         src/autofit/aflatin.c (af_latin_metrics_init_widths): Made
1065         `FT_LOCAL'.
1066         Use the character given by the caller.
1067         (af_latin_metrics_init_widths, af_latin_hints_link_segments): Scale
1068         the thresholds.
1070         * src/autofit/afloader.c (af_loader_load_g): Respect
1071         AF_SCALER_FLAG_NO_ADVANCE.
1073 2006-02-09  Werner Lemberg  <wl@gnu.org>
1075         * src/cid/cidparse.c (cid_parse_new): Remove shadowing variable.
1077 2006-02-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1079         * src/cid/cidparse.c (cid_parse_new): Fix for abnormally short or
1080         broken CIDFont.  Reported by Taek Kwan(TK) Lee (see ft-devel
1081         2005-11-02).
1083 2006-02-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1085         * builds/unix/configure.ac: Fix bug for `--with-old-mac-fonts'
1086         option on UNIX platform.  It has been broken since 2006-01-11.
1088 2006-02-01  Werner Lemberg  <wl@gnu.org>
1090         * src/otvalid/module.mk: s/otvalid_module_class/otv_module_class/.
1091         * src/gxvalid/module.mk: s/gxvalid_module_class/gxv_module_class/.
1093         * builds/unix/unixddef.mk: Actually do define PLATFORM (fixing
1094         change from 2006-01-31).
1095         (TOP_DIR, OBJ_DIR): Update.
1097         * builds/unix/install.mk (install): Fix path for ftmodule.h.
1099         * Makefile, *.mk, builds/unix/unix-cc.in, builds/unix-def.in: Use
1100         `?=' where appropriate.
1102         * builds/detect.mk (TOP_DIR), builds/os2/os2-dev.mk (TOP_DIR),
1103         builds/win32/w32-dev.mk (TOP_DIR): Removed.  Defined elsewhere.
1105 2006-01-31  Werner Lemberg  <wl@gnu.org>
1107         Implement new, simplified module selection.  With GNU make it is now
1108         sufficient to modify a single file, `modules.cfg', to control the
1109         inclusion of modules and base extension files.
1111         This change also fixes the creation of ftmodule.h; it now depends on
1112         `modules.cfg' and thus is rebuilt only if necessary.
1114         Finally, a version of `ftoption.h' in OBJ_DIR is preferred over the
1115         default location.
1117         * modules.cfg: New file.
1119         * builds/freetype.mk: Don't include `modules.mk'.
1120         Include all `rules.mk' files as specified in `modules.cfg'.
1121         (FTOPTION_FLAG, FTOPTION_H): New variables.
1122         (FT_CFLAGS): Add macro definition for FT_CONFIG_MODULES_H.
1123         Add FTOPTION_FLAG.
1124         ($(FT_INIT_OBJ)): Don't use FT_MODULE_LIST.
1125         (CONFIG_H): Add FTMODULE_H and FTOPTION_H.
1126         (INCLUDES): Add DEVEL_DIR.
1127         (INCLUDE_FLAGS, FTSYS_SRC, FTSYS_OBJ, FTDEBUG_SRC, FTDEBUG_OBJ,
1128         OBJ_M, OBJ_S): Use `:=', not `='.
1129         (remove_ftmodule_h): New phony target to delete `ftmodule.h'.
1130         (distclean): Add remove_ftmodule_h.
1132         * builds/modules.mk: (MODULE_LIST): Removed.
1133         (make_module_list, clean_module_list): Replace targets
1134         with...
1135         (FTMODULE_H_INIT, FTMODULE_H_CREATE, FTMODULE_H_DONE): New
1136         variables.  Reason for the change is that it is not possible to have
1137         a phony prerequisite which is run only if the target file must be
1138         rebuilt (phony prerequisites act like subroutines and are *always*
1139         executed).  We only want to rebuild `ftmodule.h' if `module.cfg' is
1140         changed.
1141         Update all callers.
1142         ($FTMODULE_H)): Rule to create `ftmodule.h', depending on
1143         `modules.cfg'.
1145         * builds/toplevel.mk: Rewrite and simplify module handling.
1146         (MODULES_CFG, FTMODULE_H): New variables.
1147         Include MODULES_CFG.
1148         (MODULES): New variable to include all `module.mk' and `rules.mk'
1149         files.  We no longer use make's `wildcard' function for this.
1151         * Makefile (USE_MODULES): Remove.  Update all users.
1152         (OBJ_DIR): Define it here.
1154         * src/*/module.mk: Change
1156             make_module_list: foo
1157             foo: ...
1159         to
1161             FTMODULE_H_COMMANDS += FOO
1162             define FOO
1163             ...
1164             endef
1166         in all files.  `FTMODULE_H_COMMANDS' is used in `FTMODULE_H_CREATE'.
1168         * src/base/rules.mk (BASE_EXT_SRC): Use BASE_EXTENSIONS.
1170         * builds/unix/detect.mk (setup): Always execute `configure' script.
1171         (have_mk): Rename to...
1172         (have_Makefile): This.
1173         Don't use `strip' function.
1175         * builds/unix/unix.mk: Include `install.mk' only if BUILD_PROJECT is
1176         defined.
1177         (have_mk): Don't use `strip' function.
1178         Test for unix-def.mk in OBJ_DIR, not BUILD_DIR (and invert the test
1179         accordingly).
1181         * builds/unix/install.mk (install, uninstall): Handle `ftmodule.h'.
1183         * builds/os2/os2-dev.mk, builds/unix/unix-dev.mk,
1184         builds/win32/w32-bccd.mk, builds/win32/w32-dev.mk: Don't define
1185         BUILD_DIR but DEVEL_DIR for development header files.
1187         * builds/ansi/ansi-def.mk (TOP_DIR, OBJ_DIR),
1188         builds/beos/beos-def.mk (TOP_DIR, OBJ_DIR), builds/unix/unix-def.in
1189         (TOP_DIR, OBJ_DIR): Removed.  Defined elsewhere.
1191         * builds/dos/dos-def.mk (OBJ_DIR), builds/os2/os2-def.mk (OBJ_DIR),
1192         builds/win32/win32-def.mk (OBJ_DIR): Removed.  Defined elsewhere.
1194         * builds/unix/unixddef.mk: Don't define BUILD_DIR but DEVEL_DIR for
1195         development header files.
1196         Don't define PLATFORM.
1198         * configure: Copy `modules.cfg' to builddir if builddir != srcdir.
1199         Update snippet taken from autoconf's m4sh.m4 to current CVS version.
1200         Be more verbose.
1202         * include/freetype/config/ftmodule.h: Add comments -- this file is
1203         no longer used if FreeType is built with GNU make.
1205         * docs/CHANGES, docs/CUSTOMIZE, docs/INSTALL, docs/INSTALL.ANY,
1206         docs/INSTALL.GNU, docs/INSTALL.UNX: Document new build mechanism.
1207         Other minor updates.
1209         * modules.txt: Removed.  Contents included in `modules.cfg'.
1212         * include/freetype/internal/ftmemory.h (FT_QAlloc_Debug,
1213         FT_Free_Debug) [FT_STRICT_ALIASING]: Fix typos.
1215         * src/base/ftdbgmem.c (FT_Alloc_Debug, FT_Realloc_Debug,
1216         FT_QAlloc_Debug, FT_QRealloc_Debug, FT_Free_Debug)
1217         [FT_STRICT_ALIASING]: Implement.
1219 2006-01-31  Chia-I Wu  <b90201047@ntu.edu.tw>
1221         * src/cff/cffobjs.c (cff_face_init), src/cid/cidobjs.c
1222         (cid_face_init), src/pfr/pfrobjs.c (pfr_face_init),
1223         src/type1/t1objs.c (T1_Face_Init): Set face->height to MAX(1.2 *
1224         units_per_EM, ascender - descender).
1226 2006-01-31  Chia-I Wu  <b90201047@ntu.edu.tw>
1228         * include/freetype/internal/t1types.h (AFM_FontInfo),
1229         src/psaux/afmparse.c, src/tools/test_afm.c: Read `FontBBox',
1230         `Ascender', and `Descender' from an AFM.
1232         * src/type1/t1afm.c (T1_Read_Metrics): Use the metrics from the AFM.
1234         * include/freetype/freetype.h (FT_FaceRec): Mention that fields may
1235         be changed after file attachment.
1237 2006-01-28  Werner Lemberg  <wl@gnu.org>
1239         * src/*/module.mk (.PHONY): Add.
1241 2006-01-27  Werner Lemberg  <wl@gnu.org>
1243         * README, docs/FTL.TXT: Fix email address for bug reports.
1244         Other minor formatting.
1246         * devel/ftoption.h: Synchronize with
1247         include/freetype/config/ftoption.h.
1249         * src/autofit/module.mk (add_autofit_module), src/bdf/module.mk
1250         (add_bdf_module), src/type42/module.mk (add_type42_driver): Fix
1251         whitespace.
1253         * src/smooth/module.mk (add_smooth_renderer): Add lcd and lcdv
1254         renderer classes.
1256 2006-01-27  David Turner  <david@freetype.org>
1258         * builds/unix/configure.ac: Fix build problem on Cygwin.
1260         * builds/unix/install.mk (install): Don't install the internal
1261         headers, and remove existing ones if found in the target install
1262         directory.
1264         * src/autofit/afwarp.c: Add simple #ifdef to prevent compilation
1265         if the warp hinter isn't active (it shouldn't, still experimental).
1267         * Jamfile, include/freetype/config/ftmodule.h: Remove `gxvalid'
1268         and `otvalid' from the list of modules that are linked statically
1269         to a given FreeType library.  Functionality has been moved to the
1270         `ftvalid' CVS module.
1272         Note also that current Make-based build system still compiles the
1273         modules though.
1275         * include/freetype/config/ftoption.h (FT_STRICT_ALIASING): New macro
1276         which controls the definitions of the memory management functions to
1277         avoid warnings with recent versions of GCC.  This macro is only here
1278         to be disabled, in case we detect problems with the new scheme.
1280         NOTE: Disable macro to use the memory debugger -- this will be fixed
1281               later!
1283         * include/freetype/internal/ftmemory.h, src/base/ftutil.c (FT_Alloc,
1284         FT_QAlloc, FT_Realloc, FT_QRealloc, FT_Free) [FT_STRICT_ALIASING]:
1285         New versions.
1288         * builds/win32/visualc/freetype.dsp: Updating project file to
1289         define FT2_BUILD_LIBRARY, and remove gxvalid + otvalid modules from
1290         compilation.
1293         * builds/freetype.mk (FT_CFLAGS), Jamfile (DEFINES): Define the
1294         macro FT2_BUILD_LIBRARY when compiling the library.
1296         * include/freetype/config/ftheader.h: Remove inclusions of internal
1297         headers except if the macro FT2_BUILD_LIBRARY is defined.
1300         * include/freetype/internal/psaux.h (AFM_KernPair, AFM_TrackKern,
1301         AFM_FontInfo): Move structure declarations to...
1302         * include/freetype/internal/t1types.h: This file.
1305         * (many files): Fix compiler warnings.
1306         Various minor reorganizations.
1309         * src/cff/cffload.c (cff_font_done): Don't free static array
1310         `subfonts'.
1312         * src/otvalid/otvcommn.c (otv_ClassDef_validate),
1313         src/otvalid/otvgpos.c (otv_x_sxy): Fix debugging information.
1316         Get rid of writable static variables (i.e., the string table) in
1317         afmparse, and fix compilation in FT2_MULTI mode.
1319         * src/psaux/afmparse.c: Include ft2build.h and FT_FREETYPE_H.
1320         (AFM_MAX_ARGUMENTS): Define...
1321         * src/psaux/afmparse.h: Here.
1322         * src/psaux/Jamfile (_sources): Add afmparse.
1324         * src/psaux/psconv.c: Include psconv.h.
1326         * src/type1/t1afm.c: Don't include FT_INTERNAL_TYPE1_TYPES_H but
1327         FT_INTERNAL_POSTSCRIPT_AUX_H.
1328         * src/type1/t1afm.h: Include FT_INTERNAL_TYPE1_TYPES_H.
1330 2006-01-23  Chia-I Wu  <b90201047@ntu.edu.tw>
1332         * include/freetype/freetype.h (FT_Select_Size): Rename the second
1333         argument from `idx' to `strike_index'.
1334         (FT_Size_Request_Type): Add FT_SIZE_REQUEST_TYPE_MAX to the end of
1335         this enum.
1337         * include/freetype/internal/ftobjs.h (FT_REQUEST_WIDTH,
1338         FT_REQUEST_HEIGHT): New macros to get the width and height of a
1339         request, in fractional pixels.
1341         * include/freetype/internal/ftobjs.h (FT_Select_Metrics,
1342         FT_Request_Metrics), src/base/ftobjs.c (FT_Select_Metrics,
1343         FT_Request_Metrics): New base functions to set the font metrics.  They
1344         were part of FT_Select_Size/FT_Request_Size and are made independent
1345         functions so that metrics are not set again and again.
1347         * src/base/ftobjs.c (FT_Select_Size, FT_Request_Size): Metrics are set
1348         only when driver's size_select/size_request is NULL.  That is, drivers
1349         should set the metrics themselves.
1350         (FT_Match_Size): Round before matching.  This was what we did and it
1351         does cause some problems without rounding.
1353         * src/cff/cffobjs.c (cff_size_select), src/truetype/ttdriver.c
1354         (tt_size_select): Set the font metrics.
1355         s/index/strike_index/.
1356         The scaled metrics are always preferred over strikes' metrics, even
1357         when some strike is selected.  This is done because the strikes'
1358         metrics are not reliable, e.g., the sign of the descender is wrong for
1359         some fonts.
1361         * src/cff/cffobjs.c (cff_size_request), src/truetype/ttdriver.c
1362         (tt_size_request): Set the font metrics.
1363         Call cff_size_select/tt_size_select when some strike is matched.
1365         * src/bdf/bdfdrivr.c, src/cff/cffobjs.c, src/cid/cidobjs.c,
1366         src/pcf/pcfdrivr.c, src/truetype/ttdriver.c, src/type1/t1objs.c,
1367         src/type1/t1objs.h, src/type42/t42objs.c, src/winfonts/winfnt.c:
1368         Set the font metrics.
1369         s/index/strike_index/.
1371         * src/tools/test_afm.c, src/psaux/psconv.c: Older versions of these
1372         files were committed.  Just a catch-up.
1373         (PS_Conv_ToFixed): Remove the `goto'.
1374         (PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Speed up a little.
1376         * src/sfnt/ttsbit.c (tt_face_load_sbit_strikes,
1377         tt_face_load_strike_metrics), src/sfnt/ttsbit0.c
1378         (tt_face_load_sbit_strikes, tt_face_load_strike_metrics): The
1379         advertised metrics in `available_sizes' are different from those
1380         actually used.
1382 2006-01-23  Chia-I Wu  <b90201047@ntu.edu.tw>
1384         * src/psaux/psaux.c src/psaux/psauxmod.c src/type1/t1driver.c: Make
1385         AFM parser optional, controlled by `T1_CONFIG_OPTION_NO_AFM'.
1387 2006-01-22  Werner Lemberg  <wl@gnu.org>
1389         * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from
1390         `texinfo' CVS module at savannah.gnu.org.
1392 2006-01-21  Werner Lemberg  <wl@gnu.org>
1394         * src/autofit/rules.mk (AUTOF_DRV_SRC): Add afwarp.c.
1396         * src/autofit/afloader.c (af_loader_load_g): Move AF_USE_WARPER up
1397         to avoid compiler warnings.
1399         * src/autofit/afwarp.c (af_warper_compute_line_best): Remove
1400         shadowing variable declarations.
1401         Fix warning parameters and replace printf with AF_LOG.
1402         (af_warper_compute): Remove unused variable.
1404 2006-01-20  David Turner  <david@freetype.org>
1406         Adding experimental implementation of `warp hinting' (new hinting
1407         algorithm for gray-level and LCD rendering).  It is disabled by
1408         default, you need to #define AF_USE_WARPER in aftypes.h.
1410         * src/autofit/afhints.c (af_glyph_hints_scale_dim) [AF_USE_WARPER]:
1411         New function.
1412         * src/autofit/afhints.h: Updated.
1414         * src/autofit/aflatin.c [AF_USE_WARPER]: Include afwarp.h.
1415         (af_latin_hints_init) [AF_USE_WARPER]: Reset mode to
1416         FT_RENDER_MODE_NORMAL if an LCD mode is selected.
1417         (af_latin_hints_apply) [AF_USE_WARPER]: Call af_warper_compute
1418         appropriately.
1420         * src/autofit/afloader.c (af_loader_load_g) [!AF_USER_WARPER]:
1421         Isolate code for adjusting metrics.
1423         * src/autofit/aftypes.h (AF_USE_WARPER): New macro (commented out by
1424         default).
1426         * src/autofit/afwarp.c, src/autofit/afwarp.h: New files.
1428         * src/autofit/autofit.c [AF_USE_WARPER]: Include afwarp.c.
1430         * src/autofit/Jamfile (_sources): Add afwarp.
1432 2006-01-19  David Turner  <david@freetype.org>
1434         * src/sfnt/ttsbit0.c (tt_face_load_strike_metrics): Fix small bug
1435         that prevented compilation when FT_OPTIMIZE_MEMORY is defined.
1437 2006-01-19  Brian Weed  <bw@imaginengine.com>
1439         * builds/win32/visualc/freetype.dsp: Updated.
1441 2006-01-17  Werner Lemberg  <wl@gnu.org>
1443         Use pscmap service in CFF module.
1445         * src/cff/cffcmap.c (cff_cmap_uni_pair_compare): Removed.
1446         (cff_sid_to_glyph_name): New function.
1447         (cff_cmap_unicode_init, cff_cmap_unicode_done,
1448         cff_cmap_unicode_char_index, cff_cmap_unicode_char next): Use pscmap
1449         service.
1450         (cff_cmap_unicode_class_rec): Updated.
1451         * src/cff/cffcmap.h (CFF_CMapUnicode, CFF_CMap_UniPair): Removed.
1454         * src/psnames/psmodule.c (ps_unicodes_char_next): Fix `unicode'
1455         return value.
1458         * src/psaux/afmparse.c (afm_parser_read_vals): Use double casting
1459         to avoid compiler warnings regarding type-punning.
1461 2006-01-16  Chia-I Wu  <b90201047@ntu.edu.tw>
1463         * src/psaux/afmparse.c, src/psaux/afmparse.h: New files which
1464         implement an AFM parser.
1466         * src/psaux/psconv.c, src/psaux/psconv.h: New files to provide
1467         conversion functions (e.g., PS real number => FT_Fixed) for the
1468         PS_Parser and AFM_Parser.  Some of the functions are taken, with
1469         some modifications, from the file psobjs.c.
1471         * src/psaux/psobjs.c: Use functions from psconv.c.
1473         * include/freetype/internal/psaux.h, src/psaux/psauxmod.c: Add
1474         `AFM_Parser' to the `psaux' service.
1476         * src/psaux/psaux.c, src/psaux/rules.mk (PSAUX_DRV_SRC): Include
1477         those new files.
1479         * src/tools/test_afm.c: A test program for AFM parser.
1481         * include/freetype/internal/services/svkern.h: New file providing a
1482         `Kerning' service.  It is currently only used to get the track
1483         kerning information.
1485         * include/freetype/internal/ftserv.h (FT_SERVICE_KERNING_H): New
1486         macro.
1488         * src/type1/t1driver.c, src/type1/t1objs.c, src/type1/t1afm.c,
1489         src/type1/t1afm.h: Update to use the AFM parser.
1490         Provide the `Kerning' service.
1492         * include/freetype/freetype.h, src/base/ftobjs.c: New API
1493         `FT_Get_Track_Kerning'.
1495 2006-01-15  Chia-I Wu  <b90201047@ntu.edu.tw>
1497         * include/freetype/internal/ftobjs.h, src/base/ftobjs.c,
1498         src/bdf/bdfdrivr.c, src/cff/cffgload.c, src/cid/cidgload.c,
1499         src/pcf/pcfdrivr.c, src/type1/t1gload.c, src/winfonts/winfnt.c:
1500         s/ft_fake_vertical_metrics/ft_synthesize_vertical_metrics/.
1502         * docs/CHANGES: Mention that vertical metrics are synthesized for
1503         fonts not having this info.
1505 2006-01-15  Chia-I Wu  <b90201047@ntu.edu.tw>
1507         * include/freetype/internal/ftobjs.h (ft_fake_vertical_metrics),
1508         src/base/ftobjs.c (ft_fake_vertical_metrics): New function to fake
1509         vertical metrics.
1511         * src/cff/cffgload.c, src/cid/cidgload.c, src/pcf/pcfdrivr.c,
1512         src/type1/t1gload.c, src/winfonts/winfnt.c: Fake vertical metrics,
1513         which are monotone.
1515         * src/truetype/ttgload.c (compute_glyph_metrics): Some fixes and
1516         formattings in vertical metrics faking.  There is still room for
1517         improvements (and so does the CFF module).
1519 2006-01-15  Chia-I Wu  <b90201047@ntu.edu.tw>
1521         * src/bdf/bdfdrivr.c (BDF_Glyph_Load), src/pcf/pcfdrivr.c
1522         (PCF_Glyph_Load), src/winfonts/winfnt.c (FNT_Load_Glyph): Don't set
1523         the linear advance fields as they are only used by the outline
1524         glyphs.
1526         * include/freetype/freetype.h: Documentation updates and
1527         clarifications.
1528         The meaning of FT_LOAD_FORCE_AUTOHINT is changed so that no real
1529         change need be made to the code.
1531         * src/base/ftobjs.c (FT_Load_Glyph): Resolve flag dependencies and
1532         decide whether to use the auto-hinter according to documentation.
1533         There should to be no real difference.
1534         Some checks (e.g., is text height positive?) after the glyph is
1535         loaded.
1536         (FT_Select_Size, FT_Request_Size): Scales are set to wrong values.
1537         Be careful that scales won't be negative.
1539 2006-01-14  Chia-I Wu  <b90201047@ntu.edu.tw>
1541         * docs/CHANGES: Mention the size selection change.
1543         * src/bdf/bdfdrivr.c (BDF_Size_Request, BDF_Size_Select),
1544         src/pcf/pcfdrivr.c (PCF_Size_Request, PCF_Size_Select),
1545         src/winfonts/winfnt.c (FNT_Size_Request, FNT_Size_Select): Do size
1546         matching for requests of type NOMINAL and REAL_DIM.
1548         * src/winfonts/winfnt.c (FNT_Face_Init): Print trace message when
1549         `pixel_height' is used for nominal height.
1551         * src/base/ftobjs.c (FT_Request_Size): Call `FT_Match_Size' if the
1552         face is bitmap only and driver doesn't provide `request_size'.  This
1553         is added merely for completion as no driver satisfies the conditions.
1555 2006-01-13  Chia-I Wu  <b90201047@ntu.edu.tw>
1557         Introduce new size selection interface.
1559         * include/freetype/internal/ftdriver.h (struct FT_Driver_ClassRec):
1560         Replace `set_char_sizes' and `set_pixel_sizes' by `request_size' and
1561         `select_size'.
1563         * include/freetype/freetype.h (FT_Select_Size, FT_Size_Request_Type,
1564         FT_Size_Request, FT_Request_Size, FT_Select_Size), src/base/ftobjs.c
1565         (FT_Select_Size, FT_Request_Size): API additions to export the new
1566         size selection interface.
1568         * src/base/ftobjs.c (FT_Set_Char_Size, FT_Set_Pixel_Sizes): Use
1569         `FT_Request_Size'.
1571         * include/freetype/internal/ftobjs.h (FT_Match_Size),
1572         src/base/ftobjs.c (FT_Match_Size): New function to match a size
1573         request against `available_sizes'.  Drivers supporting bitmap strikes
1574         can use this function to implement `request_size'.
1576         * src/bdf/bdfdrivr.c, src/cid/cidobjs.c, src/cid/cidobjs.h,
1577         src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/type1/t1driver.c,
1578         src/type1/t1objs.c, src/type1/t1objs.h, src/type42/t42drivr.c,
1579         src/type42/t42objs.c, src/type42/t42objs.h, src/winfonts/winfnt.c:
1580         Update to new size selection interface.
1582         * src/cff/cffdrivr.c, src/cff/cffgload.c, src/cff/cffobjs.c,
1583         src/cff/cffobjs.h, src/truetype/ttdriver.c, src/truetype/ttgload.c,
1584         src/truetype/ttobjs.c, src/truetype/ttobjs.h: Update to new size
1585         selection interface.
1586         Make `strike_index' FT_ULong and always defined.
1587         Use `load_strike_metrics' provided by SFNT interface.
1589 2006-01-13  Chia-I Wu  <b90201047@ntu.edu.tw>
1591         * include/freetype/internal/sfnt.h (SFNT_Interface): New method
1592         `load_strike_metrics' used to load the strike's metrics.
1594         * src/sfnt/sfdriver.c, src/sfnt/ttsbit.c, src/sfnt/ttsbit.h,
1595         src/sfnt/ttsbit0.c: New function `tt_face_load_strike_metrics'.
1597         * src/pfr/pfrobjs.c (pfr_face_init): Set FT_Bitmap_Size correctly.
1599         * src/winfonts/winfnt.c (FNT_Face_Init): Use `nominal_point_size' for
1600         nominal size unless it is obviously incorrect.
1602         * include/freetype/freetype.h (FT_Bitmap_Size): Update the comments on
1603         FNT driver.
1605 2006-01-12  Werner Lemberg  <wl@gnu.org>
1607         Prepare use of pscmap service within CFF module.
1609         * include/freetype/internal/services/svpscmap.h: Include
1610         FT_INTERNAL_OBJECTS_H.
1611         (PS_Unicode_Index_Func): Removed.  Unused.
1612         (PS_Macintosh_Name_Func): Renamed to...
1613         (PS_Macintosh_NameFunc): This.
1614         Update all callers.
1615         (PS_Adobe_Std_Strings_Func): Renamed to...
1616         (PS_Adobe_Std_StringsFunc): This.
1617         Update all callers.
1618         (PS_UnicodesRec): This is the former `PS_Unicodes' structure.
1619         Add `cmap' member.
1620         Update all callers.
1621         (PS_Unicodes): This is now a typedef'd pointer to PS_UnicodesRec.
1622         Update all callers.
1623         (PS_Glyph_NameFunc): New typedef.
1624         (PS_Unicodes_InitFunc): Change arguments to expect a function
1625         and generic data pointer which returns a glyph name from a given
1626         index.
1628         * src/psnames/psmodule.c (ps_unicodes_init, ps_unicodes_char_index,
1629         ps_unicodes_char_next, pscmaps_interface): Updated.
1631         * include/freetype/internal/t1types.h (T1_FaceRec): Updated.
1633         * src/psaux/t1cmap.h (T1_CmapStdRec): Updated.
1634         (T1_CmapUnicode, T1_CmapUnicodeRec): Removed.
1636         * src/psaux/t1cmap.c (t1_get_glyph_name): New callback function.
1637         (t1_cmap_unicode_init, t1_cmap_unicode_done,
1638         t1_cmap_unicode_char_index, t1_cmap_unicode_char_next,
1639         t1_cmap_unicode_class_rec): Updated.
1641         * src/type42/t42types.h (T42_FaceRec): Updated.
1643 2006-01-11  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1645         * include/freetype/ftmac.h: Add declaration of new functions
1646         FT_New_Face_From_FSRef and FT_GetFile_From_Mac_ATS_Name that
1647         were introduced by the jumbo patch on  2006-01-11.
1649 2006-01-11  Werner Lemberg  <wl@gnu.org>
1651         Fix Savannah bug #15056 and use pscmap service in psaux module.
1653         * include/freetype/internal/services/svpscmap.h (PS_UniMap): Use
1654         FT_UInt32 for `glyph_index'.
1655         (PS_Unicodes_InitFunc): Use FT_String for `glyph_names'.
1656         (PS_Unicodes_CharIndexFunc): Use FT_UInt32 for `unicode'.
1657         (PS_Unicodes_CharNextFunc): Make second argument a pointer to
1658         FT_UInt32.
1660         * src/psnames/psmodule.c (VARIANT_BIT, BASE_GLYPH): New macros.
1661         (ps_unicode_value): Set VARIANT_BIT in return value if glyph is a
1662         variant glyph (this is, it has non-leading `.' in its name).
1663         (compare_uni_maps): Sort base glyphs before variant glyphs.
1664         (ps_unicodes_init): Use FT_String for `glyph_names' argument.
1665         Reallocate only if number of used entries is much smaller.
1666         Updated to handle variant glyphs.
1667         (ps_unicodes_char_index, ps_unicodes_char_next): Prefer base glyphs
1668         over variant glyphs.
1669         Simplify code.
1671         * src/psaux/t1cmap.c (t1_cmap_uni_pair_compare): Removed.
1672         (t1_cmap_unicode_init, t1_cmap_unicode_char_index,
1673         t1_cmap_unicode_char_next): Use pscmap service.
1674         (t1_cmap_unicode_done): Updated.
1676         * src/psaux/t1cmap.h (T1_CMapUniPair): Removed.
1677         (T1_CMapUnicode): Use PS_Unicodes structure.
1679 2006-01-11  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1681         Jumbo patch to fix `deprecated' warning of cross-build for Tiger on
1682         Intel, as reported by Sean McBride <sean@rogue-research.com> on
1683         2005-08-24.
1685         * src/base/ftmac.c: Heavy change to build without deprecated Carbon
1686         functions on Tiger.
1688         * builds/unix/configure.ac: Add options and autochecks for Carbon
1689         functions availabilities, for MacOS X.
1691         * builds/mac/ascii2mpw.py: Add converter for character `\305'.
1692         * builds/mac/FreeType.m68k_{far|cfm}.make.txt: Add conditional
1693         macros to avoid unavailable functions.
1694         ftmac.c must be compiled without `-strict ansi', because it disables
1695         cpp macro to use ToolBox system call.
1697         * builds/mac/FreeType.ppc_{classic|carbon}.make.txt: Add conditional
1698         macros to avoid unavailable functions.
1700         * builds/mac/README: Detailed notes on function availabilities.
1702         * docs/CHANGES: Notes about (possible) incompatibilities.
1704 2006-01-08  Werner Lemberg  <wl@gnu.org>
1706         * docs/CHANGES: Updated.
1708 2006-01-08  Huw D M Davies  <h.davies1@physics.ox.ac.uk>
1710         * include/freetype/ftmodapi.h (FT_Module_Get_Flags): New
1711         declaration.
1713         * src/base/ftobjs.c (FT_Module_Get_Flags): New function.
1715 2006-01-07  Werner Lemberg  <wl@gnu.org>
1717         * src/pcf/pcfread.c (pcf_get_bitmaps): Remove unused variable
1718         `bitmaps'.  Reported by Yu Lei <yulei0@gmail.com>.
1720         * src/base/ftutil.c (ft_highpow2): s/FT_BASE/FT_BASE_DEF/.
1721         Reported by Niels Boldt <nielsboldt@gmail.com>.
1723 2005-12-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1725         * src/sfnt/sfnt/ttbdf.c: Add newline '\n' to the end of file, for
1726         MPW compiler.
1728 2005-12-23  David Turner  <david@freetype.org>
1730         * Jamfile (RefDoc), docs/reference/README: Fix it so that `jam
1731         refdoc' works correctly to generate the API reference in
1732         `docs/reference'.
1734         * src/tools/docmaker/tohtml.py (print_html_field,
1735         print_html_field_list): Update to output nicer fields lists in the
1736         API reference.
1738         * src/base/ftobjs.c (FT_Load_Glyph): FT_LOAD_TARGET_LIGHT now
1739         forces auto-hinting.
1741         * freetype/freetype.h: Updating the documentation for
1742         FT_LOAD_TARGET_XXX and FT_Render_Mode values.
1744 2005-12-23  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1746         * src/base/ftmac.c (FT_New_Face_From_Suitcase): Count scalable faces
1747         in supported formats (sfnt, LWFN) only, and ignore bitmap faces in
1748         unsupported formats (fbit, NFNT).  The number of available faces are
1749         passed via face->num_faces.  If bitmap faces are embedded in sfnt
1750         resource, face->num_fixed_size is correctly set.  In public API,
1751         FT_New_Face() and FT_New_Face_From_FSSpec() count the faces as
1752         FT_GetFile_From_Mac_Name(), which ignores NFNT resources.
1754         * doc/CHANGES: Mention the changes.
1756 2005-12-17  Chia-I Wu  <b90201047@ntu.edu.tw>
1758         * src/truetype/ttinterp.c (Update_Max): Set current size of buffer
1759         correctly (so that memory debug system won't panic).
1761 2005-12-16  Chia-I Wu  <b90201047@ntu.edu.tw>
1763         * include/freetype/internal/ftobjs.h (ft_glyphslot_grid_fit_metrics),
1764         src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Removed.
1766         * src/base/ftobjs.c (ft_recompute_scaled_metrics): Do not round.
1768         * src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
1769         (cid_slot_load_glyph), src/truetype/ttgload.c (compute_glyph_metrics),
1770         src/type1/t1gload.c (T1_Load_Glyph): Do not round glyph metrics.
1772         * doc/CHANGES: Mention the changes.
1774 2005-12-13  David Turner  <david@freetype.org>
1776         Change the implementation of the LIGHT hinting mode to completely
1777         disable horizontal hinting.  This is an experimental effort to
1778         integrate David Chester's latest patch without affecting the other
1779         hinting modes as well.
1781         Note that this doesn't force auto-hinting for all fonts, however.
1783         * src/autofit/afhints.c (af_glyph_hints_reload): Don't set
1784         scaler_fiags here but...
1785         (af_glyph_hints_rescale): Here.
1787         * src/autofit/aflatin.c (af_latin_hints_init): Disable horizontal
1788         hinting for `light' hinting mode.
1791         * Jamfile: Small fix to ensure that ftexport.sym is placed into the
1792         same location as other generated objects (i.e., within the `objs'
1793         directory of the current directory).
1796         Add support for an embedded `BDF ' table within SFNT-based bitmap
1797         font files.  This is used to store atoms & properties from the
1798         original BDF fonts that were used to generate the font file.
1800         The feature is controlled by TT_CONFIG_OPTION_BDF within
1801         `ftoption.h' and is used to implement FT_Get_BDF_Property for these
1802         font files.
1804         At the moment, this is still experimental, the BDF table format
1805         isn't cast into stone yet.
1807         * include/freetype/config/ftoption.h (TT_CONFIG_OPTION_BDF): New
1808         macro.
1810         * include/freetype/config/ftstdlib.h (ft_memchr): New macro.
1812         * include/freetype/internal/tttypes.h (TT_BDFRec, TT_BDF)
1813         [TT_CONFIG_OPTION_BDF]: New structure.
1814         (TT_FaceRec) [TT_CONFIG_OPTION_BDF]: New member `bdf'.
1816         * include/freetype/ttags.h (TTAG_BDF): New macro.
1818         * src/sfnt/Jamfile (_sources): Add ttbdf.
1820         * src/sfnt/rules.mk (SFNT_DRV_SRC): Add ttbdf.c.
1822         * src/sfnt/sfdriver.c [TT_CONFIG_OPTION_BDF]: Include ttbdf.h and
1823         FT_SERVICE_BDF_H.
1824         (sfnt_get_charset_it) [TT_CONFIG_OPTION_BDF]: New function.
1825         (sfnt_service_bdf) [TT_CONFIG_OPTION_BDF]: New service.
1826         (sfnt_services) [TT_CONFIG_OPTION_BDF]: Add sfnt_service_bdf.
1828         * src/sfnt/sfnt.c [TT_CONFIG_OPTION_BDF]: Include ttbdf.c.
1830         * src/sfnt/sfobjs.c [TT_CONFIG_OPTION_BDF]: Include ttbdf.h.
1831         (sfnt_done_face) [TT_CONFIG_OPTION_BDF]: Call
1832         tt_face_free_bdf_props.
1834         * src/sfnt/ttbdf.h, src/sfnt/ttbdf.c: New files.
1836 2005-12-07  Werner Lemberg  <wl@gnu.org>
1838         * src/sfnt/sfobjc.c (sfnt_init_face): Move tag check to...
1839         * src/sfnt/ttload.c (sfnt_init): Here, before handling TTCs.
1841 2005-12-06  Chia-I Wu  <b90201047@ntu.edu.tw>
1843         * src/truetype/ttobjs.c (tt_size_init): size->ttmetrics.valid is
1844         initialized twice.
1845         size->strike_index is not initialized.
1847 2005-12-02  Taek Kwan(TK) Lee  <taeklee@gmail.com>
1849         * src/type42/t42objs.c (T42_Face_Init): Replace call to
1850         FT_New_Memory_Face with call to FT_Open_Face to pass `params'.
1852 2005-11-30  Werner Lemberg  <wl@gnu.org>
1854         * docs/CHANGES: Document ftdump's `-v' option.
1855         Document latest charmap code changes.
1857         * src/sfnt/ttcmap.c, src/sfnt/ttcmap.h:
1858         s/TT_CMAP_FLAG_OVERLAPPED/TT_CMAP_FLAG_OVERLAPPING/.
1860 2005-11-30  Chia-I Wu  <b90201047@ntu.edu.tw>
1862         * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary,
1863         tt_cmap12_char_map_binary): Fix compiler warnings.
1865 2005-11-29  Chia-I Wu  <b90201047@ntu.edu.tw>
1867         Major update to distinguish between unsorted and overlapping
1868         segments for cmap format 4.  For overlapping but sorted segments,
1869         which is previously considered unsorted, we still use binary search.
1871         * src/sfnt/ttcmap.h (TT_CMapRec_): Replace `unsorted' by `flags'.
1872         (TT_CMAP_FLAG_UNSORTED, TT_CMAP_FLAG_OVERLAPPED): New macros.
1874         * src/sfnt/ttcmap.c (OPT_CMAP4): Removed as it is always defined.
1875         (TT_CMap4Rec_): Remove `old_charcode' and `table_length'.
1876         (tt_cmap4_reset): Removed.
1877         (tt_cmap4_init): Updated accordingly.
1878         (tt_cmap4_next): Updated accordingly.
1879         Take care of overlapping segments.
1880         (tt_cmap4_validate): Make sure the subtable is large enough.
1881         Do not check glyph_ids because some fonts set the length wrongly.
1882         Also, if all segments have offset 0, glyph_ids is always invalid.
1883         It does not cause any problem so far only because the check misses
1884         equality.
1885         Distinguish between unsorted and overlapping segments.
1886         (tt_cmap4_char_map_linear, tt_cmap4_char_map_binary): New functions
1887         to do `charcode => glyph index' by linear/binary search.
1888         (tt_cmap4_char_index, tt_cmap4_char_next): Use
1889         tt_cmap4_char_map_linear and tt_cmap4_char_map_binary.
1890         (tt_face_build_cmaps): Treat the return value of validator as flags
1891         for cmap.
1893 2005-11-29  Chia-I Wu  <b90201047@ntu.edu.tw>
1895         * src/sfnt/ttcmap.c (TT_CMap12Rec_, tt_cmap12_init, tt_cmap12_next):
1896         New structures and functions for fast `next char'.
1897         (tt_cmap12_char_map_binary): New function to do `charcode => glyph
1898         index' by binary search.
1899         (tt_cmap12_char_index, tt_cmap12_char_next): Use
1900         tt_cmap12_char_map_binary.
1901         (tt_face_build_cmaps): Check table and offset correctly (equality is
1902         missing).
1904 2005-11-15  Detlef Würkner  <TetiSoft@apg.lahn.de>
1906         * builds/amiga/smakefile: Adjusted the compiler options
1907         to the current sources, now really builds the gxvalid, gzip
1908         and psnames modules.
1910         * builds/amiga/src/base/ftsystem.c: The assumed Seek() position
1911         in the file cache was off by one byte which could cause false
1912         errors in font files.
1914 2005-11-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1916         * builds/mac/FreeType.m68k_far.make.txt,
1917         builds/mac/FreeType.m68k_cfm.make.txt,
1918         builds/mac/FreeType.ppc_classic.make.txt,
1919         builds/mac/FreeType.ppc_carbon.make.txt:
1920         Updated for MPW to build all available modules.
1922 2005-11-21  HÃ¥vard Wall  <haavardw@ifi.uio.no>
1924         * src/bdf/bdfdrivr.c (bdf_interpret_style, BDF_Face_Done): Fix small
1925         memory leak.
1927 2005-11-21  Werner Lemberg  <wl@gnu.org>
1929         * src/sfnt/ttload.c (sfnt_init): Add tracing message.
1931 2005-11-21  Chia-I Wu  <b90201047@ntu.edu.tw>
1933         * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Image_offset was
1934         added twice to image_start if image_format was 2 or 5.
1936 2005-11-21  Chia-I Wu  <b90201047@ntu.edu.tw>
1938         * src/sfnt/sfobjs.c (sfnt_init_face): Check that format_tag is known
1939         before loading the table directory.
1941         * src/sfnt/ttload.c (tt_face_load_sfnt_header,
1942         tt_face_load_directory): Delay sfnt_dir_check from
1943         tt_face_load_sfnt_header to tt_face_load_directory.
1945 2005-11-20  Chia-I Wu  <b90201047@ntu.edu.tw>
1947         * src/sfnt/ttload.c (sfnt_dir_check): Clean up and return correct
1948         error code.
1949         (sfnt_init): New function to fill in face->ttc_header.  A non-TTC font
1950         is synthesized into a TTC font with one offset table.
1951         (tt_face_load_sfnt_header): Use sfnt_init.
1952         Fix an invalid access if the font is TTC and face_index is -1.
1954 2005-11-18  Werner Lemberg  <wl@gnu.org>
1956         * src/sfnt/ttload.c (tt_face_load_metrics): Ignore excess number
1957         of metrics instead of aborting.  Patch suggested by Derek Noonburg.
1959         * src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
1960         (cid_slot_load_glyph), src/type1/t1gload.c (T1_Load_Glyph): Scale
1961         the glyph properly if no hinter is available.
1963         * docs/CHANGES: Mention scaling bug.
1965 2005-11-18  susuzki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1967         * include/freetype/ftgxval.h, src/base/ftgxval.c
1968         (FT_TrueTypeGX_Free, FT_ClassicKern_Free): New functions to free
1969         buffers allocated by gxvalid module.
1970         * include/freetype/ftotval.h, src/base/ftotval.c
1971         (FT_OpenType_Free): New function to free buffer allocated by
1972         otvalid module.
1974 2005-11-18  Chia-I Wu  <b90201047@ntu.edu.tw>
1976         * builds/unix/ftsystem.c (FT_Stream_Open, FT_New_Memory,
1977         FT_Done_Memory), builds/vms/ftsystem.c (FT_Stream_Open, FT_New_Memory,
1978         FT_Done_Memory), builds/win32/ftdebug.c (FT_Message, FT_Panic):
1979         s/FT_EXPORT/FT_BASE/.
1981 2005-11-17  Detlef Würkner  <TetiSoft@apg.lahn.de>
1983         * builds/amiga/src/base/ftdebug.c (FT_Trace_Get_Count,
1984         FT_Trace_Get_Name, FT_Message, FT_Panic),
1985         builds/amiga/src/base/ftsystem.c (FT_New_Memory, FT_Done_Memory,
1986         FT_Stream_Open): s/FT_EXPORT/FT_BASE/.
1988 2005-11-17  Detlef Würkner  <TetiSoft@apg.lahn.de>
1990         * builds/amiga/makefile, builds/amiga/makefile.os4,
1991         builds/amiga/smakefile,
1992         builds/amiga/include/freetype/config/ftmodule.h: Updated the Amiga
1993         build files (added support for the gxvalid module).
1995 2005-11-17  Werner Lemberg  <wl@gnu.org>
1997         Add vertical metrics support to OpenType CFF outlines.  Based on a
1998         patch from Mike Moening <MikeM@RetekSolutions.com>.
2000         * src/cff/cffgload.c (cff_face_get_vertical_metrics): New function.
2001         (cff_slot_load): Use cff_face_get_vertical_metrics.
2003         * docs/CHANGES: Updated.
2005 2005-11-17  Chia-I Wu  <b90201047@ntu.edu.tw>
2007         * src/base/ftcalc.c (FT_MulTo64): Commented out.
2009         * include/freetype/internal/ftcalc.h (FT_SqrtFixed),
2010         src/base/ftcalc.c (FT_SqrtFixed),
2011         include/freetype/internal/ftdebug.h (FT_Trace_Get_Count,
2012         FT_Trace_Get_Name, FT_Message, FT_Panic), src/base/ftdebug.c
2013         (FT_Trace_Get_Count, FT_Trace_Get_Name, FT_Message, FT_Panic),
2014         include/freetype/internal/ftobjs.h (FT_New_Memory, FT_Done_Memory),
2015         include/freetype/internal/ftstream.h (FT_Stream_Open),
2016         src/base/ftsystem.c (FT_New_Memory, FT_Done_Memory, FT_Stream_Open):
2017         s/FT_EXPORT/FT_BASE/.
2019         * builds/exports.mk: Manually add TT_New_Context to EXPORTS_LIST
2020         too.
2022 2005-11-15  David Turner  <david@freetype.org>
2024         * src/base/fttrigon.c (ft_trig_prenorm): Fix a bug that created
2025         invalid computations, resulting in very weird bugs in TrueType
2026         bytecode hinted fonts.
2028         * src/truetype/ttinterp.c (FT_UNUSED_EXEC): Don't perform a
2029         structure copy each time.
2031 2005-11-11  Werner Lemberg  <wl@gnu.org>
2033         * src/cache/ftccache.c (FTC_Cache_Clear), src/cache/ftcmanag.c
2034         (FTC_Manager_Check): Remove FT_EXPORT_DEF tag.
2036         * src/base/ftcalc.c (FT_Add64): Remove FT_EXPORT_DEF tag.
2037         (FT_Div64by32, FT_Sqrt32): Commented out.  Unused.
2039         * include/freetype/internal/ftcalc.h (SQRT_32): Removed.  Unused.
2040         (FT_Sqrt32): Commented out.  Unused.
2042         * include/freetype/cache/ftccache.h:
2043         s/ftc_node_destroy/FTC_Node_Destroy/.
2045         * src/cache/ftccback.h (ftc_node_destroy): New declaration.
2047         * src/cache/ftccache.c (ftc_node_destroy): Use FT_LOCAL_DEF tag.
2048         (FTC_Node_Destroy): New exported wrapper function for
2049         ftc_node_destroy.
2051         * src/cache/ftcmanag.c: Include ftccback.c.
2053 2005-11-10  Werner Lemberg  <wl@gnu.org>
2055         * src/autofit/afangles.c, src/autofit/aftypes.h (af_angle_diff):
2056         Comment out.  Unused.
2058         * builds/exports.mk ($(EXPORTS_LIST)): Add TT_RunIns.
2060 2005-11-10  Christian Biesinger  <cbiesinger@web.de>
2062         * builds/beos/beos.mk: Call beos-def.mk before anything else to
2063         define the separator.
2065         * builds/unix/unix-cc.in (LINK_LIBRARY): Add `-no-undefined' flag.
2067 2005-11-07  Werner Lemberg  <wl@gnu.org>
2069         * src/type1/t1afm.c (T1_Read_PFM): Zero offset means `no kerning
2070         table available'.  From Sergey Tolstov <stolstov@esri.com>.
2072 2005-11-03  Ville Syrjälä  <syrjala@sci.fi>
2074         * src/base/ftobjs.c (FT_Open_Face): Avoid possible memory leak.
2076 2005-11-02  Werner Lemberg  <wl@gnu.org>
2078         Make compiling instructions in docs/CUSTOMIZE work again.
2080         * builds/unix/unix-cc.in (CPPFLAGS): New variable.
2081         (CFLAGS): Don't include @CPPFLAGS@.
2082         * builds/freetype.mk (FT_CFLAGS): Add CPPFLAGS.
2084 2005-10-28  David Turner  <david@freetype.org>
2086         Update build system to support the generation of a list of exported
2087         symbols or Windows .DEF files by parsing the public headers with the
2088         `apinames' tool located in src/tools/apinames.c.
2090         Only tested on Unix at the moment.  On Windows, the .DEF file is
2091         generated but isn't used yet to generate a DLL.
2093         * builds/exports.mk: New file.
2095         * builds/freetype.mk: Include exports.mk.
2096         (dll): New target.
2097         (clean_project_dos): Fix rule.
2099         * builds/compiler/visualc.mk (TE), builds/dos/dos-def.mk (E),
2100         builds/os2/os2-def.mk (E), builds/win32/win32-def.mk (E): New
2101         variables for controlling executable extensions.
2103         * builds/unix/unix-cc.in (EXPORTS_LIST, CCexe),
2104         builds/win32/w32-bcc.mk, builds/win32/w32-gcc.mk,
2105         builds/win32/w32-icc.mk, builds/win32/w32-icc.mk,
2106         builds/win32/w32-mingw32.mk, builds/win32/w32-vcc,
2107         builds/win32/w32-wat.mk (EXPORTS_LIST, EXPORT_OPTIONS,
2108         APINAMES_OPTIONS): New targets for controlling the `apinames' tool.
2110         * Jamfile (GenExportSymbols): Updated.
2113         * src/pfr/pfrtypes.h, src/pfr/pfrload.c, src/pfr/pfrobjs.c
2114         [!FT_OPTIMIZE_MEMORY]: Fold memory optimization code into
2115         FT_OPTIMIZE_MEMORY chunks for better maintainability and simplicity.
2118         * src/base/fttrigon.c (ft_trig_prenorm), src/base/ftcalc.c
2119         (FT_MulFix): Performance optimizations.
2122         * include/freetype/internal/ftgloadr.h (FT_GLYPHLOADER_CHECK_P,
2123         FT_GLYPHLOADER_CHECK_C, FT_GLYPHLOADER_CHECK_POINTS): New macros for
2124         checking points and contours.  Update callers to use
2125         FT_GLYPHLOADER_CHECK_POINTS instead of FT_GlyphLoader_CheckPoints
2126         at profile-detected hot-spots.
2128         * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Set `adjust'
2129         to 0 to not call `AdjustPoints' every time.
2132         * src/autofit/aftypes.h (AF_ANGLE_DIFF): New macro to inline
2133         FT_Angle_Diff.
2135         * src/autofit/afhints.c (af_direction_compute): Re-implement.
2136         (af_glyph_hints_compute_inflections, af_glyph_hints_reload): Use
2137         AF_ANGLE_DIFF to speed up the detection of inflexions.
2140         * src/tools/apinames.c: Include <string.h>.
2141         (OutputFormat): New enumeration.
2142         (names_dump): Add two parameters to control output format and DLL
2143         name.
2144         (names_dump_windef): Removed.  Code folded into `names_dump'.
2145         (read_header_file): Use isalnum, not isalpha.  Otherwise function
2146         names with digits aren't read correctly.
2147         (usage): Updated.
2148         (main): New option `-o' to control output file name.
2149         New option `-d' to indicate DLL file name.
2150         Extend `-w' flag to handle Borland and Watcom compilers and linkers.
2152 2005-10-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2154         * builds/mac/ftlib.prj, builds/mac/freetype.mak: Removed.
2155         ftlib.prj is unmaintained and incompatible with current tree.
2156         freetype.mak is unrecoverably broken.
2158         * builds/mac/ftlib.prj.xml: Added.
2159         Generated by Metrowerks CodeWarrior 9.0.
2161         * builds/mac/FreeType.m68k_far.make.txt,
2162         builds/mac/FreeType.m68k_cfm.make.txt,
2163         builds/mac/FreeType.ppc_classic.make.txt,
2164         builds/mac/FreeType.ppc_carbon.make.txt: Added.
2165         Skeleton files of MPW makefiles.
2167         * builds/mac/ascii2mpw.py: Added.
2168         Python script to make MPW makefile from skeleton.
2170         * builds/mac/README: Updated.
2171         Almost rewritten to use new files.
2173 2005-10-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2175         * src/base/ftmac.c: Fix invalid casts from NULL to integer typed
2176         variables.  Advised by David Turner, Masatake YAMATO, Sean McBride,
2177         and George Williams.
2179 2005-10-27  Werner Lemberg  <wl@gnu.org>
2181         * include/freetype/ftsysmem.h, include/freetype/ftsysio.h: Removed.
2182         Obsolete.
2184 2005-10-25  Werner Lemberg  <wl@gnu.org>
2186         * src/sfnt/sfdriver.c (sfnt_interface): Move out
2187         `tt_face_get_kerning' from a #ifdef clause.  Reported by Tony J.
2188         Ibbs <tibs@sj.co.uk>.
2190 2005-10-23  Werner Lemberg  <wl@gnu.org>
2192         * src/base/ftdbgmem.c (ft_mem_debug_realloc): Make it compile with
2193         C++.
2195 2005-10-21  David Turner  <david@freetype.org>
2197         * src/base/ftdbgmem.c (ft_mem_table_set, ft_mem_debug_realloc):
2198         Another realloc memory counting bug fix.
2200         * src/tools/Jamfile: Add missing file.
2202         * src/lzw/Jamfile: Fix incorrect source file reference.
2204 2005-10-20  David Turner  <david@freetype.org>
2206         * src/base/ftdbgmem.c (ft_mem_table_set, ft_mem_table_remove,
2207         ft_mem_debug_alloc, ft_mem_debug_free, ft_mem_debug_realloc): Fixes
2208         to better account for memory reallocations.
2210         * src/lzw/ftlzw2.c, src/lzw/ftzopen.h, src/lzw/ftzopen.c,
2211         src/lzw/rules.mk: First version of LZW loader re-implementation.
2212         Apparently, this saves about 330 KB of heap memory when loading
2213         timR24.pcf.Z.
2215 2005-10-20  Chia-I Wu  <b90201047@ntu.edu.tw>
2217         * include/freetype/ftbitmap.h (FT_Bitmap_Copy, FT_Bitmap_Embolden),
2218         src/base/ftbdf.c (FT_Get_BDF_Property), src/cache/ftcmru.c
2219         (FTC_MruList_Reset, FTC_MruList_Done, FTC_MruList_Lookup): Fix
2220         FT_EXPORT/FT_EXPORT_DEF tagging.
2222 2005-10-19  Chia-I Wu  <b90201047@ntu.edu.tw>
2224         * src/truetype/ttgload.c (TT_Load_Glyph): Allow size->ttmetrics to
2225         be invalid when FT_LOAD_NO_SCALE is set.
2227 2005-10-17  David Turner  <david@freetype.org>
2229         * src/base/ftobjs.c (FT_Open_Face): Don't call FT_New_GlyphSlot and
2230         FT_New_Size if we are opening a face with face_index < 0 (which is
2231         only used for testing the format).
2233         * src/gxvalid/gxvmort0.c (gxv_mort_subtable_type0_entry_validate):
2234         Remove compiler warning.
2236 2005-10-16  David Turner  <david@freetype.org>
2238         * src/tools/apinames.c: Add new tool to extract public API function
2239         names from header files.
2241 2005-10-05  Werner Lemberg  <wl@gnu.org>
2243         Add FT_FACE_FLAG_HINTER to indicate that a specific font driver has
2244         a hinting engine of its own.
2246         * include/freetype/freetype.h (FT_FACE_FLAG_HINTER): New macro.
2248         * src/cff/cffobjs.c (cff_face_init), src/cid/cidobjs.c
2249         (cid_face_init), src/truetype/ttobjs.c (tt_face_init)
2250         [TT_CONFIG_OPTION_BYTECODE_INTERPRETER], src/type1/t1objs.c
2251         (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init)
2252         [TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Update face flags.
2254         * docs/CHANGES: Document it.
2256 2005-09-27  Werner Lemberg  <wl@gnu.org>
2258         * builds/unix/freetype2.m4: Add license exception so that the file
2259         can be used in any other autoconf script.
2261 2005-09-26  David Turner  <david@freetype.org>
2263         * src/autofit/aflatin.c (af_latin_compute_stem_width): Fix bad
2264         computation of the `vertical' flag, causing ugly things in LCD mode
2265         and others.
2267 2005-09-23  David Turner  <david@freetype.org>
2269         * src/autofit/aflatin.c (af_latin_hints_init): Fix a bug that
2270         prevented internal hint mode bitflags from being computed correctly.
2272         * src/base/Jamfile: Adding src/base/ftgxval.c.
2274         * src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c,
2275         src/gxvalid/gxvfeat.c, src/gxvalid/gxvjust.c, src/gxvalid/gxvkern.c,
2276         src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c,
2277         src/gxvalid/gxvmort0.c, src/gxvalid/gxvmort1.c,
2278         src/gxvalid/gxvmort2.c, src/gxvalid/gxvmort4.c,
2279         src/gxvalid/gxvmort5.c, src/gxvalid/gxvmorx.c,
2280         src/gxvalid/gxvmorx0.c, src/gxvalid/gxvmorx1.c,
2281         src/gxvalid/gxvmorx2.c, src/gxvalid/gxvmorx5.c,
2282         src/gxvalid/gxvopbd.c, src/gxvalid/gxvprop.c,
2283         src/truetype/ttgload.c: Remove _many_ compiler warnings when
2284         compiling with Visual C++ at maximum level (/W4).
2286         * src/autofit/afangles.c (af_angle_atan): Replaced CORDIC-based
2287         implementation with one using lookup tables.  This simple thing
2288         speeds up glyph loading by 18%, according to ftbench!
2290         * src/sfnt/sfdriver.c (sfnt_get_interface): Don't check for
2291         `get_sfnt' and `load_sfnt' module interfaces.
2293 2005-09-22  Werner Lemberg  <wl@gnu.org>
2295         * docs/CHANGES: Mention SING Glyphlet support.
2297 2005-09-22  David Turner  <david@freetype.org>
2299         * src/base/Jamfile: Disable compilation of ftgxval module
2300         temporarily.
2302 2005-09-19  David Somers  <dsomers@omz13.com>
2304         * src/sfnt/ttload.c (sfnt_dir_check): Modified to allow a
2305         font to have no `head' table if tables `SING' and `META' are
2306         present; this is to support `SING Glyphlet'.
2308         `SING Glyphlet' is an extension to OpenType developed by Adobe
2309         primarily to facilitate adding supplemental glyphs to an OpenType
2310         font (with emphasis on, but not necessarily limited to, gaiji to a
2311         CJK font).  A SING Glyphlet Font is an OpenType font that contains
2312         the outline(s), either in a `glyf' or `CFF' table, for a glyph;
2313         `cmap', `BASE', and `GSUB' tables are present with the same format
2314         and functionaliy as a regular OpenType font; there are no `name',
2315         `head', `OS/2', and `post' tables; there are two new tables, `SING'
2316         which contains details about the glyphlet, and `META' which contains
2317         metadata.
2319         Further information on the SING Glyphlet format can be found at:
2321           http://www.adobe.com/products/indesign/sing_gaiji.html
2323         * include/freetype/ttags.h (TTAG_SING, TTAG_META): New macros for
2324         the OpenType tables `SING' and `META'.  These two tables are used in
2325         SING Glyphlet Format fonts.
2327 2005-09-09  Werner Lemberg  <wl@gnu.org>
2329         * src/sfnt/sfobjs.c (sfnt_load_face): Reactivate code to set
2330         FT_FACE_FLAG_KERNING which has been commented out erroneously.
2332         * docs/CHANGES: Document it.
2334 2005-09-05  Werner Lemberg  <wl@gnu.org>
2336         Fixes for `make multi' and using C++ compiler.
2338         * src/gxvalid/gxvcommn.c (gxv_set_length_by_ushort_offset,
2339         gxv_set_length_by_ulong_offset, gxv_array_getlimits_byte,
2340         gxv_array_getlimits_ushort): Declare with FT_LOCAL_DEF.
2341         (gxv_compare_ranges): Make it static.
2342         (gxv_LookupTable_fmt0_validate, gxv_LookupTable_fmt2_validate,
2343         gxv_LookupTable_fmt4_validate, gxv_LookupTable_fmt6_validate,
2344         gxv_LookupTable_fmt8_validate, gxv_LookupTable_validate): Improve
2345         trace messages.
2346         (gxv_StateArray_validate, gxv_XStateArray_validate): s/class/clazz/.
2347         (GXV_STATETABLE_HEADER_SIZE, GXV_STATEHEADER_SIZE,
2348         GXV_XSTATETABLE_HEADER_SIZE, GXV_XSTATEHEADER_SIZE): Move to
2349         gxvcommn.h.
2351         * src/gxvalid/gxvcommn.h: Add prototypes for
2352         gxv_StateTable_subtable_setup, gxv_XStateTable_subtable_setup,
2353         gxv_XStateTable_validate, gxv_array_getlimits_byte,
2354         gxv_array_getlimits_ushort, gxv_set_length_by_ushort_offset,
2355         gxv_set_length_by_ulong_offset, gxv_odtect_add_range,
2356         gxv_odtect_validate.
2357         (GXV_STATETABLE_HEADER_SIZE, GXV_STATEHEADER_SIZE,
2358         GXV_XSTATETABLE_HEADER_SIZE, GXV_XSTATEHEADER_SIZE): Moved from
2359         gxvcommn.c.
2361         * src/gxvalid/gxvbsln.c (gxv_bsln_LookupValue_validate,
2362         gxv_bsln_parts_fmt1_validate): Improve trace messages.
2364         * src/gxvalid/gxvfeat.c: Split off predefined registry stuff to...
2365         * src/gxvalid/gxvfeat.h: New file.
2367         * src/gxvalid/gxvjust.c (gxv_just_wdc_entry_validate): Improve trace
2368         message.
2370         * src/gxvalid/gxvkern.c (GXV_kern_Dialect): Add KERN_DIALECT_UNKNOWN.
2371         (gxv_kern_subtable_fmt1_valueTable_load,
2372         gxv_kern_subtable_fmt1_subtable_setup,
2373         gxv_kern_subtable_fmt1_entry_validate): Fix C++ compiler errors.
2374         (gxv_kern_coverage_validate): Use KERN_DIALECT_UNKWOWN.
2375         Improve trace message.
2376         (gxv_kern_validate_generic): Fix C++ compiler error.
2377         Improve trace message.
2378         (gxv_kern_validate_classic): Fix C++ compiler error.
2380         * src/gxvalid/gxvmort0.c (gxv_mort_subtable_type0_validate): Declare
2381         with FT_LOCAL_DEF.
2383         * src/gxvalid/gxvmort1.c
2384         (gxv_mort_subtable_type1_substitutionTable_load,
2385         gxv_mort_subtable_type1_subtable_setup): Fix C++ compiler errors.
2386         (gxv_mort_subtable_type1_substTable_validate): Improve trace
2387         message.
2388         (gxv_mort_subtable_type1_validate): Declare with FT_LOCAL_DEF.
2390         * src/gxvalid/gxvmort2.c (gxv_mort_subtable_type2_opttable_load,
2391         gxv_mort_subtable_type2_subtable_setup,
2392         gxv_mort_subtable_type2_ligActionOffset_validate,
2393         gxv_mort_subtable_type2_ligatureTable_validate): Fix C++ compiler
2394         errors.
2395         (gxv_mort_subtable_type2_validate): Declare with FT_LOCAL_DEF.
2397         * src/gxvalid/gxvmort4.c (gxv_mort_subtable_type4_validate): Declare
2398         with FT_LOCAL_DEF.
2400         * src/gxvalid/gxvmort5.c (gxv_mort_subtable_type5_subtable_setup,
2401         gxv_mort_subtable_type5_InsertList_validate): Fix C++ compiler
2402         errors.
2403         (gxv_mort_subtable_type5_validate): Declare with FT_LOCAL_DEF.
2405         * src/gxvalid/gxvmort.c: Include gxvfeat.h.
2406         (gxv_mort_featurearray_validate, gxv_mort_coverage_validate):
2407         Declare with FT_LOCAL_DEF.
2408         (gxv_mort_subtables_validate, gxv_mort_validate): Improve trace
2409         messages.
2411         * src/gxvalid/gxvmort.h (gxv_mort_feature_validate): Remove.
2413         * src/gxvalid/gxvmorx0.c (gxv_morx_subtable_type0_validate): Declare
2414         with FT_LOCAL_DEF.
2416         * src/gxvalid/gxvmorx1.c
2417         (gxv_morx_subtable_type1_substitutionTable_load,
2418         gxv_morx_subtable_type1_subtable_setup,
2419         gxv_morx_subtable_type1_entry_validate,
2420         gxv_morx_subtable_type1_substitutionTable_validate): Fix C++
2421         compiler errors.
2422         (gxv_morx_subtable_type1_validate): Declare with FT_LOCAL_DEF.
2424         * src/gxvalid/gxvmorx2.c (gxv_morx_subtable_type2_opttable_load,
2425         gxv_morx_subtable_type2_subtable_setup,
2426         gxv_morx_subtable_type2_ligActionIndex_validate,
2427         gxv_morx_subtable_type2_ligatureTable_validate): Fix C++ compiler
2428         errors.
2429         (gxv_morx_subtable_type2_validate): Declare with FT_LOCAL_DEF.
2430         Fix typo.
2432         * src/gxvalid/gxvmorx4.c (gxv_morx_subtable_type4_validate): Declare
2433         with FT_LOCAL_DEF.
2435         * src/gxvalid/gxvmorx5.c (gxv_morx_subtable_type5_insertionGlyph_load,
2436         gxv_morx_subtable_type5_subtable_setup): Fix C++ compiler error.
2437         (gxv_morx_subtable_type5_validate): Declare with FT_LOCAL_DEF.
2439         * src/gxvalid/gxvmorx.c (gxv_morx_subtables_validate,
2440         gxv_morx_validate): Improve trace message.
2442         * src/gxvalid/gxvopbd.c (gxv_opbd_LookupFmt4_transit): Fix compiler
2443         warnings.
2444         (gxv_opbd_validate): Improve trace message.
2446         * src/gxvalid/gxvprop.c: Decorate constants with `U' and `L' where
2447         appropriate.
2448         (gxv_prop_zero_advance_validate, gxv_prop_validate): Improve trace
2449         message.
2451         * src/gxvalid/gxvtrak.c (gxv_trak_trackTable_validate): Remove unused
2452         parameter.  Update all callers.
2453         (gxv_trak_validate): Improve trace message.
2455         * rules.mk (GXV_DRV_H): Add gxvfeat.h.
2457 2005-09-01  Werner Lemberg  <wl@gnu.org>
2459         * src/gxvalid/gxvbsln.c (GXV_BSLN_VALUE_EMPTY): Add `U'.
2461         * src/gxvalid/gxmort1.c (GXV_MORT_SUBTABLE_TYPE1_HEADER_SIZE),
2462         src/gxvalid/gxmort2.c (GXV_MORT_SUBTABLE_TYPE2_HEADER_SIZE): Fix
2463         typo.
2465         * src/gxvalid/gxvmorx0.c, src/gxvalid/gxvmorx1.c,
2466         src/gxvalid/gxvmorx2.c, src/gxvalid/gxvmorx4.c,
2467         src/gxvalid/gxvmorx5.c, src/gxvalid/gxvmort.c: Improve trace
2468         messages.
2469         Decorate constants with `U' and `L' where appropriate.
2470         Fix compiler warnings.
2472 2005-08-31  Werner Lemberg  <wl@gnu.org>
2474         * src/truetype/ttgload.c (load_truetype_glyph): Fix typo.
2476         * src/gxvalid/gxvbsln.c (gxv_bsln_validate): Fix trace message.
2478         * src/gxvalid/gxvcommn.c (gxv_odtect_add_range): Use `const'.
2480         * src/gxvalid/gxvfeat.c, src/gxvalid/gxvjust.c,
2481         src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmod.c,
2482         src/gxvalid/gxvmort0.c, src/gxvalid/gxvmort1.c,
2483         src/gxvalid/gxvmort2.c, src/gxvalid/gxvmort4.c,
2484         src/gxvalid/gxvmort5.c, src/gxvalid/gxvmort.c: Improve trace
2485         messages.
2486         Decorate constants with `U' and `L' where appropriate.
2487         Fix compiler warnings.
2489 2005-08-30  Werner Lemberg  <wl@gnu.org>
2491         * src/gxvalid/README: Revised.
2492         * src/gxvalid/gxvbsln.c: Fix compiler warnings.
2493         * src/gxvalid/gxvcommn.c: Fix compiler warnings.
2494         (gxv_XEntryTable_validate, gxv_compare_ranges): Remove unused
2495         parameter.  Update all callers.
2496         Improve trace messages.
2497         Some formatting.
2499 2005-08-29  Werner Lemberg  <wl@gnu.org>
2501         * include/freetype/freetype.h, include/freetype/ftchapters.h: Add
2502         a preliminary section with some explanations about user allocation.
2504         * src/tools/docmaker/tohtml.py (HtmlFormatter.section_enter):
2505         Don't abort if there are no data types, functions, etc., in a
2506         section.
2507         Print synopsis only if we have a data type, function, etc.
2509         * docs/INSTALL.ANY, docs/INSTALL, docs/INSTALL.UNX, docs/CUSTOMIZE,
2510         docs/INSTALL.GNU, docs/TRUETYPE, docs/DEBUG, docs/UPGRADE.UNX,
2511         docs/VERSION.DLL, docs/formats.txt: Revised, formatted.
2513 2005-08-28  George Williams  <gww@silcom.com>
2515         * src/truetype/ttgload.c [TT_MAX_COMPOSITE_RECURSE]: Removed.
2516         (load_truetype_glyph): Limit recursion depth by `maxComponentDepth'.
2518 2005-08-25  J. Ali Harlow  <ali@avrc.city.ac.uk>
2520         * builds/unix/freetype2.in (CFlags): Add missing directory.
2522 2005-08-24  Werner Lemberg  <wl@gnu.org>
2524         * docs/CHANGES: Mention gxvalid module.
2526 2005-08-23  Werner Lemberg  <wl@gnu.org>
2528         * src/autofit/aflatin.c (af_latin_metrics_scale): Initialize
2529         render mode properly.  Reported by chris@dokein.co.uk.
2531 2005-08-23  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2533         Add gxvalid module to validate TrueType GX/AAT tables.
2535         Modifications on existing files:
2537         * Jamfile: Register gxvalid module.
2538         * src/base/Jamfile: Register ftgxval.c.
2539         * src/base/rule.mk: Register ftgxval.c.
2540         * docs/INSTALL.ANY: Register gxvalid/gxvalid.c.
2542         * include/freetype/config/ftheader.h (FT_GX_VALIDATE_H): New macro
2543         to include gxvalid header file.
2544         * include/freetype/config/ftmodule.h: Register gxv_module_class.
2546         * include/freetype/ftchapters.h: Add comment about gx_validation.
2547         * include/freetype/ftotval.h: Change keyword FT_VALIDATE_XXX
2548         to FT_VALIDATE_OTXXX to co-exist with gxvalid.
2549         * include/freetype/tttags.h: Add tags for TrueType GX/AAT tables.
2551         * include/freetype/internal/ftserv.h (FT_SERVICE_GX_VALIDATE_H): New
2552         macro for gxvalid service.
2553         * include/freetype/internal/fttrace.h: Add trace facilities for
2554         gxvalid.
2556         New files on existing directories:
2558         * include/freetype/internal/services/svgxval.h: Registration of
2559         validation service for TrueType GX/AAT and classic kern table.
2560         * include/freetype/ftgxval.h: Public API definition to use gxvalid.
2561         * src/base/ftgxval.c: Public API of gxvalid.
2563         New files under src/gxvalid/:
2565         * src/gxvalid/Jamfile src/gxvalid/README src/gxvalid/module.mk
2566         src/gxvalid/rules.mk src/gxvalid/gxvalid.c src/gxvalid/gxvalid.h
2567         src/gxvalid/gxvbsln.c src/gxvalid/gxvcommn.c src/gxvalid/gxvcommn.h
2568         src/gxvalid/gxverror.h src/gxvalid/gxvfeat.c src/gxvalid/gxvfgen.c
2569         src/gxvalid/gxvjust.c src/gxvalid/gxvkern.c src/gxvalid/gxvlcar.c
2570         src/gxvalid/gxvmod.c src/gxvalid/gxvmod.h src/gxvalid/gxvmort.c
2571         src/gxvalid/gxvmort.h src/gxvalid/gxvmort0.c src/gxvalid/gxvmort1.c
2572         src/gxvalid/gxvmort2.c src/gxvalid/gxvmort4.c src/gxvalid/gxvmort5.c
2573         src/gxvalid/gxvmorx.c src/gxvalid/gxvmorx.h src/gxvalid/gxvmorx0.c
2574         src/gxvalid/gxvmorx1.c src/gxvalid/gxvmorx2.c src/gxvalid/gxvmorx4.c
2575         src/gxvalid/gxvmorx5.c src/gxvalid/gxvopbd.c src/gxvalid/gxvprop.c
2576         src/gxvalid/gxvtrak.c: New files, gxvalid body.
2578 2005-08-21  Werner Lemberg  <wl@gnu.org>
2580         * src/truetype/ttgload.c (TT_Load_Glyph): Only translate outline
2581         to (0,0) if bit 1 of the `head' table isn't set.  This improves
2582         rendering of buggy fonts.
2584 2005-08-20  Chia I Wu  <b90201047@ntu.edu.tw>
2586         * src/truetype/ttdriver.c (Load_Glyph): Don't check the validity of
2587         ttmetrics here.  TrueType fonts with only sbits always have
2588         ttmetrics.valid set to false.
2590         * src/truetype/ttgload.c (TT_Load_Glyph): Check that ttmetrics is
2591         valid before loading outline glyph.
2593         * src/cache/ftcimage.c (FTC_INode_New): Fix a memory leak.
2595 2005-08-20  Werner Lemberg  <wl@gnu.org>
2597         * src/sfnt/ttload.c (tt_face_load_metrics_header): Ignore missing
2598         `hhea' table for SFNT Mac fonts.  Change based on a patch by
2599         mpsuzuki@hiroshima-u.ac.jp.
2601 2005-08-20  Masatake YAMATO  <jet@gyve.org>
2603         * src/otvalid/otvmod.c (otv_validate): Use ft_validator_run instead
2604         of ft_setjmp.
2606 2005-08-19  Werner Lemberg  <wl@gnu.org>
2608         * src/truetype/ttgload.c (load_truetype_glyph): Fix compiler
2609         warnings.
2611 2005-08-16  Chia I Wu  <b90201047@ntu.edu.tw>
2613         * src/truetype/ttinterp.c, src/truetype/ttinterp.h: Update copyright
2614         messages.
2616 2005-08-16  Chia I Wu  <b90201047@ntu.edu.tw>
2618         * src/truetype/ttinterp.c, src/truetype/ttinterp.h: Remove original
2619         TT_Done_Context and rename TT_Destroy_Context to TT_Done_Context
2620         with slight changes.
2621         Update all callers.
2622         (TT_New_Context): Now takes TT_Driver argument directly.
2623         Update all callers.
2625         * src/truetype/ttobjs.h (tt_slot_init): New function.
2626         * src/truetype/ttobjs.c (tt_driver_init): Initialize execution
2627         context here.
2628         (tt_slot_init): New function to create extra points for the internal
2629         glyph loader.  We then use it directly, instead of face's glyph
2630         loader, when loading glyph.
2632         * src/truetype/ttdriver.c (tt_driver_class): Use tt_slot_init for
2633         glyph slot initialization.
2634         (Load_Glyph): Load flag dependencies are handled here.  Return error
2635         if size is NULL.
2637         * src/truetype/ttgload.c: Heavy cleanup and refactoring.
2638         (org_to_cur): Removed.
2639         (TT_Load_Simple_Glyph): Call FT_GlyphLoader_CheckPoints.
2640         (TT_Hint_Glyph): New function to hint a zone, prepared by caller.
2641         (TT_Process_Simple_Glyph): s/load/loader/.
2642         Use loader->pp values instead of recalculation.
2643         Use TT_Hint_Glyph.
2644         No need to save/restore loader->stream before and after
2645         TT_Vary_Get_Glyph_Deltas now.
2646         (TT_LOADER_SET_PP): New macro to calculate and set the four phantom
2647         points.
2648         (load_truetype_glyph): Never set exec->glyphSize to 0.  This closes
2649         Savannah bug #13107.
2650         Forget glyph frame before calling TT_Process_Simple_Glyph.
2651         Use TT_LOADER_SET_PP.
2652         Scale all four phantom points.
2653         Split off some functionality to ...
2654         (TT_Process_Composite_Component, TT_Process_Composite_Glyph): These
2655         new functions.
2656         (TT_Load_Glyph): Set various fields of `glyph' here, not in
2657         load_truetype_glyph and compute_glyph_metrics.
2658         Split off some functionality to ...
2659         (load_sbit_image, tt_loader_init): These new functions.
2660         (compute_glyph_metrics): Call FT_Outline_Get_CBox.
2662 2005-08-08  Werner Lemberg  <wl@gnu.org>
2664         * docs/INSTALL.ANY: Updated.
2666 2005-08-05  Werner Lemberg  <wl@gnu.org>
2668         * src/cff/cffgload.c (cff_builder_close_contour),
2669         src/psaux/psobjs.c (t1_builder_close_contour): Protect against
2670         zero `outline' pointer.
2672         * src/base/ftgloadr.c (FT_GlyphLoader_Add): Protect against zero
2673         `loader' address.
2675 2005-08-03  Werner Lemberg  <wl@gnu.org>
2677         * src/sfnt/sfdriver.c (sfnt_interface) [FT_OPTIMIZE_MEMORY]:
2678         Reactivate pointers to tt_find_sbit_image and tt_load_sbit_metrics
2679         to make X work again.
2681 2005-08-02  Werner Lemberg  <wl@gnu.org>
2683         * src/otvalid/otvcommn.h: Remove dead code.
2685 2005-07-31  Chia I Wu  <b90201047@ntu.edu.tw>
2687         * src/truetype/ttobjs.h (tt_size_run_fpgm, tt_size_run_prep): New
2688         functions.
2690         * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): New
2691         functions.
2692         (tt_size_init): Add 4, instead of 2, (phantom) points to twilight
2693         zone.
2694         Move code that runs fpgm to tt_size_run_fpgm.
2695         (Reset_Outline_Size): Move code that runs prep to tt_size_run_prep.
2696         (tt_glyphzone_new): Allocate right size of arrays.
2697         Set max_points and max_contours properly.
2699 2005-07-26  Chia I Wu  <b90201047@ntu.edu.tw>
2701         * src/truetype/ttdriver.c (Set_Char_Sizes): Avoid unnecessary
2702         computations and clean up.
2704         * src/truetype/ttobjs.h (struct TT_SizeRec_): Comment on the
2705         internal copy of metrics.
2707 2005-07-12  Werner Lemberg  <wl@gnu.org>
2709         * include/freetype/ftoutln.h (FT_Outline_Embolden): Fix prototype.
2710         Reported by Xerxes.
2712 2005-07-04  Werner Lemberg  <wl@gnu.org>
2714         * include/freetype/internal/ftmemory.h (FT_REALLOC_ARRAY): Fix typo.
2715         Reported by Brett Hutley.
2717 2005-06-30  David Turner  <david@freetype.org>
2719         * src/sfnt/ftbitmap.c, src/truetype/ttgload.c, src/sfnt/ttcmap.c:
2720         Removing compiler warnings (Visual C++ /W4).
2723         Implement a work-around for broken C preprocessor in Visual C++ (it
2724         has been confirmed by the MS developers that it is indeed a bug
2725         which won't be fixed in the very near future).
2727         * Jamfile (FT2_COMPONENTS): Include otvalid (again).
2729         * src/otvalid/otvcommn.h (OTV_NAME, OTV_FUNC): New macros.
2730         (OTV_NEST1, OTV_NEST2, OTV_NEST3): Use OTV_NAME and OTV_FUNC to
2731         avoid argument expansion by argument prescan.
2732         Append `Func' to all affected macros and change them to take just a
2733         single argument.  Example: `AttachList' is renamed to
2734         `AttachListFunc'.
2736         * src/otvalid/otvgdef.c, src/otvalid/otvgpos.c,
2737         src/otvalid/otvgsub.c, src/otvjstf.c: Append `Func' to macros
2738         affected by the changes to OTV_NESTx and modify them to take just a
2739         single argument.
2741 2005-06-20  Chia I Wu  <b90201047@ntu.edu.tw>
2743         * include/freetype/internal/ftobjs.h, src/base/ftobjs.c: New function
2744         ft_glyphslot_grid_fit_metrics.
2746         * src/truetype/ttgload.c (compute_glyph_metrics): Use
2747         ft_glyphslot_grid_fit_metrics.
2749         * src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
2750         (cid_slot_load_glyph), src/type1/t1gload.c (T1_Load_Glyph): Use
2751         ft_glyphslot_grid_fit_metrics.
2752         FT_Outline_Get_CBox is called twice.
2754         * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Modify metrics to more
2755         reasonable values when emboldening outline glyphs.  The theoretic
2756         ones are unrealistic.
2758 2005-06-16  Chia I Wu  <b90201047@ntu.edu.tw>
2760         * src/base/ftoutln.c (FT_Outline_Embolden): Strength should be
2761         halved.
2763         * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Change the default
2764         strength.
2765         Don't increase slot->advance.y.
2767 2005-06-16  Werner Lemberg  <wl@gnu.org>
2769         * include/freetype/freetype.h (FREETYPE_MINOR): Set to 2.
2770         (FREETYPE_PATCH): Set to 0.
2772         * builds/unix/configure.ac (version_info): Set to 9:9:3.
2773         Currently, we are still binary compatible.
2775         * builds/win32/visualc/index.html,
2776         builds/win32/visualc/freetype.dsp,
2777         builds/win32/visualc/freetype.vcproj: s/219/2110/, s/2.1.9/2.1.10/.
2779         * builds/freetype.mk (refdoc), README, Jamfile (RefDoc):
2780         s/2.1.9/2.1.10/.
2782         * docs/CHANGES, docs/VERSION.DLL: Updated.
2784         * ChangeLog: Split off older entries into...
2785         * ChangeLog.20, ChangeLog.21: These new files.
2787 2005-06-15  Kirill Smelkov  <kirr@mns.spb.ru>
2789         The next release will be 2.2.0, so don't worry about source code
2790         backwards compatibility.
2792         * include/freetype/ftimage.h (FT_Outline_MoveToFunc,
2793         FT_Outline_LineToFunc, FT_Outline_ConicToFunc,
2794         FT_Outline_CubicToFunc, FT_SpanFunc, FT_Raster_RenderFunc),
2795         include/freetype/ftrender.h (FT_Glyph_TransformFunc,
2796         FT_Renderer_RenderFunc, FT_Renderer_TransformFunc): Decorate
2797         parameters with `const' where appropriate.
2799 2005-06-15  Chia I Wu  <b90201047@ntu.edu.tw>
2801         * src/sfnt/ttsbit.c (tt_face_load_sbit_image): Compute vertBearingY
2802         to make glyphs centered vertically.
2804         * src/truetype/ttgload.c (compute_glyph_metrics): Compute
2805         vertBearingY to make glyphs centered vertically.
2806         Fix some bugs in vertical metrics:
2808           . loader->pp3.y and loader->pp4.y are in 26.6 format, not in font
2809             units.
2810           . As we use the glyph's cbox to calculate the top bearing now
2811             there is no need to adjust `top'.
2813 2005-06-15  Werner Lemberg  <wl@gnu.org>
2815         * src/otvalid/otvcommn.h (OTV_OPTIONAL_TABLE): Use FT_UShort to be
2816         in sync with OTV_OPTIONAL_OFFSET.  Reported by YAMATO Masatake.
2818 2005-06-13  Werner Lemberg  <wl@gnu.org>
2820         * docs/release: Update.
2822 ----------------------------------------------------------------------------
2824 Copyright 2005, 2006, 2007, 2008 by
2825 David Turner, Robert Wilhelm, and Werner Lemberg.
2827 This file is part of the FreeType project, and may only be used, modified,
2828 and distributed under the terms of the FreeType project license,
2829 LICENSE.TXT.  By continuing to use, modify, or distribute this file you
2830 indicate that you have read the license and understand and accept it
2831 fully.
2834 Local Variables:
2835 version-control: never
2836 coding: utf-8
2837 End: