texlive[76125] Build/source/libs: harfbuzz 11.4.3

commits+kakuto at tug.org commits+kakuto at tug.org
Sun Aug 24 00:02:51 CEST 2025


Revision: 76125
          https://tug.org/svn/texlive?view=revision&revision=76125
Author:   kakuto
Date:     2025-08-24 00:02:51 +0200 (Sun, 24 Aug 2025)
Log Message:
-----------
harfbuzz 11.4.3

Modified Paths:
--------------
    trunk/Build/source/libs/README
    trunk/Build/source/libs/harfbuzz/ChangeLog
    trunk/Build/source/libs/harfbuzz/TLpatches/ChangeLog
    trunk/Build/source/libs/harfbuzz/TLpatches/TL-Changes
    trunk/Build/source/libs/harfbuzz/configure
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/meson.build
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-harfrust.cc
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-vector.hh
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/rust/Cargo.toml
    trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/rust/shape.rs
    trunk/Build/source/libs/harfbuzz/version.ac

Modified: trunk/Build/source/libs/README
===================================================================
--- trunk/Build/source/libs/README	2025-08-22 23:42:33 UTC (rev 76124)
+++ trunk/Build/source/libs/README	2025-08-23 22:02:51 UTC (rev 76125)
@@ -28,7 +28,7 @@
   https://sourceforge.net/projects/silgraphite/files/graphite2/
   (requires C++11)
 
-harfbuzz 11.4.2 - checked 21aug25
+harfbuzz 11.4.3 - checked 24aug25
   https://github.com/harfbuzz/harfbuzz/releases/latest
 
 icu 76.1 - checked 27oct24 (requires C++17, e.g., g++13)

Modified: trunk/Build/source/libs/harfbuzz/ChangeLog
===================================================================
--- trunk/Build/source/libs/harfbuzz/ChangeLog	2025-08-22 23:42:33 UTC (rev 76124)
+++ trunk/Build/source/libs/harfbuzz/ChangeLog	2025-08-23 22:02:51 UTC (rev 76125)
@@ -1,3 +1,8 @@
+2025-08-24  Akira Kakuto  <kakuto at jcom.zaq.ne.jp>
+
+	Import harfbuzz-11.4.3.
+	* version.ac: Adjusted.
+
 2025-08-21  Akira Kakuto  <kakuto at jcom.zaq.ne.jp>
 
 	Import harfbuzz-11.4.2.

Modified: trunk/Build/source/libs/harfbuzz/TLpatches/ChangeLog
===================================================================
--- trunk/Build/source/libs/harfbuzz/TLpatches/ChangeLog	2025-08-22 23:42:33 UTC (rev 76124)
+++ trunk/Build/source/libs/harfbuzz/TLpatches/ChangeLog	2025-08-23 22:02:51 UTC (rev 76125)
@@ -1,3 +1,8 @@
+2025-08-24  Akira Kakuto  <kakuto at jcom.zaq.ne.jp>
+
+	Imported harfbuzz-11.4.3 source tree from:
+	https://github.com/harfbuzz/harfbuzz/releases/download/11.4.3/
+
 2025-08-21  Akira Kakuto  <kakuto at jcom.zaq.ne.jp>
 
 	Imported harfbuzz-11.4.2 source tree from:

Modified: trunk/Build/source/libs/harfbuzz/TLpatches/TL-Changes
===================================================================
--- trunk/Build/source/libs/harfbuzz/TLpatches/TL-Changes	2025-08-22 23:42:33 UTC (rev 76124)
+++ trunk/Build/source/libs/harfbuzz/TLpatches/TL-Changes	2025-08-23 22:02:51 UTC (rev 76125)
@@ -1,5 +1,5 @@
-Changes applied to the harfbuzz-11.4.2/ tree as obtained from:
-	https://github.com/harfbuzz/harfbuzz/releases/download/11.4.2/
+Changes applied to the harfbuzz-11.4.3/ tree as obtained from:
+	https://github.com/harfbuzz/harfbuzz/releases/download/11.4.3/
 
 Removed:
 	.clang-format

