blob: 741d4bc22276aa58dcaf7089173e38d02300c251 [file] [log] [blame]
// Copyright 2024 The Pigweed Authors
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
#include "pw_draw/font_set.h"
namespace {
static const uint8_t font6x8_data[] = {
// 32 Space
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
// 33 !
0b001000,
0b001000,
0b001000,
0b001000,
0b001000,
0b000000,
0b001000,
0b000000,
// 34 "
0b010100,
0b010100,
0b010100,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
// 35 #
0b010100,
0b010100,
0b111110,
0b010100,
0b111110,
0b010100,
0b010100,
0b000000,
// 36 $
0b001000,
0b011110,
0b101000,
0b011100,
0b001010,
0b111100,
0b001000,
0b000000,
// 37 %
0b110000,
0b110010,
0b000100,
0b001000,
0b010000,
0b100110,
0b000110,
0b000000,
// 38 &
0b010000,
0b101000,
0b101000,
0b010000,
0b101010,
0b100100,
0b011010,
0b000000,
// 39 '
0b001000,
0b001000,
0b001000,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
// 40 (
0b000100,
0b001000,
0b010000,
0b010000,
0b010000,
0b001000,
0b000100,
0b000000,
// 41 )
0b010000,
0b001000,
0b000100,
0b000100,
0b000100,
0b001000,
0b010000,
0b000000,
// 42 *
0b000000,
0b010100,
0b001000,
0b111110,
0b001000,
0b010100,
0b000000,
0b000000,
// 43 +
0b000000,
0b001000,
0b001000,
0b111110,
0b001000,
0b001000,
0b000000,
0b000000,
// 44 ,
0b000000,
0b000000,
0b000000,
0b000000,
0b011000,
0b011000,
0b001000,
0b010000,
// 45 -
0b000000,
0b000000,
0b000000,
0b111110,
0b000000,
0b000000,
0b000000,
0b000000,
// 46 .
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b011000,
0b011000,
0b000000,
// 47 /
0b000000,
0b000010,
0b000100,
0b001000,
0b010000,
0b100000,
0b000000,
0b000000,
// 48 0
0b011100,
0b100010,
0b100010,
0b101010,
0b100010,
0b100010,
0b011100,
0b000000,
// 49 1
0b001000,
0b011000,
0b001000,
0b001000,
0b001000,
0b001000,
0b011100,
0b000000,
// 50 2
0b011100,
0b100010,
0b000010,
0b000100,
0b001000,
0b010000,
0b111110,
0b000000,
// 51 3
0b011100,
0b100010,
0b000010,
0b001100,
0b000010,
0b100010,
0b011100,
0b000000,
// 52 4
0b000100,
0b001100,
0b010100,
0b100100,
0b111110,
0b000100,
0b000100,
0b000000,
// 53 5
0b111110,
0b100000,
0b111100,
0b000010,
0b000010,
0b100010,
0b011100,
0b000000,
// 54 6
0b001100,
0b010000,
0b100000,
0b111100,
0b100010,
0b100010,
0b011100,
0b000000,
// 55 7
0b111110,
0b000010,
0b000100,
0b001000,
0b010000,
0b010000,
0b010000,
0b000000,
// 56 8
0b011100,
0b100010,
0b100010,
0b011100,
0b100010,
0b100010,
0b011100,
0b000000,
// 57 9
0b011100,
0b100010,
0b100010,
0b011110,
0b000010,
0b000100,
0b011000,
0b000000,
// 58 :
0b000000,
0b011000,
0b011000,
0b000000,
0b011000,
0b011000,
0b000000,
0b000000,
// 59 ;
0b000000,
0b011000,
0b011000,
0b000000,
0b011000,
0b011000,
0b001000,
0b010000,
// 60 <
0b000100,
0b001000,
0b010000,
0b100000,
0b010000,
0b001000,
0b000100,
0b000000,
// 61 =
0b000000,
0b000000,
0b111110,
0b000000,
0b111110,
0b000000,
0b000000,
0b000000,
// 62 >
0b100000,
0b010000,
0b001000,
0b000100,
0b001000,
0b010000,
0b100000,
0b000000,
// 63 ?
0b011100,
0b100010,
0b000010,
0b000100,
0b001000,
0b000000,
0b001000,
0b000000,
// 64 @
0b011100,
0b100010,
0b101010,
0b101110,
0b101000,
0b100000,
0b011110,
0b000000,
// 65 A
0b011100,
0b100010,
0b100010,
0b111110,
0b100010,
0b100010,
0b100010,
0b000000,
// 66 B
0b111100,
0b100010,
0b100010,
0b111100,
0b100010,
0b100010,
0b111100,
0b000000,
// 67 C
0b011100,
0b100010,
0b100000,
0b100000,
0b100000,
0b100010,
0b011100,
0b000000,
// 68 D
0b111000,
0b100100,
0b100010,
0b100010,
0b100010,
0b100100,
0b111000,
0b000000,
// 69 E
0b111110,
0b100000,
0b100000,
0b111100,
0b100000,
0b100000,
0b111110,
0b000000,
// 70 F
0b111110,
0b100000,
0b100000,
0b111000,
0b100000,
0b100000,
0b100000,
0b000000,
// 71 G
0b011100,
0b100010,
0b100000,
0b100110,
0b100010,
0b100010,
0b011110,
0b000000,
// 72 H
0b100010,
0b100010,
0b100010,
0b111110,
0b100010,
0b100010,
0b100010,
0b000000,
// 73 I
0b111110,
0b001000,
0b001000,
0b001000,
0b001000,
0b001000,
0b111110,
0b000000,
// 74 J
0b001110,
0b000010,
0b000010,
0b000010,
0b100010,
0b100010,
0b011100,
0b000000,
// 75 K
0b100010,
0b100100,
0b101000,
0b110000,
0b101000,
0b100100,
0b100010,
0b000000,
// 76 L
0b100000,
0b100000,
0b100000,
0b100000,
0b100000,
0b100000,
0b111110,
0b000000,
// 77 M
0b100010,
0b110110,
0b101010,
0b100010,
0b100010,
0b100010,
0b100010,
0b000000,
// 78 N
0b100010,
0b100010,
0b110010,
0b101010,
0b100110,
0b100010,
0b100010,
0b000000,
// 79 O
0b011100,
0b100010,
0b100010,
0b100010,
0b100010,
0b100010,
0b011100,
0b000000,
// 80 P
0b111100,
0b100010,
0b100010,
0b111100,
0b100000,
0b100000,
0b100000,
0b000000,
// 81 Q
0b011100,
0b100010,
0b100010,
0b100010,
0b100010,
0b100100,
0b011010,
0b000000,
// 82 R
0b111100,
0b100010,
0b100010,
0b111100,
0b100010,
0b100010,
0b100010,
0b000000,
// 83 S
0b011100,
0b100010,
0b100000,
0b011100,
0b000010,
0b100010,
0b011100,
0b000000,
// 84 T
0b111110,
0b001000,
0b001000,
0b001000,
0b001000,
0b001000,
0b001000,
0b000000,
// 85 U
0b100010,
0b100010,
0b100010,
0b100010,
0b100010,
0b100010,
0b011100,
0b000000,
// 86 V
0b100010,
0b100010,
0b100010,
0b010100,
0b010100,
0b001000,
0b001000,
0b000000,
// 87 W
0b100010,
0b100010,
0b100010,
0b100010,
0b101010,
0b110110,
0b100010,
0b000000,
// 88 X
0b100010,
0b100010,
0b010100,
0b001000,
0b010100,
0b100010,
0b100010,
0b000000,
// 89 Y
0b100010,
0b100010,
0b100010,
0b010100,
0b001000,
0b001000,
0b001000,
0b000000,
// 90 Z
0b111110,
0b000010,
0b000100,
0b001000,
0b010000,
0b100000,
0b111110,
0b000000,
// 91 [
0b001100,
0b001000,
0b001000,
0b001000,
0b001000,
0b001000,
0b001100,
0b000000,
// 92 Backslash
0b000000,
0b100000,
0b010000,
0b001000,
0b000100,
0b000010,
0b000000,
0b000000,
// 93 ]
0b011000,
0b001000,
0b001000,
0b001000,
0b001000,
0b001000,
0b011000,
0b000000,
// 94 ^
0b001000,
0b010100,
0b100010,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
// 95 _
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b111110,
0b000000,
// 96 `
0b010000,
0b010000,
0b001000,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
// 97 a
0b000000,
0b000000,
0b001100,
0b010010,
0b100010,
0b100110,
0b011010,
0b000000,
// 98 b
0b100000,
0b100000,
0b101100,
0b110010,
0b100010,
0b100010,
0b111100,
0b000000,
// 99 c
0b000000,
0b000000,
0b001100,
0b010010,
0b100000,
0b100010,
0b011100,
0b000000,
// 100 d
0b000010,
0b000010,
0b011010,
0b100110,
0b100010,
0b100010,
0b011110,
0b000000,
// 101 e
0b000000,
0b000000,
0b011100,
0b100010,
0b111110,
0b100000,
0b011100,
0b000000,
// 102 f
0b001100,
0b010010,
0b010000,
0b111000,
0b010000,
0b010000,
0b010000,
0b000000,
// 103 g
0b000000,
0b000000,
0b011100,
0b100010,
0b100010,
0b011110,
0b000010,
0b011100,
// 104 h
0b100000,
0b100000,
0b101100,
0b110010,
0b100010,
0b100010,
0b100010,
0b000000,
// 105 i
0b001000,
0b000000,
0b011000,
0b001000,
0b001000,
0b001000,
0b011100,
0b000000,
// 106 j
0b000100,
0b000000,
0b000100,
0b000100,
0b000100,
0b000100,
0b100100,
0b011000,
// 107 k
0b100000,
0b100000,
0b100010,
0b100100,
0b101000,
0b110100,
0b100010,
0b000000,
// 108 l
0b011000,
0b001000,
0b001000,
0b001000,
0b001000,
0b001000,
0b011100,
0b000000,
// 109 m
0b000000,
0b000000,
0b110100,
0b101010,
0b101010,
0b101010,
0b100010,
0b000000,
// 110 n
0b000000,
0b000000,
0b101100,
0b110010,
0b100010,
0b100010,
0b100010,
0b000000,
// 111 o
0b000000,
0b000000,
0b001100,
0b010010,
0b100010,
0b100010,
0b011100,
0b000000,
// 112 p
0b000000,
0b000000,
0b101100,
0b110010,
0b100010,
0b100010,
0b111100,
0b100000,
// 113 q
0b000000,
0b000000,
0b011010,
0b100110,
0b100010,
0b100010,
0b011110,
0b000010,
// 114 r
0b000000,
0b000000,
0b101100,
0b110010,
0b100000,
0b100000,
0b100000,
0b000000,
// 115 s
0b000000,
0b000000,
0b011110,
0b100000,
0b011100,
0b000010,
0b111100,
0b000000,
// 116 t
0b010000,
0b010000,
0b111100,
0b010000,
0b010000,
0b010010,
0b001100,
0b000000,
// 117 u
0b000000,
0b000000,
0b100010,
0b100010,
0b100010,
0b100110,
0b011010,
0b000000,
// 118 v
0b000000,
0b000000,
0b100010,
0b100010,
0b010100,
0b010100,
0b001000,
0b000000,
// 119 w
0b000000,
0b000000,
0b100010,
0b100010,
0b100010,
0b101010,
0b010100,
0b000000,
// 120 x
0b000000,
0b000000,
0b100010,
0b010100,
0b001000,
0b010100,
0b100010,
0b000000,
// 121 y
0b000000,
0b000000,
0b100010,
0b100010,
0b100010,
0b011110,
0b000010,
0b011100,
// 122 z
0b000000,
0b000000,
0b111110,
0b000100,
0b001000,
0b010000,
0b111110,
0b000000,
// 123 {
0b001000,
0b010000,
0b010000,
0b100000,
0b010000,
0b010000,
0b001000,
0b000000,
// 124 |
0b001000,
0b001000,
0b001000,
0b001000,
0b001000,
0b001000,
0b001000,
0b000000,
// 125 }
0b001000,
0b000100,
0b000100,
0b000010,
0b000100,
0b000100,
0b001000,
0b000000,
// 126 ~
0b000000,
0b000000,
0b010000,
0b101010,
0b000100,
0b000000,
0b000000,
0b000000,
// 127 non-printable
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
};
const uint8_t font6x8_box_chars_data[] = {
// Sprite
0b111111,
0b111111,
0b111111,
0b111111,
0b000000,
0b000000,
0b000000,
0b000000,
// Sprite
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b111111,
// Sprite
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b111111,
0b111111,
// Sprite
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b111111,
0b111111,
0b111111,
// Sprite
0b000000,
0b000000,
0b000000,
0b000000,
0b111111,
0b111111,
0b111111,
0b111111,
// Sprite
0b000000,
0b000000,
0b000000,
0b111111,
0b111111,
0b111111,
0b111111,
0b111111,
// Sprite
0b000000,
0b000000,
0b111111,
0b111111,
0b111111,
0b111111,
0b111111,
0b111111,
// Sprite
0b000000,
0b111111,
0b111111,
0b111111,
0b111111,
0b111111,
0b111111,
0b111111,
// Sprite
0b111111,
0b111111,
0b111111,
0b111111,
0b111111,
0b111111,
0b111111,
0b111111,
// Sprite
0b111110,
0b111111,
0b111110,
0b111111,
0b111110,
0b111111,
0b111110,
0b111111,
// Sprite
0b111110,
0b111100,
0b111110,
0b111100,
0b111110,
0b111100,
0b111110,
0b111100,
// Sprite
0b111100,
0b111100,
0b111100,
0b111100,
0b111100,
0b111100,
0b111100,
0b111100,
// Sprite
0b111000,
0b111000,
0b111000,
0b111000,
0b111000,
0b111000,
0b111000,
0b111000,
// Sprite
0b110000,
0b111000,
0b110000,
0b111000,
0b110000,
0b111000,
0b110000,
0b111000,
// Sprite
0b110000,
0b100000,
0b110000,
0b100000,
0b110000,
0b100000,
0b110000,
0b100000,
// Sprite
0b000000,
0b100000,
0b000000,
0b100000,
0b000000,
0b100000,
0b000000,
0b100000,
// Sprite
0b000111,
0b000111,
0b000111,
0b000111,
0b000111,
0b000111,
0b000111,
0b000111,
// Sprite
0b010010,
0b100100,
0b001001,
0b010010,
0b100100,
0b001001,
0b010010,
0b100100,
// Sprite
0b101010,
0b010101,
0b101010,
0b010101,
0b101010,
0b010101,
0b101010,
0b010101,
// Sprite
0b101101,
0b011011,
0b110110,
0b101101,
0b011011,
0b110110,
0b101101,
0b011011,
// Sprite
0b111111,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
0b000000,
// Sprite
0b000001,
0b000000,
0b000001,
0b000000,
0b000001,
0b000000,
0b000001,
0b000000,
// Sprite
0b000000,
0b000000,
0b000000,
0b000000,
0b111000,
0b111000,
0b111000,
0b111000,
// Sprite
0b000000,
0b000000,
0b000000,
0b000000,
0b000111,
0b000111,
0b000111,
0b000111,
// Sprite
0b111000,
0b111000,
0b111000,
0b111000,
0b000000,
0b000000,
0b000000,
0b000000,
// Sprite
0b111000,
0b111000,
0b111000,
0b111000,
0b111111,
0b111111,
0b111111,
0b111111,
// Sprite
0b111000,
0b111000,
0b111000,
0b111000,
0b000111,
0b000111,
0b000111,
0b000111,
// Sprite
0b111111,
0b111111,
0b111111,
0b111111,
0b111000,
0b111000,
0b111000,
0b111000,
// Sprite
0b111111,
0b111111,
0b111111,
0b111111,
0b000111,
0b000111,
0b000111,
0b000111,
// Sprite
0b000111,
0b000111,
0b000111,
0b000111,
0b000000,
0b000000,
0b000000,
0b000000,
// Sprite
0b000111,
0b000111,
0b000111,
0b000111,
0b111000,
0b111000,
0b111000,
0b111000,
// Sprite
0b000111,
0b000111,
0b000111,
0b000111,
0b111111,
0b111111,
0b111111,
0b111111,
};
const pw::draw::FontSet kFont6x8BaseSet(font6x8_data,
/*character_pixel_width=*/6,
/*character_pixel_height=*/8,
/*start_char=*/32,
/*end_char=*/127);
const pw::draw::FontSet kFont6x8BoxSet(font6x8_box_chars_data,
/*character_pixel_width=*/6,
/*character_pixel_height=*/8,
/*start_char=*/0x2580,
/*end_char=*/0x259A);
} // namespace
namespace pw::draw {
const FontSet& GetFont6x8() { return kFont6x8BaseSet; }
const FontSet& GetFont6x8BoxChars() { return kFont6x8BoxSet; }
} // namespace pw::draw