Branch


Log

Author Commit Date CI Message
Thomas de Grivel 93066188 2025-11-11T03:07:51 don't set .so.version for android target
Alexei Podtelezhnikov f238830d 2025-10-16T22:35:53 * 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
Werner Lemberg 4334f009 2025-09-28T08:09:48 [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.
Werner Lemberg 7955c9b8 2025-09-24T05:56:34 * src/bdf/bdfdriver.c (BDF_Glyph_Load): Use `bdf->bdffont->bpp` directly. Fixes issue #1362.
Alan Coopersmith 41eab7e6 2025-09-17T16:30:55 * tests/README.md: Fix a script name.
Werner Lemberg 03acd892 2025-09-14T11:34:21 [build] Don't use non-POSIX escapes in sed regexp. * builds/unix/configure.raw (ftoption_set, ftoption_unset): Avoid `\>`. Fixes issue #1358.
Werner Lemberg 66e1ec84 2025-09-14T11:05:41 Typo.
Alexei Podtelezhnikov 7e14994b 2025-09-12T12:57:50 * include/freetype/internal/ftobjs.h (ft_default_raster): Relic removed.
Werner Lemberg 526ec5c4 2025-09-11T13:16:53 * 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.
Behdad Esfahbod 566f8805 2025-09-10T14:22:49 [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.
Werner Lemberg 53b9319b 2025-09-10T14:10:23 * src/autofit/afgsub.c (af_map_lookup): Fix handling of lookup type 7. Fixes issue #1356.
Alexei Podtelezhnikov 36f917cc 2025-09-08T11:03:24 * src/truetype/ttinterp.c (TT_Run_Context): Fix IUP tracking bits. Correctly fixes #1353 and #1349.
Alexei Podtelezhnikov 3ac49075 2025-09-08T10:45:16 Typo!
Alexei Podtelezhnikov 89eba38e 2025-09-08T10:43:35 * src/truetype/ttinterp.c (TT_Run_Context): Reset IUP tracking bits. Fixes #1353.
Behdad Esfahbod e969f529 2025-09-08T05:57:19 [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.
Werner Lemberg 9db5233c 2025-09-08T05:41:37 * docs/release: Use `sshpass` for SourceForge.net password.
Werner Lemberg bdd560fc 2025-09-08T04:51:59 * 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.
Werner Lemberg 007c46eb 2025-09-06T15:55:12 * Version 2.14.0 released. ========================== Tag sources with `VER-2-14-0'. * docs/VERSION.TXT: Add entry for version 2.14.0. * 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.13.3/2.14.0/, s/2133/2140/. * include/freetype/freetype.h (FREETYPE_MINOR): Set to 14. (FREETYPE_PATCH): Set to 0. * builds/unix/configure.raw (version_info): Set to 26:3:20. * CMakeLists.txt (VERSION_MINOR): Set to 14. (VERSION_PATCH): Set to 0.
Werner Lemberg 28223c5f 2025-09-06T16:39:55 * builds/toplevel.mk (do-dist): Download shallow clone of `config.git`. No need for any other commit than the current one.
Werner Lemberg 32cb5390 2025-09-06T06:14:03 Update all copyright notices.
Werner Lemberg d3668e00 2025-09-05T20:21:27 src/sfnt/ttload.c (tt_face_load_any): Correctly handle font containers. Reported as https://issues.oss-fuzz.com/issues/424613326
Jouk Jansen ba7eb5be 2025-08-30T20:34:36 Clean up OpenVMS support. This avoids cluttering the source code with VMS-specific changes. * include/freetype/internal/ftcalc.h [__VMS], src/base/ftcalc.c [vms_auto64_source]: Remove. * builds/vms/patch_ftcalc.sed: New file. * vms_make.com: Change macro definitions while this script is running; we use `GNU sed` to inject the necessary preprocessor code on the fly.
Alexei Podtelezhnikov c6cf32de 2025-08-31T22:39:11 * src/psaux/psauxmod.h (psaux_driver_class): Removed declaration.
Alexei Podtelezhnikov 61a42342 2025-08-29T16:59:50 [base] Use const FT_Module_Class. This is intended to warn against modifying any fields in the class, at compile-time and avoid crashes at run-time. * include/freetype/internal/ftobjs.h (FT_ModuleRec): Do it. * src/base/ftobjs.c (Destroy_Module, FT_Add_Module): Updated.
Alexei Podtelezhnikov 48f91b53 2025-08-27T11:16:07 * src/base/ftobjs.c (FT_Load_Glyph): Reduces scope of 'ttface'.
Alexei Podtelezhnikov c0851258 2025-08-25T12:35:50 * src/truetype/ttinterp.c: Fix some builds.
Werner Lemberg 8cbabc47 2025-08-21T07:30:29 * subprojects/*.wrap: Updated.
Werner Lemberg 23fa1e35 2025-08-21T07:09:15 Updating `CHANGES` file; minor fixes elsewhere (mostly formatting).
Alexei Podtelezhnikov ca0247af 2025-08-19T23:39:02 [truetype] Fix compilation without bytecode. Fixes #1351 and various warnings about unused variables. * src/truetype/ttinterp.c: Put the entire body under #ifdef. * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Relocate some declarations. * src/truetype/ttinterp.h: Remove some #ifdef conditions. * src/truetype/ttobjs.c (tt_size_done): Modified.
Alexei Podtelezhnikov cff66748 2025-08-14T12:39:57 [truetype] Small fix in the incremental interface (again). Fixes #1299, last [-Wdangling-pointer=] warning. * src/truetype/ttgload.c (load_truetype_glyph): Restore original stream on exit unconditionally.
Alexei Podtelezhnikov 6bd5a8cc 2025-08-14T12:23:03 [truetype] Small fix in the incremental interface. Fixes #1299, last [-Wdangling-pointer=] warning. * src/truetype/ttgload.c (load_truetype_glyph): Restore original stream on exit.
Alexei Podtelezhnikov 508c30e0 2025-08-14T10:33:30 * src/autofit/afgsub.c: Fix a warning. Fixes [-Wunused-function] warning without HarfBuzz.
Alexei Podtelezhnikov adc7b855 2025-08-11T15:34:27 * */ftoption.h: Update C99 wording.
Alexei Podtelezhnikov 4c77a696 2025-08-11T13:20:50 * */ftoption.h: Note C99 compliance.
Behdad Esfahbod 670d0b21 2025-08-08T01:34:30 [ttgxvar] Fix caching of scalars when there are intermediate tuples. For example, with `GoogleSansFlex-Regular.ttf` at ROND=100, the 'Q' glyph was misrendering. * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Reset `tupleScalars` earlier.
Jouk Jansen aa2ee67b 2025-08-05T17:34:09 Improvements to OpenVMS support. * include/freetype/internal/ftcalc.h [__VMS]: Undefine `FT_MulFix`. * src/base/ftcalc.c [vms_auto64_source]: Define `FT_MulFix`. * vms_make.com: Also create 32bit version of the FreeType library.
Alexei Podtelezhnikov 27c1cb10 2025-08-04T11:47:10 * docs/CHANGES: Mention 'ftmulti' improvements.
Alexei Podtelezhnikov 42047ae8 2025-08-02T11:54:16 [type1/MM] Correctly reset the default instance. Call T1_Set_MM_WeightVector, which actually sets default weights, instead of TT_Set_MM_Blend, which just centers the axes. * src/type1/t1load.c (T1_Reset_MM_Blend): Do it.
Alexei Podtelezhnikov 08805be5 2025-08-01T11:01:16 [truetype/v40] Fix ROUND_XY_TO_GRID handling. Fixes #1346. * src/truetype/ttgload.c (TT_Process_Composite_Component): Round the x-position unless in backward_compatibility mode.
Alexei Podtelezhnikov 6c18a397 2025-07-30T09:45:53 * src/truetype/ttinterp.c (Ins_MDRP,MIRP): Small tweak.
Alexei Podtelezhnikov 64a0c64a 2025-07-29T22:21:42 [truetype] Tweak size management. * include/freetype/internal/services/svmetric.h (FT_Size_Reset_Func): Update typedef, do not return error. * src/truetype/ttobjs.c (tt_size_reset_height): Move the PPem error handling from here... (tt_size_reset): ... to here to improve readability. src/truetype/ttobjs.h (tt_size_reset_height): Update prototype.
Alexei Podtelezhnikov 8ceba9bb 2025-07-29T19:06:27 [truetype] Relocate color compensation (cont'd). * src/truetype/ttinterp.c (Inc_MDAR,MIAP,MDRP,MIRP): Fix forgotten rounding.
Alexei Podtelezhnikov 47d80cf2 2025-07-29T07:12:24 [truetype] Fix EVEN and ODD instructions. It is possible to have a fractional part after rounding when rounding to half-grid or super-rounding. The specs call to ignore the fractional part in that case. ^ src/truetype/ttinterp.c (Ins_EVEN, Ins_ODD): Fix mask.
Alexei Podtelezhnikov ac662dcd 2025-07-27T19:24:36 * src/truetype/ttinterp.c: Fix comments.
Alexei Podtelezhnikov 63e2c058 2025-07-27T18:33:14 * src/truetype/ttinterp.h (TT_Round_Func): Fix argument. Fixes #1347: function type mismatch.
Alexei Podtelezhnikov 62ca1fd2 2025-07-27T09:40:39 [truetype] Clean up size validation. Rely on non-zero ppem to validate the size object. * src/truetype/ttobjs.h (TT_Size_Merics): Remove the `valid` flag. * src/truetype/ttobjs.c (tt_size_init,done,reset,reset_height): Updated. * src/truetype/ttgload.c (TT_Load_Glyph): Check for non-zero ppem.
Alexei Podtelezhnikov 9e9d539f 2025-07-27T09:28:17 [truetype] Relocate color compensation. The rounding color compensation, which is not used by FreeType, belongs to GS. This is a more logical place for it, next to round_state. * src/truetype/ttobjs.h (TT_GraphicsState): Move compensations here... (TT_Size_Metrics): ... from here. * src/truetype/ttobjs.c (tt_size_init_bytecode): Updated. * src/truetype/ttinterp.c (tt_default_graphics_state): Updated. (Ins_ROUND,NROUND,EVEN,ODD): Updated. (Round_*): Updated.
Alexei Podtelezhnikov d6022b6d 2025-07-26T07:00:51 [smooth] Remove usage of setjmp and longjmp. To support WASM targets with slow or unsupported setjmp and longjmp, we eliminate these calls in favor of an error propagation model. When gray_set_cell is out of cells, it raises an exception which is later handled in gray_convert_glyph_inner. This is a less invasive alternative to !385. * src/smooth/ftgrays.c (gray_set_cell): Raise the overflow exception and redirect all work to `cell_null`. (gray_move,line,conic,cubic_to): Return the exception. (gray_convert_glyph, gray_convert_glyph_inner): Handle the exception.
Werner Lemberg b04db387 2025-07-04T19:52:53 [sfnt] Rewrite GPOS kerning support. (2/2) The previous code had a fundamental flaw: it didn't validate the necessary parts of the 'GPOS' table before accessing it, causing crashes with malformed data (since `TT_CONFIG_OPTION_GPOS_KERNING` is off by default, standard fuzzers don't catch these problems). Additionally, it did a lot of parsing while accessing kerning data, making it rather slow. The new implementation fixes this. After validation, offsets to the 'GPOS' lookup subtables used in the 'kern' feature that correspond to 'simple' kerning (i.e., similar to 'kern' table kerning) are stored in `TT_Face`; this greatly simplifies and accelerates access to the kerning data. Testing with font `SF-Pro.ttf` version '1.00', the validation time for the 'GPOS' table increases the start-up time of `FT_New_Face` by less than 1%, while calls to `FT_Get_Kerning` become about 3.5 times faster. * include/freetype/internal (gpos_kerning_available): Replace with... (gpos_lookups_kerning, num_gpos_lookups_kerning): ... these new fields. Update callers. * src/ttgpos.c [TT_CONFIG_OPTION_GPOS_KERNING]: A new implementation.
Werner Lemberg 8ef26a80 2025-07-04T19:50:48 [sfnt] Rewrite GPOS kerning support. (1/2) This commit removes the previous implementation.
Werner Lemberg ecbc1abf 2025-07-04T06:12:34 [cff] Support GPOS kerning. * src/cff/cffdrivr.c (cff_get_kerning) [TT_CONFIG_OPTION_GPOS_KERNING]: Add code similar to the one in `tt_get_kerning`.
Werner Lemberg fb6a7426 2025-07-04T06:03:37 * src/sfnt/ttkern.h (TT_FACE_HAS_KERNING): Remove macro. Given that we also support (limited) 'GPOS' table kerning if `TT_CONFIG_OPTION_GPOS_KERNING` is defined, the name of this macro is misleading since it only is true for 'kern' table kerning. * src/sfnt/sfobjs.c (sfn_load_face): Replace `TT_FACE_HAS_KERNING` with plain code.
Werner Lemberg 0fd0cf33 2025-07-01T22:15:07 [autofit] Remove `globals->gsub_length`. We completely validate the accessed data from the 'GSUB' table, making this field unnecessary. * src/autofit/afglobal.h (AF_FaceGlobalsRec): Remove `gsub_length` field. * src/autofit/afglobal.c (af_face_globals_new), src/autofit/afgsub.c (af_parse_gsub): Updated.
Werner Lemberg f1cd6dbf 2025-07-01T21:32:47 * src/truetype/ttobjs.c (tt_size_init_bytecode): Correct previous fix. `FT_NEW_ARRAY` expects a signed value, not an unsigned one.
Werner Lemberg 5e671510 2025-07-01T18:09:27 * src/autofit/afgsub.c: Include `tttables.h` and `afgsub.h`. This fixes 'make multi' compilation with clang. Reported as https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/381#note_2984610
Werner Lemberg 01695ea7 2025-07-01T18:06:17 Various minor fixes. As reported by clang 19. * src/autofit/afadjust.c (adjustment_database): Make it static. * src/base/ftdbgmem.c (FT_MEM_SIZE_MIN): Remove unused macro. * src/psaux/psobjs.c (skip_procedure), src/truetype/ttinterp.c (Ins_IF, Ins_ELSE, Ins_FDEF, Ins_IDEF): Add `default` clause.
Werner Lemberg f1be7392 2025-07-01T18:00:12 More signedness fixes. As reported by clang 19. * src/autofit/afadjust.c (add_substitute): Make first argument unsigned. Update all callers. Other minor signedness fixes. (af_reverse_character_map_new): Minor signedness fixes. * src/autofit/afgsub.c (af_hash_insert): Minor signedness fixes. * src/autofit/aflatin.c (af_glyph_hints_apply_vertical_separation_adjustments): Make third argument unsigned. Update all callers. Other minor signedness fixes. (af_latin_hints_apply): Minor signedness fixes. * src/bdf/bdflib.c (bdf_parse_bitmap_): Minor signedness fix. * src/truetype/ttobjs.c (tt_size_init_bytecode): Minor signedness fix.
Werner Lemberg 8d82c9fa 2025-07-01T17:08:37 */*: Fix trivial signedness issues with format strings in trace messages. As reported with clang 19's `-Wformat` option.
Werner Lemberg 346d8fae 2025-07-01T05:16:54 Fix `make multi`. Reported as https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/381#note_2984253 * src/base/fthash.c: Include `ftobjs.h`. * src/autofit/afgsub.c: Include `afglobal.h`.
Alexei Podtelezhnikov 39d85f16 2025-06-30T09:32:19 * MSBuild.sln: Minor.
Werner Lemberg d7e640b9 2025-06-29T07:45:09 [doc] Revise font variation API.
Werner Lemberg 636aede9 2025-06-28T20:25:29 [doc] Use 'Adobe MM', 'TrueType GX', and 'OpenType Font Variations'.
Werner Lemberg 6a982bde 2025-06-14T16:21:44 [autofit] Speed up computation of `af_reverse_character_map_new`. (4/4) With this commit, the start-up time for creating the reverse character map gets reduced from more than 300% to about 25% (as tested with `arial.ttf` version 7.00). * src/autofit/afadjust.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: Include `afgsub.h`. (add_substitute): New auxiliary function to recursively add elements to the reverse cmap. (af_reverse_character_map_new): New code that replaces the old code removed in the previous commit.
Werner Lemberg 9e8b642b 2025-06-13T11:39:43 [autofit] Speed up computation of `af_reverse_character_map_new`. (3/4) Rip out some HarfBuzz code of `af_reverse_character_map_new`. The new code comes immediately in a follow-up commit, making it easier to follow the changes. * src/autofit/afadjust.c (af_get_glyph_alternates_helper, af_get_glyph_alternates): Remove. (af_reverse_character_map_new): Remove code to create the `*map` hash.
Werner Lemberg 9bfb8e80 2025-06-13T11:27:09 [autofit] Speed up computation of `af_reverse_character_map_new`. (2/4) Create an array of GSUB lookup indices for `SingleSubst` and `AlternateSubst` lookup types to exit early if we have different types. Also improve tracing. * src/autofit/afglobal.h (AF_FaceGlobals) [FT_CONFIG_OPTION_USE_HARFBUZZ]: New fields `gsub_length`, `gsub`, and `gsub_lookups_single_alternate`. * src/autofit/afglobal.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: Include `afgsub.h`. (af_face_globals_new) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Call `af_parse_gsub` to fill `gsub_lookups_single_alternate`. (af_face_globals_free): Updated. * src/autofit/afadjust.c (af_get_glyph_alternates_helper): Exit early if we possible. (af_reverse_character_map_new): Trace GSUB lookup indices to be checked.
Werner Lemberg cda418a4 2025-06-13T11:23:14 [autofit] Speed up computation of `af_reverse_character_map_new`. (1/4) Using HarfBuzz's API functions to construct the reverse map is too slow; we have to call `hb_ot_layout_lookup_get_glyph_alternates` far too often because it can only handle a single glyph at a time. For this reason we are going to parse the GSUB table by ourselves. The new non-local functions are `af_parse_gsub` and `af_map_lookup`. * src/autofit/afgsub.c, src/autofit/afgsub.h: New files for parsing, validating, and mapping the `SingleSubst` and `AlternateSubst` subtable types of a GSUB table. * src/autofit/autofit.c, src/autofit/rules.mk (AUTOF_DRV_SRC): Updated.
Werner Lemberg 2ab0357d 2025-06-12T23:15:22 [base] Add no-overwrite hash insert functions. * src/base/fthash.c (ft_hash_num_insert_no_overwrite, ft_hash_str_insert_no_overwrite): New functions. * include/freetype/internal/fthash.h: Updated.
Werner Lemberg 820df387 2025-06-02T16:16:06 [base] Add iterators for `FT_Hash`. * src/base/fthash.c (ft_hash_num_iterator, ft_hash_str_iterator): New functions. * include/freetype/internal/fthash.h: Updated.
Werner Lemberg 61bacf3d 2025-06-18T14:57:56 Set minimum HarfBuzz version back to 2.0.0. Due to the new GSUB parsing we no longer need `hb_ot_layout_lookup_get_glyph_alternates`. This partially reverts commit 5d2fd7608a9. * CMakeLists.txt (HARFBUZZ_MIN_VERSION), meson.build (harfbuzz_dep), builds/unix/configure.raw (harfbuzz_pkg): Set version to 2.0.0. * src/autofit/ft-hb-decls.h: Remove entry for `hb_ot_layout_lookup_get_glyph_alternates`.
Werner Lemberg 58be4879 2025-06-24T13:31:10 [truetype] Add comment to explain heuristic limit for twilight points.
Alexei Podtelezhnikov 43940e4c 2025-06-23T11:04:43 [truetype] Restore non-persistent CVT and storage. According to specifications, CVT and storage area may or may not be persistent after modifications by a glyf program. FreeType had always reset them, which was broken by the last commit. * src/truetype/ttinterp.c (TT_Load_Context): Set CVT and storage here. * src/truetype.ttobjs.c (tt_size_run_prep): Prioritize TT_Load_Context. (tt_size_init_bytecode): Allocate but not set CVT and storage area.
Alexei Podtelezhnikov 36ddd0cb 2025-06-22T12:13:48 [truetype] Deduplicate 'codeRangeTable'. * src/truetype/ttinterp.c (TT_Load_Context, TT_Save_Context): Do not copy 'codeRangeTable'. * src/truetype/ttobjs.h (TT_Size): Remove 'codeRangeTable'. (TT_CodeRange_Tag, TT_CodeRange, TT_DefArray): Moved to... * src/truetype/ttinterp.h: ... this header.1
Alexei Podtelezhnikov c9cbfacb 2025-06-21T23:30:24 [truetype] Simplify bytecode allocations. To avoid repeated synchronization, some TT_Size allocations are moved TT_ExecContext for good. The memory blocks are also consolidated. * src/truetype/ttinterp.c (TT_{Load,Save,Done}_Context): Remove synchronization and stack management. * src/truetype/ttobjs.c (tt_size_{init,done}_bytecode): Manage allocations and assign them to the execution context. (tt_size_run_prep): Updated.
Alexei Podtelezhnikov 4c2437ef 2025-06-21T22:59:29 [truetype] Rework handling of rendering mode in bytecode. This replaces a large number of confusing boolean constructs that describe the target rendering mode in the execution context with the straight mode variable. It might fix some hidden bugs when FT_LOAD_TARGET_XXX were used as flags, which they are not. The condition that triggers the CV program re-execution is simplified. These events due the rendering mode change are rather rare and unexpected and, therefore, should not be over-analyzed. In v40, all mode changes now trigger the CV program. In v35, only switches to/from mono do. * src/truetype/ttinterp.h (TT_ExecContext): Replace 'grayscale', 'grayscale_cleartype', 'subpixel_hinting_lean', and 'vertical_lcd_lean' with the rendering 'mode'. * src/truetype/ttinterp.c (Ins_GETINFO): Updated. * src/truetype/ttgload.c (tt_loader_init): Replace 'prep' re-execution trigger and update 'backward_compatibility' condition. (tt_loader_set_pp): Updated.
Alexei Podtelezhnikov 0e38fa75 2025-06-20T22:22:05 * src/truetype/{ttinterp.c,ttobjs.c}: Minor.
Alexei Podtelezhnikov 19770604 2025-06-20T21:48:14 [truetype] Clean up bytecode execution triggers. This avoids executing the CV program twice and cleans up the use of 'fpgm' and 'prep' triggers * src/truetype/ttgload.c (tt_loader_init): Call 'tt_size_init_bytecode' and 'tt_size_run_prep' explicitly and avoid the call repetition. * src/truetype/ttobjs.c (tt_size_ready_bytecode): Removed as unused. (tt_size_init, tt_size_init_bytecode, tt_size_done_bytecode): Remove some 'fpgm' and 'prep' triggers and update. (tt_size_run_fpgm, tt_size_run_prep): Do not set the pedantic flag here. * src/truetype/ttobjs.h: Update signatures.
Alexei Podtelezhnikov b647de09 2025-06-20T20:34:10 * src/truetype/ttgload.c (tt_loader_init, load_sbit_image): Clean up.
Alexei Podtelezhnikov 2041c65c 2025-06-20T20:20:54 [truetype] Simplify twilight zone management. * include/freetype/internal/tttypes.h (TT_GlyphZone): Remove 'memory'. * src/truetype/ttobjs.c (tt_glyphzone_done): Use 'memory' as argument. (tt_glyphzone_new, tt_glyphzone_done): Allocate/free as a single block. (tt_size_init_bytecode, tt_size_done_bytecode): Updated. * src/truetype/ttobjs.h (tt_glyphzone_done): Updated signature.
Behdad Esfahbod 3ccc27dc 2025-06-19T08:06:53 [autofit] Really fix handling of `RTLD_DEFAULT`. This commit actually implements what commit 43ec023e1a7 describes. * src/autofit/ft-hb.c (FT_RTLD_FLAGS): New macro for `dlopen`; it uses `RTLD_GLOBAL` only if `RTLD_DEFAULT` is available.
Alexei Podtelezhnikov 738905b3 2025-06-14T20:18:48 [truetype] Revise twilight zone initiation. This assures that twilight zone is reset before each CV program execution, including after the rendering mode switch. Fixes #1344. * src/truetype/ttobjs.c (tt_size_ready_bytecode): Relocate the GS the twilight zone initiation from here... (tt_size_run_prep): ... to this function, sho that it is always done prior to the CV program execution. * src/truetype/ttobjs.c (TT_Run_Context): Set twilight zone here... (TT_Load_Context): ... rather than here, as it used to be.
Alexei Podtelezhnikov 04f68052 2025-06-12T21:02:57 * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Remove check. The highest (sign) attribute bit is reserved and should be zero. It is harmless to omit this check however. Fixes #1342.
Werner Lemberg fc051dc0 2025-06-12T10:20:07 [autofit] Ignore virtual glyph indices from GSUB lookups. Reported as https://issues.chromium.org/issues/420401651 * src/autofit/afadjust.c (af_reverse_character_map_new): Implement it.
Alexei Podtelezhnikov 3c14c525 2025-06-11T15:32:11 [truetype] Clean up TT_GlyphZone. * include/freetype/internal/tttypes.h (TT_GlyphZone): Delete fields. * src/truetype/ttobjs.c (tt_glyphzone_new, tt_glyphzone_done, tt_size_init_bytecode): Updated.
Alexei Podtelezhnikov 1529bc6e 2025-06-11T07:41:01 [truetype] Use FT_ARRAY_ZERO. * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Updated. * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids, tt_size_ready_bytecode): Updated.
Alexei Podtelezhnikov 5ab9e5c5 2025-06-08T07:51:08 [truetype] Rearrange bytecode run. This is a minor change with large code rearrangements. * src/truetype/ttinterp.c (TT_RunIns): Just loop through instructions and move all setup to... (TT_Run_Context): ... here; relocated. (Compute_Round): Replaced by simple assignment, removed.
Alexei Podtelezhnikov 68c62e19 2025-06-07T22:15:18 [truetype] Relocate the interpreter pointer. This reduces dereferencing when calling the interpreter. * include/freetype/internal/tttypes.h (TT_Face): Move it from here... * src/truetype/ttinterp.h (TT_ExecContext): ... to here. * src/truetype/ttobjs.c (tt_size_init_bytecode): Move its initialization * src/truetype/ttinterp.c (TT_New_Context): ... to here. (TT_Run_Context): Updated.
Alexei Podtelezhnikov ecfefd8c 2025-06-07T22:12:45 [truetype] Clean up the loader initiation. * include/freetype/internal/tttypes.h (TT_LoaderRec): Remove unused field. * src/truetype/ttgload.c (tt_loader_init): Refactor.
Alexei Podtelezhnikov 5631650b 2025-06-07T22:09:28 [truetype] Modify bytecode initiation. This reduces the number of function calls and data copying events. * src/truetype/ttinterp.c (TT_Goto_CodeRange): Merge into... (TT_Set_CodeRange): ... this function. (TT_Load_Context): Do not set up any zones, copy GS, or prepare the execution... (TT_Run_Context): ... do this here instead.. * src/truetype/ttinterp.c (TT_Set_CodeRange): Update signature. * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Call TT_Run_Context. * src/truetype/ttgload.c (TT_Hint_Glyph, tt_loader_init): Updated.
Alexei Podtelezhnikov 70281e0f 2025-06-07T21:59:50 [truetype] Modify the graphics state management. Instead of restoring persistent GS variables, we only save modifications permitted by the CVT program. This reduces the context manipulations. * src/truetype/ttobjs.h (TT_GraphicsState): Reorder fields. * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Do not alter the context. * src/truetype/ttgload.c (TT_Hint_Glyph): Do not reset GS. (tt_loader_init): Fix potential issue in 'instruct_control' handling. * src/truetype/ttinterp.c (TT_Run_Context): Fully reset GS. (TT_Load_Conext): Rearrange and remove the 'size' check, already performed in FT_Load_Glyph. (TT_Save_Context): Save only modifiable GS parts. (tt_default_graphics_state): Updated. * src/truetype/ttinterp.h (TT_Run_Context): Update signature.
Werner Lemberg a67b2bab 2025-06-10T12:11:41 [gxvar] Really fix setting of named-instance to Regular. This fixes an ommission in commit cf06661c51. * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize `error`.
Werner Lemberg d736e741 2025-06-10T05:09:58 Two more link fixes.
Werner Lemberg 7f559fbe 2025-06-10T04:55:43 Update links. Found with `linkchecker --check-extern index.html` running locally in the 'freetype-web' repository.
Behdad Esfahbod cf06661c 2025-05-31T15:57:41 Fix setting of named-instance to Regular Fixes https://gitlab.freedesktop.org/freetype/freetype/-/issues/1341 And more elaborate avoidance of loading face->blend if all coords are zero.
Alexei Podtelezhnikov 320b72a2 2025-06-04T07:51:46 * src/type42/t42objs.c (T42_Size_Init): Fix uninitialized use. Found by Ozkan Sezer.
Ozkan Sezer bd28cf7a 2025-06-04T08:55:04 [autofit] Fix `-Wunused-but-set-variable` warning in Windows builds. With this commit, the following warning gets removed. ``` In file included from src/autofit/autofit.c:21:0: src/autofit/ft-hb.c: In function 'ft_hb_funcs_init': src/autofit/ft-hb.c:75:35: warning: variable 'version_atleast' set but not used [-Wunused-but-set-variable] ft_hb_version_atleast_func_t version_atleast = NULL; ^~~~~~~~~~~~~~~ ``` * src/autofit/ft-hb.c (ft_hb_funcs_init): Move `NULL` check of `version_atleast` out of ifdefs.
Ozkan Sezer 5bc20817 2025-06-04T08:21:50 [build] Revise visibility attributes usage in autotools and CMake. * CMakeLists.txt: Set `C_VISIBILITY_PRESET` to hidden for non-Windows only. Windows handles exports with `DLL_EXPORT` defined, and old MinGW toolchains emit a lot of warnings about visibility attributes not being supported in this configuration. * build/unix/configure.raw: Revise visibility attributes checks by compiling a better test program with `-Werror` in `CFLAGS` so that warnings correctly indicate unsupported configurations.
Ozkan Sezer 81f839a7 2025-06-03T23:15:32 * CMakeLists.txt: Add support for `FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC`. This commit introduces a new CMake option `FT_DYNAMIC_HARFBUZZ`.
Ozkan Sezer 1518bc83 2025-06-03T12:38:38 * src/autofit/ft-hb.c: Fix definition of `_GNU_SOURCE`. Commit 43ec023e1a730f defined the macro too late.
Werner Lemberg 2adb5361 2025-06-03T10:35:16 Replace 'www.freetype.org' with 'freetype.org'.
Ozkan Sezer f0679e75 2025-05-29T07:20:04 * builds/unix/configure.raw: Fix HarfBuzz library detection for MinGW. Set `have_harfbuzz*` variables explicitly to dynamic for MinGW, since Windows uses its own `LoadLibrary` call. This fixes a MinGW configuration error: ``` checking for HARFBUZZ... no checking for dlopen in -lc... no checking for dlopen in -ldl... no configure: error: harfbuzz support requested but library not found ```