blob: a4fc060631b5a80102aeab92d72d4e0abd6d1b6b [file] [log] [blame]
2016-07-12 Werner Lemberg <wl@gnu.org>
* Version 2.6.5 released.
=========================
Tag sources with `VER-2-6-5'.
This commit immediately follows `[mac] Fix ftexport.sym target in
Jamfile.' on a separate branch, which was then merged with master
after the release.
* include/freetype/config/ftoption.h
(TT_CONFIG_OPTION_SUBPIXEL_HINTING): Comment out.
* docs/VERSION.TXT: Add entry for version 2.6.5.
* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
builds/windows/vc2005/index.html,
builds/windows/vc2008/freetype.vcproj,
builds/windows/vc2008/index.html,
builds/windows/vc2010/freetype.vcxproj,
builds/windows/vc2010/index.html,
builds/windows/visualc/freetype.dsp,
builds/windows/visualc/freetype.vcproj,
builds/windows/visualc/index.html,
builds/windows/visualce/freetype.dsp,
builds/windows/visualce/freetype.vcproj,
builds/windows/visualce/index.html,
builds/wince/vc2005-ce/freetype.vcproj,
builds/wince/vc2005-ce/index.html,
builds/wince/vc2008-ce/freetype.vcproj,
builds/wince/vc2008-ce/index.html: s/2.6.4/2.6.5/, s/264/265/.
* include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
* builds/unix/configure.raw (version_info): Set to 18:5:12.
* CMakeLists.txt (VERSION_PATCH): Set to 5.
* docs/CHANGES: Updated.
2016-07-11 Werner Lemberg <wl@gnu.org>
Conditionally compile environment support.
* include/freetype/internal/ftobjs.h, src/autofit/afmodule.c,
src/base/ftobjs.c, src/cff/cffdrivr.c, src/truetype/ttdriver.c:
Decorate with `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES' where
necessary.
2016-07-11 Werner Lemberg <wl@gnu.org>
Handle properties in `FREETYPE_PROPERTIES' environment variable.
This commit covers the most important one.
* src/autofit/afmodule.c (af_property_set): Handle `warping',
`darkening-parameters', and `no-stem-darkening'.
* src/cff/cffdrivr.c (cff_property_set): Handle
`darkening-parameters', `hinting-engine', and `no-stem-darkening'.
* src/truetype/ttdriver.c (tt_property_set): Handle
`interpreter-version'.
2016-07-11 Werner Lemberg <wl@gnu.org>
Replace calls to `atol' with `strtol'.
We later on need strtol's `endptr' feature.
* include/freetype/config/ftstdlib.h (ft_atol): Replace with...
(ft_strtol): ... this.
* src/base/ftdbgmem.c (ft_mem_debug_init): Updated.
* src/cid/cidparse.c (cid_parser_new): Ditto.
* src/type42/t42drivr.c (t42_get_name_index), src/type42/t42objs.c
(T42_GlyphSlot_Load): Ditto.
2016-07-10 Werner Lemberg <wl@gnu.org>
Implement handling of `FREETYPE_PROPERTIES' environment variable.
Recognizing properties follows in another commit.
* devel/ftoption.h, include/freetype/config/ftoption.h
(FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES): New macro.
* include/freetype/config/ftstdlib.h (ft_getenv): New macro.
* src/base/ftinit.c (ft_set_default_properties): New function to
parse `FREETYPE_PROPERTIES' and calling `ft_property_string_set'.
(FT_Init_FreeType): Updated.
2016-07-09 Werner Lemberg <wl@gnu.org>
Add function `ft_property_string_set'.
This is a preparation for handling an `FREETYPE_PROPERTIES'
environment variable to control (some) driver properties.
No change in functionality.
* src/base/ftobjs.c (ft_property_do): Add `value_is_string'
parameter.
(ft_property_string_set): New function.
(FT_Property_Set, FT_Property_Get): Updated.
* include/freetype/internal/ftobjs.h: Updated.
* include/freetype/internal/services/svprop.h
(FT_Properties_SetFunc): Add `value_is_string' parameter.
* src/autofit/afmodule.c (af_property_set), src/cff/cffdrivr.c
(cff_property_set), src/truetype/ttdriver.c (tt_property_set):
Updated, emitting an error currently if `value_is_string' is set.
2016-07-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
[mac] Fix ftexport.sym target in Jamfile.
* Jamfile: Update the directories of the header files scanned for
ftexport.sym. They were incorrect since the migration of the
header files, on 2015-06-22. Either inexisting include/cache
(removed on 2006-03-20) is not needed to be listed explicitly.
Now ftmac.h is scanned only in the case of Mac OS & Mac OS X.
2016-07-08 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Sub-banding protocol revision.
Rasterization sub-banding is utilized at large sizes while using a
rather small fixed memory pool. Indeed it is possible to make an
educated guess how much memory is necessary at a given size for a
given glyph. It turns out that, for a large majority of European
glyphs, you should store about 8 times more boundary pixels than
their height. Or, vice versa, if your memory pool can hold 800
pixels the band height should be 100 and you should sub-band
anything larger than that. Should you still run out of memory,
FreeType bisects the band but you have wasted some time. This is
what has been implemented in FreeType since the beginning.
It was overlooked, however, that the top band could grow to twice
the default band size leading to unnecessary memory overflows there.
This commit fixes that. Now the bands are distributed more evenly
and cannot exceed the default size.
Now the magic number 8 is really suitable for rather simple European
scripts. For complex Chinese logograms the magic number should be
13 but that is subject for another day.
* src/smooth/ftgrays.c (gray_convert_glyph): Revise sub-banding
protocol.
2016-07-07 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
[mac] Fix Savannah bug #48417.
Mac OS X linker throws errors when `-exported_symbol_list' input
file includes non-existing symbols. Reported by Ryan Schmidt.
* builds/exports.mk: Exclude ftmac.h from the headers for apinames
by default. Include it when ftmac.c would be compiled.
2016-07-06 Werner Lemberg <wl@gnu.org>
* src/truetype/ttinterp.c (TInstruction_Function): Removed, unused.
2016-07-05 Werner Lemberg <wl@gnu.org>
* Version 2.6.4 released.
=========================
Tag sources with `VER-2-6-4'.
* docs/VERSION.TXT: Update documentation and bump version number to
2.6.4.
* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
builds/windows/vc2005/index.html,
builds/windows/vc2008/freetype.vcproj,
builds/windows/vc2008/index.html,
builds/windows/vc2010/freetype.vcxproj,
builds/windows/vc2010/index.html,
builds/windows/visualc/freetype.dsp,
builds/windows/visualc/freetype.vcproj,
builds/windows/visualc/index.html,
builds/windows/visualce/freetype.dsp,
builds/windows/visualce/freetype.vcproj,
builds/windows/visualce/index.html,
builds/wince/vc2005-ce/freetype.vcproj,
builds/wince/vc2005-ce/index.html,
builds/wince/vc2008-ce/freetype.vcproj,
builds/wince/vc2008-ce/index.html: s/2.6.3/2.6.4/, s/263/264/.
* include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
* builds/unix/configure.raw (version_info): Set to 18:4:12.
* CMakeLists.txt (VERSION_PATCH): Set to 4.
* docs/CHANGES: Updated.
2016-07-05 Werner Lemberg <wl@gnu.org>
* src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Fix compiler warning.
2016-07-04 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Variable type revision (part 2).
* src/smooth/ftgrays.c (TArea): Restore original definition as `int'.
(gray_render_line) [FT_LONG64]: Updated.
(gray_convert_glyph): 32-bit band bisection stack should be 32 bands.
(gray_convert_glyph_inner): Trace successes and failures.
2016-07-04 Werner Lemberg <wl@gnu.org>
[autofit] Handle single-point contours as segments.
Doing so allows us to link them to edges – some fonts like
`NotoSansGurmukhi-Regular' have such isolated points sitting exactly
on other outlines.
* src/autofit/aflatin.c (af_latin_hints_compute_segments): Don't
ignore one-point contours but handle them specially as one-point
segments.
(af_latin_hints_compute_edges): Append one-point segments to edges
if possible.
2016-07-02 Werner Lemberg <wl@gnu.org>
[autofit] Remove unused structure members.
* src/autofit/afhints.h (AF_SegmentRec, AF_EdgeRec): Remove
`num_linked'.
* src/autofit/afcjk.c (af_cjk_hints_link_segments): Updated.
2016-07-02 Werner Lemberg <wl@gnu.org>
[autofit] Update to Unicode 9.0.0.
* src/autofit/afranges.c (af_arab_nonbase_uniranges,
af_cyrl_uniranges): Add new data.
2016-07-01 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Variable type revision (part 1).
This patch restores original `TCoord' definition as `int' so that the
rendering pool is used more efficiently on LP64 platforms (unix).
* src/smooth/ftgrays.c (gray_TWorker, TCell, gray_TBand): Switch some
fields to `TCoord'.
(gray_find_cell, gray_render_scanline, gray_render_line, gray_hline,
gray_sweep, gray_convert_glyph): Updated.
2016-06-28 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Minor clean-ups.
* src/smooth/ftgrays.c (gray_TWorker): Remove redundant `ycount'.
(gray_sweep, gray_convert_glyph, gray_dump_cells): Updated.
2016-06-27 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Minor clean-ups.
* src/smooth/ftgrays.c (gray_convert_glyph): Do not use volatile
qualifier.
(gray_raster_render): Move span initializations from here.
(gray_sweep): ... to here and remove unused `target' argument.
2016-06-26 Alexei Podtelezhnikov <apodtele@gmail.com>
[pcf] Fix handling of very large fonts (#47708).
* src/pcf/pcfread.c (pcf_get_encodings): Make `encodingOffset' an
unsigned short.
Only reject `0xFFFF' as an invalid encoding offset.
2016-06-25 Werner Lemberg <wl@gnu.org>
[truetype] Really fix deallocation in case of error (#47726).
* src/truetype/ttgload.c (load_truetype_glyph): Thinko; initialize
`outline.points' also.
2016-06-23 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Consolidate memory management.
* src/smooth/ftgrays.c (gray_init_cells): Remove function.
(gray_TWorker): Remove fields that become local variables.
(gray_raster_render): Move rendering buffer declaration from here.
(gray_convert_glyph): ... to here and update accordingly.
2016-06-22 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Consolidate boundary checks.
Removing the checks from `gray_hline' shaves 1% off rendering speed.
* src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_MIN' and `FT_MAX'.
(gray_TWorker): No need to store `clip_box'.
(gray_hline): Remove unnecessary boundary checks.
(gray_convert_glyph): Move boundary checks from here.
(gray_raster_render): ... to here and consolidate.
2016-06-21 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Use `FT_Outline_Get_CBox'.
* src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_Outline_Get_CBox'.
(gray_compute_cbox): Remove this function.
(gray_convert_glyph): Update to use `FT_Outline_Get_CBox'.
2016-06-20 Werner Lemberg <wl@gnu.org>
[smooth] Remove compiler warnings.
* src/smooth/ftgrays.c (gray_convert_glyph): Fix reports from clang.
2016-06-20 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Sanitize memory management.
* src/smooth/ftgrays.c (gray_convert_glyph): Cleaned up.
2016-06-18 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Remove `band_shoot' that never worked.
* src/smooth/ftgrays.c (gray_TWorker): Remove `band_shoot'.
(gray_convert_glyph): Updated.
2016-06-17 Alexei Podtelezhnikov <apodtele@gmail.com>
[raster, smooth] Handle FT_RENDER_POOL_SIZE better.
* src/raster/ftraster.c (FT_MAX_BLACK_POOL): New macro.
(ft_black_render): Updated.
* src/smooth/ftgrays.c (FT_MAX_GRAY_POOL): New macro.
(gray_raster_render): Updated.
2016-06-16 Werner Lemberg <wl@gnu.org>
* src/base/md5.c: Updated to recent version.
2016-06-14 Alexei Podtelezhnikov <apodtele@gmail.com>
* src/smooth/ftgrays.c (gray_hline): Optimize if-condition.
2016-06-13 Werner Lemberg <wl@gnu.org>
[autofit] Add support for Cherokee script.
* src/autofit/afblue.dat: Add blue zone data for Cherokee.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afscript.h: Add Cherokee standard characters.
* src/autofit/afranges.c: Add Cherokee data.
* src/autofit/afstyles.h: Add Cherokee data.
2016-06-09 David Capello <davidcapello@gmail.com>
[cmake] Avoid modifying `ftconfig.h' and `ftoption.h' files.
* CMakeLists.txt: Each time cmake is run those files are
modified and the whole FreeType library is recompiled. With this
change we change the files only if there are real modifications, so
we can avoid recompilations.
2016-06-09 Werner Lemberg <wl@gnu.org>
[bdf] Check number of properties (#48166).
* src/bdf/bdflib.c (_bdf_parse_start): Implement.
2016-06-08 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Re-enable new line renderer on 64-bit archs.
* src/smooth/ftgrays.c (gray_render_line): Conditionally re-enable new
implementation, where it is safe from overflows.
2016-06-08 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Minor clean-ups.
* src/smooth/ftgrays.c (gray_dump_cells): Move out of the way.
(gray_render_span): Remove spurious casts and streamline.
2016-06-07 Werner Lemberg <wl@gnu.org>
[autofit] Add support for Ethiopic script.
* src/autofit/afblue.dat: Add blue zone data for Ethiopic.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afscript.h: Add Ethiopic standard characters.
* src/autofit/afranges.c: Add Ethiopic data.
* src/autofit/afstyles.h: Add Ethiopic data.
2016-06-07 Werner Lemberg <wl@gnu.org>
[autofit] Fix compilation with VS2016 (#48126).
This compiler doesn't recognize the end-of-comment sequence `*/' if
it immediately follows non-ASCII characters.
* src/autofit/afscript.h: Ensure whitespace before `*/'.
2016-06-04 Werner Lemberg <wl@gnu.org>
Fix a test for named instances (#48122).
This was missed while giving negative face indices an extended
meaning.
* src/base/ftobjs.c (Mac_Read_sfnt_Resource): Implement.
2016-05-31 Nikolaus Waxweiler <madigens@gmail.com>
[truetype] Let SHPIX move points in the twilight zone in v40.
* src/truetype/ttinterp.c (Ins_SHPIX): Allow SHPIX to move points in
the twilight zone. Otherwise, treat SHPIX the same as DELTAP.
Unbreaks various fonts such as older versions of Rokkitt and DTL
Argo T Light that would glitch severely after calling ALIGNRP after a
blocked SHPIX.
2016-05-30 Werner Lemberg <wl@gnu.org>
[type42] Support `CharStrings' entry format as created by LilyPond.
* src/type42/t42parse.c (t42_parse_charstrings): Handle entries
having the format
(foo) cvn 12345 def
2016-05-28 Werner Lemberg <wl@gnu.org>
* src/autofit/afranges.c: Remove `UL' postfix from hex numbers.
Suggested by Alexei. `UL' is only needed for 16bit compilers, but
it seems noone is using this anymore (and we no longer test whether
FreeType compiles in such an environment). Otherwise, it is easy to
add the postfix to the `AF_UNICODE_RANGE' macro.
2016-05-26 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Shrink bisection stack.
The convergence of Bézier flatteners is fast with the deviation
from straight line being asymptotically cut 4-fold on each bisection.
This justifies smaller bisection stack size.
* src/smooth/ftgrays.c (gray_TWorker): Remove common `bez_stack'.
(gray_render_conic): Create and use conic `bez_stack'. Move back the
band analysis from...
(gray_conic_to): ... here.
(gray_render_cubic): Create and use cubic `bez_stack'. Move back the
band analysis from...
(gray_cubic_to): ... here.
(gray_move_to): Updated.
2016-05-25 Werner Lemberg <wl@gnu.org>
[autofit] Fixes for Armenian and Gujarati ranges.
* src/autofit/afranges.c (af_armn_uniranges): Corrected.
(af_guru_nonbase_uniranges): Make U+0A3E a base character.
2016-05-24 Werner Lemberg <wl@gnu.org>
[autofit] Add support for Armenian script.
* src/autofit/afblue.dat: Add blue zone data for Armenian.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afscript.h: Add Armenian standard characters.
* src/autofit/afranges.c: Add Armenian data.
* src/autofit/afstyles.h: Add Armenian data.
2016-05-23 Werner Lemberg <wl@gnu.org>
* builds/unix/unix-cc.in (LINK_LIBRARY): Use `-export-symbols'.
This was commented about 10 years ago – I think the reason then to
disable libtool's `-export-symbols' option was to give some badly
programmed applications access to internal FreeType functions.
I believe that we should no longer take care of such programs; the
number of symbols exported should be rather restricted as much as
possible.
2016-05-22 Werner Lemberg <wl@gnu.org>
[autofit] Add blue-zone support for Gurmukhi script.
This essentially moves the Gurmukhi script from the `Indic' hinter to
the `Latin' hinter.
* src/autofit/afblue.dat: Add blue zone data for Gurmukhi.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afscript.h: Add Gurmukhi standard characters and move
data out of AF_CONFIG_OPTION_INDIC block.
* src/autofit/afranges.c: Move Gurmukhi data out of
AF_CONFIG_OPTION_INDIC block.
* src/autofit/afstyles.h: Update Gurmukhi data; in particular, use
AF_WRITING_SYSTEM_LATIN.
2016-05-21 Werner Lemberg <wl@gnu.org>
Minor clang++ fixes.
* src/base/ftobjs.c (FT_Add_Module), src/psaux/psobjs.c
(ps_parser_load_field), src/type1/t1load.c (parse_subrs): Add
initializer.
* src/cache/ftccache.h (FTC_CACHE_TRYLOOP_END): Avoid implicit
conversion from NULL to boolean.
2016-05-21 Werner Lemberg <wl@gnu.org>
Work around a bug of the C 8.0.0.1 compiler on AIX 5.3 (#47955).
* include/freetype/internal/ftmemory.h (cplusplus_typeof): Use
braces for `extern "C++"'.
2016-05-17 Nikolaus Waxweiler <madigens@gmail.com>
[truetype] Make TT_LOADER_SET_PP support subpixel hinting [3/3].
* src/truetype/ttgload.c (TT_LOADER_SET_PP): Replace macro with...
(tt_loader_set_pp): ... this new function.
Update all callers.
2016-05-17 Nikolaus Waxweiler <madigens@gmail.com>
[truetype] New implementation of v38 bytecode interpreter [2/3].
This patch actually modifies the bytecode interpreter.
See added comments in `ttinterp.h' for more information on this and
the following commit in the series.
* src/truetype/ttinterp.c (SUBPIXEL_HINTING): Replaced by...
(NO_SUBPIXEL_HINTING, SUBPIXEL_HINTING_INFINALITY,
SUBPIXEL_HINTING_MINIMAL): ...new macros.
(Direct_Move, Direct_Move_X, Direct_Move_Y): Handle backward
compatibility.
Updated.
(Ins_RS, Ins_FDEF, Ins_ENDF, Ins_CALL, Ins_LOOPCALL, Ins_MD):
Updated.
(Ins_INSTCTRL): Handle native ClearType mode flag.
Updated.
(Ins_FLIPPT, Ins_FLIPRGON, Ins_FLIPRGOFF): Handle backward
compatibility.
(Move_Zp2_Point): Ditto.
(Ins_SHP): Updated.
(Ins_SHPIX): Handle backward compatibility.
Updated.
(Ins_MSIRP, Ins_MDAP, Ins_MIAP, Ins_MDRP, Ins_MIRP): Updated.
(Ins_ALIGNRP): Updated.
(Ins_IUP, Ins_DELTAP): Handle backward compatibility.
Updated.
(Ins_GETINFO): Handle v38 flags.
Updated.
(TT_RunIns): Handle backward compatibility mode.
Updated.
2016-05-17 Nikolaus Waxweiler <madigens@gmail.com>
[truetype] New implementation of v38 bytecode interpreter [1/3].
This patch prepares data structures and the like.
See added comments in `ttinterp.h' for more information on this and
the following commits in the series.
* devel/ftoption.h, include/freetype/config/ftoption.h
(TT_CONFIG_OPTION_SUBPIXEL_HINTING): Assign values to differentiate
between subpixel versions.
(TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY,
TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL): New macros.
* include/freetype/ftttdrv.h (TT_INTERPRETER_VERSION_40): New macro.
* include/freetype/internal/tttypes.h (TT_FaceRec): Updated.
* src/truetype/ttinterp.h (TT_ExecContextRec): Define new fields
`subpixel_hinting_lean', `vertical_lcd_lean',
`backward_compatibility', `iupx_called', iupy_called', and
`grayscale_cleartype' for new hinting mode.
* src/truetype/ttdriver.c (tt_property_set): Handle v38 and v40
interpreters conditionally.
* src/truetype/ttgload.c (TT_Hint_Glyph): Save phantom points unless
in v38 backward compatibility mode.
Updated.
(compute_glyph_metrics): Add v38 backward compatibility mode
constraint for adjusting advance widths.
Updated.
(tt_loader_init): Handle new flags `subpixel_hinting_lean',
`grayscale_cleartype', and `vertical_lcd_lean'.
Updated.
(tt_get_metrics, TT_Process_Simple_Glyph, TT_LOADER_SET_PP):
Updated.
* src/truetype/ttobjs.c (tt_driver_init): Conditionally set
default interpreter version number.
* src/truetype/ttsubpix.c, src/truetype/ttsubpix.h: Updated.
2016-05-17 Werner Lemberg <wl@gnu.org>
[cff] Fix matrix scaling (#47848).
* include/freetype/config/ftstdlib.h (FT_LONG_MIN): New macro.
* src/cff/cffparse.c (cff_parse_font_matrix): Use largest scaling
value of all matrix coefficients to scale matrix.
* src/cff/cffobjs.c (cff_face_init): Use `matrix->yx' member for
matrix normalization if `matrix->yy' is zero.
2016-05-16 Werner Lemberg <wl@gnu.org>
[base] Reject invalid sfnt Mac resource (#47891).
* src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Check validity
of `CID ' and `TYPE1' table offset and length.
2016-05-16 Werner Lemberg <wl@gnu.org>
[cid] Fix scanning for `StartData' and `/sfnts' (#47892).
* src/cid/cidparse.c (STARTDATA, STARTDATA_LEN, SFNTS, SFNTS_LEN):
New macros.
(cid_parser_new): Fix and document algorithm.
2016-05-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
[truetype] Improve the recursive reference detector.
The previous fix for #46372 misunderstood a composite glyph referring
same component twice as a recursive reference. See the discussion
https://lists.gnu.org/archive/html/freetype/2016-05/msg00000.html
Thanks to Khaled Hosny for finding this issue.
* src/truetype/ttgload.c (ft_list_get_node_at): A function to get
the i-th node from FT_List.
(load_truetype_glyph): In the traversal scan of the reference tree
in the composite glyph, we clear the nodes filled by previous
sibling chain.
2016-05-07 Werner Lemberg <wl@gnu.org>
[cache] Allow value 0 for face ID.
We never dereference `face_id', and some implementations might use a
running number instead of a pointer. Additionally, disallowing
value zero was undocumented.
* src/cache/ftccmap.c (FTC_CMapCache_Lookup), src/cache/ftcmanag.c
(FTC_Manager_LookupFace, FTC_Manager_RemoveFaceID): Remove test for
`face_id'.
2016-05-05 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] More efficient accounting of conic splits and draws.
A single decrement counter of segments to draw, instead of an array,
contains all the information necessary to decide when to split and
when to draw a conic segment. The number of splits before each draw is
equal to the number of trailing zeros in the counter.
* src/smooth/ftgrays.c (gray_TWorker): Remove `lev_stack'.
(gray_render_conic): Updated to use decrement counter of segments.
2016-05-05 Werner Lemberg <wl@gnu.org>
[cff, truetype] Fix logic for `FT_Property_Set'.
Otherwise some properties could be set to arbitrary values, which is
harmless, but querying could give wrong positive results.
* src/cff/cffdrivr.c (cff_property_set) [hinting-engine],
* src/truetype/ttdriver.c (tt_property_set) [interpreter-version]:
Only allow defined values.
2016-04-25 Werner Lemberg <wl@gnu.org>
[autofit] Add blue-zone support for Gujarati script.
This essentially moves the Gujarati script from the `Indic' hinter to
the `Latin' hinter.
* src/autofit/afblue.dat: Add blue zone data for Gujarati.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afscript.h: Add Gujarati standard characters and move
data out of AF_CONFIG_OPTION_INDIC block.
* src/autofit/afranges.c: Move Gujarati data out of
AF_CONFIG_OPTION_INDIC block.
* src/autofit/afstyles.h: Update Gujarati data; in particular, use
AF_WRITING_SYSTEM_LATIN.
2016-04-24 Werner Lemberg <wl@gnu.org>
Minor.
* include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Protect macro
argument with parentheses.
2016-04-24 Werner Lemberg <wl@gnu.org>
[truetype] Fix deallocation in case of error (#47726).
* src/truetype/ttgload.c (load_truetype_glyph): Initialize fields in
`outline' that are going to be deallocated in case of error.
2016-04-23 Werner Lemberg <wl@gnu.org>
[autofit] Improve Georgian blue zone characters.
Suggested by Akaki Razmadze <razmadzekoko@gmail.com>.
* src/autofit/afblue.dat (AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM):
Updated.
* src/autofit/afblue.c: Regenerated.
2016-04-16 David Capello <davidcapello@gmail.com>
[cmake] Honor SKIP_INSTALL_* settings (as used in zlib).
As FreeType depends on zlib, if we don't install zlib (e.g., because
we defined SKIP_INSTALL_ALL), FreeType cannot be installed, too
(cmake triggers an error saying that FreeType cannot be installed
because zlib target isn't in the export set).
* CMakeLists.txt: Honor `SKIP_INSTALL_HEADERS',
`SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL' settings.
2016-04-16 Behdad Esfahbod <behdad@behdad.org>
[truetype] Another fix for non-intermediate GX tuples.
* src/truetype/ttgxvar.c (ft_var_apply_tuple): Add some missing
cases.
2016-04-12 Alexei Podtelezhnikov <apodtele@gmail.com>
Remove forgotten macro.
* include/freetype/internal/internal.h
[FT_INTERNAL_POSTSCRIPT_GLOBALS_H]: Remove.
2016-04-09 Werner Lemberg <wl@gnu.org>
[autofit] Add support for Georgian scripts.
Georgian is problematic, since `uppercase' forms of Mkhedruli
(called Mtavruli) are not yet defined in Unicode, which means that
proper blue zones can't be defined. However, there is already a
proposal submitted to Unicode; see
https://www.unicode.org/L2/L2016/16034-n4707-georgian.pdf
Additionally, due to historical reasons, Unicode treats Khutsuri as
the same script as Mkhedruli, and so does OpenType. However, since
the two scripts have completely different shapes it can happen that
blue zones differ considerably. The tag `geok' used here (derived
from ISO 15924) to differentiate the two scripts is not an OpenType
tag in use. If we now have a font that contains both glyphs for
Mkhedruli and Khutsuri, and it uses OpenType features for both also,
HarfBuzz unavoidably treats all glyphs as `geor'. As a consequence,
blue zones for `geok' are not used for glyphs involved in the
OpenType features.
An issue not yet resolved is which OpenType feature should be used
to access Mtavruli glyph shapes; right now, FreeType doesn't set up
support for them, but it is easy to add them later on as soon as
more information is available.
* src/autofit/afblue.dat: Add blue zone data for Georgian.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afscript.h: Add Georgian standard characters.
* src/autofit/afranges.c: Add Georgian data.
* src/autofit/afstyles.h: Add Georgian data.
2016-04-05 Werner Lemberg <wl@gnu.org>
[autofit] Provide dummy blue zone for pseudo script `none'.
Even if the dummy hinter is used as the handler for `none' (which
doesn't use blue zones), it is more consistent than the old value
(which was 0), pointing to Arabic...
* src/autofit/afblue.dat: Add `AF_BLUE_STRINGSET_NONE'.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afstyles.h (none_dflt): Use AF_BLUE_STRINGSET_NONE.
2016-03-30 Werner Lemberg <wl@gnu.org>
* src/pfr/pfrload.c (pfr_aux_name_load): Thinko (#47567).
2016-03-30 Werner Lemberg <wl@gnu.org>
* src/pfr/pfrload.c (pfr_log_font_count): Better font size estimate.
2016-03-30 Werner Lemberg <wl@gnu.org>
* src/pfr/pfrload.c (pfr_aux_name_load): Fix memory leak (#47567).
2016-03-29 Werner Lemberg <wl@gnu.org>
* src/base/ftadvanc.c (FT_Get_Advances): Fix invalid left shift.
2016-03-29 Werner Lemberg <wl@gnu.org>
[pfr] Fix binary search (#47514).
* src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Handle border
conditions correctly.
2016-03-29 Werner Lemberg <wl@gnu.org>
[pfr] Minor.
* src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Replace `left',
`right', and `middle' with `min', `max', and `mid' as used in other
FreeType binary search code.
(pfr_load_bitmap_metrics): Fix invalid left shift.
2016-03-29 Werner Lemberg <wl@gnu.org>
* src/pfr/pfrtypes.h: Replace all enums with macros.
We need `~FOO' to unset bits, and only with unsigned values (which
`enum' isn't normally) this works cleanly.
2016-03-26 Werner Lemberg <wl@gnu.org>
[pfr] Robustify bitmap strike handling (#47514).
We did a binary search for a charcode without ensuring that the
searched data is ordered. Validating the order is now done lazily,
this is, the first access to a bitmap glyph triggers the order check
in the corresponding bitmap strike.
* src/pfr/pfrtypes.h (PFR_BitmapFlags): New values
`PFR_BITMAP_VALID_CHARCODES' and `PFR_BITMAP_CHARCODES_VALIDATED'.
* src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Make `flags' argument
a pointer. Handle new PFR_BITMAP_XXX flags.
(pfr_slot_load_bitmap): Updated.
2016-03-26 Werner Lemberg <wl@gnu.org>
[pfr] Fix handling of compound glyphs.
Extra items are indicated with different bit positions.
* src/pfr/pfrtypes.h (PFR_GlyphFlags): Replace
`PFR_GLYPH_EXTRA_ITEMS' with `PFR_GLYPH_SIMPLE_EXTRA_ITEMS' and
`PFR_GLYPH_COMPOUND_EXTRA_ITEMS'.
* src/pfr/pfrgload.c (pfr_glyph_load_simple,
pfr_glyph_load_compound): Use them.
2016-03-25 Werner Lemberg <wl@gnu.org>
[pfr] Minor.
* src/pfr/pfrsbit.c, src/pfr/pfrobjs.c: Use flag names instead of
bare numbers.
2016-03-25 Werner Lemberg <wl@gnu.org>
[pfr] Various clang sanitizer fixes.
* src/pfr/pfrsbit.c (pfr_load_bitmap_metrics): Correctly handle
signed nibbles.
(pfr_slot_load_bitmap): Correctly exit frame in case of error.
Fix invalid left shifts.
2016-03-23 Werner Lemberg <wl@gnu.org>
Rename `VERSION.DLL' (#47472).
* docs/VERSION.DLL: Renamed to...
* docs/VERSIONS.TXT: ...this.
2016-03-23 Werner Lemberg <wl@gnu.org>
[raster, smooth] Directly test outline size (#47500).
This improves stand-alone compilation.
* src/base/ftoutln.c (FT_Outline_Render): Move cbox size test to...
* src/raster/ftraster.c (ft_black_render), src/smooth/ftgrays.c
(gray_raster_render): ...these functions.
2016-03-23 Werner Lemberg <wl@gnu.org>
[raster, smooth] Fix some clang sanitizer runtime issues.
* src/raster/ftraster.c (ft_black_reset, ft_black_set_mode,
ft_black_render): Harmonize signatures with `ftimage.h'.
* src/smooth/ftgrays.c (gray_raster_render, gray_raster_reset):
Ditto.
2016-03-22 Werner Lemberg <wl@gnu.org>
* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Minor.
This fixes an AddressSanitizer issue:
ttgload.c:430:7: runtime error: null pointer passed as argument 1,
which is declared to never be null
2016-03-21 Werner Lemberg <wl@gnu.org>
* src/autofit/afhints.c (af_glyph_hints_reload): Thinko.
This fixes the previous commit to this file.
2016-03-21 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Partly revert recent changes.
* src/smooth/ftgrays.c (gray_conic_to, gray_cubic_to): Rework
conditions to fix rendering issues.
2016-03-20 Werner Lemberg <wl@gnu.org>
[autofit] Show `near' points in tracing.
* src/autofit/afhints.h (AF_FLAG_NEAR): New macro.
* src/autofit/afhints.c (af_glyph_hints_dump_points): Implement it.
(af_glyph_hints_reload): Handle AF_FLAG_NEAR.
2016-03-18 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Minor refactoring and microoptimizations.
* src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
band clipping from here.
(gray_conic_to, gray_cubic_to): ... to here.
(gray_render_line, gray_render_scanline): Initialize variables closer
to their use.
2016-03-17 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Minor refactoring.
* src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
upscaling from here.
(gray_conic_to, gray_cubic_to): ... to here.
2016-03-15 Werner Lemberg <wl@gnu.org>
* src/autofit/aflatin.c (af_latin_compute_stem_width): Optimize.
2016-03-14 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Temporarily revert 6eb6158dd787 (#47114).
* src/smooth/ftgrays.c (gray_render_line): Old implementation.
2016-03-12 Werner Lemberg <wl@gnu.org>
[ftfuzzer] Improve coverage of rasterfuzzer.
* src/tools/ftfuzzer/rasterfuzzer.cc (LLVMFuzzerTestOneInput): Use
input data for `tags' array also.
Trim input data to get more positive hits.
2016-03-11 Pavlo Denysov <paul.kiev+savannah@gmail.com>
Fix CMake issues for iOS (patch #8941).
* CMakeLists.txt (CMAKE_TOOLCHAIN_FILE): Fix directory.
* builds/cmake/iOS.cmake: No longer enforce gcc.
2016-03-09 Behdad Esfahbod <behdad@behdad.org>
[truetype] Fix handling of non-intermediate GX tuples.
We probably did not notice this as all fonts we tested had only
tuple_coords[i] be +1 or -1 for non-intermediate tuples.
* src/truetype/ttgxvar.c (ft_var_apply_tuple): Implement it.
2016-03-06 Alexei Podtelezhnikov <apodtele@gmail.com>
[base] Refuse to render enormous outlines (#47114).
The goal is to avoid integer overflows in the rendering algorithms.
The limit is chosen arbitrarily at some 2^18 pixels, which should be
enough for modern devices including printers.
* src/base/ftoutln.c (FT_Outline_Render): Check CBox and reject
enormous outlines.
2016-03-06 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Replace left shifts with multiplications (#47114).
* src/smooth/ftgrays.c (SUBPIXELS, UPSCALE, DOWNSCALE): Do it.
2016-03-05 Werner Lemberg <wl@gnu.org>
[autofit] Avoid excessive stem length rounding (#25392).
* src/autofit/aflatin.c (af_latin_compute_stem_width): Add argument
to pass difference between hinted and unhinted position of base
point; use this to adjust the stem width depending on the PPEM so
that it doesn't become too large under certain circumstances.
Update all callers using value 0 for this argument except...
(af_latin_align_linked_edge): Pass position delta of base point to
`af_latin_compute_stem_width'.
2016-03-05 J Raynor <jxraynor@gmail.com>
Make FreeType compile on AIX out of the box.
* builds/unix/configure.raw (XX_ANSIFLAGS): Don't use `-ansi' on
AIX.
2016-03-01 Werner Lemberg <wl@gnu.org>
Kostya Serebryany <kcc@google.com>
[ftfuzzer] Add unit for testing smooth and black rasterizers.
* src/tools/ftfuzzer/rasterfuzzer.cc: New file.
2016-03-01 Werner Lemberg <wl@gnu.org>
[autofit] Fix reallocation error introduced in 2016-02-27 (#47310).
* src/autofit/aflatin.c (af_latin_hints_compute_segments): Reassign
`prev_segment' after reallocation.
2016-03-01 Werner Lemberg <wl@gnu.org>
Fix clang warnings.
* src/autofit/aflatin.c (af_latin_hints_compute_segments): Use
FT_UShort for `min_flags' and `max_flags'.
Initialize `prev_*' variables.
* src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Fix
types of local variables.
* src/smooth/ftgrays.c (gray_dump_cells) [FT_DEBUG_LEVEL_TRACE]:
Update `printf' format string.
* src/tools/ftfuzzer/ftfuzzer.cc (setIntermediateAxis): Add cast.
(LLVMFuzzerTestOneInput): Fix loop type.
2016-02-29 Werner Lemberg <wl@gnu.org>
[autofit] Add blue-zone support for Sinhala script.
This essentially moves the Sinhala script from the `Indic' hinter to
the `Latin' hinter.
* src/autofit/afblue.dat: Add blue zone data for Sinhala.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afscript.h: Add Sinhala standard character and move data
out of AF_CONFIG_OPTION_INDIC block.
* src/autofit/afranges.c: Move Sinhala data out of
AF_CONFIG_OPTION_INDIC block.
* src/autofit/afstyles.h: Update Sinhala data; in particular, use
AF_WRITING_SYSTEM_LATIN.
2016-02-27 Werner Lemberg <wl@gnu.org>
[autofit] Properly handle spikes pointing to the x-axis.
An example that gets better rendered is glyph `uusignTaml' (glyph
index 2286) in font `FreeSerif.ttf' (Version 0412.2263) at 22ppem.
* src/autofit/aflatin.c (af_latin_hints_compute_segments): Properly
handle segments where the last point of the first segment is
identical to the first point in the second one. This can happen for
malformed fonts or spikes. We either merge the new segment with the
previous one (both segments point into the same direction), or we
discard the shorter segment if they point into different directions.
2016-02-27 Werner Lemberg <wl@gnu.org>
[autofit] Minor code clean-up.
* src/autofit/aflatin.c (af_latin_hints_compute_segments): Change
some local variable names to better differentiate between values
along a segment and values orthogonal to it.
2016-02-26 Werner Lemberg <wl@gnu.org>
[autofit] Improve BOUND action.
In complex glyph shapes, the original logic was too simple to cater
for situations that would actually need something similar to PS Hint
masks. This fix should alleviate the worst cases.
* src/autofit/aflatin.c (af_latin_hint_edges): Don't allow
complete disappearance of stems.
2016-02-25 Werner Lemberg <wl@gnu.org>
[autofit] Add blue-zone support for Tamil script.
This essentially moves the Tamil script from the `Indic' hinter to
the `Latin' hinter.
* src/autofit/afblue.dat: Add blue zone data for Tamil.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afscript.h: Add Tamil standard character and move data
out of AF_CONFIG_OPTION_INDIC block.
* src/autofit/afranges.c: Move Tamil data out of
AF_CONFIG_OPTION_INDIC block.
* src/autofit/afstyles.h: Update Tamil data; in particular, use
AF_WRITING_SYSTEM_LATIN.
2016-02-18 Werner Lemberg <wl@gnu.org>
[autofit] Add blue-zone support for Malayalam script.
This essentially moves the Malayalam script from the `Indic' hinter
to the `Latin' hinter.
* src/autofit/afblue.dat: Add blue zone data for Malayalam.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afscript.h: Add Malayalam standard characters and move
data out of AF_CONFIG_OPTION_INDIC block.
* src/autofit/afranges.c: Move Malayalam data out of
AF_CONFIG_OPTION_INDIC block.
* src/autofit/afstyles.h: Update Malayalam data; in particular, use
AF_WRITING_SYSTEM_LATIN.
2016-02-16 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Fix integer overflow (#47114).
* src/smooth/ftgrays.c (TArea): Make it unconditionally `long'.
2016-02-15 Werner Lemberg <wl@gnu.org>
* src/cff/cffparse.c (cff_parse_multiple_master): Improve tracing.
2016-02-15 Werner Lemberg <wl@gnu.org>
[cff] Handle T2 operator only with old CFF engine (#47157).
* src/cff/cffparse.c (cff_parser_run) <opcode 31>: Enclose with
#ifdef CFF_CONFIG_OPTION_OLD_ENGINE...#endif.
2016-02-15 Werner Lemberg <wl@gnu.org>
[cff] Partially handle `load' and `store' ops in old CFF engine.
Now all glyphs of MM CFFs like `ITCGaramondMM-It.otf' can be
displayed.
* src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_store,
cff_op_load>: Partially implement it.
* src/cff/cffparse.c (cff_parser_init): Add new parameter to pass
the number of Multiple Master axes.
Update all callers.
(cff_parse_multiple_master): Get number of axes.
(cff_parser_run) <opcode 31>: Updated.
* src/cff/cffparse.h: Updated.
(CFF_ParserRec): Add `num_axes' field.
* src/cff/cffload.c: Updated.
* src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_axes' field.
2016-02-15 Werner Lemberg <wl@gnu.org>
[cff] Correctly trace SIDs that contain NULL bytes.
We need this to properly trace Multiple Master CFFs, which contain
two SIDs that are charstrings.
This commit makes FreeType also show the last SID, omitted
previously due to a bug.
* src/cff/cfftypes.h (CFF_FontRec): Add `string_pool_size' field.
* src/cff/cffload.c (cff_index_get_pointers): Add argument to return
the pool size.
Update all callers.
* src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Directly
access `cff->strings' to display the non-default strings.
2016-02-14 Werner Lemberg <wl@gnu.org>
* src/base/fthash.c: Include FT_INTERNAL_MEMORY_H.
2016-02-14 Werner Lemberg <wl@gnu.org>
* src/cff/cffparse.c: Include `cffgload.h'.
Problem reported by Colin Walters <walters@verbum.org>.
2016-02-14 Werner Lemberg <wl@gnu.org>
[cff] Make old CFF engine show MM CFFs (without variations).
The new code only displays the first master in the font.
* src/cff/cffgload.c (cff_decode_parse_charstrings): Add new
parameter to allow function calls from dictionaries also.
<cff_op_blend>: Partially implement it.
Update all callers.
* src/cff/cffgload.h: Updated.
* src/cff/cffparse.c (cff_parser_init): Add new parameter to pass the
number of Multiple Master designs.
Update all callers.
(cff_parse_multiple_master): New function to rudimentarily parse
operator.
(cff_parser_run): Handle `T2' operator.
* src/cff/cffparse.h: Updated.
(CFF_ParserRec): Add `num_designs' field.
* src/cff/cffload.c: Updated.
* src/cff/cfftoken.h: Handle `MultipleMaster' operator.
* src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_designs' field.
* src/sfnt/sfobjs.c (sfnt_init_face): Don't handle `fvar' table for
MM CFFs.
2016-02-09 Werner Lemberg <wl@gnu.org>
[docmaker] Don't emit trailing newlines.
* src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_code):
Use `rstrip'.
2016-02-07 Werner Lemberg <wl@gnu.org>
* Version 2.6.3 released.
=========================
Tag sources with `VER-2-6-3'.
* docs/VERSION.DLL: Update documentation and bump version number to
2.6.3.
* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
builds/windows/vc2005/index.html,
builds/windows/vc2008/freetype.vcproj,
builds/windows/vc2008/index.html,
builds/windows/vc2010/freetype.vcxproj,
builds/windows/vc2010/index.html,
builds/windows/visualc/freetype.dsp,
builds/windows/visualc/freetype.vcproj,
builds/windows/visualc/index.html,
builds/windows/visualce/freetype.dsp,
builds/windows/visualce/freetype.vcproj,
builds/windows/visualce/index.html,
builds/wince/vc2005-ce/freetype.vcproj,
builds/wince/vc2005-ce/index.html,
builds/wince/vc2008-ce/freetype.vcproj,
builds/wince/vc2008-ce/index.html: s/2.6.2/2.6.3/, s/262/263/.
* include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
* builds/unix/configure.raw (version_info): Set to 18:3:12.
* CMakeLists.txt (VERSION_PATCH): Set to 3.
* docs/CHANGES: Updated.
2016-02-07 Werner Lemberg <wl@gnu.org>
Fix another runtime error found by clang's sanitizer (#47082).
* src/base/ftstroke.c (ft_stroke_border_export): Properly handle
empty input buffer.
2016-02-07 Werner Lemberg <wl@gnu.org>
Fix runtime errors found by clang's sanitizer (#47082).
* src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c
(FT_Outline_Copy), src/cache/ftcsbits.c (ftc_sbit_copy_bitmap):
Properly handle empty input buffer.
2016-02-07 Werner Lemberg <wl@gnu.org>
[cff] Minor.
* src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_sqrt>:
Remove dead code.
2016-02-07 Werner Lemberg <wl@gnu.org>
[cff] Implement missing operators in new engine (except `random').
* src/cff/cf2font.h (CF2_STORAGE_SIZE): New macro.
* src/cff/cf2intrp.c (cf2_interpT2CharString): Implement the
following operators: abs, add, and, div, drop, dup, eq, exch, get,
ifelse, index, mul, neg, not, or, put, roll, sqrt, sub.
* src/cff/cf2stack.h, src/cff/cf2stack.c (cf2_stack_roll): New
auxiliary function for `roll' operator.
2016-02-06 Werner Lemberg <wl@gnu.org>
[cff] Fix some Type 2 operators in old CFF engine.
* src/cff/cffgload.c (cff_decoder_parse_charstrings): Fix `eq'
operator, add `not' and (unsupported) `blend' operators.
2016-02-05 Sebastian Rasmussen <sebras@gmail.com>
Make direct call of `make install' work (#47072).
* builds/unix/unix-def.in (freetype-config): Make sure
`freetype-config' is generated for both make targets (`all' and
`install').
2016-02-05 Werner Lemberg <wl@gnu.org>
[base] Fix advance width loading for MM and GX fonts (#47064).
* src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Return false for
MM and GX fonts.
Update callers.
2016-02-03 Werner Lemberg <wl@gnu.org>
[cff] Fix handling of face_index == -1 for pure CFF.
* src/cff/cffobjs.c (cff_face_init): Return correct number of faces.
2016-01-30 Werner Lemberg <wl@gnu.org>
[autofit] Minor tracing improvement.
* src/autofit/afhints.c (af_glyph_hints_dump_points): Insert newline
at the start of a new contour.
2016-01-28 Nikolaus Waxweiler <madigens@gmail.com>
Remove unpatented hinter (3/3).
* include/freetype/config/ftoption.h
(TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove.
* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove
`ignore_unpatented_hinter' field.
Update users.
(FT_DEBUG_HOOK_UNPATENTED_HINTING): Remove.
Update users.
* include/freetype/internal/tttypes.h (TT_FaceRec): Remove
`unpatented_hinting' field.
Update users.
* src/base/ftpatent.c (_tt_check_patents_in_range,
_tt_check_patents_in_table, _tt_face_check_patents): Remove.
(FT_Face_CheckTrueTypePatents, FT_Face_SetUnpatentedHinting):
Replace code with dummies.
* src/truetype/ttobjs.c (tt_face_init): Remove now defunct code.
* src/truetype/ttobjs.h (TT_GraphicsState): Remove `both_x_axis'
field.
2016-01-28 Nikolaus Waxweiler <madigens@gmail.com>
Remove unpatented hinter (2/3).
* devel/ftoption.h (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove.
2016-01-28 Nikolaus Waxweiler <madigens@gmail.com>
Remove unpatented hinter (1/3).
* src/truetype/ttinterp.c [TT_CONFIG_OPTION_UNPATENTED_HINTING]:
Remove all code related to this macro.
2016-01-28 Werner Lemberg <wl@gnu.org>
[autofit] Add blue-zone support for Kannada script.
This essentially moves the Kannada script from the `Indic' hinter to
the `Latin' hinter.
* src/autofit/afblue.dat: Add blue zone data for Kannada.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afscript.h: Add Kannada standard characters and move
data out of AF_CONFIG_OPTION_INDIC block.
* src/autofit/afranges.c: Move Kannada data out of
AF_CONFIG_OPTION_INDIC block.
* src/autofit/afstyles.h: Update Kannada data; in particular, use
AF_WRITING_SYSTEM_LATIN.
2016-01-22 Alexei Podtelezhnikov <apodtele@gmail.com>
Better access to 64-bit integers for C99 compilers.
* include/freetype/config/ftconfig.h [FT_LONG64]: Use
__STDC_VERSION__ to define 64-bit integers.
* builds/unix/ftconfig.in [FT_LONG64]: Ditto.
* builds/vms/ftconfig.h [FT_LONG64]: Ditto.
2016-01-21 Werner Lemberg <wl@gnu.org>
[gxvalid] Remove commented out code.
* src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Do it.
2016-01-20 Werner Lemberg <wl@gnu.org>
[autofit] Complete last autofit commit.
Problem reported by Kostya Serebryany <kcc@google.com>.
* src/autofit/afshaper.c (af_shaper_get_coverage)
[!FT_CONFIG_OPTION_USE_HARFBUZZ]: Update signature.
2016-01-20 Werner Lemberg <wl@gnu.org>
Still handle `__FTERRORS_H__'.
We need this for backward compatibility.
Problem reported by John Emmas <johne53@tiscali.co.uk>.
* include/freetype/fterrors.h: Fix inclusion guard so that
undefining either `FTERRORS_H_' or `__FTERRORS_H__' works as
expected.
2016-01-19 Werner Lemberg <wl@gnu.org>
[autofit] Fix handling of default script.
Patch taken from ttfautohint, commit
071ae2c00e0d67f9d19418f4fade1c23d27dc185.
There were two bugs.
- We now use non-standard script tags like `khms' for special
purposes. However, HarfBuzz maps such tags to `DFLT', and
without this commit the associated lookups were incorrectly
assigned to the non-standard tags.
- Let's assume we have a Bengali font, and the font's `DFLT'
script tag handles the necessary lookups for Bengali, too.
Without this commit, the `DFLT' lookups were assigned to
ttfautohint's default script (usually `latn') before the
standard lookups for Bengali were handled.
We now have the following order while searching for covered
glyph indices.
special features of scripts (e.g. `sups' for Cyrillic)
Unicode mappings of scripts
remaining features of scripts (especially important for Indic
scripts)
default features of default script
* src/autofit/afshaper.c, src/autofit/afshaper.h
(af_shaper_get_coverage): Add boolean parameter to indicate default
script.
Update all callers.
* src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
Fix search order for coverages.
2016-01-19 Werner Lemberg <wl@gnu.org>
Various minor clang fixes.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths),
src/autofit/aflatin.c (af_latin_metrics_init_widths): Initialize
`ch'.
* src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Add cast.
* src/base/ftdbgmem.c (ft_mem_table_destroy): Add cast.
* src/base/fthash.c (hash_num_lookup): Add cast.
* src/base/fttrigon.c (ft_trig_downscale) [FT_LONG64]: Fix cast.
* src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Comment out
redundant code.
* src/type1/t1driver.c (t1_get_ps_font_value) <PS_DICT_SUBR>: Add
cast.
* src/type1/t1load.c (parse_subrs): Fix type of `count'.
2016-01-19 Derek B. Noonburg <derekn@glyphandcog.com>
[truetype] Add another tricky font.
* src/truetype/ttobjs.c (TRICK_SFNT_IDS_NUM_FACES): Increase.
(sfnt_id): Add variant of `DFKaiShu'.
2016-01-14 Alexei Podtelezhnikov <apodtele@gmail.com>
[base] Empower `FT_Library_SetLcdFilterWeights'.
* src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights): Enable filter
in addition to setting weights.
(FT_Library_SetLcdFilter): Clean out FT_FORCE_LIGHT_LCD_FILTER and
FT_FORCE_LEGACY_LCD_FILTER.
* include/freetype/ftlcdfil.h: Documentation update.
2016-01-12 Werner Lemberg <wl@gnu.org>
Don't use macro names that start with `_[A-Z]' [3/3].
Such macro names are reserved for both C and C++.
* src/cache/ftccache.h: s/_FTC_FACE_ID_HASH/FTC_FACE_ID_HASH/.
Update all callers.
(FTC_CACHE_LOOKUP_CMP): Replace `_XXX' with `XXX_'.
* src/cache/ftcmru.c (FTC_MRULIST_LOOKUP_CMP): Ditto.
2016-01-12 Werner Lemberg <wl@gnu.org>
Don't use macro names that start with `_[A-Z]' [2/3].
Such macro names are reserved for both C and C++.
* include/freetype/ftimage.h, src/raster/ftraster.c,
src/smooth/ftgrays.c, src/smooth/ftgrays.h:
s/_STANDALONE_/STANDALONE_/.
2016-01-12 Werner Lemberg <wl@gnu.org>
Don't use macro names that start with `_[A-Z]' [1/3].
Such macro names are reserved for both C and C++.
* src/bdf/bdflib.c: Replace macros of the form `_BDF_XXX' with
`BDF_XXX_'.
2016-01-12 Werner Lemberg <wl@gnu.org>
Don't use macro names that contain `__' [2/2].
Such macro names are reserved for both C and C++.
* src/cache/*: s/__/_/.
2016-01-12 Werner Lemberg <wl@gnu.org>
Don't use macro names that contain `__' [1/2].
Such macro names are reserved for both C and C++.
* */*: Replace macros of the form `__XXX_H__' with `XXX_H_'.
2016-01-10 Jered Gray <jegray@google.com>
[cff] Fix usage of `|' operator.
* src/cff/cf2intrp.c (cf2_interpT2CharString) [cf2_cmdEXTENDEDNMBR,
default]: `|' is not guaranteed to be processed from left to right
by the compiler. However, the code repeatedly calls
`cf2_buf_readByte' to get the arguments to `|' ... Fix this.
2015-12-25 Werner Lemberg <wl@gnu.org>
[autofit] Make top-to-bottom hinting work in latin auto-hinter.
This improves rendering of scripts like Bengali or Devanagari.
* src/autofit/afhints.c (af_axis_hints_new_edge): Add parameter to
pass top-to-bottom hinting flag. This makes the function sort edges
in descending vertical position.
* src/autofit/afhints.c: Updated.
* src/autofit/aflatin.c (af_latin_hints_compute_edges,
af_latin_hint_edges): Use `top_to_bottom_hinting' flag.
* src/autofit/afcjk.c (af_cjk_hints_compute_edges),
src/autofit/aflatin2.c (af_latin2_hints_compute_edges): Updated.
2015-12-24 Werner Lemberg <wl@gnu.org>
[autofit] Add hinting direction to `AF_ScriptClassRec'.
Still unused.
* src/autofit/afglobal.c (SCRIPT): Handle hinting direction.
* src/autofit/aftypes.h (AF_ScriptClassRec): Add
`top_to_bottom_hinting' field.
(AF_HINTING_BOTTOM_TO_TOP, AF_HINTING_TOP_TO_BOTTOM): New macros.
(AF_DEFINE_SCRIPT_CLASS): Updated.
2015-12-23 Werner Lemberg <wl@gnu.org>
[autofit] Start implementing hinting direction (up/down, down/up).
Right now, it does nothing.
* src/autofit/afscript.h: Add another parameter to `SCRIPT',
specifying hinting direction.
* src/autofit/afglobal.c, src/autofit/afglobal.h,
src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/afshaper.c,
src/autofit/aftypes.h: Extend `SCRIPT' definitions.
2015-12-22 Werner Lemberg <wl@gnu.org>
* src/type1/t1load.c (parse_subrs): Fix memory leak (#46744).
2015-12-22 Werner Lemberg <wl@gnu.org>
[base] Make hash interface symmetric.
Use `num' and `str' infixes everywhere.
* src/base/fthash.c (ft_hash_init): Renamed to...
(hash_init): ... This.
(ft_hash_str_init, ft_hash_num_init): New functions.
(ft_hash_free): Renamed to...
(ft_hash_str_free): ... This.
* include/freetype/internal/fthash.h: Updated.
* src/bdf/bdflib.c, src/type1/t1load.c, src/type1/t1objs.c: Updated.
2015-12-21 Werner Lemberg <wl@gnu.org>
[type1] Avoid shift of negative numbers (#46732).
* src/type1/t1load.c (parse_subrs): Do it.
2015-12-20 Werner Lemberg <wl@gnu.org>
[type1, psaux] Handle large values of num_subrs correctly (#46692).
We now use a hash to map from subr indices to array elements holding
the subroutines, if necessary.
* include/freetype/internal/t1types.h: Include FT_INTERNAL_HASH_H.
(T1_FontRec): Add `subrs_hash' field.
* include/freetype/internal/psaux.h: Include FT_INTERNAL_HASH_H.
(T1_DecoderRec): Add `subrs_hash' field.
* src/type1/t1load.h (T1_LoaderRec): Add `subrs_hash' field.
* src/type1/t1driver.c: Include FT_INTERNAL_HASH_H.
(t1_ps_get_font_value) [PS_DICT_SUBR]: Look up hash if necessary.
* src/type1/t1load.c: Include FT_INTERNAL_HASH_H.
(parse_subrs): Use hash for subr indices that exceed the allocated
number of subr slots.
(t1_init_loader): Remove unnecessary code.
(t1_done_loader, T1_Open_Face): Updated.
* src/type1/t1gload.c (T1_Compute_Max_Advance, T1_Get_Advances,
T1_Load_Glyph): Updated.
* src/type1/t1objs.c (T1_Face_Done): Updated.
* src/psaux/t1decode.c: Include FT_INTERNAL_HASH_H.
(t1_decoder_parse_charstrings) [op_callsubr]: Look up hash if
necessary.
* src/cid/cidgload.c (cid_load_glyph): Updated.
2015-12-20 Werner Lemberg <wl@gnu.org>
[base] Thinko: Remove free function pointer.
We don't copy keys or values while hashing.
* include/freetype/internal/fthash.h (FT_Hash_FreeFunc): Removed.
(FT_HashRec): Remove `free' field.
* src/base/fthash.c (hash_str_free): Removed.
(ft_hash_init, ft_hash_free): Updated.
2015-12-20 Werner Lemberg <wl@gnu.org>
[base, bdf] Don't expose `FT_Hashnode' in hash functions.
* src/base/fthash.c (hash_lookup, ft_hash_str_lookup,
ft_hash_num_lookup): Return pointer to `size_t' instead of
`FT_Hashnode'.
* include/freetype/internal/fthash.h: Updated.
* src/bdf/bdflib.c (bdf_get_property, _bdf_add_property,
bdf_get_font_property): Updated.
2015-12-20 Werner Lemberg <wl@gnu.org>
[base, bdf] Add number hashing.
* src/base/fthash.c (hash_num_lookup, hash_num_compare): New
functions.
(ft_hash_init): Add argument to select between number and string
hashing.
(ft_hash_num_insert, ft_hash_num_lookup): New functions.
* include/freetype/internal/fthash.h: Updated.
* src/bdf/bdflib.c (_bdf_parse_start): Updated.
2015-12-20 Werner Lemberg <wl@gnu.org>
[base] Introduce hash lookup, compare, and free function pointers.
* include/freetype/internal/fthash.c (FT_Hash_LookupFunc,
FT_Hash_CompareFunc, FT_Hash_FreeFunc): New typedefs.
(FT_HashRec): Add `lookup', `compare', and `free' fields.
* src/base/fthash.c (hash_str_lookup, hash_str_compare,
hash_str_free): New functions.
(ft_hash_init): Set function pointers.
(hash_bucket, ft_hash_free): Use them.
2015-12-20 Werner Lemberg <wl@gnu.org>
[base, bdf] Use a union as a hash key.
We want to support both an integer and a string key later on.
* include/freetype/internal/fthash.h (FT_Hashkey): New union.
(FT_HashnodeRec): Updated.
(ft_hash_insert, ft_hash_lookup): Renamed to ...
(ft_hash_str_insert, ft_hash_str_lookup): ... this.
* src/base/fthash.c (hash_bucket): Updated.
(ft_hash_insert, ft_hash_lookup): Renamed to ...
(hash_insert, hash_lookup): ... this.
(ft_hash_str_insert, ft_hash_str_lookup): New wrapper functions.
* src/bdf/bdflib.c: Updated.
2015-12-19 Werner Lemberg <wl@gnu.org>
[bdf] Use new hash functions.
* src/bdf/bdf.h: Include FT_INTERNAL_HASH_H.
(hashnode, hashtable): Removed.
(bdf_font_t): Use `FT_HashRec' type for `proptbl'.
* src/bdf/bdflib.c: Remove all hash functions.
Update code for new hash structure and function names.
2015-12-19 Werner Lemberg <wl@gnu.org>
[bdf, base] Lift hash functions from bdf driver to base module.
* src/base/fthash.c, include/freetype/internal/fthash.h: New files,
containing (massaged) code from `bdflib.c' and `bdf.h'.
* include/freetype/internal/internal.h (FT_INTERNAL_HASH_H): New
macro.
* src/base/ftbase.c: Include `fthash.c'.
* src/base/Jamfile (_sources): Add `fthash'.
* src/base/rules.mk (BASE_SRC): Add `fthash.c'.
* docs/LICENSE.TXT: Updated.
2015-12-15 Werner Lemberg <wl@gnu.org>
[autofit] Add blue-zone support for Bengali script.
This essentially moves the Bengali script from the `Indic' hinter to
the `Latin' hinter.
* src/autofit/afblue.dat: Add blue zone data for Bengali.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afscript.h: Add Bengali standard characters and move
data out of AF_CONFIG_OPTION_INDIC block.
* src/autofit/afranges.c: Move Bengali data out of
AF_CONFIG_OPTION_INDIC block.
* src/autofit/afstyles.h: Update Bengali data; in particular, use
AF_WRITING_SYSTEM_LATIN.
2015-12-14 Ben Wagner <bungeman@gmail.com>
[bdf] Remove dead code (#46625).
The BDF specification only allows decimal numbers, no octal or
hexadecimal decoding is needed.
* src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous,
_bdf_atos): Remove unused code and parameters.
Update all callers.
(odigits): Remove.
2015-12-14 Werner Lemberg <wl@gnu.org>
[base] Fix calls to `FT_Stream_Seek'.
* src/base/ftobjs.c (Mac_Read_sfnt_Resource, FT_Open_Face): Set
`error'.
2015-12-14 Ben Wagner <bungeman@gmail.com>
[base] Check error when seeking to data supplied offset (#46635).
* src/base/ftobjs.c (open_face_PS_from_sfnt_stream):
`ft_lookup_PS_in_sfnt_stream' returns offset and length from
user supplied data. Use of this these values must be checked.
2015-12-13 Werner Lemberg <wl@gnu.org>
[autofit] Add support for Myanmar script.
* src/autofit/afblue.dat: Add blue zone data for Myanmar.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afscript.h: Add Myanmar standard characters.
* src/autofit/afranges.c: Add Myanmar data.
* src/autofit/afstyles.h: Add Myanmar data.
2015-12-12 Werner Lemberg <wl@gnu.org>
* src/autofit/aflatin.c (af_latin_metrics_init_blues): Minor.
2015-12-12 Werner Lemberg <wl@gnu.org>
* src/autofit/afscript.h: Avoid potential crash.
2015-12-10 Werner Lemberg <wl@gnu.org>
[autofit] Restore OpenType feature check.
This was removed while rewriting the HarfBuzz interface.
* src/autofit/afglobal.h (AF_FaceGlobalsRec): Add `hb_buf' field to
hold internal HarfBuzz buffer, needed for feature comparison.
* src/autofit/afglobal.c (af_face_globals_new,
af_face_globals_free): Initialize and destroy `hb_buf'.
* src/autofit/afshaper.c (af_shaper_get_cluster): Compare character
(cluster) with and without applied feature.
* src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix tracing
message.
2015-12-10 Werner Lemberg <wl@gnu.org>
[autofit] Remove redundant code.
* src/autofit/aflatin.c (af_latin_metrics_init_widths): Do it.
2015-12-09 Werner Lemberg <wl@gnu.org>
[autofit] Thinko.
* src/autofit/aflatin.c (af_latin_metrics_init_blues): Don't count
empty blue zones (bug introduced 2015-12-06).
2015-12-09 Werner Lemberg <wl@gnu.org>
[autofit] Introduce subscript top blue zones.
This feature is mainly for Khmer: The idea is to avoid a clash
between the top of subscript glyphs and the bottom of normal
baseline glyphs.
This only works for character clusters mapped to multiple glyphs.
* src/autofit/afblue.dat: Add subscript top blue zone for Khmer.
* src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_SUB_TOP): New
macro.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/aflatin.h (AF_LATIN_IS_SUB_TOP_BLUE,
AF_LATIN_BLUE_SUB_TOP): New macros.
* src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle new
blue zone property.
Update tracing messages.
(af_latin_metrics_scale_dim): Handle new blue zone property.
(af_latin_hints_compute_blue_edges): Updated.
2015-12-09 Werner Lemberg <wl@gnu.org>
[autofit] Fix tracing message.
* src/autofit/aflatin.c (af_latin_metrics_scale_dim): Display
inactive blue zones also.
2015-12-06 Werner Lemberg <wl@gnu.org>
* src/autofit/afblue.dat: Add more Khmer clusters.
Some fonts have incorrect ligatures; we need more samples to get a
good mean value.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
2015-12-06 Werner Lemberg <wl@gnu.org>
[autofit] Typos.
* src/autofit/afshaper.c (af_shaper_buf_create, af_shaper_get_elem)
[!FT_CONFIG_OPTION_USE_HARFBUZZ]: Make it compile.
2015-12-06 Werner Lemberg <wl@gnu.org>
[autofit] Add support for Khmer script.
We split Khmer into two auto-hinter scripts: `Khmer' (`khmr') and
`Khmer symbols' (`khms', U+19E0-U+19FF).
* src/autofit/afblue.dat: Add blue zone data for Khmer.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afscript.h: Add Khmer standard characters.
* src/autofit/afranges.c: Add Khmer data.
* src/autofit/afstyles.h: Add Khmer data.
2015-12-06 Werner Lemberg <wl@gnu.org>
[autofit] Rewrite HarfBuzz interface to support character clusters.
Scripts like Khmer have blue zones that can't be directly
represented by Unicode characters. Instead, it is necessary to let
HarfBuzz convert character clusters into proper glyph representation
forms, then deriving the blue zone information from the resulting
glyphs.
* src/autofit/hbshim.c, src/autofit/hbshim.h: Replaced by...
* src/autofit/afshaper.c, src/autofit/afshaper.h: ... these two new
files, providing a new API to access HarfBuzz.
The new API manages a HarfBuzz buffer with `af_shaper_buf_create'
and `af_shaper_buf_destroy'. The buffer receives a UTF8 encoded
string with function `af_shaper_get_cluster', and the resulting
glyph data (indices, advance widths, vertical offsets) can be
iteratively accessed with function `af_shaper_get_elem'.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated.
* src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_check_digits):
Updated.
* include/freetype/internal/fttrace.h: s/afharfbuzz/afshaper/.
* src/autofit/afglobal.c: s/hbshim.h/afshaper.h/.
(af_face_globals_compute_style_coverage): Updated.
* src/autofit/afglobal.h: s/hbshim.h/afshaper.h/.
* src/autofit/autofit.c: s/hbshim.c/afshaper.c/.
* src/autofit/Jamfile, src/autofit/rules.mk (AUTOF_DRV_SRC):
Updated.
2015-12-06 Werner Lemberg <wl@gnu.org>
[autofit] Prepare forthcoming changes.
This makes it easier to control the commits.
* src/autofit/aflatin.c (af_latin_metrics_init_blues): Add dummy
loop. No functional change.
2015-12-06 Werner Lemberg <wl@gnu.org>
[autofit] Use string of standard characters.
This is more flexible; additionally, it would allow character
clusters.
* src/autofit/aftypes.h (SCRIPT, AF_DEFINE_SCRIPT_CLASS): Updated.
(AF_ScriptClassRec): Replace `standard_char[123]' with
`standard_charstring'.
* src/autofit/afscript.h: Replace last three character arguments
of the `SCRIPT' calls with a string parameter, holding the standard
characters (in UTF-8 encoding) separated with spaces.
* src/autofit/afglobal.c, src/autofit/afglobal.h,
src/autofit/afpic.c, src/autofit/afranges.c, src/autofit/hbshim.c
(SCRIPT): Updated.
* src/autofit/afcjk.c (af_cjk_metrics_init_widths),
src/autofit/aflatin.c (af_latin_metrics_init_widths): Updated.
2015-12-05 Werner Lemberg <wl@gnu.org>
* src/autofit/afblue.dat: Separate blue zone characters with spaces.
Another preparation for character cluster support.
* src/autofit/afblue.c, src/autofit.afblue.h: Regenerated.
2015-12-05 Werner Lemberg <wl@gnu.org>
* src/tools/afblue.pl (convert_ascii_chars): Don't ignore spaces.
Instead, reduce multiple spaces to a single one. We need this later
for supporting character clusters in `afblue.dat'.
2015-12-05 Werner Lemberg <wl@gnu.org>
* src/autofit/afblue.hin (GET_UTF8_CHAR): Use `do...while(0)'.
* src/autofit/afblue.h: Regenerated.
2015-12-05 Werner Lemberg <wl@gnu.org>
* src/autofit/afwarp.c: s/INT_MIN/FT_INT_MIN/.
2015-12-03 Werner Lemberg <wl@gnu.org>
* builds/unix/install.mk (install): Remove stale `ft2build.h'.
2015-12-01 Werner Lemberg <wl@gnu.org>
[type1] Avoid dangling pointer (#46572).
* src/type1/t1afm.c (T1_Read_Metrics): Properly reset
`face->afm_data'.
2015-11-28 Alexei Podtelezhnikov <apodtele@gmail.com>
* include/freetype/ftlcdfil.h: Documentation tweak.
2015-11-28 Werner Lemberg <wl@gnu.org>
* Version 2.6.2 released.
=========================
Tag sources with `VER-2-6-2'.
* docs/VERSION.DLL: Update documentation and bump version number to
2.6.2.
* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
builds/windows/vc2005/index.html,
builds/windows/vc2008/freetype.vcproj,
builds/windows/vc2008/index.html,
builds/windows/vc2010/freetype.vcxproj,
builds/windows/vc2010/index.html,
builds/windows/visualc/freetype.dsp,
builds/windows/visualc/freetype.vcproj,
builds/windows/visualc/index.html,
builds/windows/visualce/freetype.dsp,
builds/windows/visualce/freetype.vcproj,
builds/windows/visualce/index.html,
builds/wince/vc2005-ce/freetype.vcproj,
builds/wince/vc2005-ce/index.html,
builds/wince/vc2008-ce/freetype.vcproj,
builds/wince/vc2008-ce/index.html: s/2.6.1/2.6.2/, s/261/262/.
* include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
* builds/unix/configure.raw (version_info): Set to 18:2:12.
* CMakeLists.txt (VERSION_PATCH): Set to 2.
* docs/CHANGES: Updated.
2015-11-28 Werner Lemberg <wl@gnu.org>
Fix C++ compilation.
* src/autofit/afloader.c: Include FT_INTERNAL_CALC_H.
* src/truetype/ttgload.c (load_truetype_glyph): Pacify compiler.
2015-11-28 Nikolaus Waxweiler <madigens@gmail.com>
Change default LCD filter to be normalized and color-balanced.
* src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Update
`default_filter'.
2015-11-28 Werner Lemberg <wl@gnu.org>
[docmaker] Allow references to section names.
In the reference, we show the section's title enclosed in single
quotes.
* src/tools/docmaker/formatter.py (Formatter::__init__): Collect
section names as identifiers.
* src/tools/docmaker/tohtml.py (section_title_header): Split into...
(section_title_header1, section_title_header2): ... these two
strings.
(HtmlFormatter::make_block_url, make_html_word, html_source_quote):
Handle sections.
(HtmlFormatter::section_enter): Updated to add `id' HTML attribute.
2015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
[cmake] Add script to test the config module.
* builds/cmake/testbuild.sh: New file.
2015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
* CMakeLists.txt: Create `freetype-config.cmake' config module.
2015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
* CMakeLists.txt: Set CMAKE_DEBUG_POSTFIX to `d'.
2015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
[cmake] Add better control of library dependencies.
* CMakeLists.txt: Add `WITH_*' variables to force/auto/omit
ZLIB/BZip2/PNG/HarfBuzz.
2015-11-27 Tamas Kenez <tamas.kenez@adasworks.com>
[cmake] Make `FindHarfBuzz' observe the REQUIRED option.
* builds/cmake/FindHarfBuzz.cmake: Implement it.
2015-11-27 Werner Lemberg <wl@gnu.org>
[cmake] Collect files specific to cmake in `builds/cmake'.
* builds/FindHarfBuzz.cmake: Move to ...
* builds/cmake/FindHarfBuzz.cmake: ... this place.
* CMakeLists.txt (CMAKE_MODULE_PATH): Updated.
2015-11-27 Alexander Bock <alexander.j.bock@nasa.gov>
CMakeLists.txt: Honour new command line flag `FREETYPE_NO_DIST'.
2015-11-26 Werner Lemberg <wl@gnu.org>
[docmaker] Allow `foo[bar]' as identifier.
We need this to handle equally named properties in different
modules.
* src/tools/docmaker/content.py (re_identifier),
src/tools/docmaker/sources.py (re_crossref): Allow `foo[bar]'.
* src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word,
HtmlFormatter::index_exit, HtmlFormatter::section_enter,
HtmlFormatter::block_enter): Handle `foo[bar]'.
2015-11-25 Werner Lemberg <wl@gnu.org>
* src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46480).
(_bdf_parse_glyphs): Always reset `p->glyph_name' after moving its
contents.
2015-11-21 Werner Lemberg <wl@gnu.org>
* include/freetype/internal/ftcalc.h: Don't use `register' keyword.
This fixes compiler warnings.
Reported by Behdad.
2015-11-20 Werner Lemberg <wl@gnu.org>
Add `FT_LCD_FILTER_LEGACY1' enum value.
This does the same as `FT_LCD_FILTER_LEGACY'.
See
https://bugs.freedesktop.org/show_bug.cgi?id=92981
for the reasoning.
* include/freetype/ftlcdfil.h (FT_LcdFilter): New value
`FT_LCD_FILTER_LEGACY1'.
* src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Use it.
2015-11-15 Werner Lemberg <wl@gnu.org>
* src/autofit/afhints.c (af_get_segment_index): Fix it.
The old code was too simple, returning invalid values in most cases
where a segment crosses the contour start.
2015-11-15 Werner Lemberg <wl@gnu.org>
* src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46439).
2015-11-11 Werner Lemberg <wl@gnu.org>
[cff, autofit] Switch off stem darkening by default.
* src/autofit/afmodule.c (af_autofitter_init), src/cff/cffobjs.c
(cff_driver_init): Do it.
2015-11-10 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
Allow native CFF hinter in FT_RENDER_MODE_LIGHT.
Both the native CFF hinter and the auto-hinter now have a very
similar rendering style.
* include/freetype/freetype.h: Mention that FT_LOAD_TARGET_LIGHT no
longer implies FT_LOAD_FORCE_AUTOHINT.
* include/freetype/ftmodapi.h (FT_MODULE_DRIVER_HINTS_LIGHTLY): New
macro.
* include/freetype/internal/ftobjs.h (FT_DRIVER_HINTS_LIGHTLY): New
macro.
* src/cff/cffdrivr.c (cff_driver_class): Use it.
* src/base/ftobjs.c (FT_Load_Glyph): Update auto-hinter selection
logic.
2015-11-09 Werner Lemberg <wl@gnu.org>
* src/cid/cidload.c (cid_face_open): Fix GDBytes guard (#46408).
2015-11-09 Werner Lemberg <wl@gnu.org>
[truetype] Remove integer to pointer conversion compiler warning.
Problem reported by Alexei.
* src/truetype/ttgload.c (load_truetype_glyph): Use a solution found
in the glib library to fix the issue.
2015-11-08 Behdad Esfahbod <behdad@behdad.org>
[sfnt] Accept version 3 of `EBLC' and `CBLC' tables also.
* src/sfnt/ttsbit.c (tt_face_load_sbit): Implement it.
2015-11-08 Philipp Knechtges <philipp-dev@knechtges.com>
[autofit] Don't distort (latin) glyphs too much (#46195).
* src/autofit/aflatin.h (AF_LatinBlueRec): Add `ascender' and
`descender' fields.
* src/autofit/aflatin.c (af_latin_metrics_init_blues): Collect
ascender and descender data for blue zones.
(af_latin_metrics_scale_dim): Reject vertical scaling values that
change the result by more than two pixels.
2015-11-05 Werner Lemberg <wl@gnu.org>
[sfnt] Ignore embedded bitmaps with zero size (#46379).
* src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Implement
it.
2015-11-04 Werner Lemberg <wl@gnu.org>
[truetype] Catch infinite recursion in subglyphs (#46372).
* include/freetype/internal/tttypes.h (TT_LoaderRec): New field
`composites'.
* src/truetype/ttgload.c: Include FT_LIST_H.
(load_truetype_glyph): Add composite subglyph index to a list;
abort if index is already in list.
(tt_loader_init): Updated.
(tt_loader_done): New function.
(TT_Load_Glyph): Call `tt_loader_done'.
2015-11-04 Werner Lemberg <wl@gnu.org>
[truetype] Better tracing of composite glyphs.
* src/truetype/ttgload.c (TT_Load_Composite_Glyph,
load_truetype_glyph): Implement it.
2015-11-03 Werner Lemberg <wl@gnu.org>
[sfnt] Protect against zero-size bitmaps (#46345).
* src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Check
`glyph_size'.
2015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
* src/autofit/afloader.c (af_loader_load_g): Implement emboldening.
2015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
[autofit] Implement darkening computation function.
This is a crude adaption of the original `cf2_computeDarkening'
function.
* src/autofit/afloader.c (af_intToFixed, af_fixedToInt,
af_floatToFixed): New macros, taken from `cf2fixed.h'.
(af_loader_compute_darkening): New function.
* src/autofit/afloader.h: Updated.
2015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
[autofit] Add functions to get standard widths for writing systems.
We need the computed standard horizontal and vertical widths for the
emboldening calculation. This method provides a convenient way to
extract it from writing-system-specific metrics structures, which
all script definitions must implement.
* src/autofit/aftypes.h (AF_WritingSystem_GetStdWidthsFunc): New
function type.
(AF_WritingSystemClassRec): New member `style_metrics_getstdw'.
(AF_DEFINE_WRITING_SYSTEM_CLASS): Updated.
* src/autofit/afcjk.c (af_cjk_get_standard_width): New function.
(af_cjk_writing_system_class): Updated.
* src/autofit/afdummy.c (af_dummy_writing_system_class): Updated.
* src/autofit/afindic.c (af_cjk_get_standard_width): New function.
(af_indic_writing_system_class): Updated.
* src/autofit/aflatin.c (af_latin_get_standard_width): New function.
(af_indic_writing_system_class): Updated.
* src/autofit/aflatin.c (af_latin_get_standard_width): New function.
(af_indic_writing_system_class): Updated.
2015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
[autofit] Extend `AF_FaceGlobalsRec' to hold emboldening data.
* src/autofit/afglobal.h (AF_FaceGlobalsRec): Add fields.
* src/autofit/afglobal.c (af_face_globals_new): Initialize new
fields.
(af_face_globals_free): Reset new fields.
2015-11-02 Nikolaus Waxweiler <madigens@gmail.com>
[autofit] Add stem-darkening properties.
Actual code follows in a later commit.
* include/freetype/ftautoh.h: Document `no-stem-darkening' and
`darkening-parameters'.
* src/autofit/afmodule.h: New fields `no_stem_darkening' and
`darken_params'.
* src/autofit/afmodule.c (af_property_set, af_property_get):
Handle them.
(af_autofitter_init): Initialize them.
2015-11-02 Ben Wagner <bungeman@gmail.com>
[ftfuzzer] Add support for multiple files (patch #8779).
Currently, libFuzzer only supports mutation of a single file. We
circumvent this problem by using an uncompressed tar archive as
multiple-file input for the fuzzer.
This patch enables tests of `FT_Attach_Stream' and AFM/PFM parsing;
a constructed tarball should contain a font file as the first
element, and files to be attached as further elements.
* src/tools/ftfuzzer/ftfuzzer.cc: Include libarchive headers.
(archive_read_entry_data, parse_data): New functions.
(LLVMFuzzerTestOneInput): Updated.
* src/tools/ftfuzzer/ftmutator.cc: New file, providing a custom
mutator for libFuzzer that can mutate tarballs in a sensible way.
2015-10-31 Werner Lemberg <wl@gnu.org>
[sfnt] Fix cmap 14 validation (#46346).
* src/sfnt/ttcmap.c (tt_cmap14_validate): Check limit before
accessing `numRanges' and `numMappings'.
Fix size check for non-default UVS table.
2015-10-31 Werner Lemberg <wl@gnu.org>
[sfnt] Handle infinite recursion in bitmap strikes (#46344).
* src/sfnt/ttsbit.c (TT_SBitDecoder_LoadFunc,
tt_sbit_decoder_load_bitmap, tt_sbit_decoder_load_byte_aligned,
tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_png): Add
argument for recursion depth.
(tt_sbit_decoder_load_compound): Add argument for recursion depth.
Increase recursion counter for recursive call.
(tt_sbit_decoder_load_image): Add argument for recursion depth.
Check recurse depth.
(tt_face_load_sbit_image): Updated.
2015-10-29 Werner Lemberg <wl@gnu.org>
* src/autofit/afhints.c (af_glyph_hints_dump_points): Minor.
2015-10-29 Werner Lemberg <wl@gnu.org>
* CMakeLists.txt: Remove code to set MSVC's /FD compiler switch.
Problem reported by David Capello <davidcapello@gmail.com>; see
https://lists.nongnu.org/archive/html/freetype-devel/2015-10/msg00108.html
for details.
2015-10-27 Werner Lemberg <wl@gnu.org>
[pfr] Add some safety guards (#46302).
* src/pfr/pfrload.h (PFR_CHECK): Rename to...
(PFR_CHECK_SIZE): ... this.
(PFR_SIZE): [!PFR_CONFIG_NO_CHECKS]: Define to PFR_CHECK_SIZE.
* src/pfr/pfrload.c (pfr_log_font_count): Check `count'.
(pfr_extra_item_load_kerning_pairs): Remove tracing message.
(pfr_phy_font_load): Use PFR_CHECK_SIZE where appropriate.
Allocate `chars' after doing a size checks.
* src/pfr/pfrsbit.c (pfr_load_bitmap_bits): Move test for invalid
bitmap format to...
(pfr_slot_load_bitmap): ... this function.
Check bitmap size.
2015-10-26 Werner Lemberg <wl@gnu.org>
[truetype] Fix sanitizing logic for `loca' (#46223).
* src/truetype/ttpload.c (tt_face_load_loca): A thinko caused an
incorrect adjustment of the number of glyphs, most often using far
too large values.
2015-10-25 Werner Lemberg <wl@gnu.org>
[autofit] Improve tracing.
* src/autofit/afhints.c (af_print_idx, af_get_segment_index,
af_get_edge_index): New functions.
(af_glyph_hints_dump_points): Remove unnecessary `|', `[', and `]'.
Add segment and edge index for each point.
Slightly change printing order of some elements.
Don't print `-1' but `--' for missing elements.
(af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Remove
unnecessary `|', `[', and `]'.
Don't print `-1' but `--' for missing elements.
2015-10-24 Werner Lemberg <wl@gnu.org>
[sfnt] Sanitize bitmap strike glyph height.
Problem reported by Nikolay Sivov <bunglehead@gmail.com>.
* src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Avoid zero value
for `metrics->height' by applying some heuristics.
2015-10-22 Werner Lemberg <wl@gnu.org>
[sfnt, type42] Fix clang compiler warnings.
* src/sfnt/sfobjs.c (sfnt_init_face): Initialize `offset'.
* src/type42/t42parse.c (t42_parse_sfnts): Use proper cast.
2015-10-22 Dave Arnold <darnold@adobe.com>
Werner Lemberg <wl@gnu.org>
[cff] Avoid overflow/module arithmetic.
This modifies the addition of subroutine number to subroutine bias
from unsigned to signed, but does not change any results.
* src/cff/cf2ft.c (cf2_initGlobalRegionBuffer,
cf2_initLocalRegionBuffer): Change variable names from (unsigned)
`idx' to (signed) `subrNum', since it is not an index until after
the bias is added.
* src/cff/cf2ft.h: Updated.
* src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLSUBR>:
Updated similarly.
2015-10-22 Werner Lemberg <wl@gnu.org>
[cid] Better check of `SubrCount' dictionary entry (#46272).
* src/cid/cidload.c (cid_face_open): Add more sanity tests for
`fd_bytes', `gd_bytes', `sd_bytes', and `num_subrs'.
2015-10-21 Werner Lemberg <wl@gnu.org>
[base] Pacify compiler (#46266).
* src/base/ftoutln.c (FT_Outline_EmboldenXY): Initialize `in' and
`anchor'.
2015-10-21 Werner Lemberg <wl@gnu.org>
[type42] Fix heap buffer overflow (#46269).
* src/type42/t42parse.c (t42_parse_sfnts): Fix off-by-one error in
bounds checking.
2015-10-21 Dave Arnold <darnold@adobe.com>
[cff] Fix limit in assert for max hints.
* src/cff/cf2interp.c (cf2_hintmask_setAll): Allow mask equal to the
limit (96 bits).
2015-10-21 Dave Arnold <darnold@adobe.com>
[cff] Remove an assert (#46107).
* src/cff/cf2hints.c (cf2_hintmap_insertHint): Ignore paired edges
in wrong order.
2015-10-21 Werner Lemberg <wl@gnu.org>
[sfnt] Avoid unnecessarily large allocation for WOFFs (#46257).
* src/sfnt/sfobjs.c (woff_open_font): Use WOFF's `totalSfntSize'
only after thorough checks.
Add tracing messages.
2015-10-21 Werner Lemberg <wl@gnu.org>
[type42] Better check invalid `sfnts' array data (#46255).
* src/type42/t42parse.c (t42_parse_sfnts): Table lengths must be
checked individually against available data size.
2015-10-20 Werner Lemberg <wl@gnu.org>
[cid] Add a bunch of safety checks.
* src/cid/cidload.c (parse_fd_array): Check `num_dicts' against
stream size.
(cid_read_subrs): Check largest offset against stream size.
(cid_parse_dict): Move safety check to ...
(cid_face_open): ... this function.
Also test length of binary data and values of `SDBytes',
`SubrMapOffset', `SubrCount', `CIDMapOffset', and `CIDCount'.
2015-10-20 Werner Lemberg <wl@gnu.org>
[cid] Avoid segfault with malformed input (#46250).
* src/cid/cidload.c (cid_read_subrs): Return a proper error code for
unsorted offsets.
2015-10-20 StudioEtrange <nomorgan@gmail.com>
* CMakeLists.txt: Enable shared library builds on MinGW (#46233).
2015-10-20 Werner Lemberg <wl@gnu.org>
* src/type1/t1afm.c (T1_Read_Metrics): Fix memory leak (#46229).
2015-10-19 Ben Wagner <bungeman@gmail.com>
[cid] Better handle invalid glyph stream offsets (#46221).
* src/cid/cidgload.c (cid_load_glyph): Check minimum size of glyph
length.
2015-10-18 Werner Lemberg <wl@gnu.org>
[psaux] Fix tracing of negative numbers.
Due to incorrect casting negative numbers were shown as very large
(positive) integers on 64bit systems.
* src/psaux/t1decode.c (t1_decoder_parse_charstrings) <op_none>:
Use division instead of shift.
2015-10-18 Werner Lemberg <wl@gnu.org>
[truetype] Improve TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46223).
* devel/ftoption.h, include/freetype/config/ftoption.h: Surround it
with #ifndef ... #endif, as suggested in the tracker issue.
2015-10-18 Werner Lemberg <wl@gnu.org>
[truetype] Better protection against malformed `fpgm' (#46223).
* src/truetype/ttobjs.c (tt_size_init_bytecode): Don't execute a
malformed `fpgm' table more than once.
2015-10-17 Werner Lemberg <wl@gnu.org>
* src/cid/cidgload.c (cid_load_glyph): Fix memory leak.
Reported by Kostya Serebryany <kcc@google.com>.
2015-10-17 Werner Lemberg <wl@gnu.org>
[bdf] Prevent memory leak (#46217).
* src/bdf/bdflib.c (_bdf_parse_glyphs) <STARTCHAR>: Check
_BDF_GLYPH_BITS.
2015-10-17 Werner Lemberg <wl@gnu.org>
[bdf] Use stream size to adjust number of glyphs.
* src/bdf/bdflib.c (ACMSG17): New message macro.
(_bdf_parse_t): Add member `size'.
(bdf_load_font): Set `size'.
(_bdf_parse_glyphs): Adjust `cnt' if necessary.
2015-10-17 Werner Lemberg <wl@gnu.org>
* src/cid/cidload.c (cid_parse_dict): Check `[FG]DBytes' size.
2015-10-17 Werner Lemberg <wl@gnu.org>
* src/cid/cidgload.c (cid_glyph_load): Check file offsets (#46222).
2015-10-17 Werner Lemberg <wl@gnu.org>
[psaux] Fix heap buffer overflow (#46221).
* src/psaux/t1decode.c (t1_decoder_parse_charstring) <operator 12>:
Fix limit check.
2015-10-17 Werner Lemberg <wl@gnu.org>
* src/cid/cidload.c (cid_parse_dict): Handle invalid input (#46220).
2015-10-15 Kostya Serebryany <kcc@google.com>
[ftfuzzer] Add README.
* src/tools/ftfuzzer/README: New file.
2015-10-15 Ben Wagner <bungeman@gmail.com>
[bdf] Fix memory leak (#46213).
* src/bdf/bdflib.c (bdf_load_font): Always go to label `Fail' in
case of error.
2015-10-15 Werner Lemberg <wl@gnu.org>
[truetype] Add TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46208).
* devel/ftoption.h, include/freetype/config/ftoption.h
(TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES): New configuration macro.
* src/truetype/ttinterp.c (MAX_RUNNABLE_OPCODES): Removed.
(TT_RunIns): Updated.
2015-10-15 Werner Lemberg <wl@gnu.org>
* src/truetype/ttinterp.c (TT_RunIns): Fix bytecode stack tracing.
The used indices were off by 1.
2015-10-15 Ben Wagner <bungeman@gmail.com>
Werner Lemberg <wl@gnu.org>
* src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211).
2015-10-15 Werner Lemberg <wl@gnu.org>
[base] Compute MD5 checksums only if explicitly requested.
This improves profiling accuracy.
* src/base/ftobjs.c (FT_Render_Glyph_Internal): Implement it.
2015-10-14 Werner Lemberg <wl@gnu.org>
[base] Use `FT_' namespace for MD5 functions (#42366).
* src/base/ftobjs.c (MD5_*): Define as `FT_MD5_*'.
Undefine HAVE_OPENSSL.
2015-10-13 Werner Lemberg <wl@gnu.org>
[type1] Correctly handle missing MM axis names (#46202).
* src/type1/t1load.c (T1_Get_MM_Var): Implement it.
2015-10-13 Werner Lemberg <wl@gnu.org>
[pcf] Quickly exit if font index < 0.
Similar to other font formats, this commit makes the parser no
longer check the whole PCF file but only the header and the TOC if
we just want to get the number of available faces (and a proper
recognition of the font format).
* src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
Exit quickly if face_index < 0.
* src/pcfread.c (pcf_load_font): Add `face_index' argument.
Exit quickly if face_index < 0.
* src/pcf/pcf.h: Updated.
2015-10-13 Werner Lemberg <wl@gnu.org>
[ftfuzzer] Handle TTCs and MM/GX variations.
This patch also contains various other improvements.
* src/tools/ftfuzzer/ftfuzzer.cc: Add preprocessor guard to reject
pre-C++11 compilers.
(FT_Global): New class. Use it to provide a global constructor and
destructor for the `FT_Library' object.
(setIntermediateAxis): New function to select an (arbitrary)
instance.
(LLVMFuzzerTestOneInput): Loop over all faces and named instances.
Also call `FT_Set_Char_Size'.
2015-10-13 Werner Lemberg <wl@gnu.org>
[truetype] Refine some GX sanity tests.
Use the `gvar' table size instead of the remaining bytes in the
stream.
* src/truetype/ttgxvar.h (GX_BlendRec): New field `gvar_size'.
* src/truetype/ttgxvar.c (ft_var_load_gvar): Set `gvar_size'.
(ft_var_readpackedpoints, ft_var_readpackeddeltas: New argument
`size'.
(tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Updated.
2015-10-13 Werner Lemberg <wl@gnu.org>
[truetype] Another GX sanity test.
* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Check
`tupleCount'.
Add tracing message.
2015-10-13 Werner Lemberg <wl@gnu.org>
[truetype] Fix memory leak for broken GX fonts (#46188).
* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix scope of
deallocation.
2015-10-13 Werner Lemberg <wl@gnu.org>
[truetype] Fix commit from 2015-10-10.
* src/truetype/ttgxvar.c (ft_var_load_gvar): Add missing error
handling body to condition.
2015-10-12 Werner Lemberg <wl@gnu.org>
[unix] Make MKDIR_P actually work.
* builds/unix/configure.raw: Fix underquoting of `INSTALL' and
`MKDIR_P'.
Problem reported by Dan Liddell <lddll@yahoo.com>.
2015-10-11 Werner Lemberg <wl@gnu.org>
[sfnt] Improve extraction of number of named instances.
* src/sfnt/sfobjs.c (sfnt_init_face)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check number of instances against
`fvar' table size.
2015-10-10 Alexei Podtelezhnikov <apodtele@gmail.com>
* src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix overflow
(#46149).
2015-10-10 Werner Lemberg <wl@gnu.org>
[sfnt] Fix infinite loops with broken cmaps (#46167).
* src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next): Take care
of border conditions (i.e., if the loops exit naturally).
2015-10-10 Werner Lemberg <wl@gnu.org>
[truetype] More sanity tests for GX handling.
These tests should mainly help avoid unnecessarily large memory
allocations in case of malformed fonts.
* src/truetype/ttgxvar.c (ft_var_readpackedpoints,
ft_var_readpackeddeltas): Check number of points against stream
size.
(ft_var_load_avar): Check `pairCount' against table length.
(ft_var_load_gvar): Check `globalCoordCount' and `glyphCount'
against table length.
(tt_face_vary_cvt): Check `tupleCount' and `offsetToData'.
Fix trace.
(TT_Vary_Apply_Glyph_Deltas): Fix trace.
Free `sharedpoints' to avoid memory leak.
2015-10-10 Werner Lemberg <wl@gnu.org>
[truetype] Better protection against malformed GX data (#46166).
* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Correctly
handle empty `localpoints' array.
2015-10-10 Werner Lemberg <wl@gnu.org>
* src/pcf/pcfread.c (pcf_read_TOC): Check stream size (#46162).
2015-10-09 Werner Lemberg <wl@gnu.org>
* src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use real stream size.
2015-10-08 Werner Lemberg <wl@gnu.org>
[pcf] Protect against invalid number of TOC entries (#46159).
* src/pcf/pcfread.c (pcf_read_TOC): Check number of TOC entries
against size of data stream.
2015-10-08 Werner Lemberg <wl@gnu.org>
[type42] Protect against invalid number of glyphs (#46159).
* src/type42/t42parse.c (t42_parse_charstrings): Check number of
`CharStrings' dictionary entries against size of data stream.
2015-10-08 Werner Lemberg <wl@gnu.org>
[sfnt] Fix some signed overflows (#46149).
* src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
<TT_SBIT_TABLE_TYPE_SBIX>: Use `FT_MulDiv'.
2015-10-08 Werner Lemberg <wl@gnu.org>
[type1] Protect against invalid number of subroutines (#46150).
* src/type1/t1load.c (parse_subrs): Check number of
`Subrs' dictionary entries against size of data stream.
2015-10-07 Kostya Serebryany <kcc@google.com>
[ftfuzzer] Add support for LLVM's LibFuzzer.
* src/tools/ftfuzzer/ftfuzzer.cc, src/tools/runinput.cc: New files.
2015-10-06 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Faster alternative line renderer.
This implementation renders the entire line segment at once without
subdividing it into scanlines. The main speed improvement comes from
reducing the number of divisions to just two per line segment, which
is a bare minimum to calculate cell coverage in a smooth rasterizer.
Notably, the progression from cell to cell does not itself require any
divisions at all. The speed improvement is more noticeable at larger
sizes.
* src/smooth/ftgrays.c (gray_render_line): New implementation.
2015-10-06 Werner Lemberg <wl@gnu.org>
[cff] Return correct PS names from pure CFF (#46130).
* src/cff/cffdrivr.c (cff_get_ps_name): Use SFNT service only for
SFNT.
2015-10-04 Werner Lemberg <wl@gnu.org>
[base] Replace left shifts with multiplication (#46118).
* src/base/ftglyph.c (ft_bitmap_glyph_bbox, FT_Get_Glyph): Do it.
2015-10-04 Werner Lemberg <wl@gnu.org>
* Version 2.6.1 released.
=========================
Tag sources with `VER-2-6-1'.
* docs/VERSION.DLL: Update documentation and bump version number to
2.6.1.
* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
builds/windows/vc2005/index.html,
builds/windows/vc2008/freetype.vcproj,
builds/windows/vc2008/index.html,
builds/windows/vc2010/freetype.vcxproj,
builds/windows/vc2010/index.html,
builds/windows/visualc/freetype.dsp,
builds/windows/visualc/freetype.vcproj,
builds/windows/visualc/index.html,
builds/windows/visualce/freetype.dsp,
builds/windows/visualce/freetype.vcproj,
builds/windows/visualce/index.html,
builds/wince/vc2005-ce/freetype.vcproj,
builds/wince/vc2005-ce/index.html,
builds/wince/vc2008-ce/freetype.vcproj,
builds/wince/vc2008-ce/index.html: s/2.6/2.6.1/, s/26/261/.
* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
* builds/unix/configure.raw (version_info): Set to 18:1:12.
* CMakeLists.txt (VERSION_PATCH): Set to 1.
* src/autofit/afmodule.c [AF_DEBUG_AUTOFIT]: Ensure C linking for
dumping functions.
2015-10-04 Werner Lemberg <wl@gnu.org>
[bzip2, gzip] Avoid access of uninitialized memory (#46109).
* src/bzip2/ftbzip2.c (ft_bzip2_file_fill_input), src/gzip/ftgzip.c
(ft_gzip_file_fill_input): In case of an error, adjust the limit to
avoid copying uninitialized memory.
2015-10-03 Werner Lemberg <wl@gnu.org>
[bzip2, gzip] Avoid access of uninitialized memory (#46109).
* src/bzip2/ftbzip2.c (ft_bzip2_file_fill_output), src/gzip/ftgzip.c
(ft_gzip_file_fill_output): In case of an error, adjust the limit to
avoid copying uninitialized memory.
2015-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Clean up worker.
* src/smooth/ftgrays.c (gray_TWorker): Remove never used fields.
2015-10-01 Werner Lemberg <wl@gnu.org>
[sfnt] Make `tt_cmap4_char_map_linear' more robust (#46078).
* src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Take care of
border conditions (i.e., if the loop exits naturally).
2015-10-01 Werner Lemberg <wl@gnu.org>
* src/autofit/afranges.c (af_deva_nonbase_uniranges): Fix ranges.
They should be a subset of `af_deva_uniranges'.
2015-10-01 Werner Lemberg <wl@gnu.org>
[sfnt] Make `tt_cmap4_char_map_linear' faster (#46078).
* src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Use inner loop to
reject too large glyph indices.
2015-09-30 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Clean up worker.
* src/smooth/ftgrays.c (gray_TWorker): Remove lightly used `last_ey'.
(gray_start_cell, gray_render_line): Update.
2015-09-30 Werner Lemberg <wl@gnu.org>
[autofit] Replace `no-base' with `non-base'.
* src/autofit/*: Do it.
2015-09-30 Werner Lemberg <wl@gnu.org>
[sfnt] Rewrite `tt_cmap4_char_map_linear' (#46078).
* src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Add code to better
skip invalid segments.
If searching the next character, provide a more efficient logic to
speed up the code.
2015-09-30 Werner Lemberg <wl@gnu.org>
[truetype] Adjust number of glyphs for malformed `loca' tables.
* src/truetype/ttpload.c (tt_face_load_loca): Implement it.
2015-09-29 Werner Lemberg <wl@gnu.org>
[pshinter] Avoid harmless overflow (#45984).
* src/pshinter/pshglob.c (psh_blues_set_zones): Fix it.
2015-09-28 Werner Lemberg <wl@gnu.org>
[autofit] Add support for Lao script.
Thanks to Danh Hong <danhhong@gmail.com> for guidance with blue zone
characters!
* src/autofit/afblue.dat: Add blue zone data for Lao.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afscript.h: Add Lao standard characters.
* src/autofit/afranges.c: Add Lao data.
* src/autofit/afstyles.h: Add Lao data.
2015-09-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
[base] Fix a leak by broken sfnt-PS or resource fork (#46028).
open_face_from_buffer() frees passed buffer if valid font
is not found. But if copying to the buffer is failed,
the allocated buffer should be freed within the caller.
* src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Free
the buffer `sfnt_ps' if an error caused before calling
open_face_from_buffer().
(Mac_Read_sfnt_Resource): Free the buffer `sfnt_data' if
an error caused before calling open_face_from_buffer();
2015-09-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
[mac] Fix buffer size calculation for LWFN font.
* src/base/ftmac.c (read_lwfn): Cast post_size to FT_ULong
to prevent confused copy by too large chunk size.
2015-09-26 Alexei Podtelezhnikov <apodtele@gmail.com>
* src/smooth/ftgrays.c (PIXEL_MASK): Remove unused macro.
2015-09-26 Werner Lemberg <wl@gnu.org>
[autofit] Minor tracing improvement.
* src/autofit/aflatin.c (af_latin_metrics_scale_dim): Don't emit
blue zones header line if there are no blue zones.
2015-09-26 Werner Lemberg <wl@gnu.org>
[bzip2, gzip, lzw] Harmonize function signatures with prototype.
Suggested by Hin-Tak Leung.
* src/bzip2/ftbzip2.c (ft_bzip2_stream_io), src/gzip/ftgzip.c
(ft_gzip_stream_io), src/lzw/ftlzw.c (ft_lzw_stream_io): Do it.
2015-09-26 Hin-Tak Leung <htl10@users.sourceforge.net>
Add new FT_LOAD_COMPUTE_METRICS load flag.
* include/freetype/freetype.h (FT_LOAD_COMPUTE_METRICS): New macro.
* src/truetype/ttgload.c (compute_glyph_metrics): Usage.
2015-09-26 Werner Lemberg <wl@gnu.org>
* src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add cast.
2015-09-25 Werner Lemberg <wl@gnu.org>
[type1] Protect against invalid number of glyphs (#46029).
* src/type1/t1load.c (parse_charstrings): Check number of
`CharStrings' dictionary entries against size of data stream.
2015-09-23 Werner Lemberg <wl@gnu.org>
[sfnt] Better checks for invalid cmaps (2/2) (#46019).
While the current code in `FT_Get_Next_Char' correctly rejects
out-of-bounds glyph indices, it can be extremely slow for malformed
cmaps that use 32bit values. This commit tries to improve that.
* src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next,
tt_cmap12_char_map_binary, tt_cmap13_next,
tt_cmap13_char_map_binary): Reject glyph indices larger than or
equal to the number of glyphs.
2015-09-23 Werner Lemberg <wl@gnu.org>
[base, sfnt] Better checks for invalid cmaps (1/2).
* src/base/ftobjs.c (FT_Get_Char_Index): Don't return out-of-bounds
glyph indices.
(FT_Get_First_Char): Updated.
* src/sfnt/ttcmap.c (tt_cmap6_char_next): Don't return character
codes greater than 0xFFFF.
(tt_cmap8_char_index): Avoid integer overflow in computation of
glyph index.
(tt_cmap8_char_next): Avoid integer overflows in computation of
both next character code and glyph index.
(tt_cmap10_char_index): Fix unsigned integer logic.
(tt_cmap10_char_next): Avoid integer overflow in computation of
next character code.
(tt_cmap12_next): Avoid integer overflows in computation of both
next character code and glyph index.
(tt_cmap12_char_map_binary): Ditto.
(tt_cmap12_char_next): Simplify.
(tt_cmap13_char_map_binary): Avoid integer overflow in computation
of next character code.
(tt_cmap13_char_next): Simplify.
2015-09-21 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
[base] Check too long POST and sfnt resource (#45919).
* src/base/ftbase.h (FT_MAC_RFORK_MAX_LEN): Maximum length of the
resource fork for Mac OS. Resource forks larger than 16 MB can be
written but can't be handled correctly, at least in Carbon routine.
See https://support.microsoft.com/en-us/kb/130437.
* src/base/ftobjs.c (Mac_Read_POST_Resource): No need to use `0x'
prefix for `%p' formatter.
* src/base/ftbase.c (Mac_Read_POST_Resource): Check the fragment and
total size of the concatenated POST resource before buffer
allocation.
(Mac_Read_sfnt_Resource): Check the declared size of sfnt resource
before buffer allocation.
* src/base/ftmac.c (read_lwfn, FT_New_Face_From_SFNT): Check the
total resource size before buffer allocation.
2015-09-19 Werner Lemberg <wl@gnu.org>
[sfnt] Improve handling of invalid SFNT table entries (#45987).
This patch fixes weaknesses in function `tt_face_load_font_dir'.
- It incorrectly assumed that valid tables are always at the
beginning. As a consequence, some valid tables after invalid
entries (which are ignored) were never seen.
- Duplicate table entries (this is, having the same tag) were not
rejected.
- The number of valid tables was sometimes too large, leading to
access of invalid tables.
* src/sfnt/ttload.c (check_table_dir): Add argument to return number
of valid tables.
Add another tracing message.
(tt_face_load_font_dir): Only allocate table array for valid
entries as returned by `check_table_dir'.
Reject duplicate tables and adjust number of valid tables
accordingly.
2015-09-19 Werner Lemberg <wl@gnu.org>
[pcf] Improve `FT_ABS' fix from 2015-09-17 (#45999).
* src/pcf/pcfread.c (pcf_load_font): Do first the cast to FT_Short,
then take the absolute value.
Also apply FT_ABS to `height'.
2015-09-17 Werner Lemberg <wl@gnu.org>
[type42] Fix memory leak (#45989).
* src/type42/t42parse.c (t42_parse_charstrings): Allow only a single
`CharStrings' array.
2015-09-17 Werner Lemberg <wl@gnu.org>
[psaux] Fix memory leak (#45986).
* src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
Free `temp' in case of error.
2015-09-17 Werner Lemberg <wl@gnu.org>
[psaux] Improve tracing message.
* src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
Handle plural correctly.
2015-09-17 Werner Lemberg <wl@gnu.org>
[pcf] Fix integer overflows (#45985).
* src/pcf/pcfread.c (pcf_load_font): Use FT_MulDiv.
2015-09-17 Werner Lemberg <wl@gnu.org>
[pcf] Use FT_ABS for some property values (#45893).
* src/pcf/pcfread.c (pcf_load_font): Take absolute values for
AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and
RESOLUTION_Y. In tracing mode, add warnings.
2015-09-16 Werner Lemberg <wl@gnu.org>
Minor fixes for some clang warnings.
* src/base/ftoutln.c (FT_Outline_EmboldenXY): Cast, possible missing
initialization.
* src/truetype/ttgload.c (TT_Process_Composite_Component): Cast.
2015-09-15 Werner Lemberg <wl@gnu.org>
[type1, type42] Fix memory leaks (#45966).
* src/type1/t1load.c (parse_blend_axis_types): Handle multiple axis
names.
(parse_blend_design_map): Allow only a single design map.
(parse_encoding): Handle multiple encoding vectors.
* src/type42/t42parse.c (t42_parse_encoding): Handle multiple
encoding vectors.
2015-09-15 Werner Lemberg <wl@gnu.org>
[truetype] Fix integer type (#45965).
* src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Implement it.
2015-09-15 Werner Lemberg <wl@gnu.org>
* src/pcf/pcfread.c (pcf_load_font): Fix integer overflow (#45964).
2015-09-15 Werner Lemberg <wl@gnu.org>
[type1, type42] Check encoding array size (#45961).
* src/type1/t1load.c (parse_encoding), src/type42/t42parse.c
(t42_parse_encoding): Do it.
2015-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
* src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Improve.
2015-09-14 Werner Lemberg <wl@gnu.org>
[type1] Fix another potential buffer overflow (#45955).
* src/type1/t1parse (T1_Get_Private_Dict): Assure that check for
`eexec' doesn't exceed `limit'.
2015-09-13 Werner Lemberg <wl@gnu.org>
Replace `mkinstalldirs' with AC_PROG_MKDIR_P.
* builds/unix/mkinstalldirs: Removed, no longer needed.
* builds/unix/configure.raw: Call `AC_PROG_MKDIR_P'.
Update pwd call for `$INSTALL'.
* builds/unix/unix-def.in (MKINSTALLDIRS): Use `@MKDIR_P@'.
* autogen.sh: Updated.
2015-09-13 Werner Lemberg <wl@gnu.org>
[winfonts] Check alignment shift count for resource data (#45938).
* src/winfonts/winfnt.c (fnt_face_get_dll_font): Implement it.
2015-09-13 Werner Lemberg <wl@gnu.org>
[type1] Fix potential buffer overflow (#45923).
* src/type1/t1parse.c (T1_Get_Private_Dict): Assure `cur' doesn't
point to end of file buffer.
2015-09-13 Werner Lemberg <wl@gnu.org>
[gzip] Fix access of small compressed files (#45937).
* src/gzip/ftgzip.c (ft_gzip_stream_close): Avoid memory leak.
(ft_gzip_get_uncompressed_file): Correct byte order while reading
unsigned long value. Without this change, the whole optimization of
accessing small files in `FT_Stream_OpenGzip' is never executed! As
a consequence, access to PCF files in general (which are normally
small files) should be much improved now as originally intended.
2015-09-11 Werner Lemberg <wl@gnu.org>
[psaux] Fix potential buffer overflow (#45922).
* src/psaux/psobjs.c (ps_parser_skip_PS_token): If a token is
enclosed in balanced expressions, ensure that the cursor position
doesn't get larger than the current limit.
2015-09-11 Werner Lemberg <wl@gnu.org>
[base] Avoid crash while tracing `load_mac_face'.
Reported in Savannah bug #45919.
* src/base/ftobjs.c (load_mac_face): Honour FT_OPEN_MEMORY while
tracing.
2015-09-11 Werner Lemberg <wl@gnu.org>
[type42] Fix endless loop (#45920).
* src/type42/t42parse.c (t42_parse_encoding): Synchronize with
type1's `parse_encoding'.
2015-09-10 Werner Lemberg <wl@gnu.org>
[docmaker] Allow `-' in bold and italic markup.
* src/tools/docmaker/sources.py (re_italic, re_bold): Adjust
accordingly.
2015-09-09 Alexei Podtelezhnikov <apodtele@gmail.com>
* src/base/ftcalc.c (FT_RoundFix): Improve.
2015-09-09 Wojciech Mamrak <wmamrak@gmail.com>
* src/base/ftcalc.c (FT_CeilFix, FT_FloorFix): Normalize.
This commit makes the functions behave as expected, this is,
rounding towards plus or minus infinity.
2015-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
* src/smooth/ftgrays.c (gray_render_line): Simplify clipping.
2015-09-04 Alexei Podtelezhnikov <apodtele@gmail.com>
[raster,smooth] Microoptimizations.
* src/raster/ftraster.c (Insert_Y_Turn, Finalize_Profile_Table,
Bezier_Up): Use do-while loops.
* src/smooth/ftgrays.c (gray_render_scanline, gray_render_line,
gray_convert_glyph): Ditto.
2015-09-04 Werner Lemberg <wl@gnu.org>
[autofit] Redesign code ranges (2/2).
This commit adds two fallback scripts (`latb', `latp') and
implements support for the no-base character ranges introduced in
the previous commit.
* src/autofit/aftypes.h (AF_ScriptClassRec): Add
`script_uni_nobase_ranges' field.
(AF_DEFINE_SCRIPT_CLASS): Updated.
* src/autofit/afscript.h, src/autofit/afstyles.h: Add `latb' and
`latp' fallback scripts.
* src/autofit/afblue.dat: Add blue zones for Latin subscript and
superscript fallback scripts.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
* src/autofit/afglobal.h (AF_NOBASE): New style flag for no-base
characters.
(AF_STYLE_MASK): Updated.
* src/autofit/afglobal.c (SCRIPT): Updated.
(af_face_globals_compute_style_coverage): Handle new style flag.
* src/autofit/aflatin.c (af_latin_hints_apply): Handle new style
flag.
* src/autofit/afranges.h (SCRIPT): Use it to export no-base ranges.
2015-09-04 Werner Lemberg <wl@gnu.org>
[autofit] Redesign code ranges (1/2).
This patch introduces auxiliary code ranges that identify no-base
characters; they refer to glyphs of a script that should be hinted
without alignments to blue zones (mostly diacritics).
It also splits off ranges for fallback scripts that handle subscript
and superscript characters not covered by OpenType features. For
example, this greatly helps improve the hinting of various phonetic
alphabets, which contain a large amount characters that look like
superscript glyphs.
Finally, code ranges are updated to Unicode 8.0, and enclosed
characters are removed in general since they normally look better if
they stay unhinted.
* src/autofit/afranges.c (af_latn_uniranges): Updated to Unicode
8.0.
Split off superscript-like and subscript-like glyphs into...
(af_latb_uniranges, af_latp_uniranges): ... these two new arrays.
(af_xxxx_nobase_uniranges): New arrays that hold no-base characters
of the corresponding character ranges.
2015-09-03 Werner Lemberg <wl@gnu.org>
[autofit] Pass glyph index to hinting function.
No functionality change yet.
* src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Pass
glyph index.
* src/autofit/afcjk.c, src/autofit/afcjk.h (af_cjk_hints_apply),
src/autofit/afdummy.c (af_dummy_hints_apply), src/autofit/afindic.c
(af_indic_hints_apply), src/autofit/aflatin.c
(af_latin_hints_apply), src/autofit/aflatin2.c
(af_latin2_hints_apply), src/autofit/afloader.c (af_loader_load_g):
Updated.
2015-08-30 Werner Lemberg <wl@gnu.org>
[autofit] Code clean-up.
* src/autofit/afglobal.h (AF_STYLE_MASK): New macro.
(AF_STYLE_UNASSIGNED): Use AF_STYLE_MASK for definition.
* src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
Updated.
2015-08-30 Werner Lemberg <wl@gnu.org>
[autofit] Make glyph style array use 16bit values.
* include/freetype/ftautoh.h (FT_Prop_GlyphToScriptMap): Use
`FT_UShort' for `map' field.
* src/autofit/afglobal.c (af_face_globals_compute_style_coverage,
af_face_globals_new), src/autofit/hbshim.c, src/autofit/hbshim.h
(af_get_coverage): Use FT_UShort for `glyph_styles' array.
* src/autofit/afglobal.h (AF_STYLE_UNASSIGNED, AF_DIGIT): Extend to
16 bits.
(AF_FaceGlobalsRec): Use `FT_UShort' for `glyph_styles' field.
2015-08-26 Werner Lemberg <wl@gnu.org>
* builds/unix/configure.raw: Need harfbuzz >= 0.9.21 (#45828).
2015-08-25 Werner Lemberg <wl@gnu.org>
[base] Improve kerning tracing and documentation.
* src/base/ftobjs.c (FT_Get_Kerning): Emit tracing message if
scaled-down kerning values differ.
2015-08-18 Werner Lemberg <wl@gnu.org>
[raster] Remove last remnants of `raster5' driver.
* src/raster/ftrend1.h (ft_raster5_renderer_class): Removed.
* src/raster/rastpic.c, src/raster/rastpic.h
(ft_raster5_renderer_class_pic_init,
ft_raster5_renderer_class_pic_free): Removed.
2015-08-17 Alexei Podtelezhnikov <apodtele@gmail.com>
[base] Improve emboldener (#45596).
* src/base/ftoutln.c (FT_Outline_EmboldenXY): Correct displacement
of zero-length segments.
2015-08-16 Alexei Podtelezhnikov <apodtele@gmail.com>
[base] Reoptimize arithmetic.
* src/base/ftcalc.c (FT_MulDiv, FT_MulFix) [!FT_LONG64]: Remove
special cases that slow down the general use.
2015-08-15 pazer <ibemad@gmail.com>
Fix C++ compilation (#45762).
* src/base/ftstroke.c (ft_outline_glyph_class): Use
FT_CALLBACK_TABLE.
2015-08-14 Alexei Podtelezhnikov <apodtele@gmail.com>
[truetype] Clean up.
* src/truetype/ttgload.c (TT_Process_Composite_Component): Use
`FT_Outline_Transform' and `FT_Outline_Translate'.
(translate_array): Dropped.
2015-08-14 Andreas Enge <andreas.enge@inria.fr>
* builds/unix/detect.mk (CONFIG_SHELL): Don't handle it (#44261).
2015-08-13 Werner Lemberg <wl@gnu.org>
[truetype] Introduce named instance access to GX fonts.
For functions querying a face, bits 16-30 of the face index can hold
the named instance index if we have a GX font. The indices start
with value 1; value 0 indicates font access without GX variation
data.
* include/freetype/freetype.h (FT_FaceRec): Update documentation.
* include/freetype/internal/sfnt.h: Ditto.
* src/sfnt/sfobjs.c (sfnt_init_face)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Get number of named instances and
do argument checks.
(sfnt_load_face): Updated.
* src/truetype/ttobjs.c (tt_face_init)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Use named instance, overwriting
the style name.
* src/base/ftobjs.c (open_face_from_buffer,
open_face_PS_from_sfnt_stream): Updated.
* src/bdf/bdfdrivr.c (BDF_Face_Init): Updated.
* src/cff/cffload.c (cff_font_load): Updated.
* src/cff/cffobjs.c (cff_face_init): Make function exit early for
pure CFF fonts if `font_index < 0'.
Updated.
* src/cid/cidobjs.c (cid_face_init): Updated.
* src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
* src/pfr/pfrobjs.c (pfr_face_init): Updated.
* src/type1/t1objs.c (T1_Face_Init): Updated.
* src/type42/t42objs.c (T42_Face_Init): Updated.
* src/winfonts/winfnt.c (fnt_face_get_dll_font, FNT_Face_Init):
Updated.
* docs/CHANGES: Updated.
2015-08-12 Alexei Podtelezhnikov <apodtele@gmail.com>
[type1,cff,cid] Streamline font matrix application.
* src/type1/t1gload.c (T1_Load_Glyph): Directly modify advances only
if font matrix is not trivial.
* src/cff/cffgload.c (cff_slot_load): Ditto.
* src/cid/cidgload.c (cid_slot_load_glyph): Ditto for advances and the
entire outline.
2015-08-11 Werner Lemberg <wl@gnu.org>
[builds/unix] Minor.
* builds/unix/configure.raw:
s/lib{priv,staticconf}/libs{priv,staticconf}/ for orthogonality with
similarly named uppercase variables.
2015-08-10 Alexei Podtelezhnikov <apodtele@gmail.com>
[type1,cid,type42] Minor improvements.
* src/type1/t1load.c (t1_parse_font_matrix): Scale units per EM only
when necessary. Refresh comments.
* src/cid/cidload.c (cid_parse_font_matrix): Ditto.
* src/type42/t42parse.c (t42_parse_font_matrix): Refresh comments.
2015-08-08 Werner Lemberg <wl@gnu.org>
[type42] Fix glyph access.
This is a severe bug: We've missed one level of indirection, as
described in the Type 42 specification. As a result, ftview
sometimes showed incorrect glyphs for given glyph names, and even
displayed `error 0x0006' (invalid argument!) in case the number of
glyph indices differed between the Type 42 font and the embedded
TTF.
Apparently, noone ever noticed it; this shows how much Type 42 fonts
are in use...
* src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index
to embedded TTF's glyph index.
2015-08-08 Werner Lemberg <wl@gnu.org>
[type42] Minor clean-up.
* src/type42/t42parse.c (t42_parse_font_matrix): Remove unused
variable.
2015-08-06 Alexei Podtelezhnikov <apodtele@gmail.com>
[type42] Parse FontMatrix according to specifications.
* src/type42/t42parse.c (t42_parse_font_matrix): Type 42 FontMatrix
does not need scaling by 1000. Units_per_EM are taken from the
embedded TrueType.
2015-08-06 Werner Lemberg <wl@gnu.org>
[autofit] Improve Arabic hinting.
Problem reported by Titus Nemeth <tn@tntypography.eu> (by using
ttfautohint).
* src/autofit/afblue.dat: Add neutral blue zone for the tatweel
character.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
2015-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
[truetype] Clean up types.
* src/truetype/ttobjs.c (TT_Size): Move declaration from here.
* include/freetype/internal/tttypes.h (TT_Size): ... to here.
(TT_LoaderRec): Switch to appropriate types for `face' and `size'.
* src/truetype/ttgload.c: Remove corresponding type casts.
* src/truetype/ttsubpix.c: Ditto.
2015-08-05 Werner Lemberg <wl@gnu.org>
[autofit] Improve recognition of flat vs. rounded segments.
Lower the flatness threshold from upem/8 to upem/14, making the
auto-hinter accept shorter elements.
Synchronize flat/round stem selection algorithm with blue zone code.
* src/autofit/aflatin.c (FLAT_THRESHOLD): New macro.
(af_latin_metrics_init_blues): Use it.
(af_latin_hints_compute_segments): Collect information on maximum
and minimum coordinates of `on' points; use this to add a constraint
for the flat/round decision similar to
`af_latin_metrics_init_blues'.
2015-08-04 Werner Lemberg <wl@gnu.org>
Another left-shift bug (#45681).
* src/base/ftobjs.c (IsMacBinary): Only accept positive values for
`dlen'.
2015-08-03 Alexei Podtelezhnikov <apodtele@gmail.com>
[base] Fix `ft_corner_orientation'.
Remove casting from `FT_Long' to `FT_Int' that might change the sign
of the return value and make it faster too.
* src/base/ftcalc.c (ft_corner_orientation): On 32-bit systems, stay
with 32-bit arithmetic when safe. Use plain math on 64-bit systems.
* src/pshinter/pshalgo.c: Remove old unused code.
2015-08-03 Werner Lemberg