[fonttools/fonttools] d4cde0: Pin a single head.modified timestamp across TTColl...

0 views
Skip to first unread message

Cosimo Lupo

unread,
Jun 22, 2026, 9:00:18 AM (3 days ago) Jun 22
to fontto...@googlegroups.com
Branch: refs/heads/ttc-deterministic-head-timestamp
Home: https://github.com/fonttools/fonttools
Commit: d4cde0a215d92e77b2dec9aecfca21409c06f6cf
https://github.com/fonttools/fonttools/commit/d4cde0a215d92e77b2dec9aecfca21409c06f6cf
Author: Cosimo Lupo <cos...@anthrotype.com>
Date: 2026-06-22 (Mon, 22 Jun 2026)

Changed paths:
M Lib/fontTools/ttLib/ttCollection.py

Log Message:
-----------
Pin a single head.modified timestamp across TTCollection.save

Saving a TTC with recalcTimestamp=True restamps each font's head from
timestampNow() (1-second granularity); if the clock ticks between two fonts'
head.compile() calls their heads diverge, no longer dedup, and the saved size
shifts by a whole head table (+56 bytes) -- the flaky TTC v2 roundtrip test
failures. Stamp one timestamp across the collection so the heads stay shareable.

https://github.com/fonttools/fonttools/issues/4110



To unsubscribe from these emails, change your notification settings at https://github.com/fonttools/fonttools/settings/notifications

Cosimo Lupo

unread,
Jun 22, 2026, 9:13:37 AM (3 days ago) Jun 22
to fontto...@googlegroups.com
Branch: refs/heads/main
Home: https://github.com/fonttools/fonttools
Commit: d4cde0a215d92e77b2dec9aecfca21409c06f6cf
https://github.com/fonttools/fonttools/commit/d4cde0a215d92e77b2dec9aecfca21409c06f6cf
Author: Cosimo Lupo <cos...@anthrotype.com>
Date: 2026-06-22 (Mon, 22 Jun 2026)

Changed paths:
M Lib/fontTools/ttLib/ttCollection.py

Log Message:
-----------
Pin a single head.modified timestamp across TTCollection.save

Saving a TTC with recalcTimestamp=True restamps each font's head from
timestampNow() (1-second granularity); if the clock ticks between two fonts'
head.compile() calls their heads diverge, no longer dedup, and the saved size
shifts by a whole head table (+56 bytes) -- the flaky TTC v2 roundtrip test
failures. Stamp one timestamp across the collection so the heads stay shareable.

https://github.com/fonttools/fonttools/issues/4110


Commit: c261dc5516b36430ab079d6b24844d8931d2202c
https://github.com/fonttools/fonttools/commit/c261dc5516b36430ab079d6b24844d8931d2202c
Author: Cosimo Lupo <cos...@anthrotype.com>
Date: 2026-06-22 (Mon, 22 Jun 2026)

Changed paths:
M Tests/ttLib/ttCollection_test.py

Log Message:
-----------
Add regression test for deterministic TTCollection.save

Forces timestampNow() to tick on every call and checks the two fonts' head
tables still share one 'modified' (so a clock tick adds no extra head table).


Commit: ca105fa4b5f133a5fde7d7d5359474c993afd52d
https://github.com/fonttools/fonttools/commit/ca105fa4b5f133a5fde7d7d5359474c993afd52d
Author: Cosimo Lupo <cos...@anthrotype.com>
Date: 2026-06-22 (Mon, 22 Jun 2026)

Changed paths:
M Lib/fontTools/ttLib/ttCollection.py
M Tests/ttLib/ttCollection_test.py

Log Message:
-----------
Merge pull request #4111 from fonttools/ttc-deterministic-head-timestamp

Pin a single head.modified timestamp across TTCollection.save


Compare: https://github.com/fonttools/fonttools/compare/5e84a4c24c88...ca105fa4b5f1
Reply all
Reply to author
Forward
0 new messages