mplusfonts
Parametrized bitmap fonts for embedded-graphics, with font rasterization powered by swash.
Adds an optimal subset of M+ FONTS to your next embedded Rust project.[^1]

[^1]: Rust 2024 is required to build this crate
Features
- A family of variable-width and monospaced fonts -
mplusfontsallows you to choose between three typefaces, with font properties that you will want to specify. Using this crate, you can have font anti-aliasing and font-based kerning on embedded devices, in ano_stdenvironment. - No font files needed in your project - The
mplus!macro generates Rust code for your bitmap font. After expanding the macro and compiling your code, the TrueType fonts that come with this crate are no longer used. - Includes only the glyphs that you want - The
stringsattribute helps you find and add characters and character clusters to your bitmap font. You can also specify ranges of characters to include as parameters for themplus!macro. - Japanese scripts - Designed by Coji Morishita and licensed under the SIL Open Fonts License (LICENSE), M+ FONTS has support for over 5 700 kanji glyphs.^2 Since this crate is based on M+ FONTS, you gain access to all of its features.
Usage
- Make sure you have added
mplusfontsas a dependency. - Enable static text rendering by applying an attribute to your function with string definitions.
- Create a bitmap font inside your function so that
#[strings]can find its helper attributes. - Apply
#[strings::emit]to the bitmap font definition. - Include any additional character ranges in the bitmap font that you need.
- Have a character style use the bitmap font.
- You can now start drawing text.
- Exclude any string literals in your function that are not drawn by using
#[strings::skip].
Examples
[]
= "0.1"
For more examples, see the examples folder.
Limitations
- The
stringsattribute ignoresformat!,concat!, or any other macro invocation as a source of string literals. Since this crate is intended forno_stduse, this should be less of an issue, but it still requires a workaround forconcat!. BitmapFontStyledoes not have underline and strikethrough settings; these are not supported.- Rendering combining characters with characters for which no single code point exists, is a hit-or-miss.
- Transparent backgrounds are not supported. Alpha compositing is not available; this crate
does not have an
allocfeature.
Minimum supported Rust version
The minimum supported Rust version for mplusfonts is 1.85.
License
The source code of mplusfonts is dual-licensed under:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.