harfbuzz: Update to version 6.0.0

Message ID 20221227120002.12161-2-adolf.belka@ipfire.org
State Accepted
Commit 2e65bba2a07cc62e2e55b057be485827cacbae3c
Headers
Series harfbuzz: Update to version 6.0.0 |

Commit Message

Adolf Belka Dec. 27, 2022, 11:59 a.m. UTC
  - Update from version 4.4.1 to 6.0.0
- Update of rootfile
- Changelog
    Overview of changes leading to 6.0.0
	- A new API have been added to pre-process the face and speed up future
	  subsetting operations on that face. Provides up to a 95% reduction in
	  subsetting times when the same face is subset more than once.
	  For more details and benchmarks, see:
	  https://github.com/harfbuzz/harfbuzz/blob/main/docs/subset-preprocessing.md
	- Shaping have been speedup by skipping entire lookups when the buffer contents
	  don't intersect with the lookup. Shows up to a 10% speedup in shaping some
	  fonts. (Behdad Esfahbod)
	- A new experimental feature, “Variable Composites” (enabled by passing
	  -Dexperimental_api=true to meson), is also featured in this release.
	  This technology enables drastic compression of fonts in the Chinese,
	  Japanese, Korean, and other writing systems, by reusing the OpenType Font
	  Variations technology for encoding “smart components” into the font.
	  The specification for these  extensions to the font format can be found in:
	  https://github.com/harfbuzz/boring-expansion-spec/blob/glyf1/glyf1.md
	  A test variable-font with ~7160 Hangul syllables derived from the
	  NotoSerifKR-VF font has been built, with existing OpenType technology, as
	  well as with the new Variable Composites (VarComposites) technology. The
	  VarComposites font is over 90% smaller than the OpenType version of the font!
	  Both fonts can be obtained from the “smarties” repository:
	  https://github.com/behdad/smarties/tree/3.0/fonts/hangul/serif
	  When building HarfBuzz with experimental features enabled, you can test
	  the “smarties” font with a sample character like this:
	  $ hb-view butchered-hangul-serif-smarties-variable.ttf -u AE01 --variations=wght=700
	- The HarfBuzz subsetter can now drop axes by pinning them to specific values
	  (also referred to as instancing). There are a couple of restrictions
	  currently:
	  - Only works with TrueType (“glyf”) based fonts. “CFF2” fonts are not yet
	    supported.
	  - Only supports the case where all axes in a font are pinned.
	- Miscellaneous fixes and improvements.
	- New API
		+hb_subset_input_pin_axis_location()
		+hb_subset_input_pin_axis_to_default()
		+hb_subset_preprocess()
    Overview of changes leading to 5.3.1
	- Subsetter repacker fixes. (Garret Rieger)
	- Adjust Grapheme clusters for Katakana voiced sound marks. (Behdad Esfahbod)
	- New “hb-subset” option “--preprocess-face”. (Garret Rieger)
    Overview of changes leading to 5.3.0
	- Don’t add glyphs from dropped MATH or COLR tables to the subset glyphs.
	  (Khaled Hosny)
	- Map “rlig” to appropriate AAT feature selectors. (Jonathan Kew)
	- Update USE data files to latest version. (David Corbett)
	- Check “CBDT” extents first before outline tables, to help with fonts that
	  also include an empty “glyf” table. (Khaled Hosny)
	- More work towards variable font instancing in the subsetter. (Qunxin Liu)
	- Subsetter repacker improvements. (Garret Rieger)
	- New API:
		+hb_ot_layout_lookup_get_optical_bound()
		+hb_face_builder_sort_tables()
    Overview of changes leading to 5.2.0
	- Fix regressions in hb-ft font functions for FT_Face’s with transformation
	  matrix. (Behdad Esfahbod)
	- The experimental hb-repacker API now supports splitting several GPOS subtable
	  types when needed. (Garret Rieger)
	- The HarfBuzz extensions to OpenType font format are now opt-in behind
	  build-time flags. (Behdad Esfahbod)
	- The experimental hb-subset variable fonts instantiation API can now
	  instantiate more font tables and arbitrary axis locations. (Qunxin Liu)
	- Unicode 15 support. (David Corbett)
	- Various documentation improvements. (Behdad Esfahbod, Matthias Clasen)
	- The hb-view command line tool now detects WezTerm inline images support.
	  (Wez Furlong)
	- Fix FreeType and ICU dependency lookup with meson. (Xavier Claessens)
	- New API:
		+HB_SCRIPT_KAWI
		+HB_SCRIPT_NAG_MUNDARI
    Overview of changes leading to 5.1.0
	- More extensive buffer tracing messages. (Behdad Esfahbod)
	- Fix hb-ft regression in bitmap fonts rendering. (Behdad Esfahbod)
	- Support extension promotion of lookups in hb-subset-repacker. (Garret Rieger)
	- A new HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL for scripts that use elongation
	  (e.g. Arabic) to signify where it is safe to insert tatweel glyph without
	  interrupting shaping. (Behdad Esfahbod)
	- Add “--safe-to-insert-tatweel” to “hb-shape” tool. (Behdad Esfahbod)
	- New API
		+HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL
		+HB_BUFFER_FLAG_PRODUCE_SAFE_TO_INSERT_TATWEEL
    Overview of changes leading to 5.0.1
	- Fix version 2 “avar” table with hb-ft. (Behdad Esfahbod)
    Overview of changes leading to 5.0.0
	- Support fonts with more than 65535 glyphs in “GDEF”, “GSUB”, and “GPOS”
	  tables. This is part of https://github.com/be-fonts/boring-expansion-spec to
	  extend OpenType in a backward-compatible way.
	  (Behdad Esfahbod, Garret Rieger)
	- Complete support for more than 65535 glyphs in “glyf” table that started in
	  4.0.0 release. Part of boring-expansion-spec. (Behdad Esfahbod)
	- Support version 2 of “avar” table. Part of boring-expansion-spec.
	  (Behdad Esfahbod)
	- Fix mark attachment on multiple substitutions in some cases.
	  (Behdad Esfahbod)
	- Fix application of “calt”, “rclt”, and “ccmp” features to better match
	  Uniscribe behaviour with some Arabic fonts. (Behdad Esfahbod)
	- Improvement to interaction between multiple cursive attachments.
	  (Behdad Esfahbod)
	- Improve multiple mark interactions in Hebrew. (Behdad Esfahbod)
	- Implement language-specific forms in AAT shaping. (Behdad Esfahbod)
	- Fix variation of “VORG” table. (Behdad Esfahbod)
	- Support for specific script tags to be retained in the subsetter, and add
	  “--layout-scripts” option to “hb-subset” tool. (Garret Rieger)
	- Accept space as delimiter for --features/--variations in command line tools.
	- Improve subsetting of “COLR” table. (Qunxin Liu)
	- Improved fuzzing coverage for ot-math API. (Frédéric Wang)
	- Fix “kern” table version 2 (AAT) sanitization on 32-bit systems.
	  (Behdad Esfahbod)
	- Allow negative glyph advances from “graphite2” shaper. (Stephan Bergmann)
	- Implement loading (color) bitmap fonts with hb-ft. (Behdad Esfahbod)
	- Fix regression in hb-ft when changing font size. (Behdad Esfahbod)
	- Fix build on GCC < 7. (Kleis Auke Wolthuizen)
	- Dynamically load dwrite.dll on windows if “directwrite” shaper is enabled.
	  (Luca Bacci)
	- Provide a single-file harfbuzz-subset.cc file for easier alternate building
	  of hb-subset library, similar to harfbuzz.cc. (Khaled Hosny)
	- New API
		+HB_SUBSET_SETS_LAYOUT_SCRIPT_TAG
		+hb_language_matches()

Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
---
 config/rootfiles/common/harfbuzz | 8 +++++---
 lfs/harfbuzz                     | 6 +++---
 2 files changed, 8 insertions(+), 6 deletions(-)
  

