Fontbm
BMFont compatible, cross-platform (Linux/macOS/Windows) command line bitmap font generator (FreeType2 based).
Install / Use
/learn @vladimirgamalyan/FontbmREADME
fontbm
BMFont compatible, cross-platform (Linux/macOS/Windows) command line bitmap font generator (FreeType2 based render).

Status
Linux | macOS | Windows
------|-------|--------
|
|
Usage
Download compiled version (fontbm.zip 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
Dependencies:
- GCC-4.9
- CMake 3.0
- FreeType
Build:
cmake .
make
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 https://github.com/Moddable-OpenSource/moddable/issues/325#issuecomment-769615337)
brew install freetype
brew install cmake
git clone https://github.com/vladimirgamalyan/fontbm.git
cd fontbm
cmake .
make
Contributors
Special thanks
License
The project also bundles third party software under its own licenses:
- lvandeve/lodepng - PNG encoder and decoder in C and C++ - zlib
- juj/RectangleBinPack - 2d rectangular bin packing - Public Domain
- leethomason/tinyxml2 - a simple, small, efficient, C++ XML parse - zlib
- UTF8-CPP - UTF-8 with C++ in a Portable Way - BSL-1.0
- catchorg/Catch2 - A modern, C++-native, header-only, test framework for unit-tests - BSL-1.0
- jarro2783/cxxopts - Lightweight C++ command line option parser - MIT
- nlohmann/json - JSON for Modern C++ - MIT
Related Skills
node-connect
337.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
337.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.3kCommit, push, and open a PR
