Commit Graph

3601 Commits

Author SHA1 Message Date
Werner Lemberg bd0438a461 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-16 18:05:43 +02:00
Werner Lemberg 19cb1127d4 [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 08:52:36 +02:00
Werner Lemberg 7f0f40116d [truetype] Fix integer type (#45965).
* src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Implement it.
2015-09-15 07:23:53 +02:00
Werner Lemberg 577daf1c30 * src/pcf/pcfread.c (pcf_load_font): Fix integer overflow (#45964). 2015-09-15 07:10:16 +02:00
Werner Lemberg 581c7e2a51 [type1, type42] Check encoding array size (#45961).
* src/type1/t1load.c (parse_encoding), src/type42/t42parse.c
(t42_parse_encoding): Do it.
2015-09-15 06:49:06 +02:00
Alexei Podtelezhnikov 3ea0d2c65a * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Improve. 2015-09-13 23:19:34 -04:00
Werner Lemberg 7962a15d64 [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-14 00:38:26 +02:00
Werner Lemberg ff7d640404 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 23:53:16 +02:00
Werner Lemberg 3df92aa04c [winfonts] Check alignment shift count for resource data (#45938).
* src/winfonts/winfnt.c (fnt_face_get_dll_font): Implement it.
2015-09-13 09:21:52 +02:00
Werner Lemberg e3058617f3 [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 08:41:43 +02:00
Werner Lemberg e40e8b33a1 [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-13 08:05:50 +02:00
Werner Lemberg db5a4a9ae7 [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-12 08:32:55 +02:00
Werner Lemberg 19b82cfbed [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 20:25:32 +02:00
Werner Lemberg 23423bc6f9 [type42] Fix endless loop (#45920).
* src/type42/t42parse.c (t42_parse_encoding): Synchronize with
type1's `parse_encoding'.
2015-09-11 08:28:27 +02:00
Werner Lemberg e5a27a7596 [docmaker] Allow `-' in bold and italic markup.
* src/tools/docmaker/sources.py (re_italic, re_bold): Adjust
accordingly.
2015-09-10 07:44:11 +02:00
Alexei Podtelezhnikov 09948e426e * src/base/ftcalc.c (FT_RoundFix): Improve. 2015-09-09 21:30:15 -04:00
Wojciech Mamrak 822acb0252 * 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-09 07:59:10 +02:00
Alexei Podtelezhnikov b002f6882d * src/smooth/ftgrays.c (gray_render_line): Simplify clipping. 2015-09-07 13:47:36 -04:00
Alexei Podtelezhnikov 5a6dc87240 [raster,smooth] Microoptimizations.
* src/raster/ftraster.c (Insert_Y_Turn, Finalize_Profile_Table,
Beziier_Up, ): Use do-while loops.

* src/smooth/ftgrays.c (gray_render_scanline, gray_render_line,
gray_convert_glyph): Ditto.
2015-09-04 23:14:46 -04:00
Werner Lemberg d3cba0ed30 [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 10:28:53 +02:00
Werner Lemberg 696b712691 [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-04 10:10:59 +02:00
Werner Lemberg 8cbbcf6b98 [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-09-03 06:47:30 +02:00
Werner Lemberg 40103a3af0 [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-09-02 05:59:35 +02:00
Werner Lemberg 87c81f0460 [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-09-02 05:59:35 +02:00
Werner Lemberg 633d8ed2c9 * builds/unix/configure.raw: Need harfbuzz >= 0.9.21 (#45828). 2015-08-26 06:18:47 +02:00
Werner Lemberg 78b014031d [base] Improve kerning tracing and documentation.
* src/base/ftobjs.c (FT_Get_Kerning): Emit tracing message if
scaled-down kerning values differ.
2015-08-25 07:23:01 +02:00
Werner Lemberg 91d59169a8 [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-18 06:04:36 +02:00
Alexei Podtelezhnikov a0172d10e8 [base] Improve emboldener (#45596).
* src/base/ftoutln.c (FT_Outline_EmboldenXY): Correct displacement
of zero-lenght segments.
2015-08-17 22:58:59 -04:00
Alexei Podtelezhnikov 815c32469b Minor. 2015-08-17 21:48:46 -04:00
Alexei Podtelezhnikov 00d899507c [base] Reoptimize aritmetic.
* src/base/ftcalc.c (FT_MulDiv, FT_MulFix) [!FT_LONG64]: Remove
special cases that slow down the general use.
2015-08-16 22:57:34 -04:00
pazer f0ed30e6e6 Fix C++ compilation (#45762).
* src/base/ftstroke.c (ft_outline_glyph_class): Use
FT_CALLBACK_TABLE.
2015-08-15 06:53:09 +02:00
Alexei Podtelezhnikov ae258aa088 [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 23:23:18 -04:00
Werner Lemberg d0d7ee047b * builds/unix/detect.mk (CONFIG_SHELL): Don't handle it (#44261). 2015-08-14 14:30:58 +02:00
Werner Lemberg 14d6b5d748 [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-13 15:22:17 +02:00
Alexei Podtelezhnikov 4a46686508 [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.
* sff/cid/cidgload.c (cid_slot_load_glyph): Ditto for advances and the
entire outline.
2015-08-12 23:45:40 -04:00
Werner Lemberg 7ebe6ac87c [builds/unix] Minor.
* builds/unix/configure.raw:
s/lib{priv,staticconf}/libs{priv,staticconf}/ for orthogonality with
similarly named uppercase variables.
2015-08-11 06:47:25 +02:00
Alexei Podtelezhnikov a37da21a49 [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-10 23:05:02 -04:00
Werner Lemberg bd75a517dc [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 08:39:45 +02:00
Werner Lemberg e5f4469359 [type42] Minor clean-up.
* src/type42/t42parse.c (t42_parse_font_matrix): Remove unused
variable.
2015-08-08 07:45:03 +02:00
Alexei Podtelezhnikov fd70512eee [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 21:49:08 -04:00
Werner Lemberg ff406e2e58 [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-06 07:34:50 +02:00
Alexei Podtelezhnikov 98e8e99986 [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-06 00:06:14 -04:00
Werner Lemberg 15e2a4f790 [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-05 21:53:50 +02:00
Werner Lemberg eb22ef26d9 Another left-shift bug (#45681).
* src/base/ftobjs.c (IsMacBinary): Only accept positive values for
`dlen'.
2015-08-04 06:50:04 +02:00
Alexei Podtelezhnikov 7e6c321a58 [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 23:26:13 -04:00
Werner Lemberg 8dfc760161 * src/truetype/ttgload.c (load_truetype_glyph)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix crash for composite glyphs
having a depth greater than 1.
2015-08-03 12:23:30 +02:00
Werner Lemberg ca6a5cf4b8 Fix typo in clang bug from 2015-07-31 (#45678).
* src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Fix inequality.
2015-08-03 08:51:18 +02:00
Werner Lemberg a82c45d53b * CMakeLists.txt: Improve shared library support.
Based on a patch from John Cary <cary@txcorp.com>.
2015-08-02 18:35:49 +02:00
Werner Lemberg 682c27195b * builds/unix/freetype-config.in (enable_shared): Remove. Unused. 2015-08-02 15:46:26 +02:00
Werner Lemberg 70e9d81577 Fix more invalid left-shifts.
* src/pfr/pfrgload.c (pfr_glyph_load_compound): Use multiplication,
not left-shift.

* src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Use multiplication,
not left-shift.
2015-08-02 09:42:12 +02:00
Werner Lemberg 6343ba22a3 Fix some bugs found by clang's `-fsanitize=undefined' (#45661).
* src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Only accept
positive values from header.
Check overflow.

* src/base/ftoutln.c (SCALED): Correctly handle left-shift of
negative values.

* src/bdf/bdf.h (_bdf_glyph_modified, _bdf_set_glyph_modified,
_bdf_clear_glyph_modified): Use unsigned long constant.

* src/bdf/bdfdrivr.c (BDF_Size_Select, BDF_Glyph_Load): Don't
left-shift values that can be negative.

* src/pcf/pcfdrivr.c (PCF_Size_Select, PCF_Glyph_Load): Don't
left-shift values that can be negative.

* src/raster/ftraster.c (SCALED): Correctly handle left-shift of
negative values.

* src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Don't left-shift
values that can be negative.

* src/truetype/ttgload.c (TT_Load_Composite_Glyph,
compute_glyph_metrics, load_sbit_image): Don't left-shift values
that can be negative.
2015-08-01 07:53:48 +02:00
Werner Lemberg 5d1b8ab4d0 Define FT_LONG_MAX.
* include/freetype/config/ftstdlib.h (FT_LONG_MAX): New macro.
* src/cff/cf2arrst.c (cf2_arrstack_setNumElements): Use it.
2015-07-31 21:49:07 +02:00
Alexei Podtelezhnikov 2b07a5ae3d * src/base/ftcalc.c (FT_Vector_NormLen): Clarify. 2015-07-28 23:14:30 -04:00
Alexei Podtelezhnikov e8b186eedb * src/base/ftcalc.c (FT_Vector_NormLen): Explicate type conversions. 2015-07-27 23:22:34 -04:00
Matthias Clasen b650dfbb0b [cff] Don't use `hmtx' table for LSB (#45520).
* src/cff/cffgload.c (cff_slot_load): Use `htmx' table for advance
width only.  Bug introduced 2015-04-10.
2015-07-26 21:08:34 +02:00
Werner Lemberg f9be567f5f Better support of user-supplied C++ namespaces.
See

  http://lists.nongnu.org/archive/html/freetype-devel/2015-07/msg00008.html

for a rationale.

* src/autofit/afpic.h, src/base/basepic.h, src/cff/cffpic.h,
src/pshinter/pshpic.h, src/psnames/pspic.h, src/raster/rastpic.h,
src/sfnt/sfntpic.h, src/smooth/ftspic.h, src/truetype/ttpic.h
(FT_BEGIN_HEADER, FT_END_HEADER): Move macro calls to not enclose
header files that contain FT_{BEGIN,END}_HEADER macros by
themselves.

* src/autofit/aftypes.h [FT_DEBUG_AUTOFIT]: Include
FT_CONFIG_STANDARD_LIBRARY_H earlier.

* src/truetype/ttpic.h: Include FT_INTERNL_PIC_H.
2015-07-09 15:10:31 +02:00
Werner Lemberg 1cdac10d3a [sfnt] Make `tt_face_get_name' member of the SFNT interface.
* include/freetype/internal/sfnt.h (TT_Get_Name_Func): New
prototype.
(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): New member `get_name'.

* src/sfnt/sfdriver.c (sfnt_interface): Updated.

* src/sfnt/sfobjs.c (tt_face_get_name): Tag it with `LOCAL_DEF'.
* src/sfnt/sfobjs.h: Add prototype for it.
2015-07-07 14:04:44 +02:00
Werner Lemberg eb1bba9be4 Fix some clang compiler warnings.
* src/base/ftoutln.c (FT_Outline_EmboldenXY), src/cff/cf2intrp.c
(cf2_interpT2CharString), src/truetype/ttgload.c
(load_truetype_glyph), src/truetype/ttgxvar.c (tt_handle_deltas),
src/truetype/ttinterp.c (Ins_INSTCTRL): Fix signedness issues.
2015-06-30 09:46:39 +02:00
Alexei Podtelezhnikov 5aaabb44bc [truetype] Speed up bytecode interpreter.
* src/truetype/ttinterp.c (Normalize): Use `FT_Vector_NormLen'.
2015-06-29 22:46:54 -04:00
Alexei Podtelezhnikov 9ef02bd41a [base] Speed up emboldening.
* src/base/ftoutln.c (FT_Outline_EmboldenXY): Use `FT_Vector_NormLen'.
2015-06-29 22:39:10 -04:00
Alexei Podtelezhnikov 884e4e67ee [base] Implement fast vector normalization.
The function uses Newton's iterations instead of dividing vector
components by its length, which needs a square root. This is,
literally, a bit less accurate but a lot faster.

* src/base/ftcalc.c (FT_Vector_NormLen): New function.
2015-06-29 22:32:05 -04:00
Werner Lemberg 7cdc77f229 * CMakeLists.txt: Always create `ftconfig.h'.
For non-UNIX builds, the file stays unmodified.  However, it's
better to have the main configuration files at the same place
regardless of the OS.
2015-06-28 11:40:02 +02:00
Werner Lemberg 2c89e2c97b * CMakeLists.txt: Improve MSVC support (#43737). 2015-06-28 11:06:47 +02:00
Werner Lemberg 52c9b1aaf3 [cmake] Check for libraries and create `ftoption.h'.
* builds/FindHarfBuzz.cmake: New file, taken from

  https://trac.webkit.org/browser/trunk/Source/cmake/FindHarfBuzz.cmake

* CMakeLists.Txt: Add path to local cmake modules.
Find dependencies for zlib, bzip2, libpng, and harfbuzz.
Create `ftoption.h' file.
Set up include and linker stuff for libraries.
2015-06-28 11:03:10 +02:00
Werner Lemberg 97b757de4b * CMakeLists.txt: Fix creation of `ftconfig.h'.
Check for UNIX header files using `check_include_file'.
Set up correct header include directories.
2015-06-28 10:42:47 +02:00
Werner Lemberg 22479ca825 * CMakeLists.txt: Disallow in-source builds. 2015-06-28 10:26:33 +02:00
Werner Lemberg 802f6a9abd * src/tools/docmaker/utils.py (check_output): Add missing `\n'. 2015-06-27 07:12:42 +02:00
Werner Lemberg 1982a88d5c Fix ChangeLog file.
Correct result of `git pull -r'.
2015-06-26 06:52:34 +02:00
Werner Lemberg 94c79c2029 * CMakeLists.txt: Select platform-dependend `ftdebug.c'. 2015-06-26 06:48:01 +02:00
Werner Lemberg 68222dd122 * CMakeLists.txt: Use cmake functions for generating `ftconfig.h'.
Additionally, do this for UNIX only.
2015-06-26 06:48:01 +02:00
Werner Lemberg 5ef5a4fd8b * CMakeLists.txt (BASE_SRCS): Use `ftbase.c' and `psnames.c'. 2015-06-26 06:48:01 +02:00
Werner Lemberg 392cf22f8a Another adjustment to header locations.
This change is a result of a discussion thread on freetype-devel

  http://lists.nongnu.org/archive/html/freetype-devel/2015-06/msg00041.html

Re-introduce the `freetype2' subdirectory for all FreeType header
files after installation, and rename the `freetype2' subdirectory in
the git repository to `freetype'.

* include/freetype2: Renamed to...
* include/freetype: This.

* CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
PRIVATE_HEADERS): Updated.
Update creation of `ftconfig.h'.
Install generated `ftconfig.h'.

* Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.

* builds/amiga/include/config/ftconfig.h, builds/freetype.mk
(PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
builds/unix/freetype2.in: Updated.

* builds/unix/freetype-config.in: Updated.
* builds/unix/configure.raw: Don't check for `rmdir'.
* builds/unix/unix-def.in (DELDIR): Use `rm -rf', which is portable
according to the autoconf info manual.
* builds/unix/install.mk (install, uninstall,
distclean_project_unix): Update and simplify.

* builds/wince/*, builds/windows/*: Updated.

* devel/ft2build.h, include/ft2build.h: Updated.

* include/freetype2/config/ftheader.h,
include/freetype2/internal/ftserv.h,
include/freetype2/internal/internal.h: Update all header file
macros.

* src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.

* docs/*: Updated.
2015-06-26 06:48:00 +02:00
Alexei Podtelezhnikov 41bfbadcd3 * src/bdf/bdflib.c (_bdf_parse_start): Disallow 0 bpp. 2015-06-24 23:57:19 -04:00
Alexei Podtelezhnikov 4308b7b1af * src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing. 2015-06-24 23:31:17 -04:00
Werner Lemberg 5931268eec s/TYPEOF/FT_TYPEOF/ (#45376).
* builds/unix/ftconfig.in, builds/vms/ftconfig.in,
include/freetype2/config/ftconfig.h,
include/freetype2/internal/ftobjs.h, src/autofit/afwarp.h: Do it.
2015-06-23 09:24:48 +02:00
Werner Lemberg 8502c98b15 Fix Savannah bug #45097.
We no longer `pollute' the namespace of possible header file names;
instead we move `ft2build.h' up by one level so that it gets
installed in the default include directory (e.g.,
/usr/local/include).  After this commit, only `ft2build.h' stays in
the compiler's include path.

No visible changes for the user who follows the standard FreeType
header inclusion rules.

* include/*: Move to ...
* include/freetype2/*: This directory, except `ft2build.h'.

* CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
PRIVATE_HEADERS), Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.

* builds/amiga/include/config/ftconfig.h, builds/freetype.mk
(PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
builds/unix/install.mk (install, uninstall),
builds/unix/freetype2.in: Updated.

* builds/unix/freetype-config.in: Updated.
Emit -I directory only if it is not `/usr/include'.

* builds/wince/*, builds/windows/*: Updated.

* devel/ft2build.h, include/ft2build.h: Updated.

* include/freetype2/config/ftheader.h,
include/freetype2/internal/ftserv.h,
include/freetype2/internal/internal.h: Update all header file
macros.

* src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.

* docs/*: Updated.
2015-06-22 06:35:23 +02:00
Werner Lemberg 31d97df99f Make Jam support work again.
This is just very basic stuff and just a little bit tested on
GNU/Linux only.  I won't delve into this since I'm not a Jam user.

* Jamfile: Call `HDRMACRO' for `ftserv.h' also.
(DEFINES): Replace with...
(CCFLAGS): ... this.

* src/Jamfile: Don't call `HDRMACRO' for `internal.h'; this is
already handled in the top-level Jamfile.

* src/autofit/Jamfile (DEFINES): Replace with...
(CCFLAGS): ... this.
(_sources): Add missing files.

* src/cache/Jamfile: Don't call `HDRMACRO' for `ftcache.h'; it no
longer contains macro header definitions.

* src/base/Jamfile, src/cff/Jamfile, src/sfnt/Jamfile,
src/truetype/Jamfile (_sources): Add missing files.
2015-06-21 19:12:12 +02:00
Werner Lemberg 1a147ac004 Fix Savannah bug #45326.
* src/sfnt/sfntpic.h (SFNT_SERVICES_GET): Remove duplicate
definitions.
2015-06-16 10:20:07 +02:00
Werner Lemberg e186230678 * Version 2.6 released.
=======================

Tag sources with `VER-2-6'.

* docs/VERSION.DLL: Update documentation and bump version number to
2.6.

* 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.5.5/2.6/, s/255/26/.

* include/freetype/freetype.h (FREETYPE_MINOR): Set to 6.
(FREETYPE_PATCH): Set to 0.

* builds/unix/configure.raw (version_info): Set to 18:0:12.
* CMakeLists.txt (VERSION_MINOR): Set to 0.
(VERSION_PATCH): Set to 6.

* src/autofit/afmodule.c [!FT_MAKE_OPTION_SINGLE_OBJECT]: Add
declarations for dumping functions.

* src/truetype/ttinterp.c (TT_New_Context): Pacify compiler.

* builds/toplevel.mk: Use `freetype.mk's code to compute the version
string.
Don't include a zero patch level in version string.
* builds/freetype.mk: Remove code for computing the version string.
2015-06-07 16:11:18 +02:00
Ashish Azad 472119ac56 Fix Savannah bug #45260.
* src/pfr/pfrdrivr.c (pfr_get_kerning): Fix typo.
2015-06-06 05:45:17 +02:00
Werner Lemberg 75534a0432 [truetype] Fix memory leak.
Problem reported by Grissiom <chaos.proton@gmail.com>; in

  http://lists.nongnu.org/archive/html/freetype/2015-05/msg00013.html

there is an example code to trigger the bug.

* src/truetype/ttobjs.c (tt_size_init_bytecode): Free old `size'
data before allocating again.  Bug most probably introduced four
years ago in version 2.4.3.
2015-06-03 00:54:09 +02:00
Werner Lemberg d1ade6d11a [raster] Add more tracing.
* src/raster/ftraster.c (FT_TRACE7) [_STANDALONE_]: Define.
(Vertical_Sweep_Span, Vertical_Sweep_Drop, Horizontal_Sweep_Span,
Horizontal_Sweep_Drop, Render_Glyph): Add tracing calls.
2015-06-02 11:44:52 +02:00
Werner Lemberg 54d042861b [truetype] While tracing opcodes, show code position and stack.
* src/truetype/ttinterp.c: Change all existing TRACE7 calls to
TRACE6.
(opcode_name): Add string lengths.
(TT_RunIns): Implement display of code position and stack.
2015-06-01 12:12:06 +02:00
Werner Lemberg e9df4e47e3 [truetype] In GX, make private point numbers work correctly.
This is completely missing in Apple's documentation: If a `gvar'
tuple uses private point numbers (this is, deltas are specified for
some points only), the uncovered points must be interpolated for
this tuple similar to the IUP bytecode instruction.  Examples that
need this functionality are glyphs `Oslash' and `Q' in Skia.ttf.

* src/truetype/ttgxvar.c (tt_delta_shift, tt_delta_interpolate,
tt_handle_deltas): New functions.
(TT_Vary_Get_Glyph_Deltas): Renamed to...
(TT_Vary_Apply_Glyph_Deltas): ... this; it directly processes the
points and does no longer return an array of deltas.
Add tracing information.
Call `tt_handle_deltas' to interpolate missing deltas.
Also fix a minor memory leak in case of error.

* src/truetype/ttgxvar.h: Updated.

* src/truetype/ttgload.c (TT_Process_Simple_Glyph,
load_truetype_glyph): Updated.
2015-05-31 12:21:34 +02:00
Werner Lemberg 9845c1d4e9 [truetype] In GX, make intermediate tuplets work at extrema.
* src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix range condition.
2015-05-31 11:57:31 +02:00
Werner Lemberg cdee7d1423 [truetype] Add tracing information to GX code.
* src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
ft_var_apply_tuple, TT_Get_MM_Var, TT_Set_MM_Blend,
TT_Set_Var_Design, tt_face_vary_cvt): Do it.
2015-05-31 11:54:42 +02:00
Werner Lemberg 366b2ea748 * src/tools/apinames.c (names_dump): Fix invalid reference.
Problem reported by Guzman Mosqueda, Jose R
<jose.r.guzman.mosqueda@intel.com>.
2015-05-28 10:58:40 +02:00
Werner Lemberg a5e1f6f39b [truetype] Fix commit from 2015-05-22.
* src/truetype/ttgload.c, src/truetype/ttinterp.c: Guard new code
with `TT_CONFIG_OPTION_SUBPIXEL_HINTING'.

Problem reported by Nikolaus Waxweiler <madigens@gmail.com>.
2015-05-24 23:29:23 +02:00
Werner Lemberg 7f0994820b [truetype] Fix return values of GETINFO bytecode instruction.
* src/truetype/ttinterp.h (TT_ExecContextRec): New fields
`vertical_lcd' and `gray_cleartype'.

* src/truetype/ttgload.c (tt_loader_init): Initialize new fields.
Change `symmetrical smoothing' to TRUE, since FreeType produces
exactly this.

* src/truetype/ttinterp.c (Ins_GETINFO): Fix selector/return bit
values for symmetrical smoothing, namely 11/18.
Handle bits for vertical LCD subpixels (8/15) and Gray ClearType
(12/19).
2015-05-24 09:50:24 +02:00
Werner Lemberg bb435da213 [truetype] Minor.
* src/truetype/ttinterp.h (TT_ExecContext):
 s/subpixel/subpixel_hinting.

* src/truetype/ttgload.c, src/truetype/ttgload.h: Updated.
2015-05-23 07:21:25 +02:00
Werner Lemberg c61cad868b [truetype] Support selector index 3 of the INSTCTRL instruction.
This flag activates `native ClearType hinting', disabling backwards
compatibility mode as described in Greg Hitchcocks whitepaper.  In
other words, it enables unrestricted functionality of all TrueType
instructions in ClearType.

* src/truetype/ttgload.c (tt_get_metrics): Call `sph_set_tweaks'
unconditionally.
(tt_loader_init): Unset `ignore_x_mode' flag if bit 2 of
`GS.instruct_control' is active.

* src/truetype/ttinterp.c (Ins_INSTCTRL): Handle selector index 3.
(Ins_GETINFO): Updated.

* docs/CHANGES: Document it.
2015-05-22 22:02:15 +02:00
Werner Lemberg 790b8dfbff [truetype] Minor. 2015-05-20 12:33:40 +02:00
Werner Lemberg 0a6b6ff7c6 [truetype] Fix loading of composite glyphs.
* src/truetype/ttgload.c (TT_Load_Composite_Glyph): If the
ARGS_ARE_XY_VALUES flag is not set, handle argument values as
unsigned.  I trust `ttx' (which has exactly such code) that it does
the right thing here...

The reason that noone has ever noticed this bug is probably the fact
that point-aligned subglyphs are rare, as are subglyphs with a
number of points in the range [128;255], which is quite large (or
even in the range [32768;65535], which is extremely unlikely).
2015-05-17 22:54:48 +02:00
Chris Liddell a87fb8ccf3 [cff] Make the `*curveto' operators more tolerant.
* src/cff/cf2intrp.c (cf2_interpT2CharString): The opcodes
`vvcurveto', `hhcurveto', `vhcurveto', and `hvcurveto' all iterate,
pulling values off the stack until the stack is exhausted.
Implicitly the stack must be a multiple (or for subtly different
behaviour) a multiple plus a specific number of extra values deep.
If that's not the case, enforce it (as the old code did).
2015-05-12 07:27:35 +02:00
Chris Liddell d65bf72c3e [cff] fix incremental interface with new cff code.
* src/cff/cf2ft.c (cf2_getSeacComponent): When using the incremental
interface to retrieve glyph data for a SEAC, it be left to the
incremental interface callback to apply the encoding to raw
character index (as it was in the previous code).
2015-05-12 07:16:46 +02:00
Alexei Podtelezhnikov 4091495271 [autofit] Speed up IUP.
* src/autofit/afhints.c (af_iup_interp): Separate trivial snapping to
the same position from true interpolation, use `scale' to reduce divisions.
2015-04-29 21:57:30 -04:00
Werner Lemberg 3cc076dae7 [cff] Use `name' table for PS name if we have a SFNT-CFF.
This follows the OpenType 1.7 specification.  See

  http://tug.org/pipermail/tex-live/2015-April/036634.html

for a discussion.

* src/cff/cffdrivr.c (cff_get_ps_name): Use the `sfnt' service if we
have an SFNT.
2015-04-28 09:16:27 +02:00
Alexei Podtelezhnikov 40623a1f3a [truetype] Speed up IUP.
* src/truetype/ttinterp.c (_iup_worker_interpolate): Separate trivial
snapping to the same position from true interpolation.
2015-04-27 22:27:00 -04:00
Werner Lemberg 14df6b1a63 [autofit] By default, enable warping code but switch off warping.
Suggested by Behdad.

* include/config/ftoption.h: Define AF_CONFIG_OPTION_USE_WARPER.

* src/autofit/afmodule.c (af_autofitter_init): Initialize `warping'
with `false'.
2015-04-22 11:14:35 +02:00
Werner Lemberg d164f70df8 * docs/CHANGES: Updated. 2015-04-21 07:51:41 +02:00
Werner Lemberg 12661a5ae0 [autofit] Introduce `warping' property.
This code replaces the debugging hook from the previous commit with
a better, more generic solution.

* include/ftautoh.h: Document it.

* src/autofit/afmodule.h (AF_ModuleRec)
[AF_CONFIG_OPTION_USE_WARPER]: Add `warping' field.

* src/autofit/afmodule.c (_af_debug_disable_warper): Remove.
(af_property_set, af_property_get, af_autofitter_init)
[AF_CONFIG_OPTION_USE_WARPER]: Handle `warping' option.

* src/autofit/afhints.h (AF_HINTS_DO_WARP): Remove use of the no
longer existing `_af_debug_disable_warper'.

* src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
(af_latin_hints_init), src/autofit/aflatin2.c (af_latin2_hints_init)
[AF_CONFIG_OPTION_USE_WARPER]: Add `AF_SCALER_FLAG_NO_WARPER' to the
scaler flags if warping is off.

* src/autofit/aftypes.h: Updated.
2015-04-21 07:13:59 +02:00
Werner Lemberg 58f48f0ddc [autofit] Add debugging hook to disable warper.
* src/autofit/afmodule.c (_af_debug_disable_warper)
[FT_DEBUG_AUTOFIT]: New global variable.

* src/autofit/aftypes.h: Updated.
(AF_SCALER_FLAG_NO_WARPER): New macro (not actively used yet).

* src/autofit/afhints.h (AF_HINTS_DO_WARP): New macro.

* src/autofi/aflatin.c (af_latin_hints_apply)
[AF_CONFIG_OPTION_USE_WARPER]: Use `AF_HINTS_DO_WARP' to control use
of warper.

* src/autofit/afcjk.c (af_cjk_hints_init, af_cjk_hints_apply)
[AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.

* src/autofit/aflatin2.c (af_latin2_hints_apply)
[AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.
2015-04-16 20:11:49 +02:00
Werner Lemberg 5cd2155113 [cff] Update advance width handling to OpenType 1.7.
Problem reported by Behdad.

* src/cff/cffdrivr.c (cff_get_advances): Handle SFNT case
separately.

* src/cff/cffgload.c (cff_slot_load): Use advance width and side
bearing values from `hmtx' table if present.
2015-04-10 07:01:01 +02:00
Alexei Podtelezhnikov 67b912d2fa * src/autofit/afhints.c (af_glyph_hints_reload): Use do-while loop. 2015-04-03 22:38:11 -04:00
Alexei Podtelezhnikov 770b5d0647 * src/autofit/aflatin.c (af_latin_hint_edges): Reduce logic. 2015-04-02 23:15:36 -04:00
Alexei Podtelezhnikov 886f4d0493 [autofit] Finish the thought.
* src/autofit/afhints.c (af_direction_compute): make sure the long arm
is never negative so that its `FT_ABS' is not necessary.
2015-04-01 22:57:43 -04:00
Werner Lemberg a2fa657a03 [autofit] Call dumper functions for tracing.
* src/autofit/afcjk.c (af_cjk_hints_apply): Remove dead code.
* src/autofit/afhints.c (af_glyph_hints_dump_points): Minor
improvement.
* src/autofit/afmodule.c (af_autofitter_load_glyph): Implement it.
2015-04-01 15:55:41 +02:00
Werner Lemberg db8df797d0 [autofit] Make debugging stuff work again.
The interface to ftgrid was broken in the series of commits starting
with

  [autofit] Allocate AF_Loader on the stack instead of AF_Module.

from 2015-01-14.

* src/autofit/afmodule.c (_af_debug_hints_rec) [FT_DEBUG_AUTOFIT]:
Use a global AF_GlyphHintsRec object for debugging.
(af_autofitter_done, af_autofitter_load_glyph): Updated.

* src/autofit/afloader.c (af_loader_init, af_loader_done): Updated.
2015-04-01 13:30:55 +02:00
Werner Lemberg 16217e5f22 * src/autofit/afhints.c (af_glyph_hints_done): Fix minor thinko. 2015-04-01 13:13:56 +02:00
Werner Lemberg f353a38e87 [cff] Fix Savannah bug #44629.
* src/cff/cf2font.h (CF2_MAX_SUBR), src/cff/cffgload.h
(CFF_MAX_SUBRS_CALLS): Set to 16.
2015-03-29 14:47:49 +02:00
Werner Lemberg 10e2bb8b3d [type1, truetype] Make the MM API more flexible w.r.t. `num_coords'.
This commit allows `num_coords' to be larger or smaller than the
number of available axes while selecting a design instance, either
ignoring excess data or using defaults if data is missing.

* src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design):
Implement it.

* src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design,
T1_Set_Var_Design): Ditto.
2015-03-29 13:32:47 +02:00
Werner Lemberg dd5d6d7a80 [type1] Minor.
* src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Use
FT_THROW.
(T1_Set_Var_Design): Use T1_MAX_MM_AXIS and FT_THROW.
2015-03-29 10:04:22 +02:00
Werner Lemberg 8ce3026304 [cff] Trace charstring nesting levels.
* src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLGSUBR,
cf2_cmdCALLSUBR, cf2_cmdRETURN>: Implement it.

* src/cff/cffgload.c (cff_decoder_parse_charstrings)
<cff_op_callsubr, cff_op_callgsubr, cff_op_return>: Ditto.
2015-03-27 08:33:47 +01:00
Alexei Podtelezhnikov dac5644cea [base] Optimize `FT_Angle_Diff'.
Under normal circumstances we are usually close to the desired range
of angle values, so that the remainder is not really necessary.

* src/base/fttrigon.c (FT_Angle_Diff): Use loops instead of remainder.

* src/autofit/aftypes.h (AF_ANGLE_DIFF): Ditto in the unused macro.
2015-03-21 23:30:16 -04:00
Werner Lemberg 6cc425db91 [truetype] Improve `gvar' handling.
* src/truetype/ttgxvar.c (ft_var_readpackedpoints): Correctly handle
single-element runs.  Cf. glyph `Q' in Skia.ttf with weights larger
than the default.
2015-03-21 06:51:07 +01:00
Alexei Podtelezhnikov 2d7284e962 * src/base/fttrigon.c (FT_Vector_Rotate): Minor refactoring. 2015-03-20 21:34:19 -04:00
Alexei Podtelezhnikov 6a17172687 Fix Savannah bug #44412 (part 2).
* src/base/fttrigon.c (FT_Sin, FT_Cos, FT_Tan): Call `FT_Vector_Unit'.
2015-03-17 22:43:08 -04:00
Werner Lemberg d3284462c3 [autofit] Add support for Arabic script.
Thanks to Titus Nemeth <tn@tntypography.eu> for guidance!

* src/autofit/afblue.dat: Add blue zone data for Arabic.

* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

* src/autofit/afscript.h: Add Arabic standard characters.

* src/autofit/afranges.c: Add Arabic data.

* src/autofit/afstyles.h: Add Arabic data.

* docs/CHANGES: Document it.
2015-03-11 16:45:58 +01:00
Werner Lemberg a451638ec5 Rename `svxf86nm.h' to `svfntfmt.h'; update related symbols.
* include/internal/ftserv.h (FT_SERVICE_XFREE86_NAME_H): Renamed
to...
(FT_SERVICE_FONT_FORMAT_H): This.

* include/internal/services/svfntfmt.h (FT_XF86_FORMAT_*): Renamed
to ...
(FT_FONT_FORMAT_*): This.

src/base/ftfntfmt.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/pfr/pfrdrivr.c,
src/truetype/ttdriver.c, src/type1/t1driver.c,
src/type42/t42drivr.c, src/winfonts/winfnt.c: Updated.
2015-03-11 08:55:12 +01:00
Werner Lemberg dd7028c46e Rename `FT_XFREE86_H' to `FT_FONT_FORMATS_H'.
* include/config/ftheader.h: Implement it.
* src/base/ftfntfmt.c, docs/CHANGES: Updated.
2015-03-11 08:54:12 +01:00
Werner Lemberg f4d1c11faa Rename `FT_Get_X11_Font_Format' to `FT_Get_Font_Format'.
* include/ftfntfmt.h, src/base/ftfntfmt.c: Implement it.

* docs/CHANGES: Updated.
2015-03-11 08:54:08 +01:00
Werner Lemberg cb0f7b65a8 Fix automatic copyright updating.
* src/tools/update-copyright: Make scanning of `no-copyright'
actually work.

* src/tools/no-copyright: Don't include README in general.
2015-03-11 08:47:48 +01:00
Werner Lemberg 0633995b55 Rename `ftxf86.[ch]' to `ftfntfmt.[ch]'.
CMakeLists.txt, builds/amiga/makefile, builds/amiga/makefile.os4,
builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt,
builds/mac/FreeType.m68k_far.make.txt,
builds/mac/FreeType.ppc_carbon.make.txt,
builds/mac/FreeType.ppc_classic.make.txt, builds/symbian/bld.inf,
builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj,
builds/wince/vc2008-ce/freetype.vcproj,
builds/windows/vc2005/freetype.vcproj,
builds/windows/vc2008/freetype.vcproj,
builds/windows/vc2010/freetype.vcxproj,
builds/windows/vc2010/freetype.vcxproj.filters,
builds/windows/visualc/freetype.dsp,
builds/windows/visualc/freetype.vcproj,
builds/windows/visualce/freetype.dsp,
builds/windows/visualce/freetype.vcproj, docs/INSTALL.ANY,
include/config/ftheader.h, include/ftfntfmt.h, modules.cfg,
src/base/ftfntfmt.c, vms_make.com: Updated.
2015-03-11 08:45:00 +01:00
Alexei Podtelezhnikov 6b832c872d Fix Savannah bug #44412 (part 1).
* src/base/ftstroke.c (ft_stroker_inside): Handle near U-turns.
2015-03-10 23:25:49 -04:00
Werner Lemberg eee7d8baa1 [base] Rename `FT_Bitmap_New' to `FT_Bitmap_Init'.
* include/ftbitmap.h, src/base/ftbitmap.c: Implement it.
Update all callers.

* docs/CHANGES: Updated.
2015-03-10 11:15:15 +01:00
Werner Lemberg 493cc037c7 * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning.
Found by Alexei.
2015-03-06 05:38:31 +01:00
Alexei Podtelezhnikov dd7498d283 * src/base/ftstroke.c: Simplify. 2015-03-05 22:51:36 -05:00
Werner Lemberg 328b792313 [truetype] Some fixes and code refactoring in `ttgxvar.c'.
* src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix return value
of `point_cnt' if two bytes are read.
Use a more vertical coding style.
(ft_var_readpackeddeltas): Use FT_UInt for `delta_cnt' parameter.
Use a more vertical coding style.
2015-03-04 08:40:23 +01:00
Werner Lemberg a374c9cfe7 [autofit] Fix Savannah bug #44241.
* src/autofit/aflatin.c (af_latin_metrics_init_blues): Reject glyphs
with less than 3 points.
2015-03-03 11:23:45 +01:00
Werner Lemberg a07029ef5f Simplify `TYPEOF' macro.
No need for two arguments.

* include/config/ftconfig.h, builds/unix/ftconfig.in,
builds/vms/ftconfig.h (TYPEOF): Updated.

* include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
src/autofit/afwarp.h (AF_WARPER_FLOOR): Updated.
2015-03-02 06:54:08 +01:00
Werner Lemberg 851e815127 Various compiler warning fixes for `make multi'.
* src/autofit/afcjk.c (af_cjk_hints_compute_blue_edges),
src/autofit/aflatin.c (af_latin_hint_compute_blue_edges,
af_latin_hint_edges), src/autofit/aflatin2.c
(af_latin2_hints_compute_blue_edges, af_latin2_hint_edges): Declare
as `static'.

* src/cache/ftccmap.c (FTC_CMAP_QUERY_HASH, FTC_CMAP_NODE_HASH):
Removed.  Unused.
* src/cache/ftcimage.c: Include FT_INTERNAL_OBJECTS_H.
* src/cache/ftcmanag.c (FTC_LRU_GET_MANAGER): Removed.  Unused.

* src/cff/cf2intrp.c: Include `cf2intrp.h'.
* src/cff/cffdrivr.c (PAIR_TAG): Removed.  Unused.

* src/gzip/ftgzip.c (NO_DUMMY_DECL): Removed.  Unused.

* src/psaux/afmparse.c (afm_parser_read_int): Declare as `static'.

* src/pshinter/pshalgo.c (STRONGER, PSH_ZONE_MIN, PSH_ZONE_MAX):
Removed.  Unused.

* src/raster/ftraster.c (Render_Glyph): Declare as `static'.

* src/sfnt/ttpost.c (load_format_20): Fix signedness warning.

* src/truetype/ttdriver.c (PAIR_TAG): Removed.  Unused.
* src/truetype/ttsubpix.c (is_member_of_family_class,
is_member_of_style_class): Declare as `static'.

* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Declare
as `static'.
* src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): Declare as
`static'.
(T1_FIELD_COUNT): Removed.  Unused.
* src/type1/t1parse.h (T1_Done_Table): Removed.  Unused.

* src/type42/t42parse.c (T1_Done_Table): Removed.  Unused.
2015-03-01 19:27:09 +01:00
Werner Lemberg 04c223703a [psaux] Signedness fixes.
* include/internal/psaux.h, src/psaux/afmparse.c,
src/psaux/afmparse.h, src/psaux/psconv.c, src/psaux/psobjs.c,
src/psaux/t1cmap.c, src/psaux/t1decode.c: Apply.
2015-02-25 11:20:20 +01:00
Werner Lemberg d25ec16672 [otvalid] Signedness fixes.
* src/otvalid/otvcommn.c, src/otvalid/otvgdef.c,
src/otvalid/otvgpos.c, src/otvalid/otvgsub.c, src/otvalid/otvmath.c:
Apply.
2015-02-25 09:19:59 +01:00
Werner Lemberg 5c9d9bf295 * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Signedness fix. 2015-02-25 08:13:40 +01:00
Werner Lemberg 83d4181a36 [lzw] Signedness fixes.
* src/lzw/ftzopen.c, src/lzw/ftzopen.h: Apply.
2015-02-25 08:10:58 +01:00
Werner Lemberg 17b6291d26 [gxvalid] Signedness fixes.
* src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c,
src/gxvalid/gxvcommn.h, src/gxvalid/gxvjust.c,
src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c,
src/gxvalid/gxvmort1.c, src/gxvalid/gxvmort2.c,
src/gxvalid/gxvmorx.c, src/gxvalid/gxvmorx1.c,
src/gxvalid/gxvmorx2.c, src/gxvalid/gxvopbd.c,
src/gxvalid/gxvprop.c, src/gxvalid/gxvtrak.c: Apply.
2015-02-25 07:56:11 +01:00
Werner Lemberg 24e4e96aff [cache] Signedness fixes.
* src/cache/ftcbasic.c, src/cache/ftccmap.c, src/cache/ftcimage.c,
src/cache/ftcmanag.c, src/cache/ftcsbits.c: Apply.
2015-02-25 07:55:51 +01:00
Werner Lemberg 559727d519 Change dimension fields in `FTC_ImageTypeRec' to unsigned type.
This doesn't break ABI.

* include/ftcache.h (FTC_ImageTypeRec): Use unsigned types for
`width' and `height'.

* docs/CHANGES: Document it.
2015-02-25 06:59:02 +01:00
Werner Lemberg 4b9234b8a2 [cache] Don't use `labs'.
This is the only place in FreeType where this function was used.

* include/config/ftstdlib.h (ft_labs): Remove.

* src/cache/ftcimage.c (ftc_inode_weight): Replace `ft_labs' with
`FT_ABS'.
2015-02-25 06:31:43 +01:00
Werner Lemberg 3aaebe3a91 [cache] Replace `FT_PtrDist' with `FT_Offset'.
* src/cache/ftccache.h (FTC_NodeRec): `FT_Offset' (a.k.a. `size_t')
is a better choice for `hash' to hold a pointer than `FT_PtrDist'
(a.k.a. `ptrdiff_t'), especially since the latter is signed,
causing zillions of signedness warnings.  [Note that `hash' was of
type `FT_UInt32' before the change to `FT_PtrDist.]
Update all users.

* src/cache/ftcbasic.c, src/cache/ftccache.c, src/cache/ftccmap.c,
src/cache/ftcglyph.c, src/cache/ftcglyph.h: Updated.
2015-02-23 08:20:27 +01:00
Werner Lemberg 4d1f7af17b [smooth, raster] Re-enable standalone compilation.
* src/raster/ftraster.c (FT_RENDER_POOL_SIZE, FT_MAX)
[_STANDALONE_]: Define macros.

* src/smooth/ftgrays.c (FT_RENDER_POOL_SIZE, FT_MAX, FT_ABS,
FT_HYPOT) [_STANDALONE_]: Define macros.
2015-02-23 07:04:36 +01:00
Werner Lemberg cb13e7109c [smooth] Signedness fixes.
* src/smooth/ftgrays.c, src/smooth/ftsmooth.c: Apply.
2015-02-23 06:41:52 +01:00
Werner Lemberg a974e9acdf * src/raster/ftraster.c: Use the file's typedefs everywhere. 2015-02-22 21:02:13 +01:00
Werner Lemberg b0ebcdc8e4 * src/sfnt/ttpost.c (load_format_20): Fix error tracing message.
Bug introduced 6 commits earlier.
2015-02-22 20:42:49 +01:00
Werner Lemberg 22b1d5ca67 [pshinter] Fix thinko.
* src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Correctly
check `count'.
Bug introduced two commits earlier.
2015-02-22 20:41:03 +01:00
Werner Lemberg ca96fe01fa [raster] Signedness fixes.
* src/raster/ftraster.c, src/raster/ftrend1.c: Apply.
2015-02-22 20:05:04 +01:00
Werner Lemberg 452066cdb9 [pshinter] Signedness fixes.
* src/pshinter/pshalgo.c, src/pshinter/pshglob.c,
src/pshinter/pshrec.c: Apply.
2015-02-22 15:59:02 +01:00
Werner Lemberg 41c2ed8143 [pshinter] Use macros for (unsigned) flags, not enumerations.
* src/pshinter/pshalgo.h (PSH_Hint_Flags): Replace with macros.
Updated.
* src/pshinter/pshrec.h (PS_Hint_Flags): Replace with macros.
2015-02-22 15:57:47 +01:00
Werner Lemberg 25c2f8820f * src/pshinter/pshrec.c: Simplify.
(ps_hints_open, ps_hints_stem): Remove switch statement.
2015-02-22 15:54:31 +01:00
Werner Lemberg 01f0842eb0 [sfnt] Signedness fixes.
* src/sfnt/pngshim.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap.c,
src/sfnt/ttkern.c, src/sfnt/ttload.c, src/sfnt/ttpost.c,
src/sfnt/ttsbit.c: Apply.
* src/sfnt/sfdriver.c: Apply.
(sfnt_get_ps_name): Simplify.
2015-02-22 12:03:28 +01:00
Werner Lemberg 3c374c8cda [bdf] Signedness fixes.
* src/bdf/bdf.h, src/bdf/bdfdrivr.c, src/bdf/bdfdrivr.h,
src/bdf/bdflib.c: Apply.
2015-02-22 09:16:53 +01:00
Werner Lemberg b13945a93c * src/bdf/bdflib.c (_bdf_atous): New function.
(_bdf_parse_glyphs, _bdf_parse_start): Use it.
2015-02-22 09:15:47 +01:00
Werner Lemberg 03ccfd004f [pcf] Signedness fixes.
* src/pcf/pcf.h, src/pcf/pcfdrivr.c: Apply.
* src/pcf/pcfread.c: Apply.
(pcf_get_encodings): Ignore invalid negative encoding offsets.
2015-02-22 08:25:16 +01:00
Werner Lemberg 3d7e53f6a8 * src/winfonts/winfnt.c: Signedness fixes. 2015-02-21 11:30:54 +01:00
Werner Lemberg 7b6b417c97 [type42] Signedness fixes.
* src/type42/t42parse.c, src/type42/t42parse.h,
src/type42/t42types.h: Apply.
2015-02-21 10:39:34 +01:00
Werner Lemberg 8bfffb4c5c [pfr] Signedness fixes.
* src/pfr/pfrdrivr.c, src/pfr/pfrgload.c, src/pfr/pfrload.c,
src/pfr/pfrload.h, src/pfr/pfrobjs.c, src/pfr/pfrsbit.c,
src/pfr/pfrtypes.h: Apply.
2015-02-21 09:52:29 +01:00
Werner Lemberg 633a729d38 [cff] Minor signedness fixes related to last commit.
* src/cff/cf2ft.c, src/cff/cf2intrp.c, src/cff/cffgload.c: Apply.
2015-02-21 07:02:01 +01:00
Werner Lemberg c00b05f202 [cff] Thinkos in bias handling.
Only the final result is always positive.

Bug introduced three commits earlier.

* src/cff/cffgload.c, src/cff/cffgload.h: Apply.
2015-02-20 20:42:55 +01:00
Werner Lemberg 2bf03eb729 [cid] Fix signedness issues and emit some better error codes.
* src/cid/cidgload.c, src/cid/cidload.h, src/cid/cidobjs.c,
src/cid/cidparse.h: Apply.
* src/cid/cidload.c: Apply.
(parse_fd_array): Reject negative values for number of dictionaries.
* src/cid/cidparse.c: Apply.
(cid_parser_new): Reject negative values for hex data length.
2015-02-20 20:14:11 +01:00
Werner Lemberg eb05bfbe09 [cff] Signedness fixes for new engine.
* src/cff/cf2arrst.c, src/cff/cf2fixed.h, src/cff/cf2ft.c,
src/cff/cf2ft.h, src/cff/cf2hints.c, src/cff/cf2intrp.c: Apply.
2015-02-20 08:37:35 +01:00
Werner Lemberg 3a8d0537b5 [cff] Signedness fixes for basic infrastructure and old engine.
* include/internal/pshints.h, src/cff/cffdrivr.c,
src/cff/cffgload.c, src/cff/cffgload.h, src/cff/cffload.c,
src/cff/cffobjs.c, src/cff/cffparse.c, src/pshinter/pshrec.c: Apply.
2015-02-20 08:35:32 +01:00
Werner Lemberg 3a1df3e188 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Ignore `countSizePairs'.
This is hard-coded to value 2 in `fvar' version 1.0 (and no newer
version exists), but some fonts set it incorrectly.

Problem reported by Adam Twardoch <adam@fontlab.com>.
2015-02-19 15:42:48 +01:00
Werner Lemberg 93a884c6cd [cff] Emit better error code for invalid private dict size.
* src/cff/cffparse.c (cff_parse_private_dict): Reject negative
values for size and offset.
2015-02-19 14:11:16 +01:00
Werner Lemberg b57bb11ad0 [autofit] Fix signedness issues.
* src/autofit/afangles.c, src/autofit/afcjk.c,
src/autofit/afglobal.c, src/autofit/afhints.c,
src/autofit/aflatin.c, src/autofit/aflatin2.c, src/autofit/afwarp.c,
src/autofit/hbshim.c: Apply.
2015-02-19 10:44:18 +01:00
Werner Lemberg 81e5ff53a8 [autofit] Use macros for (unsigned) flags, not enumerations.
This harmonizes with other code in FreeType (and reduces the number
of necessary casts to avoid compiler warnings).

* src/autofit/afblue.hin: Make flag macros unsigned.
* src/autofit/afblue.h: Regenerated.

* src/autofit/afcjk.h: Replace flag enumeration with macros.
* src/autofit/afcjk.c: Updated.

* src/autofit/afhints.h (AF_Flags, AF_Edge_Flags): Replace with
macros.
* src/autofit/afhints.c: Updated.

* src/autofit/aflatin.h: Replace flag enumerations with macros.
* src/autofit/aflatin.c, src/autofit/aflatin2.c: Updated.

* src/autofit/aftypes.h (AF_ScalerFlags): Replace with macros.
2015-02-19 09:46:48 +01:00
Werner Lemberg 3b5f332c5b [type1] Fix signedness issues.
* include/internal/psaux.h, include/internal/t1types.h,
src/psaux/psobjs.c, src/psaux/psobjs.h, src/psaux/t1decode.c,
src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1parse.c: Apply.
2015-02-18 11:45:22 +01:00
Werner Lemberg 272e3cd077 [psaux, type1] Fix minor AFM issues.
* include/internal/t1types.h (AFM_KernPairRec): Make indices
unsigned.
Update users.
(AFM_FontInfoRec): Make element counters unsigned.
Update users.
* src/psaux/afmparse.h (AFM_ValueRec): Add union member for unsigned
int.

* src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs):
Reject negative values for number of kerning elements.

* src/type1/t1afm.c, src/tools/test_afm.c: Updated.
2015-02-18 11:38:46 +01:00
Werner Lemberg 6bd7d28fc7 Don't use `FT_PtrDist' for lengths.
Use FT_UInt instead.

* include/internal/psaux.h (PS_Table_FuncsRec, PS_TableRec,
T1_DecoderRec): Do it.

* include/internal/t1types.h (T1_FontRec): Ditto.

* src/cid/cidload.c (cid_parse_dict): Updated.
* src/pfr/pfrload.c (pfr_extra_item_load_font_id): Ditto.
* src/psaux/psobjs.c (ps_table_add), src/psaux/psobjs.h: Ditto.
* src/type1/t1load.c (parse_blend_axis_types, parse_encoding,
parse_chharstrings, parse_dict): Ditto.
* src/type42/t42parse.c (t42_parse_encoding, t42_parse_charstrings,
t42_parse_dict): Ditto.
2015-02-18 09:22:06 +01:00
Werner Lemberg 6a0ded7641 * src/type1/t1driver.c (t1_ps_get_font_value): Clean up.
This handles negative values better, avoiding many casts.
2015-02-18 08:51:22 +01:00
Werner Lemberg d3240c56e5 [base] Fix Savannah bug #44284.
* src/base/ftcalc.c (FT_MulFix): Typos.
2015-02-17 20:30:36 +01:00
Werner Lemberg 1f7a4e1f40 [truetype] Finish compiler warning fixes for signedness issues.
* src/truetype/ttgxvar.c, src/truetype/ttsubpix.c,
src/truetype/ttsubpix.h: Apply.
2015-02-17 10:17:56 +01:00
Werner Lemberg 9daea2c90c * src/truetype/ttsubpix.c: Adding missing `static' keywords. 2015-02-17 09:27:56 +01:00
Werner Lemberg d9c3f15117 [truetype] More signedness fixes.
* include/internal/tttypes.h, src/truetype/ttinterp.h,
src/truetype/ttobjs.h, src/truetype/ttinterp.c,
src/truetype/ttobjs.c: Apply.
2015-02-17 09:21:26 +01:00
Werner Lemberg 0a33a3984f [truetype] Various signedness fixes.
* include/internal/ftgloadr.h, src/truetype/ttpload.c: Apply.

* src/truetype/ttgload.c: Apply.
(TT_Get_VMetrics): Protect against invalid ascenders and descenders
while constructing advance height.
2015-02-17 08:03:05 +01:00
Werner Lemberg 76abc75c26 [base] Finish compiler warning fixes for signedness issues.
* src/base/ftglyph.c, src/base/ftlcdfil.c, src/base/ftstroke.c:
Apply.
2015-02-16 22:00:27 +01:00
Werner Lemberg 10aa858593 * include/tttables.h (TT_OS2): `fsType' must be FT_UShort. 2015-02-16 20:12:54 +01:00
Werner Lemberg 2e814fc045 More minor signedness warning fixes.
* src/base/ftbbox.c, src/base/ftbitmap.c, src/base/fttrigon.c,
src/base/ftutil.c: Apply.
2015-02-16 20:05:08 +01:00
Werner Lemberg 82235d0474 Next round of minor compiler warning fixes.
* include/internal/ftrfork.h (FT_RFork_Ref): Change `offset' member
type to `FT_Long'.
(CONST_FT_RFORK_RULE_ARRAY_BEGIN): Add `static' keyword.

* include/internal/ftstream.h (FT_Stream_Pos): Return `FT_ULong'.

* src/base/ftoutln.c, src/base/ftrfork.c, src/base/ftstream.c:
Signedess fixes.
2015-02-16 19:35:16 +01:00
Werner Lemberg 3cfa4d124c Various minor signedness fixes.
* include/ftadvanc.h, include/internal/ftobjs.h,
src/base/ftgloadr.c, src/base/ftobjs.c: Apply.
2015-02-16 17:59:06 +01:00
Werner Lemberg 6f325c26cf New `TYPEOF' macro.
This helps suppress signedness warnings, avoiding issues with
implicit conversion changes.

* include/config/ftconfig.h, builds/unix/ftconfig.in,
builds/vms/ftconfig.h (TYPEOF): Define.

* include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
src/autofit/afwarp.h (AF_WARPER_FLOOR): Use it.
2015-02-16 11:31:32 +01:00
Werner Lemberg 1f377f0d50 * src/base/ftsystem.c: Use casts in standard C function wrappers.
(ft_alloc, ft_realloc, ft_ansi_stream_io, FT_Stream_Open): Do it.
2015-02-16 08:37:09 +01:00
Werner Lemberg 0814b80fde Fix Savannah bug #44261.
* builds/unix/detect.mk (setup) [unix]: Set `CONFIG_SHELL' in the
environment also while calling the configure script.
2015-02-16 07:29:53 +01:00
Werner Lemberg 587351b7e2 * include/internal/ftmemory.h: Add some `FT_Offset' casts.
(FT_MEM_SET, FT_MEM_COPY, FT_MEM_MOVE, FT_ARRAY_ZERO, FT_ARRAY_COPY,
FT_MEM_MOVE): Do it.
2015-02-16 07:03:22 +01:00
Werner Lemberg 48186b8168 [base] Clean up signedness issues in `ftdbgmem.c'.
Also fix other minor issues.

* src/base/ftdbgmem.c (FT_MemTableRec): Replace all FT_ULong types
with FT_Long for consistency.
(ft_mem_primes): Change type to `FT_Int'.
(ft_mem_closest_prime, ft_mem_table_set): Updated.

(ft_mem_debug_panic, ft_mem_debug_alloc, ft_mem_debug_free,
ft_mem_debug_realloc): Use `static' keyword and fix signedness
warnings where necessary.

(ft_mem_table_resize, ft_mem_table_new, ft_mem_table_destroy,
ft_mem_table_get_nodep, ft_mem_debug_init, FT_DumpMemory): Fix types
and add or remove casts to avoid signedness warnings.
2015-02-16 06:37:36 +01:00
Werner Lemberg 6d7d636b46 [base] Clean up signedness in arithmetic functions.
This makes the code more readable and reduces compiler warnings.

* src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_MulFix,
FT_DivFix): Convert input parameters to unsigned, do the
computation, then convert the result back to signed.
(ft_corner_orientation): Fix casts.
2015-02-15 12:30:42 +01:00
Werner Lemberg 92359bd885 [sfnt] Fix Savannah bug #44184.
* src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir): No
longer reject `htmx' and `vmtx' tables with invalid length but
sanitize them.
2015-02-07 09:47:23 +01:00
Jon Anderson 416d87963f [truetype] Fix regression in the incremental glyph loader.
* src/truetype/ttgload.c (load_truetype_glyph): For incremental
fonts, the glyph index may be greater than the number of glyphs
indicated, so guard the check with a preprocessor conditional.
2015-02-06 10:16:45 +01:00
Werner Lemberg b6cb4997e8 [autofit] Fix potential memory leak.
While this doesn't show up with FreeType, exactly the same code
leaks with ttfautohint's modified auto-hinter code (which gets used
in a slightly different way).

It certainly doesn't harm since it is similar to already existing
checks in the code for embedded arrays.

* src/autofit/afhints.c (af_glyph_hints_reload): Set `max_contours'
and `max_points' for all cases.
2015-02-06 08:46:06 +01:00
Werner Lemberg 19146a5302 [autofit] Add support for Thai script.
Thanks to Ben Mitchell <ben@rosettatype.com> for guidance with blue
zone characters!

* src/autofit/afblue.dat: Add blue zone data for Thai.

* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

* src/autofit/afscript.h: Add Thai standard characters.

* src/autofit/afranges.c: Add Thai data.

* src/autofit/afstyles.h: Add Thai data.
2015-01-31 11:01:33 +01:00
Werner Lemberg d2c531ede8 Minor. 2015-01-23 22:37:42 +01:00
Behdad Esfahbod 264b5e46c0 [raster] Handle `FT_RASTER_FLAG_AA' correctly.
This fixes a breakage caused by the commit `[raster] Remove
5-level gray AA mode from monochrome rasterizer.'.

Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de> and
octoploid <octoploid@yandex.com>.

* src/raster/ftraster.c (ft_black_render): Handle
`FT_RASTER_FLAG_AA'.

* src/raster/ftrend1.c (ft_raster1_render): Remove gray AA mode
remnants.
2015-01-23 21:23:55 +01:00
Werner Lemberg 79a5ac603a * src/base/ftobjs.c (FT_New_Library): Fix compiler warning. 2015-01-18 07:30:04 +01:00
Chris Liddell 942aa5fff4 [raster] Fix Savannah bug #44022.
Add fallback for glyphs with degenerate bounding boxes.

If a glyph has only one very narrow feature, the bbox can end up
with either the width or height of the bbox being 0, in which case
no raster memory is allocated and no attempt is made to render the
glyph.  This is less than ideal when the drop-out compensation in
the rendering code would actually result in the glyph being
rendered.

This problem can be observed with the `I' glyph (gid 47) in the
Autodesk RomanS TrueType font.

* src/raster/ftrend1.c (ft_raster1_render): Add a fallback if either
dimension is zero to explicitly round up/down (instead of simply
round).
2015-01-18 07:29:48 +01:00
Werner Lemberg f57fc59e01 Run `src/tools/update-copyright'. 2015-01-17 20:41:43 +01:00
Werner Lemberg 50be00d3b3 Add some tools to handle yearly copyright notice updates.
We are now following the GNU guidelines: A new release automatically
means that the copyright year of all affected files gets updated; it
is no longer used to track years of modification changes.

* src/tools/update-copyright-year: New Perl script.
* src/tools/update-copyright: New shell script that calls
`update-copyright-year' on all files.
* src/tools/no-copyright: Exceptions that should not be handled by
`update-copyright'
2015-01-17 20:38:31 +01:00
Werner Lemberg 4eff854c27 * docs/CHANGES: Updated, using a description from Behdad. 2015-01-14 20:06:19 +01:00
Behdad Esfahbod 48c86628de * src/autofit/afmodule.c (af_autofitter_done): Fix compiler warning. 2015-01-14 19:38:36 +01:00
Behdad Esfahbod 56ddafa01c [autofit] Add embedded array of segments and edges.
Avoids multiple mallocs per typical glyphs.

With this and recent changes to avoid mallocs, the thread-safe
stack-based loader is now as fast as the previous model that had one
cached singleton.

* src/autofit/afhints.h (AF_SEGMENTS_EMBEDDED, AF_EDGES_EMBEDDED):
New macros.
(AF_AxisHintsRec): Add two arrays for segments and edges.

* src/autofit/afhints.c (af_axis_hints_new_segment): Only allocate
data if number of segments exceeds given threshold value.
(af_axis_hints_new_edge):  Only allocate data if number of edges
exceeds given threshold value.
(af_glyph_hints_done): Updated.
2015-01-14 19:36:02 +01:00
Behdad Esfahbod 6f16b10019 [autofit] Add embedded arrays for points and contours.
This avoids at least two malloc calls for typical glyphs.

* src/autofit/afhints.h (AF_POINTS_EMBEDDED, AF_CONTOURS_EMBEDDED):
New macros.
(AF_GlyphHintsRec): Add two arrays for contours and points.

* src/autofit/afhints.c (af_glyph_hints_init, af_glyph_hints_done):
Updated.
(af_glyph_hints_reload): Only allocate data if number of contours or
points exceeds given threshold values.
2015-01-14 19:26:49 +01:00
Behdad Esfahbod c27336567b [autofit] Allocate hints object on the stack.
This avoids one malloc per load.

* src/autofit/afloader.h (AF_LoaderRec): Change type of `hints' to
`AF_GlyphHints'.
Update prototype.

* src/autofit/afloader.c (af_loader_init): Use `AF_GlyphHints'
parameter instead of `FT_Memory'.
(af_loader_done): Directly reset `load_hints'.
(af_loader_load_g): Updated.

* src/autofit/afmodule.c (af_autofitter_load_glyph): Use local
`hints' object.
2015-01-14 19:16:12 +01:00