Comments

Peter Müller Dec. 29, 2022, 11:21 a.m. UTC | #1
Reviewed-by: Peter Müller <peter.mueller@ipfire.org>

> - Update from version 4.4.1 to 6.0.0
> - Update of rootfile
> - Changelog
>     Overview of changes leading to 6.0.0
> 	- A new API have been added to pre-process the face and speed up future
> 	  subsetting operations on that face. Provides up to a 95% reduction in
> 	  subsetting times when the same face is subset more than once.
> 	  For more details and benchmarks, see:
> 	  https://github.com/harfbuzz/harfbuzz/blob/main/docs/subset-preprocessing.md
> 	- Shaping have been speedup by skipping entire lookups when the buffer contents
> 	  don't intersect with the lookup. Shows up to a 10% speedup in shaping some
> 	  fonts. (Behdad Esfahbod)
> 	- A new experimental feature, “Variable Composites” (enabled by passing
> 	  -Dexperimental_api=true to meson), is also featured in this release.
> 	  This technology enables drastic compression of fonts in the Chinese,
> 	  Japanese, Korean, and other writing systems, by reusing the OpenType Font
> 	  Variations technology for encoding “smart components” into the font.
> 	  The specification for these  extensions to the font format can be found in:
> 	  https://github.com/harfbuzz/boring-expansion-spec/blob/glyf1/glyf1.md
> 	  A test variable-font with ~7160 Hangul syllables derived from the
> 	  NotoSerifKR-VF font has been built, with existing OpenType technology, as
> 	  well as with the new Variable Composites (VarComposites) technology. The
> 	  VarComposites font is over 90% smaller than the OpenType version of the font!
> 	  Both fonts can be obtained from the “smarties” repository:
> 	  https://github.com/behdad/smarties/tree/3.0/fonts/hangul/serif
> 	  When building HarfBuzz with experimental features enabled, you can test
> 	  the “smarties” font with a sample character like this:
> 	  $ hb-view butchered-hangul-serif-smarties-variable.ttf -u AE01 --variations=wght=700
> 	- The HarfBuzz subsetter can now drop axes by pinning them to specific values
> 	  (also referred to as instancing). There are a couple of restrictions
> 	  currently:
> 	  - Only works with TrueType (“glyf”) based fonts. “CFF2” fonts are not yet
> 	    supported.
> 	  - Only supports the case where all axes in a font are pinned.
> 	- Miscellaneous fixes and improvements.
> 	- New API
> 		+hb_subset_input_pin_axis_location()
> 		+hb_subset_input_pin_axis_to_default()
> 		+hb_subset_preprocess()
>     Overview of changes leading to 5.3.1
> 	- Subsetter repacker fixes. (Garret Rieger)
> 	- Adjust Grapheme clusters for Katakana voiced sound marks. (Behdad Esfahbod)
> 	- New “hb-subset” option “--preprocess-face”. (Garret Rieger)
>     Overview of changes leading to 5.3.0
> 	- Don’t add glyphs from dropped MATH or COLR tables to the subset glyphs.
> 	  (Khaled Hosny)
> 	- Map “rlig” to appropriate AAT feature selectors. (Jonathan Kew)
> 	- Update USE data files to latest version. (David Corbett)
> 	- Check “CBDT” extents first before outline tables, to help with fonts that
> 	  also include an empty “glyf” table. (Khaled Hosny)
> 	- More work towards variable font instancing in the subsetter. (Qunxin Liu)
> 	- Subsetter repacker improvements. (Garret Rieger)
> 	- New API:
> 		+hb_ot_layout_lookup_get_optical_bound()
> 		+hb_face_builder_sort_tables()
>     Overview of changes leading to 5.2.0
> 	- Fix regressions in hb-ft font functions for FT_Face’s with transformation
> 	  matrix. (Behdad Esfahbod)
> 	- The experimental hb-repacker API now supports splitting several GPOS subtable
> 	  types when needed. (Garret Rieger)
> 	- The HarfBuzz extensions to OpenType font format are now opt-in behind
> 	  build-time flags. (Behdad Esfahbod)
> 	- The experimental hb-subset variable fonts instantiation API can now
> 	  instantiate more font tables and arbitrary axis locations. (Qunxin Liu)
> 	- Unicode 15 support. (David Corbett)
> 	- Various documentation improvements. (Behdad Esfahbod, Matthias Clasen)
> 	- The hb-view command line tool now detects WezTerm inline images support.
> 	  (Wez Furlong)
> 	- Fix FreeType and ICU dependency lookup with meson. (Xavier Claessens)
> 	- New API:
> 		+HB_SCRIPT_KAWI
> 		+HB_SCRIPT_NAG_MUNDARI
>     Overview of changes leading to 5.1.0
> 	- More extensive buffer tracing messages. (Behdad Esfahbod)
> 	- Fix hb-ft regression in bitmap fonts rendering. (Behdad Esfahbod)
> 	- Support extension promotion of lookups in hb-subset-repacker. (Garret Rieger)
> 	- A new HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL for scripts that use elongation
> 	  (e.g. Arabic) to signify where it is safe to insert tatweel glyph without
> 	  interrupting shaping. (Behdad Esfahbod)
> 	- Add “--safe-to-insert-tatweel” to “hb-shape” tool. (Behdad Esfahbod)
> 	- New API
> 		+HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL
> 		+HB_BUFFER_FLAG_PRODUCE_SAFE_TO_INSERT_TATWEEL
>     Overview of changes leading to 5.0.1
> 	- Fix version 2 “avar” table with hb-ft. (Behdad Esfahbod)
>     Overview of changes leading to 5.0.0
> 	- Support fonts with more than 65535 glyphs in “GDEF”, “GSUB”, and “GPOS”
> 	  tables. This is part of https://github.com/be-fonts/boring-expansion-spec to
> 	  extend OpenType in a backward-compatible way.
> 	  (Behdad Esfahbod, Garret Rieger)
> 	- Complete support for more than 65535 glyphs in “glyf” table that started in
> 	  4.0.0 release. Part of boring-expansion-spec. (Behdad Esfahbod)
> 	- Support version 2 of “avar” table. Part of boring-expansion-spec.
> 	  (Behdad Esfahbod)
> 	- Fix mark attachment on multiple substitutions in some cases.
> 	  (Behdad Esfahbod)
> 	- Fix application of “calt”, “rclt”, and “ccmp” features to better match
> 	  Uniscribe behaviour with some Arabic fonts. (Behdad Esfahbod)
> 	- Improvement to interaction between multiple cursive attachments.
> 	  (Behdad Esfahbod)
> 	- Improve multiple mark interactions in Hebrew. (Behdad Esfahbod)
> 	- Implement language-specific forms in AAT shaping. (Behdad Esfahbod)
> 	- Fix variation of “VORG” table. (Behdad Esfahbod)
> 	- Support for specific script tags to be retained in the subsetter, and add
> 	  “--layout-scripts” option to “hb-subset” tool. (Garret Rieger)
> 	- Accept space as delimiter for --features/--variations in command line tools.
> 	- Improve subsetting of “COLR” table. (Qunxin Liu)
> 	- Improved fuzzing coverage for ot-math API. (Frédéric Wang)
> 	- Fix “kern” table version 2 (AAT) sanitization on 32-bit systems.
> 	  (Behdad Esfahbod)
> 	- Allow negative glyph advances from “graphite2” shaper. (Stephan Bergmann)
> 	- Implement loading (color) bitmap fonts with hb-ft. (Behdad Esfahbod)
> 	- Fix regression in hb-ft when changing font size. (Behdad Esfahbod)
> 	- Fix build on GCC < 7. (Kleis Auke Wolthuizen)
> 	- Dynamically load dwrite.dll on windows if “directwrite” shaper is enabled.
> 	  (Luca Bacci)
> 	- Provide a single-file harfbuzz-subset.cc file for easier alternate building
> 	  of hb-subset library, similar to harfbuzz.cc. (Khaled Hosny)
> 	- New API
> 		+HB_SUBSET_SETS_LAYOUT_SCRIPT_TAG
> 		+hb_language_matches()
> 
> Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
> ---
>  config/rootfiles/common/harfbuzz | 8 +++++---
>  lfs/harfbuzz                     | 6 +++---
>  2 files changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/config/rootfiles/common/harfbuzz b/config/rootfiles/common/harfbuzz
> index bb4bb2ee9..7da247be0 100644
> --- a/config/rootfiles/common/harfbuzz
> +++ b/config/rootfiles/common/harfbuzz
> @@ -41,11 +41,11 @@
>  #usr/lib/libharfbuzz-subset.la
>  #usr/lib/libharfbuzz-subset.so
>  usr/lib/libharfbuzz-subset.so.0
> -usr/lib/libharfbuzz-subset.so.0.40401.0
> +usr/lib/libharfbuzz-subset.so.0.60000.0
>  #usr/lib/libharfbuzz.la
>  #usr/lib/libharfbuzz.so
>  usr/lib/libharfbuzz.so.0
> -usr/lib/libharfbuzz.so.0.40401.0
> +usr/lib/libharfbuzz.so.0.60000.0
>  #usr/lib/pkgconfig/harfbuzz-subset.pc
>  #usr/lib/pkgconfig/harfbuzz.pc
>  #usr/share/gtk-doc/html/harfbuzz
> @@ -115,6 +115,9 @@ usr/lib/libharfbuzz.so.0.40401.0
>  #usr/share/gtk-doc/html/harfbuzz/api-index-4-2-0.html
>  #usr/share/gtk-doc/html/harfbuzz/api-index-4-3-0.html
>  #usr/share/gtk-doc/html/harfbuzz/api-index-4-4-0.html
> +#usr/share/gtk-doc/html/harfbuzz/api-index-5-0-0.html
> +#usr/share/gtk-doc/html/harfbuzz/api-index-5-3-0.html
> +#usr/share/gtk-doc/html/harfbuzz/api-index-6-0-0.html
>  #usr/share/gtk-doc/html/harfbuzz/api-index-full.html
>  #usr/share/gtk-doc/html/harfbuzz/apple-advanced-typography-api.html
>  #usr/share/gtk-doc/html/harfbuzz/buffers-language-script-and-direction.html
> @@ -213,4 +216,3 @@ usr/lib/libharfbuzz.so.0.40401.0
>  #usr/share/gtk-doc/html/harfbuzz/why-do-i-need-a-shaping-engine.html
>  #usr/share/gtk-doc/html/harfbuzz/why-is-it-called-harfbuzz.html
>  #usr/share/gtk-doc/html/harfbuzz/working-with-harfbuzz-clusters.html
> -
> diff --git a/lfs/harfbuzz b/lfs/harfbuzz
> index 558c794de..c547b203c 100644
> --- a/lfs/harfbuzz
> +++ b/lfs/harfbuzz
> @@ -1,7 +1,7 @@
>  ###############################################################################
>  #                                                                             #
>  # IPFire.org - A linux based firewall                                         #
> -# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
> +# Copyright (C) 2007-2022  IPFire Team  <info@ipfire.org>                     #
>  #                                                                             #
>  # This program is free software: you can redistribute it and/or modify        #
>  # it under the terms of the GNU General Public License as published by        #
> @@ -24,7 +24,7 @@
>  
>  include Config
>  
> -VER        = 4.4.1
> +VER        = 6.0.0
>  
>  THISAPP    = harfbuzz-$(VER)
>  DL_FILE    = $(THISAPP).tar.xz
> @@ -40,7 +40,7 @@ objects = $(DL_FILE)
>  
>  $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
>  
> -$(DL_FILE)_BLAKE2 = a1c87e48228312b24bfa41a323fb4a4f6e2cb125c4a86df2a536a8c09f9e76bbaf18cb9b8b46452b949a9c01e31756925187c8c619fb9fb11f8ae29f36a250f0
> +$(DL_FILE)_BLAKE2 = bb08f90cf9540a076ec2fe5498658a0e5f963537ebd98fce271af9070d0fc7178346bf56c600720d433c9e3a403f67ec3ac898abeb1da12697ad22980ecf5204
>  
>  install : $(TARGET)
>
  

