Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package fcft for openSUSE:Factory checked in at 2021-08-16 10:11:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fcft (Old) and /work/SRC/openSUSE:Factory/.fcft.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fcft" Mon Aug 16 10:11:47 2021 rev:6 rq:912100 version:2.4.5 Changes: -------- --- /work/SRC/openSUSE:Factory/fcft/fcft.changes 2021-07-22 22:44:17.575126883 +0200 +++ /work/SRC/openSUSE:Factory/.fcft.new.1899/fcft.changes 2021-08-16 10:17:56.670627110 +0200 @@ -1,0 +2,9 @@ +Sat Aug 14 16:40:38 UTC 2021 - Arnav Singh <[email protected]> + +- Update to 2.4.5: + * Fixed fcft_text_run_rasterize not checking if codepoint is in + the font???s charset before attempting shaping. + * Fixed crash when destroying a font with a grapheme cache entry + representing a failed grapheme glyph. + +------------------------------------------------------------------- Old: ---- fcft-2.4.4.tar.gz New: ---- fcft-2.4.5.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fcft.spec ++++++ --- /var/tmp/diff_new_pack.LJqh5B/_old 2021-08-16 10:17:57.194626270 +0200 +++ /var/tmp/diff_new_pack.LJqh5B/_new 2021-08-16 10:17:57.194626270 +0200 @@ -18,7 +18,7 @@ %define libname libfcft3 Name: fcft -Version: 2.4.4 +Version: 2.4.5 Release: 0 Summary: A library for font loading and glyph rasterization using FreeType/pixman License: MIT ++++++ fcft-2.4.4.tar.gz -> fcft-2.4.5.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/CHANGELOG.md new/fcft/CHANGELOG.md --- old/fcft/CHANGELOG.md 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/CHANGELOG.md 2021-08-14 11:01:45.000000000 +0200 @@ -1,5 +1,6 @@ # Changelog +* [2.4.5](#2-4-5) * [2.4.4](#2-4-4) * [2.4.3](#2-4-3) * [2.4.2](#2-4-2) @@ -25,6 +26,17 @@ * [1.1.7](#1-1-7) +## 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. + + ## 2.4.4 ### Fixed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/PKGBUILD new/fcft/PKGBUILD --- old/fcft/PKGBUILD 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/PKGBUILD 2021-08-14 11:01:45.000000000 +0200 @@ -1,5 +1,5 @@ pkgname=fcft -pkgver=2.4.4 +pkgver=2.4.5 pkgrel=1 pkgdesc="Simple font loading and glyph rasterization library" changelog=CHANGELOG.md diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/README.md new/fcft/README.md --- old/fcft/README.md 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/README.md 2021-08-14 11:01:45.000000000 +0200 @@ -27,6 +27,11 @@ support may not be (and perhaps never will be) sufficient for ???professional??? text layout. + + +_Top: `fcft_glyph_rasterize()`, middle: `fcft_grapheme_rasterize()`, +bottom: `fcft_text_run_rasterize()`_ + ## Requirements diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/doc/fcft_capabilities.3.scd new/fcft/doc/fcft_capabilities.3.scd --- old/fcft/doc/fcft_capabilities.3.scd 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/doc/fcft_capabilities.3.scd 2021-08-14 11:01:45.000000000 +0200 @@ -1,4 +1,4 @@ -fcft_capabilities(3) "2.2.7" "fcft" +fcft_capabilities(3) "2.4.5" "fcft" # NAME @@ -18,7 +18,7 @@ ``` enum fcft_capabilities { FCFT_CAPABILITY_GRAPHEME_SHAPING = 0x1, /* Since 2.3.0 */ - FCFT_CAPABILITY_TEXT_RUN_SHAPING = 0x2, /* Since 2.4.4 */ + FCFT_CAPABILITY_TEXT_RUN_SHAPING = 0x2, /* Since 2.4.0 */ }; ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/doc/fcft_clone.3.scd new/fcft/doc/fcft_clone.3.scd --- old/fcft/doc/fcft_clone.3.scd 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/doc/fcft_clone.3.scd 2021-08-14 11:01:45.000000000 +0200 @@ -1,4 +1,4 @@ -fcft_clone(3) "2.4.4" "fcft" +fcft_clone(3) "2.4.5" "fcft" # NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/doc/fcft_destroy.3.scd new/fcft/doc/fcft_destroy.3.scd --- old/fcft/doc/fcft_destroy.3.scd 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/doc/fcft_destroy.3.scd 2021-08-14 11:01:45.000000000 +0200 @@ -1,4 +1,4 @@ -fcft_destroy(3) "2.4.4" "fcft" +fcft_destroy(3) "2.4.5" "fcft" # NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/doc/fcft_from_name.3.scd new/fcft/doc/fcft_from_name.3.scd --- old/fcft/doc/fcft_from_name.3.scd 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/doc/fcft_from_name.3.scd 2021-08-14 11:01:45.000000000 +0200 @@ -1,4 +1,4 @@ -fcft_from_name(3) "2.4.4" "fcft" +fcft_from_name(3) "2.4.5" "fcft" # NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/doc/fcft_glyph_rasterize.3.scd new/fcft/doc/fcft_glyph_rasterize.3.scd --- old/fcft/doc/fcft_glyph_rasterize.3.scd 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/doc/fcft_glyph_rasterize.3.scd 2021-08-14 11:01:45.000000000 +0200 @@ -1,4 +1,4 @@ -fcft_glyph_rasterize(3) "2.4.4" "fcft" +fcft_glyph_rasterize(3) "2.4.5" "fcft" # NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/doc/fcft_grapheme_rasterize.3.scd new/fcft/doc/fcft_grapheme_rasterize.3.scd --- old/fcft/doc/fcft_grapheme_rasterize.3.scd 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/doc/fcft_grapheme_rasterize.3.scd 2021-08-14 11:01:45.000000000 +0200 @@ -1,4 +1,4 @@ -fcft_grapheme_rasterize(3) "2.4.4" "fcft" +fcft_grapheme_rasterize(3) "2.4.5" "fcft" # NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/doc/fcft_kerning.3.scd new/fcft/doc/fcft_kerning.3.scd --- old/fcft/doc/fcft_kerning.3.scd 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/doc/fcft_kerning.3.scd 2021-08-14 11:01:45.000000000 +0200 @@ -1,4 +1,4 @@ -fcft_kerning(3) "2.4.4" "fcft" +fcft_kerning(3) "2.4.5" "fcft" # NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/doc/fcft_log_init.3.scd new/fcft/doc/fcft_log_init.3.scd --- old/fcft/doc/fcft_log_init.3.scd 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/doc/fcft_log_init.3.scd 2021-08-14 11:01:45.000000000 +0200 @@ -1,4 +1,4 @@ -fcft_log_init(3) "2.4.4" "fcft" +fcft_log_init(3) "2.4.5" "fcft" # NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/doc/fcft_precompose.3.scd new/fcft/doc/fcft_precompose.3.scd --- old/fcft/doc/fcft_precompose.3.scd 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/doc/fcft_precompose.3.scd 2021-08-14 11:01:45.000000000 +0200 @@ -1,4 +1,4 @@ -fcft_precompose(3) "2.4.4" "fcft" +fcft_precompose(3) "2.4.5" "fcft" # NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/doc/fcft_set_scaling_filter.3.scd new/fcft/doc/fcft_set_scaling_filter.3.scd --- old/fcft/doc/fcft_set_scaling_filter.3.scd 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/doc/fcft_set_scaling_filter.3.scd 2021-08-14 11:01:45.000000000 +0200 @@ -1,4 +1,4 @@ -fcft_set_scaling_filter(3) "2.4.4" "fcft" +fcft_set_scaling_filter(3) "2.4.5" "fcft" # NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/doc/fcft_size_adjust.3.scd new/fcft/doc/fcft_size_adjust.3.scd --- old/fcft/doc/fcft_size_adjust.3.scd 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/doc/fcft_size_adjust.3.scd 2021-08-14 11:01:45.000000000 +0200 @@ -1,4 +1,4 @@ -fcft_size_adjust(3) "2.4.4" "fcft" +fcft_size_adjust(3) "2.4.5" "fcft" # NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/doc/fcft_text_run_destroy.3.scd new/fcft/doc/fcft_text_run_destroy.3.scd --- old/fcft/doc/fcft_text_run_destroy.3.scd 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/doc/fcft_text_run_destroy.3.scd 2021-08-14 11:01:45.000000000 +0200 @@ -1,4 +1,4 @@ -fcft_text_run_destroy(3) "2.4.4" "fcft" +fcft_text_run_destroy(3) "2.4.5" "fcft" # NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/doc/fcft_text_run_rasterize.3.scd new/fcft/doc/fcft_text_run_rasterize.3.scd --- old/fcft/doc/fcft_text_run_rasterize.3.scd 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/doc/fcft_text_run_rasterize.3.scd 2021-08-14 11:01:45.000000000 +0200 @@ -1,4 +1,4 @@ -fcft_text_run_rasterize(3) "2.4.4" "fcft" +fcft_text_run_rasterize(3) "2.4.5" "fcft" # NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/fcft.c new/fcft/fcft.c --- old/fcft/fcft.c 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/fcft.c 2021-08-14 11:01:45.000000000 +0200 @@ -1860,7 +1860,7 @@ { free(font->grapheme_cache.table); - LOG_DBG("resized grapheme cache from %zu to %zu", font->grapheme_cache.size, size); + LOG_DBG("resized grapheme cache from %zu to %zu (count: %zu)", font->grapheme_cache.size, size, font->grapheme_cache.count); font->grapheme_cache.table = table; font->grapheme_cache.size = size; } @@ -2105,6 +2105,8 @@ assert(*entry == NULL); assert(!grapheme->valid); + grapheme->public.count = 0; + grapheme->public.glyphs = NULL; *entry = grapheme; mtx_unlock(&font->lock); return NULL; @@ -2160,7 +2162,7 @@ static enum text_run_state text_run_rasterize_partial( - struct instance *inst, enum fcft_subpixel subpixel, + FcCharSet *charset, struct instance *inst, enum fcft_subpixel subpixel, struct text_run_context *ctx) { hb_buffer_add_utf32( @@ -2210,7 +2212,10 @@ return TEXT_RUN_PRIMARY; } - if (info->codepoint == 0 && ctx->state != TEXT_RUN_PRIMARY_FORCE) { + if ((info->codepoint == 0 || + !FcCharSetHasChar(charset, ctx->text[info->cluster])) + && ctx->state != TEXT_RUN_PRIMARY_FORCE) + { ctx->ofs = info->cluster; for (ssize_t j = ctx->glyphs.count - 1; j >= 0; j--) { if (ctx->glyphs.cluster[j] != info->cluster) { @@ -2328,6 +2333,15 @@ tll_foreach(font->fallbacks, it) { struct instance *inst = it->item.font; + FcCharSet *charset = it->item.charset; + + if (ctx.state != TEXT_RUN_PRIMARY_FORCE && + !FcCharSetHasChar(charset, text[ctx.ofs])) + { + ctx.state = TEXT_RUN_FALLBACK; + continue; + } + if (inst == NULL) { inst = malloc(sizeof(*inst)); @@ -2350,7 +2364,7 @@ it->item.font = inst; } - ctx.state = text_run_rasterize_partial(inst, subpixel, &ctx); + ctx.state = text_run_rasterize_partial(charset, inst, subpixel, &ctx); hb_buffer_clear_contents(inst->hb_buf); if (ctx.state == TEXT_RUN_PRIMARY) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fcft/meson.build new/fcft/meson.build --- old/fcft/meson.build 2021-07-22 10:45:31.000000000 +0200 +++ new/fcft/meson.build 2021-08-14 11:01:45.000000000 +0200 @@ -1,5 +1,5 @@ project('fcft', 'c', - version: '2.4.4', # Don't forget to update version in man pages + version: '2.4.5', # Don't forget to update version in man pages license: 'MIT', meson_version: '>=0.54.0', default_options: [ @@ -20,7 +20,7 @@ so_version = [ '3', # MAJOR: increment on non-backward compatible ABI changes '4', # MINOR: increment with backward compatible ABI changes - '4', # PATCH: increment with non-ABI affecting changes + '5', # PATCH: increment with non-ABI affecting changes ] is_debug_build = get_option('buildtype').startswith('debug') Binary files old/fcft/screenshot.png and new/fcft/screenshot.png differ
