Subcommand

Convert

One target per run, separate from decompress + review. -2 is --to. The result line states what happened to the outlines.

fontcatalyst convert -2 woff2 fonts/
fontcatalyst convert -2 woff fonts/
fontcatalyst convert -2 otf Family.ttf
-2 / --toResult
woffLossless zlib wrap. Outlines and hints stay. A variable font adds a note that WOFF2 is the usual container.
woff2Lossless Brotli wrap. Outlines and hints stay.
otfTrueType outlines refit as CFF. TrueType instructions are dropped.

WOFF and WOFF2

The container changes. The SFNT inside does not. A webfont is unwrapped first, then wrapped in the target flavor.

A file that is already the requested flavor is skipped, not reported as an error. head.modified stays the time stored in the source. head.checkSumAdjustment is recalculated because the file bytes changed. WOFF2 may set head flag bit 11 to record its glyf/loca transform, and it drops an empty DSIG stub.

TTF to OTF

Fidelity warning. Quadratic outlines are refit as cubics (tolerance 0.001 em). TrueType instructions and related tables are dropped. This is not a cubic master. The warning is printed on every file.

The [otf] install runs two further steps. skia-pathops removes overlapping contours before the refit, so a CFF rasterizer does not knock a crossing out. An implied on-curve point left by that step is made explicit before the cubic refit. cffsubr then shares repeated pieces of the CFF, which makes the file smaller and does not change the picture. If either step is missing or fails, that step is undone and the conversion still writes the font. The result line says what was skipped. head.modified stays the time stored in the source.

An existing CFF font is left alone and reported as skipped: it is already an OTF, so no conversion is necessary. Variable TTF to variable OTF is refused. OTF to TTF is refused.

Folder flags

-c, -ct, and -o place that one target the same way as on the default command. A run does not emit a set of formats into labeled distribution folders.