texlive[76148] Build/source/libs: harfbuzz 11.4.4
commits+kakuto at tug.org
commits+kakuto at tug.org
Tue Aug 26 08:58:20 CEST 2025
Revision: 76148
https://tug.org/svn/texlive?view=revision&revision=76148
Author: kakuto
Date: 2025-08-26 08:58:19 +0200 (Tue, 26 Aug 2025)
Log Message:
-----------
harfbuzz 11.4.4
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/OT/Layout/GSUB/Ligature.hh
trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext-font.cc
trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc
trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-harfrust.cc
trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh
trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh
trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc
trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh
trunk/Build/source/libs/harfbuzz/version.ac
Modified: trunk/Build/source/libs/README
===================================================================
--- trunk/Build/source/libs/README 2025-08-25 23:42:05 UTC (rev 76147)
+++ trunk/Build/source/libs/README 2025-08-26 06:58:19 UTC (rev 76148)
@@ -28,7 +28,7 @@
https://sourceforge.net/projects/silgraphite/files/graphite2/
(requires C++11)
-harfbuzz 11.4.3 - checked 24aug25
+harfbuzz 11.4.4 - checked 26aug25
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-25 23:42:05 UTC (rev 76147)
+++ trunk/Build/source/libs/harfbuzz/ChangeLog 2025-08-26 06:58:19 UTC (rev 76148)
@@ -1,3 +1,8 @@
+2025-08-26 Akira Kakuto <kakuto at jcom.zaq.ne.jp>
+
+ Import harfbuzz-11.4.4.
+ * version.ac: Adjusted.
+
2025-08-24 Akira Kakuto <kakuto at jcom.zaq.ne.jp>
Import harfbuzz-11.4.3.
Modified: trunk/Build/source/libs/harfbuzz/TLpatches/ChangeLog
===================================================================
--- trunk/Build/source/libs/harfbuzz/TLpatches/ChangeLog 2025-08-25 23:42:05 UTC (rev 76147)
+++ trunk/Build/source/libs/harfbuzz/TLpatches/ChangeLog 2025-08-26 06:58:19 UTC (rev 76148)
@@ -1,3 +1,8 @@
+2025-08-26 Akira Kakuto <kakuto at jcom.zaq.ne.jp>
+
+ Imported harfbuzz-11.4.4 source tree from:
+ https://github.com/harfbuzz/harfbuzz/releases/download/11.4.4/
+
2025-08-24 Akira Kakuto <kakuto at jcom.zaq.ne.jp>
Imported harfbuzz-11.4.3 source tree from:
Modified: trunk/Build/source/libs/harfbuzz/TLpatches/TL-Changes
===================================================================
--- trunk/Build/source/libs/harfbuzz/TLpatches/TL-Changes 2025-08-25 23:42:05 UTC (rev 76147)
+++ trunk/Build/source/libs/harfbuzz/TLpatches/TL-Changes 2025-08-26 06:58:19 UTC (rev 76148)
@@ -1,5 +1,5 @@
-Changes applied to the harfbuzz-11.4.3/ tree as obtained from:
- https://github.com/harfbuzz/harfbuzz/releases/download/11.4.3/
+Changes applied to the harfbuzz-11.4.4/ tree as obtained from:
+ https://github.com/harfbuzz/harfbuzz/releases/download/11.4.4/
Removed:
.clang-format
Modified: trunk/Build/source/libs/harfbuzz/configure
===================================================================
--- trunk/Build/source/libs/harfbuzz/configure 2025-08-25 23:42:05 UTC (rev 76147)
+++ trunk/Build/source/libs/harfbuzz/configure 2025-08-26 06:58:19 UTC (rev 76148)
@@ -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.3.
+# Generated by GNU Autoconf 2.72 for harfbuzz (TeX Live) 11.4.4.
#
# 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.3'
-PACKAGE_STRING='harfbuzz (TeX Live) 11.4.3'
+PACKAGE_VERSION='11.4.4'
+PACKAGE_STRING='harfbuzz (TeX Live) 11.4.4'
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.3 to adapt to many kinds of systems.
+'configure' configures harfbuzz (TeX Live) 11.4.4 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.3:";;
+ short | recursive ) echo "Configuration of harfbuzz (TeX Live) 11.4.4:";;
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.3
+harfbuzz (TeX Live) configure 11.4.4
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.3, which was
+It was created by harfbuzz (TeX Live) $as_me 11.4.4, 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.3'
+ VERSION='11.4.4'
# Some tools Automake needs.
@@ -5573,8 +5573,8 @@
HB_VERSION_MAJOR=11
HB_VERSION_MINOR=4
-HB_VERSION_MICRO=3
-HB_VERSION=11.4.3
+HB_VERSION_MICRO=4
+HB_VERSION=11.4.4
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.3, which was
+This file was extended by harfbuzz (TeX Live) $as_me 11.4.4, 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.3
+harfbuzz (TeX Live) config.status 11.4.4
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-25 23:42:05 UTC (rev 76147)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/NEWS 2025-08-26 06:58:19 UTC (rev 76148)
@@ -1,3 +1,10 @@
+Overview of changes leading to 11.4.4
+Tuesday, August 26, 2025
+=====================================
+- Fix a shaping regression affecting mark glyphs in certain fonts.
+- Fix pruning of mark filtering sets when subsetting fonts, which caused changes in shaping behaviour.
+
+
Overview of changes leading to 11.4.3
Saturday, August 23, 2025
====================================
Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/meson.build
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/meson.build 2025-08-25 23:42:05 UTC (rev 76147)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/meson.build 2025-08-26 06:58:19 UTC (rev 76148)
@@ -1,6 +1,6 @@
project('harfbuzz', ['c', 'cpp'],
meson_version: '>= 0.60.0',
- version: '11.4.3',
+ version: '11.4.4',
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/OT/Layout/GSUB/Ligature.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GSUB/Ligature.hh 2025-08-25 23:42:05 UTC (rev 76147)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GSUB/Ligature.hh 2025-08-26 06:58:19 UTC (rev 76148)
@@ -47,7 +47,13 @@
template <typename set_t>
void collect_second (set_t &s) const
{
- s.add (component[1]); // This adds codepoint 0 if component array is empty.
+ if (unlikely (!component.get_length ()))
+ {
+ // A ligature without any components. Anything matches.
+ s = set_t::full ();
+ return;
+ }
+ s.add (component.arrayZ[0]);
}
bool would_apply (hb_would_apply_context_t *c) const
Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext-font.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext-font.cc 2025-08-25 23:42:05 UTC (rev 76147)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext-font.cc 2025-08-26 06:58:19 UTC (rev 76148)
@@ -410,8 +410,8 @@
return false;
CFIndex len = CFStringGetLength (cf_name);
- if (len > size - 1)
- len = size - 1;
+ if (len > (CFIndex)size - 1)
+ len = (CFIndex)size - 1;
CFStringGetBytes (cf_name, CFRangeMake (0, len),
kCFStringEncodingUTF8, 0, false,
Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc 2025-08-25 23:42:05 UTC (rev 76147)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc 2025-08-26 06:58:19 UTC (rev 76148)
@@ -167,8 +167,8 @@
}
else
named_instance_index--;
- auto ct_font_desc = (CFArrayGetCount (ct_font_desc_array) > named_instance_index) ?
- (CTFontDescriptorRef) CFArrayGetValueAtIndex (ct_font_desc_array, named_instance_index) : nullptr;
+ auto ct_font_desc = (CFArrayGetCount (ct_font_desc_array) > (CFIndex) named_instance_index) ?
+ (CTFontDescriptorRef) CFArrayGetValueAtIndex (ct_font_desc_array, (CFIndex) named_instance_index) : nullptr;
if (unlikely (!ct_font_desc))
{
CFRelease (ct_font_desc_array);
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-25 23:42:05 UTC (rev 76147)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-harfrust.cc 2025-08-26 06:58:19 UTC (rev 76148)
@@ -176,17 +176,20 @@
}
}
- // Encode buffer context as UTF-8, so that HarfRust can use it.
+ // Encode buffer pre/post-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];
- }
+ uint8_t pre_context[CONTEXT_BYTE_SIZE];
+ unsigned pre_context_len = 0;
+ for (unsigned i = buffer->context_len[0]; i; i--)
+ pre_context_len = hb_utf8_t::encode (pre_context + pre_context_len,
+ pre_context + CONTEXT_BYTE_SIZE,
+ buffer->context[0][i - 1]) - pre_context;
+ uint8_t post_context[CONTEXT_BYTE_SIZE];
+ unsigned post_context_len = 0;
+ for (unsigned i = 0; i < buffer->context_len[1]; i++)
+ post_context_len = hb_utf8_t::encode (post_context + post_context_len,
+ post_context + CONTEXT_BYTE_SIZE,
+ buffer->context[1][i]) - post_context;
return _hb_harfrust_shape_rs (font_data,
face_data,
@@ -194,10 +197,10 @@
hr_buffer,
font,
buffer,
- context[0],
- context_len[0],
- context[1],
- context_len[1],
+ pre_context,
+ pre_context_len,
+ post_context,
+ post_context_len,
features,
num_features);
}
Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh 2025-08-25 23:42:05 UTC (rev 76147)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh 2025-08-26 06:58:19 UTC (rev 76148)
@@ -1387,6 +1387,11 @@
{
unsigned new_flag = lookupFlag;
new_flag &= ~LookupFlag::UseMarkFilteringSet;
+ // https://github.com/harfbuzz/harfbuzz/issues/5499
+ // If we remove UseMarkFilteringSet flag because the set is now empty,
+ // we need to add IgnoreMarks flag, otherwise the lookup will not
+ // ignore any marks, which changes the behavior.
+ new_flag |= LookupFlag::IgnoreMarks;
out->lookupFlag = new_flag;
}
else
Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh 2025-08-25 23:42:05 UTC (rev 76147)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh 2025-08-26 06:58:19 UTC (rev 76148)
@@ -470,7 +470,7 @@
}
public:
- unsigned int lookup_props = (unsigned) -1;
+ unsigned int lookup_props = 0;
hb_mask_t mask = -1;
bool ignore_zwnj = false;
bool ignore_zwj = false;
@@ -720,8 +720,7 @@
hb_direction_t direction;
hb_mask_t lookup_mask = 1;
unsigned int lookup_index = (unsigned) -1;
- unsigned int lookup_props = (unsigned) -1;
- unsigned int cached_props = (unsigned) -1; /* Cached glyph properties for the current lookup. */
+ unsigned int lookup_props = 0;
unsigned int nesting_level_left = HB_MAX_NESTING_LEVEL;
bool has_glyph_classes;
@@ -795,18 +794,13 @@
HB_HOT
bool match_properties_mark (const hb_glyph_info_t *info,
unsigned int glyph_props,
- unsigned int match_props,
- bool cached) const
+ unsigned int match_props) const
{
/* If using mark filtering sets, the high short of
* match_props has the set index.
*/
if (match_props & LookupFlag::UseMarkFilteringSet)
- {
- if (cached && match_props == cached_props)
- return _hb_glyph_info_matches (info);
return gdef_accel.mark_set_covers (match_props >> 16, info->codepoint);
- }
/* The second byte of match_props has the meaning
* "ignore marks of attachment type different than
@@ -822,8 +816,7 @@
HB_ALWAYS_INLINE
#endif
bool check_glyph_property (const hb_glyph_info_t *info,
- unsigned match_props,
- bool cached = true) const
+ unsigned match_props) const
{
unsigned int glyph_props = _hb_glyph_info_get_glyph_props (info);
@@ -834,7 +827,7 @@
return false;
if (unlikely (glyph_props & HB_OT_LAYOUT_GLYPH_PROPS_MARK))
- return match_properties_mark (info, glyph_props, match_props, cached);
+ return match_properties_mark (info, glyph_props, match_props);
return true;
}
@@ -876,10 +869,6 @@
}
else
_hb_glyph_info_set_glyph_props (&buffer->cur(), props);
-
- if (cached_props != (unsigned) -1)
- _hb_glyph_info_set_matches (&buffer->cur(),
- check_glyph_property (&buffer->cur(), cached_props, false));
}
void replace_glyph (hb_codepoint_t glyph_index)
@@ -1391,7 +1380,7 @@
if (ligbase == LIGBASE_NOT_CHECKED)
{
bool found = false;
- auto *out = buffer->out_info;
+ const auto *out = buffer->out_info;
unsigned int j = buffer->out_len;
while (j && _hb_glyph_info_get_lig_id (&out[j - 1]) == first_lig_id)
{
Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc 2025-08-25 23:42:05 UTC (rev 76147)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc 2025-08-26 06:58:19 UTC (rev 76148)
@@ -1967,7 +1967,6 @@
const OT::hb_ot_layout_lookup_accelerator_t &accel)
{
hb_buffer_t *buffer = c->buffer;
- unsigned subtable_count = lookup.get_subtable_count ();
if (unlikely (!buffer->len || !c->lookup_mask))
return false;
@@ -1974,22 +1973,7 @@
bool ret = false;
- unsigned lookup_props = lookup.get_props ();
- if (lookup_props != c->cached_props)
- {
- bool cache_it = subtable_count > 1 && (lookup_props & OT::LookupFlag::UseMarkFilteringSet);
- if (cache_it)
- {
- auto &info = buffer->info;
- for (unsigned int i = 0; i < buffer->len; i++)
- _hb_glyph_info_set_matches (&info[i],
- c->check_glyph_property (&info[i], lookup_props, false));
- c->cached_props = lookup_props;
- }
- else
- c->cached_props = (unsigned) -1;
- }
- c->set_lookup_props (lookup_props);
+ c->set_lookup_props (lookup.get_props ());
if (likely (!lookup.is_reverse ()))
{
Modified: trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh
===================================================================
--- trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh 2025-08-25 23:42:05 UTC (rev 76147)
+++ trunk/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh 2025-08-26 06:58:19 UTC (rev 76148)
@@ -81,10 +81,9 @@
HB_OT_LAYOUT_GLYPH_PROPS_MARK = 0x08u,
/* The following are used internally; not derived from GDEF. */
- HB_OT_LAYOUT_GLYPH_PROPS_MATCHES = 0x10u,
- HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED = 0x20u,
- HB_OT_LAYOUT_GLYPH_PROPS_LIGATED = 0x40u,
- HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED = 0x80u,
+ HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED = 0x10u,
+ HB_OT_LAYOUT_GLYPH_PROPS_LIGATED = 0x20u,
+ HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED = 0x40u,
HB_OT_LAYOUT_GLYPH_PROPS_PRESERVE = HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED |
HB_OT_LAYOUT_GLYPH_PROPS_LIGATED |
@@ -611,21 +610,7 @@
return false;
}
-static inline bool
-_hb_glyph_info_matches (const hb_glyph_info_t *info)
-{
- return info->glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MATCHES;
-}
-static inline void
-_hb_glyph_info_set_matches (hb_glyph_info_t *info, bool matches)
-{
- if (matches)
- info->glyph_props() |= HB_OT_LAYOUT_GLYPH_PROPS_MATCHES;
- else
- info->glyph_props() &= ~HB_OT_LAYOUT_GLYPH_PROPS_MATCHES;
-}
-
/* Allocation / deallocation. */
static inline void
Modified: trunk/Build/source/libs/harfbuzz/version.ac
===================================================================
--- trunk/Build/source/libs/harfbuzz/version.ac 2025-08-25 23:42:05 UTC (rev 76147)
+++ trunk/Build/source/libs/harfbuzz/version.ac 2025-08-26 06:58:19 UTC (rev 76148)
@@ -8,4 +8,4 @@
dnl --------------------------------------------------------
dnl
dnl m4-include this file to define the current harfbuzz version
-m4_define([harfbuzz_version], [11.4.3])
+m4_define([harfbuzz_version], [11.4.4])
More information about the tex-live-commits
mailing list.