fountainment / fontbm

BMFont compatible, cross-platform command line bitmap font generator

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


BMFont compatible, cross-platform (Linux/macOS/Windows) command line bitmap font generator (FreeType2 based render).

sample sample


Linux macOS Windows
Actions Status Actions Status Build status


Download compiled version ( for Windows, fontbm for Linux) from Releases. Run:

fontbm --font-file FreeSans.ttf --output myfont

It will produce myfont.fnt (file format) and myfont_0.png (how to render text).

Available options (bold options are required):

option default comment
--font-file path to ttf file, required
--output output files name without extension, required
--font-size 32 font size (it matches to BMFont size, when "Match char height" option in Font Settings dialog is ticked)
--chars 32-126 required characters, for example 32-64,92,120-126 (without spaces), default value is 32-126 if 'chars-file' option is not defined
--texture-size 32x32,64x32,64x64,128x64, 128x128,256x128,256x256, 512x256,512x512,1024x512, 1024x1024,2048x1024,2048x2048 comma separated list of allowed texture sizes (without spaces), the first suitable size will be used
--texture-crop-width crop unused parts of output textures (width)
--texture-crop-height crop unused parts of output textures (height)
--color 255,255,255 foreground RGB color, for example: 32,255,255 (without spaces)
--background-color background RGB color, for example: 0,0,128 (without spaces), transparent by default
--chars-file optional path to UTF-8 text file with additional required characters (will be combined with 'chars' option), can be set multiple times
--data-format txt output data file format: txt, xml, bin, json, cbor
--kerning-pairs disabled generate kerning pairs: disabled, basic, regular (tuned by hinter), extended (bigger output size, but more precise)
--padding-up 0 padding up
--padding-right 0 padding right
--padding-down 0 padding down
--padding-left 0 padding left
--spacing-vert 0 spacing vertical
--spacing-horiz 0 spacing horizontal
--monochrome disable anti-aliasing
--extra-info write extra information to data file
--max-texture-count maximum generated texture count (unlimited if not set)
--texture-name-suffix index_aligned texture name suffix: "index_aligned", "index" or "none"

Building Linux



cmake .  

Building Windows (using vcpkg)

Download and install vcpkg and CMake 3.10.2 (or above). Run:

vcpkg install freetype
cmake -G "Visual Studio 14 2015" -DCMAKE_TOOLCHAIN_FILE=<path to vcpkg dir>/scripts/buildsystems/vcpkg.cmake

Open .sln in Visual Studio 2015 and rebuild all.

Building Windows

Download and install CMake 3.0 (or above) and FreeType. Run:

cmake -G "Visual Studio 14 2015"

Open .sln file in Visual Studio 2015, configure paths to FreeType and rebuild all.

Building macOS

(thanx to andycarle Moddable-OpenSource/moddable#325 (comment))

brew install freetype
git clone
cd fontbm
cmake .


Special thanks


MIT License

The project also bundles third party software under its own licenses:


BMFont compatible, cross-platform command line bitmap font generator

License:MIT License


Language:C++ 83.2%Language:Python 14.4%Language:CMake 2.3%Language:C 0.1%