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.
 
+![screenshot](screenshot.png "Screenshot showing the three rasterization 
methods")
+
+_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

Reply via email to