[fonttools/fonttools] 37ab1e: [ot] Add 24-bit Layout converters

0 views
Skip to first unread message

Behdad Esfahbod

unread,
9:50 AM (2 hours ago) 9:50 AM
to fontto...@googlegroups.com
Branch: refs/heads/beyond-64k
Home: https://github.com/fonttools/fonttools
Commit: 37ab1e4088f076ce92c8560224af2a1a1c75ed59
https://github.com/fonttools/fonttools/commit/37ab1e4088f076ce92c8560224af2a1a1c75ed59
Author: Behdad Esfahbod <beh...@behdad.org>
Date: 2026-06-05 (Fri, 05 Jun 2026)

Changed paths:
M Lib/fontTools/ttLib/tables/otConverters.py

Log Message:
-----------
[ot] Add 24-bit Layout converters

Add signed and computed 24-bit integer converters, plus a glyph-name-aware 24-bit glyph ID converter for extended OpenType Layout formats.

Assisted-by: Codex


Commit: 169d4636d002d79159267dbeb28b60c90174417b
https://github.com/fonttools/fonttools/commit/169d4636d002d79159267dbeb28b60c90174417b
Author: Behdad Esfahbod <beh...@behdad.org>
Date: 2026-06-05 (Fri, 05 Jun 2026)

Changed paths:
M Lib/fontTools/ttLib/tables/otData.py
A Tests/ttLib/tables/otData_test.py

Log Message:
-----------
[ot] Add beyond-64k Layout schemas

Add the extended OpenType Layout formats and versioned header fields
using specification names. Preserve the intentional 16-bit
chained-context and reverse-chain count exceptions documented by
HarfBuzz.

All pre-existing non-header schemas remain unchanged.

Assisted-by: Codex


Commit: a0a955b2131f60cbec4ce8ed8a1d90ac346371ba
https://github.com/fonttools/fonttools/commit/a0a955b2131f60cbec4ce8ed8a1d90ac346371ba
Author: Behdad Esfahbod <beh...@behdad.org>
Date: 2026-06-05 (Fri, 05 Jun 2026)

Changed paths:
M Lib/fontTools/ttLib/tables/otBase.py

Log Message:
-----------
[ot] Support deferred uint24 counts

Teach CountReference to serialize three-byte count values used by the new beyond-64k table formats.

Assisted-by: Codex


Commit: ca01d5640e05a5c11bf7713e68a82f199b47daf8
https://github.com/fonttools/fonttools/commit/ca01d5640e05a5c11bf7713e68a82f199b47daf8
Author: Behdad Esfahbod <beh...@behdad.org>
Date: 2026-06-05 (Fri, 05 Jun 2026)

Changed paths:
M Lib/fontTools/ttLib/tables/otData.py
M Lib/fontTools/ttLib/tables/otTables.py
M Tests/ttLib/tables/otTables_test.py

Log Message:
-----------
[ot] Support extended Coverage and ClassDef formats

Read and write the beyond-64k Coverage and ClassDef formats, selecting
them only when glyph IDs or encoded counts exceed the legacy limits.

Keep shared field names consistent across duplicate formats while using
the extended record types internally.

Test semantic reads and writes as well as exact binary serialization and
decompilation.

Assisted-by: Codex


Commit: 358b1d50530cc42736922ca13765ad51b5860289
https://github.com/fonttools/fonttools/commit/358b1d50530cc42736922ca13765ad51b5860289
Author: Behdad Esfahbod <beh...@behdad.org>
Date: 2026-06-05 (Fri, 05 Jun 2026)

Changed paths:
M Lib/fontTools/ttLib/tables/otTables.py
M Tests/ttLib/tables/otTables_test.py

Log Message:
-----------
[ot] Support extended SingleSubst formats

Read and write SingleSubst formats 3 and 4 when glyph IDs or counts
exceed the legacy limits.

Use 24-bit modular arithmetic for format 3 and preserve the legacy
formats whenever possible.

Assisted-by: Codex


Commit: 51d2bfd737c5e3337ab01fe29ee639ebd9fd3289
https://github.com/fonttools/fonttools/commit/51d2bfd737c5e3337ab01fe29ee639ebd9fd3289
Author: Behdad Esfahbod <beh...@behdad.org>
Date: 2026-06-05 (Fri, 05 Jun 2026)

Changed paths:
M Lib/fontTools/ttLib/tables/otTables.py
M Tests/ttLib/tables/otTables_test.py

Log Message:
-----------
[ot] Support extended MultipleSubst format

Read and write MultipleSubst format 2 when input or substitute glyph
IDs, or the sequence count, exceed the legacy limits.

Preserve format 1 for representable mappings and use Sequence2 records
for the extended format.

Assisted-by: Codex


Commit: 2a49049c6e4a6d9d8b4f9468ed064c78e86a763e
https://github.com/fonttools/fonttools/commit/2a49049c6e4a6d9d8b4f9468ed064c78e86a763e
Author: Behdad Esfahbod <beh...@behdad.org>
Date: 2026-06-05 (Fri, 05 Jun 2026)

Changed paths:
M Lib/fontTools/ttLib/tables/otTables.py
M Tests/ttLib/tables/otTables_test.py

Log Message:
-----------
[ot] Support extended AlternateSubst format

Read and write AlternateSubst format 2 when covered or alternate glyph
IDs, or the alternate-set count, exceed the legacy limits.

Preserve format 1 for representable mappings and use AlternateSet2
records for the extended format.

Assisted-by: Codex


Commit: 55126b18d777b808fd1b7df17cab7761c6121563
https://github.com/fonttools/fonttools/commit/55126b18d777b808fd1b7df17cab7761c6121563
Author: Behdad Esfahbod <beh...@behdad.org>
Date: 2026-06-05 (Fri, 05 Jun 2026)

Changed paths:
M Lib/fontTools/ttLib/tables/otTables.py
M Tests/ttLib/tables/otTables_test.py

Log Message:
-----------
[ot] Support extended LigatureSubst format

Read and write LigatureSubst format 2 when component or ligature glyph
IDs, or the ligature-set count, exceed the legacy limits.

Preserve format 1 for representable mappings and emit matching
extended ligature-set and ligature records.

Assisted-by: Codex


Commit: 73fbb23ebd6f16856896e0b327aa89f4b19e39a8
https://github.com/fonttools/fonttools/commit/73fbb23ebd6f16856896e0b327aa89f4b19e39a8
Author: Behdad Esfahbod <beh...@behdad.org>
Date: 2026-06-05 (Fri, 05 Jun 2026)

Changed paths:
M Lib/fontTools/misc/testTools.py
M Lib/fontTools/ttLib/tables/otTables.py
M Lib/fontTools/ttLib/ttFont.py
M Tests/ttLib/tables/otTables_test.py
M Tests/ttLib/ttFont_test.py

Log Message:
-----------
[ttFont] Add extended glyph ID capability

Add TTFont.hasExtendedGlyphIDs() to cheaply identify fonts whose glyph
ID namespace exceeds 16 bits.

Use it to skip extended-format selection scans for Coverage, ClassDef,
and handwritten GSUB subtables in normal fonts.

Assisted-by: Codex


Compare: https://github.com/fonttools/fonttools/compare/37ab1e4088f0%5E...73fbb23ebd6f

To unsubscribe from these emails, change your notification settings at https://github.com/fonttools/fonttools/settings/notifications
Reply all
Reply to author
Forward
0 new messages