Modified: trunk/Build/source/libs/harfbuzz/configure
===================================================================
--- trunk/Build/source/libs/harfbuzz/configure	2025-08-22 23:42:33 UTC (rev 76124)
+++ trunk/Build/source/libs/harfbuzz/configure	2025-08-23 22:02:51 UTC (rev 76125)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for harfbuzz (TeX Live) 11.4.2.
+# Generated by GNU Autoconf 2.72 for harfbuzz (TeX Live) 11.4.3.
 #
 # Report bugs to <tex-k at tug.org>.
 #
@@ -604,8 +604,8 @@
 # Identity of this package.
 PACKAGE_NAME='harfbuzz (TeX Live)'
 PACKAGE_TARNAME='harfbuzz--tex-live-'
-PACKAGE_VERSION='11.4.2'
-PACKAGE_STRING='harfbuzz (TeX Live) 11.4.2'
+PACKAGE_VERSION='11.4.3'
+PACKAGE_STRING='harfbuzz (TeX Live) 11.4.3'
 PACKAGE_BUGREPORT='tex-k at tug.org'
 PACKAGE_URL=''
 
@@ -1341,7 +1341,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-'configure' configures harfbuzz (TeX Live) 11.4.2 to adapt to many kinds of systems.
+'configure' configures harfbuzz (TeX Live) 11.4.3 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1413,7 +1413,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of harfbuzz (TeX Live) 11.4.2:";;
+     short | recursive ) echo "Configuration of harfbuzz (TeX Live) 11.4.3:";;
    esac
   cat <<\_ACEOF
 
@@ -1518,7 +1518,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-harfbuzz (TeX Live) configure 11.4.2
+harfbuzz (TeX Live) configure 11.4.3
 generated by GNU Autoconf 2.72
 
 Copyright (C) 2023 Free Software Foundation, Inc.
@@ -2075,7 +2075,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by harfbuzz (TeX Live) $as_me 11.4.2, which was
+It was created by harfbuzz (TeX Live) $as_me 11.4.3, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -5259,7 +5259,7 @@
 
 # Define the identity of the package.
  PACKAGE='harfbuzz--tex-live-'
- VERSION='11.4.2'
+ VERSION='11.4.3'
 
 
 # Some tools Automake needs.
@@ -5573,8 +5573,8 @@
 
 HB_VERSION_MAJOR=11
 HB_VERSION_MINOR=4
-HB_VERSION_MICRO=2
-HB_VERSION=11.4.2
+HB_VERSION_MICRO=3
+HB_VERSION=11.4.3
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -9426,7 +9426,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by harfbuzz (TeX Live) $as_me 11.4.2, which was
+This file was extended by harfbuzz (TeX Live) $as_me 11.4.3, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -9494,7 +9494,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-harfbuzz (TeX Live) config.status 11.4.2
+harfbuzz (TeX Live) config.status 11.4.3
 configured by $0, generated by GNU Autoconf 2.72,
   with options \\"\$ac_cs_config\\"
 

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/NEWS	2025-08-22 23:42:33 UTC (rev 76124)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/NEWS	2025-08-23 22:02:51 UTC (rev 76125)
@@ -1,3 +1,13 @@
+Overview of changes leading to 11.4.3
+Saturday, August 23, 2025
+====================================
+- Make shaping fail much faster for certain malformed fonts (e.g., those that
+  trigger infinite recursion).
+- Fix undefined behaviour introduced in 11.4.2.
+- Fix detection of the “Cambria Math” font when fonts are scaled, so the
+  workaround for the bad `MATH` table constant is applied.
+
+
 Overview of changes leading to 11.4.2
 Thursday, August 21, 2025
 ====================================
@@ -15,6 +25,7 @@
 ====================================
 - Fix clang compiler warnings.
 
+
 Overview of changes leading to 11.4.0
 Wednesday, August 13, 2025
 ====================================
@@ -28,11 +39,13 @@
   performance evaluation and we do NOT recommend using it for any
   other purposes.
 
+
 Overview of changes leading to 11.3.3
 Sunday, July 26, 2025
 ====================================
 - Fix but in vertical shaping of fonts without the vmtx table.
 
+
 Overview of changes leading to 11.3.2
 Sunday, July 20, 2025
 ====================================
@@ -39,6 +52,7 @@
 - Fix build with non-compliant C++11 compilers that don't recognize
   the "and" keyword.
 
