1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#![no_std]
extern crate embedded_graphics;
use embedded_graphics::fonts::font_builder::{FontBuilder, FontBuilderConf};
const CHARS_PER_ROW: u32 = 32;
fn char_offset_impl(c: char) -> u32 {
let fallback = '?' as u32 - ' ' as u32;
if c < ' ' {
return fallback;
}
if c <= '~' {
return c as u32 - ' ' as u32;
}
if c < '\u{00A0}' || c > 'ÿ' {
return fallback;
}
c as u32 - ' ' as u32 - 33
}
#[derive(Debug, Copy, Clone)]
pub enum ProFont7PointConf {}
impl FontBuilderConf for ProFont7PointConf {
const FONT_IMAGE: &'static [u8] = include_bytes!("../data/ProFont7Point.raw");
const CHAR_HEIGHT: u32 = 9;
const CHAR_WIDTH: u32 = 5;
const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW;
fn char_offset(c: char) -> u32 {
char_offset_impl(c)
}
}
pub type ProFont7Point<'a, C> = FontBuilder<'a, C, ProFont7PointConf>;
#[derive(Debug, Copy, Clone)]
pub enum ProFont9PointConf {}
impl FontBuilderConf for ProFont9PointConf {
const FONT_IMAGE: &'static [u8] = include_bytes!("../data/ProFont9Point.raw");
const CHAR_HEIGHT: u32 = 11;
const CHAR_WIDTH: u32 = 6;
const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW;
fn char_offset(c: char) -> u32 {
char_offset_impl(c)
}
}
pub type ProFont9Point<'a, C> = FontBuilder<'a, C, ProFont9PointConf>;
#[derive(Debug, Copy, Clone)]
pub enum ProFont10PointConf {}
impl FontBuilderConf for ProFont10PointConf {
const FONT_IMAGE: &'static [u8] = include_bytes!("../data/ProFont10Point.raw");
const CHAR_HEIGHT: u32 = 13;
const CHAR_WIDTH: u32 = 7;
const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW;
fn char_offset(c: char) -> u32 {
char_offset_impl(c)
}
}
pub type ProFont10Point<'a, C> = FontBuilder<'a, C, ProFont10PointConf>;
#[derive(Debug, Copy, Clone)]
pub enum ProFont12PointConf {}
impl FontBuilderConf for ProFont12PointConf {
const FONT_IMAGE: &'static [u8] = include_bytes!("../data/ProFont12Point.raw");
const CHAR_HEIGHT: u32 = 15;
const CHAR_WIDTH: u32 = 8;
const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW;
fn char_offset(c: char) -> u32 {
char_offset_impl(c)
}
}
pub type ProFont12Point<'a, C> = FontBuilder<'a, C, ProFont12PointConf>;
#[derive(Debug, Copy, Clone)]
pub enum ProFont14PointConf {}
impl FontBuilderConf for ProFont14PointConf {
const FONT_IMAGE: &'static [u8] = include_bytes!("../data/ProFont14Point.raw");
const CHAR_HEIGHT: u32 = 18;
const CHAR_WIDTH: u32 = 10;
const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW;
fn char_offset(c: char) -> u32 {
char_offset_impl(c)
}
}
pub type ProFont14Point<'a, C> = FontBuilder<'a, C, ProFont14PointConf>;
#[derive(Debug, Copy, Clone)]
pub enum ProFont18PointConf {}
impl FontBuilderConf for ProFont18PointConf {
const FONT_IMAGE: &'static [u8] = include_bytes!("../data/ProFont18Point.raw");
const CHAR_HEIGHT: u32 = 22;
const CHAR_WIDTH: u32 = 12;
const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW;
fn char_offset(c: char) -> u32 {
char_offset_impl(c)
}
}
pub type ProFont18Point<'a, C> = FontBuilder<'a, C, ProFont18PointConf>;
#[derive(Debug, Copy, Clone)]
pub enum ProFont24PointConf {}
impl FontBuilderConf for ProFont24PointConf {
const FONT_IMAGE: &'static [u8] = include_bytes!("../data/ProFont24Point.raw");
const CHAR_HEIGHT: u32 = 30;
const CHAR_WIDTH: u32 = 16;
const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW;
fn char_offset(c: char) -> u32 {
char_offset_impl(c)
}
}
pub type ProFont24Point<'a, C> = FontBuilder<'a, C, ProFont24PointConf>;