Liberation Sans is a free font from Red Hat, metric-compatible with Arial. See https://github.com/liberationfonts/liberation-fonts Version 2.1.5, taken from the upstream liberation-fonts-ttf-2.1.5.tar.gz release archive (sha256 7191c669bf38899f73a2094ed00f7b800553364f90e2637010a69c0e268f25d0). Only the Regular weight is vendored; the archive also carries Bold/Italic/BoldItalic plus the Serif and Mono families, which nothing here needs yet. Licensed under the SIL Open Font License 1.1 (see OFL.txt), which permits bundling the font, or a sprite sheet baked from it, with a game. Note "Liberation" is a Reserved Font Name: an unmodified copy like this one keeps the name, but a modified derivative must not use it. Sprite sheets are produced with BMFont 64, version 1.14b_beta. See https://www.angelcode.com/products/bmfont/ Each .bmfc generates one sheet at one size; BMFont cannot pack several sizes together, and Glass only loads single-page fonts, so the page is the smallest power of two everything still fits on: LiberationSans-Regular-16px 16px 64x64 body text; smallest size without visible artifacts LiberationSans-Regular-32px 32px 128x256 LiberationSans-Regular-64px 64px 256x256 display Pages need not be square. 32px overflows 128x128 by a hair -- it wants 90% packing efficiency there, which rectangle packing cannot reach -- so a rectangle saves it from paying for a whole 256x256. Sizes double so they land on each other's pixel grid exactly, which keeps a sheet scaled to another size sharp instead of resampling between them. Regenerate one with: bmfont64.exe -c LiberationSans-Regular-32px.bmfc -o LiberationSans-Regular-32px.fnt Sheets below 20px turn useSmoothing and useClearType off and useRenderFromOutline on, because GDI's rasterizer stops serving us at that scale. Its smoothing spreads every sub-pixel stem across two pixels at partial coverage so none reaches full opacity, which reads as grey mush; and its hinting rounds some stems up to 2px while their neighbours round down, so 'f' came out visibly bolder than the rest of the alphabet. Rendering from the outline instead gives uniform 1px stems. Above 20px GDI is fine and these stay at the settings the 32px sheet was tuned with. The outline setting belongs to the face, not the size: Philosopher needs GDI's hinting at small sizes for exactly the reason Liberation Sans needs to escape it, so its sheets leave it off. Sizes are in pixels, not points -- an editor set to "10" usually means 10pt, which is 13.3px at 96 DPI. Each sheet also packs a U+2220 ANGLE mark from its own *-angle.png, since Liberation Sans has no such glyph and the phasor labels need one. Those .png files are generated -- see ..\AngleGlyph\README -- and are checked in so a sheet rebuilds from its .bmfc alone. BMFont gives an imported icon all four channels, so it reads back as chnl 15, which Glass maps to a null channel and samples as a plain sprite.