FTVALID(1)

πŸ’… ftvalid(1) β€” the font layout table validator, bestie edition

ok so real talk: this is a page from the General Commands Manual, and the program is called ftvalid, and honestly? she's a font layout table validator and she's that girl. ✨


🌸 NAME 🌸

ftvalid β€” font layout table validator πŸŽ€


✨ SYNOPSIS ✨

ftvalid [options] fontfile

πŸ’– DESCRIPTION πŸ’–

okay so ftvalid is literally an OpenType layout table validator. that's the whole vibe. it goes through your font's layout tables and checks them, no cap. πŸ”₯

also fun fact: this program is part of the FreeType demos package. she's famous, she's got connections. πŸ’…


πŸ¦‹ OPTIONS πŸ¦‹

  • -f index β€” pick which font index you wanna look at. default is 0, like a normal person. πŸ‘‘
  • -t validator β€” choose your validator. the available validators are ot, gx, and ckern.
⚠️ heads up bestie: whether a validator is even available depends on the compile-time options of FreeType β€” specifically, whether the modules otvalid and gxvalid got compiled into the library. so like, if it's not there, it's not there, that's a build thing, not a you thing. 😭
  • -T tbls β€” [ot, gx] select which sfnt table name tags you want validated. use : to separate tags, got it? 🫢

tables supported in the ot validator are BASE, GDEF, GPOS, GSUB, JSTF, and MATH.

tables supported in the gx validator are feat, mort, morx, bsln, just, kern, opbd, trak, prop, and lcar.

example, because examples ate:

-T "feat:morx"
  • -T dialect β€” [ckern] select the classic kern dialect for validation. use : to separate dialect names. if you specify more than one dialect, then all of those dialects are accepted when validating. generous queen. πŸ’–

dialects supported in the ckern validator are ms and apple.

  • -l β€” list the layout-related SFNT tables that are actually available in the font file. the validator you selected with -t affects the list. πŸ“‹

ckern only applies to the kern table, ngl. and option -L lists the dialects supported in the ckern validator only if the kern table is available in the font file. conditional icon. πŸŽ€

  • -V level β€” validation level. possible values are 0 (default), 1 (tight), and 2 (paranoid). and yes 2 is called paranoid, she's dramatic and we love her. 😭πŸ”₯
  • -v β€” show version. simple, iconic, does exactly what it says. ⭐

🌈 ENVIRONMENT VARIABLES 🌈

  • FT2_DEBUG β€” you can specify component:level pairs for tracing. level must be in the range [1,7]. no negotiating on that one, fr fr.

available components for the ot validator are otvmodule, otvcommon, otvbase, otvgdef, otvgpos, otvgsub, and otvjstf.

available components for the gx validator are gxvmodule, gxvcommon, gxvfeat, gxvmort, gxvmorx, gxvbsln, gxvjust, gxvkern, gxvopbd, gxvtrak, gxvprop, and gxvlcar.

available component for the ckern validator is gxvkern only. that's it, that's the whole list. πŸ™ˆ

example time:

FT2_DEBUG="otvcommon:5 gxvkern:7"
πŸ’€ important: FT2_DEBUG only works if tracing support is compiled into FreeType. same energy as before β€” build-time thing, not your fault.

🧚 sign-off 🧚

that's the whole page, bestie! this one's from FreeType 2.15.0, dated October 2026, page FTVALID(1). iykyk πŸ’œπŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from