Awesome
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
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