Skip to content

Releases: Gheop/woffify

v0.2.3

Choose a tag to compare

@Gheop Gheop released this 12 Aug 04:47

Reject font collections.

  • Reject .ttc font collections with a clear message. WOFF2 has no collection format, so a TTC could not be converted correctly (no output without subsetting, silent index-0 pick with subsetting).
  • Hardened over 297 varied system fonts (color/COLR, CJK, Arabic, Indic, symbols, variable, CFF): all subset and convert, faithful output byte-identical to woff2_compress on the sample.

Image: ghcr.io/gheop/woffify:v0.2.3

v0.2.2

Choose a tag to compare

@Gheop Gheop released this 10 Jul 14:14

Deterministic output.

  • Fix non-deterministic WOFF2 output in parallel batches, caused by an uninitialized encode buffer. Output is now byte-identical to woff2_compress on every run.
  • Verified over 814 files (180 fonts as TTF/WOFF/WOFF2/EOT + 94 OTF): 634/634 convert and decode, 180/180 byte-identical to the reference, EOT->WOFF2 == TTF->WOFF2 180/180.

Image: ghcr.io/gheop/woffify:v0.2.2

v0.2.1

Choose a tag to compare

@Gheop Gheop released this 10 Jul 13:25

EOT input support.

  • Read uncompressed EOT (Embedded OpenType) files, extracting the embedded SFNT — for migrating legacy IE assets to WOFF2
  • EOT->WOFF2 output is identical to converting from the original TTF/OTF (lossless extraction)
  • MicroType Express-compressed EOT is rejected with a clear message (dead Microsoft format, no modern tool emits it)

Image: ghcr.io/gheop/woffify:v0.2.1

v0.2.0

Choose a tag to compare

@Gheop Gheop released this 02 Jul 20:02

Source-scan subsetting: derive the glyph subset from your sources instead of a hand-maintained list.

  • -subset-scan <path>: derive the subset from code points used in files/dirs (repeatable)
  • css mode: \fXXX escapes in CSS content declarations (icon fonts)
  • text mode: literal characters from HTML/templates (markup stripped, entities decoded)
  • auto (default): picks the mode per file extension
  • -subset-scan-report: lists kept code points and their origin file
  • Refuses to build an empty subset when a scan matches nothing

Image: ghcr.io/gheop/woffify:v0.2.0

v0.1.0

Choose a tag to compare

@Gheop Gheop released this 02 Jul 18:22

First release.

  • Convert WOFF/TTF/OTF/TTC to WOFF2 using the google/woff2 encoder (Brotli 11), byte-identical to woff2_compress
  • Pure-Go WOFF 1.0 decoding, so .woff files can be recompressed
  • Glyph subsetting via HarfBuzz hb-subset (a Latin subset is ~80% smaller)
  • Stdin/stdout pipe mode (woffify -) for temp-file-free CI integration
  • Parallel batch conversion of files and directories
  • Single fully static binary, scratch container image (~6 MB)

Image: ghcr.io/gheop/woffify:v0.1.0