Patch

diff --git a/config/rootfiles/common/harfbuzz b/config/rootfiles/common/harfbuzz
index bb4bb2ee9..7da247be0 100644
--- a/config/rootfiles/common/harfbuzz
+++ b/config/rootfiles/common/harfbuzz
@@ -41,11 +41,11 @@ 
 #usr/lib/libharfbuzz-subset.la
 #usr/lib/libharfbuzz-subset.so
 usr/lib/libharfbuzz-subset.so.0
-usr/lib/libharfbuzz-subset.so.0.40401.0
+usr/lib/libharfbuzz-subset.so.0.60000.0
 #usr/lib/libharfbuzz.la
 #usr/lib/libharfbuzz.so
 usr/lib/libharfbuzz.so.0
-usr/lib/libharfbuzz.so.0.40401.0
+usr/lib/libharfbuzz.so.0.60000.0
 #usr/lib/pkgconfig/harfbuzz-subset.pc
 #usr/lib/pkgconfig/harfbuzz.pc
 #usr/share/gtk-doc/html/harfbuzz
@@ -115,6 +115,9 @@  usr/lib/libharfbuzz.so.0.40401.0
 #usr/share/gtk-doc/html/harfbuzz/api-index-4-2-0.html
 #usr/share/gtk-doc/html/harfbuzz/api-index-4-3-0.html
 #usr/share/gtk-doc/html/harfbuzz/api-index-4-4-0.html
