Render text from BMFont bitmap fonts.
Render text with BMFont generated bitmap fonts.
Status: The core of this code is reasonably well tested, but it's at an early stage, it's basically just been thrown up online, and you use it at your own risk.
I wanted kerning, and I wanted support for a widespread bitmap font format. BMFont is used to generate bitmap fonts from Truetype fonts, and the format it uses seems reasonably well supported.
I have vague plans to extend the format slightly to allow pre-rendered glyphs - so characters could be multi-colored or embossed, for example.
Install it with:
python -m pip install bmtext
Currently the API matches ImageDraw.text as closely as possible (given the limited feature-set).
from PIL import Image from bmtext.meta import parse_file from bmtext.pil import BMText im = Image.new('RGB', (320, 180), color=(160, 160, 255)) drawer = BMText(im) font = parse_file("tests/fixtures/raleway-30/raleway-thin-32.fnt") # FIXME: Overlapping glyphs remove part of previous char. drawer.text((5, 5), "Antidisestablishmentarianism\nThorough\nSHOUTING!!!\nTomato?", font, fill='blue') im.show()
- FNT Compatibility:
- Handle binary font metadata formats.
- Test with multiple pages
- Multiple channel support
- Outline support (2-pass rendering)
- Improve error handling:
- Malformed fnt files
- Missing characters from font (replace/error)
- Allow arrangement of pre-rendered characters (rather than single-color alpha characters).
- Implement textsize
- Implement alignment
- Implement anchor
- More testing:
- Test with older versions of pillow
- Port to Python 3.5+ (remove the walrus operator)
Run the following to install the project (and dev dependencies) into your active virtualenv:
pip install -e .[dev]
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.