mirror of
https://github.com/espruino/Espruino.git
synced 2025-12-08 19:06:15 +00:00
703 lines
20 KiB
C
703 lines
20 KiB
C
/*
|
|
* This file is part of Espruino, a JavaScript interpreter for Microcontrollers
|
|
*
|
|
* Copyright (C) 2020 Gordon Williams <gw@pur3.co.uk>
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* ----------------------------------------------------------------------------
|
|
* Machine generated vector font header (by build_vector_font.sh)
|
|
* ----------------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifndef NO_VECTOR_FONT
|
|
#include "graphics.h"
|
|
|
|
const uint8_t vfFirstChar = 33;
|
|
const uint8_t vfLastChar = 231;
|
|
#define VF_END_OF_POLY 0xFE
|
|
#define VF_END_OF_CHAR 0xFF
|
|
#define VF_SCALE 12
|
|
#define VF_OFFSET_Y (0)
|
|
static const uint8_t vfPolys[] IN_FLASH_MEMORY = {
|
|
// 33
|
|
161,163,195,193,VF_END_OF_POLY,
|
|
1,3,131,129,VF_END_OF_CHAR,
|
|
// 34
|
|
1,3,67,65,VF_END_OF_POLY,
|
|
4,6,70,68,VF_END_OF_CHAR,
|
|
// 35
|
|
4,6,196,194,VF_END_OF_POLY,
|
|
8,10,200,198,VF_END_OF_POLY,
|
|
112,123,155,144,VF_END_OF_POLY,
|
|
49,60,92,81,VF_END_OF_CHAR,
|
|
// 36
|
|
131,148,180,162,129,VF_END_OF_POLY,
|
|
70,53,21,39,72,VF_END_OF_POLY,
|
|
4,5,197,196,VF_END_OF_POLY,
|
|
20,34,65,98,116,84,67,52,VF_END_OF_POLY,
|
|
85,117,134,149,181,167,136,103,VF_END_OF_CHAR,
|
|
// 37
|
|
9,11,196,194,VF_END_OF_POLY,
|
|
48,17,3,35,50,67,99,81,VF_END_OF_POLY,
|
|
54,21,3,35,52,67,99,85,VF_END_OF_POLY,
|
|
151,120,106,138,153,170,202,184,VF_END_OF_POLY,
|
|
157,124,106,138,155,170,202,188,VF_END_OF_CHAR,
|
|
// 38
|
|
102,88,57,24,6,38,55,70,VF_END_OF_POLY,
|
|
166,164,147,131,116,102,70,84,98,129,145,178,196,198,VF_END_OF_POLY,
|
|
198,184,169,107,105,136,151,166,VF_END_OF_POLY,
|
|
6,20,51,84,201,203,86,53,38,VF_END_OF_CHAR,
|
|
// 39
|
|
1,3,67,65,VF_END_OF_CHAR,
|
|
// 40
|
|
38,68,99,147,180,214,246,228,194,145,97,50,20,6,VF_END_OF_CHAR,
|
|
// 41
|
|
33,67,100,148,179,209,241,227,197,150,102,53,19,1,VF_END_OF_CHAR,
|
|
// 42
|
|
132,134,6,4,VF_END_OF_POLY,
|
|
120,89,18,49,VF_END_OF_POLY,
|
|
114,81,24,57,VF_END_OF_CHAR,
|
|
// 43
|
|
81,89,121,113,VF_END_OF_POLY,
|
|
38,166,164,36,VF_END_OF_CHAR,
|
|
// 44
|
|
225,227,196,164,162,194,VF_END_OF_CHAR,
|
|
// 45
|
|
81,86,118,113,VF_END_OF_CHAR,
|
|
// 46
|
|
161,163,195,193,VF_END_OF_CHAR,
|
|
// 47
|
|
8,10,227,225,VF_END_OF_CHAR,
|
|
// 48
|
|
196,198,184,153,57,24,6,4,36,38,55,151,166,164,VF_END_OF_POLY,
|
|
196,178,145,49,18,4,36,51,147,164,VF_END_OF_CHAR,
|
|
// 49
|
|
4,164,161,193,201,169,166,6,VF_END_OF_POLY,
|
|
33,4,36,65,VF_END_OF_CHAR,
|
|
// 50
|
|
4,36,38,55,71,86,130,161,193,201,169,163,179,148,104,73,57,24,6,VF_END_OF_POLY,
|
|
18,49,51,36,4,VF_END_OF_CHAR,
|
|
// 51
|
|
36,38,55,71,86,84,116,118,135,151,166,164,196,198,184,153,137,104,73,57,24,6,4,VF_END_OF_POLY,
|
|
18,49,51,36,4,VF_END_OF_POLY,
|
|
178,145,147,164,196,VF_END_OF_CHAR,
|
|
// 52
|
|
6,198,200,8,VF_END_OF_POLY,
|
|
113,115,8,6,VF_END_OF_POLY,
|
|
113,121,153,145,VF_END_OF_CHAR,
|
|
// 53
|
|
115,113,1,9,41,35,83,100,VF_END_OF_POLY,
|
|
82,68,70,88,121,153,184,198,196,164,166,151,119,102,100,VF_END_OF_POLY,
|
|
178,145,147,164,196,VF_END_OF_CHAR,
|
|
// 54
|
|
68,82,100,102,119,151,166,164,196,198,184,153,121,88,70,VF_END_OF_POLY,
|
|
4,18,49,145,178,196,164,147,115,100,83,51,36,38,6,VF_END_OF_POLY,
|
|
24,57,55,38,6,VF_END_OF_CHAR,
|
|
// 55
|
|
1,33,39,195,197,41,9,VF_END_OF_CHAR,
|
|
// 56
|
|
4,18,49,65,98,129,145,178,196,198,166,164,147,131,116,118,86,84,67,51,36,38,6,VF_END_OF_POLY,
|
|
6,38,55,71,86,118,135,151,166,198,184,153,137,104,73,57,24,VF_END_OF_CHAR,
|
|
// 57
|
|
134,120,102,100,83,51,36,38,6,4,18,49,81,114,132,VF_END_OF_POLY,
|
|
198,184,153,57,24,6,38,55,87,102,119,151,166,164,196,VF_END_OF_POLY,
|
|
178,145,147,164,196,VF_END_OF_CHAR,
|
|
// 58
|
|
65,67,99,97,VF_END_OF_POLY,
|
|
161,163,195,193,VF_END_OF_CHAR,
|
|
// 59
|
|
225,227,196,164,162,194,VF_END_OF_POLY,
|
|
66,68,100,98,VF_END_OF_CHAR,
|
|
// 60
|
|
41,97,169,137,101,73,VF_END_OF_CHAR,
|
|
// 61
|
|
49,57,89,81,VF_END_OF_POLY,
|
|
113,121,153,145,VF_END_OF_CHAR,
|
|
// 62
|
|
33,105,161,129,101,65,VF_END_OF_CHAR,
|
|
// 63
|
|
18,49,51,36,4,VF_END_OF_POLY,
|
|
4,36,38,55,71,86,85,100,132,134,118,104,73,57,24,6,VF_END_OF_POLY,
|
|
164,166,198,196,VF_END_OF_CHAR,
|
|
// 64
|
|
104,103,118,134,151,152,170,184,183,165,132,116,85,71,72,90,VF_END_OF_POLY,
|
|
75,139,156,187,152,137,121,104,89,73,VF_END_OF_POLY,
|
|
250,246,228,194,145,97,50,20,6,10,41,39,53,68,99,147,180,197,215,217,VF_END_OF_POLY,
|
|
217,203,221,236,250,VF_END_OF_POLY,
|
|
10,28,62,95,143,174,188,187,156,141,109,76,59,41,VF_END_OF_CHAR,
|
|
// 65
|
|
195,193,5,7,VF_END_OF_POLY,
|
|
7,54,201,203,VF_END_OF_POLY,
|
|
116,147,153,120,VF_END_OF_CHAR,
|
|
// 66
|
|
1,193,195,3,VF_END_OF_POLY,
|
|
35,38,55,71,86,83,115,119,136,152,167,163,195,199,185,154,138,105,88,104,73,57,24,6,3,VF_END_OF_CHAR,
|
|
// 67
|
|
39,38,52,83,115,148,166,167,200,197,179,162,129,65,34,19,5,8,VF_END_OF_POLY,
|
|
167,200,186,171,153,VF_END_OF_POLY,
|
|
39,8,26,43,57,VF_END_OF_CHAR,
|
|
// 68
|
|
35,37,55,88,120,151,165,163,195,198,184,169,138,74,41,24,6,3,VF_END_OF_POLY,
|
|
3,1,193,195,VF_END_OF_CHAR,
|
|
// 69
|
|
201,169,163,115,119,87,83,35,41,9,1,193,VF_END_OF_CHAR,
|
|
// 70
|
|
1,193,195,115,119,87,83,35,41,9,VF_END_OF_CHAR,
|
|
// 71
|
|
39,38,52,83,115,148,166,167,200,197,179,162,129,65,34,19,5,8,VF_END_OF_POLY,
|
|
39,57,43,26,8,VF_END_OF_POLY,
|
|
167,153,137,135,103,107,171,186,200,VF_END_OF_CHAR,
|
|
// 72
|
|
1,193,195,115,120,88,83,3,VF_END_OF_POLY,
|
|
8,10,202,200,VF_END_OF_CHAR,
|
|
// 73
|
|
1,33,34,162,161,193,197,165,164,36,37,5,VF_END_OF_CHAR,
|
|
// 74
|
|
199,196,178,145,131,164,147,165,166,VF_END_OF_POLY,
|
|
10,154,185,199,166,152,167,136,8,VF_END_OF_CHAR,
|
|
// 75
|
|
1,193,195,131,101,99,3,VF_END_OF_POLY,
|
|
8,99,200,202,101,10,VF_END_OF_CHAR,
|
|
// 76
|
|
1,193,201,169,163,3,VF_END_OF_CHAR,
|
|
// 77
|
|
1,3,195,193,VF_END_OF_POLY,
|
|
12,10,202,204,VF_END_OF_POLY,
|
|
166,167,135,3,67,VF_END_OF_POLY,
|
|
167,134,10,74,VF_END_OF_CHAR,
|
|
// 78
|
|
1,3,195,193,VF_END_OF_POLY,
|
|
200,136,3,67,VF_END_OF_POLY,
|
|
10,8,200,202,VF_END_OF_CHAR,
|
|
// 79
|
|
39,38,52,83,115,148,166,167,200,197,179,162,129,65,34,19,5,8,VF_END_OF_POLY,
|
|
39,57,90,122,153,167,200,186,171,140,76,43,26,8,VF_END_OF_CHAR,
|
|
// 80
|
|
1,193,195,3,VF_END_OF_POLY,
|
|
35,38,55,87,102,99,131,134,120,89,57,24,6,3,VF_END_OF_CHAR,
|
|
// 81
|
|
8,39,57,90,122,153,167,200,234,220,186,171,140,76,43,26,VF_END_OF_POLY,
|
|
39,38,52,83,115,148,166,167,200,197,179,162,129,65,34,19,5,8,VF_END_OF_CHAR,
|
|
// 82
|
|
1,193,195,3,VF_END_OF_POLY,
|
|
35,38,55,87,102,99,131,134,117,200,202,119,135,120,89,57,24,6,3,VF_END_OF_CHAR,
|
|
// 83
|
|
4,18,49,65,98,116,118,135,151,166,164,196,198,184,153,137,104,86,84,67,51,36,38,6,VF_END_OF_POLY,
|
|
147,164,196,178,145,VF_END_OF_POLY,
|
|
55,38,6,24,57,VF_END_OF_CHAR,
|
|
// 84
|
|
1,33,37,197,199,39,43,11,VF_END_OF_CHAR,
|
|
// 85
|
|
8,136,167,152,166,199,185,154,10,VF_END_OF_POLY,
|
|
199,196,178,145,1,3,131,164,147,165,166,VF_END_OF_CHAR,
|
|
// 86
|
|
197,199,3,1,VF_END_OF_POLY,
|
|
199,197,9,11,VF_END_OF_CHAR,
|
|
// 87
|
|
196,198,3,1,VF_END_OF_POLY,
|
|
204,139,13,15,VF_END_OF_POLY,
|
|
202,204,9,72,VF_END_OF_POLY,
|
|
198,133,7,9,VF_END_OF_CHAR,
|
|
// 88
|
|
1,201,203,3,VF_END_OF_POLY,
|
|
11,195,193,9,VF_END_OF_CHAR,
|
|
// 89
|
|
11,119,199,197,117,9,VF_END_OF_POLY,
|
|
1,117,119,3,VF_END_OF_CHAR,
|
|
// 90
|
|
1,9,41,163,169,201,193,161,39,33,VF_END_OF_CHAR,
|
|
// 91
|
|
1,241,246,214,211,35,38,6,VF_END_OF_CHAR,
|
|
// 92
|
|
3,1,232,234,VF_END_OF_CHAR,
|
|
// 93
|
|
6,246,241,209,212,36,33,1,VF_END_OF_CHAR,
|
|
// 94
|
|
5,97,99,53,VF_END_OF_POLY,
|
|
5,105,103,53,VF_END_OF_CHAR,
|
|
// 95
|
|
209,217,249,241,VF_END_OF_CHAR,
|
|
// 96
|
|
1,3,70,68,VF_END_OF_CHAR,
|
|
// 97
|
|
101,100,115,147,164,165,183,197,196,178,145,113,82,68,69,87,VF_END_OF_POLY,
|
|
86,70,72,200,198,182,165,150,118,101,VF_END_OF_CHAR,
|
|
// 98
|
|
100,101,118,150,165,164,178,196,197,183,152,120,87,69,68,82,VF_END_OF_POLY,
|
|
83,3,1,193,195,179,164,147,115,100,VF_END_OF_CHAR,
|
|
// 99
|
|
69,87,120,118,101,VF_END_OF_POLY,
|
|
197,196,178,145,113,82,68,69,101,100,115,147,164,165,VF_END_OF_POLY,
|
|
165,150,152,183,197,VF_END_OF_CHAR,
|
|
// 100
|
|
101,100,115,147,164,165,183,197,196,178,145,113,82,68,69,87,VF_END_OF_POLY,
|
|
86,6,8,200,198,182,165,150,118,101,VF_END_OF_CHAR,
|
|
// 101
|
|
68,69,87,120,152,147,115,118,101,100,VF_END_OF_POLY,
|
|
100,115,147,164,166,183,197,196,178,145,113,82,68,VF_END_OF_CHAR,
|
|
// 102
|
|
194,98,97,65,66,50,19,5,6,38,37,52,68,70,102,100,196,VF_END_OF_CHAR,
|
|
// 103
|
|
213,212,194,209,226,244,245,231,200,72,70,86,101,118,150,165,182,198,VF_END_OF_POLY,
|
|
101,100,115,147,164,165,183,197,196,178,145,113,82,68,69,87,VF_END_OF_CHAR,
|
|
// 104
|
|
100,101,118,198,200,120,87,69,68,82,VF_END_OF_POLY,
|
|
83,3,1,193,195,115,100,VF_END_OF_CHAR,
|
|
// 105
|
|
65,67,195,193,VF_END_OF_POLY,
|
|
1,3,35,33,VF_END_OF_CHAR,
|
|
// 106
|
|
69,197,228,242,241,209,210,195,67,VF_END_OF_POLY,
|
|
3,5,37,35,VF_END_OF_CHAR,
|
|
// 107
|
|
1,193,195,163,133,131,3,VF_END_OF_POLY,
|
|
70,131,198,200,133,72,VF_END_OF_CHAR,
|
|
// 108
|
|
1,3,195,193,VF_END_OF_CHAR,
|
|
// 109
|
|
100,101,118,198,200,120,105,69,68,82,VF_END_OF_POLY,
|
|
83,67,65,193,195,115,100,VF_END_OF_POLY,
|
|
105,106,123,203,205,125,92,74,73,87,VF_END_OF_CHAR,
|
|
// 110
|
|
100,101,118,198,200,120,87,69,68,82,VF_END_OF_POLY,
|
|
83,67,65,193,195,115,100,VF_END_OF_CHAR,
|
|
// 111
|
|
101,100,115,147,164,165,197,196,178,145,113,82,68,69,VF_END_OF_POLY,
|
|
101,118,150,165,197,183,152,120,87,69,VF_END_OF_CHAR,
|
|
// 112
|
|
164,165,150,118,101,100,82,68,69,87,120,152,183,197,196,178,VF_END_OF_POLY,
|
|
179,243,241,65,67,83,100,115,147,164,VF_END_OF_CHAR,
|
|
// 113
|
|
165,164,147,115,100,101,87,69,68,82,113,145,178,196,197,183,VF_END_OF_POLY,
|
|
182,246,248,72,70,86,101,118,150,165,VF_END_OF_CHAR,
|
|
// 114
|
|
100,101,118,104,87,69,68,82,VF_END_OF_POLY,
|
|
83,67,65,193,195,115,100,VF_END_OF_CHAR,
|
|
// 115
|
|
197,183,152,135,117,116,99,115,100,101,119,104,87,69,68,82,113,130,148,149,166,150,165,164,146,161,178,196,VF_END_OF_CHAR,
|
|
// 116
|
|
2,66,65,97,98,146,179,197,198,166,165,148,100,102,70,68,4,VF_END_OF_CHAR,
|
|
// 117
|
|
165,164,147,67,65,145,178,196,197,183,VF_END_OF_POLY,
|
|
182,198,200,72,70,150,165,VF_END_OF_CHAR,
|
|
// 118
|
|
196,198,67,65,VF_END_OF_POLY,
|
|
198,196,71,73,VF_END_OF_CHAR,
|
|
// 119
|
|
196,198,67,65,VF_END_OF_POLY,
|
|
198,196,70,72,VF_END_OF_POLY,
|
|
200,202,72,70,VF_END_OF_POLY,
|
|
202,200,75,77,VF_END_OF_CHAR,
|
|
// 120
|
|
65,67,201,199,VF_END_OF_POLY,
|
|
73,71,193,195,VF_END_OF_CHAR,
|
|
// 121
|
|
74,198,229,243,242,210,211,196,72,VF_END_OF_POLY,
|
|
65,197,166,67,VF_END_OF_CHAR,
|
|
// 122
|
|
65,72,104,164,168,200,193,161,101,97,VF_END_OF_CHAR,
|
|
// 123
|
|
6,20,51,83,114,99,113,129,147,130,163,195,228,246,247,215,214,197,165,132,115,131,116,85,53,38,39,7,VF_END_OF_CHAR,
|
|
// 124
|
|
1,3,243,241,VF_END_OF_CHAR,
|
|
// 125
|
|
2,20,53,85,118,101,119,135,149,134,165,197,228,242,241,209,210,195,163,132,117,133,116,83,51,34,33,1,VF_END_OF_CHAR,
|
|
// 126
|
|
52,66,97,113,115,99,84,VF_END_OF_POLY,
|
|
52,84,101,134,152,120,103,70,VF_END_OF_POLY,
|
|
89,105,120,152,138,107,91,VF_END_OF_CHAR,
|
|
// 127
|
|
VF_END_OF_CHAR,
|
|
// 128
|
|
6,20,35,66,82,81,97,98,114,113,129,130,163,180,198,201,168,167,149,132,137,121,116,100,105,89,84,53,39,40,9,VF_END_OF_POLY,
|
|
168,201,187,154,VF_END_OF_POLY,
|
|
40,9,27,58,VF_END_OF_CHAR,
|
|
// 129
|
|
VF_END_OF_CHAR,
|
|
// 130
|
|
VF_END_OF_CHAR,
|
|
// 131
|
|
VF_END_OF_CHAR,
|
|
// 132
|
|
VF_END_OF_CHAR,
|
|
// 133
|
|
VF_END_OF_CHAR,
|
|
// 134
|
|
VF_END_OF_CHAR,
|
|
// 135
|
|
VF_END_OF_CHAR,
|
|
// 136
|
|
VF_END_OF_CHAR,
|
|
// 137
|
|
VF_END_OF_CHAR,
|
|
// 138
|
|
VF_END_OF_CHAR,
|
|
// 139
|
|
VF_END_OF_CHAR,
|
|
// 140
|
|
VF_END_OF_CHAR,
|
|
// 141
|
|
VF_END_OF_CHAR,
|
|
// 142
|
|
VF_END_OF_CHAR,
|
|
// 143
|
|
VF_END_OF_CHAR,
|
|
// 144
|
|
VF_END_OF_CHAR,
|
|
// 145
|
|
VF_END_OF_CHAR,
|
|
// 146
|
|
VF_END_OF_CHAR,
|
|
// 147
|
|
VF_END_OF_CHAR,
|
|
// 148
|
|
VF_END_OF_CHAR,
|
|
// 149
|
|
VF_END_OF_CHAR,
|
|
// 150
|
|
VF_END_OF_CHAR,
|
|
// 151
|
|
VF_END_OF_CHAR,
|
|
// 152
|
|
VF_END_OF_CHAR,
|
|
// 153
|
|
VF_END_OF_CHAR,
|
|
// 154
|
|
VF_END_OF_CHAR,
|
|
// 155
|
|
VF_END_OF_CHAR,
|
|
// 156
|
|
VF_END_OF_CHAR,
|
|
// 157
|
|
VF_END_OF_CHAR,
|
|
// 158
|
|
VF_END_OF_CHAR,
|
|
// 159
|
|
VF_END_OF_CHAR,
|
|
// 160
|
|
VF_END_OF_CHAR,
|
|
// 161
|
|
65,67,35,33,VF_END_OF_POLY,
|
|
225,227,99,97,VF_END_OF_CHAR,
|
|
// 162
|
|
53,71,104,102,85,VF_END_OF_POLY,
|
|
180,162,129,97,66,52,84,99,131,148,VF_END_OF_POLY,
|
|
149,134,136,167,181,VF_END_OF_POLY,
|
|
36,37,197,196,VF_END_OF_CHAR,
|
|
// 163
|
|
38,55,41,24,6,VF_END_OF_POLY,
|
|
130,50,19,5,6,38,37,52,132,163,169,201,193,161,VF_END_OF_POLY,
|
|
81,87,119,113,VF_END_OF_CHAR,
|
|
// 164
|
|
97,66,49,34,51,37,70,68,83,115,132,134,165,147,162,145,130,VF_END_OF_POLY,
|
|
105,72,57,40,55,37,70,87,119,134,165,151,168,153,136,VF_END_OF_CHAR,
|
|
// 165
|
|
11,119,199,197,117,9,VF_END_OF_POLY,
|
|
1,117,119,3,VF_END_OF_POLY,
|
|
98,106,122,114,VF_END_OF_POLY,
|
|
130,138,154,146,VF_END_OF_CHAR,
|
|
// 166
|
|
145,147,243,241,VF_END_OF_POLY,
|
|
1,3,99,97,VF_END_OF_CHAR,
|
|
// 167
|
|
VF_END_OF_CHAR,
|
|
// 168
|
|
33,1,3,35,VF_END_OF_POLY,
|
|
37,5,7,39,VF_END_OF_CHAR,
|
|
// 169
|
|
25,21,35,66,130,163,181,185,201,197,179,162,129,65,34,19,5,9,VF_END_OF_POLY,
|
|
25,43,76,140,171,185,201,187,172,141,77,44,27,9,VF_END_OF_POLY,
|
|
168,166,148,115,83,52,38,40,72,70,85,117,134,136,VF_END_OF_POLY,
|
|
40,58,91,89,72,VF_END_OF_POLY,
|
|
136,121,123,154,168,VF_END_OF_CHAR,
|
|
// 170
|
|
VF_END_OF_CHAR,
|
|
// 171
|
|
68,113,164,149,115,85,VF_END_OF_POLY,
|
|
71,116,167,152,118,88,VF_END_OF_CHAR,
|
|
// 172
|
|
81,113,119,167,169,89,VF_END_OF_CHAR,
|
|
// 173
|
|
VF_END_OF_CHAR,
|
|
// 174
|
|
25,21,35,66,130,163,181,185,201,197,179,162,129,65,34,19,5,9,VF_END_OF_POLY,
|
|
25,43,76,140,171,185,201,187,172,141,77,44,27,9,VF_END_OF_POLY,
|
|
36,164,166,38,VF_END_OF_POLY,
|
|
70,72,104,102,134,136,119,168,170,121,106,74,40,38,VF_END_OF_CHAR,
|
|
// 175
|
|
1,9,41,33,VF_END_OF_CHAR,
|
|
// 176
|
|
2,4,21,53,68,66,50,52,20,18,VF_END_OF_POLY,
|
|
66,49,17,2,VF_END_OF_CHAR,
|
|
// 177
|
|
20,68,65,97,100,148,150,102,105,73,70,22,VF_END_OF_POLY,
|
|
161,169,201,193,VF_END_OF_CHAR,
|
|
// 178
|
|
VF_END_OF_CHAR,
|
|
// 179
|
|
VF_END_OF_CHAR,
|
|
// 180
|
|
5,3,49,51,VF_END_OF_CHAR,
|
|
// 181
|
|
165,164,178,196,197,183,VF_END_OF_POLY,
|
|
182,198,200,72,70,150,165,VF_END_OF_POLY,
|
|
179,243,241,65,67,147,164,VF_END_OF_CHAR,
|
|
// 182
|
|
VF_END_OF_CHAR,
|
|
// 183
|
|
113,115,147,145,VF_END_OF_CHAR,
|
|
// 184
|
|
194,195,212,228,243,241,225,226,211,227,210,VF_END_OF_CHAR,
|
|
// 185
|
|
VF_END_OF_CHAR,
|
|
// 186
|
|
VF_END_OF_CHAR,
|
|
// 187
|
|
69,120,165,148,118,84,VF_END_OF_POLY,
|
|
66,117,162,145,115,81,VF_END_OF_CHAR,
|
|
// 188
|
|
9,11,196,194,VF_END_OF_POLY,
|
|
67,66,82,85,69,68,4,3,VF_END_OF_POLY,
|
|
18,3,19,34,VF_END_OF_POLY,
|
|
167,183,187,171,168,122,121,VF_END_OF_POLY,
|
|
121,201,202,122,VF_END_OF_CHAR,
|
|
// 189
|
|
9,11,196,194,VF_END_OF_POLY,
|
|
203,187,185,155,139,122,120,136,138,154,184,200,VF_END_OF_POLY,
|
|
67,66,82,85,69,68,4,3,VF_END_OF_POLY,
|
|
18,3,19,34,VF_END_OF_CHAR,
|
|
// 190
|
|
9,11,196,194,VF_END_OF_POLY,
|
|
167,183,187,171,168,122,121,VF_END_OF_POLY,
|
|
121,201,202,122,VF_END_OF_POLY,
|
|
2,18,20,36,35,51,52,68,66,82,84,69,53,36,52,37,21,4,VF_END_OF_CHAR,
|
|
// 191
|
|
216,185,183,198,230,VF_END_OF_POLY,
|
|
230,198,196,179,163,148,149,134,102,100,116,130,161,177,210,228,VF_END_OF_POLY,
|
|
70,68,36,38,VF_END_OF_CHAR,
|
|
// 192
|
|
VF_END_OF_CHAR,
|
|
// 193
|
|
VF_END_OF_CHAR,
|
|
// 194
|
|
VF_END_OF_CHAR,
|
|
// 195
|
|
VF_END_OF_CHAR,
|
|
// 196
|
|
VF_END_OF_CHAR,
|
|
// 197
|
|
VF_END_OF_CHAR,
|
|
// 198
|
|
195,193,6,8,VF_END_OF_POLY,
|
|
7,119,116,147,151,199,205,173,169,121,124,92,89,41,45,13,VF_END_OF_CHAR,
|
|
// 199
|
|
4,18,33,64,128,161,178,196,197,213,230,214,229,228,244,246,231,215,198,199,166,165,147,114,82,51,37,38,7,VF_END_OF_POLY,
|
|
166,199,185,170,152,VF_END_OF_POLY,
|
|
38,7,25,42,56,VF_END_OF_CHAR,
|
|
// 200
|
|
VF_END_OF_CHAR,
|
|
// 201
|
|
VF_END_OF_CHAR,
|
|
// 202
|
|
VF_END_OF_CHAR,
|
|
// 203
|
|
VF_END_OF_CHAR,
|
|
// 204
|
|
VF_END_OF_CHAR,
|
|
// 205
|
|
VF_END_OF_CHAR,
|
|
// 206
|
|
VF_END_OF_CHAR,
|
|
// 207
|
|
VF_END_OF_CHAR,
|
|
// 208
|
|
36,38,56,89,121,152,166,164,196,199,185,170,139,75,42,25,7,4,VF_END_OF_POLY,
|
|
4,2,194,196,VF_END_OF_POLY,
|
|
81,86,118,113,VF_END_OF_CHAR,
|
|
// 209
|
|
VF_END_OF_CHAR,
|
|
// 210
|
|
VF_END_OF_CHAR,
|
|
// 211
|
|
VF_END_OF_CHAR,
|
|
// 212
|
|
VF_END_OF_CHAR,
|
|
// 213
|
|
VF_END_OF_CHAR,
|
|
// 214
|
|
VF_END_OF_CHAR,
|
|
// 215
|
|
49,34,153,168,VF_END_OF_POLY,
|
|
40,57,162,145,VF_END_OF_CHAR,
|
|
// 216
|
|
39,38,52,83,115,148,166,167,200,197,179,162,129,65,34,19,5,8,VF_END_OF_POLY,
|
|
39,57,90,122,153,167,200,186,171,140,76,43,26,8,VF_END_OF_POLY,
|
|
193,10,12,195,VF_END_OF_CHAR,
|
|
// 217
|
|
VF_END_OF_CHAR,
|
|
// 218
|
|
VF_END_OF_CHAR,
|
|
// 219
|
|
VF_END_OF_CHAR,
|
|
// 220
|
|
VF_END_OF_CHAR,
|
|
// 221
|
|
VF_END_OF_CHAR,
|
|
// 222
|
|
1,3,195,193,VF_END_OF_POLY,
|
|
163,166,152,121,89,56,38,35,67,70,87,119,134,131,VF_END_OF_CHAR,
|
|
// 223
|
|
36,37,54,70,85,101,118,135,151,166,164,196,198,184,169,137,120,103,87,72,56,23,5,4,VF_END_OF_POLY,
|
|
18,49,193,195,51,36,4,VF_END_OF_CHAR,
|
|
// 224
|
|
VF_END_OF_CHAR,
|
|
// 225
|
|
VF_END_OF_CHAR,
|
|
// 226
|
|
VF_END_OF_CHAR,
|
|
// 227
|
|
VF_END_OF_CHAR,
|
|
// 228
|
|
VF_END_OF_CHAR,
|
|
// 229
|
|
VF_END_OF_CHAR,
|
|
// 230
|
|
73,105,106,123,115,145,161,195,197,165,164,147,163,148,157,125,92,74,VF_END_OF_POLY,
|
|
68,82,99,101,118,150,165,197,183,201,202,188,171,169,152,120,105,73,87,69,VF_END_OF_CHAR,
|
|
// 231
|
|
69,87,120,118,101,VF_END_OF_POLY,
|
|
68,82,113,145,178,196,212,229,213,228,227,243,245,230,214,197,165,164,147,115,100,101,69,VF_END_OF_POLY,
|
|
165,150,152,183,197,VF_END_OF_CHAR,
|
|
};
|
|
|
|
static const uint8_t vfAccentPolys[] IN_FLASH_MEMORY = {
|
|
// 240
|
|
68,70,120,118,VF_END_OF_CHAR,
|
|
// 241
|
|
73,71,117,119,VF_END_OF_CHAR,
|
|
// 242
|
|
115,70,121,119,102,117,VF_END_OF_CHAR,
|
|
// 243
|
|
83,53,87,57,89,119,85,115,VF_END_OF_CHAR,
|
|
// 244
|
|
115,83,85,117,VF_END_OF_POLY,
|
|
119,87,89,121,VF_END_OF_CHAR,
|
|
// 245
|
|
69,71,88,120,135,133,117,119,87,85,VF_END_OF_POLY,
|
|
133,116,84,69,VF_END_OF_CHAR,
|
|
// 246
|
|
65,67,195,193,VF_END_OF_CHAR,
|
|
|
|
};
|
|
static const uint8_t vfAccentPolyIndices[] = {0,5,10,17,26,36,52};
|
|
|
|
static const uint8_t *vfGetCharPtr(char sch, const uint8_t **accentPtr, int *accentX, int *accentY) {
|
|
unsigned char ch = (unsigned char)sch;
|
|
if (ch>=192) {
|
|
// 012345 correspond to 0=grave,1=acute,2=circumflex,3=tilde,4=umlaut,5=ring,6=i without dot
|
|
char *chrMap = "AAAAAA EEEEIIII NOOOOO UUUUY aaaaaa eeeeiiiionooooo uuuuy y";
|
|
char *accMap = "012345 01240124 301234 01241 012345 01240124+301234 01241 4";
|
|
if (ch>=192) {
|
|
int i = ch-192;
|
|
unsigned char chReplacement = (unsigned char)chrMap[i];
|
|
if (chReplacement!=' ') {
|
|
ch = chReplacement;
|
|
if (accentPtr) {
|
|
char acc = accMap[i];
|
|
*accentX = 0;
|
|
*accentY = 0;
|
|
if (acc>='0' && acc<='5') {
|
|
*accentPtr = &vfAccentPolys[vfAccentPolyIndices[acc-'0']];
|
|
if (ch>='a' && ch<='z') { // lowercase
|
|
*accentX = -2;
|
|
*accentY = -4;
|
|
} else { // uppercase
|
|
*accentY = -8;
|
|
}
|
|
if (ch=='I') *accentX -= 3;
|
|
if (ch=='i') {
|
|
*accentX -= 2;
|
|
return &vfAccentPolys[vfAccentPolyIndices[6]]; // use i without .
|
|
}
|
|
} else if (acc!=' ') {
|
|
*accentPtr = vfGetCharPtr(acc, NULL,NULL,NULL);
|
|
if (acc=='+') *accentY = -4;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (ch<vfFirstChar || ch>vfLastChar) return NULL;
|
|
if (ch==vfFirstChar) return vfPolys;
|
|
int charCounter = ((uint8_t)ch) - vfFirstChar;
|
|
for (unsigned int p=0;p < sizeof(vfPolys);p++) {
|
|
if (vfPolys[p] == VF_END_OF_CHAR) {
|
|
charCounter--;
|
|
if (charCounter==0)
|
|
return &vfPolys[p+1];
|
|
}
|
|
}
|
|
return 0; // we went past the end
|
|
}
|
|
|
|
// prints character, returns width
|
|
unsigned int vfDrawCharPtr(JsGraphics *gfx, int x1, int y1, int size, const uint8_t *charPtr) {
|
|
x1 = x1<<4;
|
|
y1 = y1<<4;
|
|
short poly[62];
|
|
int polyLen = 0;
|
|
int w = 0;
|
|
while (*charPtr!=VF_END_OF_CHAR) {
|
|
if (*charPtr==VF_END_OF_POLY) {
|
|
graphicsFillPoly(gfx, polyLen, poly);
|
|
polyLen = 0;
|
|
} else {
|
|
uint8_t vertex = *charPtr;
|
|
int vx = vertex&15;
|
|
int vy = vertex>>4;
|
|
if (vx>w) w=vx;
|
|
poly[polyLen*2 ] = (short)(x1 + vx*size*16/VF_SCALE);
|
|
poly[polyLen*2+1] = (short)(y1 + (vy+VF_OFFSET_Y)*size*16/VF_SCALE);
|
|
polyLen++;
|
|
}
|
|
charPtr++;
|
|
}
|
|
graphicsFillPoly(gfx, polyLen, poly);
|
|
return (unsigned int)(((w+1)*size*16/VF_SCALE+7)>>4);
|
|
}
|
|
|
|
// returns the width of a character
|
|
unsigned int graphicsVectorCharWidth(JsGraphics *gfx, unsigned int size, char ch) {
|
|
NOT_USED(gfx);
|
|
const uint8_t *p = vfGetCharPtr(ch, NULL,NULL,NULL);
|
|
if (!p) return (unsigned int)(size/2);
|
|
int w = 0;
|
|
while (*p!=VF_END_OF_CHAR) {
|
|
if (*p!=VF_END_OF_POLY) {
|
|
uint8_t vertex = *p;
|
|
int vx = vertex&15;
|
|
if (vx>w) w=vx;
|
|
}
|
|
p++;
|
|
}
|
|
return (unsigned int)(((w+1)*size*16/VF_SCALE+7)>>4);
|
|
}
|
|
|
|
// prints character, returns width
|
|
unsigned int graphicsFillVectorChar(JsGraphics *gfx, int x1, int y1, int size, char ch) {
|
|
const uint8_t *accentPtr = 0;
|
|
int accentX, accentY;
|
|
const uint8_t *charPtr = vfGetCharPtr(ch, &accentPtr, &accentX, &accentY);
|
|
if (!charPtr) return (unsigned int)(size/2);
|
|
unsigned int w = vfDrawCharPtr(gfx, x1, y1, size, charPtr);
|
|
unsigned int w2 = 0;
|
|
if (accentPtr)
|
|
w2 = vfDrawCharPtr(gfx, x1 + ((accentX*size*16/VF_SCALE)>>4), y1 + ((accentY*size*16/VF_SCALE)>>4), size, accentPtr);
|
|
return (w2>w)?w2:w;
|
|
}
|
|
|
|
#endif
|