Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| 2a790a9f | 2024-02-28 17:45:19 | [cff, truetype] Always set up default variable instance. For default variable instances `cff_face_init` did not set the blend. This mostly worked as later use of the unset blend produced the default variation. However, if a user called `TT_Get_MM_Var` the blend would be partially set up, but not fully. In particular the number of axes, the axis definitions, and the instance locations would be set up, but not the current instance location (`coords` and `normalizedcoords`). This could lead to the default instances of CFF2 fonts erroring on any use of `blend`. Ensure the default variable instance is fully set up by always calling `FT_Set_Named_Instance` on a variable face. * src/cff/cffobjs.c (cff_face_init): Call `FT_Set_Named_Instance` on default instances. * src/truetype/ttobjs.c (tt_face_init): Ditto. Fixes #1268. | ||
| 546237e1 | 2024-02-23 11:55:53 | * src/truetype/ttgxvar.c (ft_var_to_normalized): Integer overflow. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66543 | ||
| 47574f7e | 2024-01-27 11:11:22 | Update all copyright notices. | ||
| 4f0256c1 | 2024-01-27 10:47:10 | * src/sfnt/ttgpos.c (tt_gpos_get_glyph_class): Fix warning C4018. | ||
| 8f286c86 | 2024-01-19 16:42:48 | Add support for kerning from 'GPOS' tables. This commit adds support for kerning from 'GPOS' tables, while maintaining support for basic 'kern' tables. `FT_HAS_KERNING` will be true for a font with either available and `FT_Get_Kerning` will still use the basic 'kern' table data if avilable, otherwise check the GPOS 'kern' feature. This feature is disabled by default; it can be enabled with the `TT_CONFIG_OPTION_GPOS_KERNING` flag. Only basic kerning (pair positioning with just an x advance) is supported from the GPOS layout features; support for that was added to make the existing `FT_Get_Kerning` API more consistently functional. FreeType does not intend to extend itself to further GPOS functionality though; a higher-level library like HarfBuzz can be used instead for that. * include/freetype/config/ftoption.h, include/devel/ftoption.h (TT_CONFIG_OPTION_GPOS_KERNING): New configuration option. * include/freetype/internal/fttrace.h: Add `ttgpos` trace handler. * include/freetype/internal/sfnt.h (SFNT_Interface): Add `load_gpos` and `get_gpos_kerning` fields. (FT_DEFINE_SFNT_INTERFACE): Updated. * include/freetype/internal/tttypes.h: Include `fttypes.h`. (TT_FaceRec) [TT_CONFIG_OPTION_GPOS_KERNING]: Add `gpos_table` and `gpos_kerning_available` fields. * src/sfnt/ttgpos.c, src/sfnt/ttgpos.h: New files. * src/sfnt/sfdriver.c [TT_CONFIG_OPTION_GPOS_KERNING]: Include `ttgpos.h`. (sfnt_interface): Updated. * src/sfnt/sfnt.c: Include `ttgpos.c`. * src/sfnt/sfobjs.c [TT_CONFIG_OPTION_GPOS_KERNING]: Include `ttgpos.h`. (sfnt_load_face) [TT_CONFIG_OPTION_GPOS_KERNING]: Load and free GPOS kerning data; check GPOS kerning availability. * src/truetype/ttdriver.c (tt_get_kerning): Use GPOS kerning if there's no 'kern' table. | ||
| 57617782 | 2024-01-14 13:03:51 | [smooth] Remove SSE2. As a result of 7b308a29dd10, the regular 64-bit execution is now faster than SSE2. The rendering speed of script fonts at 64 ppem or larger is improved by about 3% without SSE2. See !314 for the testing results. * src/smooth/ftgrays.c (gray_render_conic)[FT_INT64]: Remove SSE2 code. | ||
| 7bac4d14 | 2024-01-08 20:25:31 | * src/sfnt/ttcolr.c (find_base_glyph_v1_record): Fix build in C90 mode. | ||
| cc081d7c | 2024-01-06 19:22:36 | [base] Fix up Mac resource forks and dfonts. * src/base/ftobjs.c (IsMacResource): Assign `face_index`. * src/base/ftmac.c (FT_New_Face_From_Suitcase): Ditto after rework. | ||
| 4a85ff0b | 2024-01-04 21:38:51 | [sfnt] Restrict POST version 1.0. A font has surfaced with `post` version 1.0 and fewer than 258 glyphs. Its glyphs did not correspond to their names. We now reject such `post` strictly following specifications. * src/sfnt/ttpost.c (tt_face_get_ps_name): Check the number of glyphs for version 1.0. | ||
| 57c4252a | 2024-01-02 17:55:33 | [sfnt] Guard access in 'COLR' v1 glyph binary search. Reported as https://bugs.chromium.org/p/chromium/issues/detail?id=1505216 * src/sfnt/ttcolr.c (find_base_glyph_v1_record): Guard access of the search pointer during binary search. The pointer needs to be checked as we go as the test that compares number of v1 glyphs with table size at the time of loading the table is not sufficient on its own. A scenario is possible in which the `BaseGlyphRecord` list extends into non-`BaseGlyphRecord` parts of the 'COLR' v1 table (but passed the size comparison check). Then, at those locations, invalid glyph ID values are read and may provoke an invalid read due to reassigning min and max values during the binary search. | ||
| 8eab5110 | 2023-12-14 06:59:05 | [CFF] Extract `BlueValues` as `Fixed` rather than `Int`. This is a follow-up to commit 26a7f047, [cff] Make blend operator work with floats in private dicts. which addressed the 'party baseline' bug. However, the reporting user indicated that the default location and some other points in design space rendered OK, but other points in design space still had problems. The most obvious issue being that the x-heights of lower-case letters did not align; see https://github.com/adobe-fonts/source-serif/issues/121#issuecomment-1773794136 After some analysis we determined that this was due to an interaction between `BlueValue` rounding and the zone-based algorithm. In short, for a point to be considered in a zone it must fall within the bounds of the zone. (There is a slop factor in some cases, but only a very small one.) In the Adobe-contributed side of the code, point values are not integer-rounded, instead they're kept as (some form of) fixed. Rounding just the `BlueValues` means that points that need to be considered within a zone will fall outside of it at some points in design space. The majority of this patch changes the storage and parsing of `BlueValues` to keep them as `FT_Fixed`. No significant code changes were needed because the values are converted to `Fixed` anyway when stored in `CF_BlueRec`. No attempt was made to address problems in the older pshinter code beyond converting the values from `FT_Fixed` to `FT_Short` when copying the private dictionary. (However, as the point values are also rounded in that code, the problem is much less likely to occur, although inconsistency between rounding and truncation could cause an analogous problem.) * include/freetype/internal/cfftypes.h (CFF_PrivateRec): Use `FT_Fixed` for `blue_values`, `other_blues`, `family_blues`, and `family_other_blues`. * src/cff/cffload.c (cff_blend_doBlend): Updated. * src/cff/cffobjs.c (CFF_fixedToInt): New macro. (cff_make_private_dict): Use it. * src/cff/cffparse.h (cff_kind_delta_fixed): New enum value. * src/cff/cffparse.c (do_fixed): Updated. (CFF_FIELD_DELTA, CFF_FIELD_DELTA_FIXED, CFF_DELTA_KIND): New set of macros, replacing `CFF_FIELD_DELTA`. (cff_parser_run): Updated to handle fixed-float deltas. * src/cff/cfftoken.h: Updated to use `CFF_FIELD_DELTA_FIXED` for blue values. * src/psaux/psblues.c (cf2_blueToFixed): Removed, no longer needed. (cf2_blues_init): Updated. * src/pxaux/psft.c, src/pxaux/psft.h (cf2_getBlueValues, cf2_getOtherBlues, cf2_getFamilyBlues, cf2_getFamilyOtherBlues): Updated signatures. * src/psaux/psobjs.c (t1_make_subfont): Updated. | ||
| 6f2bf6a5 | 2023-12-14 06:55:33 | [psaux] Improve tracing. * src/psaux/psintrp.c (cf2_doBlend, cf2_interpT2CharString [cf2_cmdBLEND]): Show blended values. | ||
| 9bf72966 | 2023-12-14 06:11:43 | * src/truetype/ttgxvar.c (ft_var_to_normalized): Fix undefined left-shift. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=63723 | ||
| 01f23c39 | 2023-12-01 23:13:28 | * src/raster/ftraster.c (Draw_Sweep): Swap stub conditions. | ||
| 5999d47d | 2023-12-01 20:50:16 | * src/raster/ftmisc.h (FT_MulDiv): Remove unused copy. | ||
| 8f255c89 | 2023-11-27 22:44:36 | [raster] Speed up Bézier arches with extrema. While it is recommended to have an explicit point at each curve extrema, they might be missing or outline could be rotated. This leads to excessive bisections in raster to find them. This change helps to decrease the number of bisections. The scanline intersections remain monotonous, of course. * src/raster/ftraster.c (Conic_To, Cubic_To): Check that control points cross the scanlines to bisect. | ||
| efbae547 | 2023-11-24 10:23:36 | [raster] Eliminate intensive flow checking. * src/raster/ftraster.c (Draw_Sweep): Pass the flow increment. (Increment): Accept the flow increment. | ||
| 63d3a37e | 2023-11-23 17:50:04 | * src/raster/ftraster.c: Comments, defines, includes, cleanups. | ||
| df39b017 | 2023-11-21 18:12:45 | * src/raster/ftraster.c (FT_Outline_Get_CBox ) [STANDALONE_]: Removed. | ||
| c62027d9 | 2023-11-21 16:54:25 | * src/raster/ftraster.c (Draw_Sweep): No-fault return. (Render_Single_Pass): Updated. | ||
| d77dd24b | 2023-11-21 15:16:56 | [raster] Sweep polishing. * src/raster/ftraster.c (*_Sweep_Span): Polish. (*_Sweep_Drop): Restore tracing, polish. (Draw_Sweep): Simplify the dropout processing loop. | ||
| da8e4289 | 2023-11-21 00:53:50 | [raster] Rearrange dropout control. This reduces the code duplication. * src/raster/ftraster.c (Function_Sweep_Span): Change signature. (Vertical_Sweep_Drop, Horizontal_Sweep_Drop): Focus on pixel setting and move duplicated the dropout control logic to... (Draw_Sweep): ... this function and refactor. (Vertical_Sweep_Span, Horizontal_Sweep_Span): Minor. | ||
| d7c72ff9 | 2023-11-20 22:46:36 | [raster] Use bitwise dropout mode interpretation. * src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop, Draw_Sweep, Render_GLyph): Interpret dropout mode using bit masks. | ||
| 050a3207 | 2023-11-15 23:41:56 | [raster] Keep only bottom y-turns. This results in noticeable performance improvement. * src/raster/ftraster.c (Insert_Y_Turns): All bottom y-turns are still sorted and stored; only the maximum top y-turn is recorded now. The function is renamed. (End_Profile): Updated accordingly. (Convert_Glyph): Reserve space for the top value. | ||
| fa59e0d6 | 2023-11-15 16:55:57 | * src/raster/ftraster.c (End_Profile): Reduce branching. (InsNew): Tweak condition. | ||
| c580926f | 2023-11-15 15:17:50 | * src/raster/ftraster.c (Draw_Sweep): Use more natural loop. | ||
| b0265ccd | 2023-11-14 23:32:06 | [raster] Dissolve a loop. * src/raster/ftraster.c (End_Profile): Set initial `X` here... (Draw_Sweep): ... instead of here; delay the `start` decrement. | ||
| 6dc2ecb7 | 2023-11-14 23:06:41 | * src/raster/ftraster.c: Comments. | ||
| aec7e717 | 2023-11-14 16:47:34 | [raster] Stylistic changes. * src/raster/ftraster.c (Line_To): Code it similar to curves; shortcut the flat lines here... (Line_Up): ... instead of here. | ||
| d1b3ef77 | 2023-11-14 15:54:52 | [raster] Revise overshoot setting. * src/raster/ftraster.c (New_Profile, End_Profile): Deal with overshoots locally. (Line_To, Conic_To, Cubic_To): Update callers. | ||
| 667aad58 | 2023-11-14 15:10:52 | * src/raster/ftraster.c (Conic_To, Cubic_To): Fix recent regression. | ||
| 6e7ef168 | 2023-11-13 22:07:42 | * src/raster/ftraster.c (Increment): Minor tweak. | ||
| e9359e29 | 2023-11-12 23:01:49 | [raster] Get rid of the fresh flag. * src/raster/ftraster.c (black_TWorker): Remove the fresh flag. (New_Profile): Set the starting scanline here based on the current coordinate and initialize the joint crossing if necessary. (Line_Up, Bezier_Up): Do not deal with fresh and joint starts at all. (Line_Down, Bezier_Down): Simplify. (Conic_To, Cubic_To): Update the current coordinate after each subsection. | ||
| d5e8686d | 2023-11-11 21:10:29 | [raster] Get rid of the joint flag. * src/raster/ftraster.c (Line_Up, Bezier_Up): Deal with the scanline joints directly based on the initial y-coordinate. (New_Profile, black_TWorker): Remove the boolean flag. | ||
| 9cd403bc | 2023-11-11 10:18:53 | * src/raster/ftraster.c (Line_Up, Bezier_Up): Check "between" earlier. | ||
| 028b0d5c | 2023-11-10 23:25:26 | * src/raster/ftraster.c (Line_Up): Updated and fixed up. This largely synchronizes the entries into `Line_Up` and `Bezier_Up`. Minor bugs in the remainder calculations and accumulations are fixed. | ||
| d5973932 | 2023-11-09 22:52:14 | * src/raster/ftraster.c (End_Profile, Convert_Glyph): Clean up. | ||
| e9a81e4d | 2023-11-09 22:31:36 | * src/raster/ftraster.c (Bezier_Up): Improve joint and loop. | ||
| 6338f2a6 | 2023-11-06 18:56:38 | [raster] Harmonize target bitmap navigation. * src/raster/ftraster.c (black_TWorker): Store signed maximum indexes in both directions instead of unsigned dimensions of the original bitmap. (*_Sweep_*, Render_Glyph, ft_black_render): Updated all users. | ||
| e9202737 | 2023-11-05 23:12:56 | * src/raster/ftraster.c (Bezier_Up): Improve flow. | ||
| 8a2ca26b | 2023-11-05 22:34:16 | [raster] Reshuffle code for readability. * src/raster/ftraster.c (Render_Glyph): Setup the rendering pool here. (ft_black_render): Setup the target bitmap helpers here. | ||
| 9e86fb80 | 2023-11-03 23:59:05 | [raster] Improve profile accounting during sweeping. * src/raster/ftraster.c (TProfile): Get rid of `countL`. (Draw_Sweep): Use `start` for countdown to activation. (Horizontal_Sweep_Drop, Vertical_Sweep_Drop): Rely on `height` and `offset` to verify profile ends for the stub detection. | ||
| 32081d81 | 2023-11-03 23:10:41 | [raster] Consolidate profile increment to the next line. * src/raster/ftraster.c (s/Sort/Increment): Rename this function to reflect its true purpose, delete exhausted profiles here... (Draw_Sweep): ... instead of here. | ||
| 046c4fc7 | 2023-11-03 22:34:37 | [raster] Instantly remove profiles from linked lists. * src/raster/ftraster.c (DelOld): Remove loopy function. (Draw_Sweep): Implement instant profile removal. | ||
| 6d6607b8 | 2023-11-02 22:09:18 | [raster] Modify the split condition. While curving close to a pixel center, vertical and horizontal pass might split the curve differently and cause a rare dropout. This makes the split condition invariant of the sweep direction and more robust. * src/raster/ftraster.c (Bezier_Up): Modify the split condition. | ||
| f2e76e83 | 2023-11-02 22:08:04 | [raster] Remove the jitter exception. The jitter exception used to be applied when two neighboring pixels were barely inside the outline. One the left one was turned on then, which contradicts the OpenType specifications. Intended to remove glitches, it caused disappearing lines and was softened by adding an exception to the exception (#54589). * src/raster/ftraster.c (Vertical_Sweep_Span): Drop the jitter exception. | ||
| dc519d06 | 2023-10-31 15:01:32 | [raster] Simplify dropout detection. * src/raster/ftrater.c (Draw_Sweep): Use a single dropout condition. | ||
| 4e2d1f04 | 2023-10-30 22:46:32 | [raster] Simplify sweeping entry and exit. * src/raster/ftraster.c (Draw_Sweep): Use y-turns to set the range, correctly set the initial position, directly loop through y_turns, and remove a 5-gray remnant at exit. | ||
| 55d0287c | 2023-10-25 23:23:30 | [raster] Switch to routine Int instead of Short. This is mostly cosmetic and removes a few casts, plus Short is promoted to Int in calculations anyway. * src/raster/ftraster.c (Vertical_Sweep_Init, Vertical_Sweep_Span, Vertical_Sweep_Drop, Horizontal_Sweep_Init, Horizontal_Sweep_Span, Horizontal_Sweep_Drop, Draw_Sweep): Mostly s/Short/Int/ and remove casting. | ||
| 8c5ec8dd | 2023-10-23 22:48:34 | [raster] Increase the raster pool density. This only helps to delay the pool overflow and bisections to larger sizes and benefits only very intricate glyphs at reasonable sizes. * src/raster/ftraster.c (TProfile): Use Int instead of Long or PLong when it is sufficient. (New_Profile, End_Profuile, Bezier_Up, Sort): Updated accordingly. | ||
| a0e10a87 | 2023-10-23 17:47:10 | [raster] Slightly improve the pool design. * src/raster/ftraster.c (TProfile): Include the variable array member and repackage with pointers first. (New_Profile): Advance the top using the variable array pointer. | ||
| d1e894b1 | 2023-10-22 13:08:36 | [raster] Clean up sweeping. * src/raster/ftraster.c (Draw_Sweep): Zero initialize the working lists directly and remove unnecessary y-turn checks. (Init_Linked): Removed. | ||
| 09ae6eb6 | 2023-10-22 08:13:35 | * src/raster/ftraster.c (Insert_Y_Turn): Improve flow. | ||
| fab53f7b | 2023-10-21 19:08:20 | * src/pcf/pcfutil.c (BSWAP16): Limit clang support. These ancient builtins have been supported by clang since 2013. We condition it somewhat stricter but still around 2017. This is more portable than `__has_builtin`. Fixes #1260. | ||
| 4e61303a | 2023-10-18 23:13:13 | [raster] Small optimizations. * src/raster/ftraster.c (New_Profile): Set important fields only and delay setting `gProfile` until... (End_Profile): ... it is checked to be valid here. (Convert_Glyph): Updated. | ||
| a35da2c0 | 2023-10-18 18:44:00 | * src/raster/ftraster.c (Convert_Glyph): Remove redundant check. | ||
| 3fa5c845 | 2023-10-17 23:56:23 | [raster] Fix linked profiles in contour loops. This fixes a subtle bug when the last profile in a contour was not properly short-circuited if it was still empty at `End_Profile`. We finalize all linking in `Finalize_Profile_List` now and do nothing else there. The turns are added in `End_Profile`. * src/raster/ftraster.c (Insert_Y_Turn): Moved up unchanged. (End_Profile): Take care of turns but set only preliminary linking. (Finalize_Profile_Table): Take care of linking and null-termination. (Convert_Glyph): Adjusted accordingly. | ||
| 749b8f9d | 2023-10-14 22:28:06 | * src/raster/ftraster.c: Improve tracing. | ||
| 153c038e | 2023-10-13 15:22:32 | [raster] Improve profile accounting. * src/raster/ftraster.c (End_Profile): Do not initiate next profile. (New_Profile): Fully initiate new profile. (Convert_Glyph): Clean up variables, initialize `fProfile` here. | ||
| f09c5e58 | 2023-10-13 13:44:39 | * src/raster/ftraster.c (Convert_Glyph): Fix null-dereference. | ||
| c7fa00bf | 2023-10-13 00:16:02 | [raster] Fix pool overflow checking. * src/raster/ftraster.c (New_Profile, End_Profile): Check for overflow immediately. (Convert_Glyph, Render_Single_Pass): Fix boundaries. | ||
| 14bcb286 | 2023-10-12 22:44:46 | [raster] Miscellaneous clean-ups. * src/raster/ftraster.c (New_Profile): Use NULL. (End_Profile): Optimize variables. (Convert_Glyph): Do not initialize `cProfile` yet. (Render_Single_Pass): Tracing. | ||
| 322e580b | 2023-10-09 22:22:24 | * src/smooth/ftgrays.c: Move the sweep functions... ... out of the setjmp/longjmp scope for readability. | ||
| 84cd2e98 | 2023-10-09 22:11:41 | * src/raster/ftraster.c: Tracing updates. | ||
| 7b308a29 | 2023-09-28 22:56:15 | * src/smooth/ftgrays.c (gray_render_conic) [SSE2]: Improve flow. | ||
| e0e5b838 | 2023-09-25 22:26:15 | * src/gxvalid/gxvcommn.h (GXV_USHORT_TO_SHORT): Removed. | ||
| 49781ab7 | 2023-09-24 20:09:17 | Comment typos. | ||
| 73490681 | 2023-09-24 19:39:10 | * src/base/ftcalc.c (FT_MOVE_SIGN): Enclose assignments. | ||
| c4073d82 | 2023-09-19 22:29:14 | [psaux] Use `FT_SqrtFixed`. * src/psaux/cffdecode.c <cff_op_sqrt>: Call `FT_SqrtFixed`. * src/psaux/psintrp.c <cf2_escSQRT>: Ditto. | ||
| 95b0fe2a | 2023-09-19 22:26:32 | [base] Reintroduce `FT_SqrtFixed`. The general square root calculations are not necessary in FreeType. For vector normalization or length, FreeType uses special functions. It is, however, required in the legacy CFF specifications. * src/base/ftcalc.c (FT_SqrtFixed): New function that uses either Babylonian or bit-wise algorithm, whichever is faster for the given situation. * include/freetype/internal/ftcalc.h (FT_SqrtFixed): Declare it. | ||
| babe6af1 | 2023-09-18 15:01:26 | * src/base/ftcalc.c /* FT_SqrtFixed */: Fix defunct overflow. | ||
| d7b63a96 | 2023-09-14 13:00:07 | * src/tools/apinames.c (read_header_file): Typos. | ||
| 6eb5f2be | 2023-09-13 17:02:31 | Update 2 files - /src/base/ftcalc.c - /include/freetype/internal/ftcalc.h | ||
| 16f311d7 | 2023-09-12 18:35:01 | [base] Fix typo to correct predicate for call * src/base/ftobj.c (FT_Get_Color_Glyph_Paint): check `get_colr_glyph_paint` before calling `get_colr_glyph_paint` and not `get_colr_layer` | ||
| 7d45cf2c | 2023-09-11 20:45:16 | * src/psaux/cffdecode.c (cff_op_sqrt): Correct upper limit. | ||
| 18eb9355 | 2023-09-11 17:00:49 | * src/psaux/cffdecode.c (cff_op_sqrt): Improve initial guess. | ||
| 30b0ce73 | 2023-09-11 16:34:36 | src/psaux/psintrp.c (cf2_escSQRT): Improve initial guess. The worst number of iterations decreased from 11 to 5. | ||
| 17db21f3 | 2023-09-10 22:34:17 | * src/type1/t1afm.c (t1_get_index): Restore `strlen` call. This reverts commit 8ed6d97446f2f3e5523da62eefbbf32ef7c1290e and fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=62246 | ||
| 446720a2 | 2023-09-09 23:01:13 | * src/cff/cffparse.c (CFF_Field_Handler): Some s/0/NULL/. | ||
| 8d0897b3 | 2023-09-09 22:20:00 | [type1, cid, type42] Post-cleanup. * include/freetype/internal/psaux.h (T1_FIELD_ZERO): Terminating macro. * src/cid/cidload.c (cid_parse_dict): Use while-loop. * src/type1/t1load.c (parse_dict): Ditto. * src/type42/t42parse.c (t42_parse_dict): Ditto. | ||
| 3302e2f6 | 2023-09-09 17:24:34 | Update forgotten array termini. * src/cid/cidload.c (cid_field_records): Account for added `len`. * src/type1/t1load.c (t1_keywords): Ditto. * src/type42/t42parse.c (t42_keywords): Ditto. | ||
| 7ad9d57c | 2023-09-09 15:19:06 | [type1, cid, type42] Streamline dictionary parsing. When matching the keywords, we avoid calculating their lengths by checking the stored values. This itself is a sufficient pre-check before diving into `memcmp`. Therefore, we remove explicit check of the first characters. * include/freetype/internal/psaux.h (T1_FieldRec): Store length. * src/cid/cidload.c (cid_parse_dict): Use `memcmp` and stored length. * src/type1/t1load.c (parse_dict): Ditto. * src/type42/t42parse.c (t42_parse_dict): Ditto. | ||
| 8ed6d974 | 2023-09-09 15:13:55 | * src/type1/t1afm.c (t1_get_index): Avoid `strlen` call. Instead, we check the terminal zero. | ||
| 68f1b932 | 2023-09-08 16:23:05 | * src/type1/t1driver.c (t1_ps_get_font_value): Avoid redundant null. | ||
| 9c51e21e | 2023-09-07 23:50:35 | [cff, truetype] Improve prefix and suffix removal. * src/cff/cffobjs.c (remove_style): Rewrite using pointers. (remove_subset_prefix): Unwrap loop and use `memmove`. * src/truetype/ttobjs.c (tt_skip_pdffont_random_tag): Unwrap loop and avoid `strlen`. | ||
| 4904d1eb | 2023-09-06 22:58:46 | * src/sfnt/ttpost.c (load_format_20): Micro-optimize. | ||
| 45903920 | 2023-09-05 08:07:17 | [autofit] Fix synchronization mistake between FreeType and ttfautohint. Found by Behdad. * src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix array size of `blue_sorted`: FreeType doesn't have artificial blue zones. | ||
| ad201739 | 2023-09-04 19:22:43 | [autofit] Fix typos. This also reduces the used heap size by a large factor. From Behdad. * src/autofit/afcjk.h (AF_CJKAxisRec): Use `AF_BLUE_STRINGSET_MAX_LEN`. * src/autofit/aflatin.h (AF_LatinAxisRec): Ditto. | ||
| 000b26a3 | 2023-08-30 23:03:02 | * src/sfnt/ttpost.c (load_format_20): Rework tracing. | ||
| 2f7abe48 | 2023-08-29 19:18:43 | Comment added. | ||
| c46c4b8e | 2023-08-29 17:52:06 | * src/sfnt/ttpost.c (load_format_20): Permit long names. Fixes #1254. | ||
| 2d9fce53 | 2023-08-27 07:56:38 | [gzip] Update sources to zlib 1.13. | ||
| 920c5502 | 2023-08-25 19:51:30 | * Version 2.13.2 released. ========================== Tag sources with `VER-2-13-2'. * docs/VERSION.TXT: Add entry for version 2.13.2. * 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.1/2.13.2/, s/2131/2132/. * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. * builds/unix/configure.raw (version_info): Set to 26:1:20. * CMakeLists.txt (VERSION_PATCH): Set to 2. | ||
| 0c817334 | 2023-08-25 17:57:47 | * src/base/ftcalc.c (FT_MulAddFix): Simplify 32-bit rounding. | ||
| d42679b9 | 2023-08-25 18:05:01 | Fix clang warnings. * src/cffload.c (cff_blend_doBlend): Fix type of `sum`. * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Fix type of `word_delta_count`. | ||
| 97251fd5 | 2023-08-21 23:23:22 | [base] Improve the matrix degeneracy check. Also fixes #1251. * src/base/ftcalc.c (FT_Matrix_Check): To avoid overflow, scale by shifting. * include/freetype/internal/ftcalc.h (FT_Matrix_Check): Update description. | ||
| a9793fea | 2023-08-15 11:30:26 | [base] Avoid UB with memcpy `FT_NEW_ARRAY(p, 0)` sets `p` to `NULL`. `FT_Stream_ReadAt` with a memory based stream uses `FT_MEM_COPY` which is `memcpy` which specifies that it is undefined behavior for either the `src` or `dst` to be `NULL`. Instead of forcing all callers work around calling `FT_Stream_Read` when `buffer == NULL && count == 0` do the check in `FT_StreamRead`. This allows any call with `count == 0` to succesfully read zero bytes without UB. * src/base/ftstream.c (FT_Stream_ReadAt): skip `FT_MEM_COPY` when `count == 0`. (FT_Stream_TryRead): ditto Fixes: #1250 | ||
| a20de84e | 2023-08-12 11:47:41 | Fix warnings in tracing messages for 32bit compilation. Since we now require C99, use `%td` for `ptrdiff_t` and `%zu` for `size_t`. | ||
| 3829fdaa | 2023-08-04 11:41:23 | Avoid overflow in COLR bounds checks. The values read into `base_glyphs_offset_v1` and `layer_offset_v1` may be in the range 0xFFFFFFFD-0xFFFFFFFF. On systems where `unsigned long` is 32 bits adding 4 to such values will wrap and pass bounds checks but accessing values at such offsets will be out of bounds. On the other hand `table_size` has already been tested to be at least `COLRV1_HEADER_SIZE` (34) so it is safe to subtract 4 from it. * src/sfnt/ttcolr.c (tt_face_load_colr): subtract 4 from `table_size` instead of adding 4 to font data offsets in bounds checks Fixes: https://crbug.com/1469348 | ||
| 95a87208 | 2023-08-01 22:48:31 | * src/base/ftobjs.c (open_face_from_buffer): Silence `maybe-uninitialized`. We never call this function without a `driver_name` (#1245). |