Commit Graph

4697 Commits

Author SHA1 Message Date
Werner Lemberg
d8ea52dee5 [type1] Check relationship between number of axes and designs.
For Multiple Masters fonts We don't support intermediate designs;
this implies that

  number_of_designs == 2 ^^ number_of_axes

Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9557

* src/type1/t1load.c (T1_Open_Face): Ensure above constraint.
(T1_Get_MM_Var): Remove now redundant test.
2018-07-24 23:03:06 +02:00
Hin-Tak Leung
71e29fe1c9 [truetype] Match ttdebug's naming of instruction mnemonics.
* src/truetype/ttinterp.c: The form used in ttdebug,
"MDRP[G,B,W,?]", etc., is slightly more readable than
"MDRP[00,01,02,03]".
2018-07-24 10:04:23 +02:00
Werner Lemberg
ff1c28f6c0 * src/pcf/pcfread.c (pcf_get_encodings): Thinko.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9561
2018-07-24 09:59:23 +02:00
Werner Lemberg
b98133a4e9 * src/pcf/pcfread.c (pcf_get_encodings): Check index of defaultChar.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9527
2018-07-22 13:06:20 +02:00
Werner Lemberg
9be385c94d * src/pcf/pcfread.c (pcf_load_font): Fix number of glyphs.
This is an oversight of the module change 2018-07-21.

Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9524
2018-07-22 12:49:25 +02:00
Werner Lemberg
a5acdce100 [cid] Sanitize BlueShift' and BlueFuzz'.
This code is taken from the type1 module.

Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9510

* src/cid/cidload.c (parse_fd_array): Set some private dict default
values.
(cid_face_open): Do the sanitizing.
Fix some tracing messages.
2018-07-22 12:11:52 +02:00
Werner Lemberg
cba72a0b0f [pcf] Fix handling of the undefined glyph.
This change makes the driver use the `defaultChar' property of PCF
files.

* src/pcf/pcf.h (PCF_FaceRec): Change type of `defaultChar' to
unsigned.

* src/pcf/pcfread.c (pcf_get_encodings): Read `defaultChar' as
unsigned.
Validate `defaultChar'.
If `defaultChar' doesn't point to glyph index zero, swap glyphs with
index zero and index `defaultChar' and adjust the encodings
accordingly.

* src/pcf/pcfdrivr.c (pcf_cmap_char_index, pcf_cmap_char_next,
PCF_Glyph_Load): Undo change from 2002-06-16 which always enforced
the first character in the font to be the default character.
2018-07-21 23:45:32 +02:00
Armin Hasitzka
154832d466 Move the legacy fuzz target to the `freetype-testing' repository.
It can now be found at

  https://github.com/freetype/freetype2-testing/tree/master/fuzzing/src/legacy

* src/tools/ftfuzzer: Remove this folder and its contents from the
repository.
2018-07-20 19:32:13 +02:00
Werner Lemberg
14032290bf [cff] Avoid left-shift of negative numbers (#54322).
* src/cff/cffgload.c (cff_slot_load): Use multiplication.
2018-07-20 06:44:13 +02:00
Werner Lemberg
8f09eb5ce0 Allow FT_ENCODING_NONE for `FT_Select_Charmap'.
This is a valid encoding tag for BDF, PCF, and Windows FNT, and
there is no reason to disallow it for these formats.

* src/base/ftobjs.c (FT_Select_Charmap): Implement it.
2018-07-17 21:45:24 +02:00
Werner Lemberg
9e69987aaa * src/pcf/pcfread.c (pcf_get_encodings): Trace `defaultChar'. 2018-07-17 19:54:25 +02:00
Armin Hasitzka
fda356b742 * include/freetype/internal/ftcalc.h: Add macros for handling
harmless over-/underflowing `FT_Int' values.

* src/sfnt/sfdriver.c (fixed2float): Fix negation of
`(int)(-2147483648)'.

Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9423
2018-07-16 18:45:23 +02:00
Werner Lemberg
839cb404cf * src/truetype/ttgxvar.c (tt_set_mm_blend): Fix off-by-one error.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9412
2018-07-16 05:47:27 +02:00
Werner Lemberg
9f15370e56 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Init `cbox'.
Taken from patch #9667, written by Steve Langasek
<vorlon@debian.org>.

