-
3.3.0e79cb2d4 · ·
Release 3.3.0 Added ----- * `scaling_filter` to `fcft_font_options`. The default value is `FCFT_SCALING_FILTER_CUBIC`. * New scaling filters: impulse, box, linear, gaussian, lanczos3 and lanczos3_stretched. Changed ------- * When scaling bitmap fonts (not emoji fonts), do not apply a scaling filter. In earlier versions, fcft applied a bilinear scaling filter. Deprecated ---------- * `fcft_set_scaling_filter()`; use `fcft_font_options::scaling_filter` instead.
-
3.2.0ba805cff · ·
Release 3.2.0 Added ----- * Nanosvg updated to ea6a6aca009422bba0dbad4c80df6e6ba0c82183 * `fcft_from_name2()`, allowing you to instantiate fonts and override certain rendering defaults. * `fcft_font_options_create()` and `fcft_font_options_destroy()`, to be used with the new `fcft_from_name2()`. * fcft can now decode color glyphs from sRGB to linear, and optionally render to higher precision pixman surfaces. See the new `fcft_from_name2()` and `fcft_font_options_create()`. Changed ------- * Unicode codepoints with the _emoji components_ tag are no longer treated as emojis, when selecting font. This fixes an issue where e.g. `0..9` were loaded from a fallback font instead of the primary font, if the primary font had the _emoji_ language bit set ([#1978][foot-1978]). [foot-1978]: https://codeberg.org/dnkl/foot/issues/1978 Deprecated ---------- * `fcft_set_emoji_presentation()` - use `fcft_from_name2()` instead. Fixed ----- * Undefined behavior when using copies of `mtx_t` and `pthread_rwlock_t` objects. Contributors ------------ * CismonX
-
3.1.10a6a7ce91 · ·
Release 3.1.10 Added ----- * Unicode data files updated to Unicode 16. Fcft uses these files to determine the default presentation (textual or graphical) for emojis, and to generate pre-compose tables. Changed ------- * Use `utf8proc_charwidth()` instead of `wcwdith()` to calculate character (terminal) width, when building with utf8proc support.
-
3.1.907210fde · ·
Release 3.1.9 Added ----- * Nanosvg updated to 93ce879dc4c04a3ef1758428ec80083c38610b1f * Unicode data files updated to 15.1 * `FCFT_LOG_COLORIZE_AUTO` now respects the `NO_COLOR` environment variable. * Support for linking against a system provided nanosvg library. See the new `-Dsystem-nanosvg` meson option. Defaults to `disabled` (i.e. use the bundled version). Changed ------- * Positioning of SVG glyphs; fcft now tries to center them on the line. Fixed ----- * Log-level not respected by syslog * Fcft now automatically ensures the `LC_NUMERIC` locale is correctly configured for `FcNameParse()` ([#60][60]). * Failure to lookup font name (_"warn: fcft.c:583: failed to get full font name"_) [60]: https://codeberg.org/dnkl/fcft/issues/60 Contributors ------------ * Jake Waksbaum
-
3.1.722f4decd · ·
Release 3.1.7 Fixed ----- * Infinite loop on certain invalid `fontfeatures` values ([#1554][foot-1554], [#1556][foot-1556]). [foot-1554]: https://codeberg.org/dnkl/foot/issues/1554 [foot-1556]: https://codeberg.org/dnkl/foot/issues/1556
-
-
3.1.5b3877795 · ·
Release 3.1.5 Changed ------- * SVG: user transformations are now ignored, instead of returning _”unimplemented feature”_ error. Fixed ----- * Reverted “fixed: bitmap font glyph advance width calculation”. It appears that HarfBuzz <= 5.1 calculated glyph advance widths incorrectly for bitmap fonts, when bitmap font scaling has been enabled (`pixelsizefixupfactor` has been set in FontConfig). fcft-3.1.3 compensated for this when calculating the glyphs’ advance widths. HarfBuzz >= 5.2 changed how it calculates the advance widths, and fcft’s compensation now causes and excessive advance width. Thus, the patch from fcft-3.1.3 has been reverted. [#163][fuzzel-163] [fuzzel-163]: https://codeberg.org/dnkl/fuzzel/issues/163
-
3.1.47f15b4d7 · ·
Release 3.1.4 Fixed ----- * Crash when failing to load an SVG glyph with multiple sub-glyphs.
-
3.1.3fbc8df38 · ·
Release 3.1.3 Fixed ----- * Bitmap font glyph advance width calculation in `fcft_rasterize_grapheme_utf32()` and `fcft_rasterize_text_run_utf32()` when user had enabled `10-scale-bitmap-fonts.conf` in FontConfig.
-
3.1.2c9100e23 · ·
Release 3.1.2 Fixed ----- * SVG glyphs failing with “bad argument” if LCD subpixel rendering is enabled ([#1069][foot-1069]). [foot-1069]: https://codeberg.org/dnkl/foot/issues/1069
-
3.1.195753828 · ·
Release 3.1.1 Fixed ----- * Crash when multiple SVG glyphs are rasterized in parallel (i.e. the SVG backend is now thread safe) ([#51](51)). * Crash when rasterizing SVG glyphs with transforms (e.g. synthetic slanting). Transforms are now completely ignored ([#51](51)). [51]: https://codeberg.org/dnkl/fcft/issues/51
-
3.1.01534fac2 · ·
Release 3.1.0 Added ----- * OT-SVG support ([#49](49)). Note that FreeType does not rasterize SVG glyphs by itself. Instead, fcft does this via FreeType hooks, using a bundled [nanosvg](nanosvg) as backend. Enabled by default, but can be disabled with `-Dsvg-backend=none`). FreeType >= 2.12 is required. * `FCFT_CAPABILITY_SVG` added to `fcft_capabilities()`. [nanosvg]: https://github.com/memononen/nanosvg [49]: https://codeberg.org/dnkl/fcft/issues/49 Changed ------- * Minimum required meson version is now 0.58 Fixed ----- * `fcft_font::name`, and `fcft_glyph::font_name` not being set correctly for font collections (e.g. `*.ttc` files). * Assertion inside HarfBuzz with `fcft_rasterize_grapheme_ut32()` when we fail to rasterize a glyph ([#1056][foot-1056]). [foot-1056]: https://codeberg.org/dnkl/foot/issues/1056
-
3.0.1e964c367 · ·
Release 3.0.1 Fixed ----- * Crash when failing to lookup the full font name (https://codeberg.org/dnkl/fcft/issues/47).
-
3.0.09270bef5 · ·
Release 3.0.0 Added ----- * `name` to `struct fcft_font`. This is the name of the **primary** font (i.e. not any of the fallback fonts). * `font_name` to `struct fcft_glyph`. This is the name of the font the glyph was loaded from, and may reference a fallback font. Note that it is **always** NULL in text-run glyphs. Changed ------- * meson: default C standard changed from C18 to C11 (fcft does not use any C18 features). * fcft’s constructor and destructor are now part of the public API, and must be explicitly called: `fcft_init()` and `fcft_fini()`. Note that `fcft_init()` also handles logging initialization. * All `wchar_t` usage replaced with `uint32_t`. * layout tags removed from `fcft_grapheme_rasterize()`. These should be set using `fontfeature`s in the font `names` and/or `attributes` arguments in `fcft_from_name()`. * `wc` member in `struct glyph` renamed to `cp` (CodePoint). * `wc` function arguments renamed to `cp` in all APIs. * `fcft_glyph_rasterize()` renamed to `fcft_rasterize_char_utf32()`. * `fcft_grapheme_rasterize()` renamed to `fcft_rasterize_grapheme_utf32()`. * `fcft_text_run_rasterize()` renamed to `fcft_rasterize_text_run_utf32()`. Removed ------- * `fcft_size_adjust()` * `space_advance` member from `struct fcft_font`. * `fcft_log_init()`. Use `fcft_init()` instead. Fixed ----- * Wrong version string generated when building as a subproject. * Uninitialized grapheme state variable in `fcft_text_run_rasterize()`. * Incorrectly sorted Unicode precompose table when building in non-C locales (https://codeberg.org/dnkl/fcft/issues/44).
-
2.5.13f8afd3f · ·
Release 2.5.1 Added ----- * Meson command line option `-Ddocs` to force disable or enable building manual pages and installing changelog and readme files Changed ------- * `scdoc` is optional and detected automatically * `fcft_set_scaling_filter()` now applies to color bitmap fonts only (i.e. emoji fonts). Applying e.g. cubic or lanczos3 on regular text glyphs simply does not look good. Fixed ----- * `FCFT_SCALING_FILTER_CUBIC` incorrectly being mapped to “lanczos3”. * Pixman errors and program freezes when scaling bitmap fonts to very small sizes (https://codeberg.org/dnkl/foot/issues/830). Contributors ------------ * Alibek Omarov
-
2.5.015ec1247 · ·
Release 2.5.0 Added ----- * Text-run shaping now requires libutf8proc (in addition to HarfBuzz). Grapheme shaping still requires HarfBuzz only. * `fcft_set_emoji_presentation()` - can be used to override emojis’ **default** presentation style. Changed ------- * Meson command line option `-Dtext-shaping` have been replaced with `-Dgrapheme-shaping` and `-Drun-shaping`; grapheme shaping requires HarfBuzz only, while run shaping requires HarfBuzz **and** libutf8proc. Thus, enabling run shaping implicitly enables grapheme shaping. * `fcft_*_rasterize()`: emojis’ default presentation is now accounted for when searching for a font containing the emoji codepoint; codepoints whose default presentation is “text” will no longer consider emoji fonts, and codepoints whose default presentation is “emoji” will no longer consider non-emoji fonts. Fixed ----- * `fcft_text_run_rasterize()`: much improved handling of RTL scripts (in mixed LTR/RTL strings in particular)
-
2.4.6d87d681c · ·
Release 2.4.6 Added ----- * UnicodeData updated to 14.0 Fixed ----- * ‘wc’ field in `struct fcft_glyph` being assigned font index instead of Unicode codepoint in `fcft_grapheme_rasterize()` and `fcft_text_run_rasterize()`. * Assertion in `glyph_cache_resize()`, triggered by trying to rasterize, and _failing_, a large amount of code points (https://codeberg.org/dnkl/foot/issues/763). * Bad performance of grapheme cache when rasterizing many grapheme clusters. Contributors ------------ * [emersion](https://codeberg.org/emersion)
-
2.4.51f628f83 · ·
Release 2.4.5 Fixed ----- * `fcft_text_run_rasterize()` not checking if codepoint is in the font’s charset before attempting shaping (https://codeberg.org/dnkl/fcft/issues/30). * Crash when destroying a font with a grapheme cache entry representing a failed grapheme glyph. This is an ABI+API backward compatible release