-
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.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
-
-
2.4.4d46e0612 · ·
Release 2.4.4 Fixed ----- * Rendering of bitmap fonts with Freetype >= 2.11 (https://codeberg.org/dnkl/fcft/issues/29).
-
2.4.391ebb59e · ·
Release 2.4.3 Fixed ----- * Bitmap/aliased font glyphs being mirrored on big-endian architectures. * Color font glyphs having wrong colors on big-endian architectures. * Crash when destroying a font that failed to load (typically happens when there are no fonts available at all).
-
2.4.22f3bd45f · ·
Release 2.4.2 Fixed ----- * Rare crash when one thread was doing a glyph cache lookup, while another was resizing the cache.
-
2.4.1b5016998 · ·
Release 2.4.1 Changed ------- * Log messages are now printed to stderr instead of stdout. * `fcft_grapheme_rasterize()` now sets a minimum grapheme column count of 2 when the cluster ends with an Emoji variant selector (codepoint 0xFE0F). Fixed ----- * Compilation error when fallback definition for `FCFT_EXPORT` was used in `meson.build`. Contributors ------------ * [emersion](https://codeberg.org/emersion) * [craigbarnes](https://codeberg.org/craigbarnes)
-
2.4.0872f3e1b · ·
Release 2.4.0 Added ----- * Example program. Very simple bare bones Wayland program that renders a user provided string with user configurable fonts and colors. No proper error checking etc. To build, configure meson with `-Dexamples=true`. * `fcft_log_init()`. This function enables, and configures logging in fcft. * `fcft_text_run_rasterize()`: new API that uses HarfBuzz to shape a text run (i.e. a whole string). Note that HarfBuzz is (still) an **optional** dependency, see [README](README.md#user-content-building). * `fcft_text_run_destroy()`: new API that frees a rasterized text-run. * `FCFT_CAPABILITY_TEXT_RUN_SHAPING` added to `fcft_capabilities()`. * `antialias` and `subpixel` members to `struct fcft_font`. Changed ------- * fcft logging must now be enabled explicitly (see `fcft_log_init()`). * Internal logging functions are no longer exported by the shared library. * The pixel size passed from FontConfig to FreeType is now rounded instead of truncated (https://codeberg.org/dnkl/foot/issues/456). Fixed ----- * Internal logging functions have been renamed, from generic `log_*` names to fcft specific `fcft_log_` names. * Apply pixel-size fixup to glyphs’ advance width/height, but **only** if we estimated the fixup ourselves (otherwise the advance width/height is already scaled).