+#usr/share/gtk-doc/html/harfbuzz/api-index-5-0-0.html
+#usr/share/gtk-doc/html/harfbuzz/api-index-5-3-0.html
+#usr/share/gtk-doc/html/harfbuzz/api-index-6-0-0.html
 #usr/share/gtk-doc/html/harfbuzz/api-index-full.html
 #usr/share/gtk-doc/html/harfbuzz/apple-advanced-typography-api.html
 #usr/share/gtk-doc/html/harfbuzz/buffers-language-script-and-direction.html
@@ -213,4 +216,3 @@  usr/lib/libharfbuzz.so.0.40401.0
 #usr/share/gtk-doc/html/harfbuzz/why-do-i-need-a-shaping-engine.html
 #usr/share/gtk-doc/html/harfbuzz/why-is-it-called-harfbuzz.html
 #usr/share/gtk-doc/html/harfbuzz/working-with-harfbuzz-clusters.html
-
diff --git a/lfs/harfbuzz b/lfs/harfbuzz
index 558c794de..c547b203c 100644
--- a/lfs/harfbuzz
+++ b/lfs/harfbuzz
@@ -1,7 +1,7 @@ 
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2022  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@ 
 
 include Config
 
-VER        = 4.4.1
+VER        = 6.0.0
 
 THISAPP    = harfbuzz-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@  objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = a1c87e48228312b24bfa41a323fb4a4f6e2cb125c4a86df2a536a8c09f9e76bbaf18cb9b8b46452b949a9c01e31756925187c8c619fb9fb11f8ae29f36a250f0
+$(DL_FILE)_BLAKE2 = bb08f90cf9540a076ec2fe5498658a0e5f963537ebd98fce271af9070d0fc7178346bf56c600720d433c9e3a403f67ec3ac898abeb1da12697ad22980ecf5204
 
 install : $(TARGET)