+
 Overview of changes leading to 11.3.1
 Sunday, July 20, 2025
 ====================================
@@ -45,6 +59,7 @@
 - Fix crasher in the glyph_v_origin function introduced in
   11.3.0.
 
+
 Overview of changes leading to 11.3.0
 Sunday, July 20, 2025
 ====================================

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/meson.build
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/meson.build	2025-08-22 23:42:33 UTC (rev 76124)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/meson.build	2025-08-23 22:02:51 UTC (rev 76125)
@@ -1,6 +1,6 @@
 project('harfbuzz', ['c', 'cpp'],
   meson_version: '>= 0.60.0',
-  version: '11.4.2',
+  version: '11.4.3',
   default_options: [
     'cpp_eh=none',          # Just to support msvc, we are passing -fno-exceptions also anyway
     # 'cpp_rtti=false',     # Do NOT enable, wraps inherit it and ICU needs RTTI

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc	2025-08-22 23:42:33 UTC (rev 76124)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc	2025-08-23 22:02:51 UTC (rev 76125)
@@ -227,6 +227,13 @@
   assert (have_output);
   if (unlikely (!ensure (len + count))) return false;
 
+  max_ops -= len - idx;
+  if (unlikely (max_ops < 0))
+  {
+    successful = false;
+    return false;
+  }
+
   memmove (info + idx + count, info + idx, (len - idx) * sizeof (info[0]));
   if (idx + count > len)
   {

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-harfrust.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-harfrust.cc	2025-08-22 23:42:33 UTC (rev 76124)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-harfrust.cc	2025-08-23 22:02:51 UTC (rev 76125)
@@ -28,7 +28,9 @@
 
 #include "hb-shaper-impl.hh"
 
+#include "hb-utf.hh"
 
+
 /*
  * buffer
  */
@@ -111,6 +113,10 @@
 		       const void         *rs_buffer,
 		       hb_font_t          *font,
 		       hb_buffer_t        *buffer,
+		       const uint8_t      *pre_context,
+		       uint32_t            pre_context_len,
+		       const uint8_t      *post_context,
+		       uint32_t            post_context_len,
 		       const hb_feature_t *features,
 		       unsigned int        num_features);
 
@@ -170,6 +176,18 @@
     }
   }
 
+  // Encode buffer context as UTF-8, so that HarfRust can use it.
+  constexpr int CONTEXT_BYTE_SIZE = 4 * hb_buffer_t::CONTEXT_LENGTH;
+  uint8_t context[2][CONTEXT_BYTE_SIZE];
+  unsigned context_len[2] = { 0, 0 };
+  for (unsigned i = 0; i < 2; i++)
+    for (unsigned j = 0; j < buffer->context_len[i]; j++)
+    {
+      context_len[i] = hb_utf8_t::encode (context[i] + context_len[i],
+					  context[i] + CONTEXT_BYTE_SIZE,
+					  buffer->context[i][j]) - context[i];
+    }
+
   return _hb_harfrust_shape_rs (font_data,
 				face_data,
 				hr_shape_plan,
@@ -176,6 +194,10 @@
 				hr_buffer,
 				font,
 				buffer,
+				context[0],
+				context_len[0],
+				context[1],
+				context_len[1],
 				features,
 				num_features);
 }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh	2025-08-22 23:42:33 UTC (rev 76124)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-math-table.hh	2025-08-23 22:02:51 UTC (rev 76125)
