Bug 1145389 - Add gralloc allocation requet size check. r=nical, a=2.1+
[gecko.git] / modules / freetype2 / ChangeLog
blobea1eb4acbc2f9052a0a4b423b21a2bd5d3639be0
1 2014-03-06  Werner Lemberg  <wl@gnu.org>
3         * Version 2.5.3 released.
4         =========================
7         Tag sources with `VER-2-5-3'.
9         * docs/VERSION.DLL: Update documentation and bump version number to
10         2.5.3.
12         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
13         builds/windows/vc2005/index.html,
14         builds/windows/vc2008/freetype.vcproj,
15         builds/windows/vc2008/index.html,
16         builds/windows/vc2010/freetype.vcxproj,
17         builds/windows/vc2010/index.html,
18         builds/windows/visualc/freetype.dsp,
19         builds/windows/visualc/freetype.vcproj,
20         builds/windows/visualc/index.html,
21         builds/windows/visualce/freetype.dsp,
22         builds/windows/visualce/freetype.vcproj,
23         builds/windows/visualce/index.html,
24         builds/wince/vc2005-ce/freetype.vcproj,
25         builds/wince/vc2005-ce/index.html,
26         builds/wince/vc2008-ce/freetype.vcproj,
27         builds/wince/vc2008-ce/index.html: s/2.5.2/2.5.3/, s/252/253/.
29         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
31         * builds/unix/configure.raw (version_info): Set to 17:2:11.
32         * CMakeLists.txt (VERSION_PATCH): Set to 3.
33         * docs/CHANGES: Updated.
35 2014-03-06  Werner Lemberg  <wl@gnu.org>
37         Fixes for compilation with C++.
39         * src/autofit/hbshim.c (scripts): Change type to `hb_script_t'.
40         (af_get_coverage): Updated.
41         (COVERAGE): Add cast.
43 2014-03-06  Sean McBride  <sean@rogue-research.com>
45         Remove more clang analyzer warnings.
47         * src/bdf/bdflib.c (_bdf_readstream), src/truetype/ttgload.c
48         (TT_Load_Glyph): Remove dead stores.
50 2014-03-05  Werner Lemberg  <wl@gnu.org>
52         * builds/unix/configure.raw: Simplify.
54 2014-03-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
56         Fix a bug in configure in library dependency setting
57         Reported in https://bugs.freedesktop.org/show_bug.cgi?id=75652.
59         * builds/unix/configure.raw: Use `x"${xxx}" != xno' style.
61 2014-03-04  Werner Lemberg  <wl@gnu.org>
63         Minor fix for `make devel'.
65         * builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Don't use
66         pkg-config for bzip2 since not all GNU/Linux distributions have
67         `bzip2.pc' (and the header file `bzlib.h' is located in /usr/include
68         normally).
70 2014-03-04  Sean McBride  <sean@rogue-research.com>
72         Fix several clang static analyzer dead store warnings.
74         * src/autofit/afhints.c (af_glyph_hints_reload,
75         af_glyph_hints_align_weak_points): Remove unnecessary assignments.
77         * src/bdf/bdflib.c (bdf_font_load): Ditto.
79         * src/pshinter/pshalgo.c (psh_glyph_compute_extrema,
80         psh_glyph_interpolate_other_points): Ditto.
82         * src/type1/t1load.c (T1_Set_MM_Blend): Ditto.
84 2014-03-03  Werner Lemberg  <wl@gnu.org>
86         Rewrite library option handling in `configure'.
88         o Introduce `auto' value for `--with-XXX' library options; this is
89           now the default.
91         o First use `pkg-config' for library detection, then fall back to
92           other tests.
94         * builds/unix/configure.raw (--with-zlib, --with-bzip2, --with-png,
95         --with-harfbuzz): Rewrite.
96         Use new `xxx_reqpriv', `xxx_libpriv', and `xxx_libstaticconf'
97         variables to collect data for `freetype2.pc' and `freetype-config'.
98         (FT2_EXTRA_LIBS): Renamed to ...
99         (ft2_extra_libs): This since it gets no longer substituted.
100         (REQUIRES_PRIVATE, LIBS_PRIVATE, LIBS_CONFIG, LIBSSTATIC_CONFIG):
101         New output variables, replacing `XXX_PKG' and `LIBXXX'.
102         Add notice at the end of `configure' showing the library
103         configuration.
105         * builds/unix/freetype-config.in (--static): New command line
106         option.
107         (libs): Updated.
108         (staticlibs): New variable, to be used if `--static' is given.
109         * builds/doc/freetype-config.1: Document `--static'.
111         * builds/unix/freetype2.in, builds/unix/unix-def.in: Updated.
113 2014-03-01  Werner Lemberg  <wl@gnu.org>
115         Avoid `long long' warnings with older gcc compilers.
116         Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
118         * builds/unix/configure.raw: Don't use gcc's `-pedantic' flag for
119         versions < 4.6.  This is especially needed for Max OS X since this
120         OS runs a gcc variant (or emulation) based on version 4.2.1.
122 2014-03-01  Werner Lemberg  <wl@gnu.org>
124         * docs/INSTALL.CROSS: Revised and updated.
126 2014-03-01  Werner Lemberg  <wl@gnu.org>
128         Make `make clean' remove `freetype2.pc'.
130         This is a generated file at build time, not configure time.
132         * builds/unix/unix-def.in (DISTCLEAN): Move `freetype2.pc' to ...
133         (CLEAN): This variable.
135 2014-03-01  Werner Lemberg  <wl@gnu.org>
137         Use pkg-config for detecting libpng and libbz2 also.
139         * builds/unix/configure.raw (HAVE_PKG): New variable.
140         Search for libbz2 using `pkg-config'; s/BZ2/BZIP2/.
141         Search for libpng using `pkg-config'.
142         Fix definition of `LIBHARFBUZZ' variable.
143         * builds/unix/freetype-config.in ($libs): Updated.
144         * builds/unix/freetype2.in: Add `URL' field.
145         Update `Requires.private' and `Libs.private'.
146         * builds/unix/unix-def.in: Updated.
148 2014-03-01  Werner Lemberg  <wl@gnu.org>
150         Add configure support for HarfBuzz.
152         * builds/unix/pkg.m4: New file.
153         * builds/unix/configure.raw: Search for libharfbuzz using
154         `pkg-config'.
155         Add `--without-harfbuzz' option.
156         * builds/unix/freetype-config.in, builds/unix/freetype2.in,
157         builds/unix/unix-def.in (freetype-config, freetype2.pc): Handle
158         HarfBuzz.
160         * docs/INSTALL.UNIX: Document interdependency of Freetype with
161         HarfBuzz.
163 2014-02-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
165         [cff] Math simplifications.
167         * src/cf2blues.c (cf2_blues_init): Use `FT_MulDiv'.
168         * src/cf2ft.c (cf2_getScaleAndHintFlag): Use simple division.
170 2014-02-28  Dave Arnold  <darnold@adobe.com>
172         [cff] Fix Savannah bug #41697, part 2.
174         * src/cff/cf2ft.c (cf2_initLocalRegionBuffer,
175         cf2_initGlobalRegionBuffer): It is possible for a charstring to call
176         a subroutine if no subroutines exist.  This is an error but should
177         not trigger an assert.  Split the assert to account for this.
179 2014-02-28  Dave Arnold  <darnold@adobe.com>
181         [cff] Fix Savannah bug #41697, part 1.
183         * src/cff/cf2hints.c (cf2_hintmap_build): Return when `hintMask' is
184         invalid.  In this case, it is not safe to use the length of
185         `hStemHintArray'; the exception has already been recorded in
186         `hintMask'.
188 2014-02-26  Werner Lemberg  <wl@gnu.org>
190         [sfnt] Fix Savannah bug #41696.
192         * src/sfnt/ttcmap.c (tt_cmap0_validate, tt_cmap2_validate,
193         tt_cmap4_validate, tt_cmap14_validate): Fix limit tests.
195 2014-02-26  Werner Lemberg  <wl@gnu.org>
197         [winfnt] Fix Savannah bug #41694.
199         * src/winfonts/winfnt.c (FNT_Load_Glyph): Check glyph offset.
201 2014-02-26  Werner Lemberg  <wl@gnu.org>
203         [cff] Fix Savannah bug #41693.
205         * src/cff/cffload.c (CFF_Load_FD_Select): Reject empty array.
207 2014-02-26  Werner Lemberg  <wl@gnu.org>
209         [bdf] Fix Savannah bug #41692.
211         bdflib puts data from the input stream into a buffer in chunks of
212         1024 bytes.  The data itself gets then parsed line by line, simply
213         increasing the current pointer into the buffer; if the search for
214         the final newline character exceeds the buffer size, more data gets
215         read.
217         However, in case the current line's end is very near to the buffer
218         end, and the keyword to compare with is longer than the current
219         line's length, an out-of-bounds read might happen since `memcmp'
220         doesn't stop properly at the string end.
222         * src/bdf/bdflib.c: s/ft_memcmp/ft_strncmp/ to make comparisons
223         stop at string ends.
225 2014-02-17  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
227         [autofit] Fix `make multi' compilation.
229         * src/autofit/hbshim.c: Include `afglobal.h' and `aftypes.h'.
231 2014-02-19  Werner Lemberg  <wl@gnu.org>
232             Simon Bünzli  <zeniko@gmail.com>
234         Fix Savannah bug #32902.
236         Patch taken from
238           https://code.google.com/p/sumatrapdf/source/browse/trunk/ext/_patches/freetype2.patch?spec=svn8620&r=8620#87
240         with slight modifications.
242         * src/type1/t1parse.c (T1_Get_Private_Dict): Add heuristic test to
243         handle fonts that incorrectly use \r at the beginning of an eexec
244         block.
246 2014-02-19  Simon Bünzli  <zeniko@gmail.com>
248         Fix Savannah bug #41590.
250         * src/type1/t1load.c (parse_encoding): Protect against invalid
251         number.
253 2014-02-12  Dave Arnold  <darnold@adobe.com>
255         [cff] Optimize by using `FT_MulDiv'.
256         Suggested by Alexei.
258         * src/cff/cf2font.c (cf2_computeDarkening): Do it.
260 2014-02-12  Werner Lemberg  <wl@gnu.org>
262         Fix Savannah bug #41465.
264         * builds/unix/unix-def.in (CLEAN): Add `freetype-config'.
265         (DISTCLEAN): Remove `freetype-config'.
267 2014-02-08  Sean McBride  <sean@rogue-research.com>
269         Fix clang static analyzer and compiler warnings.
271         * src/autofit/afhints.c (af_glyph_hints_align_weak_points),
272         src/autofit/afloader (af_loader_load_g) <FT_GLYPH_FORMAT_COMPOSITE>,
273         src/base/ftcalc.c (FT_MSB), src/base/ftoutln.c
274         (FT_Outline_Decompose), src/bdf/bdfdrivr.c (bdf_interpret_style),
275         src/cff/cffparse.c (cff_parse_integer), src/cid/cidparse.c
276         (cid_parser_new), src/pfr/pfrload.c (pfr_phy_font_load),
277         src/raster/ftraster.c (Decompose_Curve), src/sfnt/sfdriver.c
278         (sfnt_get_ps_name), src/sfnt/ttcmap.c (tt_cmap12_next,
279         tt_cmap13_next), src/smooth/ftgrays.c (gray_hline): Remove dead
280         code.
282         * src/autofit/afmodule.c (af_property_get_face_globals,
283         af_property_set, af_property_get), src/base/ftbitmap.c
284         (ft_gray_for_premultiplied_srgb_bgra): Make functions static.
286         * src/base/ftobjs.c (ft_remove_renderer): Protect against
287         library == NULL.
288         (ft_property_do): Make function static.
290         * src/base/ftrfork.c: Include `ftbase.h'.
292         * src/sfnt/ttsbit.c (tt_face_load_sbix_image)
293         [!FT_CONFIG_OPTION_USE_PNG], src/type1/t1gload.c
294         (T1_Compute_Max_Advance): Avoid compiler warning.
296         * src/truetype/ttinterp.c (TT_New_Context): Reduce scope of
297         variable.
299 2014-02-08  Werner Lemberg  <wl@gnu.org>
301         Fix Windows build directories.
303         The build target is now `windows' instead of `win32'.
305         Problem reported by Nickolas George <darknova.clan@gmail.com>.
307         * builds/modules.mk: Don't use `win32' and `win16' (!) but
308         `windows'.
310         * builds/windows/detect.mk, builds/windows/win32-def.mk:
311         s/win32/windows/.
313 2014-02-08  Eugen Sawin  <esawin@mozilla.com>
315         Fix Savannah bug #41507.
317         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap)
318         [!FT_CONFIG_OPTION_USE_PNG] <17, 17, 19>: Fix error handling.
320 2014-02-08  Dave Arnold  <darnold@adobe.com>
322         [cff] Fix minor performance bug.
324         * src/cff/cf2font.c (cf2_font_setup): Darkening amount and blue zone
325         calculations are now cached and not recomputed on each glyph.
327 2014-02-05  Werner Lemberg  <wl@gnu.org>
329         Fix problems with perl 5.8.8 as distributed with current MinGW.
331         * src/tools/afblue.pl: Work-around for Perl bug #63402.
332         (string_re): Avoid `possessive quantifiers', which have been
333         introduced in Perl version 5.10.
335 2014-02-04  Werner Lemberg  <wl@gnu.org>
337         Fix compilation with MinGW.
339         Right now, compilation out of the box with latest MinGW is broken
340         due to bugs in header files of mingwrt 4.0.3 in strict ANSI mode,
341         cf.
343           https://sourceforge.net/p/mingw/bugs/2024/
344           https://sourceforge.net/p/mingw/bugs/2046/
346         * builds/unix/configure.raw: Don't set `-ansi' flag for MinGW.
348 2014-02-04  Werner Lemberg  <wl@gnu.org>
350         [autofit] Minor fix.
352         * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
353         src/autofit/aflatin.c (af_latin_metrics_init_widths): Fix handling
354         of alternative standard characters.
355         This also fixes a compilation warning in non-debug mode.
357 2014-02-03  Werner Lemberg  <wl@gnu.org>
359         [cff] Fix Savannah bug #41363.
361         * src/cff/cf2ft.c (cf2_checkTransform): Convert assertion into
362         parameter check.
363         (cf2_decoder_parse_charstrings): Call `cf2_checkTransform' only if
364         we are scaling the outline.
365         (cf2_getPpemY): Remove problematic assertion.
367 2014-01-26  Werner Lemberg  <wl@gnu.org>
369         [autofit] Introduce two more slots for standard characters.
371         This is useful for OpenType features like `c2sc' (caps to small
372         caps) that don't have lowercase letters by definition, or other
373         features that mainly operate on numerals.
375         * src/autofit/afscript.h: Add more standard characters.
377         * src/autofit/aftypes.h: Update use of `SCRIPT' macro.
378         (AF_ScriptClassRec): Add members to hold two more standard
379         characters.
380         (AF_DEFINE_SCRIPT_CLASS): Updated.
382         * src/autofit/afglobal.c, src/autofit/afglobal.h,
383         * src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/hbshim.c:
384         Update use of `SCRIPT' macro.
386         * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
387         src/autofit/aflatin.c (af_latin_metrics_init_widths): Scan two more
388         standard characters.
390 2014-01-24  Werner Lemberg  <wl@gnu.org>
392         Fix Savannah bug #41320.
394         * src/autofit/aflatin.c (af_latin_metrics_init_blues)
395         <AF_LATIN_IS_LONG_BLUE>: Avoid negative index of `last'.
397 2014-01-23  Werner Lemberg  <wl@gnu.org>
399         Fix Savannah bug #41310.
401         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap) <glyph_format==5>:
402         Don't check metrics, which this format doesn't have.
403         This is another correction to the commit from 2013-11-21.
405 2014-01-23  Werner Lemberg  <wl@gnu.org>
407         Fix Savannah bug #41309.
409         * src/type1/t1load.c (t1_parse_font_matrix): Properly handle result
410         of `T1_ToFixedArray'.
412         * src/cid/cidload.c (cid_parse_font_matrix): Synchronize with
413         `t1_parse_font_matrix'.
415         * src/type42/t42parse.c (t42_parse_font_matrix): Synchronize with
416         `t1_parse_font_matrix'.
417         (t42_parse_encoding): Synchronize with `t1_parse_encoding'.
419         * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_BBOX>,
420         <T1_FIELD_TYPE_MMOX>: Properly handle result of `ps_tofixedarray'.
422 2014-01-22  Werner Lemberg  <wl@gnu.org>
424         * src/autofit/hbshim.c (af_get_coverage): Fix memory leaks.
426 2014-01-16  Werner Lemberg  <wl@gnu.org>
428         [autofit] Improve tracing of style coverages.
430         * include/internal/fttrace.h: Add `afglobal' for tracing style
431         coverages.
433         * src/autofit/afglobal.c: Include FT_INTERNAL_DEBUG_H.
434         (FT_COMPONENT): Define.
435         (af_face_globals_compute_style_coverage): Trace `gstyles' array
436         data.
438 2014-01-09  Werner Lemberg  <wl@gnu.org>
440         Fix Savannah bug #41158.
442         * builds/unix/install.mk (install): Create man page directory.
444 2014-01-08  Chongyu Zhu  <lembacon@gmail.com>
446         [arm] Fix Savannah bug #41138, part 2.
448         * builds/unix/ftconfig.in (FT_MulFix_arm), include/config/ftconfig.h
449         (FT_MulFix_arm), src/truetype/ttinterp.c (TT_MulFix14_arm): Fix
450         preprocessor conditionals for `add.w'.
452 2014-01-08  Werner Lemberg  <wl@gnu.org>
454         [autofit] Fix Savannah bug #41138, part 1.
456         * src/tools/afblue.pl <Handling #endif>: Produce correct auxiliary
457         enumeration names for generated `#else'.
459         * src/autofit/afblue.h: Regenerated.
461 2014-01-06  Werner Lemberg  <wl@gnu.org>
463         Add manual page for `freetype-config'.
464         Contributed by Nis Martensen <nis.martensen@web.de>.
466         * docs/freetype-config.1: New file.
468         * builds/unix/unix-def.in (mandir): Define.
469         * builds/unix/install.mk (install, uninstall): Handle manpage.
471 2014-01-05  Werner Lemberg  <wl@gnu.org>
473         [autofit] Minor fixes for `afblue.pl'.
475         * src/tools/afblue.pl (aux_name): Don't use `reverse'.
476         <Handling #endif>: Use proper indentation for generated `#else'.
478         * src/autofit/afblue.h: Regenerated.
480 2014-01-04  Werner Lemberg  <wl@gnu.org>
482         [autofit] Fix Indic scripts.
484         Split the single, incorrect Indic entry into separate scripts so
485         that the covered ranges are the same: Bengali, Devanagari, Gujarati,
486         Gurmukhi, Kannada, Limbu, Malayalam, Oriya, Sinhala, Sundanese,
487         Syloti Nagri, Tamil, Telugu, and Tibetan.  At the same time, remove
488         entries for Meetai Mayak and Sharada – the Unicode ranges were
489         incorrect (and nobody has complained about that), fonts are scarce
490         for those scripts, and the Indic auto-hinter support is rudimentary
491         anyways.
493         * src/autofit/afscript.h: Updated, using AF_CONFIG_OPTION_INDIC and
494         AF_CONFIG_OPTION_CJK.
496         * src/autofit/afstyles.h (STYLE_DEFAULT_INDIC): New auxiliary macro.
497         Use it, together with AF_CONFIG_OPTION_INDIC and
498         AF_CONFIG_OPTION_CJK, to update.
500         * src/autofit/afranges.c [AF_CONFIG_OPTION_INDIC]: Updated.
501         [!AF_CONFIG_OPTION_INDIC, !AF_CONFIG_OPTION_CJK]: Removed.
502         Sort entries by tags.
504 2014-01-03  Werner Lemberg  <wl@gnu.org>
506         [autofit] Thinko.
508         * src/autofit/hbshim.c (af_get_char_index): Similar to
509         `af_get_coverage', reject glyphs which are not substituted.
511 2014-01-03  Werner Lemberg  <wl@gnu.org>
513         [autofit] Fix handling of default coverages.
515         With this commit, the implementation of coverage handling is
516         completed.
518         * src/autofit/hbshim.c (af_get_coverage): Exit early if nothing to
519         do.
520         Reject coverages which don't contain appropriate glyphs for blue
521         zones.
523 2014-01-03  Werner Lemberg  <wl@gnu.org>
525         [autofit] Fix handling of default coverages.
527         * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
528         First handle non-default coverages, then the default coverage of the
529         default script, and finally the other default coverages.
531 2014-01-03  Werner Lemberg  <wl@gnu.org>
533         [autofit] Fix scaling of HarfBuzz shaping.
535         * src/autofit/hbshim.c (af_get_char_index): Scale to units per EM.
537 2014-01-03  Werner Lemberg  <wl@gnu.org>
539         [autofit] Better ftgrid support.
541         * src/autofit/afhints.c (af_glyph_hints_get_segment_offset): Add
542         parameters `is_blue' and `blue_offset'.
544 2014-01-01  Werner Lemberg  <wl@gnu.org>
546         [autofit] Remove some styles.
548         * src/autofit/afcover.h: Remove coverages for alternative fractions,
549         denominators, numerators, and fractions.
551         * src/autofit/afstyles.h (META_STYLE_LATIN): Updated.
553 2014-01-01  Werner Lemberg  <wl@gnu.org>
555         [autofit] Add more styles.
557         * src/autofit/afstyles.h (STYLE_LATIN, META_STYLE_LATIN): New
558         auxiliary macros; use them to define styles for Cyrillic, Greek, and
559         Latin.
561         * src/autofit/afcover.h: Remove coverage for oldstyle figures.
562         Since those digits are used in combination with ordinary letters, it
563         makes no sense to handle them separately.
565         * src/autofit/afglobal.c (af_face_globals_get_metrics): Don't limit
566         `options' parameter to 4 bits.
568 2014-01-01  Werner Lemberg  <wl@gnu.org>
570         [autofit] Fix style assignments to glyphs.
572         * src/autofit/hbshim.c (af_get_coverage)
573         [FT_CONFIG_OPTION_USE_HARFBUZZ]: Scan GPOS coverage of features also
574         so that we can skip glyphs that have both GSUB and GPOS data.
576 2014-01-01  Werner Lemberg  <wl@gnu.org>
578         * src/autofit/hbshim.c: s/{lookups,glyphs}/gsub_{lookups,glyphs}/.
580 2014-01-01  Werner Lemberg  <wl@gnu.org>
582         [autofit] Implement and use `af_get_char_index' with HarfBuzz.
584         * src/autofit/hbshim.c (COVERAGE) [FT_CONFIG_OPTION_USE_HARFBUZZ]:
585         Redefine to construct HarfBuzz features.
586         (af_get_char_index) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Rewritten.
588         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Use
589         `y_offset' to adjust `best_y'.
591 2013-12-31  Werner Lemberg  <wl@gnu.org>
593         [autofit] s/AF_STYLE_...._DEFAULT/AF_STYLE_...._DFLT/i.
595 2013-12-31  Werner Lemberg  <wl@gnu.org>
597         [autofit] Fix interface of `af_get_char_index'.
599         * src/autofit/hbshim.c (af_get_char_index): Return error value.
600         Add argument for y offset (to be used in a yet-to-come patch).
602         * src/autofit/hbshim.h, src/autofit/afcjk.c,
603         src/autofit/aflatin.c: Updated.
605 2013-12-30  Werner Lemberg  <wl@gnu.org>
607         [autofit] Don't combine multiple features into one set.
609         Combining them, as originally envisioned, would lead to much more
610         complicated code, as investigations have shown meanwhile.  The major
611         drawback is that we run out of available style slots much earlier.
612         However, this is only a theoretical issue since we don't support a
613         large number of scripts currently.
615         * src/autofit/afcover.h: Replace `COVERAGE_{1,2,3}' macros with
616         a single-element `COVERAGE' macro, sort the elements by the feature
617         tags, and add entry for `ruby'.
619         * src/autofit/aftypes.h: Updated.
620         * src/autofit/hbshim.c: Updated.
622 2013-12-28  Werner Lemberg  <wl@gnu.org>
624         [autofit] Code shuffling to reduce use of cpp macros.
626         * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
627         Call `af_get_coverage' unconditionally.
629         * src/autofit/autofit.c: Include `hbshim.c' unconditionally.
631         * src/autofit/hbshim.c (af_get_coverage)
632         [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Provide dummy function.
634         * src/autofit/hbshim.h: Provide function declarations
635         unconditionally.
637 2013-12-28  Werner Lemberg  <wl@gnu.org>
639         [autofit] Add wrapper function for `FT_Get_Char_Index'.
641         Yet-to-come changes will provide HarfBuzz functionality for the new
642         function.
644         * src/autofit/hbshim.c (af_get_char_index): New function.
645         * src/autofit/hbshim.h: Updated.
647         * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
648         af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated.
650         * src/autofit/aflatin.c (af_latin_metrics_init_widths,
651         af_latin_metrics_init_blues, af_latin_metrics_check_digits):
652         Updated.
654 2013-12-28  Werner Lemberg  <wl@gnu.org>
656         [autofit] Use `global' HarfBuzz font object.
658         We now use `hb_font' instead of `hb_face' since yet-to-come changes
659         need this.
661         * src/autofit/afglobal.h: Include `hbshim.h'.
662         (AF_FaceGlobalsRec) [FT_CONFIG_OPTION_USE_HARFBUZZ]: New member
663         `hb_font'.
665         * src/autofit/afglobal.c (af_face_globals_new)
666         [FT_CONFIG_OPTION_USE_HARFBUZZ]: Create `hb_font'.
667         (af_face_globals_free) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Destroy
668         `hb_font'.
670         * src/autofit/hbshim.h: Include HarfBuzz headers.
672         * src/autofit/hbshim.c: Include `hbshim.h' instead of HarfBuzz
673         headers.
674         (af_get_coverage): Updated.
676 2013-12-27  Werner Lemberg  <wl@gnu.org>
678         [autofit] Handle `DFLT' OpenType script for coverages.
680         * include/ftautoh.h: Document new `default-script' property.
682         * src/autofit/hbshim.c (af_get_coverage): Use `AF_FaceGlobals' for
683         type of first parameter.
684         (script_tags): Add one more element.
685         (af_get_coverage): Adjust `script_tags' to handle `DFLT' script tag.
687         * src/autofit/hbshim.h: Updated.
689         * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
690         Updated.
692         * src/autofit/afglobal.h (AF_SCRIPT_DEFAULT): New macro.
694         * src/autofit/afmodule.h (AF_ModuleRec): New `default_script'
695         member.
697         * src/autofit/afmodule.c (af_property_set, af_property_get): Handle
698         `default-script' property.
699         (af_autofitter_init): Updated.
701 2013-12-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
703         [ftrfork] Fix the face order difference between POSIX and Carbon.
705         The fragmented resources in Suitcase and .dfont should be reordered
706         when `POST' resource for Type1 is being restored, but reordering of
707         sfnt resources induces the different face order.  Now the ordering
708         is restricted to `POST' resource only, to prevent the different
709         order issue (e.g. the face index in the fontconfig cache generated
710         with Carbon framework is incompatible with that by FreeType 2
711         without Carbon framework.)  Found by Khaled Hosny and Hin-Tak Leung.
713         http://lists.gnu.org/archive/html/freetype-devel/2013-02/msg00035.html
714         http://lists.gnu.org/archive/html/freetype-devel/2013-12/msg00027.html
716         * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Add a switch
717         `sort_by_res_id' to control the fragmented resource ordering.
718         * include/internal/ftrfork.h: Declare new switch.
719         * src/base/ftobjs.c (IsMacResource): Enable the sorting for `POST'
720         resource, and disable the sorting for `sfnt' resource.
722 2013-12-25  Werner Lemberg  <wl@gnu.org>
724         Fix Savannah bug #40997.
726         * src/bdf/bdfdrivr.c (BDF_Face_Init): Only use OR operator to
727         adjust face flags since FT_FACE_FLAG_EXTERNAL_STREAM might already
728         be set.
729         * src/cff/cffobjs.c (cff_face_init): Ditto.
730         * src/cid/cidobjs.c (cid_face_init): Ditto.
731         * src/pcf/pcfread.c (pcf_load_font): Ditto.
732         * src/pfr/pfrobjs.c (pfr_face_init): Ditto.
733         * src/type1/t1objs.c (T1_Face_Init): Ditto.
734         * src/type42/t42objs.c (T42_Face_Init): Ditto.
735         * src/winfonts/winfnt.c (FNT_Face_Init): Ditto.
737 2013-12-21  Werner Lemberg  <wl@gnu.org>
739         [autofit] Introduce `coverages'.
741         Coverages are the interface to the HarfBuzz library to acces
742         OpenType features for handling glyphs not addressable by the cmap.
744         Right now, compilation of HarfBuzz is only added to the development
745         build.  A solution for standard build mode will be delayed until
746         HarfBuzz gets split into two libraries to avoid mutual dependencies
747         between FreeType and HarfBuzz.
749         Note that this is only a first step in handling coverages, basically
750         providing the framework only.  Code for handling selected OpenType
751         features (this is, actually using the data in `afcover.h') will
752         follow.
754         * devel/ftoption.h, include/config/ftoption.h
755         (FT_CONFIG_OPTION_USE_HARFBUZZ): New macro.
757         * src/autofit/hbshim.c, src/autofit/hbshim.h, src/autofit/afcover.h:
758         New files.
760         * src/autofit/afscript.h: Add HarfBuzz script name tags.
762         * src/autofit/afstyles.h: Add default coverage enumeration values.
764         * src/autofit/aftypes.h: Update use of `SCRIPT' and `STYLE' macros.
765         (AF_Coverage): New enumeration (generated by `afcover.h').
766         (AF_StyleClassRec): New member `coverage'.
767         (AF_DEFINE_STYLE_CLASS): Updated.
769         * include/internal/fttrace.h: Add `afharfbuzz' for tracing coverage
770         data.
772         * src/autofit/afglobal.h: Update use of `SCRIPT' and `STYLE' macros.
773         (AF_SCRIPT_FALLBACK): Renamed to ...
774         (AF_STYLE_FALLBACK): ... this.
776         * src/autofit/afglobal.c: Include `hbshim.c'.
777         Update use of `SCRIPT' and `STYLE' macros.
778         (af_face_globals_compute_style_coverage)
779         [FT_CONFIG_OPTION_USE_HARFBUZZ]: Call `af_get_coverage'.
780         Update.
782         * src/autofit/afmodule.h (AF_ModuleRec):
783         s/fallback_script/fallback_style/.
785         * src/autofit/afmodule.c (af_property_set): Adapt handling of
786         `fallback-script' property to set a fallback style.
787         (af_property_get, af_autofitter_init): Updated.
789         * src/autofit/afpic.c: Update use of `SCRIPT' and `STYLE' macros.
791         * src/autofit/afranges.h: Update use of `SCRIPT' macro.
793         * src/autofit/autofit.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: Include
794         `hbshim.c'.
796         * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `hbshim.c'.
797         (AUTOF_DRV_H): Add `afcover.h'.
799         * builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Use pkg-config for
800         all libraries needed by FreeType.
802 2013-12-21  Werner Lemberg  <wl@gnu.org>
804         Fix Savannah bug #40975 (sort of).
806         * src/truetype/ttinterp.c (Ins_IP): Fix sign typo to make FreeType
807         behave the same as the Windows TrueType engine for the invalid case.
809 2013-12-21  Werner Lemberg  <wl@gnu.org>
811         [autofit] Make PIC mode work actually.
813         * src/autofit/afpic.h (AFModulePIC): Fix array sizes to fit the
814         enumeration values automatically generated by including `afscript.h'
815         and friends.
817         * src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
819 2013-12-21  Werner Lemberg  <wl@gnu.org>
821         Fix PIC linking.
823         * include/internal/ftrfork.h (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Fix
824         generated function name.
826         * src/base/basepic.c (FT_Init_Table_raccess_guess_table): Rename
827         to ...
828         (FT_Init_Table_ft_raccess_guess_table): ... this so that the
829         function name correctly corresponds to what the macro framework
830         expects.
832         * src/psnames/rules.mk (PSNAMES_DRV_SRC_S): Use correct file name so
833         that PIC functions are compiled also.
835 2013-12-21  Werner Lemberg  <wl@gnu.org>
837         [base] Add missing dependencies to Makefile.
839         * src/base/rules.mk (BASE_SRC): Add `basepic.c' and `ftpic.c'.
840         (BASE_H): Add `basepic.h'.
842 2013-12-20  Werner Lemberg  <wl@gnu.org>
844         [autofit] Fix PIC compilation.
846         * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
847         src/autofit/aflatin.c (af_latin_metrics_init_widths)
848         [FT_CONFIG_OPTION_PIC]: Declare `globals'.
850         * src/autofit/afglobal.c: Always call AF_DEFINE_SCRIPT_CLASS, and
851         AF_DEFINE_STYLE_CLASS.
853         * src/autofit/afpic.c: Include `afglobal.h'.
854         (autofit_module_class_pic_init): Typo.
856         * src/autofit/aftypes.h (AF_DEFINE_SCRIPT_CLASS,
857         AF_DEFINE_STYLE_CLASS): Don't use the same identifier for macro
858         parameter and structure member.
860 2013-12-20  Werner Lemberg  <wl@gnu.org>
862         [autofit] Introduce `styles'.
864         This is the new top-level structure for handling glyph input data;
865         scripts are now defined separately.
867         * src/autofit/aftypes.h (SCRIPT): Updated.
868         (AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
869         members to ...
870         (AF_Style_ClassRec): ... this new structure.
871         (AF_Style): New enumeration.
872         (AF_StyleMetricsRec): Replace `script' enumeration with
873         `style_class' pointer.
874         (AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
875         (AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
877         * src/autofit/afstyles.h: New file, using data from `afscript.h'.
878         * src/autofit/afscript.h: Updated.
880         * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
881         af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
883         * src/autofit/afglobal.c (SCRIPT): Updated.
884         (STYLE): Redefine macro to load `afstyles.h'.
885         (af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
886         (af_style_names): ... this array.
887         (af_face_globals_compute_script_coverage): Renamed to...
888         (af_face_globals_compute_style_coverage): ... this.
889         Updated.
890         (af_face_globals_new, af_face_globals_free,
891         af_face_globals_get_metrics): Updated.
893         * src/autofit/afglobal.h (SCRIPT): Updated.
894         (STYLE): Redefine macro to load `afstyles.h'.
895         (AF_SCRIPT_FALLBACK): Update definition.  This will get more
896         refinements with later on.
897         (AF_SCRIPT_UNASSIGNED): Replace with...
898         (AF_STYLE_UNASSIGNED): ... this macro.
899         (AF_FaceGlobalsRec): Updated.
901         * src/autofit/aflatin.c (af_latin_metrics_init_widths,
902         af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
903         af_latin_hint_edges): Updated.
905         * src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
906         (af_ltn2_uniranges): Removed.
908         * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
909         Updated.
911         * src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
912         * src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
913         (AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
914         members.
916         * src/autofit/afranges.h: Updated.
918         * src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
920 2013-12-19  Werner Lemberg  <wl@gnu.org>
922         [autofit] Factor scripts and uniranges out of writing system files.
924         * src/autofit/afranges.c, src/autofit/afranges.h: New files.
926         * src/autofit/afscript.h: Extend `SCRIPT' macro with more
927         parameters, taking data from the writing system files.
929         * src/autofit/aftypes.h: Updated.
931         * src/autofit/afglobal.c: Include `afranges.h'.
932         Load `afscript.h' to call AF_DEFINE_SCRIPT_CLASS.
933         * src/autofit/afglobal.c: Include `afranges.h'.
934         Load `afscript.h' to call AF_DECLARE_SCRIPT_CLASS.
936         * src/autofit/afcjk.c, src/autofit/afcjk.h: Updated.
937         * src/autofit/afdummy.c, src/autofit/afdummy.h: Updated.
938         * src/autofit/afindic.c, src/autofit/afindic.h: Updated.
939         * src/autofit/aflatin.c, src/autofit/aflatin.h: Updated.
940         * src/autofit/aflatn2.c, src/autofit/aflatn2.h: Updated.
942         * src/autofit/afpic.c: Updated.
944         * src/autofir/autofit.c: Include `afranges.c'.
945         * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afranges.c'.
947 2013-12-18  Werner Lemberg  <wl@gnu.org>
949         [autofit] More code orthogonality.
951         * src/autofit/aftypes.h (AF_StyleMetrics): Replace `script_class'
952         pointer to an `AF_ScriptClass' structure with `script' index of type
953         `AF_Script'.
954         Move some code around.
956         * src/autofit/afcjk.c: Include `afpic.h'.
957         (af_cjk_metrics_init_widths, af_cjk_metrics_init_blues,
958         af_cjk_hint_edges): Updated.
960         * src/autofit/aflatin.c: Include `afpic.h'.
961         (af_latin_metrics_init_widths, af_latin_metrics_init_blues,
962         af_latin_metrics_scale_dim, af_latin_hint_edges): Updated.
964         * src/autofit/afglobal.c (af_face_globals_get_metrics): Updated.
966         * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
967         Updated.
969 2013-12-18  Werner Lemberg  <wl@gnu.org>
971         [autofit] s/ScriptMetrics/StyleMetrics/.
973 2013-12-18  Werner Lemberg  <wl@gnu.org>
975         [autofit] s/script_{metrics,hints}/style_{metrics,hints}/
977 2013-12-18  Werner Lemberg  <wl@gnu.org>
979         [autofit] s/gscripts/gstyles/.
981 2013-12-18  Werner Lemberg  <wl@gnu.org>
983         [autofit] s/glyph_scripts/glyph_styles/.
985         This is the first commit of a series to create a new top-level
986         structure (a `style') for handling scripts, writing_systems, and
987         soon-to-be-added coverages.
989 2013-12-17  Werner Lemberg  <wl@gnu.org>
991         [autofit] s/AF_Script_/AF_WritingSystem_/ where appropriate.
993 2013-12-11  Infinality  <infinality@infinality.net>
995         [truetype] Simplify logic of rendering modes.
997         This patch unifies the subpixel and non-subpixel cases.
999         * src/truetype/ttinterp.h (TT_ExecContextRec): Remove
1000         `grayscale_hinting'; all code should refer to `grayscale' instead.
1001         Remove unused `native_hinting' member.
1002         Rename `subpixel_hinting' member to `subpixel.
1004         * src/truetype/ttgload.c (TT_LOADER_SET_PP): Updated.
1005         (tt_loader_init): Updated.
1007         * src/truetype/ttinterp.c (Ins_GETINFO): Simplify.
1008         Updated.
1010 2013-12-11  Werner Lemberg  <wl@gnu.org>
1012         [documentation] Add section how to include FreeType header files.
1013         Problem reported by David Kastrup <dak@gnu.org>.
1015         Surprisingly, a description how to do that was completely missing in
1016         the API reference.
1018         * include/freetype.h, include/ftchapters.h: New documentation
1019         section `header_inclusion'.
1021 2013-12-10  Werner Lemberg  <wl@gnu.org>
1023         [autofit] s/DFLT/NONE/, s/dflt/none/.
1025 2013-12-10  Werner Lemberg  <wl@gnu.org>
1027         [autofit] s/AF_SCRIPT_NONE/AF_SCRIPT_UNASSIGNED/.
1029 2013-12-10  Werner Lemberg  <wl@gnu.org>
1031         [truetype] Fix scaling of vertical phantom points.
1033         * src/truetype/ttgload.c (load_truetype_glyph): Scale pp3.x and
1034         pp4.x also.
1036 2013-12-10  Werner Lemberg  <wl@gnu.org>
1038         [truetype] Fix positioning of composite glyphs.
1039         Problem reported by Nigel Tao <nigeltao@golang.org>.
1041         * src/truetype/ttgload.c (TT_Hint_Glyph): Remove code that shifts
1042         the glyph (component) by a fractional value computed from the LSB
1043         phantom point.  This is wrong, since the horizontal phantom points
1044         get rounded horizontally later on.
1046 2013-12-08  Werner Lemberg  <wl@gnu.org>
1048         * Version 2.5.2 released.
1049         =========================
1052         Tag sources with `VER-2-5-2'.
1054         * docs/VERSION.DLL: Update documentation and bump version number to
1055         2.5.2.
1057         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1058         builds/windows/vc2005/index.html,
1059         builds/windows/vc2008/freetype.vcproj,
1060         builds/windows/vc2008/index.html,
1061         builds/windows/vc2010/freetype.vcxproj,
1062         builds/windows/vc2010/index.html,
1063         builds/windows/visualc/freetype.dsp,
1064         builds/windows/visualc/freetype.vcproj,
1065         builds/windows/visualc/index.html,
1066         builds/windows/visualce/freetype.dsp,
1067         builds/windows/visualce/freetype.vcproj,
1068         builds/windows/visualce/index.html,
1069         builds/wince/vc2005-ce/freetype.vcproj,
1070         builds/wince/vc2005-ce/index.html,
1071         builds/wince/vc2008-ce/freetype.vcproj,
1072         builds/wince/vc2008-ce/index.html: s/2.5.1/2.5.2/, s/251/252/.
1074         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
1076         * builds/unix/configure.raw (version_info): Set to 17:1:11.
1077         * CMakeLists.txt (VERSION_PATCH): Set to 2.
1078         * docs/CHANGES: Updated.
1080 2013-12-07  Werner Lemberg  <wl@gnu.org>
1082         [truetype] Next round in phantom point handling.
1084         Greg Hitchcock provided very interesting insights into the
1085         complicated history of the horizontal positions of the TSB and BSB
1086         phantom points.
1088         * src/truetype/ttgload.c (TT_LOADER_SET_PP)
1089         [TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Use `subpixel_hinting' and
1090         `grayscale_hinting' flags as conditionals for the x position of TSB
1091         and BSB.
1093 2013-12-05  Werner Lemberg  <wl@gnu.org>
1095         * builds/freetype.mk (FT_CC): Removed.  Unused.
1097 2013-12-04  Werner Lemberg  <wl@gnu.org>
1099         [sfnt] Fix handling of embedded bitmap strikes.
1101         This corrects the commit from 2013-11-21.  Problem reported by
1102         Andrey Panov <panov@canopus.iacp.dvo.ru>.
1104         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Fix logic to
1105         detect excessive bytes for bit-aligned bitmaps.
1107 2013-12-03  Werner Lemberg  <wl@gnu.org>
1109         [truetype] Remove dead code.
1111         Reported by Nigel Tao <nigeltao@golang.org>.
1113         * include/internal/tttypes.h (TT_LoaderRec): Remove unused
1114         `preserve_pps' field.
1115         * src/truetype/ttgload.c (TT_Hint_Glyph): Updated.
1117 2013-12-03  Werner Lemberg  <wl@gnu.org>
1119         [truetype] Fix phantom point handling.
1121         This is a further improvement to the changes from 2013-11-06.
1123         * src/truetype/ttgload.c (TT_Hint_Glyph): Horizontal phantom points
1124         are rounded horizontally, vertical ones are rounded vertically.
1125         (TT_LOADER_SET_PP): The horizontal position of vertical phantom
1126         points in pre-ClearType mode is zero, as shown in the OpenType
1127         specification.
1129 2013-12-02  Werner Lemberg  <wl@gnu.org>
1131         [truetype] Fix change from 2013-11-20.
1133         Problem reported by Akira Kakuto <kakuto@fuk.kindai.ac.jp>.
1135         * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Protect call to
1136         `Update_Max' with both a TT_USE_BYTECODE_INTERPRETER guard and a
1137         `IS_HINTED' clause.
1138         Also remove redundant check using `maxSizeOfInstructions' – in
1139         simple glyphs, the bytecode data comes before the outline data, and
1140         a validity test for this is already present.
1142 2013-11-27  Werner Lemberg  <wl@gnu.org>
1144         [autofit] Fix use of dumping functions in `ftgrid' demo program.
1146         * src/autofit/afhints.c (AF_DUMP) [FT_DEBUG_AUTOFIT]: New macro.
1147         (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
1148         af_glyph_hints_dump_edges) [FT_DEBUG_AUTOFIT]: Add parameter to
1149         handle output to stdout.
1150         Use AF_DUMP.
1151         (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
1152         af_glyph_hints_dump_edges) [!FT_DEBUG_AUTOFIT]: Removed.
1154 2013-11-25  Werner Lemberg  <wl@gnu.org>
1156         * Version 2.5.1 released.
1157         =========================
1160         Tag sources with `VER-2-5-1'.
1162         * docs/VERSION.DLL: Update documentation and bump version number to
1163         2.5.1.
1165         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1166         builds/windows/vc2005/index.html,
1167         builds/windows/vc2008/freetype.vcproj,
1168         builds/windows/vc2008/index.html,
1169         builds/windows/vc2010/freetype.vcxproj,
1170         builds/windows/vc2010/index.html,
1171         builds/windows/visualc/freetype.dsp,
1172         builds/windows/visualc/freetype.vcproj,
1173         builds/windows/visualc/index.html,
1174         builds/windows/visualce/freetype.dsp,
1175         builds/windows/visualce/freetype.vcproj,
1176         builds/windows/visualce/index.html,
1177         builds/wince/vc2005-ce/freetype.vcproj,
1178         builds/wince/vc2005-ce/index.html,
1179         builds/wince/vc2008-ce/freetype.vcproj,
1180         builds/wince/vc2008-ce/index.html: s/2.5.0/2.5.1/, s/250/251/.
1182         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
1184         * builds/unix/configure.raw (version_info): Set to 17:0:11.
1185         * CMakeLists.txt (VERSION_PATCH): Set to 1.
1186         * docs/CHANGES, docs/release: Updated.
1188 2013-11-23  Werner Lemberg  <wl@gnu.org>
1190         [truetype]: Add tricky font names `hkscsiic.ttf' and `iicore.ttf'.
1192         * src/truetype/ttobjs.c (TRICK_NAMES_MAX_CHARACTERS,
1193         TRICK_NAMES_COUNT): Updated.
1194         (trick_names): Add family name for the two fonts.
1196 2013-11-23  Werner Lemberg  <wl@gnu.org>
1198         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Typo.
1200 2013-11-21  Werner Lemberg  <wl@gnu.org>
1202         [sfnt] Typo.
1204         Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
1206         * src/sfnt/sfobjs.c (sfnt_load_face): Return correct `bsize->width'
1207         value if the font lacks an `OS/2' table.
1209 2013-11-21  Werner Lemberg  <wl@gnu.org>
1211         [sfnt] Improve handling of buggy embedded bitmap strikes.
1213         We are now able to successfully load `AppleMyoungJo.ttf'.
1214         Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
1216         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Don't trust glyph
1217         format.
1219 2013-11-20  Werner Lemberg  <wl@gnu.org>
1221         [truetype] Don't trust `maxp's `maxSizeOfInstructions'.
1223         Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>; see
1225           http://lists.nongnu.org/archive/html/freetype-devel/2013-08/msg00005.html
1227         for details.
1229         * src/base/ftobjs.c (FT_Load_Glyph): Check size of `fpgm' and `prep'
1230         tables also for setting `autohint'.
1232         * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use code from
1233         `TT_Process_Composite_Glyph' for handling unreliable values of
1234         `maxSizeOfInstructions'.
1236 2013-11-16  Werner Lemberg  <wl@gnu.org>
1238         [sfnt] Fix `OS/2' table version 5 support.
1240         We now follow the `official' announcement from Microsoft (on the
1241         OpenType mailing list, which unfortunately hasn't a public archive).
1243         * include/freetype/tttables.h (TT_OS2):
1244         s/usLowerPointSize/usLowerOpticalPointSize/,
1245         s/usUpperPointSize/usUpperOpticalPointSize/.
1247         * src/sfnt/ttload.c (tt_face_load_os2): Update, and set correct
1248         default values.
1250 2013-11-13  Werner Lemberg  <wl@gnu.org>
1252         * builds/unix/ft2unix.h: Remove.  No longer necessary.
1254         * builds/unix/install.mk (install): Updated.
1256 2013-11-13  Werner Lemberg  <wl@gnu.org>
1258         Simplify header file hierarchy.
1260         This large patch changes the header file directory layout from
1261         `include/freetype/...' to `include/...', effectively removing one
1262         level.  Since the file `ft2build.h' is also located in `include'
1263         (and it stays there even after installation), all FreeType header
1264         files are now in a single directory.
1266         Applications that use (a) `freetype-config' or FreeType's
1267         `pkg-config' file to get the include directory for the compiler, and
1268         (b) the documented way for header inclusion like
1270           #include <ft2build.h>
1271           #include FT_FREETYPE_H
1272           ...
1274         don't need any change to the source code.
1276         * include/freetype/*: Move up to...
1277         * include/*: ... this directory.
1279         * builds/amiga/include/freetype/*: Move up to...
1280         * builds/amiga/include/*: ... this directory.
1282         */*: Essentially do `s@/freetype/@/@' where appropriate.
1284         * CMakeList.txt: Simplify.
1285         * builds/unix/freetype-config.in, builds/unix/freetype2.in: For
1286         `--cflags', return a single directory.
1287         * builds/unix/install.mk (install): No longer try to remove `cache'
1288         and `internal' subdirectories; instead, remove the `freetype'
1289         subdirectory.
1291 2013-11-12  Werner Lemberg  <wl@gnu.org>
1293         [truetype] Fix last `truetype' commit.
1295         * src/truetype/ttgload.c (tt_get_metrics): Preserve stream position.
1296         Return error value.
1297         (load_truetype_glyph): Updated.
1299 2013-11-10  Werner Lemberg  <wl@gnu.org>
1301         * docs/CMAKE: New dummy file.
1303 2013-11-08  Dave Arnold  <darnold@adobe.com>
1305         [cff] Fix for hints that touch.
1307         * src/cff/cf2hints.c (cf2_hintmap_insertHint): Fix condition for
1308         finding index value of insertion point.
1310 2013-11-06  Werner Lemberg  <wl@gnu.org>
1312         [truetype] Fix handling of phantom points in composite glyphs.
1313         Problem reported by Nigel Tao <nigeltao@golang.org>.
1315         This is a follow-up commit to the previous one.
1317         * src/truetype/ttgload.c (load_truetype_glyph): Call
1318         `tt_get_metrics' after loading the glyph header.
1320 2013-11-06  Werner Lemberg  <wl@gnu.org>
1322         [truetype] Improve emulation of vertical metrics.
1324         This commit also improves the start values of vertical phantom
1325         points.  Kudos to Greg Hitchcock for help.
1327         * src/truetype/ttgload.c (TT_Get_VMetrics): Add parameter to pass
1328         `yMax' value.  Replace code with fixed Microsoft definition.
1329         (tt_get_metrics): Updated.
1330         (TT_LOADER_SET_PP): Add explanation how to initialize phantom
1331         points, taken from both the OpenType specification and private
1332         communication with Greg (which will eventually be added to the
1333         standard).
1334         Fix horizontal position of `pp3' and `pp4'.
1336         * src/truetype/ttgload.h: Updated.
1338         * src/truetype/ttdriver.c (tt_get_advances): Updated.
1340         * docs/CHANGES: Updated.
1342 2013-11-05  Werner Lemberg  <wl@gnu.org>
1344         * builds/windows/vc2010/freetype.vcxproj: s/v110/v100/.
1345         PlatformToolSet version 110 is for VC2012.
1347         Problem reported (with solution) by Dave Arnold <darnold@adobe.com>.
1349 2013-11-05  Werner Lemberg  <wl@gnu.org>
1351         [truetype] Correctly reset point tags for glyph components.
1352         Problem reported by Nigel Tao <nigeltao@golang.org>.
1354         * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix loop.
1356 2013-11-02  Werner Lemberg  <wl@gnu.org>
1358         [truetype] Fix GETINFO opcode handling of subpixel hinting bits.
1360         * src/truetype/ttinterp.c (Ins_GETINFO): Don't request bit 6 set to
1361         get info on subpixel hinting.
1363         * docs/CHANGES: Updated.
1365 2013-11-02  Werner Lemberg  <wl@gnu.org>
1367         Fix Savannah bug #40451.
1369         Simply apply the patch from the bug report.
1371         * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
1372         include/freetype/config/ftconfig.h: The used #pragma directives only
1373         work with gcc versions 4.6 and higher.
1375 2013-11-01  Werner Lemberg  <wl@gnu.org>
1377         * docs/CHANGES: Updated.
1379 2013-11-01  Werner Lemberg  <wl@gnu.org>
1381         [truetype] Minor code refactoring.
1383         Two benefits: The allocated FDEF (and IDEF) array gets slightly
1384         smaller, and the `ttdebug' demo program has access to function
1385         numbers without additional costs.
1387         Fortunately, no changes to FontForge are necessary – this is the
1388         only external TrueType debugger I know of, but others may exist and
1389         should check the code accordingly.
1391         * src/truetype/ttinterp.h (TT_CallRec): Replace `Cur_Restart' and
1392         `Cur_End' with a pointer to the corresponding `TT_DefRecord'
1393         structure.
1395         * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF, Ins_ENDF,
1396         Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns <Invalid_Opcode>):
1397         Updated.
1399 2013-10-27  Werner Lemberg  <wl@gnu.org>
1401         [sfnt] Implement support for `OS/2' table version 5.
1403         See
1405           http://typedrawers.com/discussion/470/new-microsoft-size-specific-design-selection-mechanism
1407         for the announcement.
1409         * include/freetype/tttables.h (TT_OS2): Add fields
1410         `usLowerPointSize' and `usUpperPointSize'.  Since FreeType returns
1411         this structure only as a pointer through `FT_Get_Sfnt_Table', there
1412         shouldn't be any ABI problems.
1414         * src/sfnt/ttload.c (tt_face_load_os2): Implement it.
1416         * docs/CHANGES: Updated.
1418 2013-10-24  Werner Lemberg  <wl@gnu.org>
1420         * README.git, docs/CHANGES, docs/INSTALL: Updated.
1422 2013-10-24  John Cary  <cary@txcorp.com>
1424         Provide cmake support.
1426         * CMakeLists.txt: New file.
1428 2013-10-23  Kenneth Miller  <kennethadammiller@yahoo.com>
1429             Werner Lemberg  <wl@gnu.org>
1431         Provide support for x64 builds in Visual C++ project files.
1433         * src/builds/win32: Renamed to...
1434         * src/builds/windows: This.
1436         * src/builds/windows/vc2010/*: Updated to handle x64 target.
1438         * src/builds/windows/*.mk, docs/INSTALL.GNU: s/win32/windows/ where
1439         appropriate.
1441 2013-10-22  Werner Lemberg  <wl@gnu.org>
1443         * src/base/md5.c, src/base/md5.h: Updated to recent version.
1445         * src/base/ftobjs.c: Updated; `md5.c' no longer uses `free'.
1447         The canonical URL to get updates for this file is
1449           http://cvsweb.openwall.com/cgi/cvsweb.cgi/Owl/packages/popa3d/popa3d/md5/
1451         as the author told me in private communication.
1453 2013-10-19  Werner Lemberg  <wl@gnu.org>
1455         [autofit] s/SMALL_TOP/X_HEIGHT/.
1457         * src/autofit/afblue.dat: Updated.
1459         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1461         * src/autofit/aflatin.c, src/autofit/aflatin.h,
1462         src/autofit/atlatin2.c: Updated.
1464 2013-10-19  Werner Lemberg  <wl@gnu.org>
1466         * src/autofit/afblue.dat: s/MINOR/DESCENDER/.
1468         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1470 2013-10-16  Werner Lemberg  <wl@gnu.org>
1472         [autofit] Add description strings to script entries.
1474         Currently, this is unused.
1476         * src/autofit/afscript.h: Do it.
1477         * src/autofit/afglobal.c, src/autofit/afpic.c,
1478         src/autofit/aftypes.h: Updated.
1480 2013-10-16  Werner Lemberg  <wl@gnu.org>
1482         [autofit] Improve tracing message for extra light flag.
1484         * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Do it.
1486 2013-10-15  Chongyu Zhu  <lembacon@gmail.com>
1488         [arm] Fix thumb2 inline assembly under LLVM.
1490         When using `ADD' with an immediate operand, the instruction is
1491         actually `ADD Rd, Rn, #<imm12>', that is, the maximum of the
1492         immediate operand cannot exceed 4095.  It will fail to compile with
1493         LLVM.
1495         However, in GCC, due to some legacy compatibility considerations,
1496         `ADD.W' will be automatically emitted when the immediate operand is
1497         larger than 4095.
1499         * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
1500         (FT_MulFix_arm) [__GNUC__]: Support clang compiler.
1502         * src/truetype/ttinterp.c (TT_MulFix14_arm) [__GNUC__]: Ditto.
1504 2013-10-12  Werner Lemberg  <wl@gnu.org>
1506         [autofit] Improve tracing of `latin' hinter.
1508         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Report blue
1509         zone types.
1510         (af_latin_metrics_scale_dim): Report scaling changes due to x height
1511         alignment.
1512         Report scaled stroke width and blue zone values.
1514 2013-10-03  Dave Arnold  <darnold@adobe.com>
1516         * src/cff/cf2font.c (cf2_computeDarkening): Avoid division by zero.
1518         Note that the old code avoided using a region of the piecewise
1519         linear function where the slope was zero.  The recovery was to use a
1520         different section of the function, which produced a different,
1521         incorrect amount of darkening.
1523 2013-10-02  Darrell Bellert  <darrell.bellert@hl.konicaminolta.us>
1525         * src/sfnt/ttload.c (tt_face_load_pclt): Fix `pclt_fields'.
1527 2013-10-02  Dave Arnold  <darnold@adobe.com>
1529         * src/cff/cf2font.c (cf2_computeDarkening): Initialize darkenAmount.
1531         This line was lost in commit 89ca1fd6 (from 2013-06-25).  The effect
1532         is to use a previous darkening amount when producing an unhinted,
1533         unscaled outline.  This can cause autohint samples in ftgrid and
1534         ftview to be based on darkened CFF outlines instead of unhinted,
1535         undarkened ones.
1537 2013-09-29  Dave Arnold  <darnold@adobe.com>
1539         Fix Savannah bug #39295.
1541         The bug was caused by switching to the initial hintmap (the one in
1542         effect when `moveto' executes) just before drawing the final element
1543         in the charstring.  This ensured that the path was closed (in both
1544         Character Space and Device Space).  But if the final element was a
1545         curve and if the final hintmap was different enough from the initial
1546         one, then the curve was visibly distorted.
1548         The first part of the fix is to draw the final curve using the final
1549         hintmap as specified by the charstring.  This corrects the
1550         distortion but does not ensure closing in Device Space.  It may
1551         require the rasterizer to automatically generate an extra closing
1552         line.  Depending on the hintmap differences, this line could be from
1553         zero to a couple pixels in length.
1555         The second part of the fix covers the case where the charstring
1556         subpath is closed with an explicit line.  We now modify that line's
1557         end point to avoid the distortion.
1559         Some glyphs in the bug report font (TexGyreHeros-Regular) that show
1560         the change are:
1562           25ppem    S (98)
1563           24ppem    eight (52)
1564           25.5ppem  p (85)
1566         Curves at the *end* of a subpath are no longer distorted.  However,
1567         some of these glyphs have bad hint substitutions in the middle of a
1568         subpath, and these are not affected.
1570         The patch has been tested with a set of 106 fonts that shipped with
1571         Adobe Creative Suite 4, together with 756 Open Source CFF fonts from
1572         Google Fonts.  There are 1.5 million glyphs, of which some 20k are
1573         changed with the fix.  A sampling of a few hundred of these changes
1574         have been examined more closely, and the changes look good (or at
1575         least acceptable).
1577         * src/cff/cf2hints.h (CF2_GlyphPathRec): New element `pathIsClosing'
1578         to indicate that we synthesize a closepath line.
1580         * src/cff/cf2hints.c (cf2_glyphpath_init): Updated.
1581         (cf2_glyphpath_pushPrevElem): If closing, use first hint map (for
1582         `lineto' operator) and adjust hint zone.
1583         For synthesized closing lines, use end point in first hint zone.
1584         (cf2_glyphpath_lineTo): Take care of synthesized closing lines.  In
1585         particular, shift the detection of zero-length lines from character
1586         space to device space.
1587         (cf2_glyphpath_closeOpenPath): Remove assertion.
1588         Updated.
1590 2013-09-25  Werner Lemberg  <wl@gnu.org>
1592         * src/autofit/aflatin.c (af_{grek,cyrl}_uniranges): Fix arrays.
1594 2013-09-25  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1596         [bdf, pcf] Refuse non-zero face_index.
1598         Suggested by Akira Tagoh, see
1600           http://lists.gnu.org/archive/html/freetype/2013-09/msg00030.html
1602         * src/bdf/bdfdrivr.c (BDF_Face_Init): Return `Invalid_Argument'
1603         error if the font could be opened but non-zero `face_index' is
1604         given.
1605         * src/pcf/pcfdrivr.c (PCF_Face_Init): Ditto.
1607         * src/type42/t42objs.c (T42_Face_Init): Remove unrequired FT_UNUSED
1608         macro for `face_index' because it is validated later.
1610 2013-09-23  Werner Lemberg  <wl@gnu.org>
1612         Fix Savannah bug #40090.
1614         * src/autofit/afcjk.c (af_cjk_metrics_scale): Revert commit
1615         306f8c5d (from 2013-08-25) affecting this function.
1617 2013-09-22  Werner Lemberg  <wl@gnu.org>
1619         [autofit] Disunify Cyrillic and Greek handling from Latin.
1621         * src/autofit/afscript.h: Add Cyrillic and Greek.
1623         * src/autofit/afblue.dat (AF_BLUE_STRINGSET_GREK,
1624         AF_BLUE_STRINGSET_CYRL): Add blue zones for Greek and Cyrillic.
1625         (AF_BLUE_STRINGSET_LATN): Fix typo.
1626         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1628         * src/autofit/aflatin.c (af_grek_uniranges, af_cyrl_uniranges): New
1629         arrays.
1630         (af_grek_script_class, af_cyrl_script_class): New scripts.
1631         * src/autofit/aflatin.h: Updated.
1633 2013-09-20  Werner Lemberg  <wl@gnu.org>
1635         * docs/CHANGES: Updated.
1637 2013-09-20  Behdad Esfahbod  <behdad@behdad.org>
1639         Fix vertical size of emboldened glyphs.
1641         Cf. https://bugzilla.gnome.org/show_bug.cgi?id=686709
1643         * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Adjust `horiBearingY'
1644         also.
1646 2013-09-11  Alexei Podtelezhnikov  <apodtele@gmail.com>
1648         * include/freetype/ftoutln.h: Correct FT_Outline_Get_Orientation
1649         algorithm description.
1651 2013-09-11  Werner Lemberg  <wl@gnu.org>
1653         [autofit] Improve Hebrew rendering.
1655         This change introduces a new blue zone property
1656         `AF_BLUE_PROPERTY_LATIN_LONG' to make the auto-hinter ignore short
1657         top segments.
1659         * src/autofit/afblue.dat: Fix Hebrew blue strings.
1660         Use AF_BLUE_PROPERTY_LATIN_LONG for AF_BLUE_STRING_HEBREW_TOP.
1662         * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_LONG): New macro.
1664         * src/autofit/afblue.c, src/autofit/afblue.h: Updated.
1666         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle
1667         `AF_LATIN_IS_LONG_BLUE'.
1669         * src/autofit/aflatin.h (AF_LATIN_IS_LONG_BLUE): New macro.
1671 2013-08-28  Behdad Esfahbod  <behdad@google.com>
1673         [sfnt] Fix frame access while reading WOFF table directory.
1675         * src/sfnt/sfobjs.c (woff_open_font): Using single memory frame
1676         while reading the directory entries for the whole loop.
1678 2013-08-29  Werner Lemberg  <wl@gnu.org>
1679             Behdad Esfahbod  <behdad@google.com>
1681         Implement support for WOFF containers.
1683         We simply synthesize a SFNT from the WOFF, create a memory stream
1684         for the new data, and load the SFNT as usual.
1686         Does NOT add any API to access WOFF metadata or private blocks.
1688         * include/freetype/internal/tttypes.h (WOFF_HeaderRec,
1689         WOFF_TableRec): New structures.
1691         * include/freetype/tttags.h (TTAG_wOFF): New macro.
1693         * src/base/ftobjs.c (FT_Open_Face): Set `stream' after calling
1694         `open_face'.
1696         * src/sfnt/sfobjs.c [FT_CONFIG_OPTION_SYSTEM_ZLIB]: Include
1697         `FT_GZIP_H'.
1698         (WRITE_BYTE, WRITE_USHORT, WRITE_ULONG): New temporary macros for
1699         writing to a stream.
1700         (sfnt_stream_close, compare_offsets, woff_open_font): New functions.
1701         (sfnt_open_font): Handle `TTAG_wOFF'.
1702         (sfnt_init_face): Set `stream' after calling `sfnt_open_font'.
1704         * src/truetype/ttobjs.c (tt_face_init): Set `stream' after calling
1705         `sfnt->init_face'.
1707         * src/base/ftobjs.c (open_face): Use a pointer to FT_Stream as an
1708         argument so that a changed stream survives.
1709         Update callers.
1711 2013-08-28  Werner Lemberg  <wl@gnu.org>
1713         [gzip] New function `FT_Gzip_Uncompress'.
1715         This is modeled after zlib's `uncompress' function.  We need this
1716         for WOFF support.
1718         * include/freetype/ftgzip.h, src/gzip/ftgzip.c (FT_Gzip_Uncompress):
1719         New function.
1721         * src/gzip/rules.mk: Rewrite to better reflect dependencies.
1723 2013-08-28  Werner Lemberg  <wl@gnu.org>
1725         [autofit] Fix `make multi' compilation.
1727         * src/autofit/afblue.cin, src/autofit/afblue.c: Don't include
1728         `afblue.h' but `aftypes.h'.
1729         * src/autofit/afcjk.c: Don't include `aftypes.h' but `afglobal.h'.
1731 2013-08-28  Werner Lemberg  <wl@gnu.org>
1733         [autofit] Fix C++ compilation.
1735         * src/autofit/afglobal.c (af_face_globals_get_metrics),
1736         src/autofit/afdummy.c (af_dflt_script_class), src/autofit/afindic.c
1737         (af_deva_script_class): Use proper casts.
1739 2013-08-27  Behdad Esfahbod  <behdad@google.com>
1741         * src/sfnt/ttload.c (tt_face_load_font_dir): Fix sign typos.
1743 2013-08-27  Behdad Esfahbod  <behdad@google.com>
1745         FT_Open_Face: Improve external stream handling.
1747         If the font's `clazz->init_face' function wants to swap to new
1748         stream, handling of whether original stream was external could
1749         result to either memory leak or double free.  Mark externality into
1750         face flags before calling `init_face' such that the clazz can handle
1751         external streams properly.
1753         * src/base/ftobjs.c (FT_Open_Face): Move code to set
1754         FT_FACE_FLAG_EXTERNAL_STREAM to...
1755         (open_face): This function.
1757 2013-08-27  Werner Lemberg  <wl@gnu.org>
1759         Remove `FT_SqrtFixed' function.
1761         It's no longer used.
1763         * include/freetype/internal/ftcalc.h, src/base/ftcalc.c: Do it.
1765 2013-08-27  Werner Lemberg  <wl@gnu.org>
1767         [autofit] While tracing, report script names instead of ID values.
1769         * src/autofit/afglobal.c (af_script_names) [FT_DEBUG_LEVEL_TRACE]:
1770         New array.
1771         * src/autofit/afglobal.h: Updated.
1773         * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
1774         af_cjk_hint_edges): Use `af_script_names'.
1775         * src/autofit/aflatin.c (af_latin_metrics_init_widths,
1776         af_latin_hint_edges): Ditto.
1778 2013-08-26  Werner Lemberg  <wl@gnu.org>
1780         [autofit] Report used script while hinting a glyph.
1782         * src/autofit/afcjk.c (af_cjk_hint_edges), src/autofit/aflatin.c
1783         (af_latin_hint_edges): Implement it.
1785 2013-08-26  Werner Lemberg  <wl@gnu.org>
1787         [autofit] Add support for Hebrew script.
1789         * src/autofit/afblue.dat: Add blue strings for Hebrew.
1790         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1792         * src/autofit/aflatin.c (af_hebr_uniranges): New array.
1793         (af_hebr_script_class): New script.
1794         * src/autofit/aflatin.h, src/autofit/afscript.h: Updated.
1796 2013-08-26  Werner Lemberg  <wl@gnu.org>
1798         [autofit] Improve tracing messages.
1800         * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Mention script
1801         ID in tracing message.
1802         (af_cjk_metrics_init_blues): Initialize `axis' outside of the inner
1803         loop.
1804         Improve tracing messages.
1805         (af_cjk_hint_edges) [FT_DEBUG_LEVEL_TRACE]: New variable
1806         `num_actions' to count hinting actions.
1807         Improve tracing messages.
1809         * src/autofit/aflatin.c (af_latin_metrics_init_widths): Mention
1810         script ID in tracing message.
1811         (af_latin_metrics_init_blues, af_latin_hint_edges): Improve tracing
1812         messages.
1814 2013-08-26  Werner Lemberg  <wl@gnu.org>
1816         Better tracing of loaded glyphs.
1818         Previously, the loading of a glyph was traced at level 4, if at all.
1819         With this change, all font loading routines emit a tracing message
1820         at level 1, making it easier to select tracing output (for example
1821         using F2_DEBUG="any:1 afhints:7 aflatin:7").
1823         * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Add tracing message.
1824         * src/cff/cffdrivr.c (cff_glyph_load): Ditto.
1825         * src/cff/cffgload.c (cff_decoder_prepare): Improve tracing
1826         messages.
1827         * src/cid/cidgload.c (cid_load_glyph): Use level 1 for tracing
1828         message.
1829         * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Ditto.
1830         * src/pfr/pfrobjs.c (pfr_slot_load): Add tracing message.
1831         * src/truetype/ttgload.c (TT_Load_Glyph): Ditto.
1832         * src/type1/t1gload.c (T1_Load_Glyph): Ditto.
1833         * src/type42/t42objs.c (T42_GlyphSlot_Load): Ditto.
1834         * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
1836 2013-08-26  Werner Lemberg  <wl@gnu.org>
1838         [autofit] Fix script selection.
1840         * src/autofit/afglobal.c (af_face_globals_get_metrics): Use
1841         `AF_SCRIPT_DFLT', not value 0.
1842         Simplify code.
1844         * src/autofit/afscript.h: Sort by script name.
1846 2013-08-26  Werner Lemberg  <wl@gnu.org>
1848         [autofit] Make `dummy' hinter work as expected.
1850         * src/autofit/afdummy.c (af_dummy_hints_init): Properly set scaling
1851         information.
1852         (af_dummy_hints_apply): Scale the glyphs.
1854 2013-08-25  Werner Lemberg  <wl@gnu.org>
1856         [autofit] Make `cjk' module use blue stringsets.
1858         * src/autofit/afcjk.c (AF_CJK_MAX_TEST_CHARACTERS): Removed.
1859         (af_cjk_hani_blue_chars): Removed.
1860         (AF_CJK_BLUE_TYPE_*): Removed.
1861         (af_cjk_metrics_init_blues): Replace AF_CJK_MAX_TEST_CHARACTERS with
1862         AF_BLUE_STRING_MAX_LEN.
1863         Change loops to use offsets (in file `afblue.h') into the new arrays
1864         `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
1865         Instead of three dimensions (as used in the old blue string array)
1866         we now use properties to do the same, saving one loop nesting level.
1868         * src/autofit/afcjk.h: Remove old enumeration values superseded by
1869         the new data in `afblue.h'.
1870         (AF_CJK_IS_TOP_BLUE, AF_CJK_IS_HORIZ_BLUE, AF_CJK_IS_FILLED_BLUE,
1871         AF_CJK_IS_RIGHT_BLUE): New macros, to be used in
1872         `af_cjk_metrics_init_blues'.
1873         (AF_CJK_BLUE_IS_RIGHT): Remove this now redundant enum value.
1874         (AF_CJK_BLUE_IS_TOP): Renamed to...
1875         (AF_CJK_BLUE_TOP): This.
1876         (AF_CJK_MAX_BLUES): Remove.
1877         (AF_CJKAxisRec): Updated.
1879 2013-08-25  Werner Lemberg  <wl@gnu.org>
1881         [autofit] Typo.
1883         * src/autofit/afblue.hin, src/autofit/afblue.c (GET_UTF8_CHAR): Use
1884         cast.
1886 2013-08-25  Werner Lemberg  <wl@gnu.org>
1888         [autofit] Synchronize `cjk' with `latin' module (and vice versa).
1890         * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Add tracing
1891         messages.
1892         (af_cjk_metrics_init_blues): Don't pass blue string array as
1893         argument but use the global array directly.
1894         Use `outline' directly.
1895         Update and add tracing messages.
1896         (af_cjk_metrics_init): Simplify code.
1897         (af_cjk_metrics_scale_dim): Improve tracing message.
1898         (af_cjk_metrics_scale): Synchronize.
1900         * src/autofit/aflatin.c (af_latin_metrics_init_widths,
1901         af_latin_metrics_init_blues): Improve and add tracing messages.
1903 2013-08-25  Werner Lemberg  <wl@gnu.org>
1905         [autofit] Make `latin' module use blue stringsets.
1907         * src/autofit/aflatin.c (AF_LATIN_MAX_TEST_CHARACTERS): Removed.
1908         (af_latin_blue_chars): Removed.
1909         (af_latin_metrics_init_blues): Replace AF_LATIN_MAX_TEST_CHARACTERS
1910         with AF_BLUE_STRING_MAX_LEN.
1911         Change loops to use offsets (in file `afblue.h') into the new arrays
1912         `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
1913         Use `AF_LATIN_IS_SMALL_TOP_BLUE' macro.
1915         * src/autofit/aflatin.h: Remove old enumeration values superseded by
1916         the new data in `afblue.h'.
1917         (AF_LATIN_IS_TOP_BLUE): Updated definition.
1918         (AF_LATIN_IS_SMALL_TOP_BLUE): New macro.
1919         (AF_LATIN_MAX_BLUES): Remove.
1920         (AF_LatinAxisRec): Updated.
1922 2013-08-25  Werner Lemberg  <wl@gnu.org>
1924         [autofit] Add blue stringsets.
1926         * src/autofit/aftypes.h: Include `afblue.h'.
1927         (AF_ScriptClassRec): Add `blue_stringset' field.
1928         (AF_DEFINE_SCRIPT_CLASS): Updated.
1930         * src/autofit/autofit.c: Include `afblue.c'.
1932         * src/autofit/afcjk.c (af_hani_script_class), src/autofit/afdummy.c
1933         (af_dflt_script_class), src/autofit/afindic.c
1934         (af_deva_script_class), src/autofit/aflatin.c
1935         (af_latn_script_class), src/autofit/aflatin2.c
1936         (af_ltn2_script_class): Updated.
1938         * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afblue.c'.
1940 2013-08-25  Werner Lemberg  <wl@gnu.org>
1942         [autofit] Introduce data file for blue strings.
1944         The idea is to have a central file which gets processed by a Perl
1945         script to create proper `.c' and `.h' files using templates.  There
1946         are two other reasons to do that:
1948           . The data file should be easily readable.  We use UTF-8 encoding
1949             which then gets converted to single bytes.
1951           . Since the number of supported scripts will increase soon, the
1952             current usage of blue string arrays is a waste of space.  Using
1953             the Perl script it is possible to imitate jagged arrays,
1954             defining enumeration constants as offsets into the arrays.
1956         This commit only adds files without changing any functionality.
1958         * src/autofit/afblue.dat: New data file.
1959         * src/tools/afblue.pl: New Perl script for processing `afblue.dat'.
1961         * src/autofit/afblue.cin, src/autofit/afblue.hin: New template files
1962         for...
1963         * src/autofit/afblue.c, src/autofit/afblue.c: New source files.
1964         To avoid a dependency on Perl, we add them too.
1966 2013-08-19  Alexei Podtelezhnikov  <apodtele@gmail.com>
1968         [base] Enable new algorithm for `BBox_Cubic_Check'.
1970         * src/base/ftbbox.c: Enable new BBox_Cubic_Check algorithm, remove
1971         the old one.
1972         Improve comments.
1974 2013-08-18  Werner Lemberg  <wl@gnu.org>
1976         * builds/unix/unix-def.in (freetype2.pc): Don't set executable bit.
1978 2013-08-18  Werner Lemberg  <wl@gnu.org>
1980         Fix Savannah bug #39804.
1982         * builds/unix/configure.raw (LIBPNG): Define and export.
1983         * builds/unix/freetype-config.in, builds/unix/freetype2.in: Handle
1984         libpng.
1986 2013-08-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
1988         [base] Clean up BBox_Conic_Check.
1990         * src/base/ftbbox.c (BBox_Conic_Check): Remove redundant checks for
1991         extremum at the segment ends, which are already within the bbox.
1992         Slightly modify calculations.
1994 2013-08-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
1996         [base] Finish experimental (disabled) BBox_Cubic_Check implementation.
1998         * src/base/ftbbox.c (BBox_Cubic_Check): Scale arguments to improve
1999         accuracy and avoid overflows.
2001 2013-08-13  Alexei Podtelezhnikov  <apodtele@gmail.com>
2003         [base] Refactor experimental (disabled) BBox_Cubic_Check.
2005         * src/base/ftbbox.c (BBox_Cubic_Check): Implement the minimum search
2006         as the mirror image of the maximum search implemented here...
2007         (update_max): New function.
2009 2013-08-06  John Tytgat  <John.Tytgat@esko.com>
2011         Fix Savannah bug #39702.
2013         * src/cff/cffload.c (cff_index_get_pointers): Check for `cur_offset
2014         != 0'; this stronger test is mandated by the CFF specification.
2015         Fix test for INDEX structures which have one or more empty entries
2016         at the end.
2018 2013-08-05  Werner Lemberg  <wl@gnu.org>
2020         Fix gcc pragmas, part 2.
2022         * src/truetype/ttinterp.c (TT_MulFix14_long_long,
2023         TT_DotFix14_long_long): `#pragma gcc diagnostic {push,pop}' has been
2024         introduced with gcc version 4.6.
2026 2013-08-05  Werner Lemberg  <wl@gnu.org>
2028         Fix gcc pragmas.
2030         * src/truetype/ttinterp.c (TT_MulFix14_long_long,
2031         TT_DotFix14_long_long): Older gcc versions don't accept diagnostic
2032         pragmas within a function body.
2034 2013-08-05  Werner Lemberg  <wl@gnu.org>
2036         Fix Savannah bug #39700.
2038         * builds/unix/ftconfig.h: Synchronize with
2039         `include/freetype/config/ftconfig.h'.
2041         * builds/vms/ftconfig.h: Ditto.
2042         Make the differences to the master `ftconfig.h' file as small as
2043         possible for easier maintainance.
2045 2013-08-05  Werner Lemberg  <wl@gnu.org>
2047         [autofit] Improve handling of `near' points.
2049         Points which are very near to each other are now marked as such.
2050         The `weak' flag is then computed by using the `in' vector of the
2051         first and the `out' vector of the last point of a group of near
2052         points.
2054         For example, this fixes the rendering of glyph `Oslash' in
2055         `Roboto-Thin.ttf'.
2057         * src/autofit/afhints.h (AF_Flags): New value `AF_FLAGS_NEAR'.
2059         * src/autofit/afhints.c (af_glyph_hints_reload): Introduce
2060         the heuristic value `near_limit' to decide whether the current point
2061         is near to the previous one, then set `AF_FLAG_NEAR' accordingly.
2062         Store good `in' vector (of last non-near point) in
2063         `last_good_in_{x,y}' and use it as an argument to
2064         `ft_corner_is_flat' if necessary.
2066 2013-08-02  Werner Lemberg  <wl@gnu.org>
2068         * include/freetype/ftcffdrv.h: Improve documentation.
2069         This is based on blog entries from David Lemon and Dave Arnold (both
2070         from Adobe) with kind permission.  Dave also helped in
2071         proof-reading.
2073 2013-08-02  Werner Lemberg  <wl@gnu.org>
2075         [autofit] Move declaration of scripts into separate file.
2077         This has the benefit that we don't need to duplicate the data at
2078         different places.
2080         * src/autofit/afscript.h: New file.
2082         * src/autofit/aftypes.h (AF_Script): Include `afscript.h' to define
2083         the enumeration values.
2085         * src/autofit/afglobal.c: Include `afscript.h' to get the script
2086         specific header files.
2087         (af_script_classes): Include `afscript.h' to fill this array.
2089         * src/autofit/afpic.c: Include `afscript.h' to get the script
2090         specific header files.
2091         (autofit_module_class_pic_init): Include `afscript.h' for
2092         initialization.
2093         * src/autofit/afpic.h (AF_SCRIPT_CLASSES_COUNT,
2094         AF_SCRIPT_CLASSES_REC_COUNT): Removed.  Use `AF_SCRIPT_MAX' instead.
2096         * src/autofit/rules.mk (AUTOF_DRV_H): Updated.
2098 2013-08-02  Werner Lemberg  <wl@gnu.org>
2100         [autofit] Move declaration of writing systems into separate file.
2102         This has the benefit that we don't need to duplicate the data at
2103         different places.
2105         * src/autofit/afwrtsys.h: New file.
2107         * src/autofit/aftypes.h (AF_WritingSystem): Include `afwrtsys.h' to
2108         define the enumeration values.
2110         * src/autofit/afglobal.c: Include `afwrtsys.h' to get the writing
2111         system specific header files.
2112         Include `afpic.h'.
2113         (af_writing_system_classes): Include `afwrtsys.h' to fill this
2114         array.
2116         * src/autofit/afpic.c: Include `afwrtsys.h' to get the writing
2117         system specific header files.
2118         (autofit_module_class_pic_init): Include `afwrtsys.h' for
2119         initialization.
2120         * src/autofit/afpic.h (AF_WRITING_SYSTEM_CLASSES_COUNT,
2121         AF_WRITING_SYSTEM_CLASSES_REC_COUNT): Removed.  Use
2122         `AF_WRITING_SYSTEM_MAX' instead.
2124 2013-08-02  Werner Lemberg  <wl@gnu.org>
2126         [sfnt] Fix compilation with g++.
2128         * src/sfnt/pngshim.c (error_callback, read_data_from_FT_stream): Use
2129         cast.
2130         (Load_SBit_Png): Pacify compiler.
2132 2013-08-02  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2133             Werner Lemberg  <wl@gnu.org>
2135         [autofit] Fix `make multi'.
2137         * include/freetype/config/ftconfig.h (FT_LOCAL_ARRAY,
2138         FT_LOCAL_ARRAY_DEF): New macros.
2140         * src/autofit/afglobal.c (af_writing_system_classes,
2141         af_script_classes): Use FT_LOCAL_ARRAY_DEF.
2142         * src/autofit/afglobal.h: Declare `af_writing_system_classes' and
2143         `af_script_classes'.
2144         * src/autofit/afloader.c: Include `afpic.h'.
2146 2013-08-01  Werner Lemberg  <wl@gnu.org>
2148         Another round of cppcheck nitpicks.
2150         The call was (from the top-level of the FreeType tree):
2152           cppcheck --force \
2153                    --enable=all \
2154                    -I /usr/include \
2155                    -I /usr/local/include \
2156                    -I /usr/lib/gcc/i586-suse-linux/4.7/include \
2157                    -I include \
2158                    -I include/freetype \
2159                    -I include/freetype/config \
2160                    -I include/freetype/internal \
2161                    -DFT2_BUILD_LIBRARY \
2162                    . &> cppcheck.log
2164         using cppcheck git commit f7e93f99.
2166         Note that cppcheck still can't handle `#include FOO' (with `FOO' a
2167         macro).
2169         */* Improve variable scopes.
2170         */* Remove redundant initializations which get overwritten.
2172         * src/gxvalid/*: Comment out redundant code or guard it with
2173         FT_DEBUG_LEVEL_TRACE.
2175 2013-07-30  Werner Lemberg  <wl@gnu.org>
2177         [autofit] Introduce `writing systems'.
2179         This patch adds a new top level to the auto-hinter's script class
2180         hierarchy.  It defines `writing systems' which can contain multiple
2181         scripts.
2183         For example, the `latin' writing system (in file `aflatin.c') is
2184         able to support scripts like Latin, Cyrillic, Armenian, etc., which
2185         can be handled similarly.
2187         Scripts are now named using four-letter OpenType tags.
2189         * src/autofit/aftypes.h (AF_ScriptClassRec): Move relevant members
2190         to...
2191         (AF_WritingSystemClassRec): This new structure.  It holds pointers
2192         to functions which can be shared among related scripts.
2193         (AF_WritingSystem): New enumeration.
2194         (AF_Script): Revised values using four-letter tags.
2195         (AF_DEFINE_WRITING_SYSTEM_CLASS): New macro.
2196         (AF_DEFINE_SCRIPT_CLASS): Updated.
2198         * src/autofit/afglobal.c (af_writing_system_classes): New global,
2199         constant array.
2200         (af_script_classes): Updated.
2201         (af_face_globals_free): Updated.
2202         Remove assertion.
2203         (af_face_globals_get_metrics): Updated.
2205         * src/autofit/afglobal.h (AF_SCRIPT_FALLBACK)
2206         [!AF_CONFIG_OPTION_CJK]: Handle this case.
2208         * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
2209         Updated.
2211         * src/autofit/afpic.c (autofit_module_class_pic_init): Updated;
2212         initialize structures for both writing systems and scripts.
2213         * src/autofit/afpic.h: Updated.
2214         (AF_WRITING_SYSTEM_CLASSES_GET): New macro.
2216         * src/autofit/afcjk.c (af_cjk_writing_system_class): New writing
2217         system.
2218         (af_cjk_uniranges): Renamed to...
2219         (af_hani_uniranges): This.
2220         (af_cjk_script_class): Reduced and renamed to...
2221         (af_hani_script_class): This.
2222         * src/autofit/afcjk.h: Updated.
2224         * src/autofit/afdummy.c (af_dummy_writing_system_class): New writing
2225         system.
2226         (af_dummy_script_class): Reduced and renamed to...
2227         (af_dflt_script_class): This.
2228         * src/autofit/afdummy.h: Updated.
2230         * src/autofit/afindic.c (af_indic_writing_system_class): New writing
2231         system.
2232         (af_indic_uniranges): Renamed to...
2233         (af_deva_uniranges): This.
2234         (af_indic_script_class): Reduced and renamed to...
2235         (af_deva_script_class): This.
2236         * src/autofit/afcjk.h: Updated.
2238         * src/autofit/aflatin.c (af_latin_writing_system_class): New writing
2239         system.
2240         (af_latin_uniranges): Renamed to...
2241         (af_latn_uniranges): This.
2242         (af_latin_script_class): Reduced and renamed to...
2243         (af_latn_script_class): This.
2244         * src/autofit/aflatin.h: Updated.
2246         * src/autofit/aflatin2.c (af_latin2_writing_system_class): New
2247         writing system.
2248         (af_latin2_uniranges): Renamed to...
2249         (af_ltn2_uniranges): This.
2250         Synchronize ranges with `latin'.
2251         (af_latin2_script_class): Reduced and renamed to...
2252         (af_ltn2_script_class): This.
2253         * src/autofit/aflatin2.h: Updated.
2255 2013-07-30  Werner Lemberg  <wl@gnu.org>
2257         [autofit] Variable renaming.
2259         * src/autofit/aftypes.h (AF_ScriptMetricsRec):
2260         s/clazz/script_class/.
2261         Update all users.
2263 2013-07-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2265         Ignore libpng-config under cross-building configuration,
2266         because it will return the flags for the hosting environment.
2268         * builds/unix/configure.raw: Ignore libpng-config when
2269         `cross_compiling' == yes.
2271 2013-07-30  Behdad Esfahbod  <behdad@google.com>
2273         Prevent division by zero by a transparent color.
2275         * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra):
2276         Return 0 immediately, when alpha channel is zero.
2278 2013-07-25  Behdad Esfahbod  <behdad@google.com>
2280         Add FT_FACE_FLAG_COLOR and FT_HAS_COLOR.
2282         Also disambiguate Google's color bitmap tables.
2284         * include/freetype/freetype.h (FT_FACE_FLAG_COLOR, FT_HAS_COLOR):
2285         New macros.
2287         * include/freetype/internal/tttypes.h (TT_SbitTableType): Add
2288         TT_SBIT_TABLE_TYPE_CBLC.
2290         * src/sfnt/sfobjs.c (sfnt_load_face): Handle FT_FACE_FLAG_COLOR.
2292         * src/sfnt/ttsbit.c (tt_face_load_sbit,
2293         tt_face_load_strike_metrics, tt_face_load_sbit_image): Handle
2294         TT_SBIT_TABLE_TYPE_CBLC.
2296 2013-07-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2298         [sfnt] Fix for `make multi' target.
2300         * src/sfnt/pngshim.c (Load_SBit_Png): Use FT_LOCAL_DEF().
2302 2013-07-20  Werner Lemberg  <wl@gnu.org>
2304         * docs/INSTALL.GNU: Updated.
2306 2013-07-20  Behdad Esfahbod  <behdad@google.com>
2308         [sfnt] Fix `sbix' table version handling.
2310         * src/sfnt/ttsbit.c (tt_face_load_sbit) [TT_SBIT_TABLE_TYPE_SBIX]:
2311         USHORT version numbers are to be considered as `minor'.
2313 2013-07-19  Werner Lemberg  <wl@gnu.org>
2315         [autofit] Fix segment classification for blue zones.
2317         The old code (essentially unchanged since the very beginning)
2318         incorrectly handled this configuration
2320                        x -o- x
2321                         /   \
2322                        /     \
2323                       /       \
2324                      o         o
2326         as flat and this
2328                         o               o
2329                        /               /
2330                      x|              x|
2331                       |               |
2332                       o---------------o
2334         as round.  (`o' and `x' are on and off points, respectively).
2336         This is a major change which should improve the rendering results
2337         enormously for many TrueType fonts, especially in the range approx.
2338         20-40ppem, fixing the appearance of many overshoots.
2340         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Look at the
2341         first and last points of the segment, not the points right before
2342         and after.
2344 2013-07-19  Behdad Esfahbod  <behdad@google.com>
2346         [sfnt] `sbix' fix-ups.
2348         * src/sfnt/sfobjs.c (sfnt_load_face): Apple's `sbix' color bitmaps
2349         are rendered scaled and then the `glyf' outline rendered on top.  We
2350         don't support that yet, so just ignore the `glyf' outline and
2351         advertise it as a bitmap-only font.
2353         * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
2354         [TT_SBIT_TABLE_TYPE_SBIX]: Return metrics in 26.6 units.
2355         (tt_face_load_sbix_image): Typo.
2357 2013-07-18  Behdad Esfahbod  <behdad@google.com>
2359         [sfnt] Add support for Apple's `sbix' color bitmap table.
2361         * include/freetype/internal/tttypes.h (TT_SBit_MetricsRec): Widen
2362         fields to FT_Short and FT_UShort, respectively.
2363         (TT_SBitTableType): New enumeration.
2364         (TT_FaceRec): Add `sbit_table_type' field.
2366         * include/freetype/tttags.h (TTAG_sbix): New macro.
2368         * src/sfnt/pngshim.c (Load_SBit_Png): Pass a more generic
2369         FT_GlyphSlot argument instead FT_Bitmap.
2370         Add flag to control map and metrics handling.
2371         Update all users.
2373         * src/sfnt/ttsbit.c: Include `ttmtx.h'.
2374         (tt_face_load_eblc): Renamed to...
2375         (tt_face_load_sbit): This.
2376         Handlic `sbix' bitmaps.
2377         (tt_face_free_eblc): Renamed to...
2378         (tt_face_load_sbit): This.
2379         Updated.
2380         (tt_face_load_strike_metrics): Handle `sbix' bitmaps.
2381         (tt_face_load_sbix_image): New function.
2382         (tt_sbit_decoder_alloc_bitmap, tt_sbit_decoder_load_image,
2383         tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
2384         tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
2385         tt_sbit_decoder_load_image, tt_sbit_decoder_load_bitmap): Don't pass
2386         and handle load flags.
2387         (tt_sbit_decoder_load_bitmap) [!FT_CONFIG_OPTION_USE_PNG]: Better
2388         handle formats 17-19.
2389         Move color to grayscale conversion to...
2390         (tt_face_load_sbit_image): Here.
2391         Handle `sbix' bitmaps.
2393         * src/sfnt/pngshim.h: Updated.
2394         * src/sfnt/ttsbit.h: Updated.
2395         * src/sfnt/sfdriver.c: Updated.
2397 2013-07-18  Werner Lemberg  <wl@gnu.org>
2399         [sfnt] Ignore invalid magic number in `head' or `bhed'.
2401         Other font engines seem to ignore it also.  Problem reported by
2402         Hin-Tak Leung <htl10@users.sourceforge.net>.
2404         * src/sfnt/ttload.c (check_table_dir): Don't abort but warn only if
2405         we have an invalid magic number.
2407 2013-07-16  Werner Lemberg  <wl@gnu.org>
2409         [smooth] Fix segfault caused by previous commit.
2411         * src/smooth/ftgrays.c (gray_set_cell): Always compute
2412         `ras.invalid'.
2414 2013-07-16  David Turner  <digit@google.com>
2416         [smooth] Improve performance.
2418         Provide a work-around for an ARM-specific performance bug in GCC.
2419         This speeds up the rasterizer by more than 5%.
2421         Also slightly optimize `set_gray_cell' and `gray_record_cell' (which
2422         also improves performance on other platforms by a tiny bit (<1%).
2424         * src/smooth/ftgrays.c (FT_DIV_MOD): New macro.
2425         Use it where appropriate.
2427         (gray_record_cell, gray_set_cell, gray_move_to,
2428         gray_convert_glyph_inner): Streamline condition handling.
2430 2013-07-16  David Turner  <digit@google.com>
2432         [truetype] Add assembler code for TT_MulFix14 and TT_DotFix14.
2434         This patch provides slightly optimized versions for ARM, x86, and
2435         x86_64 CPUs if built with GCC.
2437         Also remove some dead code.
2439         * src/truetype/ttinterp.c (TT_MulFix14_arm, TT_MulFix14_long_long,
2440         TT_DotFix14_long_long): New functions.
2442 2013-07-16  David Turner  <digit@google.com>
2444         Optimize FT_MulFix for x86_64 GCC builds.
2446         This patch provides an optimized `FT_MulFix' implementation for
2447         x86_64 machines when FreeType is built with GCC, or compatible
2448         compilers like Clang.
2450         Example:
2451           bin/ftbench -p -t 5 -s 14 -f 0008 Arial.ttf
2453         Before:
2455           Load                       4.863 us/op
2456           Load_Advances (Normal)     4.816 us/op
2457           Load_Advances (Fast)       0.028 us/op
2458           Render                     2.753 us/op
2459           Get_Glyph                  0.463 us/op
2460           Get_CBox                   0.077 us/op
2461           Get_Char_Index             0.023 us/op
2462           Iterate CMap              13.898 us/op
2463           New_Face                  12.368 us/op
2464           Embolden                   0.028 us/op
2465           Get_BBox                   0.302 us/op
2467         After:
2469           Load                       4.617 us/op
2470           Load_Advances (Normal)     4.645 us/op
2471           Load_Advances (Fast)       0.027 us/op
2472           Render                     2.789 us/op
2473           Get_Glyph                  0.460 us/op
2474           Get_CBox                   0.077 us/op
2475           Get_Char_Index             0.024 us/op
2476           Iterate CMap              13.403 us/op
2477           New_Face                  12.278 us/op
2478           Embolden                   0.028 us/op
2479           Get_BBox                   0.301 us/op
2481         * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
2482         (FT_MulFix_x86_64): New function.
2484 2013-07-16  David Turner  <digit@google.com>
2486         Speed up ARMv7 support.
2488         When building for ARMv7 with thumb2 instructions, the optimized
2489         `FT_MulFix_arm' assembly routine was not being used.
2491         The reason for this is in the `ftconfig.h' header, namely:
2493         - The assembly routine uses the `smull' instruction which is not
2494           available when generating Thumb-1 machine code.  It is available
2495           in Thumb-2 mode, though.
2497         - The header was written a long time ago before Thumb-2 became
2498           widely popular (e.g. with Android).  So it simply doesn't use the
2499           assembly routine if the `__thumb__' built-in macro is defined.
2501         - When compiling in Thumb-2 mode, the compiler will define both
2502           `__thumb__' and `__thumb2__'.
2504         By checking for `(__thumb2__ || !__thumb__)', we ensure that the
2505         assembly routine is only avoided when generating Thumb-1 code.
2507         Given that this is performance-sensitive function, this improves
2508         `ftbench' as follows on a Galaxy Nexus:
2510                                    Before (us/op)   After (us/op)
2512           - loading Arial.ttf glyphs at 14 ppem [1]
2514               Load                   34.285          33.098
2516           - same operation with the light auto-hinter [2]
2518               Load                   31.317          29.590
2520           - same operation without hinting [3]
2522               Load                    6.143           5.376
2524           - loading Arial.ttf advances at 14 ppem [4]
2526               Load_Advances (normal) 34.216          33.016
2527               Load_Advances (fast)    0.176           0.176
2529           [1] ftbench -t 5 -p -s 14 -b a -f 0008 Arial.ttf
2530           [2] ftbench -t 5 -p -s 14 -b a -r 1 -f 0028 Arial.ttf
2531           [3] ftbench -t 5 -p -s 14 -b a -f 000a Arial.ttf
2532           [4] ftbench -t 5 -p -s 14 -b b -f 0008 Arial.ttf
2534         * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
2535         (FT_MULFIX_ASSEMBLER): Fix handling for ARMv7.
2537 2013-06-28  Werner Lemberg  <wl@gnu.org>
2539         * docs/CHANGES: Updated.
2541 2013-06-27  Werner Lemberg  <wl@gnu.org>
2543         * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix bitmap width guard.
2545 2013-06-25  Werner Lemberg  <wl@gnu.org>
2547         [cff] Add darkening limit to `darkening-parameters'.
2549         * src/cff/cffdrivr.c (cff_property_set): Add check.
2551 2013-06-25  Werner Lemberg  <wl@gnu.org>
2553         [cff] Add `darkening-parameters' property.
2555         * include/freetype/ftcffdrv.h: Document it.
2557         * src/cff/cffdrivr.c (cff_property_set, cff_property_get): Handle
2558         `darkening-parameters' property.
2560         * src/cff/cf2font.h (CF2_FontRec): Add `darkenParams' array.
2562         * src/cff/cf2font.c (cf2_computeDarkening): Add `darkenParams'
2563         argument and use it.
2564         Update all callers.
2566         * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Copy
2567         `darken_params' values.
2569         * src/cff/cffobjs.h (CFF_DriverRec): Add `darken_params' array.
2571         * src/cff/cffobjs.c (cff_driver_init): Set default values for
2572         `darken_params'.
2574 2013-06-25  Werner Lemberg  <wl@gnu.org>
2576         [docmaker] Code shuffling.
2578         * src/tools/docmaker/tohtml.py (re_url): Move regexp...
2579         * src/tools/docmaker/sources.py: ... to this file.
2581 2013-06-25  Werner Lemberg  <wl@gnu.org>
2583         [docmaker] Remove unused functions.
2585         * src/tools/docmaker/content.py (DocMarkup.get_start,
2586         DocBlock.get_markup_name): Removed.
2587         * src/tools/docmaker/tohtml.py (html_quote0, dump_html_code,
2588         HtmlFormatter.make_html_words): Removed.
2590 2013-06-25  Werner Lemberg  <wl@gnu.org>
2592         * builds/freetype.mk (dll): Remove target.
2594         Problem reported by Jörg Günnewig <joerg.guennewig@googlemail.com>.
2596 2013-06-25  Werner Lemberg  <wl@gnu.org>
2598         [docmaker] Recognise URLs.
2600         * src/tools/docmaker/tohtml.py (re_url): New regular expression.
2601         (make_html_para): Use it.
2603 2013-06-19  Werner Lemberg  <wl@gnu.org>
2605         * Version 2.5.0.1 released.
2606         ===========================
2609         Tag sources with `VER-2-5-0-1'.
2611         * include/freetype/config/ftoption.h: Undefine
2612         CFF_CONFIG_OPTION_OLD_ENGINE.
2613         * devel/ftoption.h: Define CFF_CONFIG_OPTION_OLD_ENGINE.
2615 2013-06-19  Werner Lemberg  <wl@gnu.org>
2617         * builds/unix/install.mk (install): Don't create `cache' directory.
2619         Found by Peter Breitenlohner <peb@mppmu.mpg.de>.
2621 2013-06-19  Werner Lemberg  <wl@gnu.org>
2623         * Version 2.5.0 released.
2624         =========================
2627         Tag sources with `VER-2-5-0'.
2629         * docs/VERSION.DLL: Update documentation and bump version number to
2630         2.5.0.
2632         * README, Jamfile (RefDoc),
2633         builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
2634         builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
2635         builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
2636         builds/win32/visualc/freetype.dsp,
2637         builds/win32/visualc/freetype.vcproj,
2638         builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
2639         builds/win32/visualce/freetype.vcproj,
2640         builds/win32/visualce/index.html,
2641         builds/wince/vc2005-ce/freetype.vcproj,
2642         builds/wince/vc2005-ce/index.html,
2643         builds/wince/vc2008-ce/freetype.vcproj,
2644         builds/wince/vc2008-ce/index.html: s/2.4.12/2.5.0/, s/2412/250/.
2646         * include/freetype/freetype.h (FREETYPE_MINOR): Set to 5.
2647         (FREETYPE_PATCH): Set to 0.
2649         * builds/unix/configure.raw (version_info): Set to 16:2:10.
2651         * src/base/ftobjs.c (FT_Open_Face): Pacify compiler.
2652         * src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIRP): Ditto.
2654 2013-06-18  Werner Lemberg  <wl@gnu.org>
2656         Fix Savannah bug #39269.
2658         * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Free memory in
2659         case of reacollocation failures.
2661 2013-06-18  Andrew Church  <achurch+savannah@achurch.org>
2663         Fix Savannah bug #39266.
2665         If memory allocations fail at certain points while opening a font,
2666         FreeType can either crash due to a NULL dereference or leak memory.
2668         * include/freetype/internal/ftobjs.c (FT_Face_InternalRec,
2669         FT_LibraryRec): Make `refcount' a signed integer.  If, for example,
2670         FT_Open_Face() fails in a memory allocation before the face's
2671         reference count is set to 1, a subsequent `FT_Done_Library' call
2672         would otherwise loop over `FT_Done_Face' 2^32 times before freeing
2673         the face.
2675         * src/base/ftobjs.c (open_face): Initialize `stream' and friends
2676         earlier.
2677         (FT_Open_Face) <Fail>: Behave correctly if `node' is NULL.
2678         (FT_Destroy_Module) <Fail>: Check that `renderer_clazz' is valid.
2680 2013-06-14  Werner Lemberg  <wl@gnu.org>
2682         * src/smooth/ftgrays.c One final pragma to silence 64-bit MSVC.
2684 2013-06-06  Dave Arnold  <darnold@adobe.com>
2685             Werner Lemberg  <wl@gnu.org>
2687         [cff] Add code to Adobe's engine to handle ppem > 2000.
2689         * src/cff/cffgload.c (cff_slot_load): If we get
2690         FT_Err_Glyph_Too_Big, retry unhinted and scale up later on.
2692 2013-06-12  Werner Lemberg  <wl@gnu.org>
2694         Another try on pragmas.
2696         * include/freetype/internal/ftdebug.h: Move pragmas to...
2697         * include/freetype/internal/internal.h: ... this file since it gets
2698         included by all source files.
2699         * include/freetype/internal/ftserv.h: Remove pragma which has no
2700         effect.
2702 2013-06-12  Werner Lemberg  <wl@gnu.org>
2704         * include/freetype/internal/ftdebug.h: Disable MSVC warning C4127.
2706         This partially undoes commit 3f6e0e0c.
2708 2013-06-12  Werner Lemberg  <wl@gnu.org>
2710         More compiler warning fixes.
2712         */*: Use cast to `FT_Bool' (or `Bool') where appropriate.
2714 2013-06-10  Werner Lemberg  <wl@gnu.org>
2716         [truetype] Improve handling of broken sbit advance widths.
2718         * src/truetype/ttgload.c (TT_Load_Glyph): Use the glyph's (scaled)
2719         `linearHoriAdvance' if the sbit's `horiAdvance' value is zero.
2721         Cf. font `Fixedsys Excelsior' v3.01 (FSEX300.ttf), glyph A, 16ppem.
2723 2013-06-10  Werner Lemberg  <wl@gnu.org>
2725         [sfnt] Improve embedded bitmap tracing.
2727         * src/base/ftobjs.c (FT_Request_Size): Move trace message regarding
2728         bitmap strike match to...
2729         (FT_Match_Size): This function.
2731         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics,
2732         tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
2733         tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
2734         tt_sbit_decoder_load_image): Decorate with tracing messages.
2736 2013-06-10  Werner Lemberg  <wl@gnu.org>
2738         Fix Savannah bug #39160.
2740         * src/truetype/ttinterp.c (Ins_SDPVTL): Set projection vector too
2741         for the degenerate case.
2743 2013-06-09  David Turner  <digit@google.com>
2745         * src/cache/ftcmanag.c (FTC_Manager_Reset): Add missing cache flush.
2747         This code, present since eight(!) years in the unused `CACHE'
2748         branch, has been forgotten to apply to the master branch.  It's
2749         really amazing that noone has ever complained since
2750         `FTC_Manager_Reset' is pretty useless without flushing the cache.
2752 2013-06-07  Werner Lemberg  <wl@gnu.org>
2754         Add and improve pragmas for MSVC compiler.
2756         * include/freetype/internal/ftdebug.h: Remove pragmas.
2757         * include/freetype/internal/ftserv.h: Use push and pop for pragmas.
2758         * include/freetype/internal/ftvalid.h: Handle warning C4324.
2759         * src/base/ftobjs.c: Use push and pop for pragmas.
2760         * src/gzip/ftgzip.c: Handle warning C4244.
2762 2013-06-07  Werner Lemberg  <wl@gnu.org>
2764         [cff] s/cf2_getGlyphWidth/cf2_getGlyphOutline/.
2766         * src/cff/cf2font.c, src/cff/cf2font.h, src/cff/cf2ft.c: Do it.
2768 2013-06-06  Dave Arnold  <darnold@adobe.com>
2770         [cff] Add early exit feature for width-only calls.
2772         This is for `FT_Get_Advance'.
2774         There are 7 places where the spec says the width can be defined:
2776           hstem/hstemhm
2777           vstem/vstemhm
2778           cntrmask/hintmask
2779           hmoveto
2780           vmoveto
2781           rmoveto
2782           endchar
2784         * src/cff/cf2intrp.c (cf2_doStems): Exit early for width-only calls,
2785         if possible.
2787         (cf2_interpT2CharString) <cf2_cmdHSTEM>, <cf2_cmdVSTEM>,
2788         <cf2_cmdVMOVETO>, <cf2_cmdENDCHAR>, <cf2_cmdHINTMASK>,
2789         <cf2_cmdRMOVETO>, <cf2_cmdHMOVETO>: Exit early for width-only calls.
2791 2013-06-06  Werner Lemberg  <wl@gnu.org>
2793         Next round of compiler fixes.
2795         * builds/win32/ftdebug.c, builds/wince/ftdebug.c (ft_debug_init):
2796         Add proper cast.
2798         * include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Fix
2799         cast.
2800         * include/freetype/internal/ftstream.h: Decorate stream and frame
2801         macros with `FT_Long' and `FT_ULong' as appropriate.
2803         * src/base/ftrfork.c (raccess_guess_darwin_hfsplus,
2804         raccess_guess_darwin_newvfs): Use cast.
2806         * src/bdf/bdflib.c (_bdf_set_default_spacing): Use cast.
2808         * src/cache/ftcmanag.c (FTC_Manager_Check): Fix cast.
2809         * src/cache/ftcmanag.h (FTC_ManagerRec): Ditto.
2811         * src/cff/cf2arrst.c (cf2_arrstack_setNum_Elements): Use cast.
2812         * src/cff/cf2ft.c (cf2_freeSeacComponent): Ditto.
2813         * src/cff/cffobjs.c (remove_subset_prefix, remove_style): Ditto.
2815         * src/cid/cidparse.c (cid_parser_new): Use cast.
2817         * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Use cast.
2819         * src/psaux/psobjs.c (reallocate_t1_table): Fix argument type.
2821         * src/raster/ftraster.c (ft_black_reset): Use cast.
2823         * src/truetype/ttgxvar.c (FT_Stream_FTell): Use cast.
2824         (ALL_POINTS): Fix cast.
2826         * src/type1/t1driver.c (t1_ps_get_font_value): Add casts.
2827         * src/type1/t1parse.c (T1_Get_Private_Dict): Add cast.
2829 2013-06-05  Dave Arnold  <darnold@adobe.com>
2831         Fix more MSVC Win32 compiler warnings.
2833         * src/base/ftobjs.c: Fix typo in MS pragma.
2835         * src/base/bdflib.c (_bdf_set_default_spacing, _bdf_add_property):
2836         `lineno' is only used in debug mode.
2838         * src/cff/cf2ft.c (cf2_builder_moveTo): `params' is only used in
2839         debug mode.
2841 2013-06-05  Werner Lemberg  <wl@gnu.org>
2843         Fix compiler warnings.
2845         * include/freetype/internal/ftmemory.h: Decorate memory allocation
2846         macros with `FT_Long' where appropriate.
2847         Remove duplicate of FT_MEM_QRENEW_ARRAY definition.
2849         * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use
2850         cast.
2852         * src/base/ftobjs.c: Add warning disabling pragma for MSVC while
2853         including `md5.c'.
2855         * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdESC>: Add
2856         cast.
2858         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Fix casts.
2859         (tt_sbit_decoder_load_bitmap): Beautification.
2861         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Initialize
2862         variables (earlier).
2864         * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Pacify compiler.
2866         * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use unsigned constants
2867         where appropriate.
2869         * src/type1/t1load.c (T1_Get_MM_Var): Ditto.
2871 2013-06-04  Werner Lemberg  <wl@gnu.org>
2873         * src/cff/cf2font.c (cf2_getGlyphWidth): Initialize `advWidth'.
2875         Problem reported by Ingmar Sittl <ingmar.sittl@elektrobit.com>.
2877 2013-06-04  Werner Lemberg  <wl@gnu.org>
2879         Apply fixes for cppcheck nitpicks.
2881           http://cppcheck.sourceforge.net/
2883         The call was (from the top-level of the FreeType tree):
2885           cppcheck --force \
2886                    --enable=all \
2887                    -I include \
2888                    -I include/freetype/ \
2889                    -I include/freetype/config/ \
2890                    -I include/freetype/internal/ \
2891                    . &> cppcheck.log
2893         Note that the current version heavily chokes on FreeType, delivering
2894         many wrong results.  I will report those issues to the cppcheck team
2895         so that a newer version gives improved results hopefully.
2897         */* Improve variable scopes.
2898         */* Remove redundant initializations which get overwritten.
2900         * src/base/ftmac.c, builds/mac/ftmac.c (count_faces_scalable):
2901         Remove unused variable.
2903         * src/base/ftdbgmem.c (ft_mem_table_destroy): `table' can't be zero.
2905         * src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt1_entry_validate):
2906         Remove functionless code.
2908         * src/tools/ftrandom.c (main): Fix memory leak.
2910 2013-06-03  Werner Lemberg  <wl@gnu.org>
2912         Add CFF_CONFIG_OPTION_OLD_ENGINE configuration option.
2914         This controls whether the old FreeType CFF engine gets compiled into
2915         FreeType.  It is now disabled by default.
2917         * devel/ftoption.h, include/freetype/config/ftoption.h
2918         (CFF_CONFIG_OPTION_OLD_ENGINE): New macro.
2920         * src/cff/cffdrivr.c (cff_property_set), src/cff/cffgload.c
2921         (CFF_Operator, cff_argument_counts, cff_builder_add_point,
2922         cff_operator_seac, cff_decoder_parse_charstrings, cff_slot_load),
2923         src/cff/cffgload.h, src/cff/cffobjs.c (cff_driver_init): Use
2924         CFF_CONFIG_OPTION_OLD_ENGINE to guard the affected code.
2926         * docs/CHANGES: Updated.
2928 2013-06-02  Werner Lemberg  <wl@gnu.org>
2930         Fix PNG library handling.
2932         * builds/unix/configure.raw: Don't use LIBPNG_LIBS but
2933         LIBPNG_LDFLAGS.
2935 2013-05-23  Behdad Esfahbod  <behdad@google.com>
2937         Add support for color embedded bitmaps (eg. color emoji).
2939         A new load flag, FT_LOAD_COLOR, makes FreeType load color
2940         embedded-bitmaps, following this draft specification
2942           https://color-emoji.googlecode.com/git/specification/v1.html
2944         which defines two new SFNT tables, `CBDT' and `CBLC' (named and
2945         modeled after `EBDT' and `EBLC', respectively).  The color bitmaps
2946         are stored in the new FT_PIXEL_MODE_BGRA format to represent BGRA
2947         pre-multiplied sRGB images.  If PNG support is available, PNG color
2948         images as defined in the same proposed specification are supported
2949         also.
2951         Note that color bitmaps are converted to grayscale if client didn't
2952         ask for color.
2954         * builds/unix/configure.raw: Search for libpng.
2955         Add `--without-png' option.
2957         * devel/ftoption.h, include/freetype/config/ftoption.h
2958         (FT_CONFIG_OPTION_USE_PNG): New macro.
2960         * include/freetype/freetype.h (FT_LOAD_COLOR): New load flag.
2962         * include/freetype/ftimage.h (FT_Pixel_Mode): Add
2963         `FT_PIXEL_MODE_BGRA'.
2965         * include/freetype/tttags.h (TTAG_CBDT, TTAG_CBLC): New tags.
2967         * src/base/ftbitmap.c (FT_Bitmap_Embolden): Updated.
2968         (ft_gray_for_premultiplied_srgb_bgra): New function.
2969         (FT_Bitmap_Convert): Handle FT_PIXEL_MODE_BGRA.
2971         * src/sfnt/pngshim.c, src/sfnt/pngshim.h: New files.
2973         * src/sfnt/sfnt.c: Include `pngshim.c'.
2975         * src/sfnt/ttsbit.c: Include FT_BITMAP_H and `pngshim.h'
2976         (tt_face_load_eblc): Load `CBLC'.
2977         (tt_sbit_decoder_init): Load `CBDT'.
2978         (tt_sbit_decoder_alloc_bitmap): Pass load flags to select between
2979         color and grayscale bitmaps.
2980         Set `num_grays'.  This is used by `ftview' to choose the blending
2981         algorithm.
2982         (tt_sbit_decoder_load_byte_aligned,
2983         tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_compound,
2984         tt_sbit_decoder_load_image): Pass load flag.
2985         s/write/pwrite/.
2986         Don't call `tt_sbit_decoder_alloc_bitmap'.
2987         Updated.
2988         (tt_sbit_decoder_load_png) [FT_CONFIG_OPTION_USE_PNG]: New function.
2989         (tt_sbit_decoder_load_bitmap): Pass load flag.
2990         Handle new glyph formats 17, 18, and 19.
2991         Call `tt_sbit_decoder_alloc_bitmap'.
2992         Flatten color bitmaps if necessary.
2993         (tt_face_load_sbit_image): Updated.
2995         * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `pngshim.c'.
2997         * docs/CHANGES: Updated.
2999 2013-05-24  Guenter  <info@gknw.net>
3001         Apply Savannah patch #8055.
3003         Make `apinames' create an import file for NetWare.
3005         * src/tools/apinames.c (PROGRAM_VERSION): Set to 0.2.
3006         (OutputFormat): Add `OUTPUT_NETWARE_IMP'.
3007         (names_dump): Handle it.
3008         (usage): Updated.
3009         (main): Handle new command line flag `-wN'.
3011 2013-05-23  Behdad Esfahbod  <behdad@behdad.org>
3013         Compilation fix.
3015         * src/truetype/ttinterp.c (TT_RunIns)
3016         [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Make it work.
3018 2013-05-22  Infinality  <infinality@infinality.net>
3020         [truetype] Formatting and an additional subpixel tweak.
3022         * src/truetype/ttinterp.c (Ins_SHPIX): Formatting fix.
3023         * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules):
3024         Revert previous modification for Verdana clones.
3026 2013-05-22  Infinality  <infinality@infinality.net>
3028         [truetype] Adjust subpixel zp2 moves and tweak rules.
3030         These modifications fix thin diagonal stems in some legacy fonts.
3032         * src/truetype/ttinterp.c (Direct_Move_X): Remove unused macro.
3033         (Move_Zp2_Point): Don't always disable x moves for subpixel rendering.
3034         (Ins_SHP): Disable x moves here for subpixel rendering.
3035         (Ins_SHPIX): Only disable x moves in compatibility mode.
3036         Split out zp2 move reversals and reorder conditional respectively.
3038         * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules): Fix oversight.
3039         Only adjust Verdana clones for 17 ppem.
3040         (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Courier New.
3041         (ALWAYS_SKIP_DELTAP_Rules): Found additional cases for Arial `s'.
3043 2013-05-20  Infinality  <infinality@infinality.net>
3045         [truetype] Simplify and improve subpixel function detection.
3047         Some small enhancements have allowed the removal of many macros and
3048         the simplification of existing rules in `ttsubpix.c'.
3050         * src/truetype/ttsubpix.h (SPH_TWEAK_ALLOW_X_DMOVEX,
3051         SPH_TWEAK_ALLOW_X_MOVE_ZP2,
3052         SPH_TWEAK_DELTAP_SKIP_EXAGGERATED_VALUES,
3053         SPH_TWEAK_SKIP_INLINE_DELTAS, SPH_TWEAK_MIRP_CVT_ZERO): Removed.
3054         (SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP): New rule macro.
3056         * src/truetype/ttsubpix.c: Updated affected rules.
3058         * src/truetype/ttinterp.c (Direct_Move_X): Updated.
3059         (INS_FDEF): Add additional function detection.
3060         (INS_ENDF): Set runtime flag.
3061         (Ins_CALL): Skip the call under certain conditions.
3062         Remove bad code.
3063         (Ins_LOOPCALL): Skip the call under certain conditions.
3064         Remove bad code.
3065         (Move_Zp2_Point): Updated.
3066         (Ins_SHPIX): Updated.
3067         Skip the move under some situations.
3068         (Ins_MIAP): Improve conditions.
3069         (Ins_MIRP): Updated.
3070         (Ins_DELTAP): Skip move under certain conditions.
3071         Simplify conditions.
3072         (TT_RunIns): Updated.
3073         Add code to handle new function detection.
3074         Trace messages.
3076 2013-05-17  Werner Lemberg  <wl@gnu.org>
3078         Update more FT_Err_XXX macros using FT_ERR and FT_THROW;
3080         * builds/amiga/src/base/ftsystem.c, builds/mac/ftmac.c,
3081         builds/unix/ftsystem.c, builds/vms/ftsystem.c: Do it.
3083 2013-05-15  Werner Lemberg  <wl@gnu.org>
3085         [truetype] Add `interpreter-version' property.
3087         This makes the option TT_CONFIG_OPTION_SUBPIXEL_HINTING controllable
3088         at runtime.
3090         * include/freetype/ftttdrv.h: New file.
3092         * include/freetype/config/ftheader.h (FT_TRUETYPE_DRIVER_H): New
3093         macro.
3095         * src/truetype/ttdriver.c: Include FT_TRUETYPE_DRIVER_H.
3096         (tt_property_set, tt_property_get): Fill templates.
3098         * src/truetype/ttobjs.h (TT_DriverRec): Add `interpreter_version'
3099         member.
3100         Remove unused `extension_component' member.
3102         * src/truetype/ttgload.c: Include FT_TRUETYPE_DRIVER_H.
3103         (tt_get_metrics, TT_Hint_Glyph, TT_Process_Simple_Glyph,
3104         compute_glyph_metrics, tt_loader_init): Use `interpreter_version'.
3106         * src/truetype/ttinterp.c: Include FT_TRUETYPE_DRIVER_H.
3107         (SUBPIXEL_HINTING): New macro to check `interpreter_version' flag.
3108         Update all affected functions to use it.
3109         Use TT_INTERPRETER_VERSION_XXX where appropriate.
3111         * src/truetype/ttobjs.c: Include FT_TRUETYPE_DRIVER_H.
3112         (tt_driver_init): Initialize `interpreter_version'.
3114         * src/truetype/ttsubpix.c: Include FT_TRUETYPE_DRIVER_H.
3115         Use TT_INTERPRETER_VERSION_XXX where appropriate.
3117 2013-05-13  Werner Lemberg  <wl@gnu.org>
3119         [truetype] Avoid empty source file.
3121         * src/truetype/ttsubpix.c [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]:
3122         Provide dummy typedef.
3124 2013-05-13  Werner Lemberg  <wl@gnu.org>
3126         * src/cff/cf2font.c (cf2_getGlyphWidth): Fix uninitialized variable.
3128         Fix suggested by Vaibhav Nagarnaik <vnagarnaik@gmail.com>.
3130 2013-05-13  Brian Nixon  <bnixon@yahoo.com>
3132         Fix Savannah bug #38970.
3134         * src/base/ftdebug.c, builds/win32/ftdebug.c,
3135         builds/wince/ftdebug.c, builds/amiga/src/base/ftdebug.c
3136         (ft_debug_init): Don't read past the environment variable FT2_DEBUG.
3138 2013-05-12  Werner Lemberg  <wl@gnu.org>
3140         [truetype] Add framework for TrueType properties.
3142         * src/truetype/ttdrivr.c: Include FT_SERVICE_PROPERTIES_H.
3143         (tt_property_set, tt_property_get): New functions, still empty.
3144         Define `tt_service_properties' service.
3145         Update `tt_services'.
3147         * src/truetype/ttpic.h: Include FT_SERVICE_PROPERTIES_H.
3148         (TT_SERVICE_PROPERTIES_GET): New macro.
3149         (TTModulePIC): Add `tt_service_properties'.
3151 2013-05-12  Werner Lemberg  <wl@gnu.org>
3153         Fix Savannah bug #38967.
3155         * src/base/ftcalc.c (FT_DivFix) [FT_LONG64]: Fix cast.
3157 2013-05-12  Werner Lemberg  <wl@gnu.org>
3159         Introduce unsigned 64bit type (if available).
3161         * include/freetype/config/ftconfig.h: Define FT_UINT64 if available.
3162         [FT_LONG64]: Provide FT_UInt64.
3164         * builds/unix/ftconfig.in: Synchronized.
3166 2013-05-12  Werner Lemberg  <wl@gnu.org>
3168         Fix Savannah bug #38968.
3170         * include/freetype/ftmodapi.h: Add `FT_EXPORT' to
3171         FT_Property_{Set,Get}.
3172         * src/base/ftobjs.c: Add `FT_EXPORT_DEF' to
3173         FT_Property_{Set,Get}.
3175 2013-05-10  Werner Lemberg  <wl@gnu.org>
3177         [sfnt] Clean up bitmap code.
3179         * src/sfnt/ttsbit.c: Deleted.
3180         * src/sfnt/ttsbit0.c: Renamed to `ttsbit.c'.
3181         * rules.mk (SFNT_DRV_H): Updated.
3183 2013-05-10  Werner Lemberg  <wl@gnu.org>
3185         */* [FT_CONFIG_OPTION_OLD_INTERNALS]: Remove macro and guarded code.
3187 ----------------------------------------------------------------------------
3189 Copyright 2013-2014 by
3190 David Turner, Robert Wilhelm, and Werner Lemberg.
3192 This file is part of the FreeType project, and may only be used, modified,
3193 and distributed under the terms of the FreeType project license,
3194 LICENSE.TXT.  By continuing to use, modify, or distribute this file you
3195 indicate that you have read the license and understand and accept it
3196 fully.
3199 Local Variables:
3200 version-control: never
3201 coding: utf-8
3202 End: