michael@0: 2014-03-06 Werner Lemberg michael@0: michael@0: * Version 2.5.3 released. michael@0: ========================= michael@0: michael@0: michael@0: Tag sources with `VER-2-5-3'. michael@0: michael@0: * docs/VERSION.DLL: Update documentation and bump version number to michael@0: 2.5.3. michael@0: michael@0: * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, michael@0: builds/windows/vc2005/index.html, michael@0: builds/windows/vc2008/freetype.vcproj, michael@0: builds/windows/vc2008/index.html, michael@0: builds/windows/vc2010/freetype.vcxproj, michael@0: builds/windows/vc2010/index.html, michael@0: builds/windows/visualc/freetype.dsp, michael@0: builds/windows/visualc/freetype.vcproj, michael@0: builds/windows/visualc/index.html, michael@0: builds/windows/visualce/freetype.dsp, michael@0: builds/windows/visualce/freetype.vcproj, michael@0: builds/windows/visualce/index.html, michael@0: builds/wince/vc2005-ce/freetype.vcproj, michael@0: builds/wince/vc2005-ce/index.html, michael@0: builds/wince/vc2008-ce/freetype.vcproj, michael@0: builds/wince/vc2008-ce/index.html: s/2.5.2/2.5.3/, s/252/253/. michael@0: michael@0: * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3. michael@0: michael@0: * builds/unix/configure.raw (version_info): Set to 17:2:11. michael@0: * CMakeLists.txt (VERSION_PATCH): Set to 3. michael@0: * docs/CHANGES: Updated. michael@0: michael@0: 2014-03-06 Werner Lemberg michael@0: michael@0: Fixes for compilation with C++. michael@0: michael@0: * src/autofit/hbshim.c (scripts): Change type to `hb_script_t'. michael@0: (af_get_coverage): Updated. michael@0: (COVERAGE): Add cast. michael@0: michael@0: 2014-03-06 Sean McBride michael@0: michael@0: Remove more clang analyzer warnings. michael@0: michael@0: * src/bdf/bdflib.c (_bdf_readstream), src/truetype/ttgload.c michael@0: (TT_Load_Glyph): Remove dead stores. michael@0: michael@0: 2014-03-05 Werner Lemberg michael@0: michael@0: * builds/unix/configure.raw: Simplify. michael@0: michael@0: 2014-03-05 suzuki toshiya michael@0: michael@0: Fix a bug in configure in library dependency setting michael@0: Reported in https://bugs.freedesktop.org/show_bug.cgi?id=75652. michael@0: michael@0: * builds/unix/configure.raw: Use `x"${xxx}" != xno' style. michael@0: michael@0: 2014-03-04 Werner Lemberg michael@0: michael@0: Minor fix for `make devel'. michael@0: michael@0: * builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Don't use michael@0: pkg-config for bzip2 since not all GNU/Linux distributions have michael@0: `bzip2.pc' (and the header file `bzlib.h' is located in /usr/include michael@0: normally). michael@0: michael@0: 2014-03-04 Sean McBride michael@0: michael@0: Fix several clang static analyzer dead store warnings. michael@0: michael@0: * src/autofit/afhints.c (af_glyph_hints_reload, michael@0: af_glyph_hints_align_weak_points): Remove unnecessary assignments. michael@0: michael@0: * src/bdf/bdflib.c (bdf_font_load): Ditto. michael@0: michael@0: * src/pshinter/pshalgo.c (psh_glyph_compute_extrema, michael@0: psh_glyph_interpolate_other_points): Ditto. michael@0: michael@0: * src/type1/t1load.c (T1_Set_MM_Blend): Ditto. michael@0: michael@0: 2014-03-03 Werner Lemberg michael@0: michael@0: Rewrite library option handling in `configure'. michael@0: michael@0: o Introduce `auto' value for `--with-XXX' library options; this is michael@0: now the default. michael@0: michael@0: o First use `pkg-config' for library detection, then fall back to michael@0: other tests. michael@0: michael@0: * builds/unix/configure.raw (--with-zlib, --with-bzip2, --with-png, michael@0: --with-harfbuzz): Rewrite. michael@0: Use new `xxx_reqpriv', `xxx_libpriv', and `xxx_libstaticconf' michael@0: variables to collect data for `freetype2.pc' and `freetype-config'. michael@0: (FT2_EXTRA_LIBS): Renamed to ... michael@0: (ft2_extra_libs): This since it gets no longer substituted. michael@0: (REQUIRES_PRIVATE, LIBS_PRIVATE, LIBS_CONFIG, LIBSSTATIC_CONFIG): michael@0: New output variables, replacing `XXX_PKG' and `LIBXXX'. michael@0: Add notice at the end of `configure' showing the library michael@0: configuration. michael@0: michael@0: * builds/unix/freetype-config.in (--static): New command line michael@0: option. michael@0: (libs): Updated. michael@0: (staticlibs): New variable, to be used if `--static' is given. michael@0: * builds/doc/freetype-config.1: Document `--static'. michael@0: michael@0: * builds/unix/freetype2.in, builds/unix/unix-def.in: Updated. michael@0: michael@0: 2014-03-01 Werner Lemberg michael@0: michael@0: Avoid `long long' warnings with older gcc compilers. michael@0: Problem reported by Hin-Tak Leung . michael@0: michael@0: * builds/unix/configure.raw: Don't use gcc's `-pedantic' flag for michael@0: versions < 4.6. This is especially needed for Max OS X since this michael@0: OS runs a gcc variant (or emulation) based on version 4.2.1. michael@0: michael@0: 2014-03-01 Werner Lemberg michael@0: michael@0: * docs/INSTALL.CROSS: Revised and updated. michael@0: michael@0: 2014-03-01 Werner Lemberg michael@0: michael@0: Make `make clean' remove `freetype2.pc'. michael@0: michael@0: This is a generated file at build time, not configure time. michael@0: michael@0: * builds/unix/unix-def.in (DISTCLEAN): Move `freetype2.pc' to ... michael@0: (CLEAN): This variable. michael@0: michael@0: 2014-03-01 Werner Lemberg michael@0: michael@0: Use pkg-config for detecting libpng and libbz2 also. michael@0: michael@0: * builds/unix/configure.raw (HAVE_PKG): New variable. michael@0: Search for libbz2 using `pkg-config'; s/BZ2/BZIP2/. michael@0: Search for libpng using `pkg-config'. michael@0: Fix definition of `LIBHARFBUZZ' variable. michael@0: * builds/unix/freetype-config.in ($libs): Updated. michael@0: * builds/unix/freetype2.in: Add `URL' field. michael@0: Update `Requires.private' and `Libs.private'. michael@0: * builds/unix/unix-def.in: Updated. michael@0: michael@0: 2014-03-01 Werner Lemberg michael@0: michael@0: Add configure support for HarfBuzz. michael@0: michael@0: * builds/unix/pkg.m4: New file. michael@0: * builds/unix/configure.raw: Search for libharfbuzz using michael@0: `pkg-config'. michael@0: Add `--without-harfbuzz' option. michael@0: * builds/unix/freetype-config.in, builds/unix/freetype2.in, michael@0: builds/unix/unix-def.in (freetype-config, freetype2.pc): Handle michael@0: HarfBuzz. michael@0: michael@0: * docs/INSTALL.UNIX: Document interdependency of Freetype with michael@0: HarfBuzz. michael@0: michael@0: 2014-02-28 Alexei Podtelezhnikov michael@0: michael@0: [cff] Math simplifications. michael@0: michael@0: * src/cf2blues.c (cf2_blues_init): Use `FT_MulDiv'. michael@0: * src/cf2ft.c (cf2_getScaleAndHintFlag): Use simple division. michael@0: michael@0: 2014-02-28 Dave Arnold michael@0: michael@0: [cff] Fix Savannah bug #41697, part 2. michael@0: michael@0: * src/cff/cf2ft.c (cf2_initLocalRegionBuffer, michael@0: cf2_initGlobalRegionBuffer): It is possible for a charstring to call michael@0: a subroutine if no subroutines exist. This is an error but should michael@0: not trigger an assert. Split the assert to account for this. michael@0: michael@0: 2014-02-28 Dave Arnold michael@0: michael@0: [cff] Fix Savannah bug #41697, part 1. michael@0: michael@0: * src/cff/cf2hints.c (cf2_hintmap_build): Return when `hintMask' is michael@0: invalid. In this case, it is not safe to use the length of michael@0: `hStemHintArray'; the exception has already been recorded in michael@0: `hintMask'. michael@0: michael@0: 2014-02-26 Werner Lemberg michael@0: michael@0: [sfnt] Fix Savannah bug #41696. michael@0: michael@0: * src/sfnt/ttcmap.c (tt_cmap0_validate, tt_cmap2_validate, michael@0: tt_cmap4_validate, tt_cmap14_validate): Fix limit tests. michael@0: michael@0: 2014-02-26 Werner Lemberg michael@0: michael@0: [winfnt] Fix Savannah bug #41694. michael@0: michael@0: * src/winfonts/winfnt.c (FNT_Load_Glyph): Check glyph offset. michael@0: michael@0: 2014-02-26 Werner Lemberg michael@0: michael@0: [cff] Fix Savannah bug #41693. michael@0: michael@0: * src/cff/cffload.c (CFF_Load_FD_Select): Reject empty array. michael@0: michael@0: 2014-02-26 Werner Lemberg michael@0: michael@0: [bdf] Fix Savannah bug #41692. michael@0: michael@0: bdflib puts data from the input stream into a buffer in chunks of michael@0: 1024 bytes. The data itself gets then parsed line by line, simply michael@0: increasing the current pointer into the buffer; if the search for michael@0: the final newline character exceeds the buffer size, more data gets michael@0: read. michael@0: michael@0: However, in case the current line's end is very near to the buffer michael@0: end, and the keyword to compare with is longer than the current michael@0: line's length, an out-of-bounds read might happen since `memcmp' michael@0: doesn't stop properly at the string end. michael@0: michael@0: * src/bdf/bdflib.c: s/ft_memcmp/ft_strncmp/ to make comparisons michael@0: stop at string ends. michael@0: michael@0: 2014-02-17 suzuki toshiya michael@0: michael@0: [autofit] Fix `make multi' compilation. michael@0: michael@0: * src/autofit/hbshim.c: Include `afglobal.h' and `aftypes.h'. michael@0: michael@0: 2014-02-19 Werner Lemberg michael@0: Simon Bünzli michael@0: michael@0: Fix Savannah bug #32902. michael@0: michael@0: Patch taken from michael@0: michael@0: https://code.google.com/p/sumatrapdf/source/browse/trunk/ext/_patches/freetype2.patch?spec=svn8620&r=8620#87 michael@0: michael@0: with slight modifications. michael@0: michael@0: * src/type1/t1parse.c (T1_Get_Private_Dict): Add heuristic test to michael@0: handle fonts that incorrectly use \r at the beginning of an eexec michael@0: block. michael@0: michael@0: 2014-02-19 Simon Bünzli michael@0: michael@0: Fix Savannah bug #41590. michael@0: michael@0: * src/type1/t1load.c (parse_encoding): Protect against invalid michael@0: number. michael@0: michael@0: 2014-02-12 Dave Arnold michael@0: michael@0: [cff] Optimize by using `FT_MulDiv'. michael@0: Suggested by Alexei. michael@0: michael@0: * src/cff/cf2font.c (cf2_computeDarkening): Do it. michael@0: michael@0: 2014-02-12 Werner Lemberg michael@0: michael@0: Fix Savannah bug #41465. michael@0: michael@0: * builds/unix/unix-def.in (CLEAN): Add `freetype-config'. michael@0: (DISTCLEAN): Remove `freetype-config'. michael@0: michael@0: 2014-02-08 Sean McBride michael@0: michael@0: Fix clang static analyzer and compiler warnings. michael@0: michael@0: * src/autofit/afhints.c (af_glyph_hints_align_weak_points), michael@0: src/autofit/afloader (af_loader_load_g) , michael@0: src/base/ftcalc.c (FT_MSB), src/base/ftoutln.c michael@0: (FT_Outline_Decompose), src/bdf/bdfdrivr.c (bdf_interpret_style), michael@0: src/cff/cffparse.c (cff_parse_integer), src/cid/cidparse.c michael@0: (cid_parser_new), src/pfr/pfrload.c (pfr_phy_font_load), michael@0: src/raster/ftraster.c (Decompose_Curve), src/sfnt/sfdriver.c michael@0: (sfnt_get_ps_name), src/sfnt/ttcmap.c (tt_cmap12_next, michael@0: tt_cmap13_next), src/smooth/ftgrays.c (gray_hline): Remove dead michael@0: code. michael@0: michael@0: * src/autofit/afmodule.c (af_property_get_face_globals, michael@0: af_property_set, af_property_get), src/base/ftbitmap.c michael@0: (ft_gray_for_premultiplied_srgb_bgra): Make functions static. michael@0: michael@0: * src/base/ftobjs.c (ft_remove_renderer): Protect against michael@0: library == NULL. michael@0: (ft_property_do): Make function static. michael@0: michael@0: * src/base/ftrfork.c: Include `ftbase.h'. michael@0: michael@0: * src/sfnt/ttsbit.c (tt_face_load_sbix_image) michael@0: [!FT_CONFIG_OPTION_USE_PNG], src/type1/t1gload.c michael@0: (T1_Compute_Max_Advance): Avoid compiler warning. michael@0: michael@0: * src/truetype/ttinterp.c (TT_New_Context): Reduce scope of michael@0: variable. michael@0: michael@0: 2014-02-08 Werner Lemberg michael@0: michael@0: Fix Windows build directories. michael@0: michael@0: The build target is now `windows' instead of `win32'. michael@0: michael@0: Problem reported by Nickolas George . michael@0: michael@0: * builds/modules.mk: Don't use `win32' and `win16' (!) but michael@0: `windows'. michael@0: michael@0: * builds/windows/detect.mk, builds/windows/win32-def.mk: michael@0: s/win32/windows/. michael@0: michael@0: 2014-02-08 Eugen Sawin michael@0: michael@0: Fix Savannah bug #41507. michael@0: michael@0: * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap) michael@0: [!FT_CONFIG_OPTION_USE_PNG] <17, 17, 19>: Fix error handling. michael@0: michael@0: 2014-02-08 Dave Arnold michael@0: michael@0: [cff] Fix minor performance bug. michael@0: michael@0: * src/cff/cf2font.c (cf2_font_setup): Darkening amount and blue zone michael@0: calculations are now cached and not recomputed on each glyph. michael@0: michael@0: 2014-02-05 Werner Lemberg michael@0: michael@0: Fix problems with perl 5.8.8 as distributed with current MinGW. michael@0: michael@0: * src/tools/afblue.pl: Work-around for Perl bug #63402. michael@0: (string_re): Avoid `possessive quantifiers', which have been michael@0: introduced in Perl version 5.10. michael@0: michael@0: 2014-02-04 Werner Lemberg michael@0: michael@0: Fix compilation with MinGW. michael@0: michael@0: Right now, compilation out of the box with latest MinGW is broken michael@0: due to bugs in header files of mingwrt 4.0.3 in strict ANSI mode, michael@0: cf. michael@0: michael@0: https://sourceforge.net/p/mingw/bugs/2024/ michael@0: https://sourceforge.net/p/mingw/bugs/2046/ michael@0: michael@0: * builds/unix/configure.raw: Don't set `-ansi' flag for MinGW. michael@0: michael@0: 2014-02-04 Werner Lemberg michael@0: michael@0: [autofit] Minor fix. michael@0: michael@0: * src/autofit/afcjk.c (af_cjk_metrics_init_widths), michael@0: src/autofit/aflatin.c (af_latin_metrics_init_widths): Fix handling michael@0: of alternative standard characters. michael@0: This also fixes a compilation warning in non-debug mode. michael@0: michael@0: 2014-02-03 Werner Lemberg michael@0: michael@0: [cff] Fix Savannah bug #41363. michael@0: michael@0: * src/cff/cf2ft.c (cf2_checkTransform): Convert assertion into michael@0: parameter check. michael@0: (cf2_decoder_parse_charstrings): Call `cf2_checkTransform' only if michael@0: we are scaling the outline. michael@0: (cf2_getPpemY): Remove problematic assertion. michael@0: michael@0: 2014-01-26 Werner Lemberg michael@0: michael@0: [autofit] Introduce two more slots for standard characters. michael@0: michael@0: This is useful for OpenType features like `c2sc' (caps to small michael@0: caps) that don't have lowercase letters by definition, or other michael@0: features that mainly operate on numerals. michael@0: michael@0: * src/autofit/afscript.h: Add more standard characters. michael@0: michael@0: * src/autofit/aftypes.h: Update use of `SCRIPT' macro. michael@0: (AF_ScriptClassRec): Add members to hold two more standard michael@0: characters. michael@0: (AF_DEFINE_SCRIPT_CLASS): Updated. michael@0: michael@0: * src/autofit/afglobal.c, src/autofit/afglobal.h, michael@0: * src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/hbshim.c: michael@0: Update use of `SCRIPT' macro. michael@0: michael@0: * src/autofit/afcjk.c (af_cjk_metrics_init_widths), michael@0: src/autofit/aflatin.c (af_latin_metrics_init_widths): Scan two more michael@0: standard characters. michael@0: michael@0: 2014-01-24 Werner Lemberg michael@0: michael@0: Fix Savannah bug #41320. michael@0: michael@0: * src/autofit/aflatin.c (af_latin_metrics_init_blues) michael@0: : Avoid negative index of `last'. michael@0: michael@0: 2014-01-23 Werner Lemberg michael@0: michael@0: Fix Savannah bug #41310. michael@0: michael@0: * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap) : michael@0: Don't check metrics, which this format doesn't have. michael@0: This is another correction to the commit from 2013-11-21. michael@0: michael@0: 2014-01-23 Werner Lemberg michael@0: michael@0: Fix Savannah bug #41309. michael@0: michael@0: * src/type1/t1load.c (t1_parse_font_matrix): Properly handle result michael@0: of `T1_ToFixedArray'. michael@0: michael@0: * src/cid/cidload.c (cid_parse_font_matrix): Synchronize with michael@0: `t1_parse_font_matrix'. michael@0: michael@0: * src/type42/t42parse.c (t42_parse_font_matrix): Synchronize with michael@0: `t1_parse_font_matrix'. michael@0: (t42_parse_encoding): Synchronize with `t1_parse_encoding'. michael@0: michael@0: * src/psaux/psobjs.c (ps_parser_load_field) , michael@0: : Properly handle result of `ps_tofixedarray'. michael@0: michael@0: 2014-01-22 Werner Lemberg michael@0: michael@0: * src/autofit/hbshim.c (af_get_coverage): Fix memory leaks. michael@0: michael@0: 2014-01-16 Werner Lemberg michael@0: michael@0: [autofit] Improve tracing of style coverages. michael@0: michael@0: * include/internal/fttrace.h: Add `afglobal' for tracing style michael@0: coverages. michael@0: michael@0: * src/autofit/afglobal.c: Include FT_INTERNAL_DEBUG_H. michael@0: (FT_COMPONENT): Define. michael@0: (af_face_globals_compute_style_coverage): Trace `gstyles' array michael@0: data. michael@0: michael@0: 2014-01-09 Werner Lemberg michael@0: michael@0: Fix Savannah bug #41158. michael@0: michael@0: * builds/unix/install.mk (install): Create man page directory. michael@0: michael@0: 2014-01-08 Chongyu Zhu michael@0: michael@0: [arm] Fix Savannah bug #41138, part 2. michael@0: michael@0: * builds/unix/ftconfig.in (FT_MulFix_arm), include/config/ftconfig.h michael@0: (FT_MulFix_arm), src/truetype/ttinterp.c (TT_MulFix14_arm): Fix michael@0: preprocessor conditionals for `add.w'. michael@0: michael@0: 2014-01-08 Werner Lemberg michael@0: michael@0: [autofit] Fix Savannah bug #41138, part 1. michael@0: michael@0: * src/tools/afblue.pl : Produce correct auxiliary michael@0: enumeration names for generated `#else'. michael@0: michael@0: * src/autofit/afblue.h: Regenerated. michael@0: michael@0: 2014-01-06 Werner Lemberg michael@0: michael@0: Add manual page for `freetype-config'. michael@0: Contributed by Nis Martensen . michael@0: michael@0: * docs/freetype-config.1: New file. michael@0: michael@0: * builds/unix/unix-def.in (mandir): Define. michael@0: * builds/unix/install.mk (install, uninstall): Handle manpage. michael@0: michael@0: 2014-01-05 Werner Lemberg michael@0: michael@0: [autofit] Minor fixes for `afblue.pl'. michael@0: michael@0: * src/tools/afblue.pl (aux_name): Don't use `reverse'. michael@0: : Use proper indentation for generated `#else'. michael@0: michael@0: * src/autofit/afblue.h: Regenerated. michael@0: michael@0: 2014-01-04 Werner Lemberg michael@0: michael@0: [autofit] Fix Indic scripts. michael@0: michael@0: Split the single, incorrect Indic entry into separate scripts so michael@0: that the covered ranges are the same: Bengali, Devanagari, Gujarati, michael@0: Gurmukhi, Kannada, Limbu, Malayalam, Oriya, Sinhala, Sundanese, michael@0: Syloti Nagri, Tamil, Telugu, and Tibetan. At the same time, remove michael@0: entries for Meetai Mayak and Sharada – the Unicode ranges were michael@0: incorrect (and nobody has complained about that), fonts are scarce michael@0: for those scripts, and the Indic auto-hinter support is rudimentary michael@0: anyways. michael@0: michael@0: * src/autofit/afscript.h: Updated, using AF_CONFIG_OPTION_INDIC and michael@0: AF_CONFIG_OPTION_CJK. michael@0: michael@0: * src/autofit/afstyles.h (STYLE_DEFAULT_INDIC): New auxiliary macro. michael@0: Use it, together with AF_CONFIG_OPTION_INDIC and michael@0: AF_CONFIG_OPTION_CJK, to update. michael@0: michael@0: * src/autofit/afranges.c [AF_CONFIG_OPTION_INDIC]: Updated. michael@0: [!AF_CONFIG_OPTION_INDIC, !AF_CONFIG_OPTION_CJK]: Removed. michael@0: Sort entries by tags. michael@0: michael@0: 2014-01-03 Werner Lemberg michael@0: michael@0: [autofit] Thinko. michael@0: michael@0: * src/autofit/hbshim.c (af_get_char_index): Similar to michael@0: `af_get_coverage', reject glyphs which are not substituted. michael@0: michael@0: 2014-01-03 Werner Lemberg michael@0: michael@0: [autofit] Fix handling of default coverages. michael@0: michael@0: With this commit, the implementation of coverage handling is michael@0: completed. michael@0: michael@0: * src/autofit/hbshim.c (af_get_coverage): Exit early if nothing to michael@0: do. michael@0: Reject coverages which don't contain appropriate glyphs for blue michael@0: zones. michael@0: michael@0: 2014-01-03 Werner Lemberg michael@0: michael@0: [autofit] Fix handling of default coverages. michael@0: michael@0: * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): michael@0: First handle non-default coverages, then the default coverage of the michael@0: default script, and finally the other default coverages. michael@0: michael@0: 2014-01-03 Werner Lemberg michael@0: michael@0: [autofit] Fix scaling of HarfBuzz shaping. michael@0: michael@0: * src/autofit/hbshim.c (af_get_char_index): Scale to units per EM. michael@0: michael@0: 2014-01-03 Werner Lemberg michael@0: michael@0: [autofit] Better ftgrid support. michael@0: michael@0: * src/autofit/afhints.c (af_glyph_hints_get_segment_offset): Add michael@0: parameters `is_blue' and `blue_offset'. michael@0: michael@0: 2014-01-01 Werner Lemberg michael@0: michael@0: [autofit] Remove some styles. michael@0: michael@0: * src/autofit/afcover.h: Remove coverages for alternative fractions, michael@0: denominators, numerators, and fractions. michael@0: michael@0: * src/autofit/afstyles.h (META_STYLE_LATIN): Updated. michael@0: michael@0: 2014-01-01 Werner Lemberg michael@0: michael@0: [autofit] Add more styles. michael@0: michael@0: * src/autofit/afstyles.h (STYLE_LATIN, META_STYLE_LATIN): New michael@0: auxiliary macros; use them to define styles for Cyrillic, Greek, and michael@0: Latin. michael@0: michael@0: * src/autofit/afcover.h: Remove coverage for oldstyle figures. michael@0: Since those digits are used in combination with ordinary letters, it michael@0: makes no sense to handle them separately. michael@0: michael@0: * src/autofit/afglobal.c (af_face_globals_get_metrics): Don't limit michael@0: `options' parameter to 4 bits. michael@0: michael@0: 2014-01-01 Werner Lemberg michael@0: michael@0: [autofit] Fix style assignments to glyphs. michael@0: michael@0: * src/autofit/hbshim.c (af_get_coverage) michael@0: [FT_CONFIG_OPTION_USE_HARFBUZZ]: Scan GPOS coverage of features also michael@0: so that we can skip glyphs that have both GSUB and GPOS data. michael@0: michael@0: 2014-01-01 Werner Lemberg michael@0: michael@0: * src/autofit/hbshim.c: s/{lookups,glyphs}/gsub_{lookups,glyphs}/. michael@0: michael@0: 2014-01-01 Werner Lemberg michael@0: michael@0: [autofit] Implement and use `af_get_char_index' with HarfBuzz. michael@0: michael@0: * src/autofit/hbshim.c (COVERAGE) [FT_CONFIG_OPTION_USE_HARFBUZZ]: michael@0: Redefine to construct HarfBuzz features. michael@0: (af_get_char_index) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Rewritten. michael@0: michael@0: * src/autofit/aflatin.c (af_latin_metrics_init_blues): Use michael@0: `y_offset' to adjust `best_y'. michael@0: michael@0: 2013-12-31 Werner Lemberg michael@0: michael@0: [autofit] s/AF_STYLE_...._DEFAULT/AF_STYLE_...._DFLT/i. michael@0: michael@0: 2013-12-31 Werner Lemberg michael@0: michael@0: [autofit] Fix interface of `af_get_char_index'. michael@0: michael@0: * src/autofit/hbshim.c (af_get_char_index): Return error value. michael@0: Add argument for y offset (to be used in a yet-to-come patch). michael@0: michael@0: * src/autofit/hbshim.h, src/autofit/afcjk.c, michael@0: src/autofit/aflatin.c: Updated. michael@0: michael@0: 2013-12-30 Werner Lemberg michael@0: michael@0: [autofit] Don't combine multiple features into one set. michael@0: michael@0: Combining them, as originally envisioned, would lead to much more michael@0: complicated code, as investigations have shown meanwhile. The major michael@0: drawback is that we run out of available style slots much earlier. michael@0: However, this is only a theoretical issue since we don't support a michael@0: large number of scripts currently. michael@0: michael@0: * src/autofit/afcover.h: Replace `COVERAGE_{1,2,3}' macros with michael@0: a single-element `COVERAGE' macro, sort the elements by the feature michael@0: tags, and add entry for `ruby'. michael@0: michael@0: * src/autofit/aftypes.h: Updated. michael@0: * src/autofit/hbshim.c: Updated. michael@0: michael@0: 2013-12-28 Werner Lemberg michael@0: michael@0: [autofit] Code shuffling to reduce use of cpp macros. michael@0: michael@0: * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): michael@0: Call `af_get_coverage' unconditionally. michael@0: michael@0: * src/autofit/autofit.c: Include `hbshim.c' unconditionally. michael@0: michael@0: * src/autofit/hbshim.c (af_get_coverage) michael@0: [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Provide dummy function. michael@0: michael@0: * src/autofit/hbshim.h: Provide function declarations michael@0: unconditionally. michael@0: michael@0: 2013-12-28 Werner Lemberg michael@0: michael@0: [autofit] Add wrapper function for `FT_Get_Char_Index'. michael@0: michael@0: Yet-to-come changes will provide HarfBuzz functionality for the new michael@0: function. michael@0: michael@0: * src/autofit/hbshim.c (af_get_char_index): New function. michael@0: * src/autofit/hbshim.h: Updated. michael@0: michael@0: * src/autofit/afcjk.c (af_cjk_metrics_init_widths, michael@0: af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated. michael@0: michael@0: * src/autofit/aflatin.c (af_latin_metrics_init_widths, michael@0: af_latin_metrics_init_blues, af_latin_metrics_check_digits): michael@0: Updated. michael@0: michael@0: 2013-12-28 Werner Lemberg michael@0: michael@0: [autofit] Use `global' HarfBuzz font object. michael@0: michael@0: We now use `hb_font' instead of `hb_face' since yet-to-come changes michael@0: need this. michael@0: michael@0: * src/autofit/afglobal.h: Include `hbshim.h'. michael@0: (AF_FaceGlobalsRec) [FT_CONFIG_OPTION_USE_HARFBUZZ]: New member michael@0: `hb_font'. michael@0: michael@0: * src/autofit/afglobal.c (af_face_globals_new) michael@0: [FT_CONFIG_OPTION_USE_HARFBUZZ]: Create `hb_font'. michael@0: (af_face_globals_free) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Destroy michael@0: `hb_font'. michael@0: michael@0: * src/autofit/hbshim.h: Include HarfBuzz headers. michael@0: michael@0: * src/autofit/hbshim.c: Include `hbshim.h' instead of HarfBuzz michael@0: headers. michael@0: (af_get_coverage): Updated. michael@0: michael@0: 2013-12-27 Werner Lemberg michael@0: michael@0: [autofit] Handle `DFLT' OpenType script for coverages. michael@0: michael@0: * include/ftautoh.h: Document new `default-script' property. michael@0: michael@0: * src/autofit/hbshim.c (af_get_coverage): Use `AF_FaceGlobals' for michael@0: type of first parameter. michael@0: (script_tags): Add one more element. michael@0: (af_get_coverage): Adjust `script_tags' to handle `DFLT' script tag. michael@0: michael@0: * src/autofit/hbshim.h: Updated. michael@0: michael@0: * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): michael@0: Updated. michael@0: michael@0: * src/autofit/afglobal.h (AF_SCRIPT_DEFAULT): New macro. michael@0: michael@0: * src/autofit/afmodule.h (AF_ModuleRec): New `default_script' michael@0: member. michael@0: michael@0: * src/autofit/afmodule.c (af_property_set, af_property_get): Handle michael@0: `default-script' property. michael@0: (af_autofitter_init): Updated. michael@0: michael@0: 2013-12-27 suzuki toshiya michael@0: michael@0: [ftrfork] Fix the face order difference between POSIX and Carbon. michael@0: michael@0: The fragmented resources in Suitcase and .dfont should be reordered michael@0: when `POST' resource for Type1 is being restored, but reordering of michael@0: sfnt resources induces the different face order. Now the ordering michael@0: is restricted to `POST' resource only, to prevent the different michael@0: order issue (e.g. the face index in the fontconfig cache generated michael@0: with Carbon framework is incompatible with that by FreeType 2 michael@0: without Carbon framework.) Found by Khaled Hosny and Hin-Tak Leung. michael@0: michael@0: http://lists.gnu.org/archive/html/freetype-devel/2013-02/msg00035.html michael@0: http://lists.gnu.org/archive/html/freetype-devel/2013-12/msg00027.html michael@0: michael@0: * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Add a switch michael@0: `sort_by_res_id' to control the fragmented resource ordering. michael@0: * include/internal/ftrfork.h: Declare new switch. michael@0: * src/base/ftobjs.c (IsMacResource): Enable the sorting for `POST' michael@0: resource, and disable the sorting for `sfnt' resource. michael@0: michael@0: 2013-12-25 Werner Lemberg michael@0: michael@0: Fix Savannah bug #40997. michael@0: michael@0: * src/bdf/bdfdrivr.c (BDF_Face_Init): Only use OR operator to michael@0: adjust face flags since FT_FACE_FLAG_EXTERNAL_STREAM might already michael@0: be set. michael@0: * src/cff/cffobjs.c (cff_face_init): Ditto. michael@0: * src/cid/cidobjs.c (cid_face_init): Ditto. michael@0: * src/pcf/pcfread.c (pcf_load_font): Ditto. michael@0: * src/pfr/pfrobjs.c (pfr_face_init): Ditto. michael@0: * src/type1/t1objs.c (T1_Face_Init): Ditto. michael@0: * src/type42/t42objs.c (T42_Face_Init): Ditto. michael@0: * src/winfonts/winfnt.c (FNT_Face_Init): Ditto. michael@0: michael@0: 2013-12-21 Werner Lemberg michael@0: michael@0: [autofit] Introduce `coverages'. michael@0: michael@0: Coverages are the interface to the HarfBuzz library to acces michael@0: OpenType features for handling glyphs not addressable by the cmap. michael@0: michael@0: Right now, compilation of HarfBuzz is only added to the development michael@0: build. A solution for standard build mode will be delayed until michael@0: HarfBuzz gets split into two libraries to avoid mutual dependencies michael@0: between FreeType and HarfBuzz. michael@0: michael@0: Note that this is only a first step in handling coverages, basically michael@0: providing the framework only. Code for handling selected OpenType michael@0: features (this is, actually using the data in `afcover.h') will michael@0: follow. michael@0: michael@0: * devel/ftoption.h, include/config/ftoption.h michael@0: (FT_CONFIG_OPTION_USE_HARFBUZZ): New macro. michael@0: michael@0: * src/autofit/hbshim.c, src/autofit/hbshim.h, src/autofit/afcover.h: michael@0: New files. michael@0: michael@0: * src/autofit/afscript.h: Add HarfBuzz script name tags. michael@0: michael@0: * src/autofit/afstyles.h: Add default coverage enumeration values. michael@0: michael@0: * src/autofit/aftypes.h: Update use of `SCRIPT' and `STYLE' macros. michael@0: (AF_Coverage): New enumeration (generated by `afcover.h'). michael@0: (AF_StyleClassRec): New member `coverage'. michael@0: (AF_DEFINE_STYLE_CLASS): Updated. michael@0: michael@0: * include/internal/fttrace.h: Add `afharfbuzz' for tracing coverage michael@0: data. michael@0: michael@0: * src/autofit/afglobal.h: Update use of `SCRIPT' and `STYLE' macros. michael@0: (AF_SCRIPT_FALLBACK): Renamed to ... michael@0: (AF_STYLE_FALLBACK): ... this. michael@0: michael@0: * src/autofit/afglobal.c: Include `hbshim.c'. michael@0: Update use of `SCRIPT' and `STYLE' macros. michael@0: (af_face_globals_compute_style_coverage) michael@0: [FT_CONFIG_OPTION_USE_HARFBUZZ]: Call `af_get_coverage'. michael@0: Update. michael@0: michael@0: * src/autofit/afmodule.h (AF_ModuleRec): michael@0: s/fallback_script/fallback_style/. michael@0: michael@0: * src/autofit/afmodule.c (af_property_set): Adapt handling of michael@0: `fallback-script' property to set a fallback style. michael@0: (af_property_get, af_autofitter_init): Updated. michael@0: michael@0: * src/autofit/afpic.c: Update use of `SCRIPT' and `STYLE' macros. michael@0: michael@0: * src/autofit/afranges.h: Update use of `SCRIPT' macro. michael@0: michael@0: * src/autofit/autofit.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: Include michael@0: `hbshim.c'. michael@0: michael@0: * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `hbshim.c'. michael@0: (AUTOF_DRV_H): Add `afcover.h'. michael@0: michael@0: * builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Use pkg-config for michael@0: all libraries needed by FreeType. michael@0: michael@0: 2013-12-21 Werner Lemberg michael@0: michael@0: Fix Savannah bug #40975 (sort of). michael@0: michael@0: * src/truetype/ttinterp.c (Ins_IP): Fix sign typo to make FreeType michael@0: behave the same as the Windows TrueType engine for the invalid case. michael@0: michael@0: 2013-12-21 Werner Lemberg michael@0: michael@0: [autofit] Make PIC mode work actually. michael@0: michael@0: * src/autofit/afpic.h (AFModulePIC): Fix array sizes to fit the michael@0: enumeration values automatically generated by including `afscript.h' michael@0: and friends. michael@0: michael@0: * src/autofit/afpic.c (autofit_module_class_pic_init): Updated. michael@0: michael@0: 2013-12-21 Werner Lemberg michael@0: michael@0: Fix PIC linking. michael@0: michael@0: * include/internal/ftrfork.h (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Fix michael@0: generated function name. michael@0: michael@0: * src/base/basepic.c (FT_Init_Table_raccess_guess_table): Rename michael@0: to ... michael@0: (FT_Init_Table_ft_raccess_guess_table): ... this so that the michael@0: function name correctly corresponds to what the macro framework michael@0: expects. michael@0: michael@0: * src/psnames/rules.mk (PSNAMES_DRV_SRC_S): Use correct file name so michael@0: that PIC functions are compiled also. michael@0: michael@0: 2013-12-21 Werner Lemberg michael@0: michael@0: [base] Add missing dependencies to Makefile. michael@0: michael@0: * src/base/rules.mk (BASE_SRC): Add `basepic.c' and `ftpic.c'. michael@0: (BASE_H): Add `basepic.h'. michael@0: michael@0: 2013-12-20 Werner Lemberg michael@0: michael@0: [autofit] Fix PIC compilation. michael@0: michael@0: * src/autofit/afcjk.c (af_cjk_metrics_init_widths), michael@0: src/autofit/aflatin.c (af_latin_metrics_init_widths) michael@0: [FT_CONFIG_OPTION_PIC]: Declare `globals'. michael@0: michael@0: * src/autofit/afglobal.c: Always call AF_DEFINE_SCRIPT_CLASS, and michael@0: AF_DEFINE_STYLE_CLASS. michael@0: michael@0: * src/autofit/afpic.c: Include `afglobal.h'. michael@0: (autofit_module_class_pic_init): Typo. michael@0: michael@0: * src/autofit/aftypes.h (AF_DEFINE_SCRIPT_CLASS, michael@0: AF_DEFINE_STYLE_CLASS): Don't use the same identifier for macro michael@0: parameter and structure member. michael@0: michael@0: 2013-12-20 Werner Lemberg michael@0: michael@0: [autofit] Introduce `styles'. michael@0: michael@0: This is the new top-level structure for handling glyph input data; michael@0: scripts are now defined separately. michael@0: michael@0: * src/autofit/aftypes.h (SCRIPT): Updated. michael@0: (AF_ScriptClassRec): Move `blue_stringset' and `writing_system' michael@0: members to ... michael@0: (AF_Style_ClassRec): ... this new structure. michael@0: (AF_Style): New enumeration. michael@0: (AF_StyleMetricsRec): Replace `script' enumeration with michael@0: `style_class' pointer. michael@0: (AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated. michael@0: (AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros. michael@0: michael@0: * src/autofit/afstyles.h: New file, using data from `afscript.h'. michael@0: * src/autofit/afscript.h: Updated. michael@0: michael@0: * src/autofit/afcjk.c (af_cjk_metrics_init_widths, michael@0: af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated. michael@0: michael@0: * src/autofit/afglobal.c (SCRIPT): Updated. michael@0: (STYLE): Redefine macro to load `afstyles.h'. michael@0: (af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with... michael@0: (af_style_names): ... this array. michael@0: (af_face_globals_compute_script_coverage): Renamed to... michael@0: (af_face_globals_compute_style_coverage): ... this. michael@0: Updated. michael@0: (af_face_globals_new, af_face_globals_free, michael@0: af_face_globals_get_metrics): Updated. michael@0: michael@0: * src/autofit/afglobal.h (SCRIPT): Updated. michael@0: (STYLE): Redefine macro to load `afstyles.h'. michael@0: (AF_SCRIPT_FALLBACK): Update definition. This will get more michael@0: refinements with later on. michael@0: (AF_SCRIPT_UNASSIGNED): Replace with... michael@0: (AF_STYLE_UNASSIGNED): ... this macro. michael@0: (AF_FaceGlobalsRec): Updated. michael@0: michael@0: * src/autofit/aflatin.c (af_latin_metrics_init_widths, michael@0: af_latin_metrics_init_blues, af_latin_metrics_scale_dim, michael@0: af_latin_hint_edges): Updated. michael@0: michael@0: * src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated. michael@0: (af_ltn2_uniranges): Removed. michael@0: michael@0: * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph): michael@0: Updated. michael@0: michael@0: * src/autofit/afpic.c (autofit_module_class_pic_init): Updated. michael@0: * src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro. michael@0: (AFModulePIC): Add `af_style_classes' and `af_style_classes_rec' michael@0: members. michael@0: michael@0: * src/autofit/afranges.h: Updated. michael@0: michael@0: * src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'. michael@0: michael@0: 2013-12-19 Werner Lemberg michael@0: michael@0: [autofit] Factor scripts and uniranges out of writing system files. michael@0: michael@0: * src/autofit/afranges.c, src/autofit/afranges.h: New files. michael@0: michael@0: * src/autofit/afscript.h: Extend `SCRIPT' macro with more michael@0: parameters, taking data from the writing system files. michael@0: michael@0: * src/autofit/aftypes.h: Updated. michael@0: michael@0: * src/autofit/afglobal.c: Include `afranges.h'. michael@0: Load `afscript.h' to call AF_DEFINE_SCRIPT_CLASS. michael@0: * src/autofit/afglobal.c: Include `afranges.h'. michael@0: Load `afscript.h' to call AF_DECLARE_SCRIPT_CLASS. michael@0: michael@0: * src/autofit/afcjk.c, src/autofit/afcjk.h: Updated. michael@0: * src/autofit/afdummy.c, src/autofit/afdummy.h: Updated. michael@0: * src/autofit/afindic.c, src/autofit/afindic.h: Updated. michael@0: * src/autofit/aflatin.c, src/autofit/aflatin.h: Updated. michael@0: * src/autofit/aflatn2.c, src/autofit/aflatn2.h: Updated. michael@0: michael@0: * src/autofit/afpic.c: Updated. michael@0: michael@0: * src/autofir/autofit.c: Include `afranges.c'. michael@0: * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afranges.c'. michael@0: michael@0: 2013-12-18 Werner Lemberg michael@0: michael@0: [autofit] More code orthogonality. michael@0: michael@0: * src/autofit/aftypes.h (AF_StyleMetrics): Replace `script_class' michael@0: pointer to an `AF_ScriptClass' structure with `script' index of type michael@0: `AF_Script'. michael@0: Move some code around. michael@0: michael@0: * src/autofit/afcjk.c: Include `afpic.h'. michael@0: (af_cjk_metrics_init_widths, af_cjk_metrics_init_blues, michael@0: af_cjk_hint_edges): Updated. michael@0: michael@0: * src/autofit/aflatin.c: Include `afpic.h'. michael@0: (af_latin_metrics_init_widths, af_latin_metrics_init_blues, michael@0: af_latin_metrics_scale_dim, af_latin_hint_edges): Updated. michael@0: michael@0: * src/autofit/afglobal.c (af_face_globals_get_metrics): Updated. michael@0: michael@0: * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph): michael@0: Updated. michael@0: michael@0: 2013-12-18 Werner Lemberg michael@0: michael@0: [autofit] s/ScriptMetrics/StyleMetrics/. michael@0: michael@0: 2013-12-18 Werner Lemberg michael@0: michael@0: [autofit] s/script_{metrics,hints}/style_{metrics,hints}/ michael@0: michael@0: 2013-12-18 Werner Lemberg michael@0: michael@0: [autofit] s/gscripts/gstyles/. michael@0: michael@0: 2013-12-18 Werner Lemberg michael@0: michael@0: [autofit] s/glyph_scripts/glyph_styles/. michael@0: michael@0: This is the first commit of a series to create a new top-level michael@0: structure (a `style') for handling scripts, writing_systems, and michael@0: soon-to-be-added coverages. michael@0: michael@0: 2013-12-17 Werner Lemberg michael@0: michael@0: [autofit] s/AF_Script_/AF_WritingSystem_/ where appropriate. michael@0: michael@0: 2013-12-11 Infinality michael@0: michael@0: [truetype] Simplify logic of rendering modes. michael@0: michael@0: This patch unifies the subpixel and non-subpixel cases. michael@0: michael@0: * src/truetype/ttinterp.h (TT_ExecContextRec): Remove michael@0: `grayscale_hinting'; all code should refer to `grayscale' instead. michael@0: Remove unused `native_hinting' member. michael@0: Rename `subpixel_hinting' member to `subpixel. michael@0: michael@0: * src/truetype/ttgload.c (TT_LOADER_SET_PP): Updated. michael@0: (tt_loader_init): Updated. michael@0: michael@0: * src/truetype/ttinterp.c (Ins_GETINFO): Simplify. michael@0: Updated. michael@0: michael@0: 2013-12-11 Werner Lemberg michael@0: michael@0: [documentation] Add section how to include FreeType header files. michael@0: Problem reported by David Kastrup . michael@0: michael@0: Surprisingly, a description how to do that was completely missing in michael@0: the API reference. michael@0: michael@0: * include/freetype.h, include/ftchapters.h: New documentation michael@0: section `header_inclusion'. michael@0: michael@0: 2013-12-10 Werner Lemberg michael@0: michael@0: [autofit] s/DFLT/NONE/, s/dflt/none/. michael@0: michael@0: 2013-12-10 Werner Lemberg michael@0: michael@0: [autofit] s/AF_SCRIPT_NONE/AF_SCRIPT_UNASSIGNED/. michael@0: michael@0: 2013-12-10 Werner Lemberg michael@0: michael@0: [truetype] Fix scaling of vertical phantom points. michael@0: michael@0: * src/truetype/ttgload.c (load_truetype_glyph): Scale pp3.x and michael@0: pp4.x also. michael@0: michael@0: 2013-12-10 Werner Lemberg michael@0: michael@0: [truetype] Fix positioning of composite glyphs. michael@0: Problem reported by Nigel Tao . michael@0: michael@0: * src/truetype/ttgload.c (TT_Hint_Glyph): Remove code that shifts michael@0: the glyph (component) by a fractional value computed from the LSB michael@0: phantom point. This is wrong, since the horizontal phantom points michael@0: get rounded horizontally later on. michael@0: michael@0: 2013-12-08 Werner Lemberg michael@0: michael@0: * Version 2.5.2 released. michael@0: ========================= michael@0: michael@0: michael@0: Tag sources with `VER-2-5-2'. michael@0: michael@0: * docs/VERSION.DLL: Update documentation and bump version number to michael@0: 2.5.2. michael@0: michael@0: * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, michael@0: builds/windows/vc2005/index.html, michael@0: builds/windows/vc2008/freetype.vcproj, michael@0: builds/windows/vc2008/index.html, michael@0: builds/windows/vc2010/freetype.vcxproj, michael@0: builds/windows/vc2010/index.html, michael@0: builds/windows/visualc/freetype.dsp, michael@0: builds/windows/visualc/freetype.vcproj, michael@0: builds/windows/visualc/index.html, michael@0: builds/windows/visualce/freetype.dsp, michael@0: builds/windows/visualce/freetype.vcproj, michael@0: builds/windows/visualce/index.html, michael@0: builds/wince/vc2005-ce/freetype.vcproj, michael@0: builds/wince/vc2005-ce/index.html, michael@0: builds/wince/vc2008-ce/freetype.vcproj, michael@0: builds/wince/vc2008-ce/index.html: s/2.5.1/2.5.2/, s/251/252/. michael@0: michael@0: * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. michael@0: michael@0: * builds/unix/configure.raw (version_info): Set to 17:1:11. michael@0: * CMakeLists.txt (VERSION_PATCH): Set to 2. michael@0: * docs/CHANGES: Updated. michael@0: michael@0: 2013-12-07 Werner Lemberg michael@0: michael@0: [truetype] Next round in phantom point handling. michael@0: michael@0: Greg Hitchcock provided very interesting insights into the michael@0: complicated history of the horizontal positions of the TSB and BSB michael@0: phantom points. michael@0: michael@0: * src/truetype/ttgload.c (TT_LOADER_SET_PP) michael@0: [TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Use `subpixel_hinting' and michael@0: `grayscale_hinting' flags as conditionals for the x position of TSB michael@0: and BSB. michael@0: michael@0: 2013-12-05 Werner Lemberg michael@0: michael@0: * builds/freetype.mk (FT_CC): Removed. Unused. michael@0: michael@0: 2013-12-04 Werner Lemberg michael@0: michael@0: [sfnt] Fix handling of embedded bitmap strikes. michael@0: michael@0: This corrects the commit from 2013-11-21. Problem reported by michael@0: Andrey Panov . michael@0: michael@0: * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Fix logic to michael@0: detect excessive bytes for bit-aligned bitmaps. michael@0: michael@0: 2013-12-03 Werner Lemberg michael@0: michael@0: [truetype] Remove dead code. michael@0: michael@0: Reported by Nigel Tao . michael@0: michael@0: * include/internal/tttypes.h (TT_LoaderRec): Remove unused michael@0: `preserve_pps' field. michael@0: * src/truetype/ttgload.c (TT_Hint_Glyph): Updated. michael@0: michael@0: 2013-12-03 Werner Lemberg michael@0: michael@0: [truetype] Fix phantom point handling. michael@0: michael@0: This is a further improvement to the changes from 2013-11-06. michael@0: michael@0: * src/truetype/ttgload.c (TT_Hint_Glyph): Horizontal phantom points michael@0: are rounded horizontally, vertical ones are rounded vertically. michael@0: (TT_LOADER_SET_PP): The horizontal position of vertical phantom michael@0: points in pre-ClearType mode is zero, as shown in the OpenType michael@0: specification. michael@0: michael@0: 2013-12-02 Werner Lemberg michael@0: michael@0: [truetype] Fix change from 2013-11-20. michael@0: michael@0: Problem reported by Akira Kakuto . michael@0: michael@0: * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Protect call to michael@0: `Update_Max' with both a TT_USE_BYTECODE_INTERPRETER guard and a michael@0: `IS_HINTED' clause. michael@0: Also remove redundant check using `maxSizeOfInstructions' – in michael@0: simple glyphs, the bytecode data comes before the outline data, and michael@0: a validity test for this is already present. michael@0: michael@0: 2013-11-27 Werner Lemberg michael@0: michael@0: [autofit] Fix use of dumping functions in `ftgrid' demo program. michael@0: michael@0: * src/autofit/afhints.c (AF_DUMP) [FT_DEBUG_AUTOFIT]: New macro. michael@0: (af_glyph_hints_dump_points, af_glyph_hints_dump_segments, michael@0: af_glyph_hints_dump_edges) [FT_DEBUG_AUTOFIT]: Add parameter to michael@0: handle output to stdout. michael@0: Use AF_DUMP. michael@0: (af_glyph_hints_dump_points, af_glyph_hints_dump_segments, michael@0: af_glyph_hints_dump_edges) [!FT_DEBUG_AUTOFIT]: Removed. michael@0: michael@0: 2013-11-25 Werner Lemberg michael@0: michael@0: * Version 2.5.1 released. michael@0: ========================= michael@0: michael@0: michael@0: Tag sources with `VER-2-5-1'. michael@0: michael@0: * docs/VERSION.DLL: Update documentation and bump version number to michael@0: 2.5.1. michael@0: michael@0: * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, michael@0: builds/windows/vc2005/index.html, michael@0: builds/windows/vc2008/freetype.vcproj, michael@0: builds/windows/vc2008/index.html, michael@0: builds/windows/vc2010/freetype.vcxproj, michael@0: builds/windows/vc2010/index.html, michael@0: builds/windows/visualc/freetype.dsp, michael@0: builds/windows/visualc/freetype.vcproj, michael@0: builds/windows/visualc/index.html, michael@0: builds/windows/visualce/freetype.dsp, michael@0: builds/windows/visualce/freetype.vcproj, michael@0: builds/windows/visualce/index.html, michael@0: builds/wince/vc2005-ce/freetype.vcproj, michael@0: builds/wince/vc2005-ce/index.html, michael@0: builds/wince/vc2008-ce/freetype.vcproj, michael@0: builds/wince/vc2008-ce/index.html: s/2.5.0/2.5.1/, s/250/251/. michael@0: michael@0: * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. michael@0: michael@0: * builds/unix/configure.raw (version_info): Set to 17:0:11. michael@0: * CMakeLists.txt (VERSION_PATCH): Set to 1. michael@0: * docs/CHANGES, docs/release: Updated. michael@0: michael@0: 2013-11-23 Werner Lemberg michael@0: michael@0: [truetype]: Add tricky font names `hkscsiic.ttf' and `iicore.ttf'. michael@0: michael@0: * src/truetype/ttobjs.c (TRICK_NAMES_MAX_CHARACTERS, michael@0: TRICK_NAMES_COUNT): Updated. michael@0: (trick_names): Add family name for the two fonts. michael@0: michael@0: 2013-11-23 Werner Lemberg michael@0: michael@0: * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Typo. michael@0: michael@0: 2013-11-21 Werner Lemberg michael@0: michael@0: [sfnt] Typo. michael@0: michael@0: Problem reported by Hin-Tak Leung . michael@0: michael@0: * src/sfnt/sfobjs.c (sfnt_load_face): Return correct `bsize->width' michael@0: value if the font lacks an `OS/2' table. michael@0: michael@0: 2013-11-21 Werner Lemberg michael@0: michael@0: [sfnt] Improve handling of buggy embedded bitmap strikes. michael@0: michael@0: We are now able to successfully load `AppleMyoungJo.ttf'. michael@0: Problem reported by Hin-Tak Leung . michael@0: michael@0: * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Don't trust glyph michael@0: format. michael@0: michael@0: 2013-11-20 Werner Lemberg michael@0: michael@0: [truetype] Don't trust `maxp's `maxSizeOfInstructions'. michael@0: michael@0: Problem reported by Hin-Tak Leung ; see michael@0: michael@0: http://lists.nongnu.org/archive/html/freetype-devel/2013-08/msg00005.html michael@0: michael@0: for details. michael@0: michael@0: * src/base/ftobjs.c (FT_Load_Glyph): Check size of `fpgm' and `prep' michael@0: tables also for setting `autohint'. michael@0: michael@0: * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use code from michael@0: `TT_Process_Composite_Glyph' for handling unreliable values of michael@0: `maxSizeOfInstructions'. michael@0: michael@0: 2013-11-16 Werner Lemberg michael@0: michael@0: [sfnt] Fix `OS/2' table version 5 support. michael@0: michael@0: We now follow the `official' announcement from Microsoft (on the michael@0: OpenType mailing list, which unfortunately hasn't a public archive). michael@0: michael@0: * include/freetype/tttables.h (TT_OS2): michael@0: s/usLowerPointSize/usLowerOpticalPointSize/, michael@0: s/usUpperPointSize/usUpperOpticalPointSize/. michael@0: michael@0: * src/sfnt/ttload.c (tt_face_load_os2): Update, and set correct michael@0: default values. michael@0: michael@0: 2013-11-13 Werner Lemberg michael@0: michael@0: * builds/unix/ft2unix.h: Remove. No longer necessary. michael@0: michael@0: * builds/unix/install.mk (install): Updated. michael@0: michael@0: 2013-11-13 Werner Lemberg michael@0: michael@0: Simplify header file hierarchy. michael@0: michael@0: This large patch changes the header file directory layout from michael@0: `include/freetype/...' to `include/...', effectively removing one michael@0: level. Since the file `ft2build.h' is also located in `include' michael@0: (and it stays there even after installation), all FreeType header michael@0: files are now in a single directory. michael@0: michael@0: Applications that use (a) `freetype-config' or FreeType's michael@0: `pkg-config' file to get the include directory for the compiler, and michael@0: (b) the documented way for header inclusion like michael@0: michael@0: #include michael@0: #include FT_FREETYPE_H michael@0: ... michael@0: michael@0: don't need any change to the source code. michael@0: michael@0: * include/freetype/*: Move up to... michael@0: * include/*: ... this directory. michael@0: michael@0: * builds/amiga/include/freetype/*: Move up to... michael@0: * builds/amiga/include/*: ... this directory. michael@0: michael@0: */*: Essentially do `s@/freetype/@/@' where appropriate. michael@0: michael@0: * CMakeList.txt: Simplify. michael@0: * builds/unix/freetype-config.in, builds/unix/freetype2.in: For michael@0: `--cflags', return a single directory. michael@0: * builds/unix/install.mk (install): No longer try to remove `cache' michael@0: and `internal' subdirectories; instead, remove the `freetype' michael@0: subdirectory. michael@0: michael@0: 2013-11-12 Werner Lemberg michael@0: michael@0: [truetype] Fix last `truetype' commit. michael@0: michael@0: * src/truetype/ttgload.c (tt_get_metrics): Preserve stream position. michael@0: Return error value. michael@0: (load_truetype_glyph): Updated. michael@0: michael@0: 2013-11-10 Werner Lemberg michael@0: michael@0: * docs/CMAKE: New dummy file. michael@0: michael@0: 2013-11-08 Dave Arnold michael@0: michael@0: [cff] Fix for hints that touch. michael@0: michael@0: * src/cff/cf2hints.c (cf2_hintmap_insertHint): Fix condition for michael@0: finding index value of insertion point. michael@0: michael@0: 2013-11-06 Werner Lemberg michael@0: michael@0: [truetype] Fix handling of phantom points in composite glyphs. michael@0: Problem reported by Nigel Tao . michael@0: michael@0: This is a follow-up commit to the previous one. michael@0: michael@0: * src/truetype/ttgload.c (load_truetype_glyph): Call michael@0: `tt_get_metrics' after loading the glyph header. michael@0: michael@0: 2013-11-06 Werner Lemberg michael@0: michael@0: [truetype] Improve emulation of vertical metrics. michael@0: michael@0: This commit also improves the start values of vertical phantom michael@0: points. Kudos to Greg Hitchcock for help. michael@0: michael@0: * src/truetype/ttgload.c (TT_Get_VMetrics): Add parameter to pass michael@0: `yMax' value. Replace code with fixed Microsoft definition. michael@0: (tt_get_metrics): Updated. michael@0: (TT_LOADER_SET_PP): Add explanation how to initialize phantom michael@0: points, taken from both the OpenType specification and private michael@0: communication with Greg (which will eventually be added to the michael@0: standard). michael@0: Fix horizontal position of `pp3' and `pp4'. michael@0: michael@0: * src/truetype/ttgload.h: Updated. michael@0: michael@0: * src/truetype/ttdriver.c (tt_get_advances): Updated. michael@0: michael@0: * docs/CHANGES: Updated. michael@0: michael@0: 2013-11-05 Werner Lemberg michael@0: michael@0: * builds/windows/vc2010/freetype.vcxproj: s/v110/v100/. michael@0: PlatformToolSet version 110 is for VC2012. michael@0: michael@0: Problem reported (with solution) by Dave Arnold . michael@0: michael@0: 2013-11-05 Werner Lemberg michael@0: michael@0: [truetype] Correctly reset point tags for glyph components. michael@0: Problem reported by Nigel Tao . michael@0: michael@0: * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix loop. michael@0: michael@0: 2013-11-02 Werner Lemberg michael@0: michael@0: [truetype] Fix GETINFO opcode handling of subpixel hinting bits. michael@0: michael@0: * src/truetype/ttinterp.c (Ins_GETINFO): Don't request bit 6 set to michael@0: get info on subpixel hinting. michael@0: michael@0: * docs/CHANGES: Updated. michael@0: michael@0: 2013-11-02 Werner Lemberg michael@0: michael@0: Fix Savannah bug #40451. michael@0: michael@0: Simply apply the patch from the bug report. michael@0: michael@0: * builds/unix/ftconfig.in, builds/vms/ftconfig.h, michael@0: include/freetype/config/ftconfig.h: The used #pragma directives only michael@0: work with gcc versions 4.6 and higher. michael@0: michael@0: 2013-11-01 Werner Lemberg michael@0: michael@0: * docs/CHANGES: Updated. michael@0: michael@0: 2013-11-01 Werner Lemberg michael@0: michael@0: [truetype] Minor code refactoring. michael@0: michael@0: Two benefits: The allocated FDEF (and IDEF) array gets slightly michael@0: smaller, and the `ttdebug' demo program has access to function michael@0: numbers without additional costs. michael@0: michael@0: Fortunately, no changes to FontForge are necessary – this is the michael@0: only external TrueType debugger I know of, but others may exist and michael@0: should check the code accordingly. michael@0: michael@0: * src/truetype/ttinterp.h (TT_CallRec): Replace `Cur_Restart' and michael@0: `Cur_End' with a pointer to the corresponding `TT_DefRecord' michael@0: structure. michael@0: michael@0: * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF, Ins_ENDF, michael@0: Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns ): michael@0: Updated. michael@0: michael@0: 2013-10-27 Werner Lemberg michael@0: michael@0: [sfnt] Implement support for `OS/2' table version 5. michael@0: michael@0: See michael@0: michael@0: http://typedrawers.com/discussion/470/new-microsoft-size-specific-design-selection-mechanism michael@0: michael@0: for the announcement. michael@0: michael@0: * include/freetype/tttables.h (TT_OS2): Add fields michael@0: `usLowerPointSize' and `usUpperPointSize'. Since FreeType returns michael@0: this structure only as a pointer through `FT_Get_Sfnt_Table', there michael@0: shouldn't be any ABI problems. michael@0: michael@0: * src/sfnt/ttload.c (tt_face_load_os2): Implement it. michael@0: michael@0: * docs/CHANGES: Updated. michael@0: michael@0: 2013-10-24 Werner Lemberg michael@0: michael@0: * README.git, docs/CHANGES, docs/INSTALL: Updated. michael@0: michael@0: 2013-10-24 John Cary michael@0: michael@0: Provide cmake support. michael@0: michael@0: * CMakeLists.txt: New file. michael@0: michael@0: 2013-10-23 Kenneth Miller michael@0: Werner Lemberg michael@0: michael@0: Provide support for x64 builds in Visual C++ project files. michael@0: michael@0: * src/builds/win32: Renamed to... michael@0: * src/builds/windows: This. michael@0: michael@0: * src/builds/windows/vc2010/*: Updated to handle x64 target. michael@0: michael@0: * src/builds/windows/*.mk, docs/INSTALL.GNU: s/win32/windows/ where michael@0: appropriate. michael@0: michael@0: 2013-10-22 Werner Lemberg michael@0: michael@0: * src/base/md5.c, src/base/md5.h: Updated to recent version. michael@0: michael@0: * src/base/ftobjs.c: Updated; `md5.c' no longer uses `free'. michael@0: michael@0: The canonical URL to get updates for this file is michael@0: michael@0: http://cvsweb.openwall.com/cgi/cvsweb.cgi/Owl/packages/popa3d/popa3d/md5/ michael@0: michael@0: as the author told me in private communication. michael@0: michael@0: 2013-10-19 Werner Lemberg michael@0: michael@0: [autofit] s/SMALL_TOP/X_HEIGHT/. michael@0: michael@0: * src/autofit/afblue.dat: Updated. michael@0: michael@0: * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. michael@0: michael@0: * src/autofit/aflatin.c, src/autofit/aflatin.h, michael@0: src/autofit/atlatin2.c: Updated. michael@0: michael@0: 2013-10-19 Werner Lemberg michael@0: michael@0: * src/autofit/afblue.dat: s/MINOR/DESCENDER/. michael@0: michael@0: * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. michael@0: michael@0: 2013-10-16 Werner Lemberg michael@0: michael@0: [autofit] Add description strings to script entries. michael@0: michael@0: Currently, this is unused. michael@0: michael@0: * src/autofit/afscript.h: Do it. michael@0: * src/autofit/afglobal.c, src/autofit/afpic.c, michael@0: src/autofit/aftypes.h: Updated. michael@0: michael@0: 2013-10-16 Werner Lemberg michael@0: michael@0: [autofit] Improve tracing message for extra light flag. michael@0: michael@0: * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Do it. michael@0: michael@0: 2013-10-15 Chongyu Zhu michael@0: michael@0: [arm] Fix thumb2 inline assembly under LLVM. michael@0: michael@0: When using `ADD' with an immediate operand, the instruction is michael@0: actually `ADD Rd, Rn, #', that is, the maximum of the michael@0: immediate operand cannot exceed 4095. It will fail to compile with michael@0: LLVM. michael@0: michael@0: However, in GCC, due to some legacy compatibility considerations, michael@0: `ADD.W' will be automatically emitted when the immediate operand is michael@0: larger than 4095. michael@0: michael@0: * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h michael@0: (FT_MulFix_arm) [__GNUC__]: Support clang compiler. michael@0: michael@0: * src/truetype/ttinterp.c (TT_MulFix14_arm) [__GNUC__]: Ditto. michael@0: michael@0: 2013-10-12 Werner Lemberg michael@0: michael@0: [autofit] Improve tracing of `latin' hinter. michael@0: michael@0: * src/autofit/aflatin.c (af_latin_metrics_init_blues): Report blue michael@0: zone types. michael@0: (af_latin_metrics_scale_dim): Report scaling changes due to x height michael@0: alignment. michael@0: Report scaled stroke width and blue zone values. michael@0: michael@0: 2013-10-03 Dave Arnold michael@0: michael@0: * src/cff/cf2font.c (cf2_computeDarkening): Avoid division by zero. michael@0: michael@0: Note that the old code avoided using a region of the piecewise michael@0: linear function where the slope was zero. The recovery was to use a michael@0: different section of the function, which produced a different, michael@0: incorrect amount of darkening. michael@0: michael@0: 2013-10-02 Darrell Bellert michael@0: michael@0: * src/sfnt/ttload.c (tt_face_load_pclt): Fix `pclt_fields'. michael@0: michael@0: 2013-10-02 Dave Arnold michael@0: michael@0: * src/cff/cf2font.c (cf2_computeDarkening): Initialize darkenAmount. michael@0: michael@0: This line was lost in commit 89ca1fd6 (from 2013-06-25). The effect michael@0: is to use a previous darkening amount when producing an unhinted, michael@0: unscaled outline. This can cause autohint samples in ftgrid and michael@0: ftview to be based on darkened CFF outlines instead of unhinted, michael@0: undarkened ones. michael@0: michael@0: 2013-09-29 Dave Arnold michael@0: michael@0: Fix Savannah bug #39295. michael@0: michael@0: The bug was caused by switching to the initial hintmap (the one in michael@0: effect when `moveto' executes) just before drawing the final element michael@0: in the charstring. This ensured that the path was closed (in both michael@0: Character Space and Device Space). But if the final element was a michael@0: curve and if the final hintmap was different enough from the initial michael@0: one, then the curve was visibly distorted. michael@0: michael@0: The first part of the fix is to draw the final curve using the final michael@0: hintmap as specified by the charstring. This corrects the michael@0: distortion but does not ensure closing in Device Space. It may michael@0: require the rasterizer to automatically generate an extra closing michael@0: line. Depending on the hintmap differences, this line could be from michael@0: zero to a couple pixels in length. michael@0: michael@0: The second part of the fix covers the case where the charstring michael@0: subpath is closed with an explicit line. We now modify that line's michael@0: end point to avoid the distortion. michael@0: michael@0: Some glyphs in the bug report font (TexGyreHeros-Regular) that show michael@0: the change are: michael@0: michael@0: 25ppem S (98) michael@0: 24ppem eight (52) michael@0: 25.5ppem p (85) michael@0: michael@0: Curves at the *end* of a subpath are no longer distorted. However, michael@0: some of these glyphs have bad hint substitutions in the middle of a michael@0: subpath, and these are not affected. michael@0: michael@0: The patch has been tested with a set of 106 fonts that shipped with michael@0: Adobe Creative Suite 4, together with 756 Open Source CFF fonts from michael@0: Google Fonts. There are 1.5 million glyphs, of which some 20k are michael@0: changed with the fix. A sampling of a few hundred of these changes michael@0: have been examined more closely, and the changes look good (or at michael@0: least acceptable). michael@0: michael@0: * src/cff/cf2hints.h (CF2_GlyphPathRec): New element `pathIsClosing' michael@0: to indicate that we synthesize a closepath line. michael@0: michael@0: * src/cff/cf2hints.c (cf2_glyphpath_init): Updated. michael@0: (cf2_glyphpath_pushPrevElem): If closing, use first hint map (for michael@0: `lineto' operator) and adjust hint zone. michael@0: For synthesized closing lines, use end point in first hint zone. michael@0: (cf2_glyphpath_lineTo): Take care of synthesized closing lines. In michael@0: particular, shift the detection of zero-length lines from character michael@0: space to device space. michael@0: (cf2_glyphpath_closeOpenPath): Remove assertion. michael@0: Updated. michael@0: michael@0: 2013-09-25 Werner Lemberg michael@0: michael@0: * src/autofit/aflatin.c (af_{grek,cyrl}_uniranges): Fix arrays. michael@0: michael@0: 2013-09-25 suzuki toshiya michael@0: michael@0: [bdf, pcf] Refuse non-zero face_index. michael@0: michael@0: Suggested by Akira Tagoh, see michael@0: michael@0: http://lists.gnu.org/archive/html/freetype/2013-09/msg00030.html michael@0: michael@0: * src/bdf/bdfdrivr.c (BDF_Face_Init): Return `Invalid_Argument' michael@0: error if the font could be opened but non-zero `face_index' is michael@0: given. michael@0: * src/pcf/pcfdrivr.c (PCF_Face_Init): Ditto. michael@0: michael@0: * src/type42/t42objs.c (T42_Face_Init): Remove unrequired FT_UNUSED michael@0: macro for `face_index' because it is validated later. michael@0: michael@0: 2013-09-23 Werner Lemberg michael@0: michael@0: Fix Savannah bug #40090. michael@0: michael@0: * src/autofit/afcjk.c (af_cjk_metrics_scale): Revert commit michael@0: 306f8c5d (from 2013-08-25) affecting this function. michael@0: michael@0: 2013-09-22 Werner Lemberg michael@0: michael@0: [autofit] Disunify Cyrillic and Greek handling from Latin. michael@0: michael@0: * src/autofit/afscript.h: Add Cyrillic and Greek. michael@0: michael@0: * src/autofit/afblue.dat (AF_BLUE_STRINGSET_GREK, michael@0: AF_BLUE_STRINGSET_CYRL): Add blue zones for Greek and Cyrillic. michael@0: (AF_BLUE_STRINGSET_LATN): Fix typo. michael@0: * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. michael@0: michael@0: * src/autofit/aflatin.c (af_grek_uniranges, af_cyrl_uniranges): New michael@0: arrays. michael@0: (af_grek_script_class, af_cyrl_script_class): New scripts. michael@0: * src/autofit/aflatin.h: Updated. michael@0: michael@0: 2013-09-20 Werner Lemberg michael@0: michael@0: * docs/CHANGES: Updated. michael@0: michael@0: 2013-09-20 Behdad Esfahbod michael@0: michael@0: Fix vertical size of emboldened glyphs. michael@0: michael@0: Cf. https://bugzilla.gnome.org/show_bug.cgi?id=686709 michael@0: michael@0: * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Adjust `horiBearingY' michael@0: also. michael@0: michael@0: 2013-09-11 Alexei Podtelezhnikov michael@0: michael@0: * include/freetype/ftoutln.h: Correct FT_Outline_Get_Orientation michael@0: algorithm description. michael@0: michael@0: 2013-09-11 Werner Lemberg michael@0: michael@0: [autofit] Improve Hebrew rendering. michael@0: michael@0: This change introduces a new blue zone property michael@0: `AF_BLUE_PROPERTY_LATIN_LONG' to make the auto-hinter ignore short michael@0: top segments. michael@0: michael@0: * src/autofit/afblue.dat: Fix Hebrew blue strings. michael@0: Use AF_BLUE_PROPERTY_LATIN_LONG for AF_BLUE_STRING_HEBREW_TOP. michael@0: michael@0: * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_LONG): New macro. michael@0: michael@0: * src/autofit/afblue.c, src/autofit/afblue.h: Updated. michael@0: michael@0: * src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle michael@0: `AF_LATIN_IS_LONG_BLUE'. michael@0: michael@0: * src/autofit/aflatin.h (AF_LATIN_IS_LONG_BLUE): New macro. michael@0: michael@0: 2013-08-28 Behdad Esfahbod michael@0: michael@0: [sfnt] Fix frame access while reading WOFF table directory. michael@0: michael@0: * src/sfnt/sfobjs.c (woff_open_font): Using single memory frame michael@0: while reading the directory entries for the whole loop. michael@0: michael@0: 2013-08-29 Werner Lemberg michael@0: Behdad Esfahbod michael@0: michael@0: Implement support for WOFF containers. michael@0: michael@0: We simply synthesize a SFNT from the WOFF, create a memory stream michael@0: for the new data, and load the SFNT as usual. michael@0: michael@0: Does NOT add any API to access WOFF metadata or private blocks. michael@0: michael@0: * include/freetype/internal/tttypes.h (WOFF_HeaderRec, michael@0: WOFF_TableRec): New structures. michael@0: michael@0: * include/freetype/tttags.h (TTAG_wOFF): New macro. michael@0: michael@0: * src/base/ftobjs.c (FT_Open_Face): Set `stream' after calling michael@0: `open_face'. michael@0: michael@0: * src/sfnt/sfobjs.c [FT_CONFIG_OPTION_SYSTEM_ZLIB]: Include michael@0: `FT_GZIP_H'. michael@0: (WRITE_BYTE, WRITE_USHORT, WRITE_ULONG): New temporary macros for michael@0: writing to a stream. michael@0: (sfnt_stream_close, compare_offsets, woff_open_font): New functions. michael@0: (sfnt_open_font): Handle `TTAG_wOFF'. michael@0: (sfnt_init_face): Set `stream' after calling `sfnt_open_font'. michael@0: michael@0: * src/truetype/ttobjs.c (tt_face_init): Set `stream' after calling michael@0: `sfnt->init_face'. michael@0: michael@0: * src/base/ftobjs.c (open_face): Use a pointer to FT_Stream as an michael@0: argument so that a changed stream survives. michael@0: Update callers. michael@0: michael@0: 2013-08-28 Werner Lemberg michael@0: michael@0: [gzip] New function `FT_Gzip_Uncompress'. michael@0: michael@0: This is modeled after zlib's `uncompress' function. We need this michael@0: for WOFF support. michael@0: michael@0: * include/freetype/ftgzip.h, src/gzip/ftgzip.c (FT_Gzip_Uncompress): michael@0: New function. michael@0: michael@0: * src/gzip/rules.mk: Rewrite to better reflect dependencies. michael@0: michael@0: 2013-08-28 Werner Lemberg michael@0: michael@0: [autofit] Fix `make multi' compilation. michael@0: michael@0: * src/autofit/afblue.cin, src/autofit/afblue.c: Don't include michael@0: `afblue.h' but `aftypes.h'. michael@0: * src/autofit/afcjk.c: Don't include `aftypes.h' but `afglobal.h'. michael@0: michael@0: 2013-08-28 Werner Lemberg michael@0: michael@0: [autofit] Fix C++ compilation. michael@0: michael@0: * src/autofit/afglobal.c (af_face_globals_get_metrics), michael@0: src/autofit/afdummy.c (af_dflt_script_class), src/autofit/afindic.c michael@0: (af_deva_script_class): Use proper casts. michael@0: michael@0: 2013-08-27 Behdad Esfahbod michael@0: michael@0: * src/sfnt/ttload.c (tt_face_load_font_dir): Fix sign typos. michael@0: michael@0: 2013-08-27 Behdad Esfahbod michael@0: michael@0: FT_Open_Face: Improve external stream handling. michael@0: michael@0: If the font's `clazz->init_face' function wants to swap to new michael@0: stream, handling of whether original stream was external could michael@0: result to either memory leak or double free. Mark externality into michael@0: face flags before calling `init_face' such that the clazz can handle michael@0: external streams properly. michael@0: michael@0: * src/base/ftobjs.c (FT_Open_Face): Move code to set michael@0: FT_FACE_FLAG_EXTERNAL_STREAM to... michael@0: (open_face): This function. michael@0: michael@0: 2013-08-27 Werner Lemberg michael@0: michael@0: Remove `FT_SqrtFixed' function. michael@0: michael@0: It's no longer used. michael@0: michael@0: * include/freetype/internal/ftcalc.h, src/base/ftcalc.c: Do it. michael@0: michael@0: 2013-08-27 Werner Lemberg michael@0: michael@0: [autofit] While tracing, report script names instead of ID values. michael@0: michael@0: * src/autofit/afglobal.c (af_script_names) [FT_DEBUG_LEVEL_TRACE]: michael@0: New array. michael@0: * src/autofit/afglobal.h: Updated. michael@0: michael@0: * src/autofit/afcjk.c (af_cjk_metrics_init_widths, michael@0: af_cjk_hint_edges): Use `af_script_names'. michael@0: * src/autofit/aflatin.c (af_latin_metrics_init_widths, michael@0: af_latin_hint_edges): Ditto. michael@0: michael@0: 2013-08-26 Werner Lemberg michael@0: michael@0: [autofit] Report used script while hinting a glyph. michael@0: michael@0: * src/autofit/afcjk.c (af_cjk_hint_edges), src/autofit/aflatin.c michael@0: (af_latin_hint_edges): Implement it. michael@0: michael@0: 2013-08-26 Werner Lemberg michael@0: michael@0: [autofit] Add support for Hebrew script. michael@0: michael@0: * src/autofit/afblue.dat: Add blue strings for Hebrew. michael@0: * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. michael@0: michael@0: * src/autofit/aflatin.c (af_hebr_uniranges): New array. michael@0: (af_hebr_script_class): New script. michael@0: * src/autofit/aflatin.h, src/autofit/afscript.h: Updated. michael@0: michael@0: 2013-08-26 Werner Lemberg michael@0: michael@0: [autofit] Improve tracing messages. michael@0: michael@0: * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Mention script michael@0: ID in tracing message. michael@0: (af_cjk_metrics_init_blues): Initialize `axis' outside of the inner michael@0: loop. michael@0: Improve tracing messages. michael@0: (af_cjk_hint_edges) [FT_DEBUG_LEVEL_TRACE]: New variable michael@0: `num_actions' to count hinting actions. michael@0: Improve tracing messages. michael@0: michael@0: * src/autofit/aflatin.c (af_latin_metrics_init_widths): Mention michael@0: script ID in tracing message. michael@0: (af_latin_metrics_init_blues, af_latin_hint_edges): Improve tracing michael@0: messages. michael@0: michael@0: 2013-08-26 Werner Lemberg michael@0: michael@0: Better tracing of loaded glyphs. michael@0: michael@0: Previously, the loading of a glyph was traced at level 4, if at all. michael@0: With this change, all font loading routines emit a tracing message michael@0: at level 1, making it easier to select tracing output (for example michael@0: using F2_DEBUG="any:1 afhints:7 aflatin:7"). michael@0: michael@0: * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Add tracing message. michael@0: * src/cff/cffdrivr.c (cff_glyph_load): Ditto. michael@0: * src/cff/cffgload.c (cff_decoder_prepare): Improve tracing michael@0: messages. michael@0: * src/cid/cidgload.c (cid_load_glyph): Use level 1 for tracing michael@0: message. michael@0: * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Ditto. michael@0: * src/pfr/pfrobjs.c (pfr_slot_load): Add tracing message. michael@0: * src/truetype/ttgload.c (TT_Load_Glyph): Ditto. michael@0: * src/type1/t1gload.c (T1_Load_Glyph): Ditto. michael@0: * src/type42/t42objs.c (T42_GlyphSlot_Load): Ditto. michael@0: * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto. michael@0: michael@0: 2013-08-26 Werner Lemberg michael@0: michael@0: [autofit] Fix script selection. michael@0: michael@0: * src/autofit/afglobal.c (af_face_globals_get_metrics): Use michael@0: `AF_SCRIPT_DFLT', not value 0. michael@0: Simplify code. michael@0: michael@0: * src/autofit/afscript.h: Sort by script name. michael@0: michael@0: 2013-08-26 Werner Lemberg michael@0: michael@0: [autofit] Make `dummy' hinter work as expected. michael@0: michael@0: * src/autofit/afdummy.c (af_dummy_hints_init): Properly set scaling michael@0: information. michael@0: (af_dummy_hints_apply): Scale the glyphs. michael@0: michael@0: 2013-08-25 Werner Lemberg michael@0: michael@0: [autofit] Make `cjk' module use blue stringsets. michael@0: michael@0: * src/autofit/afcjk.c (AF_CJK_MAX_TEST_CHARACTERS): Removed. michael@0: (af_cjk_hani_blue_chars): Removed. michael@0: (AF_CJK_BLUE_TYPE_*): Removed. michael@0: (af_cjk_metrics_init_blues): Replace AF_CJK_MAX_TEST_CHARACTERS with michael@0: AF_BLUE_STRING_MAX_LEN. michael@0: Change loops to use offsets (in file `afblue.h') into the new arrays michael@0: `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c'). michael@0: Instead of three dimensions (as used in the old blue string array) michael@0: we now use properties to do the same, saving one loop nesting level. michael@0: michael@0: * src/autofit/afcjk.h: Remove old enumeration values superseded by michael@0: the new data in `afblue.h'. michael@0: (AF_CJK_IS_TOP_BLUE, AF_CJK_IS_HORIZ_BLUE, AF_CJK_IS_FILLED_BLUE, michael@0: AF_CJK_IS_RIGHT_BLUE): New macros, to be used in michael@0: `af_cjk_metrics_init_blues'. michael@0: (AF_CJK_BLUE_IS_RIGHT): Remove this now redundant enum value. michael@0: (AF_CJK_BLUE_IS_TOP): Renamed to... michael@0: (AF_CJK_BLUE_TOP): This. michael@0: (AF_CJK_MAX_BLUES): Remove. michael@0: (AF_CJKAxisRec): Updated. michael@0: michael@0: 2013-08-25 Werner Lemberg michael@0: michael@0: [autofit] Typo. michael@0: michael@0: * src/autofit/afblue.hin, src/autofit/afblue.c (GET_UTF8_CHAR): Use michael@0: cast. michael@0: michael@0: 2013-08-25 Werner Lemberg michael@0: michael@0: [autofit] Synchronize `cjk' with `latin' module (and vice versa). michael@0: michael@0: * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Add tracing michael@0: messages. michael@0: (af_cjk_metrics_init_blues): Don't pass blue string array as michael@0: argument but use the global array directly. michael@0: Use `outline' directly. michael@0: Update and add tracing messages. michael@0: (af_cjk_metrics_init): Simplify code. michael@0: (af_cjk_metrics_scale_dim): Improve tracing message. michael@0: (af_cjk_metrics_scale): Synchronize. michael@0: michael@0: * src/autofit/aflatin.c (af_latin_metrics_init_widths, michael@0: af_latin_metrics_init_blues): Improve and add tracing messages. michael@0: michael@0: 2013-08-25 Werner Lemberg michael@0: michael@0: [autofit] Make `latin' module use blue stringsets. michael@0: michael@0: * src/autofit/aflatin.c (AF_LATIN_MAX_TEST_CHARACTERS): Removed. michael@0: (af_latin_blue_chars): Removed. michael@0: (af_latin_metrics_init_blues): Replace AF_LATIN_MAX_TEST_CHARACTERS michael@0: with AF_BLUE_STRING_MAX_LEN. michael@0: Change loops to use offsets (in file `afblue.h') into the new arrays michael@0: `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c'). michael@0: Use `AF_LATIN_IS_SMALL_TOP_BLUE' macro. michael@0: michael@0: * src/autofit/aflatin.h: Remove old enumeration values superseded by michael@0: the new data in `afblue.h'. michael@0: (AF_LATIN_IS_TOP_BLUE): Updated definition. michael@0: (AF_LATIN_IS_SMALL_TOP_BLUE): New macro. michael@0: (AF_LATIN_MAX_BLUES): Remove. michael@0: (AF_LatinAxisRec): Updated. michael@0: michael@0: 2013-08-25 Werner Lemberg michael@0: michael@0: [autofit] Add blue stringsets. michael@0: michael@0: * src/autofit/aftypes.h: Include `afblue.h'. michael@0: (AF_ScriptClassRec): Add `blue_stringset' field. michael@0: (AF_DEFINE_SCRIPT_CLASS): Updated. michael@0: michael@0: * src/autofit/autofit.c: Include `afblue.c'. michael@0: michael@0: * src/autofit/afcjk.c (af_hani_script_class), src/autofit/afdummy.c michael@0: (af_dflt_script_class), src/autofit/afindic.c michael@0: (af_deva_script_class), src/autofit/aflatin.c michael@0: (af_latn_script_class), src/autofit/aflatin2.c michael@0: (af_ltn2_script_class): Updated. michael@0: michael@0: * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afblue.c'. michael@0: michael@0: 2013-08-25 Werner Lemberg michael@0: michael@0: [autofit] Introduce data file for blue strings. michael@0: michael@0: The idea is to have a central file which gets processed by a Perl michael@0: script to create proper `.c' and `.h' files using templates. There michael@0: are two other reasons to do that: michael@0: michael@0: . The data file should be easily readable. We use UTF-8 encoding michael@0: which then gets converted to single bytes. michael@0: michael@0: . Since the number of supported scripts will increase soon, the michael@0: current usage of blue string arrays is a waste of space. Using michael@0: the Perl script it is possible to imitate jagged arrays, michael@0: defining enumeration constants as offsets into the arrays. michael@0: michael@0: This commit only adds files without changing any functionality. michael@0: michael@0: * src/autofit/afblue.dat: New data file. michael@0: * src/tools/afblue.pl: New Perl script for processing `afblue.dat'. michael@0: michael@0: * src/autofit/afblue.cin, src/autofit/afblue.hin: New template files michael@0: for... michael@0: * src/autofit/afblue.c, src/autofit/afblue.c: New source files. michael@0: To avoid a dependency on Perl, we add them too. michael@0: michael@0: 2013-08-19 Alexei Podtelezhnikov michael@0: michael@0: [base] Enable new algorithm for `BBox_Cubic_Check'. michael@0: michael@0: * src/base/ftbbox.c: Enable new BBox_Cubic_Check algorithm, remove michael@0: the old one. michael@0: Improve comments. michael@0: michael@0: 2013-08-18 Werner Lemberg michael@0: michael@0: * builds/unix/unix-def.in (freetype2.pc): Don't set executable bit. michael@0: michael@0: 2013-08-18 Werner Lemberg michael@0: michael@0: Fix Savannah bug #39804. michael@0: michael@0: * builds/unix/configure.raw (LIBPNG): Define and export. michael@0: * builds/unix/freetype-config.in, builds/unix/freetype2.in: Handle michael@0: libpng. michael@0: michael@0: 2013-08-17 Alexei Podtelezhnikov michael@0: michael@0: [base] Clean up BBox_Conic_Check. michael@0: michael@0: * src/base/ftbbox.c (BBox_Conic_Check): Remove redundant checks for michael@0: extremum at the segment ends, which are already within the bbox. michael@0: Slightly modify calculations. michael@0: michael@0: 2013-08-15 Alexei Podtelezhnikov michael@0: michael@0: [base] Finish experimental (disabled) BBox_Cubic_Check implementation. michael@0: michael@0: * src/base/ftbbox.c (BBox_Cubic_Check): Scale arguments to improve michael@0: accuracy and avoid overflows. michael@0: michael@0: 2013-08-13 Alexei Podtelezhnikov michael@0: michael@0: [base] Refactor experimental (disabled) BBox_Cubic_Check. michael@0: michael@0: * src/base/ftbbox.c (BBox_Cubic_Check): Implement the minimum search michael@0: as the mirror image of the maximum search implemented here... michael@0: (update_max): New function. michael@0: michael@0: 2013-08-06 John Tytgat michael@0: michael@0: Fix Savannah bug #39702. michael@0: michael@0: * src/cff/cffload.c (cff_index_get_pointers): Check for `cur_offset michael@0: != 0'; this stronger test is mandated by the CFF specification. michael@0: Fix test for INDEX structures which have one or more empty entries michael@0: at the end. michael@0: michael@0: 2013-08-05 Werner Lemberg michael@0: michael@0: Fix gcc pragmas, part 2. michael@0: michael@0: * src/truetype/ttinterp.c (TT_MulFix14_long_long, michael@0: TT_DotFix14_long_long): `#pragma gcc diagnostic {push,pop}' has been michael@0: introduced with gcc version 4.6. michael@0: michael@0: 2013-08-05 Werner Lemberg michael@0: michael@0: Fix gcc pragmas. michael@0: michael@0: * src/truetype/ttinterp.c (TT_MulFix14_long_long, michael@0: TT_DotFix14_long_long): Older gcc versions don't accept diagnostic michael@0: pragmas within a function body. michael@0: michael@0: 2013-08-05 Werner Lemberg michael@0: michael@0: Fix Savannah bug #39700. michael@0: michael@0: * builds/unix/ftconfig.h: Synchronize with michael@0: `include/freetype/config/ftconfig.h'. michael@0: michael@0: * builds/vms/ftconfig.h: Ditto. michael@0: Make the differences to the master `ftconfig.h' file as small as michael@0: possible for easier maintainance. michael@0: michael@0: 2013-08-05 Werner Lemberg michael@0: michael@0: [autofit] Improve handling of `near' points. michael@0: michael@0: Points which are very near to each other are now marked as such. michael@0: The `weak' flag is then computed by using the `in' vector of the michael@0: first and the `out' vector of the last point of a group of near michael@0: points. michael@0: michael@0: For example, this fixes the rendering of glyph `Oslash' in michael@0: `Roboto-Thin.ttf'. michael@0: michael@0: * src/autofit/afhints.h (AF_Flags): New value `AF_FLAGS_NEAR'. michael@0: michael@0: * src/autofit/afhints.c (af_glyph_hints_reload): Introduce michael@0: the heuristic value `near_limit' to decide whether the current point michael@0: is near to the previous one, then set `AF_FLAG_NEAR' accordingly. michael@0: Store good `in' vector (of last non-near point) in michael@0: `last_good_in_{x,y}' and use it as an argument to michael@0: `ft_corner_is_flat' if necessary. michael@0: michael@0: 2013-08-02 Werner Lemberg michael@0: michael@0: * include/freetype/ftcffdrv.h: Improve documentation. michael@0: This is based on blog entries from David Lemon and Dave Arnold (both michael@0: from Adobe) with kind permission. Dave also helped in michael@0: proof-reading. michael@0: michael@0: 2013-08-02 Werner Lemberg michael@0: michael@0: [autofit] Move declaration of scripts into separate file. michael@0: michael@0: This has the benefit that we don't need to duplicate the data at michael@0: different places. michael@0: michael@0: * src/autofit/afscript.h: New file. michael@0: michael@0: * src/autofit/aftypes.h (AF_Script): Include `afscript.h' to define michael@0: the enumeration values. michael@0: michael@0: * src/autofit/afglobal.c: Include `afscript.h' to get the script michael@0: specific header files. michael@0: (af_script_classes): Include `afscript.h' to fill this array. michael@0: michael@0: * src/autofit/afpic.c: Include `afscript.h' to get the script michael@0: specific header files. michael@0: (autofit_module_class_pic_init): Include `afscript.h' for michael@0: initialization. michael@0: * src/autofit/afpic.h (AF_SCRIPT_CLASSES_COUNT, michael@0: AF_SCRIPT_CLASSES_REC_COUNT): Removed. Use `AF_SCRIPT_MAX' instead. michael@0: michael@0: * src/autofit/rules.mk (AUTOF_DRV_H): Updated. michael@0: michael@0: 2013-08-02 Werner Lemberg michael@0: michael@0: [autofit] Move declaration of writing systems into separate file. michael@0: michael@0: This has the benefit that we don't need to duplicate the data at michael@0: different places. michael@0: michael@0: * src/autofit/afwrtsys.h: New file. michael@0: michael@0: * src/autofit/aftypes.h (AF_WritingSystem): Include `afwrtsys.h' to michael@0: define the enumeration values. michael@0: michael@0: * src/autofit/afglobal.c: Include `afwrtsys.h' to get the writing michael@0: system specific header files. michael@0: Include `afpic.h'. michael@0: (af_writing_system_classes): Include `afwrtsys.h' to fill this michael@0: array. michael@0: michael@0: * src/autofit/afpic.c: Include `afwrtsys.h' to get the writing michael@0: system specific header files. michael@0: (autofit_module_class_pic_init): Include `afwrtsys.h' for michael@0: initialization. michael@0: * src/autofit/afpic.h (AF_WRITING_SYSTEM_CLASSES_COUNT, michael@0: AF_WRITING_SYSTEM_CLASSES_REC_COUNT): Removed. Use michael@0: `AF_WRITING_SYSTEM_MAX' instead. michael@0: michael@0: 2013-08-02 Werner Lemberg michael@0: michael@0: [sfnt] Fix compilation with g++. michael@0: michael@0: * src/sfnt/pngshim.c (error_callback, read_data_from_FT_stream): Use michael@0: cast. michael@0: (Load_SBit_Png): Pacify compiler. michael@0: michael@0: 2013-08-02 suzuki toshiya michael@0: Werner Lemberg michael@0: michael@0: [autofit] Fix `make multi'. michael@0: michael@0: * include/freetype/config/ftconfig.h (FT_LOCAL_ARRAY, michael@0: FT_LOCAL_ARRAY_DEF): New macros. michael@0: michael@0: * src/autofit/afglobal.c (af_writing_system_classes, michael@0: af_script_classes): Use FT_LOCAL_ARRAY_DEF. michael@0: * src/autofit/afglobal.h: Declare `af_writing_system_classes' and michael@0: `af_script_classes'. michael@0: * src/autofit/afloader.c: Include `afpic.h'. michael@0: michael@0: 2013-08-01 Werner Lemberg michael@0: michael@0: Another round of cppcheck nitpicks. michael@0: michael@0: The call was (from the top-level of the FreeType tree): michael@0: michael@0: cppcheck --force \ michael@0: --enable=all \ michael@0: -I /usr/include \ michael@0: -I /usr/local/include \ michael@0: -I /usr/lib/gcc/i586-suse-linux/4.7/include \ michael@0: -I include \ michael@0: -I include/freetype \ michael@0: -I include/freetype/config \ michael@0: -I include/freetype/internal \ michael@0: -DFT2_BUILD_LIBRARY \ michael@0: . &> cppcheck.log michael@0: michael@0: using cppcheck git commit f7e93f99. michael@0: michael@0: Note that cppcheck still can't handle `#include FOO' (with `FOO' a michael@0: macro). michael@0: michael@0: */* Improve variable scopes. michael@0: */* Remove redundant initializations which get overwritten. michael@0: michael@0: * src/gxvalid/*: Comment out redundant code or guard it with michael@0: FT_DEBUG_LEVEL_TRACE. michael@0: michael@0: 2013-07-30 Werner Lemberg michael@0: michael@0: [autofit] Introduce `writing systems'. michael@0: michael@0: This patch adds a new top level to the auto-hinter's script class michael@0: hierarchy. It defines `writing systems' which can contain multiple michael@0: scripts. michael@0: michael@0: For example, the `latin' writing system (in file `aflatin.c') is michael@0: able to support scripts like Latin, Cyrillic, Armenian, etc., which michael@0: can be handled similarly. michael@0: michael@0: Scripts are now named using four-letter OpenType tags. michael@0: michael@0: * src/autofit/aftypes.h (AF_ScriptClassRec): Move relevant members michael@0: to... michael@0: (AF_WritingSystemClassRec): This new structure. It holds pointers michael@0: to functions which can be shared among related scripts. michael@0: (AF_WritingSystem): New enumeration. michael@0: (AF_Script): Revised values using four-letter tags. michael@0: (AF_DEFINE_WRITING_SYSTEM_CLASS): New macro. michael@0: (AF_DEFINE_SCRIPT_CLASS): Updated. michael@0: michael@0: * src/autofit/afglobal.c (af_writing_system_classes): New global, michael@0: constant array. michael@0: (af_script_classes): Updated. michael@0: (af_face_globals_free): Updated. michael@0: Remove assertion. michael@0: (af_face_globals_get_metrics): Updated. michael@0: michael@0: * src/autofit/afglobal.h (AF_SCRIPT_FALLBACK) michael@0: [!AF_CONFIG_OPTION_CJK]: Handle this case. michael@0: michael@0: * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph): michael@0: Updated. michael@0: michael@0: * src/autofit/afpic.c (autofit_module_class_pic_init): Updated; michael@0: initialize structures for both writing systems and scripts. michael@0: * src/autofit/afpic.h: Updated. michael@0: (AF_WRITING_SYSTEM_CLASSES_GET): New macro. michael@0: michael@0: * src/autofit/afcjk.c (af_cjk_writing_system_class): New writing michael@0: system. michael@0: (af_cjk_uniranges): Renamed to... michael@0: (af_hani_uniranges): This. michael@0: (af_cjk_script_class): Reduced and renamed to... michael@0: (af_hani_script_class): This. michael@0: * src/autofit/afcjk.h: Updated. michael@0: michael@0: * src/autofit/afdummy.c (af_dummy_writing_system_class): New writing michael@0: system. michael@0: (af_dummy_script_class): Reduced and renamed to... michael@0: (af_dflt_script_class): This. michael@0: * src/autofit/afdummy.h: Updated. michael@0: michael@0: * src/autofit/afindic.c (af_indic_writing_system_class): New writing michael@0: system. michael@0: (af_indic_uniranges): Renamed to... michael@0: (af_deva_uniranges): This. michael@0: (af_indic_script_class): Reduced and renamed to... michael@0: (af_deva_script_class): This. michael@0: * src/autofit/afcjk.h: Updated. michael@0: michael@0: * src/autofit/aflatin.c (af_latin_writing_system_class): New writing michael@0: system. michael@0: (af_latin_uniranges): Renamed to... michael@0: (af_latn_uniranges): This. michael@0: (af_latin_script_class): Reduced and renamed to... michael@0: (af_latn_script_class): This. michael@0: * src/autofit/aflatin.h: Updated. michael@0: michael@0: * src/autofit/aflatin2.c (af_latin2_writing_system_class): New michael@0: writing system. michael@0: (af_latin2_uniranges): Renamed to... michael@0: (af_ltn2_uniranges): This. michael@0: Synchronize ranges with `latin'. michael@0: (af_latin2_script_class): Reduced and renamed to... michael@0: (af_ltn2_script_class): This. michael@0: * src/autofit/aflatin2.h: Updated. michael@0: michael@0: 2013-07-30 Werner Lemberg michael@0: michael@0: [autofit] Variable renaming. michael@0: michael@0: * src/autofit/aftypes.h (AF_ScriptMetricsRec): michael@0: s/clazz/script_class/. michael@0: Update all users. michael@0: michael@0: 2013-07-30 suzuki toshiya michael@0: michael@0: Ignore libpng-config under cross-building configuration, michael@0: because it will return the flags for the hosting environment. michael@0: michael@0: * builds/unix/configure.raw: Ignore libpng-config when michael@0: `cross_compiling' == yes. michael@0: michael@0: 2013-07-30 Behdad Esfahbod michael@0: michael@0: Prevent division by zero by a transparent color. michael@0: michael@0: * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): michael@0: Return 0 immediately, when alpha channel is zero. michael@0: michael@0: 2013-07-25 Behdad Esfahbod michael@0: michael@0: Add FT_FACE_FLAG_COLOR and FT_HAS_COLOR. michael@0: michael@0: Also disambiguate Google's color bitmap tables. michael@0: michael@0: * include/freetype/freetype.h (FT_FACE_FLAG_COLOR, FT_HAS_COLOR): michael@0: New macros. michael@0: michael@0: * include/freetype/internal/tttypes.h (TT_SbitTableType): Add michael@0: TT_SBIT_TABLE_TYPE_CBLC. michael@0: michael@0: * src/sfnt/sfobjs.c (sfnt_load_face): Handle FT_FACE_FLAG_COLOR. michael@0: michael@0: * src/sfnt/ttsbit.c (tt_face_load_sbit, michael@0: tt_face_load_strike_metrics, tt_face_load_sbit_image): Handle michael@0: TT_SBIT_TABLE_TYPE_CBLC. michael@0: michael@0: 2013-07-24 suzuki toshiya michael@0: michael@0: [sfnt] Fix for `make multi' target. michael@0: michael@0: * src/sfnt/pngshim.c (Load_SBit_Png): Use FT_LOCAL_DEF(). michael@0: michael@0: 2013-07-20 Werner Lemberg michael@0: michael@0: * docs/INSTALL.GNU: Updated. michael@0: michael@0: 2013-07-20 Behdad Esfahbod michael@0: michael@0: [sfnt] Fix `sbix' table version handling. michael@0: michael@0: * src/sfnt/ttsbit.c (tt_face_load_sbit) [TT_SBIT_TABLE_TYPE_SBIX]: michael@0: USHORT version numbers are to be considered as `minor'. michael@0: michael@0: 2013-07-19 Werner Lemberg michael@0: michael@0: [autofit] Fix segment classification for blue zones. michael@0: michael@0: The old code (essentially unchanged since the very beginning) michael@0: incorrectly handled this configuration michael@0: michael@0: x -o- x michael@0: / \ michael@0: / \ michael@0: / \ michael@0: o o michael@0: michael@0: as flat and this michael@0: michael@0: o o michael@0: / / michael@0: x| x| michael@0: | | michael@0: o---------------o michael@0: michael@0: as round. (`o' and `x' are on and off points, respectively). michael@0: michael@0: This is a major change which should improve the rendering results michael@0: enormously for many TrueType fonts, especially in the range approx. michael@0: 20-40ppem, fixing the appearance of many overshoots. michael@0: michael@0: * src/autofit/aflatin.c (af_latin_metrics_init_blues): Look at the michael@0: first and last points of the segment, not the points right before michael@0: and after. michael@0: michael@0: 2013-07-19 Behdad Esfahbod michael@0: michael@0: [sfnt] `sbix' fix-ups. michael@0: michael@0: * src/sfnt/sfobjs.c (sfnt_load_face): Apple's `sbix' color bitmaps michael@0: are rendered scaled and then the `glyf' outline rendered on top. We michael@0: don't support that yet, so just ignore the `glyf' outline and michael@0: advertise it as a bitmap-only font. michael@0: michael@0: * src/sfnt/ttsbit.c (tt_face_load_strike_metrics) michael@0: [TT_SBIT_TABLE_TYPE_SBIX]: Return metrics in 26.6 units. michael@0: (tt_face_load_sbix_image): Typo. michael@0: michael@0: 2013-07-18 Behdad Esfahbod michael@0: michael@0: [sfnt] Add support for Apple's `sbix' color bitmap table. michael@0: michael@0: * include/freetype/internal/tttypes.h (TT_SBit_MetricsRec): Widen michael@0: fields to FT_Short and FT_UShort, respectively. michael@0: (TT_SBitTableType): New enumeration. michael@0: (TT_FaceRec): Add `sbit_table_type' field. michael@0: michael@0: * include/freetype/tttags.h (TTAG_sbix): New macro. michael@0: michael@0: * src/sfnt/pngshim.c (Load_SBit_Png): Pass a more generic michael@0: FT_GlyphSlot argument instead FT_Bitmap. michael@0: Add flag to control map and metrics handling. michael@0: Update all users. michael@0: michael@0: * src/sfnt/ttsbit.c: Include `ttmtx.h'. michael@0: (tt_face_load_eblc): Renamed to... michael@0: (tt_face_load_sbit): This. michael@0: Handlic `sbix' bitmaps. michael@0: (tt_face_free_eblc): Renamed to... michael@0: (tt_face_load_sbit): This. michael@0: Updated. michael@0: (tt_face_load_strike_metrics): Handle `sbix' bitmaps. michael@0: (tt_face_load_sbix_image): New function. michael@0: (tt_sbit_decoder_alloc_bitmap, tt_sbit_decoder_load_image, michael@0: tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned, michael@0: tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png, michael@0: tt_sbit_decoder_load_image, tt_sbit_decoder_load_bitmap): Don't pass michael@0: and handle load flags. michael@0: (tt_sbit_decoder_load_bitmap) [!FT_CONFIG_OPTION_USE_PNG]: Better michael@0: handle formats 17-19. michael@0: Move color to grayscale conversion to... michael@0: (tt_face_load_sbit_image): Here. michael@0: Handle `sbix' bitmaps. michael@0: michael@0: * src/sfnt/pngshim.h: Updated. michael@0: * src/sfnt/ttsbit.h: Updated. michael@0: * src/sfnt/sfdriver.c: Updated. michael@0: michael@0: 2013-07-18 Werner Lemberg michael@0: michael@0: [sfnt] Ignore invalid magic number in `head' or `bhed'. michael@0: michael@0: Other font engines seem to ignore it also. Problem reported by michael@0: Hin-Tak Leung . michael@0: michael@0: * src/sfnt/ttload.c (check_table_dir): Don't abort but warn only if michael@0: we have an invalid magic number. michael@0: michael@0: 2013-07-16 Werner Lemberg michael@0: michael@0: [smooth] Fix segfault caused by previous commit. michael@0: michael@0: * src/smooth/ftgrays.c (gray_set_cell): Always compute michael@0: `ras.invalid'. michael@0: michael@0: 2013-07-16 David Turner michael@0: michael@0: [smooth] Improve performance. michael@0: michael@0: Provide a work-around for an ARM-specific performance bug in GCC. michael@0: This speeds up the rasterizer by more than 5%. michael@0: michael@0: Also slightly optimize `set_gray_cell' and `gray_record_cell' (which michael@0: also improves performance on other platforms by a tiny bit (<1%). michael@0: michael@0: * src/smooth/ftgrays.c (FT_DIV_MOD): New macro. michael@0: Use it where appropriate. michael@0: michael@0: (gray_record_cell, gray_set_cell, gray_move_to, michael@0: gray_convert_glyph_inner): Streamline condition handling. michael@0: michael@0: 2013-07-16 David Turner michael@0: michael@0: [truetype] Add assembler code for TT_MulFix14 and TT_DotFix14. michael@0: michael@0: This patch provides slightly optimized versions for ARM, x86, and michael@0: x86_64 CPUs if built with GCC. michael@0: michael@0: Also remove some dead code. michael@0: michael@0: * src/truetype/ttinterp.c (TT_MulFix14_arm, TT_MulFix14_long_long, michael@0: TT_DotFix14_long_long): New functions. michael@0: michael@0: 2013-07-16 David Turner michael@0: michael@0: Optimize FT_MulFix for x86_64 GCC builds. michael@0: michael@0: This patch provides an optimized `FT_MulFix' implementation for michael@0: x86_64 machines when FreeType is built with GCC, or compatible michael@0: compilers like Clang. michael@0: michael@0: Example: michael@0: bin/ftbench -p -t 5 -s 14 -f 0008 Arial.ttf michael@0: michael@0: Before: michael@0: michael@0: Load 4.863 us/op michael@0: Load_Advances (Normal) 4.816 us/op michael@0: Load_Advances (Fast) 0.028 us/op michael@0: Render 2.753 us/op michael@0: Get_Glyph 0.463 us/op michael@0: Get_CBox 0.077 us/op michael@0: Get_Char_Index 0.023 us/op michael@0: Iterate CMap 13.898 us/op michael@0: New_Face 12.368 us/op michael@0: Embolden 0.028 us/op michael@0: Get_BBox 0.302 us/op michael@0: michael@0: After: michael@0: michael@0: Load 4.617 us/op michael@0: Load_Advances (Normal) 4.645 us/op michael@0: Load_Advances (Fast) 0.027 us/op michael@0: Render 2.789 us/op michael@0: Get_Glyph 0.460 us/op michael@0: Get_CBox 0.077 us/op michael@0: Get_Char_Index 0.024 us/op michael@0: Iterate CMap 13.403 us/op michael@0: New_Face 12.278 us/op michael@0: Embolden 0.028 us/op michael@0: Get_BBox 0.301 us/op michael@0: michael@0: * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h michael@0: (FT_MulFix_x86_64): New function. michael@0: michael@0: 2013-07-16 David Turner michael@0: michael@0: Speed up ARMv7 support. michael@0: michael@0: When building for ARMv7 with thumb2 instructions, the optimized michael@0: `FT_MulFix_arm' assembly routine was not being used. michael@0: michael@0: The reason for this is in the `ftconfig.h' header, namely: michael@0: michael@0: - The assembly routine uses the `smull' instruction which is not michael@0: available when generating Thumb-1 machine code. It is available michael@0: in Thumb-2 mode, though. michael@0: michael@0: - The header was written a long time ago before Thumb-2 became michael@0: widely popular (e.g. with Android). So it simply doesn't use the michael@0: assembly routine if the `__thumb__' built-in macro is defined. michael@0: michael@0: - When compiling in Thumb-2 mode, the compiler will define both michael@0: `__thumb__' and `__thumb2__'. michael@0: michael@0: By checking for `(__thumb2__ || !__thumb__)', we ensure that the michael@0: assembly routine is only avoided when generating Thumb-1 code. michael@0: michael@0: Given that this is performance-sensitive function, this improves michael@0: `ftbench' as follows on a Galaxy Nexus: michael@0: michael@0: Before (us/op) After (us/op) michael@0: michael@0: - loading Arial.ttf glyphs at 14 ppem [1] michael@0: michael@0: Load 34.285 33.098 michael@0: michael@0: - same operation with the light auto-hinter [2] michael@0: michael@0: Load 31.317 29.590 michael@0: michael@0: - same operation without hinting [3] michael@0: michael@0: Load 6.143 5.376 michael@0: michael@0: - loading Arial.ttf advances at 14 ppem [4] michael@0: michael@0: Load_Advances (normal) 34.216 33.016 michael@0: Load_Advances (fast) 0.176 0.176 michael@0: michael@0: [1] ftbench -t 5 -p -s 14 -b a -f 0008 Arial.ttf michael@0: [2] ftbench -t 5 -p -s 14 -b a -r 1 -f 0028 Arial.ttf michael@0: [3] ftbench -t 5 -p -s 14 -b a -f 000a Arial.ttf michael@0: [4] ftbench -t 5 -p -s 14 -b b -f 0008 Arial.ttf michael@0: michael@0: * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h michael@0: (FT_MULFIX_ASSEMBLER): Fix handling for ARMv7. michael@0: michael@0: 2013-06-28 Werner Lemberg michael@0: michael@0: * docs/CHANGES: Updated. michael@0: michael@0: 2013-06-27 Werner Lemberg michael@0: michael@0: * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix bitmap width guard. michael@0: michael@0: 2013-06-25 Werner Lemberg michael@0: michael@0: [cff] Add darkening limit to `darkening-parameters'. michael@0: michael@0: * src/cff/cffdrivr.c (cff_property_set): Add check. michael@0: michael@0: 2013-06-25 Werner Lemberg michael@0: michael@0: [cff] Add `darkening-parameters' property. michael@0: michael@0: * include/freetype/ftcffdrv.h: Document it. michael@0: michael@0: * src/cff/cffdrivr.c (cff_property_set, cff_property_get): Handle michael@0: `darkening-parameters' property. michael@0: michael@0: * src/cff/cf2font.h (CF2_FontRec): Add `darkenParams' array. michael@0: michael@0: * src/cff/cf2font.c (cf2_computeDarkening): Add `darkenParams' michael@0: argument and use it. michael@0: Update all callers. michael@0: michael@0: * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Copy michael@0: `darken_params' values. michael@0: michael@0: * src/cff/cffobjs.h (CFF_DriverRec): Add `darken_params' array. michael@0: michael@0: * src/cff/cffobjs.c (cff_driver_init): Set default values for michael@0: `darken_params'. michael@0: michael@0: 2013-06-25 Werner Lemberg michael@0: michael@0: [docmaker] Code shuffling. michael@0: michael@0: * src/tools/docmaker/tohtml.py (re_url): Move regexp... michael@0: * src/tools/docmaker/sources.py: ... to this file. michael@0: michael@0: 2013-06-25 Werner Lemberg michael@0: michael@0: [docmaker] Remove unused functions. michael@0: michael@0: * src/tools/docmaker/content.py (DocMarkup.get_start, michael@0: DocBlock.get_markup_name): Removed. michael@0: * src/tools/docmaker/tohtml.py (html_quote0, dump_html_code, michael@0: HtmlFormatter.make_html_words): Removed. michael@0: michael@0: 2013-06-25 Werner Lemberg michael@0: michael@0: * builds/freetype.mk (dll): Remove target. michael@0: michael@0: Problem reported by Jörg Günnewig . michael@0: michael@0: 2013-06-25 Werner Lemberg michael@0: michael@0: [docmaker] Recognise URLs. michael@0: michael@0: * src/tools/docmaker/tohtml.py (re_url): New regular expression. michael@0: (make_html_para): Use it. michael@0: michael@0: 2013-06-19 Werner Lemberg michael@0: michael@0: * Version 2.5.0.1 released. michael@0: =========================== michael@0: michael@0: michael@0: Tag sources with `VER-2-5-0-1'. michael@0: michael@0: * include/freetype/config/ftoption.h: Undefine michael@0: CFF_CONFIG_OPTION_OLD_ENGINE. michael@0: * devel/ftoption.h: Define CFF_CONFIG_OPTION_OLD_ENGINE. michael@0: michael@0: 2013-06-19 Werner Lemberg michael@0: michael@0: * builds/unix/install.mk (install): Don't create `cache' directory. michael@0: michael@0: Found by Peter Breitenlohner . michael@0: michael@0: 2013-06-19 Werner Lemberg michael@0: michael@0: * Version 2.5.0 released. michael@0: ========================= michael@0: michael@0: michael@0: Tag sources with `VER-2-5-0'. michael@0: michael@0: * docs/VERSION.DLL: Update documentation and bump version number to michael@0: 2.5.0. michael@0: michael@0: * README, Jamfile (RefDoc), michael@0: builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, michael@0: builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, michael@0: builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html, michael@0: builds/win32/visualc/freetype.dsp, michael@0: builds/win32/visualc/freetype.vcproj, michael@0: builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, michael@0: builds/win32/visualce/freetype.vcproj, michael@0: builds/win32/visualce/index.html, michael@0: builds/wince/vc2005-ce/freetype.vcproj, michael@0: builds/wince/vc2005-ce/index.html, michael@0: builds/wince/vc2008-ce/freetype.vcproj, michael@0: builds/wince/vc2008-ce/index.html: s/2.4.12/2.5.0/, s/2412/250/. michael@0: michael@0: * include/freetype/freetype.h (FREETYPE_MINOR): Set to 5. michael@0: (FREETYPE_PATCH): Set to 0. michael@0: michael@0: * builds/unix/configure.raw (version_info): Set to 16:2:10. michael@0: michael@0: * src/base/ftobjs.c (FT_Open_Face): Pacify compiler. michael@0: * src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIRP): Ditto. michael@0: michael@0: 2013-06-18 Werner Lemberg michael@0: michael@0: Fix Savannah bug #39269. michael@0: michael@0: * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Free memory in michael@0: case of reacollocation failures. michael@0: michael@0: 2013-06-18 Andrew Church michael@0: michael@0: Fix Savannah bug #39266. michael@0: michael@0: If memory allocations fail at certain points while opening a font, michael@0: FreeType can either crash due to a NULL dereference or leak memory. michael@0: michael@0: * include/freetype/internal/ftobjs.c (FT_Face_InternalRec, michael@0: FT_LibraryRec): Make `refcount' a signed integer. If, for example, michael@0: FT_Open_Face() fails in a memory allocation before the face's michael@0: reference count is set to 1, a subsequent `FT_Done_Library' call michael@0: would otherwise loop over `FT_Done_Face' 2^32 times before freeing michael@0: the face. michael@0: michael@0: * src/base/ftobjs.c (open_face): Initialize `stream' and friends michael@0: earlier. michael@0: (FT_Open_Face) : Behave correctly if `node' is NULL. michael@0: (FT_Destroy_Module) : Check that `renderer_clazz' is valid. michael@0: michael@0: 2013-06-14 Werner Lemberg michael@0: michael@0: * src/smooth/ftgrays.c One final pragma to silence 64-bit MSVC. michael@0: michael@0: 2013-06-06 Dave Arnold michael@0: Werner Lemberg michael@0: michael@0: [cff] Add code to Adobe's engine to handle ppem > 2000. michael@0: michael@0: * src/cff/cffgload.c (cff_slot_load): If we get michael@0: FT_Err_Glyph_Too_Big, retry unhinted and scale up later on. michael@0: michael@0: 2013-06-12 Werner Lemberg michael@0: michael@0: Another try on pragmas. michael@0: michael@0: * include/freetype/internal/ftdebug.h: Move pragmas to... michael@0: * include/freetype/internal/internal.h: ... this file since it gets michael@0: included by all source files. michael@0: * include/freetype/internal/ftserv.h: Remove pragma which has no michael@0: effect. michael@0: michael@0: 2013-06-12 Werner Lemberg michael@0: michael@0: * include/freetype/internal/ftdebug.h: Disable MSVC warning C4127. michael@0: michael@0: This partially undoes commit 3f6e0e0c. michael@0: michael@0: 2013-06-12 Werner Lemberg michael@0: michael@0: More compiler warning fixes. michael@0: michael@0: */*: Use cast to `FT_Bool' (or `Bool') where appropriate. michael@0: michael@0: 2013-06-10 Werner Lemberg michael@0: michael@0: [truetype] Improve handling of broken sbit advance widths. michael@0: michael@0: * src/truetype/ttgload.c (TT_Load_Glyph): Use the glyph's (scaled) michael@0: `linearHoriAdvance' if the sbit's `horiAdvance' value is zero. michael@0: michael@0: Cf. font `Fixedsys Excelsior' v3.01 (FSEX300.ttf), glyph A, 16ppem. michael@0: michael@0: 2013-06-10 Werner Lemberg michael@0: michael@0: [sfnt] Improve embedded bitmap tracing. michael@0: michael@0: * src/base/ftobjs.c (FT_Request_Size): Move trace message regarding michael@0: bitmap strike match to... michael@0: (FT_Match_Size): This function. michael@0: michael@0: * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics, michael@0: tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned, michael@0: tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png, michael@0: tt_sbit_decoder_load_image): Decorate with tracing messages. michael@0: michael@0: 2013-06-10 Werner Lemberg michael@0: michael@0: Fix Savannah bug #39160. michael@0: michael@0: * src/truetype/ttinterp.c (Ins_SDPVTL): Set projection vector too michael@0: for the degenerate case. michael@0: michael@0: 2013-06-09 David Turner michael@0: michael@0: * src/cache/ftcmanag.c (FTC_Manager_Reset): Add missing cache flush. michael@0: michael@0: This code, present since eight(!) years in the unused `CACHE' michael@0: branch, has been forgotten to apply to the master branch. It's michael@0: really amazing that noone has ever complained since michael@0: `FTC_Manager_Reset' is pretty useless without flushing the cache. michael@0: michael@0: 2013-06-07 Werner Lemberg michael@0: michael@0: Add and improve pragmas for MSVC compiler. michael@0: michael@0: * include/freetype/internal/ftdebug.h: Remove pragmas. michael@0: * include/freetype/internal/ftserv.h: Use push and pop for pragmas. michael@0: * include/freetype/internal/ftvalid.h: Handle warning C4324. michael@0: * src/base/ftobjs.c: Use push and pop for pragmas. michael@0: * src/gzip/ftgzip.c: Handle warning C4244. michael@0: michael@0: 2013-06-07 Werner Lemberg michael@0: michael@0: [cff] s/cf2_getGlyphWidth/cf2_getGlyphOutline/. michael@0: michael@0: * src/cff/cf2font.c, src/cff/cf2font.h, src/cff/cf2ft.c: Do it. michael@0: michael@0: 2013-06-06 Dave Arnold michael@0: michael@0: [cff] Add early exit feature for width-only calls. michael@0: michael@0: This is for `FT_Get_Advance'. michael@0: michael@0: There are 7 places where the spec says the width can be defined: michael@0: michael@0: hstem/hstemhm michael@0: vstem/vstemhm michael@0: cntrmask/hintmask michael@0: hmoveto michael@0: vmoveto michael@0: rmoveto michael@0: endchar michael@0: michael@0: * src/cff/cf2intrp.c (cf2_doStems): Exit early for width-only calls, michael@0: if possible. michael@0: michael@0: (cf2_interpT2CharString) , , michael@0: , , , michael@0: , : Exit early for width-only calls. michael@0: michael@0: 2013-06-06 Werner Lemberg michael@0: michael@0: Next round of compiler fixes. michael@0: michael@0: * builds/win32/ftdebug.c, builds/wince/ftdebug.c (ft_debug_init): michael@0: Add proper cast. michael@0: michael@0: * include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Fix michael@0: cast. michael@0: * include/freetype/internal/ftstream.h: Decorate stream and frame michael@0: macros with `FT_Long' and `FT_ULong' as appropriate. michael@0: michael@0: * src/base/ftrfork.c (raccess_guess_darwin_hfsplus, michael@0: raccess_guess_darwin_newvfs): Use cast. michael@0: michael@0: * src/bdf/bdflib.c (_bdf_set_default_spacing): Use cast. michael@0: michael@0: * src/cache/ftcmanag.c (FTC_Manager_Check): Fix cast. michael@0: * src/cache/ftcmanag.h (FTC_ManagerRec): Ditto. michael@0: michael@0: * src/cff/cf2arrst.c (cf2_arrstack_setNum_Elements): Use cast. michael@0: * src/cff/cf2ft.c (cf2_freeSeacComponent): Ditto. michael@0: * src/cff/cffobjs.c (remove_subset_prefix, remove_style): Ditto. michael@0: michael@0: * src/cid/cidparse.c (cid_parser_new): Use cast. michael@0: michael@0: * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Use cast. michael@0: michael@0: * src/psaux/psobjs.c (reallocate_t1_table): Fix argument type. michael@0: michael@0: * src/raster/ftraster.c (ft_black_reset): Use cast. michael@0: michael@0: * src/truetype/ttgxvar.c (FT_Stream_FTell): Use cast. michael@0: (ALL_POINTS): Fix cast. michael@0: michael@0: * src/type1/t1driver.c (t1_ps_get_font_value): Add casts. michael@0: * src/type1/t1parse.c (T1_Get_Private_Dict): Add cast. michael@0: michael@0: 2013-06-05 Dave Arnold michael@0: michael@0: Fix more MSVC Win32 compiler warnings. michael@0: michael@0: * src/base/ftobjs.c: Fix typo in MS pragma. michael@0: michael@0: * src/base/bdflib.c (_bdf_set_default_spacing, _bdf_add_property): michael@0: `lineno' is only used in debug mode. michael@0: michael@0: * src/cff/cf2ft.c (cf2_builder_moveTo): `params' is only used in michael@0: debug mode. michael@0: michael@0: 2013-06-05 Werner Lemberg michael@0: michael@0: Fix compiler warnings. michael@0: michael@0: * include/freetype/internal/ftmemory.h: Decorate memory allocation michael@0: macros with `FT_Long' where appropriate. michael@0: Remove duplicate of FT_MEM_QRENEW_ARRAY definition. michael@0: michael@0: * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use michael@0: cast. michael@0: michael@0: * src/base/ftobjs.c: Add warning disabling pragma for MSVC while michael@0: including `md5.c'. michael@0: michael@0: * src/cff/cf2intrp.c (cf2_interpT2CharString) : Add michael@0: cast. michael@0: michael@0: * src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Fix casts. michael@0: (tt_sbit_decoder_load_bitmap): Beautification. michael@0: michael@0: * src/smooth/ftsmooth.c (ft_smooth_render_generic): Initialize michael@0: variables (earlier). michael@0: michael@0: * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Pacify compiler. michael@0: michael@0: * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use unsigned constants michael@0: where appropriate. michael@0: michael@0: * src/type1/t1load.c (T1_Get_MM_Var): Ditto. michael@0: michael@0: 2013-06-04 Werner Lemberg michael@0: michael@0: * src/cff/cf2font.c (cf2_getGlyphWidth): Initialize `advWidth'. michael@0: michael@0: Problem reported by Ingmar Sittl . michael@0: michael@0: 2013-06-04 Werner Lemberg michael@0: michael@0: Apply fixes for cppcheck nitpicks. michael@0: michael@0: http://cppcheck.sourceforge.net/ michael@0: michael@0: The call was (from the top-level of the FreeType tree): michael@0: michael@0: cppcheck --force \ michael@0: --enable=all \ michael@0: -I include \ michael@0: -I include/freetype/ \ michael@0: -I include/freetype/config/ \ michael@0: -I include/freetype/internal/ \ michael@0: . &> cppcheck.log michael@0: michael@0: Note that the current version heavily chokes on FreeType, delivering michael@0: many wrong results. I will report those issues to the cppcheck team michael@0: so that a newer version gives improved results hopefully. michael@0: michael@0: */* Improve variable scopes. michael@0: */* Remove redundant initializations which get overwritten. michael@0: michael@0: * src/base/ftmac.c, builds/mac/ftmac.c (count_faces_scalable): michael@0: Remove unused variable. michael@0: michael@0: * src/base/ftdbgmem.c (ft_mem_table_destroy): `table' can't be zero. michael@0: michael@0: * src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt1_entry_validate): michael@0: Remove functionless code. michael@0: michael@0: * src/tools/ftrandom.c (main): Fix memory leak. michael@0: michael@0: 2013-06-03 Werner Lemberg michael@0: michael@0: Add CFF_CONFIG_OPTION_OLD_ENGINE configuration option. michael@0: michael@0: This controls whether the old FreeType CFF engine gets compiled into michael@0: FreeType. It is now disabled by default. michael@0: michael@0: * devel/ftoption.h, include/freetype/config/ftoption.h michael@0: (CFF_CONFIG_OPTION_OLD_ENGINE): New macro. michael@0: michael@0: * src/cff/cffdrivr.c (cff_property_set), src/cff/cffgload.c michael@0: (CFF_Operator, cff_argument_counts, cff_builder_add_point, michael@0: cff_operator_seac, cff_decoder_parse_charstrings, cff_slot_load), michael@0: src/cff/cffgload.h, src/cff/cffobjs.c (cff_driver_init): Use michael@0: CFF_CONFIG_OPTION_OLD_ENGINE to guard the affected code. michael@0: michael@0: * docs/CHANGES: Updated. michael@0: michael@0: 2013-06-02 Werner Lemberg michael@0: michael@0: Fix PNG library handling. michael@0: michael@0: * builds/unix/configure.raw: Don't use LIBPNG_LIBS but michael@0: LIBPNG_LDFLAGS. michael@0: michael@0: 2013-05-23 Behdad Esfahbod michael@0: michael@0: Add support for color embedded bitmaps (eg. color emoji). michael@0: michael@0: A new load flag, FT_LOAD_COLOR, makes FreeType load color michael@0: embedded-bitmaps, following this draft specification michael@0: michael@0: https://color-emoji.googlecode.com/git/specification/v1.html michael@0: michael@0: which defines two new SFNT tables, `CBDT' and `CBLC' (named and michael@0: modeled after `EBDT' and `EBLC', respectively). The color bitmaps michael@0: are stored in the new FT_PIXEL_MODE_BGRA format to represent BGRA michael@0: pre-multiplied sRGB images. If PNG support is available, PNG color michael@0: images as defined in the same proposed specification are supported michael@0: also. michael@0: michael@0: Note that color bitmaps are converted to grayscale if client didn't michael@0: ask for color. michael@0: michael@0: * builds/unix/configure.raw: Search for libpng. michael@0: Add `--without-png' option. michael@0: michael@0: * devel/ftoption.h, include/freetype/config/ftoption.h michael@0: (FT_CONFIG_OPTION_USE_PNG): New macro. michael@0: michael@0: * include/freetype/freetype.h (FT_LOAD_COLOR): New load flag. michael@0: michael@0: * include/freetype/ftimage.h (FT_Pixel_Mode): Add michael@0: `FT_PIXEL_MODE_BGRA'. michael@0: michael@0: * include/freetype/tttags.h (TTAG_CBDT, TTAG_CBLC): New tags. michael@0: michael@0: * src/base/ftbitmap.c (FT_Bitmap_Embolden): Updated. michael@0: (ft_gray_for_premultiplied_srgb_bgra): New function. michael@0: (FT_Bitmap_Convert): Handle FT_PIXEL_MODE_BGRA. michael@0: michael@0: * src/sfnt/pngshim.c, src/sfnt/pngshim.h: New files. michael@0: michael@0: * src/sfnt/sfnt.c: Include `pngshim.c'. michael@0: michael@0: * src/sfnt/ttsbit.c: Include FT_BITMAP_H and `pngshim.h' michael@0: (tt_face_load_eblc): Load `CBLC'. michael@0: (tt_sbit_decoder_init): Load `CBDT'. michael@0: (tt_sbit_decoder_alloc_bitmap): Pass load flags to select between michael@0: color and grayscale bitmaps. michael@0: Set `num_grays'. This is used by `ftview' to choose the blending michael@0: algorithm. michael@0: (tt_sbit_decoder_load_byte_aligned, michael@0: tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_compound, michael@0: tt_sbit_decoder_load_image): Pass load flag. michael@0: s/write/pwrite/. michael@0: Don't call `tt_sbit_decoder_alloc_bitmap'. michael@0: Updated. michael@0: (tt_sbit_decoder_load_png) [FT_CONFIG_OPTION_USE_PNG]: New function. michael@0: (tt_sbit_decoder_load_bitmap): Pass load flag. michael@0: Handle new glyph formats 17, 18, and 19. michael@0: Call `tt_sbit_decoder_alloc_bitmap'. michael@0: Flatten color bitmaps if necessary. michael@0: (tt_face_load_sbit_image): Updated. michael@0: michael@0: * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `pngshim.c'. michael@0: michael@0: * docs/CHANGES: Updated. michael@0: michael@0: 2013-05-24 Guenter michael@0: michael@0: Apply Savannah patch #8055. michael@0: michael@0: Make `apinames' create an import file for NetWare. michael@0: michael@0: * src/tools/apinames.c (PROGRAM_VERSION): Set to 0.2. michael@0: (OutputFormat): Add `OUTPUT_NETWARE_IMP'. michael@0: (names_dump): Handle it. michael@0: (usage): Updated. michael@0: (main): Handle new command line flag `-wN'. michael@0: michael@0: 2013-05-23 Behdad Esfahbod michael@0: michael@0: Compilation fix. michael@0: michael@0: * src/truetype/ttinterp.c (TT_RunIns) michael@0: [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Make it work. michael@0: michael@0: 2013-05-22 Infinality michael@0: michael@0: [truetype] Formatting and an additional subpixel tweak. michael@0: michael@0: * src/truetype/ttinterp.c (Ins_SHPIX): Formatting fix. michael@0: * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules): michael@0: Revert previous modification for Verdana clones. michael@0: michael@0: 2013-05-22 Infinality michael@0: michael@0: [truetype] Adjust subpixel zp2 moves and tweak rules. michael@0: michael@0: These modifications fix thin diagonal stems in some legacy fonts. michael@0: michael@0: * src/truetype/ttinterp.c (Direct_Move_X): Remove unused macro. michael@0: (Move_Zp2_Point): Don't always disable x moves for subpixel rendering. michael@0: (Ins_SHP): Disable x moves here for subpixel rendering. michael@0: (Ins_SHPIX): Only disable x moves in compatibility mode. michael@0: Split out zp2 move reversals and reorder conditional respectively. michael@0: michael@0: * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules): Fix oversight. michael@0: Only adjust Verdana clones for 17 ppem. michael@0: (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Courier New. michael@0: (ALWAYS_SKIP_DELTAP_Rules): Found additional cases for Arial `s'. michael@0: michael@0: 2013-05-20 Infinality michael@0: michael@0: [truetype] Simplify and improve subpixel function detection. michael@0: michael@0: Some small enhancements have allowed the removal of many macros and michael@0: the simplification of existing rules in `ttsubpix.c'. michael@0: michael@0: * src/truetype/ttsubpix.h (SPH_TWEAK_ALLOW_X_DMOVEX, michael@0: SPH_TWEAK_ALLOW_X_MOVE_ZP2, michael@0: SPH_TWEAK_DELTAP_SKIP_EXAGGERATED_VALUES, michael@0: SPH_TWEAK_SKIP_INLINE_DELTAS, SPH_TWEAK_MIRP_CVT_ZERO): Removed. michael@0: (SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP): New rule macro. michael@0: michael@0: * src/truetype/ttsubpix.c: Updated affected rules. michael@0: michael@0: * src/truetype/ttinterp.c (Direct_Move_X): Updated. michael@0: (INS_FDEF): Add additional function detection. michael@0: (INS_ENDF): Set runtime flag. michael@0: (Ins_CALL): Skip the call under certain conditions. michael@0: Remove bad code. michael@0: (Ins_LOOPCALL): Skip the call under certain conditions. michael@0: Remove bad code. michael@0: (Move_Zp2_Point): Updated. michael@0: (Ins_SHPIX): Updated. michael@0: Skip the move under some situations. michael@0: (Ins_MIAP): Improve conditions. michael@0: (Ins_MIRP): Updated. michael@0: (Ins_DELTAP): Skip move under certain conditions. michael@0: Simplify conditions. michael@0: (TT_RunIns): Updated. michael@0: Add code to handle new function detection. michael@0: Trace messages. michael@0: michael@0: 2013-05-17 Werner Lemberg michael@0: michael@0: Update more FT_Err_XXX macros using FT_ERR and FT_THROW; michael@0: michael@0: * builds/amiga/src/base/ftsystem.c, builds/mac/ftmac.c, michael@0: builds/unix/ftsystem.c, builds/vms/ftsystem.c: Do it. michael@0: michael@0: 2013-05-15 Werner Lemberg michael@0: michael@0: [truetype] Add `interpreter-version' property. michael@0: michael@0: This makes the option TT_CONFIG_OPTION_SUBPIXEL_HINTING controllable michael@0: at runtime. michael@0: michael@0: * include/freetype/ftttdrv.h: New file. michael@0: michael@0: * include/freetype/config/ftheader.h (FT_TRUETYPE_DRIVER_H): New michael@0: macro. michael@0: michael@0: * src/truetype/ttdriver.c: Include FT_TRUETYPE_DRIVER_H. michael@0: (tt_property_set, tt_property_get): Fill templates. michael@0: michael@0: * src/truetype/ttobjs.h (TT_DriverRec): Add `interpreter_version' michael@0: member. michael@0: Remove unused `extension_component' member. michael@0: michael@0: * src/truetype/ttgload.c: Include FT_TRUETYPE_DRIVER_H. michael@0: (tt_get_metrics, TT_Hint_Glyph, TT_Process_Simple_Glyph, michael@0: compute_glyph_metrics, tt_loader_init): Use `interpreter_version'. michael@0: michael@0: * src/truetype/ttinterp.c: Include FT_TRUETYPE_DRIVER_H. michael@0: (SUBPIXEL_HINTING): New macro to check `interpreter_version' flag. michael@0: Update all affected functions to use it. michael@0: Use TT_INTERPRETER_VERSION_XXX where appropriate. michael@0: michael@0: * src/truetype/ttobjs.c: Include FT_TRUETYPE_DRIVER_H. michael@0: (tt_driver_init): Initialize `interpreter_version'. michael@0: michael@0: * src/truetype/ttsubpix.c: Include FT_TRUETYPE_DRIVER_H. michael@0: Use TT_INTERPRETER_VERSION_XXX where appropriate. michael@0: michael@0: 2013-05-13 Werner Lemberg michael@0: michael@0: [truetype] Avoid empty source file. michael@0: michael@0: * src/truetype/ttsubpix.c [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]: michael@0: Provide dummy typedef. michael@0: michael@0: 2013-05-13 Werner Lemberg michael@0: michael@0: * src/cff/cf2font.c (cf2_getGlyphWidth): Fix uninitialized variable. michael@0: michael@0: Fix suggested by Vaibhav Nagarnaik . michael@0: michael@0: 2013-05-13 Brian Nixon michael@0: michael@0: Fix Savannah bug #38970. michael@0: michael@0: * src/base/ftdebug.c, builds/win32/ftdebug.c, michael@0: builds/wince/ftdebug.c, builds/amiga/src/base/ftdebug.c michael@0: (ft_debug_init): Don't read past the environment variable FT2_DEBUG. michael@0: michael@0: 2013-05-12 Werner Lemberg michael@0: michael@0: [truetype] Add framework for TrueType properties. michael@0: michael@0: * src/truetype/ttdrivr.c: Include FT_SERVICE_PROPERTIES_H. michael@0: (tt_property_set, tt_property_get): New functions, still empty. michael@0: Define `tt_service_properties' service. michael@0: Update `tt_services'. michael@0: michael@0: * src/truetype/ttpic.h: Include FT_SERVICE_PROPERTIES_H. michael@0: (TT_SERVICE_PROPERTIES_GET): New macro. michael@0: (TTModulePIC): Add `tt_service_properties'. michael@0: michael@0: 2013-05-12 Werner Lemberg michael@0: michael@0: Fix Savannah bug #38967. michael@0: michael@0: * src/base/ftcalc.c (FT_DivFix) [FT_LONG64]: Fix cast. michael@0: michael@0: 2013-05-12 Werner Lemberg michael@0: michael@0: Introduce unsigned 64bit type (if available). michael@0: michael@0: * include/freetype/config/ftconfig.h: Define FT_UINT64 if available. michael@0: [FT_LONG64]: Provide FT_UInt64. michael@0: michael@0: * builds/unix/ftconfig.in: Synchronized. michael@0: michael@0: 2013-05-12 Werner Lemberg michael@0: michael@0: Fix Savannah bug #38968. michael@0: michael@0: * include/freetype/ftmodapi.h: Add `FT_EXPORT' to michael@0: FT_Property_{Set,Get}. michael@0: * src/base/ftobjs.c: Add `FT_EXPORT_DEF' to michael@0: FT_Property_{Set,Get}. michael@0: michael@0: 2013-05-10 Werner Lemberg michael@0: michael@0: [sfnt] Clean up bitmap code. michael@0: michael@0: * src/sfnt/ttsbit.c: Deleted. michael@0: * src/sfnt/ttsbit0.c: Renamed to `ttsbit.c'. michael@0: * rules.mk (SFNT_DRV_H): Updated. michael@0: michael@0: 2013-05-10 Werner Lemberg michael@0: michael@0: */* [FT_CONFIG_OPTION_OLD_INTERNALS]: Remove macro and guarded code. michael@0: michael@0: ---------------------------------------------------------------------------- michael@0: michael@0: Copyright 2013-2014 by michael@0: David Turner, Robert Wilhelm, and Werner Lemberg. michael@0: michael@0: This file is part of the FreeType project, and may only be used, modified, michael@0: and distributed under the terms of the FreeType project license, michael@0: LICENSE.TXT. By continuing to use, modify, or distribute this file you michael@0: indicate that you have read the license and understand and accept it michael@0: fully. michael@0: michael@0: michael@0: Local Variables: michael@0: version-control: never michael@0: coding: utf-8 michael@0: End: