8449 Commits

Author SHA1 Message Date
Alexei Podtelezhnikov
dad4640660 [base] Maintain overall rendering limits.
Reject rendering of outlines that stretch beyond 32767 pixels from
the origin,  which is further restricted to 10922 horizontal pixels
for LCD rendering with ClearType-like algorithms. 16-bit FT_Span is
one of the reasons to have this limit imposed, fixes #1384.

* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Impose global
rendering limits.
2026-01-15 21:09:56 -05:00
Harry Sintonen
a9babbcbc0 * src/autofit/ft-hb-ft.c (ft_hb_ft_reference_table): Use ft_sfree. 2026-01-13 15:39:29 +01:00
Alexei Podtelezhnikov
341049a95b [base] Set ppem-based rendering limits.
Many rendering timeouts occur when the outline stretches far beyond
the Em size.  Limiting the bounding box to 10 Em should reject such
requests.  It is still to possible scribble excessively within the set
limits.  At least, the memory usage will be curtained.

* src/base/ftobjs.c (ft_glyphslot_free_bitmap): Revise limits based
on ppem when available.
2026-01-09 18:22:15 -05:00
Werner Lemberg
b91f75bd02 [autofit] Prevent signed integer overflow.
Reported as

  https://issues.oss-fuzz.com/issues/473887994
  https://issues.oss-fuzz.com/issues/473912282

* src/autofit/afatin.c (af_latin_align_top_tilde,
  af_latin_align_bottom_tilde), src/autofit/afloader.c
  (af_loader_load_glyph): Use `FT_PIX_ROUND_LONG`, `FT_PIX_CEIL_LONG`, and
  `SUB_LONG`.
2026-01-07 07:19:07 +01:00
Werner Lemberg
5f524d04b4 [truetype] Prevent signed integer overflow.
Reported as

  https://issues.oss-fuzz.com/issues/473582311

* src/truetype/ttinterp.c (Ins_MDRP): Use `ADD_LONG` and `SUB_LONG`.
2026-01-06 22:12:18 +01:00
Werner Lemberg
4553f1c396 [autofit] Prevent signed integer overflow.
Reported as

  https://issues.oss-fuzz.com/issues/473582304

* src/autofit/afloader.c (af_loader_load_glyph): Use `ADD_LONG`.
2026-01-06 05:41:15 +01:00
Ben Wagner
26adb9ff98 Fix leak of exec->FDefs in tt_size_init_bytecode 2026-01-05 20:50:05 +00:00
Werner Lemberg
7b72c0f238 [autofit] Prevent signed integer overflow.
Reported as

  https://issues.oss-fuzz.com/issues/471525116

* src/autofit/aflatin.c (af_latin_stretch_top_tilde,
  af_latin_stretch_bottom_tilde): Use `MUL_LONG`.
2026-01-04 07:30:19 +01:00
Celeste Liu
914b474030 [base] Fix support for format 13 charmaps.
According to the OpenType specification of the 'cmap' table, the pair (0,6)
for platform and encoding IDs is used for format 13 charmap tables.  Commit
ba6f3e18 (from 2017-01-17) introduced the `TT_APPLE_ID_FULL_UNICODE` macro
(i.e., encoding_id == 6, added to OpenType 1.8); however, the corresponding
cmap selection code wasn't updated.

Unicode's Last Resort font (https://github.com/unicode-org/last-resort-font)
can be used to test a format 13 charmap.

Fixes issue #1383.

* src/base/ftobjc.s (find_unicode_charmap): Support
  `TT_APPLE_ID_FULL_UNICODE`.

Signed-off-by: Celeste Liu <uwu@coelacanthus.name>
2026-01-04 07:13:27 +01:00
Werner Lemberg
fc85a25584 [ttgxvar] Check for overflow in array size computation.
Problem reported and analyzed by povcfe <povcfe2sec@gmail.com>.

Fixes issue #1382.

* src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Do it.
2026-01-03 08:19:49 +01:00
Ben Wagner
23b6cd27ff Fix leak of exec in tt_size_init_bytecode
* src/truetype/ttobjs.c (tt_size_init_bytecode): Call `TT_Done_Context`
on `exec` if it has not yet been assigned to `size->context`.

Bug: https://issues.oss-fuzz.com/issues/467782706
2025-12-11 12:18:15 -05:00
Alexei Podtelezhnikov
30e45abe93 * src/pcf/pcfdrivr.c (PCF_Face_Init): Handle charmap errors.
This is a quick fix for #1377, more clean-ups to follow.
2025-12-05 00:40:13 -05:00
Werner Lemberg
f75ae3d06d * src/sfnt/ttbdf.c (tt_face_load_bdf_props): Fix size test.
This prevents a potential overflow on 32bit systems.

Problem reported by Zhao Zijie <zijie4@illinois.edu>.
2025-12-04 07:51:39 +01:00
Werner Lemberg
5751c184cc Improve documentation of the 'BDF ' table as used in X11 .otb files.
Also do some minor code formatting.
2025-12-04 07:46:36 +01:00
Werner Lemberg
85161d7622 * src/otvalid/otvcommn.c (otv_FeatureList_validate): Fix array size check.
Reported by Marc Schönefeld.
2025-12-02 11:39:25 +01:00
Werner Lemberg
c54f1cbfa9 [otvalid] Minor formatting and comment fixes. 2025-12-02 11:39:25 +01:00
Alexei Podtelezhnikov
32fc0af222 [pshinter] Slightly simplify BlueShift application.
* src/pshinter/pshglob.c (psh_blues_scale_zones): Just divide.
2025-11-30 15:25:45 -05:00
Alexei Podtelezhnikov
04743f152a [pshinter] Slightly simplify BlueScale application.
* src/pshinter/pshglob.c (psh_globals_new): Update condition and
properly rescale BlueScale.
(psh_blues_scale_zones): Use it directly.
2025-11-30 15:24:42 -05:00
Alexei Podtelezhnikov
d783d336e6 [pshinter] Fix up degenerate contours.
* src/pshinter/pshalgo.c (psh_glyph_compute_extrema): Use correct
goto label and shortcut degenerate contours.
2025-11-30 12:44:04 -05:00
Alexei Podtelezhnikov
e63975ca64 * src/base/ftutil.c (FT_List_Finalize): Delay reading 'data'.
Fixes #1376.
2025-11-29 11:29:44 -05:00
Werner Lemberg
6a25214ae9 * src/autofit/afgsub.c (af_parse_gsub): Always init gsub_lookup_count.
Problem reported by Marc Schönefeld.
2025-11-29 07:00:41 +01:00
Werner Lemberg
582cea9ee1 [autofit] Fix handling of invalid GSUB lookup indices.
Problem reported by Marc Schönefeld.

HarfBuzz validates everything while processing OpenType tables in fonts.
However, the data returned by `hb_ot_layout_collect_lookups` is not
validated.  This commit adds proper checks.

* src/autofit/afglobal.h (AF_FaceGlobals): New field `gsub_lookup_count`.
* src/autofit/afgsub.c (af_parse_gsub): Set it.

* src/autofit/afadjust.c (af_reverse_character_map_new): Test result of
  `hb_set_next`.
2025-11-28 14:23:00 +01:00
Werner Lemberg
b848824d10 [sfnt] Fix GPOS handling.
Problem reported by Marc Schönefeld.

* src/sfnt/ttgpos.c (tt_face_validate_lookup_table, tt_face_load_gpos): Fix
  counting of fitting subtables by correctly rejecting invalid data.
2025-11-28 14:19:37 +01:00
Alexei Podtelezhnikov
590e35791d * builds/toplevel.mk (dist): Replace for with find ... -exec. 2025-11-27 22:21:35 -05:00
Suzuki, Toshiya (鈴木俊哉)
fe0a9649fc * builds/toplevel.mk (dist): -wholename -> -name.
POSIX does not request `find` to support '-wholename'.
`find ... -wholename '*/.git' -prune -o ...` can be
rewritten as `find ... -name '*/.git' -prune -o ...`
for POSIX find.  Fixes issue #1370.
2025-11-27 12:41:52 +00:00
suzuki toshiya
9d99611723 * .gitlab-ci.yml: update macos image to Tahoe:2025-09-30.
Fixes issue #1394.
2025-11-27 19:08:14 +09:00
Alexei Podtelezhnikov
6d4977d660 * builds/toplevel.mk (dist): Improve compatibility with BSD tar. 2025-11-17 12:12:34 -05:00
Alexei Podtelezhnikov
fc9cc5038e [cff] Handle underline position and thickness as integers.
This is done for consistency with Type 1 fonts.

* include/freetype/internal/cfftypes.h (CFF_FontRecDic): Change
the variable types.
* include/cff/cfftoken.h (CFF_FontRecDic): Change the parsing macros.
* src/cff/cffobjs.c (cff_face_init), src/cff/cffload.c (cff_subfont_load),
src/cff/cffdrivr.c (cff_ps_get_font_info): Update users.
2025-11-05 17:23:14 -05:00
suzuki toshiya
c97efd28ca * src/tools/apinames.c (names_add): Remove unrequired cast of
`nm->hash` to int, which has been unrequired since eba2781a.

Fixes issue #1361.
2025-11-05 20:45:35 +09:00
Suzuki, Toshiya (鈴木俊哉)
184910dbef * src/autofit/afgsub.c: Evaluate FT_CONFIG_OPTION_USE_HARFBUZZ
after <freetype/freetype.h> and others.

Fixes issue #1360.
2025-11-05 10:32:03 +00:00
Alexei Podtelezhnikov
3d871c5a0c Minor. 2025-11-04 20:08:04 -05:00
Alexei Podtelezhnikov
3532877461 [cff,cid,type1,type42] Fix up PS_FontInfo.
The italic angle is commonly specified in fractional degrees in
Type 1 fonts and its derivatives.  This change clarifies and fixes
these values.  Note that CFF fonts has always reported them as such,
but truncated the underline position and thickness.  Fixes #1367.

