kc3-lang/freetype/src

Branch :


Log

Author Commit Date CI Message
3ce99005 2025-04-26 09:42:44 * src/autofit/afranges.c: Updated to Unicode 16.0. But no support for new scripts (volunteers welcomed).
08a13fe2 2025-04-26 08:31:17 * src/autofit/afranges.c: Updated to Unicode 15.1. But no support for new scripts (volunteers welcomed).
3019fa6c 2025-04-26 08:09:15 * src/autofit/afranges.c: Updated to Unicode 14.0. But no support for new scripts (volunteers welcomed).
373aa744 2025-04-26 07:39:27 * src/autofit/afranges.c: Updated to Unicode 13.0. But no support for new scripts (volunteers welcomed).
12a9f65d 2025-04-26 07:26:34 * src/autofit/afranges.c: Updated to Unicode 12.0. But no support for new scripts (volunteers welcomed).
1019b1c2 2025-04-22 06:20:22 * src/autofit/afadjust.c (af_get_glyph_alternates): Fix endless loop.
b5b3fd57 2025-04-20 10:48:54 * src/afadjust.c: Fix test for newer HarfBuzz version (second try).
05f3cf13 2025-04-20 10:29:32 * src/afadjust.c: Fix test for newer HarfBuzz version.
a64b49cc 2025-04-20 08:00:26 [autofit] Request at least HarfBuzz 7.2.0 for diacritic support. (3/3) This version (from April 2023) added 'SingleSubst' support to `hb_ot_layout_lookup_get_glyph_alternates`.
de98b1ba 2025-04-20 07:32:05 [autofit] Speed up creation of the adjustment database's reverse map. (2/3) Remove the old code and activate the new one.
573201be 2025-04-20 06:27:52 [autofit] Speed up creation of the adjustment database's reverse map. (1/3) As it turns out, the original implementation using `hb_ot_shape_glyphs_closure` is extremely slow if a font has a rich set of OpenType features. For example, this function was called 66954 times while loading font `arial.ttf` version 7.00, increasing FreeType's startup time by a factor of 10, which is unacceptable. The new algorithm uses a completely different, more low-level approach, no longer working with OpenType features but with OpenType lookups. It relies on function `hb_ot_layout_lookup_get_glyph_alternates`, also replacing recursion with a simple loop. In total, this brings the additional startup time back to an acceptable range of a few percent. A side effect of the new approach is that it catches more alternate forms: the old code didn't properly handle script-specific features. To make the change more readable, this commit only adds new code.
9536e472 2025-04-18 06:31:51 * src/autofit/afadjust.c (af_reverse_character_map_new): Check `map` limit. Reported as https://issues.chromium.org/issues/410925355
4fad257a 2025-04-17 22:32:21 * src/base/ftcalc.c (ft_corner_orientation) [!FT_INT32]: Fix up.
d6c29228 2025-04-17 19:36:51 [autofit] Don't access uninitialized memory. Reported as https://bugs.ghostscript.com/show_bug.cgi?id=708295 * src/autofit/aflatin.c (af_glyph_hints_apply_vertical_separation_adjustments): Initialize all array elements of `contour_y_minima` and `contour_y_maxima`.
66e0d25e 2025-04-17 15:37:27 * src/truetype/ttinterp.c (TT_MulFix14,TT_DotFix14)[!FT_INT64]: Sync.
9eecaa07 2025-04-17 12:44:37 * src/truetype/ttinterp.c (TT_DotFix14): Silence UBSAN.
0a650e8c 2025-04-16 22:54:54 * src/base/ftcalc.c: Miscellaneous cleanups.
cc849c32 2025-04-16 19:39:02 [autofit] Avoid crash. Reported as https://issues.oss-fuzz.com/issues/410811029 * src/autofit/aflatin.c (af_remove_segments_containing_point): Check `edge->last`.
ccabe7ac 2025-04-15 18:49:36 [base, truetype] Silence UBSAN (cont'd). * src/truetype/ttinterp.c (TT_MulFix14, TT_DotFix14): Use MUL_INT64. * include/freetype/internal/ftcalc.c (FT_MulFix): Ditto.
dc55f4e6 2025-04-14 21:03:08 [autofit] Avoid unnecessary recomputation of HarfBuzz data. Call the functions once per font instead of once per glyph. * src/autofit/afadjust.c (af_all_glyph_variants): Move code to compute the `feature_tags` and `type_3_lookup_indices` sets to... (af_reverse_character_map_new): ...this function.
d1ac9524 2025-04-14 15:48:33 [autofit] Fix creation of the adjustment database's reverse map. Due to the way the reverse map array gets constructed with HarfBuzz, there might be multiple, identical glyph index entries with different character values in the array. As an example, an OpenType feature like 'unic' might map lowercase glyph 'ae' to uppercase glyph 'AE', in addition to the already present cmap entry for 'AE'. In most cases, this incorrect mapping is harmless (but still wrong). However, there exist some lowercase/uppercase character pairs where the diacritic for the uppercase character is on the other vertical side of the base character as for the lowercase character. An example is U+0122 (LATIN CAPITAL LETTER G WITH CEDILLA) and U+0123 (LATIN SMALL LETTER G WITH CEDILLA): the former has the cedilla below, the latter above. A wrong mapping would thus shift the base glyph 'G' up by a pixel instead of shifting the cedilla down. We fix this by always giving precedence to cmap entries. * src/autofit/afadjust.c (af_reverse_character_map_entry_compare): Do a secondary sort on the character code. (af_reverse_character_map_lookup): Adjust binary search to return the first occurrence of an entry (i.e., the one with the lowest array index). (af_reverse_character_map_new)[FT_CONFIG_OPTION_USE_HARFBUZZ]: Implement cmap priority.
05797069 2025-04-14 09:22:10 [autofit] Reduce adjustment database lookups. This is also in preparation for a follow-up commit. * src/autofit/afadjust.h (af_lookup_vertical_separation_type, af_lookup_tilde_correction_type): Replaced with... (af_adjustment_database_lookup, af_reverse_character_map_lookup): ... this. * src/autofit/afadjust.c (af_adjustment_database_lookup, af_adjustment_database_lookup): Updated. (af_lookup_vertical_separation_type, af_lookup_tilde_correction_type): Removed. (af_reverse_character_map_new)[FT_DEBUG_LEVEL_TRACE]: Updated. * src/autofit/aflatin.c (af_glyph_hints_apply_vertical_separation_adjustments, af_latin_hints_apply): Updated.
233cdea8 2025-04-12 10:32:44 * src/afadjust.c (adjustment_database): Make it complete up to U+017F.
535498a0 2025-04-13 22:11:39 * src/autofit/afadjust.c (af_reverse_character_map_new): Add tracing code.
c34e551c 2025-04-12 07:38:43 * src/afadjust.c: Minor fixes.
218c59a2 2025-04-11 07:38:03 [autofit] Better vertical separation adjustment support. (2/2) * src/autofit/aflatin.c (af_glyph_hints_apply_vertical_separation_adjustments): Handle diacritics with more than a single contour.
52d4573e 2025-04-11 07:30:55 [autofit] Better vertical separation adjustment support. (1/2) Test vertical maxima instead of vertical minima to identify the highest contour (and vice versa to identify the lowest contour). Doing so will allow support of diacritics that consist of more than a single outline. This works because of the topological constraints ensured by the adjustment database. * src/autofit/aflatin.c (af_find_highest_contour, af_glyph_hints_apply_vertical_separation_adjustments): Implement it.
c6106cff 2025-04-10 14:05:14 [autofit] Use new y extrema arrays. * src/autofit/aflatin.c (af_glyph_hints_apply_vertical_separation_adjustments): Implement it.
8d49ccd6 2025-04-10 09:44:58 [autofit] Provide infrastructure for storing y extrema of contours. We need this for better positioning support of diacritics. * src/autofit/afhints.h (AF_GlyphHintsRec): New fields `contour_y_minima` and `contour_y_maxima`, together with its embedded variants. * src/autofit/afhints.c (af_glyph_hints_done, af_glyph_hints_reload): Handle new arrays.
53a5e2e6 2025-04-15 06:58:52 [autofit] Avoid crash. Reported as https://issues.oss-fuzz.com/issues/410609442 * src/autofit/aflatin.c (af_remove_segments_containing_point): Check `edge`.
558bde6e 2025-04-14 21:37:18 [autofit] Fix just introduced heap buffer overflow Reported as https://issues.oss-fuzz.com/issues/410393975 * src/autofit/afadjust.c [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Synchronize with HarfBuzz code.
24ac6c5d 2024-01-29 08:37:54 [autofit] Add GSUB table handling to reverse character map generation. If HarfBuzz is enabled, the reverse character map generation now considers GSUB entries when looking for glyphs that correspond to a code point. * src/autofit/afadjust.c (af_all_glyph_variants_helper, af_all_glyph_variants) [FT_CONFIG_OPTION_USE_HARFBUZZ]: New functions. (af_reverse_character_map_new) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Call new code.
771449f1 2024-01-29 08:32:21 [autofit] Add tilde-unflattening algorithm. * src/autofit/aflatin.c (af_find_highest_contour, af_remove_segments_containing_point, af_latin_remove_tilde_points_from_edges, af_latin_stretch_tilde, af_latin_align_tilde): New functions. (af_latin_hints_apply): Call tilde-unflatting code if necessary.
7099b09e 2024-01-29 08:21:09 [autofit] Implement vertical separation adjustment. * src/autofit/aflatin.c: Include `afadjust.h`. (af_latin_metrics_init): Call `af_reverse_character_map_new`. (af_latin_metrics_done): New function. (af_move_contour_vertically, af_check_contour_horizontal_overlap, af_glyph_hints_apply_vertical_separation_adjustments): New functions. (af_latin_hints_apply): Call `af_glyph_hints_apply_vertical_separation_adjustments`. (af_latin_writing_system_class): Updated. * src/autofit/aftypes.h (AF_StyleMetricsRec): Add `reverse_charmap` field.
14ac6140 2024-01-28 17:35:15 [autofit] Add code for reverse charmaps and adjustment database lookup. * src/autofit/aftypes.h (AF_ReverseMapEntry, AF_ReverseCharacterMap): New structures. * src/autofit/afadjust.c (af_adjustment_database_lookup, af_reverse_character_map_entry_compare, af_reverse_character_map_lookup, af_lookup_vertical_separation_type, af_lookup_tilde_correction_type, af_reverse_character_map_expand, af_reverse_character_map_new, af_reverse_character_map_done): New functions. * src/autofit/afadjust.c: Updated.
c46ebd76 2024-01-28 17:27:39 [autofit] Add adjustment database. * src/autofit/afadjust.c, src/autofit/afadjust.h: New files. * include/freetype/internal/fttrace.h: Add 'afadjust' component. * src/autofit/autofit.c: Include `afadjust.c`. * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afadjust.c`.
f0660df3 2024-01-28 07:38:41 [base] Make `find_unicode_charmap` a base function. This is needed for forthcoming changes in the auto-hinter. * include/freetype/internal/ftobjs.h, src/base/ftobjs.c: Updated.
6b6b643f 2025-04-12 15:06:59 * src/bdf/bdflib.c (hdigits): Removed. Fixes #1325.
58b3598c 2025-04-12 09:18:16 Typos in macros. * include/freetype/internal/ftcalc.h: s/_M_X86/_M_IX86/. * src/truetype/ttinterp.c: s/_M_X86/_M_IX86/.
c88bf8a2 2025-04-11 22:58:26 [base, truetype] Silence UBSAN. * src/truetype/ttinterp.c (TT_MulFix14_64): Use unsigned multiplication. * include/freetype/internal/ftcalc.h (FT_MulFix_64): Ditto.
fb99fd63 2025-04-11 22:57:27 [base, truetype] Synchronize MulFix assembly. * include/freetype/internal/ftcalc.h (FT_MulFix_*), src/truetype/ttinterp.c (TT_MulFix14_*): Synchronize routines.
91753736 2025-04-10 19:58:48 [truetype] Modernize bytecode projections. With 64-bit platforms widely available, it is more efficient to use 64-bit variables readily. It results in noticeable 10% improvement in glyph loading speed. * src/truetype/ttinterp.c (TT_MulFix14, TT_DotFix14) [FT_INT64]: Prioritize available implementation with arguments adjusted based on the use cases.
8f67545d 2025-04-09 13:37:23 [base] Update FT_MulFix inlining. Resolves inconsistencies in 64-bit multiplication discussed in !355. Importantly, FT_MulFix arguments and return value is FT_Long, whatever sizeof FT_Long is on 64-bit platforms: 8 bytes on Linux or 4 bytes on Windows. * include/freetype/internal/ftcalc.h (FT_MulFix_x86_64): Removed. (FT_MulFix_64): Generalize and prioritize the inline implementation for all 64-bit platforms ifdef FT_INT64. * src/base/ftcalc.c (FT_MulFix)[FT_INT64]: Call 'FT_MulFix_64'. * src/base/ftbase.c: Include 'ftcalc.c' after the FT_MulFix callers to enable its inlining.
fc67794e 2025-04-04 19:54:50 Missing header wrappers. * include/freetype/config/integer-types.h, src/smooth/ftgrays.h: Add missing FT_BEGIN_HEADER and FT_END_HEADER. * src/smooth/ftgrays.c: Cosmetics.
82090e67 2025-03-26 00:26:55 [bdf] Clarify callback flow. * src/bdf/bdflib.c (bdf_line_func_t_): Modify callback prototype. (bdf_parse_*_): Updated. (bdf_load_font, bdf_readstream_): Delay callback initiation.
7ede7324 2025-03-25 22:03:23 * src/bdf/bdflib.c (bdf_readstream_): Relocate.
56b53a86 2025-03-25 21:23:46 * src/bdf/bdflib.c (bdf_is_atom_): Do not check tabs.
7ddb53fc 2025-03-25 21:22:52 * src/bdf/bdflib.c (_bdf_strncmp): Macro removed, callers updated.
d0c905c6 2025-02-24 19:13:39 [sfnt/CPAL] Return early if user requested currently-set palette Before, we were loading a palette (again and again) even if the same was requested. Even if the font only had one palette... For a font like NotoColorEmoji that has over 5000 colors in its palette, this was dominating the COLRv1 loading times for HarfBuzz (and I believe all other clients) because they have to set the palette to get access to the colors. * src/base/ftcolor.c (FT_Palette_Select): Check the current palette.
b1f47850 2025-01-28 22:49:21 * src/bdf/bdflib.c (bdf_parse_start_): Move setup of properties.
00a1567a 2025-01-24 22:36:56 [bdf] Treat all comments uniformly. * src/bdf/bdflib.c (bdf_parse_start_): Reject fonts with initial COMMENTs. (bdf_parse_properties_): Skip COMMENTs so that... (bdf_add_property_): Do not make exception for COMMENT. (bdf_parse_glyphs_, bdf_add_comments): Updated.
fdae51cc 2025-01-24 22:03:00 * src/bdf/bdflib.c (BDF_SWIDTH_ADJ_): Remove clashing flag and update.
bfe793cc 2025-01-22 21:17:57 * src/bdf/bdflib.c (bdf_atous_): Remove unnecessary checks.
40a74585 2025-01-22 21:05:22 * src/bdf/bdflib.c (bdf_ato{i.ul.s.us}_]): Remove uncecessary checks.
56131e42 2025-01-22 20:47:56 [bdf] Postpone font default char handling. * src/bdf/bdflib.c (bdf_parse_start_, bdf_add_property_): Delay handling of the default char until... * src/bdf/bdfdrivr.c (BDF_Face_Init): ... handles all other properties.
8bae8706 2025-01-22 20:46:43 [bdf] Postpone font spacing handling. * src/bdf/bdf.h (bdf_font_t): Remove `monowidth`. * src/bdf/bdflib.c (bdf_parse_start_, bdf_add_property_): Delay handling of the font spacing until... * src/bdf/bdfdrivr.c (BDF_Face_Init): ... handles all other properties.
c0a7839e 2025-01-22 19:11:47 [bdf] Postpone font ascent and descent handling. * src/bdf/bdflib.c (bdf_parse_start_, bdf_add_property_): Delay handling of the font ascent and descent until... * src/bdf/bdfdrivr.c (BDF_Face_Init): ... handles all other properties.
c33da8fb 2025-01-22 16:59:44 * src/bdf/bdflib.c (bdf_parse_start_): Relax the header order. We now check that the header is complete in no specific order.
a059b237 2025-01-19 22:39:17 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Fix all shared values. Applying cvar deltas to all shared points was incorrectly omitted. Fixes #1314.
b9e09e33 2025-01-19 12:35:13 * src/bdf/bdflib.c (bdf_parse_glyphs_): Fix tracing.
01c22b36 2025-01-19 11:19:10 [bdf] Tokenize input instead of listing. Instead of cumbersome field list mamangement, we will tokenize input using custom `bdf_strtok_`. * src/bdf/bdflib.c (bdf_list_t_, bdf_list_init_, bdf_list_ensure_, bdf_list_shift_, bdf_list_join_, bdf_list_split_, bdf_set_default_spacing_): Removed. (bdf_strtok_): New function which NUL-terminates the first token at the delimiter position and returns the next token that follows consequtive delimiters. (bdf_parse_*_, bdf_load_font): Updated. * docs/CHANGES: Claim overall 75% performance improvement.
ad7dce77 2025-01-17 20:54:14 * src/bdf/bdflib.c (bdf_parse_start_): Prevent another STARTPROPERTIES. Only one STARTPROPERTIES was permitted in the old flow preventing leaks and overflows. See https://issues.oss-fuzz.com/issues/389968131 https://issues.oss-fuzz.com/issues/390464875
e3a3b39d 2025-01-16 23:25:08 * src/bdf/bdflib.c (bdf_parse_start_): Do not overwrite flags.
d4631a2e 2025-01-16 20:54:33 * src/bdf/bdflib.c (bdf_readstream_): Skip all control characters. This agrees with specifications and makes the code a lot simpler.
02953326 2025-01-16 03:47:14 * src/bdf/bdflib.c (bdf_parse_start_): Reserve space for artificial properties.
ae11e18c 2025-01-15 15:50:12 * src/bdf/bdflib.c (bdf_add_property_): Add extra protection. See https://issues.oss-fuzz.com/issues/389972472 https://issues.oss-fuzz.com/issues/389968131
a0d86e56 2025-01-14 22:58:04 * src/bdf/bdflib.c: Clean up.
a3c68e3b 2025-01-14 22:32:46 [bdf] Use flags instead of options. * src/bdf/bdf.h (bdf_options_t): Removed. (BDF_KEEP_COMMENTS, BDF_KEEP_UNENCODED, BDF_CORRECT_METRICS): Updated to avoid collisions with the other parsing flags. * src/bdf/bdfdrivr.c (BDF_Face_Init): Use default flags explicitly. * src/bdf/bdflib.c (bdf_load_font): Use flags as an argument to initialize the parser. (bdf_set_fedault_spacing_): Default to BDF_PROPORTIONAL explicitly. (bdf_parse_*_): Updated.
a05c2210 2025-01-14 21:11:33 [bdf] Adjust parsing flow and CHARS handling. * src/bdf/bdflib.c (bdf_readstream_): Remove CHARS exception. (bdf_parse_glyphs_): Move glyphs allocation... (bdf_parse_properties_): and missing ascent and descent handling... (bdf_parse_start_): ...to here under CHARS.
0864367a 2025-01-14 18:39:50 * src/bdf/bdflib.c (bdf_readstream_): Tweak variables and loop design.
ee1310ab 2025-01-13 17:19:31 * src/bdf/bdflib.c (bdf_parse_glyphs_): Free unused glyph_name. See https://issues.oss-fuzz.com/issues/389330334.
f2199967 2025-01-13 03:48:28 * src/bdf/bdflib.c (bdf_parse_glyphs_): Store glyph as soon as possible.
aab40d5c 2025-01-12 00:24:42 * src/bdf/bdflib.c (bdf_parse_glyphs_): Avoid possible leak.
bbc445e1 2025-01-11 23:11:07 [bdf] Speed up bitmap parsing. A dedicated parser of bitmap data with minimal error checking and no string comparisons helps to improve performance. * src/bdf/bdflib.c (bdf_parse_bitmap_): New dedicated bitmap parser. (bdf_parse_glyphs_): Pass to `bdf_parse_bitmap_` on BITMAP.
4433c7b7 2025-01-11 18:54:04 * src/bdf/bdflib.c (a2i): Formatting.
ff5872b4 2025-01-10 22:55:13 * src/bdf/bdflib.c (bdf_parse_*_): Minor improvements.
cf451e5f 2025-01-10 22:31:07 * src/bdf/bdf.h (bdf_font_t): Correct `internal` type. * src/bdf/bdflib.c (*): Update users.
1f57020f 2025-01-10 03:23:41 * src/bdf/bdflib.c (bdf_parse_start_): Fix tracing labels.
73318c86 2025-01-08 15:45:32 [cff] Remove size/slot checks. After the previous commit, cff_glyph_load is no longer called without first checking for valid size and glyph objects in FT_Glyph_Load and these checks can be removed downstream. * src/cff/cffdrivr.c (cff_glyph_load): Remove `size` and `glyph` checks. * src/cff/cffgload.c (cff_slot_load): Ditto.
c7a255b4 2025-01-07 19:52:29 * src/cff/cffdrivr.c (cff_get_advances): Do only fast advances. Otherwise, let TT_Get_Advances fall back on cff_load_glyph to do slow advances. This avoids unchecked access to cff_load_glyph and this is how tt_get_advances is implemented.
81330e1f 2025-01-03 22:54:20 * src/truetype/ttgload.c (TT_Load_Glyph): Consolidate flag setting.
5245fd69 2025-01-03 21:26:10 Delay FT_GLYPH_FORMAT_OUTLINE assignmets. This assignmets used to be done prematurely before errors were checked and outlines were actually loaded. Delaying the assignment provides certain protection against careless usage of malformed input that should now remain FT_GLYPH_FORMAT_NONE. * src/cff/cffgload.c (cff_slot_load): Ditto. * src/cid/cidgload.c (cid_slot_load_glyph): Ditto. * src/pfr/pfrobjs.c (pfr_slot_load): Ditto. * src/truetype/ttgload.c (TT_Load_Glyph): Ditto. * src/type1/t1gload.c (T1_Load_Glyph): Ditto.
64f8b7fb 2025-01-02 18:22:24 Remove superfluous outline zeroing. This is already done by `ft_glyphslot_clear`. * src/cff/cffgload.c (cff_slot_load): Do not zero outline fields. * src/cid/cidgload.c (cid_slot_load_glyph: Ditto. * src/pfr/pfrobjs.c (pfr_slot_load): Ditto. * src/truetype/ttgload.c (load_sbit_image): Ditto. * src/type1/t1gload.c (T1_Load_Glyph): Ditto.
10b3b14d 2025-01-01 23:04:14 * src/truetype/ttobjs.c: Abbreviate tracing.
1beb83fd 2025-01-01 22:28:36 * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Refactor `flip`.
abed051e 2025-01-01 14:40:58 [truetype] Consolidate bitmap strike handling. * src/truetype/ttgload.c (TT_Load_Glyph): Relocate omitted whitespace strike handling from here... (load_sbit_image): ... to here.
4ef8eed1 2024-12-31 16:25:50 [truetype] Ingnore FT_LOAD_NO_BITMAP in bitmap-only fonts. For consistency with other bitmap-only fonts, we should ignore this flag of the font is not scalable. * src/truetype/ttgload.c (TT_Load_Glyph): Check if face is scalable when checking for FT_LOAD_NO_BITMAP. * docs/CHANGES: Start new chapter wtith this change.
38272bf8 2024-12-16 14:29:36 [ftstroke] Fix invalid pointer assignement to `arc` In `FT_Stroker_ConicTo` and `FT_Stroker_CubicTo` there is a `bez_stack`. `arc` is initialized with `arc = bez_stack` and is never set to point into any different object. The main loop looks like `while ( arc >= bez_stack )` which is depending on a later `arc -= 2` (or `arc -= 3`) to make `arc` point to before `bez_stack`. However, using pointer subtraction to make `arc` point outside the array is undefined behavior, and attempting to use the value in the loop predicate is "very" undefined behavior. (C99 "Additive operators" 6.5.6.8.) This particular undefined behavior was discovered as either hangs or MemorySantizer issues after "[InstCombine] Infer nuw for gep inbounds from base of object" [0]. With this change, clang can infer that `arc` must always point into the `bez_stack` object and therefore cannot be at a "negative index" so the predicate is always true. [0] https://github.com/llvm/llvm-project/commit/e21ab4d16b555c28ded307571d138f594f33e325 * src/base/ftstroke.c (FT_Stroker_ConicTo, FT_Stroker_CubicTo): test loop exit condition (there are no more arcs to process) before decrementing `arc` Fixes: #1307
59320b2d 2024-12-04 16:55:10 [cff] Fix leak of cmap data When `sfnt->load_face` succeeds it has already loaded any (optional) cmap data. As a result, a subsequent call to `sfnt->load_cmap` will overwrite the cmap data pointer with a new copy of the data but not free the old, leading to a leak. This is a fix for "* src/cff/cffobjs.c (cff_face_init): Better handling of Type0 fonts.". This still allows the cmap to be missing but avoids the leak by only calling `sfnt->load_cmap` when there is no `head` table (the font data is not being loaded as OpenType/CFF). * src/cff/cffobjs.c (cff_face_init): Fix leak Fixes: #1306
3f3e3de3 2024-11-06 06:28:41 * src/cff/cffobjs.c (cff_face_init): Better handling of Type0 fonts. This issue relates to the PDF specification and its usage of CFF-based embedded Type0 fonts. For Type0 fonts containing CID-keyed descendant CFF-based fonts, the glyph index is the CID present in the content stream. As a result, there is no requirement for a 'cmap' table to be present in the font since the glyph indices are derived directly from the CIDs. FreeType throws an error when it doesn’t find a 'cmap' table for such an Open Type font containing CFF outlines. This commit relaxes this requirement for a 'cmap' table for such fonts.
13944366 2024-10-15 18:07:55 Move generic destroy to later in the face and size destruction. * src/base/ftobjs.c (destroy_size, destroy_face): This is such that the generic destroy can be used to call `FT_Done_Library`. For that to work, it needs to call it *after* having removed the face from the respective module.
f02bffad 2024-10-14 11:47:31 * src/truetype/ttgload.c (load_truetype_glyph): Rearrange.
089ccb1b 2024-10-13 12:14:43 * src/smooth/ftgrays.c (gray_convert_glyph): Clear stack pointers. Fixes a dangling pointer warning, see #1299.
5f20c892 2024-10-13 10:20:42 apinames: Fix a buffer overrun for VMS platform. Some output formats may rewrite symbol names during the output, like the concatenation of "64__" suffix on VMS. To estimate sufficient size to store symbol name, pass the output format info to `names_add`. For VMS, `names_add` allocates longer buffer to append "64__". * apinames.c (SUFFIX_VMS_64ADDR): New macro of "64__". (main): Pass the format info to `read_header_file`. (read_header_file): Pass the format info to `names_add`. (names_add): Receive the format info, and reserve the symbol name buffer 4 byte longer in the case of VMS, to append the suffix in `names_dump`.
26b545f3 2024-10-13 11:09:40 apinames: Fix out-of-scope reference of a static array. * apinames.c (names_dump): For WATCOM_LBC format, the DLL name with no suffix is constructed on a static array temp[], but the scope is closed before use it. The declaration of temp[] is moved to the wider scope for the dumping part to refer it.
0dd4eef6 2024-10-10 15:56:22 Fix help message of apinames. * src/tools/apinames.c: The first header file must be given after the options. All arguments after the first header file are dealt as header files to be parsed, regardless with their leading "-". For example, "apinames include/freetype/freetype.h -dFREETYPE.DLL" warns "unable to open -dFREETYPE.DLL". Thus, the "header1" must be given after the arguments to be parsed as the options.
83af801b 2024-09-07 13:44:57 * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Respect metrics_only. Also fixes recursive flip.
30080320 2024-09-06 13:43:47 * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Tweak loop.
98283cb3 2024-09-06 17:03:58 [sfnt] Support sbix graphicType 'flip'. * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Currently undocumented by Apple, this flips the bitmap data horizontally. It is used on macOS in Apple Color Emoji; 19.4d6e1; 2024-02-05 (file `Apple Color Emoji.ttc`). Fixes issue #1282.
d2612e1c 2024-08-26 07:01:19 * src/sfnt/ttcmap.c (tt_cmap*_get_info): Remove casting.