This fixes a build failure (most probably a bug in gcc) on ppc64el
when building with -O3.
2018-07-12 07:31:26 +02:00
Werner Lemberg
b532d7ce70 Fix typo (#54238).
* src/base/ftcolor.c (FT_Palette_Set_Foreground_Color)
[!TT_CONFIG_OPTION_COLOR_LAYERS]: Add return value.
2018-07-05 23:13:35 +02:00
Werner Lemberg
0767d5362f Adjust table size comparisons (#54242).
* src/sfnt/ttcpal.c (tt_face_load_cpal): Implement it.
2018-07-05 23:05:53 +02:00
Werner Lemberg
6ceeb87f5d Fix more 32bit issues (#54208)
* src/cff/cffload.c (cff_blend_build_vector): Convert assertion into
run-time error.

* src/truetype/ttgxvar.c (ft_var_to_normalized): Protect against
numeric overflow.
2018-07-05 22:31:10 +02:00
Werner Lemberg
29f05fd02d Fix 32bit build warnings (#54239).
* src/base/ftbitmap.c (FT_Bitmap_Blend): Add casts to avoid signed
vs. unsigned comparisons.

* srb/sfnt/ttcolr.c (tt_face_get_colr_layer): Ditto.
2018-07-04 11:49:47 +02:00
Jeff Carey
d9d300ab6b * src/psnames/psmodule.c (ps_unicodes_init): Fix alloc debugging. 2018-07-02 22:27:57 +02:00
Werner Lemberg
7edc937fe6 s/palette_types/palette_flags/.
Suggested by Behdad.
2018-07-02 11:50:04 +02:00
Werner Lemberg
4e3b2473d8 Make `FT_Get_Color_Glyph_Layer' return FT_Bool.
* include/freetype/freetype.h, src/base/ftobjs.c
(FT_Get_Color_Glyph_Layer, FT_Render_Glyph_Internal): Updated.

* include/freetype/internal/sfnt.h (TT_Get_Colr_Layer_Func),
src/sfnt/ttcolr.h, src/sfnt/ttcolr.c (tt_face_get_colr_layer):
Updated.
2018-07-02 11:41:44 +02:00
Werner Lemberg
f6ccb524af * src/base/ftobjs.c (FT_Get_Color_Glyph_Layer): Guard SFNT function.
Reported by Behdad.
2018-07-01 12:31:57 +02:00
Alexei Podtelezhnikov
1fc776b5f1 * src/base/fttrigon.c (FT_Tan): Improve accuracy.
(FT_Vector_Rotate): Simplify.
2018-06-28 21:42:26 -04:00
Alexei Podtelezhnikov
4f11209f5c * src/base/ftobjs.c (FT_Set_Charmap): Robustify. 2018-06-28 21:31:35 -04:00
Werner Lemberg
207ca38fb5 [truetype] Fix memory leak.
* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Add initializers.
Fix typo in `goto' destination.

Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9071
2018-06-25 18:50:00 +02:00
Werner Lemberg
589d1f0899 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Add initializers.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9070
2018-06-25 18:38:04 +02:00
Werner Lemberg
a632fb547e [truetype] Increase precision while applying VF deltas.
It turned out that we incorrectly round CVT and glyph point deltas
before accumulation, leading to severe positioning errors if there
are many delta values to sum up.

Problem reported by Akiem Helmling <akiem@underware.nl> and analyzed
by Behdad.

* src/truetype/ttgxvar.c (ft_var_readpackeddelta): Return deltas in
16.16 format.
(tt_face_var_cvt): Collect deltas in `cvt_deltas', which is a 16.16
format array, and add the accumulated values to the CVT at the end
of the function.
(TT_Vary_Apply_Glyph_Deltas): Store data in `points_org' and
`points_out' in 16.16 format.
Collect deltas in `point_deltas_x' and `point_deltas_y', which are
16.16 format arrays, and add the accumulated values to the glyph
coordinates at the end of the function.
2018-06-24 15:22:10 +02:00
Werner Lemberg
cc3333902b New base function `FT_Matrix_Check' (#54019).
* src/base/ftcalc.c (FT_Matrix_Check): New base function to properly
reject degenerate font matrices.

* include/freetype/internal/ftcalc.h: Updated.

* src/cff/cffparse.c (cff_parse_font_matrix), src/cid/cidload.c
(cid_parse_font_matrix), src/type1/t1load.c (t1_parse_font_matrix),
src/type42/t42parse.c (t42_parse_font_matrix): Use
`FT_Matrix_Check'.
2018-06-24 06:26:09 +02:00
Werner Lemberg
d7393e22ee Fix typo.
Reported by Behdad.

* src/base/ftcolor.c (FT_Palette_Data_Get)
[!TT_CONFIG_OPTION_COLOR_LAYERS]: s/apalette/apalette_data/.
2018-06-23 17:25:58 +02:00
Werner Lemberg
9027233f75 s/FT_PALETTE_USABLE_WITH_/FT_PALETTE_FOR_/.
* include/freetype/ftcolor.h, include/freetype/internal/sfnt.h,
src/sfnt/ttcolr.c: Do it.
2018-06-21 00:21:09 +02:00
Werner Lemberg
a6b77ba2b3 [sfnt] Fix CPAL heap buffer overflow.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8968

* src/sfnt/ttcpal.c (tt_face_load_cpal): Guard CPAL version 1
offsets.
2018-06-19 20:09:31 +02:00
Werner Lemberg
7915fd51f1 Doh. Don't use CPAL or COLR data if tables are missing.
Reported by Alexei.

* src/sfnt/ttcolr.c (tt_face_get_colr_layer): Return immediately if
`colr' is NULL.

* src/sfnt/ttcpal.c (tt_face_palette_set): Return immediately, if
`cpal' is NULL.
2018-06-19 07:15:21 +02:00
Alexei Podtelezhnikov
b1a3c59f8d [base] Introduce `FT_New_Glyph'.
This function facilitates access to full capabilities of FreeType
rendering engine for custom glyphs. This can be quite useful for
consistent rendering of mathematical and chemical formulas, e.g.

  https://bugs.chromium.org/p/chromium/issues/detail?id=757078

* include/freetype/ftglyph.h, src/base/ftglyph.c (FT_New_Glyph): New
function.
2018-06-17 22:33:29 -04:00
Werner Lemberg
d573a46f77 Typo. 2018-06-17 23:23:36 +02:00
Armin Hasitzka
0f6be06444 [bdf] Fix underflow of an unsigned value.
bdflib.c:1562 could be reached with `font->glyphs_used == 0'.  That
caused an underflow of the unsigned value which results in undefined
behaviour.

* src/bdf/bdflib.c (src/bdf/bdflib.c): Bail out earlier than before
if the `ENCODING' keyword cannot be found.
2018-06-17 20:27:42 +02:00
Werner Lemberg
da84691914 [base] Add tracing for `FT_Bitmap_Blend'.
* include/freetype/internal/fttrace.h (trace_bitmap): New
enumeration.

* src/base/ftbitmap.c (FT_COMPONENT): Define.
(FT_Bitmap_Blend): Add `FT_TRACE5' calls.
2018-06-17 09:30:05 +02:00
Werner Lemberg
e361cc6a75 s/trace_bitmap/trace_checksum/.
* include/freetype/internal/fttrace.h: s/bitmap/checksum/.

* src/base/ftobjs.c (FT_COMPONENT): s/trace_bitmap/trace_checksum/.
Adjust code.
2018-06-17 09:13:37 +02:00
Werner Lemberg
9960e7beab [sfnt] Fix color glyph layer loading.
* src/sfnt/ttcolr.c (Colr): Add `table_size' field.
(tt_face_load_colr): Set it.
(tt_face_get_colr_layer): Check pointer limit for layer entries.
2018-06-16 22:16:03 +02:00
Werner Lemberg
1079063701 [sfnt] Fix color palette loading.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8933

* src/sfnt/ttcpal.c (Cpal): Add `table_size' field.
(tt_face_load_cpal): Set it.
(tt_face_palette_set): Check pointer limit for color entries.
2018-06-16 21:45:13 +02:00
Werner Lemberg
9d8e6c2980 * src/base/ftbitmap.c (FT_Bitmap_Blend): Avoid integer overflow. 2018-06-16 10:11:58 +02:00
Werner Lemberg
68bc56f864 Add `FT_Bitmap_Blend' API.
Still missing: Support for negative bitmap pitch and subpixel offset
of source bitmap.

* include/freetype/ftbitmap.h, src/base/ftbitmap.c
(FT_Bitmap_Blend): New function.
2018-06-16 09:39:29 +02:00
Werner Lemberg
9b31c44620 Replace FT_Get_GlyphLayers' with FT_Get_Color_Glyph_Layer'.
This avoids any additional allocation of COLR related structures in
a glyph slot.

* include/freetype/freetype.h (FT_Glyph_Layer, FT_Glyph_LayerRec,
FT_Get_GlyphLayers): Removed.

* include/freetype/internal/ftobjs.h (FT_Colr_InternalRec): Removed.
(FT_Slot_InternalRec): Remove `color_layers'.

* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func):
Removed.
(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Remove
`load_colr_layer'.

* src/base/ftobjs.c (ft_glyph_slot_done): Updated.
(FT_Render_Glyph_Internal): Use `FT_Get_Color_Glyph_Layer'.
(FT_Get_GlyphLayers): Removed.

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

* src/sfnt/ttcolr.c (tt_face_load_colr_layers): Removed.
* src/sfnt/ttcolr.h: Updated.

* src/truetype/ttgload.c (TT_Load_Glyph): Updated.
2018-06-14 21:30:43 +02:00
Werner Lemberg
f9d05eb326 Provide iterative API to access `COLR' data.
This solution doesn't store any data in an `FT_GlyphSlot' object.

* include/freetype/freetype.h (FT_LayerIterator): New structure.
(FT_Get_Color_Glyph_Layer): New function.

* include/freetype/internal/sfnt.h (TT_Get_Colr_Layer_Func): New
function type.
(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it.

* src/base/ftobjs.c (FT_Get_Color_Glyph_Layer): Implement it.

* src/sfnt/ttcolr.c (tt_face_get_colr_layer): New function.
* src/sfnt/ttcolr.h: Updated.

* src/sfnt/sfdriver.c (sfnt_interface): Updated.
2018-06-14 21:17:17 +02:00
Werner Lemberg
33ac83e376 Add glyph index and glyph load flags to glyph slot.
* include/freetype/freetype.h (FT_GlyphSlotRec): Rename unused
`reserved' field to `glyph_index'.

* include/freetype/internal/ftobjs.h (FT_Slot_InternalRec): Add
`load_flags' field.

* src/base/ftobjs.c (FT_Load_Glyph): Set new fields.
2018-06-14 21:00:23 +02:00
Werner Lemberg
a44e20879c [sfnt] Move `CPAL' stuff into separate files.
* src/sfnt/sfdriver.c: Include `ttcpal.h'.
* src/sfnt/sfnt.c: Include `ttcpal.c'.

* src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: Move CPAL stuff to ...
* src/sfnt/ttcpal.c, src/sfnt/ttcpal.c: ... these new files.

* src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC):
Updated.

* include/freetype/internal/fttrace.h: Add support for `colr' and
`cpal'.
Sort entries.
2018-06-14 11:32:47 +02:00
Werner Lemberg
54b332aaf9 [sfnt] Separate CPAL' and COLR' table handling.
Later on we want to support the `SVG' table also, which needs `CPAL'
(but not `COLR').

* include/freetype/internal/sfnt.h (SFNT_Interface): Add `load_cpal'
and `free_cpal' fields.
(FT_DEFINE_SFNT_INTERFACE): Updated.

* include/freetype/internal/tttypes.h (TT_FaceRec): Replace
`colr_and_cpal' fields with `cpal' and `colr'.

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

* src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Updated.

* src/sfnt/ttcolr.c (Colr, Cpal): Add `table' field.
(ColrCpal): Removed.
(tt_face_load_colr): Split off CPAL handling into...
(tt_face_load_cpal): ... this new function.
(tt_face_free_colr): Split off CPAL handling into...
(tt_face_free_cpal): ... this new function.
(tt_face_load_colr_layers, tt_face_palette_set): Updated.

* src/sfnt/ttcolr.h: Updated.

* src/truetype/ttgload.c (TT_Load_Glyph): Updated.
2018-06-13 08:46:27 +02:00
Werner Lemberg
c07ca2a1b3 [sfnt] Fix `sizeof' thinko.
* src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_palette_set): Don't
use `sizeof' for computing array limit.
2018-06-13 06:11:28 +02:00
Werner Lemberg
22d1be3f2c Finish CPAL/COLR support (4/4).
* src/sfnt/ttcolr.c (tt_face_find_color): Removed.
(tt_face_colr_blend_layer): Use `face->palette' instead of calling
`tt_face_find_color'.
Use and set text foreground color.
2018-06-13 06:11:28 +02:00
Werner Lemberg
45145d348f Finish CPAL/COLR support (3/4).
* src/base/ftcolor.c: Include FT_INTERNAL_SFNT_H.
(FT_Palette_Select, FT_Palette_Set_Foreground_Color): Implement
functions.
2018-06-13 06:11:28 +02:00
Werner Lemberg
b85d4e8f04 Finish CPAL/COLR support (2/4).
* src/sfnt/ttcolr.c (tt_face_palette_set): New function.
(tt_face_load_colr): Allocate `face->palette' and call
`tt_face_palette_set'.
Adjust return error code in case of error.

* src/sfnt/ttcolr.h: Updated.

* include/freetype/internal/sfnt.h (TT_Set_Palette_Func): New
function type.
(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it.

* src/sfnt/sfdriver.c (sfnt_interface), src/sfnt/sfobjs.c
(sfnt_done_face): Updated.
2018-06-13 06:11:28 +02:00
Werner Lemberg
7542f030ec Finish CPAL/COLR support (1/4).
* include/freetype/internal/tttypes.h (TT_FaceRec): New fields
`palette_index', `palette', `have_foreground_color' and
`foreground_color'.
2018-06-13 06:11:27 +02:00
Werner Lemberg
7de877bbc6 [sfnt] Minor.
* src/sfnt/ttcolr.c (tt_face_load_colr_layers):
s/palette_index/palette_entry_index/ for consistency.
Adjust return error code in case of error.
2018-06-13 06:11:27 +02:00
Alexei Podtelezhnikov
eaa5a42a12 [raster] Clean up.
* src/raster/ftraster.c (black_TWorker, SCALED, Set_High_Precision):
Clean up after 5-level gray removal (8dc8635874).
(Vertical_Sweep_Span): Be brief.
2018-06-11 21:56:23 -04:00
Werner Lemberg
a698dbf868 [sfnt] Fix compiler warnings.
* src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_load_colr_layers,
tt_face_colr_blend_layer): Add `NULL' initializers.
2018-06-10 21:43:51 +02:00
Werner Lemberg
d8b8b6e34e s/FT_Palette/FT_Palette_Data/, s/palette/palette_data/.
* include/freetype/ftcolor.h, include/freetype/internal/tttypes.h,
src/base/ftcolor.c, src/sfnt/sfobjs.c, src/sfnt/ttcolr.c: Updated.
2018-06-10 21:37:15 +02:00
Nikolaus Waxweiler
bfbde7926f CMakeLists: also accept IOS_PLATFORM=SIMULATOR64
This might be needed to build FreeType for the iOS simulator. See
https://savannah.nongnu.org/bugs/index.php?54048. Patch contributed
by Steve Robinson.

* CMakeLists.txt: Accept IOS_PLATFORM=SIMULATOR64
2018-06-10 13:29:01 +01:00
Werner Lemberg
6732f05593 Implement `FT_Palette_Get'.
* src/base/ftcolor.c: New file.

* src/base/Jamefile (_sources), src/base/rules.mk (BASE_SRC),
src/base/ftbase.c: Add `ftcolor.c'.
2018-06-10 09:13:13 +02:00
Werner Lemberg
56be5f721b * src/sfnt/ttcolr.c (tt_face_load_colr): Improve overflow checks. 2018-06-10 06:59:39 +02:00
Alexei Podtelezhnikov
50fda0be3f [raster] Deal with pitch sign earlier.
* src/raster/ftraster.c (black_TWorker): Remove unused `traceG',
s/bTarget/bOrigin/.
(Render_Glyph): Set `ras.bOrigin' at the bottom-left corner.
(Vertical_Sweep_Init, {Vertical,Horizontal}_Sweep_{Span,Drop}):
Updated accordingly.
2018-06-09 22:52:43 -04:00
Werner Lemberg
c412de52fb [sfnt] Read `CPAL' version 1 tables.
* include/freetype/internal.tttypes.h: Include FT_COLOR_H.
(TT_FaceRec): Add `palette' field.

* src/sfnt/ttcolr.c: Include FT_COLOR_H.
(Cpal): Remove all data covered by the new `palette' field in
`TT_FaceRec'.
(tt_face_load_colr): Updated.
Read `CPAL' version 1 data.
(tt_face_load_colr_layers, tt_face_find_color): Updated.

* src/sfnt/sfobjs.c (sfnt_done_face): Free glyph color palette data.
2018-06-09 23:56:21 +02:00
Alexei Podtelezhnikov
8f1ed54877 [base] API for Harmony LCD rendering.
This introduces `FT_Library_SetLcdGeometry' for setting up arbitrary
LCD subpixel geometry including non-striped patterns.

* src/base/ftlcdfil.c (FT_Library_SetLcdGeometry): New function.
* include/freetype/ftlcdfil.h: Document it.
* include/freetype/freetype.h: Minor.
* include/freetype/ftchapters.h: Minor.
2018-06-07 02:48:48 -04:00
Werner Lemberg
f87ced9dc9 ftcolor.h: Redesign API.
While going to implement it I noticed that I need access to most of
the `CPAL' elements; I thus plan to add a `cpal' field to
`TT_FaceRec', which makes most of the previously suggested API
functions obsolete because the fields will be directly accessable.
2018-06-06 17:49:17 +02:00
Werner Lemberg
172904ee3a Minor. 2018-06-06 13:29:09 +02:00
Parth Wazurkar
89d2f42918 [bdf, pcf] Removed deprecated FT_FACE_FLAG_FAST_GLYPHS flag.
* src/bdf/bdfdrivr.c (BDF_Face_Init): Removed deprecated FT_FACE_FLAG_FAST_GLYPHS flag.

* src/pcf/pcfread.c  (pcf_load_font): Removed deprecated FT_FACE_FLAG_FAST_GLYPHS flag.
2018-06-06 16:53:54 +05:30
Werner Lemberg
ca4e707aa1 [smooth, raster] Limit bitmap size (#54019).
* src/raster/ftraster.c [STANDALONE] (FT_Outline_Get_CBox): Add
function.
[!STANDALONE]: Include FT_OUTLINE_H.
(ft_black_render): Compute CBox and reject glyphs larger than
0xFFFF x 0xFFFF.

* src/smooth/ftgrays.c (gray_raster_render): Reject glyphs larger
than 0xFFFF x 0xFFFF.
2018-06-06 08:18:23 +02:00
Armin Hasitzka
80ac364530 * src/smooth/ftgrays.c (gray_convert_glyph): Remove unused variables. 2018-06-03 18:31:58 +02:00
Werner Lemberg
02842872de * src/tools/glnames.py (main): Emit header in `light' comment style. 2018-06-03 09:17:55 +02:00
Alexei Podtelezhnikov
ae24803410 [smooth] Attempt to mitigate bug #54019.
The robust rendering of estra large glyphs came with unbearable cost.
The old way of bisecting should fail but fail faster.

* src/smooth/ftgrays.c (gray_convert_glyph): Switch back to bisecting
in y-direction.
2018-06-02 21:42:44 -04:00
Werner Lemberg
67994e8221 * src/truetype/ttinterp.c (Ins_MIRP): Use SUB_LONG; avoid FT_ABS.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8706
2018-06-02 19:51:03 +02:00
Werner Lemberg
fab10b6fc2 * src/autofit/afwarp.h: Use AF_CONFIG_OPTION_USE_WARPER (#54033). 2018-06-02 09:53:58 +02:00
Werner Lemberg
125b84800a * src/raster/ftraster.c (black_TWorker_): Remove `gTarget' field.
This is no longer used.
2018-05-31 10:49:05 +02:00
Werner Lemberg
0589f6e6ee [sfnt] Get colors from `CPAL' table in right order (#54015).
* src/sfnt/ttcolr.c (tt_face_find_color): Fix it.
2018-05-31 00:34:38 +02:00
Werner Lemberg
db7c406084 ftcolor.h: Improve API design, fix typos (#54011, #54014).
* include/freetype/ftcolor.h (FT_Palette_Get_Names): Replace with...
(FT_Palette_Get_Name_IDs): ... this function.
(FT_Palette_Get_Entry_Names): Replace with...
(FT_Palette_Get_Entry_Name_IDs): ... this function
s/FT_Palette_Set_Foreground_COlor/FT_Palette_Set_Foreground_Color/.
2018-05-30 21:23:10 +02:00
Armin Hasitzka
d45d4b97e6 Beautify a3cfed5e87232c933bdc64f43e8ebebcfd18b41b.
* src/autofit/afloader.c (af_loader_load_glyph): Move the
initialisation and declaration of variables into the if-block.
2018-05-30 17:38:14 +02:00
Armin Hasitzka
a3cfed5e87 Fix pointer underflow.
The declaration of `edge2' can be reached with `edge1 == NULL' and
`axis->edges == 0' which results in undefined behaviour.

* src/autofit/afloader.c (af_loader_load_glyph): Initialise `edge2'
after checking `axis->num_edges > 1'.  `edge1 != NULL' can be assumed.
2018-05-30 12:37:46 +02:00
Werner Lemberg
ae2cd1b749 Various minor color fixes.
* include/freetype/config/ftheader.h (FT_COLOR_H): New macro.

* include/freetype/internal/ftobjs.h (FT_Colr_Internal): Change
type of `load_flags' to `FT_Int32'.

* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func): Change
type of `idx' to `FT_UInt'.
(TT_Blend_Colr_Func): Change type of `color_index' to `FT_UInt'.

* src/base/ftobjs.c (FT_Render_Glyph_Internal): Change type of
`load_flags' to `FT_Int32'.

* src/sfnt/ttcolr.c (find_base_glyph_record,
tt_face_load_colr_layers): Change type of `glyph_id' to `FT_UInt'.
(tt_face_find_color, tt_face_colr_blend_layer): Change type of
`color_index' to `FT_UInt'.
Fix signedness and type issues.

* src/sfnt/ttcolr.h: Updated.
2018-05-30 09:34:57 +02:00
Nikhil Ramakrishnan
51fee65583 [docmaker] Fix missing `Defined in (...)' under Windows/Cygwin.
This platform uses backslashes for paths, which docmaker didn't
understand correctly.

* src/tools/docmaker/tohtml.py (HtmlFormatter::blockEnter): Use
`os.path.normpath' to normalize the path for the platform being
used.
2018-05-25 22:19:18 +02:00
Alexei Podtelezhnikov
7b73cb0707 [smooth] Formalize Harmony LCD rendering.
This generalizes magic outline shifts that make Harmony LCD
rendering work in terms of precise two-dimensional RGB subpixel
positions. These coordinates are now set in time of the `smooth'
module initialization and later used to shift a glyph outline for
rendering. FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V use the same
coordinates. The letter, however, rotates them before using.
The LCD bitmap padding is also calculated using these coordinates.

* include/freetype/internal/ftobjs.h (FT_LibraryRec): New array field
`lcd_geometry'.
* src/base/ftlcdfil.c (ft_lcd_padding): Reworked.
* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Updated accordingly.

* src/smooth/ftsmooth.c [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]
(ft_smooth_init): Initialize `lcd_geometry'.
(ft_smooth_render_generic): Formalize outline shifts.
2018-05-24 22:38:24 -04:00
Werner Lemberg
3360ca5853 [truetype] Reject elements of composites with invalid glyph indices.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8413

* src/truetype/ttgload.c (TT_Load_Composite_Glyph): Implement it.
2018-05-22 09:06:24 +02:00
Werner Lemberg
3c99016f8f * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Trace # of points. 2018-05-22 07:53:49 +02:00
Werner Lemberg
93363cd737 * include/freetype/ftcolor.h: New file.
This is an interface to the `CPAL' OpenType table.  No
implementation yet.
2018-05-20 22:50:36 +02:00
Alexei Podtelezhnikov
2f218a4c3a * include/freetype/internal/ftcalc.h (FT_MSB): Verified `_MSC_VER'.
Actually `_BitScanReverse' is available since VS2005.
2018-05-18 08:57:30 -04:00
Werner Lemberg
840b844301 * include/freetype/internal/ftcalc.h (FT_MSB): Use `_MSC_VER' value.
Older VC versions don't provide `_BitScanReverse'.  We test for VC
2013.

Reported by John Emmas <john@creativepost.co.uk>.
2018-05-18 10:57:51 +02:00
Werner Lemberg
3331b84fc2 Minor comment fixes. 2018-05-18 07:19:57 +02:00
Werner Lemberg
2cac1c3542 s/inline/__inline/ for MSVC.
Reported by John Emmas <john@creativepost.co.uk>.

* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Do it.
2018-05-17 19:40:44 +02:00
Werner Lemberg
583dabf291 Add function FT_Get_GlyphLayers' to access COLR' table data.
* include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec): Move this
structure to...
* include/freetype/freetype.h (FT_Glyph_LayerRec): ... this
header file.
(FT_Glyph_Layer): New typedef.
Update code to use it where appropriate.

* src/base/ftobjs.c (FT_Get_GlyphLayers): New function.
2018-05-16 21:21:18 +02:00
Alexei Podtelezhnikov
f1458d2e44 [base] Fix mono bitmap presetting (#53896).
It is rather fundamental to set monochrome bitmap based on rounded
CBox because the b/w rasterizer turns on pixels when their centers are
inside the glyph outline. The dropout control is unpredictable and can
distort narrow glyphs if the bitmap is too wide.

Reported by Chris Liddell.

* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): If BBox boundaries
are too close, adjust them before rounding.
2018-05-15 21:47:18 -04:00
Werner Lemberg
49c5e24a14 [psaux] Fix compiler warning (#53915).
* src/psaux/psft.c (cf2_freeT1SeacComponent): Do it.
2018-05-15 21:55:28 +02:00
Werner Lemberg
befee11296 [sfnt] Fix memory leak in handling `COLR' data.
* src/truetype/ttgload.c (TT_Load_Glyph): Free old `layers' array
before reassigning allocated memory.
Only allocate `color_layers' if we don't have one already.
2018-05-15 17:01:22 +02:00
Werner Lemberg
2dd2091611 [sfnt] If `COLR' is present, don't assume that all glyphs use it.
* src/sfnt/ttcolr.c (tt_face_load_colr_layers): Return FT_Err_Ok if
current glyph is not a `COLR' base glyph.

* src/truetype/ttgload.c (TT_Load_Glyph): Don't allocate
`color_layers' if there are no color layers.
2018-05-15 09:06:58 +02:00
Werner Lemberg
06820637e2 * src/base/ftobjs.c (FT_Load_Glyph): Fix signature of `pixel_modes'. 2018-05-14 09:45:16 +02:00
Werner Lemberg
c5a8a5350a Provide dummy functions if `TT_CONFIG_OPTION_SFNT_NAMES' is not set.
* src/base/ftsnames.c [!TT_CONFIG_OPTION_SFNT_NAMES]: Implement it.
2018-05-14 09:43:38 +02:00
Werner Lemberg
1b2abda9d2 * src/base/ftobjs.c (FT_Load_Glyph): Improve tracing. 2018-05-13 10:58:49 +02:00
Shao Yu Zhang
f04d81751a [sfnt] Preliminary support of coloured layer outlines.
This commit enables OpenType's COLR/CPAL table handling; a typical
application are color emojis that can be scaled to any size.

If the color palette does not exist or is invalid, the rendering
step rasterizes the outline instead.  The current implementation
assumes that the foreground is black.

Enable this by defining option TT_CONFIG_OPTION_COLOR_LAYERS.

There are still some issues with metrics; additionally, an API to
fetch color layers is missing.

* devel/ftoption.h, include/freetype/config/ftoption.h
(TT_CONFIG_OPTION_COLOR_LAYERS): New macro.

* include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec,
FT_Colr_InternalRec): New structures.
(FT_Slot_InternalRec): Add `color_layers' field.

* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func,
TT_Blend_Colr_Func): New function types.
(SFNT_Interface): Add `load_colr', `free_colr', `load_colr_layer',
and `colr_blend' fields.

* include/freetype/internal/tttypes.h (TT_FaceRec): Add
`colr_and_cpal' field.

* include/freetype/internal/tttags. (TTAG_COLR, TTAG_CPAL): New
macros.

* src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: New files.

* src/base/ftobjs.c (ft_glyphslot_done, FT_Render_Glyph_Internal):
Handle glyph color layers.

* src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC): Add
`ttcolr.c'.

* src/sfnt/sfdriver.c: Include `ttcolr.h'.
(PUT_COLOR_LAYERS): New macro.
Update call to `FT_DEFINE_SFNT_INTERFACE'.

* src/sfnt/sfnt.c: Include `ttcolr.c'.

* src/sfnt/sfobjs.c (sfnt_load_face): Load `COLR' and `CPAL' tables.
(sfnt_done_face): Updated.

* src/truetype/ttgload.c (TT_Load_Glyph): Handle color layers.
2018-05-13 03:25:09 +02:00
Arkady Shapkin
84eebf4802 Use MS VC++'s _BitScanReverse to calculate MSB (patch #9636).
* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Implement
it.
2018-05-12 06:18:07 +02:00
Alan Coopersmith
9e345c9117 Further fix to visibility flag testing with Solaris Studio compilers.
AC_COMPILE_IFELSE only tries to compile a `*.c' to a `*.o'.  The
Solaris Studio 12.1 through 12.5 compilers see the
`-fvisibility=hidden' flag, but ignore it with a warning of:

  cc: Warning: Option -fvisibility=hidden passed to ld,
               if ld is invoked, ignored otherwise

AC_LINK_IFELSE does the compile and then tries to link the result,
at which point the Solaris linker will issue an error:

  ld: fatal: option '-fvisibility=hidden' is incompatible with
      building a dynamic executable

If we don't use AC_LINK_IFELSE to catch the error, then configure
will fail further tests which attempt to link, such as those testing
dependencies like `libbz2'.

Also, don't try adding `-fvisibility' if we have already added
`-xldscope', just use one of them, since Sun Studio 12 and earlier
compilers only issue a warning, and don't try passing through to the
linker to generate an error, so AC_LINK_IFELSE doesn't catch them.

Tested on Solaris 11.4 beta with compiler versions:

  Sun Studio 8 (Sun C 5.5)
  Sun Studio 10 (Sun C 5.7)
  Sun Studio 11 (Sun C 5.8)
  Sun Studio 12 (Sun C 5.9)
  Sun Studio 12.1 (Sun C 5.10)
  Oracle Solaris Studio 12.2 (Sun C 5.11)
  Oracle Solaris Studio 12.3 (Sun C 5.12)
  Oracle Solaris Studio 12.4 (Sun C 5.13)
  Oracle Developer Studio 12.5 (Sun C 5.14)
  Oracle Developer Studio 12.6 (Sun C 5.15)
  gcc 5.5.0
  gcc 7.3.0

and verified the libfreetype.so.6 generated by each of those
compilers exported the same set of symbols.

* builds/unix/configure.raw: Implement it.
2018-05-10 10:13:18 +02:00
Werner Lemberg
e0015f7612 [autofit] Avoid potential SEGV if running out of memory.
Problem reported by Shailesh Mistry <shailesh.mistry@hotmail.co.uk>.

* src/autofit/afshaper.c (af_shaper_buf_create,
af_shaper_buf_destroy) [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Don't
allocate and free a four-byte buffer.  Instead, make those functions
no-ops; the calling functions will provide a pointer to a buffer
instead.

* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
af_cjk_metrics_init_blues, af_cjk_metrics_check_digits),
src/autofit/aflatin.c (af_latin_metrics_init_widths,
af_latin_metrics_init_blues, af_latin_metrics_check_digits)
[!FT_CONFIG_OPTION_USE_HARFBUZZ]: Use pointer to local variable for
`shaper_buf'.
2018-05-08 11:51:16 +02:00
Nikolaus Waxweiler
f7b4fb3a21 CMake: Allow using project as subfolder in other project
* CMakeLists.txt: Test for CMake build directory being diffent from
source directory. Provide other parts of the build system access the
full include directory.
2018-05-08 07:46:19 +01:00
Werner Lemberg
7702edf793 [build] Suppress configure's `nothing to be done' message.
This is due to calling the configure script via `make' (within the
top-level `configure' wrapper script).  The same can happen for all
other secondary make targets that are used to only modify the
primary one, e.g., `make setup devel'.

* builds/dos/detect.mk (emx, turboc, watcom, borlandc, borlandc16),
builds/os2/detect (visualage, watcom, borlandc, devel),
builds/unix/detect.mk (devel, lcc, unix), builds/windows/detect.mk
(visualc, watcom, visualage, lcc, mingw32, bcc32, devel-bcc,
devel-gcc): Use no-op recipe.
2018-05-07 08:54:34 +02:00
suzuki toshiya
2b3e0ef6c0 Support symbol visibility features of Sun / Oracle C compilers.
Reported by Kiyoshi Kanazawa:
https://lists.gnu.org/archive/html/freetype-devel/2018-05/msg00008.html
Thanks to the suggestions by Alexei and Alan Coopersmith.

* builds/unix/configure.raw: Check if "-xldscope=hidden" is
accepted, and if so, it is added to CFLAGS.  This is the option
making Sun / Oracle C compilers hide the symbols from global
scope.
* include/freetype/config/ftconfig.h: Use "__global" prefix
for FT_EXPORT() macro, if SunPro C is newer than Sun ONE
Studio 8 (2003).
* builds/unix/ftconfig.in: Ditto.
* builds/vms/ftconfig.h: Ditto.
2018-05-04 12:55:48 +09:00
Nikolaus Waxweiler
660afb5ce8 Unbreak CMake Windows installation
* CMakeLists.txt: Generate ftconfig.h on non-UNIX.
2018-05-02 23:39:28 +01:00
Werner Lemberg
9514959241 Remove FT_CONFIG_OPTION_PIC and related code.
*/* [FT_CONFIG_OPTION_PIC]: Remove all code guarded by this
preprocessor symbol.

*/*: Replace `XXX_GET' macros (which could be either a function in
PIC mode or an array in non-PIC mode) with `xxx' arrays.

* include/freetype/internal/ftpic.h, src/autofit/afpic.c,
src/autofit/afpic.h, src/base/basepic.c, src/base/basepic.h,
src/base/ftpic.c, src/cff/cffpic.c, src/cff/cffpic.h,
src/pshinter/pshpic.c, src/pshinter/pshpic.h, src/psnames/pspic.c,
src/psnames/pspic.h, src/raster/rastpic.c, src/raster/rastpic.h,
src/sfnt/sfntpic.c, src/sfnt/sfntpic.h, src/smooth/ftspic.c,
src/smooth/ftspic.h, src/truetype/ttpic.c, src/truetype/ttpic.h:
Removed.
2018-05-02 20:27:48 +02:00
Werner Lemberg
86bc8a9505 * Version 2.9.1 released.
=========================

Tag sources with `VER-2-9-1'.

* docs/VERSION.TXT: Add entry for version 2.9.1.
* docs/CHANGES: Updated.

* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
src/base/ftver.rc, 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.9/2.9.1/, s/29/291/.

* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.

* builds/unix/configure.raw (version_info): Set to 22:1:16.
* CMakeLists.txt (VERSION_PATCH): Set to 1.

* include/freetype/ftgasp.h: Use FT_BEGIN_HEADER and FT_END_HEADER.
2018-05-01 20:37:24 +02:00
Werner Lemberg
ac97a29653 Another fix for handling invalid format 2 cmaps.
Sigh.

Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8003

* src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid
an endless loop.
2018-04-26 09:04:39 +02:00
Ben Wagner
2157d8fa6f [base] Avoid undefined behaviour in lcd filtering code (#53727).
* src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
Ensure `height > 0'.
2018-04-24 10:29:19 +02:00
Werner Lemberg
67697d0076 * src/base/ftoutln.c (FT_Outline_Decompose): Improve error tracing. 2018-04-22 21:15:10 +02:00
Alexei Podtelezhnikov
3b88576ba0 [base] Fix bitmap emboldening.
Bug introduced after release 2.8.

* src/base/ftbitmap.c (ft_bitmap_assure_buffer): We use
`FT_QALLOC_MULT', which doesn't zero out the buffer.  Adjust the
bitmap copying code to take care of this fact.
2018-04-22 17:22:35 +02:00
Werner Lemberg
c2e2a8e5d9 Revert "[base] Fix bitmap copying where the new pitch is smaller."
This reverts commit c0f1adedcfaad4f7d2fe912ff4b2933845d61d93.
2018-04-22 17:13:50 +02:00
Werner Lemberg
c0f1adedcf [base] Fix bitmap copying where the new pitch is smaller.
* src/base/ftbitmap.c (ft_bitmap_assure_buffer): Handle it.
2018-04-22 11:44:24 +02:00
Werner Lemberg
38ecc949ce Another fix for handling invalid format 2 cmaps.
The previous commit was incomplete.

Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7928

* src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid
an endless loop.
2018-04-22 10:14:03 +02:00
Werner Lemberg
e4b6d85326 [autofit] Add support for Georgian Mtavruli characters.
This will be part of the forthcoming Unicode 11.0.

* src/autofit/afblue.dat: Add blue zone data for Mtavruli.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

* src/autofit/afscript.h: Add Mtavruli standard character.
2018-04-19 17:43:03 +02:00
Werner Lemberg
1655e00fce Fix handling of invalid format 2 cmaps.
The problem was introduced after the last release.

Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7828

* src/sfnt/ttcmap.c (tt_cmap2_char_next): Avoid endless loop.
2018-04-19 14:45:19 +02:00
Werner Lemberg
2a1597826a [truetype] Integer overflow issues.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7739

* src/truetype/ttinterp.c (Ins_CEILING): Use FT_PIX_CEIL_LONG.
2018-04-17 12:25:17 +02:00
Werner Lemberg
70ac167c47 [truetype] Integer overflow issues.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7718

* src/truetype/ttinterp.c (Ins_MIRP): Use ADD_LONG.
2018-04-16 10:39:10 +02:00
Alexei Podtelezhnikov
843193b9d5 [build] Use `info' function of make 3.81.
* configure, docs/INSTALL, docs/INSTALL.CROSS, docs/INSTALL.GNU,
docs/INSTALL.UNIX, docs/MAKEPP: Bump make version requirements.

* builds/detect.mk (std_setup): Replace `echo' with `info'.
(dos_setup): Removed.
* builds/unix/install.mk, builds/modules.mk, builds/dos/detect.mk,
builds/windows/detect.mk, builds/os2/detect.mk: Updated.
* builds/newline: No longer needed.
2018-04-15 16:27:10 -04:00
Werner Lemberg
235b1e2fe6 [truetype]: Limit `SLOOP' bytecode argument to 16 bits.
This fixes

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7707

* src/truetype/ttinterp.c (Ins_SLOOP): Do it.
2018-04-15 21:55:04 +02:00
Werner Lemberg
827ca3bcf2 [truetype] Integer overflow issues.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7652

* src/truetype/ttinterp.c (Ins_MDAP): Use SUB_LONG.
2018-04-14 07:20:31 +02:00
Werner Lemberg
576670b779 [autofit] Update to Unicode 11.0.0.
But no support new scripts (volunteers welcomed).

* src/autofit/afranges.c (af_arab_nonbase_uniranges,
af_beng_nonbase_uniranges, af_cakm_nonbase_uniranges,
af_deva_nonbase_uniranges, af_geor_uniranges,
af_gujr_nonbase_uniranges, af_mlym_nonbase_uniranges,
af_nkoo_nonbase_uniranges, af_telu_nonbase_uniranges,
af_hani_uniranges): Add new data.
2018-04-14 07:00:30 +02:00
Nikolaus Waxweiler
029721d69c Modernize CMake build.
* CMakeLists.txt, builds/cmake/FindHarfBuzz.cmake: Extensive
  modernization measures.

* .gitignore: Add build/, as that's the example directory used in
  CMakeLists.txt.

This brings up the minimum required CMake version to 2.8.12.

The installation paths follow the GNU defaults now, e.g. installing on a
64 bit host will place binaries into the lib64/ folder on e.g. Fedora.

Symbols are hidden by default (e.g. `-fvisibility=hidden' on GCC).

CMake will no longer look for a C++ compiler.

Library and .so version now match the Autotools build.

Comments in the build file and informational messages now use platform
agnostic example commands.

ftoption.h and ftconfig.h are written directly without a redundant
`-new' copy.

External dependencies are expressed as option()s and will turn up as
such in cmake-gui.

Internal: Properties such as dependencies and include directories are
now privately set on the freetype library instead of globally.

The CPack definitions have been cleaned up, the `make dist' has been
removed. Source packages generated with CPack don't contain Autotools
files and aren't used by the maintainters anyway.

On Windows, src/base/ftver.rc is compiled to decorate the library with
version and copyright information.

A pkg-config file is now generated and installed.
2018-04-10 22:31:10 +01:00
Werner Lemberg
bd9400bd46 [truetype] Integer overflow issues.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7453

* src/truetype/ttinterp.c (Round_Super, Round_Super_45): Use
ADD_LONG and SUB_LONG.
2018-04-09 21:28:37 +02:00
Alexei Podtelezhnikov
cdddeff02f [windows, wince] Clean up legacy project files.
* builds/wince/vc2005-ce/freetype.vcproj,
builds/wince/vc2008-ce/freetype.vcproj,
builds/windows/vc2005/freetype.vcproj,
builds/windows/vc2008/freetype.vcproj,
builds/windows/visualce/freetype.vcproj,
builds/windows/visualce/freetype.dsp,
builds/windows/visualc/freetype.vcproj,
builds/windows/visualc/freetype.dsp: Remove per-file compile flags.
2018-04-06 21:01:50 -04:00
Werner Lemberg
3b8f16803c [cff, type1] Sanitize BlueFuzz' and BlueShift'.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7371

* src/cff/cffload.c (cff_load_private_dict): Sanitize
`priv->blue_shift' and `priv->blue_fuzz' to avoid overflows later
on.

* src/type1/t1load.c (T1_Open_Face): Ditto.
2018-04-04 20:26:08 +02:00
suzuki toshiya
26ad1acbcb * src/truetype/ttobjs.c (trick_names): Add 3 tricky fonts (#53554),
`DFHei-Md-HK-BF', `DFKaiShu-Md-HK-BF' and `DFMing-Bd-HK-BF'.
(tt_check_trickyness_sfnt_ids): Add checksums for 3 tricky fonts
in above.
2018-04-04 16:39:42 +09:00
Werner Lemberg
7109495c5e * builds/toplevel.mk (work): Use $(SEP).
This fixes the `make refdoc' using Cygwin: $(CAT) is `type' on this
platform, and this program only understands backslashes in paths.

Reported by Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>.
2018-04-01 13:24:59 +02:00
Werner Lemberg
597cb3b442 [truetype] Fix memory leak (only if tracing is on).
* src/truetype/ttgxvar.c (TT_Get_MM_Var) [FT_DEBUG_LEVEL_TRACE}: Fix
it.
2018-03-30 13:46:03 +02:00
Ben Wagner
34e467332b [sfnt] Correctly handle missing bitmaps in sbix format (#53404).
* src/sfnt/ttfsbit.c (tt_face_load_sbix_image): Fix return value.
2018-03-23 06:13:25 +01:00
Ben Wagner
43d4852ec6 [truetype] Fix advance of empty glyphs in bitmap fonts (#53393).
* src/truetype/ttgload.c (TT_Load_Glyph): Apply scaling to metrics
for empty bitmaps.
2018-03-23 06:07:24 +01:00
Werner Lemberg
af89e445f8 Remove ftlcdfil.c' and ftfntfmt.c' from build files (#53415).
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/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, vms_make.com: Do it.
2018-03-22 06:00:55 +01:00
Werner Lemberg
5bd76524ef * src/sfnt/ttcmap.c (tt_cmap2_validate): Fix potential numeric
overflow.
2018-03-13 11:11:16 +01:00
Werner Lemberg
78cded2c5c Fix cmap format 2 handling (#53320).
The patch introduced for #52646 was not correct.

* src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition.
2018-03-13 11:09:44 +01:00
Nikolaus Waxweiler
098dd70cb1 * CMakeLists.txt (BASE_SRCS): Update to changes from 2018-03-05. 2018-03-10 14:51:17 +01:00
Chun-wei Fan
6f854692a8 * CMakeLists.txt [win32]: Allow MSVC DLL builds (#53287).
Do not limit DLL builds to MinGW, since we already have
`__declspec(dllexport)' directives in `ftconfig.h'.
Also suppress more warnings for POSIX functions.
2018-03-09 06:51:38 +01:00
Werner Lemberg
e277267c52 Typo. 2018-03-08 11:33:31 +01:00
Hugh McMaster
a7833f26c4 Make installation of `freetype-config' optional (#53093).
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
2018-03-08 06:25:13 +01:00
Werner Lemberg
733a21bdbc Make ftlcdfil.c' part of the base' module.
`ftobjs.c' needs `ft_lcd_padding'.

Problem reported by duhuanpeng <548708880@qq.com>.

* modules.cfg (BASE_EXTENSIONS): Don't include `ftlcdfil.c'.

* src/base/ftbase.c: Include `ftlcdfil.c'.
* src/base/rules.mk (BASE_SRC): Add `ftlcdfil.c'.
* src/base/Jamfile (_sources): Adjusted.

* docs/INSTALL.ANY: Updated.
2018-03-05 23:37:17 +01:00
Werner Lemberg
f4a3531655 Make ftfntfmt.c' part of the base' module.
`ftobjs.c' needs `FT_Get_Font_Format'.

Problem reported by duhuanpeng <548708880@qq.com>.

* modules.cfg (BASE_EXTENSIONS): Don't include `ftfntfmt.c'.

* src/base/ftbase.c: Include `ftfntfmt.c'.
* src/base/rules.mk (BASE_SRC): Add `ftfntfmt.c'.
* src/base/Jamfile (_sources): Adjusted.

* docs/INSTALL.ANY: Updated.
2018-03-05 20:45:12 +01:00
Werner Lemberg
efd13c5d1b * src/truetype/ttinterp.c (TT_RunIns): Fix tracing arguments. 2018-03-01 22:17:54 +01:00
Werner Lemberg
0206479158 * builds/unix/configure.raw: Need HarfBuzz 1.3.0 or newer.
Problem reported by Alan Coopersmith <alan.coopersmith@oracle.com>.
2018-03-01 21:34:57 +01:00
Werner Lemberg
713d68ee9f [sfnt] Prefer CBDT'/CBLC' over `glyf' table (#53154). 2018-02-17 18:35:15 +01:00
Werner Lemberg
9fbd0041ca Split off ChangeLog.28. 2018-02-17 10:37:10 +01:00
Werner Lemberg
4a03f17449 [truetype] Integer overflow issues.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=6027

* src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIAP, Ins_MIRP): Use
SUB_LONG; avoid FT_ABS.
2018-02-06 02:23:19 +01:00
Alexei Podtelezhnikov
f4a3255d45 [unix] Use -fvisibility=hidden.
It is now widely recommended that ELF shared libraries hide symbols
except those with explicit __attribute__((visibility("default"))).
This is supported by all major compilers and should rather be an
option in libtool.

* builds/unix/configure.raw: Add -fvisibility=hidden to CFLAGS.
* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
include/freetype/config/ftconfig.h (FT_EXPORT): Use visibility
attribute.
2018-02-04 00:09:02 -05:00
Werner Lemberg
68dddcdcbe [truetype] Better protection against invalid VF data.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5739

Bug introduced in commit 08cd62deedefe217f2ea50e392923ce8b5bc7ac7.

* src/truetype/ttgxvar.c (TT_Set_Var_Design): Always initialize
`normalizedcoords'.
2018-01-27 23:59:30 +01:00
Werner Lemberg
29c759284e * src/truetype/ttinterp.c (Ins_GETVARIATION): Avoid NULL reference.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5736
2018-01-27 14:43:43 +01:00
Werner Lemberg
f438e06972 * src/truetype/ttgxvar.c (tt_set_mm_blend): Minor. 2018-01-27 14:39:15 +01:00
Werner Lemberg
ef48653023 [truetype] Better trace VF instances.
* src/truetype/ttgxvar.c (ft_var_to_normalized): Don't emit number
of coordinates.
(TT_Get_MM_Var): Trace instance indices names.
(TT_Set_Var_Design): Updated.
2018-01-27 13:58:02 +01:00
Werner Lemberg
50f693a78b [truetype] Beautify tracing of VF axis records.
* src/truetype/ttgxvar.c (TT_Get_MM_Var): Show axis records in a
table-like manner.
2018-01-27 10:15:58 +01:00
Werner Lemberg
994eb2b349 [truetype] Fix multiple calls of `FT_Get_MM_Var' (#52955).
* src/truetype/ttgxvar.c (TT_Get_MM_Var): Set
`face->blend->num_axis' in case we have to initialize the
`face->blend'.
2018-01-26 23:17:43 +01:00
Alexei Podtelezhnikov
b1e0209829 [apinames] Anonymous version map for GNU linker.
* src/tools/apinames.c (PROGRAM_VERSION): Set to 0.3.
(OutputFormat): Add `OUTPUT_GNU_VERMAP'.
(names_dump): Handle it.
(usage): Updated.
(main): Handle new command line flag `-wL'.
2018-01-23 22:29:45 -05:00
Alexei Podtelezhnikov
c6a965b4d3 [unix] Call libtool to clean up.
* builds/unix/install.mk (clean_project_unix, distclean_project_unix):
Use libtool.
* builds/freetype.mk: Minor.
2018-01-21 14:29:58 -05:00
Alexei Podtelezhnikov
6ce6685659 * src/base/ftver.rc: Fix mingw-w64 compilation. 2018-01-18 21:29:48 -05:00
Alexei Podtelezhnikov
4b8ccc56d8 [build] Enable VERSIONINFO resource for Cygwin/MinGW.
* builds/unix/configure.raw: Check for resource compiler.
* builds/unix/unix-cc.in: Conditionally set up resource compiler.
* builds/freetype.mk: Add conditional rule for `ftver.rc'.
* src/base/ftver.rc: Copyright notice and year update.
2018-01-18 04:32:52 -05:00
Alexei Podtelezhnikov
fd8000f040 [build] Move VERSIONINFO resource.
* builds/windows/vc2010/freetype.vcxproj: Updated.
* builds/windows/ftver.rc: Move file from here...
* src/base/ftver.rc: ... to here.
2018-01-18 03:58:34 -05:00
Alexei Podtelezhnikov
d2d1750e08 [build] Expand dllexport/dllimport to Cygwin/MinGW.
* include/freetype/config/ftconfig.h: Respect DLL_EXPORT,
s/_MSC_VER/_WIN32/.
* builds/unix/ftconfig.in: Replicate here.
* builds/vms/ftconfig.h: Replicate here.
2018-01-12 23:01:49 -05:00
Alexei Podtelezhnikov
e8b38f899c [build] Improve and document MSVC build.
* include/freetype/config/ftconfig.h: Guard dllexport/dllimport
attributes with _DLL and FT2_DLLIMPORT.
* builds/windows/vc2010/index.html: Update documentation.
2018-01-12 08:57:08 -05:00
Steve Robinson
707cd028b2 * CMakeLists.txt [win32]: Suppress warnings for POSIX functions. 2018-01-10 07:49:43 +01:00
Ewald Hew
cc2f3cdecf [psaux] Correctly handle Flex features (#52846).
* src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO,
cf2_cmdHMOVETO>: Do not move if doing Flex.
2018-01-10 13:28:36 +08:00
Alexei Podtelezhnikov
3f96c0bcc1 * builds/windows/vc2010/freetype.sln: Synchronize with the project. 2018-01-09 22:22:19 -05:00
Werner Lemberg
67a42aa887 * Version 2.9 released.
=======================

Tag sources with `VER-2-9'.

* docs/VERSION.TXT: Add entry for version 2.9.

* 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/windows/ftver.rc,
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.8.1/2.9/, s/281/29/.

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

* builds/unix/configure.raw (version_info): Set to 22:0:16.
* CMakeLists.txt (VERSION_PATCH): Set to 1.
2018-01-08 12:30:04 +01:00
Werner Lemberg
1d6773e6d9 Add check for librt, needed for `ftbench' (#52824).
* builds/unix/configure.raw: Call AC_USE_SYSTEM_EXTENSIONS.
(LIB_CLOCK_GETTIME): Define; this will hold `-lrt' if necessary.

* builds/unix/unix-cc.in (LIB_CLOCK_GETTIME): New variable.
2018-01-07 19:06:19 +01:00
Ewald Hew
21bd9c2f8c [psaux] Fix Type 1 glyphs with too many stem hints.
According to the CFF specification, charstrings can have up to 96 stem
hints. Due to hint replacement routines in Type 1 charstrings, some
glyphs are rejected by the Adobe engine, which implements the above
limit. This fix turns off hinting for such glyphs.

* src/psaux/pshints.c (cf2_hintmap_build): Reset the error from calling
`cf2_hintmask_setAll' on a problematic Type 1 charstring and turn off
hinting.
2018-01-07 16:38:54 +08:00
Werner Lemberg
3758aed760 Add `FT_Done_MM_Var'.
This is necessary in case the application's memory routines differ
from FreeType.  A typical example is a Python application on Windows
that calls FreeType compiled as a DLL via the `ctypes' interface.

* include/freetype/ftmm.h, src/base/ftmm.c (FT_Done_MM_Var): Declare
and define.

* docs/CHANGES: Updated.
2018-01-06 08:39:36 +01:00
Werner Lemberg
029c9b2391 [truetype] Round offsets of glyph components only if hinting is on.
* src/truetype/ttgload.c (TT_Process_Composite_Component): Implement
it.
2018-01-03 19:05:20 +01:00
Werner Lemberg
55d6abea5d * src/truetype/ttgxvar.c (ft_var_to_design): Remove dead code.
This is a better fix than the previous commit, which is now
reverted.
2018-01-03 19:01:15 +01:00
Alexei Podtelezhnikov
20b3e34846 Move internal LCD-related declarations.
* include/freetype/ftlcdfil.h (ft_lcd_padding, ft_lcd_filter_fir):
Move from here...
* include/freetype/internal/ftobjs.h: ... to here.
2018-01-02 22:12:09 -05:00
Alexei Podtelezhnikov
c94d042be6 * include/freetype/config/ftconfig.h (FT_EXPORT, FT_EXPORT_DEF)
[_MSC_VER]: Limit Visual C++ attributes.
2018-01-02 21:38:35 -05:00
Werner Lemberg
ecfdfd4498 [truetype] Make blend/design coordinate round-tripping work.
Behdad reported that setting blend coordinates, then getting design
coordinates did incorrectly return the default instance's
coordinates.

* src/truetype/ttgxvar.c (tt_set_mm_blend): Fix it.
2018-01-03 00:20:11 +01:00
Werner Lemberg
0a0c22569d Update copyright year. 2018-01-02 09:33:57 +01:00
Werner Lemberg
3f090c6843 * src/sfnt/ttcmap.c (tt_cmap2_char_next): Fix endless loop.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4838
2017-12-31 10:32:08 +01:00
Werner Lemberg
0268bf35f0 Synchronize other Windows project files.
* builds/windows/*: Add missing files.
2017-12-31 08:21:08 +01:00
Werner Lemberg
7f82c6db84 Update Visual C 2010 project files.
Problem reported by Hin-Tak.

* builds/windows/vc2010/freetype.vcxproj: Add files `ftbdf.c' and
`ftcid.c'.
Sort entries.
* builds/windows/vc2010/freetype.vcxproj.filter: Ditto.
Fix members of `FT_MODULE' group.
2017-12-31 08:00:16 +01:00
Werner Lemberg
ff5c9928bd * builds/vms/ftconfig.h: Synchronize with unix `ftconfig.in' file. 2017-12-30 01:46:52 +01:00
Werner Lemberg
4f983ab9d0 * builds/unix/ftconfig.in: Synchronize with main `ftconfig.h' file.
Reported by Nikolaus.
2017-12-28 21:55:01 +01:00
Werner Lemberg
14cd073437 Fix compiler warnings.
* src/base/ftbitmap.c (ft_bitmap_assure_buffer): Make `pitch' and
`new_pitch' unsigned.

* src/base/ftpsprop.c: Include FT_INTERNAL_POSTSCRIPT_PROPS_H.
2017-12-27 08:59:46 +01:00
Werner Lemberg
3cc88e2e44 Fixes for `make multi'.
* include/freetype/internal/ftpsprop.h: Use `FT_BASE_CALLBACK'.
(ps_property_get): Harmonize declaration with corresponding
function typedef.

* include/freety[e/internal/fttrace.h: Add `trace_psprops'.

* src/base/ftpsprop.c: Include necessary header files.
(FT_COMPONENT): Define.
(ps_property_set): Tag with `FT_BASE_CALLBACK_DEF'.
(ps_property_get): Tag with `FT_BASE_CALLBACK_DEF'.
Harmonize declaration with corresponding function typedef.
2017-12-27 08:19:09 +01:00
Werner Lemberg
1063690174 Provide support for intra-module callback functions.
This is needed especially for `make multi' with C++.

* include/freetype/config/ftconfig.h (FT_BASE_CALLBACK,
FT_BASE_CALLBACK_DEF): New macros.
2017-12-27 08:13:13 +01:00
Werner Lemberg
dd6330d74b Add missing ChangeLog entry, copyright notices, whitespace, formatting. 2017-12-27 08:06:47 +01:00
Werner Lemberg
08cd62deed Speed up FT_Set_Var_{Design,Blend}_Coordinates if curr == new.
We exit early if the current design or blend coordinates are
identical to the new ones.

* src/truetype/ttgxvar.c (tt_set_mm_blend, TT_Set_Var_Design):
Implement it, returning internal error code -1 if there will be no
variation change.

* src/type1/t1load.c (t1_set_mm_blend): Ditto.

* src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Updated.
2017-12-20 22:06:19 +01:00
Werner Lemberg
0579d545af Update incorrect ChangeLog entry. 2017-12-18 23:45:58 +01:00
Werner Lemberg
2df73b397d [sfnt] Fix charmap type 2 iterator (#52646).
The subsetted demo font of the report that exhibits the bug has a
very unusual type 2 cmap for Unicode(!): It contains only two
sub-headers, one for one-byte characters (covering the range 0x20 to
0xFA), and a second one for higher byte 0x01 (just for character
code U+0131).

Before this commit, the iterator wasn't able to correctly handle a
sub-header for higher byte 0x01.

* src/sfnt/ttcmap.c (tt_cmap2_char_next): Fix character increment
for outer loop.
2017-12-18 23:32:32 +01:00
Matthias Clasen
bdab6578af [truetype] Minor code beautification.
* src/truetype/ttgxvar.c (ft_var_to_normalized): Trace number of
design coordinates.
Simplify code.
2017-12-18 20:45:17 +01:00
Werner Lemberg
068a7a03aa * src/*/*: Only use ft_' and FT_' variants of stdc library stuff. 2017-12-18 20:34:05 +01:00
Werner Lemberg
2fe272aca6 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Add size guard (#52688). 2017-12-18 19:43:18 +01:00
Werner Lemberg
d062c54ce7 [truetype] Fix previous commit.
* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Correctly handle
unhinted phantom points, which must be properly scaled.
2017-12-18 09:41:17 +01:00
Werner Lemberg
e7935f2910 [truetype] Don't apply HVAR and VVAR deltas twice (#52683).
* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Always adjust
`pp1' to `pp4', except if we have an HVAR and/or VVAR table.

* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Handle
alternative code branch identically w.r.t. presence of an HVAR
and/or VVAR table.
2017-12-18 07:29:57 +01:00
Jonathan Kew
361af72eea [truetype] Correctly handle variation font phantom points (#52683).
* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix phantom
point indices.
2017-12-18 07:28:31 +01:00
Jonathan Kew
7d3dfcd4a5 Fix incorrect advance width scaling (#52683).
* src/base/ftadvance.c (FT_Get_Advances): Always respect the
FT_LOAD_NO_SCALE flag if present.
2017-12-17 08:19:51 +01:00
Alexei Podtelezhnikov
d019097bd2 * builds/windows/vc2010/freetype.vcxproj: AfterBuild copy.
* objs/.gitignore: Ignore almost everything.
2017-12-16 22:00:40 -05:00
Werner Lemberg
2c048a8a62 Fix compiler warning (#52640).
* src/base/ftbitmap.c (ft_bitmap_assure_buffer): Remove unused
variable.
2017-12-11 19:24:30 +01:00
Azzuro
a998d48401 * builds/windows/vc2010/freetype.vcxproj: Adjust output directory.
This allows builds with different configurations in parallel.
2017-12-09 14:22:35 +01:00
Werner Lemberg
286b0c9f33 Fix `make setup dos', second try (#52622).
* builds/detect.mk (dos_setup): Don't use literal `>' character at
all.  Mixing the different escaping rules from make, dos, and
windows is too fragile.
2017-12-09 09:41:45 +01:00
Werner Lemberg
ea68f1c8d3 [docmaker] Fix code section parsing.
Stuff like

  {
    <bla>
  }

confused the parser, which incorrectly treated `<bla>' as a markup
tag.

* src/tools/docmaker/content.py (ContentProcessor::process_content):
Apply `re_markup_tags' only outside of code sections.
2017-12-08 20:15:15 +01:00
Werner Lemberg
98ba0c4a37 New `ftdriver.h' file, covering all driver modules.
This reduces redundancy and increases synergy; it also reduces the
number of header files.

* include/freetype/config/ftheader.h (FT_DRIVER_H): New macro.
(FT_AUTOHINTER_H, FT_CFF_DRIVER_H, FT_TRUETYPE_DRIVER_H,
FT_PCF_DRIVER_H, FT_TYPE1_DRIVER_H): Make them aliases to
FT_DRIVER_H.

* include/freetype/ftautoh.h, include/freetype/ftcffdrv.h,
include/freetype/ftpcfdrv.h, include/freetype/ftt1drv.h,
include/freetype/ftttdrv.h: Replaced with...
* include/freetype/ftdriver.h: ...this new file.
(FT_CFF_HINTING_ADOBE, FT_T1_HINTING_ADOBE): Renamed to...
(FT_HINTING_ADOBE): ... this new macro.
(FT_CFF_HINTING_FREETYPE, FT_T1_HINTING_FREETYPE): Renamed to...
(FT_HINTING_FREETYPE): ... this new macro.

* src/*/*: Updated accordingly.
2017-12-08 18:41:49 +01:00
Werner Lemberg
bef8de2a85 Move ftdriver.h' to ftdrv.h'.
* include/freetype/internal/ftdriver.h: Renamed to...
* include/freetype/internal/ftdrv.h: ... this name.

* include/freetype/internal/internal.h (FT_INTERNAL_DRIVER_H):
Updated.
2017-12-08 10:02:12 +01:00
Werner Lemberg
e1090c608b Fix access to uninitalized memory (#52613).
Also reported as

  https://bugs.chromium.org/p/chromium/issues/detail?id=791317

* src/base/ftbitmap.c (ft_bitmap_assure_buffer): If increasing the
bitmap size needs a larger bitmap buffer, assure that the new memory
areas are initialized also.
2017-12-08 09:54:36 +01:00
Werner Lemberg
99df4919fd Fix `make setup dos' (#52622).
* builds/detect.mk (dos_setup): Properly escape literal `>'
character.
2017-12-08 09:48:18 +01:00
Werner Lemberg
d21f995aea Fix C++ compilation.
* src/psaux/psauxmod.h: Use FT_CALLBACK_TABLE macro where necessary.

* src/smooth/ftsmooth.c (ft_smooth_render_generic): Fix warning.
2017-12-07 14:49:03 +01:00
Werner Lemberg
63b91548e0 Fix `make multi'.
* include/freetype/internal/fttrace.h: Remove unused tracing macros.
s/pshalgo2/pshalgo/.
Add `trace_cffdecode'.
* src/pshinter/pshalgo.c (FT_COMPONENT): Updated.

* src/cff/cffload.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
* src/cff/cffobjs.c: Include FT_SERVICE_METRICS_VARIATIONS_H and
FT_SERVICE_CFF_TABLE_LOAD_H.

* src/cid/cidriver.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H.

* src/psaux/cffdecode.c: Include FT_FREETYPE_H and
FT_INTERNAL_DEBUG_H.
(FT_COMPONENT): Define.
* src/psaux/cffdecode.h: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
* src/psaux/psauxmod.h: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
Declare `cff_builder_funcs' and `ps_builder_funcs'.
* src/psaux/psft.c: Include `psobjs.h' and `cffdecode.h'.
* src/psaux/psobjs.c : Include `psauxmod.h'.
2017-12-07 14:33:44 +01:00
Werner Lemberg
7ec1345d13 * include/freetype/config/ftheader.h: Some clean-up.
This commit removes documentation of deprecated macros and does some
minor streamlining.
2017-12-07 14:21:39 +01:00
Werner Lemberg
b85ff56417 * builds/symbian/bld.inf: Updated. 2017-12-06 23:17:23 +01:00