* include/freetype/t1tables.h (PS_FontInfoRec):
Use FT_Fixed for italic_angle.
* src/cid/cidtoken.h, src/type1/t1tokens.h, src/type42/t42parse.c:
Modify the italic_angle token.
* src/cff/cffdrivr.c (cff_ps_get_font_info): Fix the underline
position and thickness.

* docs/CHANGES: Note this change.
2025-11-04 19:21:49 -05:00
Alexei Podtelezhnikov
ae63cc0d13 * src/base/ftadvanc.c (ft_face_scale_advances_): Adjust scaling.
This is safe because advances are short originally.
2025-10-26 13:55:40 -04:00
Alexei Podtelezhnikov
0d410eb9aa [base] Refactor obtaining advances.
* src/base/ftadvanc.c (ft_load_advances): New separate function to
handle slow advances.
(FT_Get_Advance, FT_Get_Advances): Updated.
2025-10-26 13:28:32 -04:00
Alexei Podtelezhnikov
f238830d77 * src/truetype/ttgload.c (tt_loader_init): Reset compatibility.
This may fix #1262, credits to Honnesh Ramachandra.
    https://lists.nongnu.org/archive/html/freetype-devel/2025-10/msg00004.html
2025-10-16 22:35:53 -04:00
Werner Lemberg
4334f009e7 [autofit] Prevent signed integer overflow.
* src/autofit/aflatin.c (af_latin_stretch_top_tilde,
  af_latin_stretch_bottom_tilde, af_latin_align_top_tilde,
  af_latin_align_bottom_tilde,
  af_glyph_hints_apply_vertical_separation_adjustments): Use `ADD_LONG` and
  `SUB_LONG` for values that involve `FT_LONG_MAX` and `FT_LONG_MIN`.

Fixes issue #1363.
2025-09-28 08:13:38 +02:00
Werner Lemberg
7955c9b86a * src/bdf/bdfdriver.c (BDF_Glyph_Load): Use bdf->bdffont->bpp directly.
Fixes issue #1362.
2025-09-24 05:56:34 +02:00
Alan Coopersmith
41eab7e66d * tests/README.md: Fix a script name. 2025-09-17 19:30:55 -04:00
Werner Lemberg
03acd8923b [build] Don't use non-POSIX escapes in sed regexp.
* builds/unix/configure.raw (ftoption_set, ftoption_unset): Avoid `\>`.

Fixes issue #1358.
2025-09-14 11:38:18 +02:00
Werner Lemberg
66e1ec84d5 Typo. 2025-09-14 11:05:41 +02:00
Alexei Podtelezhnikov
7e14994b02 * include/freetype/internal/ftobjs.h (ft_default_raster): Relic removed. 2025-09-12 12:57:50 -04:00
Werner Lemberg
526ec5c47b * Version 2.14.1 released.
==========================

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

* docs/VERSION.TXT: Add entry for version 2.14.1.
* docs/CHANGES: Updated.
* docs/release, docs/README, builds/macs/README: Updated.

* README, src/base/ftver.rc, builds/windows/vc2010/index.html,
builds/windows/visualc/index.html, builds/windows/visualce/index.html,
builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html,
docs/freetype-config.1: s/2.14.0/2.14.1/, s/2140/2141/.

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

* builds/unix/configure.raw (version_info): Set to 26:4:20.
* CMakeLists.txt (VERSION_PATCH): Set to 1.
VER-2-14-1
2025-09-11 13:16:53 +02:00
Behdad Esfahbod
566f8805f3 [base] Fix return values of two Font Variation functions.
* src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
  FT_Set_Var_Blend_Coordinates): Do it.

Fixes issue #1355.
2025-09-10 14:22:49 +02:00
Werner Lemberg
53b9319bff * src/autofit/afgsub.c (af_map_lookup): Fix handling of lookup type 7.
Fixes issue #1356.
2025-09-10 14:14:43 +02:00
Alexei Podtelezhnikov
36f917cc6a * src/truetype/ttinterp.c (TT_Run_Context): Fix IUP tracking bits.
Correctly fixes #1353 and #1349.
2025-09-08 11:03:24 -04:00
Alexei Podtelezhnikov
3ac4907545 Typo! 2025-09-08 10:45:16 -04:00
Alexei Podtelezhnikov
89eba38e62 * src/truetype/ttinterp.c (TT_Run_Context): Reset IUP tracking bits.
Fixes #1353.
2025-09-08 10:43:35 -04:00
Behdad Esfahbod
e969f52986 [autofit] Fix HarfBuzz calling.
* src/autofit/afadjust.c (af_reverse_character_map_new)
  [FT_CONFIG_OPTION_USE_HARFBUZZ]: Use `ft_hb_enabled`.

Fixes issue #1354.
2025-09-08 05:57:19 +02:00
Werner Lemberg
9db5233ceb * docs/release: Use sshpass for SourceForge.net password. 2025-09-08 05:52:11 +02:00
Werner Lemberg
bdd560fc4b * docs/release: Fix scp usage with OpenSSH version >= 9.0.
Starting with this version, OpenSSH uses `scp` with the SFTP protocol as the
default.  However, SFTP is disabled on savannah.gnu.org since January 2025.
2025-09-08 05:42:23 +02:00