FTBENCH(1)

πŸŽ€ ftbench(1) β€” General Commands Manual πŸŽ€

okay bestie, welcome to the ftbench page. This is the General Commands Manual entry for it, and it's giving benchmark era πŸ’…


🌸 NAME 🌸

ftbench β€” benchmark some common FreeType paths, no cap ✨

πŸ¦‹ SYNOPSIS πŸ¦‹

ftbench [options] fontname

πŸ’– DESCRIPTION πŸ’–

The ftbench tool measures performance of some common FreeType operations. It's literally here to run the vibe check on speed, bestie πŸƒβ€β™€οΈπŸ’¨

This program is part of the FreeType demos package. Proud demo-package member, periodt πŸŽ€

✨ OPTIONS ✨

  • -a axis1,axis2,... β€” For Multiple Master, GX, or OpenType variation fonts, specify design coordinates for each axis at start-up. Ignored for all other font formats. So if your font has axes, this is your moment; otherwise it's just gonna sit there looking cute πŸ™ˆ
  • -b tests β€” Perform chosen tests. Here's the menu, bestie:
    • a β€” load glyphs (FT_Load_Glyph)
    • b β€” load advance widths (FT_Get_Advances)
    • c β€” render glyphs (FT_Render_Glyph)
    • d β€” load glyphs (FT_Get_Glyph)
    • e β€” get glyph indices (FT_Get_Char_Index)
    • f β€” iterate CMap (FT_Get_{First,Next}_Char)
    • g β€” open a new face (FT_New_Face or FT_New_Memory_Face)
    • h β€” embolden glyphs (FT_GlyphSlot_Embolden)
    • i β€” stroke glyphs (FT_Glyph_Stroke)
    • j β€” get glyph bboxes (FT_Outline_Get_BBox)
    • k β€” get glyph cboxes (FT_Glyph_Get_CBox)
    • l β€” open a new face and load glyphs

The default is abcdefghijkl β€” that's literally all the tests, iykyk πŸ‘‘

The number of used glyphs per test (within a single iteration) is given by option -i.

  • -C β€” Compare with cached version if available. Cute lil comparison moment 🫢
  • -c N β€” Use at most N iterations for each test (0 means time limited). So 0 isn't "zero work", it's "let the clock decide", bestie ⏳
  • -e E β€” Use charmap with index E instead of the default unicode. Charmap selection, but make it fashion πŸ’…
  • -f L β€” Use hexadecimal (not decimal) number L as load flags (see the FT_LOAD_XXX macros in the FreeType reference). Hex, not decimal β€” don't play yourself πŸ™ˆ
  • -H name β€” Using CFF hinting engine name. Available versions are depending on compilation options of FreeType; call ftbench without an argument to get the actual list. Built different depending on your FreeType build, fr fr πŸ”₯
  • -I ver β€” Using TT interpreter version ver. Available versions are depending on compilation options of FreeType; call ftbench without an argument to get the actual list. Same energy: check the list by running with no argument 🧚
  • -i I-J β€” Forward or reverse range of glyph indices to use (default is from 0 to the number of glyphs minus one). Range supremacy πŸ’–
  • -m M β€” Set maximum cache size to M KiByte (default is 1024). Cache got a max, and it's 1024 KiByte by default ✨
  • -p β€” Preload font file in memory (this is, testing FT_New_Memory_Face instead of FT_New_Face). Memory-face behavior, slay πŸ§ πŸ’…
  • -r R β€” Set render mode to R:
    • 0 β€” normal
    • 1 β€” light
    • 2 β€” mono
    • 3 β€” horizontal LCD
    • 4 β€” vertical LCD

(default is 0). This corresponds to the values of the FT_RENDER_MODE_XXX flags. Render mode selection is main character energy 🌈

  • -s S β€” Use S ppem as face size (default is 10ppem). If set to zero, don't call FT_Set_Pixel_Sizes. Use value 0 with option -f 1 or something similar to load the glyphs unscaled, otherwise errors will show up.
fr fr, zero has caveats: use 0 with something like -f 1 to load unscaled, or errors will show up 😭
  • -t T β€” Use at most T seconds per test (default is 2). Timeout but make it cozy ⏰
  • -v β€” Show version. The classic "what version are we on" check πŸŽ€

This page is from FreeType 2.15.0, dated October 2026 β€” that's the source/version and date, bestie. go benchmark and slay, byeee πŸ’œπŸ¦‹

πŸ“¦ where this page comes from