Commit Graph

6512 Commits

Author SHA1 Message Date
Ben Wagner 335528e11e Improve auto-hinter handling of bitmap fonts (#54681).
For bitmap fonts, `FT_Load_Glyph' should either return an error or
not set the format to `FT_GLYPH_FORMAT_OUTLINE'.  However, in this
case `FT_Load_Glyph' calls into the auto-hinter which calls back
into `FT_Load_Glyph' with `FT_LOAD_NO_SCALE' in the flags, which
marks the glyph as `FT_GLYPH_FORMAT_OUTLINE' with an empty path
(even though it doesn't have any path).  It appears that the
auto-hinter should not be called when the face doesn't have
outlines.  The current test for using the auto-hinter in
`FT_Load_Glyph' checks if the driver supports scalable outlines, but
not if the face supports scalable outlines.

* src/base/ftobjs.c (FT_Load_Glyph): Directly check whether we have
scalable outlines.
2018-09-21 11:27:50 +02:00
Werner Lemberg c168cc3b1b [raster] Fix disappearing vertical lines (#54589).
* src/raster/ftraster.c (Vertical_Sweep_Span): Handle special case
where both left and right outline exactly pass pixel centers.
2018-09-21 11:09:27 +02:00
Werner Lemberg 493aa68f5c [base] Some comments. 2018-09-21 08:32:22 +02:00
Alexei Podtelezhnikov 2a9850c4fc * src/base/ftobjs.c (ft_glyphslot_reset_bimap): Tiny rounding tweak.
This adds pixels in case a contour goes through the center
and they need to be turned on in the b/w rasterizer.
2018-09-20 22:40:32 -04:00
Alexei Podtelezhnikov c1b21f47b4 [pcf] Replace charmap implementation.
PCF comes with charmap lookup table, aka PCF encodings.  Using it
directly makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times
faster than the original BDF-like binary searches.

* src/pcf/pcf.h (PCF_EncodingRec): Removed.
(PCF_FaceRec): Remove `nencodings' and `encodings'.
* src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Replaced.
* src/pcf/pcfread.c (pcf_get_encodings): Store data differently.
2018-09-20 22:14:46 -04:00
Werner Lemberg 8e95068053 [base] Remove unused function `FT_GlyphLoader_CopyPoints'.
* include/freetype/internal/ftgloadr.h, src/base/ftgloadr.c
(FT_GlyphLoader_CopyPoints): Do it.
2018-09-20 06:26:34 +02:00
Alexei Podtelezhnikov 7f93c977e7 [pcf] Prepare to replace charmap implementation.
* src/pcf/pcf.h (PCF_Face): Updated to include...
(PCF_EncRec): ... this new structure to store charmap geometry.

* src/pcf/pcfread.c (pcf_get_encodings): Store charmap geometry.
2018-09-19 22:45:45 -04:00
Alexei Podtelezhnikov d629c2ba24 Remove unused fields.
* src/pcf.h (PCF_FaceRec): Remove `charmap' and `charmap_handle'.
* src/bdfdrvr.h (BDF_FaceRec): Ditto.
* src/winfonts/winfnt.h (FNT_FaceRec): Ditto.
2018-09-18 17:11:48 -04:00
Werner Lemberg dfddc2d975 [pshinter] Handle numeric overflow.
Reported as

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

* src/pshinter/pshglob.c: Include FT_INTERNAL_CALC_H.
(psh_blues_snap_stems): Mask numeric overflow.
2018-09-17 08:03:57 +02:00
Werner Lemberg b8dd404d13 freetype.h: Add warning w.r.t. B/W hinting and rendering (#54589). 2018-09-16 07:22:23 +02:00
Werner Lemberg de0aabcd0d [sfnt] Comment fix. 2018-09-15 06:14:18 +02:00
Werner Lemberg 10e54d04b9 [truetype] Some fixes for VF checks.
Reported as

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

* src/truetype/ttgxvar.c (ft_var_load_gvar): Properly exit memory
frame if we have invalid glyph variation data offsets.
(tt_face_vary_cvt): Protect against missing `tuplecoords' array.
Fix typo.
2018-09-13 21:47:35 +02:00
Werner Lemberg 7665914ccd * src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Fix last commit. 2018-09-13 08:58:49 +02:00
Werner Lemberg a5818ed1e1 * src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Check `result'.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10316
2018-09-13 08:46:44 +02:00
John Tytgat 6b53300b01 [sfnt] Better PS name handling (#54629).
* src/sfnt/sfdriver (IS_WIN, IS_APPLE): Omit language ID checks.
(get_win_string, get_apple_string): Return NULL when the PostScript
font name characters is not according to specification.
(get_win_string): Make trace output work if the high byte if
non-zero.
(sfnt_get_var_ps_name, sfnt_get_ps_name): Previously we preferred
Win PS name (when there is also an Apple PS name); change this into
a fallback to Apple PS name in case the Win PS name is invalid.
2018-09-12 08:08:09 +02:00
Werner Lemberg 65681e6dc1 [truetype] Improve VF check.
Triggered by

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

* src/truetype/ttgxvar.c (ft_var_load_gvar): Use better limit check
for `tupleCount'.
2018-09-12 07:40:49 +02:00
Werner Lemberg 53c5e4bd87 * src/truetype/ttgxvar.c (ft_var_load_gvar): Check `glyphoffsets'. 2018-09-12 07:27:30 +02:00
Armin Hasitzka 7b855ed9cf * src/pshinter/pshrec.c (t2_hints_stems): Mask numeric overflow.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10215
2018-09-10 23:41:04 +01:00
Werner Lemberg fea435fbf8 [sfnt] Comment improvement. 2018-09-09 09:46:29 +02:00
Ben Wagner 0805c4a488 * builds/freetype.mk (refdoc-venv): Ensure python version (#54631). 2018-09-09 09:25:58 +02:00
Werner Lemberg 7bf2028250 Typo. 2018-09-07 06:43:19 +02:00
Werner Lemberg 1c04eed76f [truetype] Fix assertion failure.
Triggered by

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

* src/truetype/ttgload.c (load_truetype_glyph): Reintroduce
`opened_frame' (removed in a change from 2018-08-26) to handle
dealloation of the second frame.
2018-09-07 06:40:55 +02:00
Werner Lemberg f8af8fba78 Synchronize `ftdebug.c' files.
* builds/amiga/src/base/ftdebug.c, builds/wince/ftdebug.c,
builds/windows/ftdebug.c: Synchronize with `src/base/ftdebug.c'.
2018-09-05 12:16:56 +02:00
Werner Lemberg 97c7944f9e Synchronize `ftconfig' files. 2018-09-05 11:45:05 +02:00
Nikhil Ramakrishnan a748ae4635 * docs/DOCGUIDE: Minor. 2018-09-05 11:12:01 +05:30
Nikhil Ramakrishnan 77aa02660e Add documentation guidelines file.
* docs/DOCGUIDE: New file.
2018-09-05 11:07:20 +05:30
Werner Lemberg 48f93e648e * devel/ftoption.h: Synchronize with master `ftoption.h'. 2018-09-04 21:19:26 +02:00
Werner Lemberg c485bece6b Typo (#54618). 2018-09-04 21:05:06 +02:00
Werner Lemberg 9789c75b1a More '...' vs. `...` fixes in API documentation. 2018-09-04 10:37:44 +02:00
Werner Lemberg 01a5d326bb Make `/****...' comments in public headers uniformly end on column 77. 2018-09-04 08:00:58 +02:00
Alexei Podtelezhnikov 6a4229c4b0 * docs/DEBUG: s/trace_//. 2018-09-03 22:43:39 -04:00
Nikhil Ramakrishnan 7da5589c75 [docwriter] Don't break code snippets accross lines.
Reported as

  http://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00124.html

* docs/reference/markdown/stylesheets/extra.css (.md-typeset code):
Add rule `white-space'.
2018-09-03 16:45:28 +05:30
Werner Lemberg 1061748256 include/freettype/config:*.*: Convert comments to Markdown syntax.
Also some minor documentation fixes.
2018-09-03 10:37:57 +02:00
Werner Lemberg 76a52465c1 */*: s/PSNames/psnames/.
Only tracing messages are affected.
2018-09-03 09:08:47 +02:00
Werner Lemberg 475f6d25cb [sfnt] Fix heap buffer overflow in CPAL handling.
* src/sfnt/ttcpal.c (tt_face_palette_set): Fix boundary test.
(tt_face_load_cpal): Updated.
2018-09-03 09:00:58 +02:00
Werner Lemberg 9be656bb0c Remove `FT_Outline_{New,Done}_Internal'.
These public API functions(!) were always undocumented and have
escaped all clean-up efforts until now.

* include/freetype/ftoutln.h (FT_Outline_New_Internal,
FT_Outline_Done_Internal): Removed.

* src/base/ftoutln.h (FT_Outline_New_Internal,
FT_Outline_Done_Internal): Merge into...
(FT_Outline_New, FT_Outline_Done): ... these functions.

* docs/README: Updated.
2018-09-01 11:04:58 +02:00
Alexei Podtelezhnikov 809d5125af * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Check glyph format. 2018-08-31 22:49:19 -04:00
Armin Hasitzka 4b49a8079f [errors] Refine the macro logic surrounding `FT_Error_String'.
* include/freetype/fterrors.h (FT_INCLUDE_ERR_PROTOS,
FT_ERR_PROTOS_DEFINED): Undefine `FT_INCLUDE_ERR_PROTOS' after
checking it and introduce a new macro that takes proper care of
multiple-inclusion protection.
2018-08-31 20:26:46 +01:00
Werner Lemberg c6df41e319 Whitespace. 2018-08-31 20:10:38 +02:00
Werner Lemberg 9a323e4762 * src/base/ftdebug.c (FT_Throw): Restore missing `FT_UNUSED' calls. 2018-08-31 20:09:21 +02:00
Werner Lemberg aff04e91f6 * src/base/ftdebug.c (FT_Throw): Reduce chattiness. 2018-08-31 14:57:36 +02:00
Werner Lemberg 83525bdd10 Minor comments. 2018-08-31 07:37:15 +02:00
Werner Lemberg d91f752b77 Whitespace. 2018-08-31 07:34:30 +02:00
Werner Lemberg 423fce2e3e Add link to OpenType's composite glyph description. 2018-08-31 06:59:44 +02:00
Werner Lemberg 0d4ca13865 * src/autofit/afhints.c (af_glyph_hints_reload): Add initialization. 2018-08-31 06:53:52 +02:00
Alexei Podtelezhnikov 1dacbd893d Consolidate bitmap presetting and size assessment.
* include/freetype/internal/ftobjs.h (ft_glyphslot_preset_bitmap):
Change return type.
* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Return the bitmap
size assessment.

* src/raster/ftrend1.c (ft_raster1_render): Use it to refuse the
rendering of enourmous or far-fetched outlines.
* src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.
2018-08-30 23:28:30 -04:00
Alexei Podtelezhnikov ca980b4cf1 * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Correct mono. 2018-08-30 21:51:18 -04:00
Armin Hasitzka 35efb103fe [errors] Introduce a macro to control `FT_Error_String'.
* devel/ftoption.h (FT_CONFIG_OPTION_ERROR_STRINGS),
include/freetype/config/ftoption.h (FT_CONFIG_OPTION_ERROR_STRINGS):
New macro.
2018-08-30 14:30:46 +02:00
Armin Hasitzka d20dc3928b [errors] Introduce `FT_Error_String'.
* include/freetype/fterrors.h (FT_Error_String),
src/base/fterrors.c (FT_Error_String): Implement `FT_Error_String'.

* src/base/ftbase.c, src/base/Jamfile (_source),
src/base/rules.mk (BASE_SRC): Add `fterrors.c' to the build logic.

* src/base/ftdebug.c (FT_Throw): Use `FT_Error_String'.
2018-08-30 14:09:04 +02:00
Werner Lemberg c0ccf75012 [autofit] Trace `before' and `after' edges of strong points.
* src/autofit/afhints.h (AF_PointRec) [FT_DEBUG_AUTOFIT]: New arrays
`before' and `after'.

* src/autofit/afhints.c (af_get_strong_edge_index): New auxiliary
function.
(af_glyph_hints_dump_points): Trace `before' and `after' edges.
(af_glyph_hints_align_strong_points) [FT_DEBUG_AUTOFIT]: Set
`before' and `after' information.
2018-08-30 09:56:09 +02:00