kc3-lang/freetype

Branch :


Log

Author Commit Date CI Message
660a7017 2024-03-06 20:08:04 * CMakeLists.txt: Bump required version to 3.5. Fixes #1267.
2cc58904 2024-03-04 12:14:51 meson: Use the standard dependency mechanism to find bzip2 This follows standard conventions in Meson by using the pkg-config file. This change allows Conan to switch to the Meson build system.
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.
6d914726 2024-01-13 22:28:54 * CMakeLists.txt: Accommodate MingGW. See https://github.com/StephanTLavavej/mingw-distro/issues/97.
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.
a07ca46c 2024-01-03 14:55:33 * .gitlab-ci.yml: Use detached CI pipelines. See issue freedesktop/freedesktop#540.
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.
ca76683b 2023-12-18 17:45:05 [ci] Add support for MSBuild on Windows. This adds msbuild job for VS2019 (x64). * .gitlab-ci.yml: Added "windows msbuild vs2019 amd64".
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.
af6d2105 2023-12-14 06:21:52 * vms_make.com: Switch to `clang`. Also add proper bzip2 support.
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
50740b37 2023-12-06 23:33:32 [msbuild] Streamline the process. MSBuild.exe can now be fired from the root folder without options. * builds/windows/vc2010/freetype.sln: Relocated to... * MSBuild.sln: ... here with minor changes. * MSBuild.rsp: New file with command line options. * docs/INSTALL: Reference `MSBuild.sln`.
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.
1eb04c71 2023-11-25 09:00:11 * docs/*: Typos.
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.
e969289f 2023-11-16 20:02:08 * docs/CHANGES: Updated.
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.
0f98994e 2023-11-13 23:15:00 * include/freetype/ftimage.h: Fix type and link.
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.
21435f07 2023-10-08 23:34:28 fix typo in FT_Outline_Decompose note
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.
cc732ec6 2023-09-21 02:28:32 * include/freetype/internal/ftcalc.h (FT_MSB): Define for Solaris 11.
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.