embedded_mogeefont/
lib.rs

1//! ![Unlike many other pixel fonts, MogeeFont maximizes screen space efficiency by incorporating glyphs of variable width alongside kerning tables and ligatures.](https://raw.githubusercontent.com/w0rm/embedded-mogeefont/main/mogeefont.png)
2//!
3//! MogeeFont was originally created by Nadya Kuzmina for a pixel game that had to fit on a 64×64 pixel screen. You can read about [the history of MogeeFont here](https://nadyakuzmina.com/story-of-mogeefont.html).
4//!
5//! This crate brings the font to embedded systems, it should be used together with [embedded-graphics](https://github.com/embedded-graphics/embedded-graphics) and [embedded-text](https://github.com/embedded-graphics/embedded-text).
6//!
7//! ![Embedded](https://raw.githubusercontent.com/w0rm/embedded-mogeefont/main/embedded.jpg)
8//!
9//! # Usage
10//!
11//! ```rust
12//! use embedded_text::{style::TextBoxStyle, TextBox};
13//! use embedded_mogeefont::MogeeTextStyle;
14//! use embedded_graphics::{
15//!   geometry::{Size, Point},
16//!   mock_display::MockDisplay,
17//!   pixelcolor::BinaryColor,
18//!   primitives::Rectangle,
19//!   Drawable,
20//! };
21//!
22//! let mut display = MockDisplay::new();
23//! let character_style = MogeeTextStyle::new(BinaryColor::On);
24//! let textbox_style = TextBoxStyle::default();
25//! let textbox_bounds = Rectangle::new(Point::zero(), Size::new(42, 22));
26//! let textbox = TextBox::with_textbox_style(
27//!    "Hello, world!",
28//!    textbox_bounds,
29//!    character_style,
30//!    textbox_style,
31//! );
32//! textbox.draw(&mut display).unwrap();
33//! assert_eq!(
34//!   display,
35//!   MockDisplay::from_pattern(&[
36//!     "                                          ",
37//!     "#  #     # #                       #   # #",
38//!     "#  #     # #                       #   # #",
39//!     "#  #  ## # # ##      # # # ##  ##  #  ## #",
40//!     "#### # # # # # #     # # # # # # # # # # #",
41//!     "#  # ### # # # #     # # # # # # # # # # #",
42//!     "#  # #   # # # #     # # # # # #   # # #  ",
43//!     "#  #  ## # #  ## #   ## #   ## #   # ##  #",
44//!     "                 #                        ",
45//!     "                #                         ",
46//!   ]),
47//! );
48//! ```
49//!
50//! # Supported characters
51//!
52//START-SPECIMEN
53//! | Charset | Specimen, upscaled to 2x |
54//! |---------|----------|
55//! | `ASCII` | ![ASCII](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAABeCAAAAADp6pWJAAAGzElEQVR4Ae3gAZAkSZIkSRKLqpm7R0REZmZmVlVVVVV3d3d3d/fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMdHd3d3dXV1VVVVVmZkZGRIS7m5kKz0xmV3d1d3dPz8zMzMxMYuUBjDDiuRnxLzHi+THiRWfEfykq/79ReSYjnj8DRoARAEYAGBDPyQgjAIwAMOJFZwDEFUaAARBgrhAABoS5QgAYEOYKYQAEGADxAFT+f6PyAAIEgBFGgBFgwAgj7mcEGAEgAIwAYQQIA0a8aIwAEGAEmPsJMEIAGAAjDIC4nxEAAsAACDACBBjxLFT+f6PyfBgwYAQACBBGgBHPJl4wI4wwAsCIfw0jDIB4NgMCjLifAQFG/KtQ+f+NyvMhjDAChAEBIMCIK4QBAUYAGAEAwghxhXhRGPGcxAMZASDAiGcTAEaAAXGFESAMCBAGAIwAIyr/v1F5PgwYMAIEGAFgBBgBRoARL4y4wgAYEFeYK8SLwojnZp6XACPACAAjwAgQYEAACKj8/0blmcSzCSOMACPuZwQYYcQVwoh/mQAjnk08kBEvmBFXGHGFADBgxIvKiAeg8v8blWcy4tkEiCsMiGcTRoAwAMIIAGEEgBEvjBHPZsSzCXOFATACDIAQ5rkJAwDCPDdhrjAgAIwAIyr/vyH+RUa8qIwAMOKFMeK/nxGV/98Q/8GMMOKFMeK/nxFQ+f8N8f8blf/fqPz/RuX/Nyr/v1H5/43Ki8CAeH4MCDAAAsAACAMgwAAIAyDAAAgjwAgDIADACCPACCMAjAAwwggwAgwIMAACwIAAAyAADIAw9xOV/9+o/IuMACMAzBUCjAAjQIARRoABEGAECAAQAEaAeSBhxL+FEWAECDDCCDACBBhhBBgQYARA5f83KgAYEM9mQFwhns2IK4x4wcS/TPzLjHggI8wVRvzriedA5f83KhgQAOYKIcCAADAgwAgwIJ6bAfGCGBBgQAAYEGBeMCOekzDCAAjzojAgQBgQz4HK/29UI+4nHkiAEQDifkaY+5n7CTDi+RMAIO4nDIAA8/wJI14wYZ6TAfGchLlCgBEPQOX/N6owIADMFQLAgAAQL4gA87yM+Lcx4tmEEQ8kXhjx/AgjjHgeVP5/o4IAA0Lcz4C4nxH3EwaMeE4GBAgDAsCAADAg7icMiAcyYIQwIJ6TAfH8CQPigYQB8ZwMiOdA5f83xL+KEf97GPEvoPL/G+JfyQCI/yOo/P+G+P+Nyv9vVP5/o/L/G5X/QEa8cEb8j0Ll/zeqEWCEEWCEEWAEGGEEgBFGABhhrhAGxLMZEGDEAwkj7mfEczPigQyI+xkBYASAEUYAGPGvRuX/Nyr/DgLAAAgQRgAIA0YY8UDiX8OI50cAgPh3ovL/G5UXgTDCCBBGGHGFES+IAPG8DAgAI8CAADAAYEAYMALAgAAjwAgAIwCMADAAIMCAAAMCwIAwIMCAqPz/RuVFIox4XuY5CSP+JQKMAGEECCOMMGCEAWEEgBEGQBjxggkjjABhBAgjjDAAwggQpvL/G5UXiRFGAAgj7if+9czzEg9k/jWM+Dei8v8bledgxBUGwAgwAoQRD2TEcxNG/EuEeU5GPJt4TsKIF0QY8W8hKv+/UYUBAcIIAGEEGPHCGQDxryMMgDAAwgCAESAMiGcz4t9KmCuMAGGehcr/b4j/EEY8JyP+/Yy4woB4bka8qIy4nxGXUfn/jcp/ECOezfxHE+Y/AZX/36j8hxDPSTyQuUL8WxkQz8mA+Hei8v8b4v83Kv+/Ufn/jcr/b1T+gxhhhBHPywgDAsAIAwLAgAAwIO5nBIARRjx/Rvw7UPn/DfFMRvzbGQFGgBHPyQgjrjDCiCuMuMKI/3JU/n+jggEBBoQRRhhhhBFGGGGEEUYYYQDEC2fAgAFhwIARYMCAMGBAgAFhBIARRoABYUAYYYQR/w5U/n+jGnGF+NcSYF4QI4wQRhhhQBhhBIAwwoAwwoAR5nkZAUb8B6Ly/xtVGHGFES+MMOKBjAAjnk0YYYQR/3GEEcKI/zBU/n+jgjDiRWGEEfczAkAYcT8jQID4txBGPD/CCGHEfxAq/79RDQgQ5gpzhREARhjxbMIAgAHxH8uI58eAMCBAmP8AVP5/o4r7CQBxhbhCAAgAAQJAGBD/OuL5Ew8kDIjnJgDE/YT5d6Py/xuV/xDCCAAj/m3E/YT5L0Ll/zcq/wYGxHMSV4h/KwMCDAgjwIAw4rkZEEb8u1D5/41/BGGV8NSunz09AAAAAElFTkSuQmCC) |
56//END-SPECIMEN
57//!
58#![no_std]
59#![deny(missing_docs)]
60#![deny(missing_debug_implementations)]
61#![deny(missing_copy_implementations)]
62#![deny(trivial_casts)]
63#![deny(trivial_numeric_casts)]
64#![deny(unsafe_code)]
65#![deny(unstable_features)]
66#![deny(unused_import_braces)]
67#![deny(unused_qualifications)]
68#![deny(rustdoc::broken_intra_doc_links)]
69#![deny(rustdoc::private_intra_doc_links)]
70mod charset;
71mod draw_target;
72mod generated;
73mod kerning;
74mod ligatures;
75mod side_bearings;
76mod text_style;
77
78pub use text_style::TextStyle as MogeeTextStyle;