@@ -69,6 +69,8 @@
 
 struct MathConstants
 {
+  friend struct MATH;
+
   MathConstants* copy (hb_serialize_context_t *c) const
   {
     TRACE_SERIALIZE (this);
@@ -1109,8 +1111,8 @@
   {
 #ifndef HB_NO_MATH
     switch HB_CODEPOINT_ENCODE3 (font->face->table.MATH.get_blob ()->length,
-                                 get_constant (HB_OT_MATH_CONSTANT_DISPLAY_OPERATOR_MIN_HEIGHT, font),
-                                 get_constant (HB_OT_MATH_CONSTANT_DELIMITED_SUB_FORMULA_MIN_HEIGHT, font))
+                                 (this+mathConstants).minHeight[1], // displayOperatorMinHeight
+                                 (this+mathConstants).minHeight[0]) // delimitedSubFormulaMinHeight
     {
       /* sha1sum:ab4a4fe054d23061f3c039493d6f665cfda2ecf5  cambria.ttc
        * sha1sum:086855301bff644f9d8827b88491fcf73a6d4cb9  cambria.ttc

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-vector.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-vector.hh	2025-08-22 23:42:33 UTC (rev 76124)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-vector.hh	2025-08-23 22:02:51 UTC (rev 76125)
@@ -84,7 +84,10 @@
   }
   ~hb_vector_t () { fini (); }
 
-  template <unsigned n>
+  template <unsigned n,
+	    typename T = Type,
+	    hb_enable_if (hb_is_trivially_constructible(T) &&
+			  hb_is_trivially_destructible(T))>
   void
   set_storage (Type (&array)[n])
   {
@@ -91,6 +94,9 @@
     set_storage (array, n);
   }
 
+  template <typename T = Type,
+	    hb_enable_if (hb_is_trivially_constructible(T) &&
+			  hb_is_trivially_destructible(T))>
   void
   set_storage (Type *array, unsigned n)
   {
@@ -160,9 +166,11 @@
     /* We allow a hack to make the vector point to a foreign array
      * by the user. In that case length/arrayZ are non-zero but
      * allocated is zero. Don't free anything. */
-    shrink_vector (0);
     if (is_owned ())
+    {
+      shrink_vector (0);
       hb_free (arrayZ);
+    }
     init ();
   }
 
@@ -441,12 +449,12 @@
   shrink_vector (unsigned size)
   {
     assert (size <= length);
-    if (!std::is_trivially_destructible<Type>::value)
+    if (!hb_is_trivially_destructible(Type))
     {
       unsigned count = length - size;
-      Type *p = arrayZ + length - 1;
+      Type *p = arrayZ + length;
       while (count--)
-        p--->~Type ();
+        (--p)->~Type ();
     }
     length = size;
   }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/rust/Cargo.toml
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/rust/Cargo.toml	2025-08-22 23:42:33 UTC (rev 76124)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/rust/Cargo.toml	2025-08-23 22:02:51 UTC (rev 76125)
@@ -1,7 +1,7 @@
 [package]
 name = "harfbuzz_rust"
 edition = "2021"
-rust-version = "1.75.0"
+rust-version = "1.87.0"
 
 [dependencies]
 skrifa = { version = "0.*", optional = true }

Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/rust/shape.rs
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/rust/shape.rs	2025-08-22 23:42:33 UTC (rev 76124)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/rust/shape.rs	2025-08-23 22:02:51 UTC (rev 76125)
@@ -162,6 +162,10 @@
     hr_buffer_box: *const c_void,
     font: *mut hb_font_t,
     buffer: *mut hb_buffer_t,
+    pre_context: *const u8,
+    pre_context_length: u32,
+    post_context: *const u8,
+    post_context_length: u32,
     features: *const hb_feature_t,
     num_features: u32,
 ) -> hb_bool_t {
@@ -235,6 +239,11 @@
         hr_buffer.add(char::from_u32_unchecked(unicode), cluster);
     }
 
+    let pre_context = std::slice::from_raw_parts(pre_context, pre_context_length as usize);
+    hr_buffer.set_pre_context(str::from_utf8(pre_context).unwrap());
+    let post_context = std::slice::from_raw_parts(post_context, post_context_length as usize);
+    hr_buffer.set_post_context(str::from_utf8(post_context).unwrap());
+
     let ptem = hb_font_get_ptem(font);
     let ptem = if ptem > 0.0 { Some(ptem) } else { None };
 

Modified: trunk/Build/source/libs/harfbuzz/version.ac
===================================================================
--- trunk/Build/source/libs/harfbuzz/version.ac	2025-08-22 23:42:33 UTC (rev 76124)
+++ trunk/Build/source/libs/harfbuzz/version.ac	2025-08-23 22:02:51 UTC (rev 76125)
@@ -8,4 +8,4 @@
 dnl --------------------------------------------------------
 dnl
 dnl  m4-include this file to define the current harfbuzz version
-m4_define([harfbuzz_version], [11.4.2])
+m4_define([harfbuzz_version], [11.4.3])



More information about the tex-live-commits mailing list.