framework2
495 строк · 41.2 Кб
1
2#include "ofBitmapFont.h"
3#include "ofMesh.h"
4
5#ifdef TARGET_ANDROID
6#include "ofxAndroidUtils.h"
7#endif
8
9// ==============================================================
10// this license below is from freeGlut, (freeglut_font_data.c)
11
12/*
13* The legal status of this file is a bit vague. The font glyphs
14* themselves come from XFree86 v4.3.0 (as of this writing), and as
15* part of the X server may be subject to the XFree86 copyrights.
16* The original freeglut fonts were extracted by a utility written
17* by Pawel W. Olszta (see below) and the generated fonts contained
18* his copyright exclusively. Steve Baker asserts that Pawel
19* assigned intellectual property rights to Steve Baker. Steve
20* Baker also asserts that fonts cannot be copyrighted. He has
21* neither stripped the copyright from the freeglut fonts nor
22* formally retitled anything in his name. Since that time, the
23* OpenGLUT project has branched from freeglut, and has made
24* necessary modifications to Pawel's ``genfonts'' utility.
25* To that extent, OpenGLUT may have some title to this file.
26* What is fairly clear is that the font data is licensed under
27* the XFree86 license (which is variously termed ``XFree'' and
28* ``MIT'' by the freeglut project). It is believed that all
29* title holders wish this file to be as useful as possible, and
30* that either the ``XFree'' or ``MIT'' license works.
31*
32* Portions copyright (c) 2004, the OpenGLUT project contributors.
33* OpenGLUT branched from freeglut in February, 2004.
34*
35* Copyright (c) 1999-2000 by Pawel W. Olszta
36* Written by Pawel W. Olszta, <olszta@sourceforge.net>
37*
38* Permission is hereby granted, free of charge, to any person obtaining a
39* copy of this software and associated documentation files (the "Software"),
40* to deal in the Software without restriction, including without limitation
41* the rights to use, copy, modify, merge, publish, distribute, sublicense,
42* and/or sell copies of the Software, and to permit persons to whom the
43* Software is furnished to do so, subject to the following conditions:
44*
45* The above copyright notice and this permission notice shall be included
46* in all copies or substantial portions of the Sotware.
47*/
48// ==============================================================
49
50
51static const unsigned char bmpChar_8x13_000[] = { 8, 0, 0, 0,170, 0,130, 0,130, 0,130, 0,170, 0, 0};
52static const unsigned char bmpChar_8x13_001[] = { 8, 0, 0, 0, 0, 16, 56,124,254,124, 56, 16, 0, 0, 0};
53static const unsigned char bmpChar_8x13_002[] = { 8, 0,170, 85,170, 85,170, 85,170, 85,170, 85,170, 85,170};
54static const unsigned char bmpChar_8x13_003[] = { 8, 0, 0, 0, 4, 4, 4, 4,174,160,224,160,160, 0, 0};
55static const unsigned char bmpChar_8x13_004[] = { 8, 0, 0, 0, 8, 8, 12, 8,142,128,192,128,224, 0, 0};
56static const unsigned char bmpChar_8x13_005[] = { 8, 0, 0, 0, 10, 10, 12, 10,108,128,128,128, 96, 0, 0};
57static const unsigned char bmpChar_8x13_006[] = { 8, 0, 0, 0, 8, 8, 12, 8,238,128,128,128,128, 0, 0};
58static const unsigned char bmpChar_8x13_007[] = { 8, 0, 0, 0, 0, 0, 0, 0, 0, 24, 36, 36, 24, 0, 0};
59static const unsigned char bmpChar_8x13_008[] = { 8, 0, 0, 0, 0,124, 0, 16, 16,124, 16, 16, 0, 0, 0};
60static const unsigned char bmpChar_8x13_009[] = { 8, 0, 0, 0, 14, 8, 8, 8,168,160,160,160,192, 0, 0};
61static const unsigned char bmpChar_8x13_010[] = { 8, 0, 0, 0, 4, 4, 4, 4, 46, 80, 80,136,136, 0, 0};
62static const unsigned char bmpChar_8x13_011[] = { 8, 0, 0, 0, 0, 0, 0, 0,240, 16, 16, 16, 16, 16, 16};
63static const unsigned char bmpChar_8x13_012[] = { 8, 0, 16, 16, 16, 16, 16, 16,240, 0, 0, 0, 0, 0, 0};
64static const unsigned char bmpChar_8x13_013[] = { 8, 0, 16, 16, 16, 16, 16, 16, 31, 0, 0, 0, 0, 0, 0};
65static const unsigned char bmpChar_8x13_014[] = { 8, 0, 0, 0, 0, 0, 0, 0, 31, 16, 16, 16, 16, 16, 16};
66static const unsigned char bmpChar_8x13_015[] = { 8, 0, 16, 16, 16, 16, 16, 16,255, 16, 16, 16, 16, 16, 16};
67static const unsigned char bmpChar_8x13_016[] = { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255};
68static const unsigned char bmpChar_8x13_017[] = { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0};
69static const unsigned char bmpChar_8x13_018[] = { 8, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0};
70static const unsigned char bmpChar_8x13_019[] = { 8, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0};
71static const unsigned char bmpChar_8x13_020[] = { 8, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
72static const unsigned char bmpChar_8x13_021[] = { 8, 0, 16, 16, 16, 16, 16, 16, 31, 16, 16, 16, 16, 16, 16};
73static const unsigned char bmpChar_8x13_022[] = { 8, 0, 16, 16, 16, 16, 16, 16,240, 16, 16, 16, 16, 16, 16};
74static const unsigned char bmpChar_8x13_023[] = { 8, 0, 0, 0, 0, 0, 0, 0,255, 16, 16, 16, 16, 16, 16};
75static const unsigned char bmpChar_8x13_024[] = { 8, 0, 16, 16, 16, 16, 16, 16,255, 0, 0, 0, 0, 0, 0};
76static const unsigned char bmpChar_8x13_025[] = { 8, 0, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16};
77static const unsigned char bmpChar_8x13_026[] = { 8, 0, 0, 0,254, 0, 14, 48,192, 48, 14, 0, 0, 0, 0};
78static const unsigned char bmpChar_8x13_027[] = { 8, 0, 0, 0,254, 0,224, 24, 6, 24,224, 0, 0, 0, 0};
79static const unsigned char bmpChar_8x13_028[] = { 8, 0, 0, 0, 68, 68, 68, 68, 68,254, 0, 0, 0, 0, 0};
80static const unsigned char bmpChar_8x13_029[] = { 8, 0, 0, 0, 32, 32,126, 16, 8,126, 4, 4, 0, 0, 0};
81static const unsigned char bmpChar_8x13_030[] = { 8, 0, 0, 0,220, 98, 32, 32, 32,112, 32, 34, 28, 0, 0};
82static const unsigned char bmpChar_8x13_031[] = { 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0};
83static const unsigned char bmpChar_8x13_032[] = { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
84static const unsigned char bmpChar_8x13_033[] = { 8, 0, 0, 0, 16, 0, 16, 16, 16, 16, 16, 16, 16, 0, 0};
85static const unsigned char bmpChar_8x13_034[] = { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 36, 36, 0, 0};
86static const unsigned char bmpChar_8x13_035[] = { 8, 0, 0, 0, 0, 36, 36,126, 36,126, 36, 36, 0, 0, 0};
87static const unsigned char bmpChar_8x13_036[] = { 8, 0, 0, 0, 16,120, 20, 20, 56, 80, 80, 60, 16, 0, 0};
88static const unsigned char bmpChar_8x13_037[] = { 8, 0, 0, 0, 68, 42, 36, 16, 8, 8, 36, 82, 34, 0, 0};
89static const unsigned char bmpChar_8x13_038[] = { 8, 0, 0, 0, 58, 68, 74, 48, 72, 72, 48, 0, 0, 0, 0};
90static const unsigned char bmpChar_8x13_039[] = { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 48, 56, 0, 0};
91static const unsigned char bmpChar_8x13_040[] = { 8, 0, 0, 0, 4, 8, 8, 16, 16, 16, 8, 8, 4, 0, 0};
92static const unsigned char bmpChar_8x13_041[] = { 8, 0, 0, 0, 32, 16, 16, 8, 8, 8, 16, 16, 32, 0, 0};
93static const unsigned char bmpChar_8x13_042[] = { 8, 0, 0, 0, 0, 0, 36, 24,126, 24, 36, 0, 0, 0, 0};
94static const unsigned char bmpChar_8x13_043[] = { 8, 0, 0, 0, 0, 0, 16, 16,124, 16, 16, 0, 0, 0, 0};
95static const unsigned char bmpChar_8x13_044[] = { 8, 0, 0, 64, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0};
96static const unsigned char bmpChar_8x13_045[] = { 8, 0, 0, 0, 0, 0, 0, 0,126, 0, 0, 0, 0, 0, 0};
97static const unsigned char bmpChar_8x13_046[] = { 8, 0, 0, 16, 56, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0};
98static const unsigned char bmpChar_8x13_047[] = { 8, 0, 0, 0,128,128, 64, 32, 16, 8, 4, 2, 2, 0, 0};
99static const unsigned char bmpChar_8x13_048[] = { 8, 0, 0, 0, 24, 36, 66, 66, 66, 66, 66, 36, 24, 0, 0};
100static const unsigned char bmpChar_8x13_049[] = { 8, 0, 0, 0,124, 16, 16, 16, 16, 16, 80, 48, 16, 0, 0};
101static const unsigned char bmpChar_8x13_050[] = { 8, 0, 0, 0,126, 64, 32, 24, 4, 2, 66, 66, 60, 0, 0};
102static const unsigned char bmpChar_8x13_051[] = { 8, 0, 0, 0, 60, 66, 2, 2, 28, 8, 4, 2,126, 0, 0};
103static const unsigned char bmpChar_8x13_052[] = { 8, 0, 0, 0, 4, 4,126, 68, 68, 36, 20, 12, 4, 0, 0};
104static const unsigned char bmpChar_8x13_053[] = { 8, 0, 0, 0, 60, 66, 2, 2, 98, 92, 64, 64,126, 0, 0};
105static const unsigned char bmpChar_8x13_054[] = { 8, 0, 0, 0, 60, 66, 66, 98, 92, 64, 64, 32, 28, 0, 0};
106static const unsigned char bmpChar_8x13_055[] = { 8, 0, 0, 0, 32, 32, 16, 16, 8, 8, 4, 2,126, 0, 0};
107static const unsigned char bmpChar_8x13_056[] = { 8, 0, 0, 0, 60, 66, 66, 66, 60, 66, 66, 66, 60, 0, 0};
108static const unsigned char bmpChar_8x13_057[] = { 8, 0, 0, 0, 56, 4, 2, 2, 58, 70, 66, 66, 60, 0, 0};
109static const unsigned char bmpChar_8x13_058[] = { 8, 0, 0, 16, 56, 16, 0, 0, 16, 56, 16, 0, 0, 0, 0};
110static const unsigned char bmpChar_8x13_059[] = { 8, 0, 0, 64, 48, 56, 0, 0, 16, 56, 16, 0, 0, 0, 0};
111static const unsigned char bmpChar_8x13_060[] = { 8, 0, 0, 0, 2, 4, 8, 16, 32, 16, 8, 4, 2, 0, 0};
112static const unsigned char bmpChar_8x13_061[] = { 8, 0, 0, 0, 0, 0,126, 0, 0,126, 0, 0, 0, 0, 0};
113static const unsigned char bmpChar_8x13_062[] = { 8, 0, 0, 0, 64, 32, 16, 8, 4, 8, 16, 32, 64, 0, 0};
114static const unsigned char bmpChar_8x13_063[] = { 8, 0, 0, 0, 8, 0, 8, 8, 4, 2, 66, 66, 60, 0, 0};
115static const unsigned char bmpChar_8x13_064[] = { 8, 0, 0, 0, 60, 64, 74, 86, 82, 78, 66, 66, 60, 0, 0};
116static const unsigned char bmpChar_8x13_065[] = { 8, 0, 0, 0, 66, 66, 66,126, 66, 66, 66, 36, 24, 0, 0};
117static const unsigned char bmpChar_8x13_066[] = { 8, 0, 0, 0,252, 66, 66, 66,124, 66, 66, 66,252, 0, 0};
118static const unsigned char bmpChar_8x13_067[] = { 8, 0, 0, 0, 60, 66, 64, 64, 64, 64, 64, 66, 60, 0, 0};
119static const unsigned char bmpChar_8x13_068[] = { 8, 0, 0, 0,252, 66, 66, 66, 66, 66, 66, 66,252, 0, 0};
120static const unsigned char bmpChar_8x13_069[] = { 8, 0, 0, 0,126, 64, 64, 64,120, 64, 64, 64,126, 0, 0};
121static const unsigned char bmpChar_8x13_070[] = { 8, 0, 0, 0, 64, 64, 64, 64,120, 64, 64, 64,126, 0, 0};
122static const unsigned char bmpChar_8x13_071[] = { 8, 0, 0, 0, 58, 70, 66, 78, 64, 64, 64, 66, 60, 0, 0};
123static const unsigned char bmpChar_8x13_072[] = { 8, 0, 0, 0, 66, 66, 66, 66,126, 66, 66, 66, 66, 0, 0};
124static const unsigned char bmpChar_8x13_073[] = { 8, 0, 0, 0,124, 16, 16, 16, 16, 16, 16, 16,124, 0, 0};
125static const unsigned char bmpChar_8x13_074[] = { 8, 0, 0, 0, 56, 68, 4, 4, 4, 4, 4, 4, 31, 0, 0};
126static const unsigned char bmpChar_8x13_075[] = { 8, 0, 0, 0, 66, 68, 72, 80, 96, 80, 72, 68, 66, 0, 0};
127static const unsigned char bmpChar_8x13_076[] = { 8, 0, 0, 0,126, 64, 64, 64, 64, 64, 64, 64, 64, 0, 0};
128static const unsigned char bmpChar_8x13_077[] = { 8, 0, 0, 0,130,130,130,146,146,170,198,130,130, 0, 0};
129static const unsigned char bmpChar_8x13_078[] = { 8, 0, 0, 0, 66, 66, 66, 70, 74, 82, 98, 66, 66, 0, 0};
130static const unsigned char bmpChar_8x13_079[] = { 8, 0, 0, 0, 60, 66, 66, 66, 66, 66, 66, 66, 60, 0, 0};
131static const unsigned char bmpChar_8x13_080[] = { 8, 0, 0, 0, 64, 64, 64, 64,124, 66, 66, 66,124, 0, 0};
132static const unsigned char bmpChar_8x13_081[] = { 8, 0, 0, 2, 60, 74, 82, 66, 66, 66, 66, 66, 60, 0, 0};
133static const unsigned char bmpChar_8x13_082[] = { 8, 0, 0, 0, 66, 68, 72, 80,124, 66, 66, 66,124, 0, 0};
134static const unsigned char bmpChar_8x13_083[] = { 8, 0, 0, 0, 60, 66, 2, 2, 60, 64, 64, 66, 60, 0, 0};
135static const unsigned char bmpChar_8x13_084[] = { 8, 0, 0, 0, 16, 16, 16, 16, 16, 16, 16, 16,254, 0, 0};
136static const unsigned char bmpChar_8x13_085[] = { 8, 0, 0, 0, 60, 66, 66, 66, 66, 66, 66, 66, 66, 0, 0};
137static const unsigned char bmpChar_8x13_086[] = { 8, 0, 0, 0, 16, 40, 40, 40, 68, 68, 68,130,130, 0, 0};
138static const unsigned char bmpChar_8x13_087[] = { 8, 0, 0, 0, 68,170,146,146,146,130,130,130,130, 0, 0};
139static const unsigned char bmpChar_8x13_088[] = { 8, 0, 0, 0,130,130, 68, 40, 16, 40, 68,130,130, 0, 0};
140static const unsigned char bmpChar_8x13_089[] = { 8, 0, 0, 0, 16, 16, 16, 16, 16, 40, 68,130,130, 0, 0};
141static const unsigned char bmpChar_8x13_090[] = { 8, 0, 0, 0,126, 64, 64, 32, 16, 8, 4, 2,126, 0, 0};
142static const unsigned char bmpChar_8x13_091[] = { 8, 0, 0, 0, 60, 32, 32, 32, 32, 32, 32, 32, 60, 0, 0};
143static const unsigned char bmpChar_8x13_092[] = { 8, 0, 0, 0, 2, 2, 4, 8, 16, 32, 64,128,128, 0, 0};
144static const unsigned char bmpChar_8x13_093[] = { 8, 0, 0, 0,120, 8, 8, 8, 8, 8, 8, 8,120, 0, 0};
145static const unsigned char bmpChar_8x13_094[] = { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 40, 16, 0, 0};
146static const unsigned char bmpChar_8x13_095[] = { 8, 0, 0,254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
147static const unsigned char bmpChar_8x13_096[] = { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 24, 56, 0, 0};
148static const unsigned char bmpChar_8x13_097[] = { 8, 0, 0, 0, 58, 70, 66, 62, 2, 60, 0, 0, 0, 0, 0};
149static const unsigned char bmpChar_8x13_098[] = { 8, 0, 0, 0, 92, 98, 66, 66, 98, 92, 64, 64, 64, 0, 0};
150static const unsigned char bmpChar_8x13_099[] = { 8, 0, 0, 0, 60, 66, 64, 64, 66, 60, 0, 0, 0, 0, 0};
151static const unsigned char bmpChar_8x13_100[] = { 8, 0, 0, 0, 58, 70, 66, 66, 70, 58, 2, 2, 2, 0, 0};
152static const unsigned char bmpChar_8x13_101[] = { 8, 0, 0, 0, 60, 66, 64,126, 66, 60, 0, 0, 0, 0, 0};
153static const unsigned char bmpChar_8x13_102[] = { 8, 0, 0, 0, 32, 32, 32, 32,124, 32, 32, 34, 28, 0, 0};
154static const unsigned char bmpChar_8x13_103[] = { 8, 0, 60, 66, 60, 64, 56, 68, 68, 58, 0, 0, 0, 0, 0};
155static const unsigned char bmpChar_8x13_104[] = { 8, 0, 0, 0, 66, 66, 66, 66, 98, 92, 64, 64, 64, 0, 0};
156static const unsigned char bmpChar_8x13_105[] = { 8, 0, 0, 0,124, 16, 16, 16, 16, 48, 0, 16, 0, 0, 0};
157static const unsigned char bmpChar_8x13_106[] = { 8, 0, 56, 68, 68, 4, 4, 4, 4, 12, 0, 4, 0, 0, 0};
158static const unsigned char bmpChar_8x13_107[] = { 8, 0, 0, 0, 66, 68, 72,112, 72, 68, 64, 64, 64, 0, 0};
159static const unsigned char bmpChar_8x13_108[] = { 8, 0, 0, 0,124, 16, 16, 16, 16, 16, 16, 16, 48, 0, 0};
160static const unsigned char bmpChar_8x13_109[] = { 8, 0, 0, 0,130,146,146,146,146,236, 0, 0, 0, 0, 0};
161static const unsigned char bmpChar_8x13_110[] = { 8, 0, 0, 0, 66, 66, 66, 66, 98, 92, 0, 0, 0, 0, 0};
162static const unsigned char bmpChar_8x13_111[] = { 8, 0, 0, 0, 60, 66, 66, 66, 66, 60, 0, 0, 0, 0, 0};
163static const unsigned char bmpChar_8x13_112[] = { 8, 0, 64, 64, 64, 92, 98, 66, 98, 92, 0, 0, 0, 0, 0};
164static const unsigned char bmpChar_8x13_113[] = { 8, 0, 2, 2, 2, 58, 70, 66, 70, 58, 0, 0, 0, 0, 0};
165static const unsigned char bmpChar_8x13_114[] = { 8, 0, 0, 0, 32, 32, 32, 32, 34, 92, 0, 0, 0, 0, 0};
166static const unsigned char bmpChar_8x13_115[] = { 8, 0, 0, 0, 60, 66, 12, 48, 66, 60, 0, 0, 0, 0, 0};
167static const unsigned char bmpChar_8x13_116[] = { 8, 0, 0, 0, 28, 34, 32, 32, 32,124, 32, 32, 0, 0, 0};
168static const unsigned char bmpChar_8x13_117[] = { 8, 0, 0, 0, 58, 68, 68, 68, 68, 68, 0, 0, 0, 0, 0};
169static const unsigned char bmpChar_8x13_118[] = { 8, 0, 0, 0, 16, 40, 40, 68, 68, 68, 0, 0, 0, 0, 0};
170static const unsigned char bmpChar_8x13_119[] = { 8, 0, 0, 0, 68,170,146,146,130,130, 0, 0, 0, 0, 0};
171static const unsigned char bmpChar_8x13_120[] = { 8, 0, 0, 0, 66, 36, 24, 24, 36, 66, 0, 0, 0, 0, 0};
172static const unsigned char bmpChar_8x13_121[] = { 8, 0, 60, 66, 2, 58, 70, 66, 66, 66, 0, 0, 0, 0, 0};
173static const unsigned char bmpChar_8x13_122[] = { 8, 0, 0, 0,126, 32, 16, 8, 4,126, 0, 0, 0, 0, 0};
174static const unsigned char bmpChar_8x13_123[] = { 8, 0, 0, 0, 14, 16, 16, 8, 48, 8, 16, 16, 14, 0, 0};
175static const unsigned char bmpChar_8x13_124[] = { 8, 0, 0, 0, 16, 16, 16, 16, 16, 16, 16, 16, 16, 0, 0};
176static const unsigned char bmpChar_8x13_125[] = { 8, 0, 0, 0,112, 8, 8, 16, 12, 16, 8, 8,112, 0, 0};
177static const unsigned char bmpChar_8x13_126[] = { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 84, 36, 0, 0};
178//static const unsigned char bmpChar_8x13_127[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
179//static const unsigned char bmpChar_8x13_128[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
180//static const unsigned char bmpChar_8x13_129[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
181//static const unsigned char bmpChar_8x13_130[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
182//static const unsigned char bmpChar_8x13_131[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
183//static const unsigned char bmpChar_8x13_132[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
184//static const unsigned char bmpChar_8x13_133[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
185//static const unsigned char bmpChar_8x13_134[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
186//static const unsigned char bmpChar_8x13_135[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
187//static const unsigned char bmpChar_8x13_136[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
188//static const unsigned char bmpChar_8x13_137[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
189//static const unsigned char bmpChar_8x13_138[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
190//static const unsigned char bmpChar_8x13_139[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
191//static const unsigned char bmpChar_8x13_140[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
192//static const unsigned char bmpChar_8x13_141[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
193//static const unsigned char bmpChar_8x13_142[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
194//static const unsigned char bmpChar_8x13_143[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
195//static const unsigned char bmpChar_8x13_144[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
196//static const unsigned char bmpChar_8x13_145[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
197//static const unsigned char bmpChar_8x13_146[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
198//static const unsigned char bmpChar_8x13_147[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
199//static const unsigned char bmpChar_8x13_148[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
200//static const unsigned char bmpChar_8x13_149[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
201//static const unsigned char bmpChar_8x13_150[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
202//static const unsigned char bmpChar_8x13_151[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
203//static const unsigned char bmpChar_8x13_152[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
204//static const unsigned char bmpChar_8x13_153[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
205//static const unsigned char bmpChar_8x13_154[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
206//static const unsigned char bmpChar_8x13_155[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
207//static const unsigned char bmpChar_8x13_156[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
208//static const unsigned char bmpChar_8x13_157[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
209//static const unsigned char bmpChar_8x13_158[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
210//static const unsigned char bmpChar_8x13_159[] = { 9, 0, 0, 0, 0, 0, 0,170, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,130, 0, 0, 0,170, 0, 0, 0, 0, 0};
211static const unsigned char bmpChar_8x13_160[] = { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
212static const unsigned char bmpChar_8x13_161[] = { 8, 0, 0, 0, 16, 16, 16, 16, 16, 16, 16, 0, 16, 0, 0};
213static const unsigned char bmpChar_8x13_162[] = { 8, 0, 0, 0, 0, 16, 56, 84, 80, 80, 84, 56, 16, 0, 0};
214static const unsigned char bmpChar_8x13_163[] = { 8, 0, 0, 0,220, 98, 32, 32, 32,112, 32, 34, 28, 0, 0};
215static const unsigned char bmpChar_8x13_164[] = { 8, 0, 0, 0, 0, 66, 60, 36, 36, 60, 66, 0, 0, 0, 0};
216static const unsigned char bmpChar_8x13_165[] = { 8, 0, 0, 0, 16, 16,124, 16,124, 40, 68,130,130, 0, 0};
217static const unsigned char bmpChar_8x13_166[] = { 8, 0, 0, 0, 16, 16, 16, 16, 0, 16, 16, 16, 16, 0, 0};
218static const unsigned char bmpChar_8x13_167[] = { 8, 0, 0, 0, 24, 36, 4, 24, 36, 36, 24, 32, 36, 24, 0};
219static const unsigned char bmpChar_8x13_168[] = { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 0, 0};
220static const unsigned char bmpChar_8x13_169[] = { 8, 0, 0, 0, 0, 56, 68,146,170,162,170,146, 68, 56, 0};
221static const unsigned char bmpChar_8x13_170[] = { 8, 0, 0, 0, 0, 0,124, 0, 60, 68, 60, 4, 56, 0, 0};
222static const unsigned char bmpChar_8x13_171[] = { 8, 0, 0, 0, 0, 18, 36, 72,144, 72, 36, 18, 0, 0, 0};
223static const unsigned char bmpChar_8x13_172[] = { 8, 0, 0, 0, 0, 2, 2, 2,126, 0, 0, 0, 0, 0, 0};
224static const unsigned char bmpChar_8x13_173[] = { 8, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0};
225static const unsigned char bmpChar_8x13_174[] = { 8, 0, 0, 0, 0, 56, 68,170,178,170,170,146, 68, 56, 0};
226static const unsigned char bmpChar_8x13_175[] = { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 0, 0};
227static const unsigned char bmpChar_8x13_176[] = { 8, 0, 0, 0, 0, 0, 0, 0, 0, 24, 36, 36, 24, 0, 0};
228static const unsigned char bmpChar_8x13_177[] = { 8, 0, 0, 0, 0,124, 0, 16, 16,124, 16, 16, 0, 0, 0};
229static const unsigned char bmpChar_8x13_178[] = { 8, 0, 0, 0, 0, 0, 0, 0,120, 64, 48, 8, 72, 48, 0};
230static const unsigned char bmpChar_8x13_179[] = { 8, 0, 0, 0, 0, 0, 0, 0, 48, 72, 8, 16, 72, 48, 0};
231static const unsigned char bmpChar_8x13_180[] = { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 8, 0};
232static const unsigned char bmpChar_8x13_181[] = { 8, 0, 0, 64, 90,102, 66, 66, 66, 66, 0, 0, 0, 0, 0};
233static const unsigned char bmpChar_8x13_182[] = { 8, 0, 0, 0, 20, 20, 20, 20, 52,116,116,116, 62, 0, 0};
234static const unsigned char bmpChar_8x13_183[] = { 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0};
235static const unsigned char bmpChar_8x13_184[] = { 8, 0, 24, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
236static const unsigned char bmpChar_8x13_185[] = { 8, 0, 0, 0, 0, 0, 0, 0,112, 32, 32, 32, 96, 32, 0};
237static const unsigned char bmpChar_8x13_186[] = { 8, 0, 0, 0, 0, 0, 0,120, 0, 48, 72, 72, 48, 0, 0};
238static const unsigned char bmpChar_8x13_187[] = { 8, 0, 0, 0, 0,144, 72, 36, 18, 36, 72,144, 0, 0, 0};
239static const unsigned char bmpChar_8x13_188[] = { 8, 0, 0, 0, 6, 26, 18, 10,230, 66, 64, 64,192, 64, 0};
240static const unsigned char bmpChar_8x13_189[] = { 8, 0, 0, 0, 30, 16, 12, 2,242, 76, 64, 64,192, 64, 0};
241static const unsigned char bmpChar_8x13_190[] = { 8, 0, 0, 0, 6, 26, 18, 10,102,146, 16, 32,144, 96, 0};
242static const unsigned char bmpChar_8x13_191[] = { 8, 0, 0, 0, 60, 66, 66, 64, 32, 16, 16, 0, 16, 0, 0};
243static const unsigned char bmpChar_8x13_192[] = { 8, 0, 0, 0, 66, 66,126, 66, 66, 36, 24, 0, 8, 16, 0};
244static const unsigned char bmpChar_8x13_193[] = { 8, 0, 0, 0, 66, 66,126, 66, 66, 36, 24, 0, 16, 8, 0};
245static const unsigned char bmpChar_8x13_194[] = { 8, 0, 0, 0, 66, 66,126, 66, 66, 36, 24, 0, 36, 24, 0};
246static const unsigned char bmpChar_8x13_195[] = { 8, 0, 0, 0, 66, 66,126, 66, 66, 36, 24, 0, 76, 50, 0};
247static const unsigned char bmpChar_8x13_196[] = { 8, 0, 0, 0, 66, 66,126, 66, 66, 36, 24, 0, 36, 36, 0};
248static const unsigned char bmpChar_8x13_197[] = { 8, 0, 0, 0, 66, 66,126, 66, 66, 36, 24, 24, 36, 24, 0};
249static const unsigned char bmpChar_8x13_198[] = { 8, 0, 0, 0,158,144,144,240,156,144,144,144,110, 0, 0};
250static const unsigned char bmpChar_8x13_199[] = { 8, 0, 16, 8, 60, 66, 64, 64, 64, 64, 64, 66, 60, 0, 0};
251static const unsigned char bmpChar_8x13_200[] = { 8, 0, 0, 0,126, 64, 64,120, 64, 64,126, 0, 8, 16, 0};
252static const unsigned char bmpChar_8x13_201[] = { 8, 0, 0, 0,126, 64, 64,120, 64, 64,126, 0, 16, 8, 0};
253static const unsigned char bmpChar_8x13_202[] = { 8, 0, 0, 0,126, 64, 64,120, 64, 64,126, 0, 36, 24, 0};
254static const unsigned char bmpChar_8x13_203[] = { 8, 0, 0, 0,126, 64, 64,120, 64, 64,126, 0, 36, 36, 0};
255static const unsigned char bmpChar_8x13_204[] = { 8, 0, 0, 0,124, 16, 16, 16, 16, 16,124, 0, 16, 32, 0};
256static const unsigned char bmpChar_8x13_205[] = { 8, 0, 0, 0,124, 16, 16, 16, 16, 16,124, 0, 16, 8, 0};
257static const unsigned char bmpChar_8x13_206[] = { 8, 0, 0, 0,124, 16, 16, 16, 16, 16,124, 0, 36, 24, 0};
258static const unsigned char bmpChar_8x13_207[] = { 8, 0, 0, 0,124, 16, 16, 16, 16, 16,124, 0, 40, 40, 0};
259static const unsigned char bmpChar_8x13_208[] = { 8, 0, 0, 0,120, 68, 66, 66,226, 66, 66, 68,120, 0, 0};
260static const unsigned char bmpChar_8x13_209[] = { 8, 0, 0, 0,130,134,138,146,162,194,130, 0,152,100, 0};
261static const unsigned char bmpChar_8x13_210[] = { 8, 0, 0, 0,124,130,130,130,130,130,124, 0, 16, 32, 0};
262static const unsigned char bmpChar_8x13_211[] = { 8, 0, 0, 0,124,130,130,130,130,130,124, 0, 16, 8, 0};
263static const unsigned char bmpChar_8x13_212[] = { 8, 0, 0, 0,124,130,130,130,130,130,124, 0, 36, 24, 0};
264static const unsigned char bmpChar_8x13_213[] = { 8, 0, 0, 0,124,130,130,130,130,130,124, 0,152,100, 0};
265static const unsigned char bmpChar_8x13_214[] = { 8, 0, 0, 0,124,130,130,130,130,130,124, 0, 40, 40, 0};
266static const unsigned char bmpChar_8x13_215[] = { 8, 0, 0, 0, 0, 66, 36, 24, 24, 36, 66, 0, 0, 0, 0};
267static const unsigned char bmpChar_8x13_216[] = { 8, 0, 0, 64, 60, 98, 82, 82, 82, 74, 74, 70, 60, 2, 0};
268static const unsigned char bmpChar_8x13_217[] = { 8, 0, 0, 0, 60, 66, 66, 66, 66, 66, 66, 0, 8, 16, 0};
269static const unsigned char bmpChar_8x13_218[] = { 8, 0, 0, 0, 60, 66, 66, 66, 66, 66, 66, 0, 16, 8, 0};
270static const unsigned char bmpChar_8x13_219[] = { 8, 0, 0, 0, 60, 66, 66, 66, 66, 66, 66, 0, 36, 24, 0};
271static const unsigned char bmpChar_8x13_220[] = { 8, 0, 0, 0, 60, 66, 66, 66, 66, 66, 66, 0, 36, 36, 0};
272static const unsigned char bmpChar_8x13_221[] = { 8, 0, 0, 0, 16, 16, 16, 16, 40, 68, 68, 0, 16, 8, 0};
273static const unsigned char bmpChar_8x13_222[] = { 8, 0, 0, 0, 64, 64, 64,124, 66, 66, 66,124, 64, 0, 0};
274static const unsigned char bmpChar_8x13_223[] = { 8, 0, 0, 0, 92, 66, 66, 76, 80, 72, 68, 68, 56, 0, 0};
275static const unsigned char bmpChar_8x13_224[] = { 8, 0, 0, 0, 58, 70, 66, 62, 2, 60, 0, 0, 8, 16, 0};
276static const unsigned char bmpChar_8x13_225[] = { 8, 0, 0, 0, 58, 70, 66, 62, 2, 60, 0, 0, 8, 4, 0};
277static const unsigned char bmpChar_8x13_226[] = { 8, 0, 0, 0, 58, 70, 66, 62, 2, 60, 0, 0, 36, 24, 0};
278static const unsigned char bmpChar_8x13_227[] = { 8, 0, 0, 0, 58, 70, 66, 62, 2, 60, 0, 0, 76, 50, 0};
279static const unsigned char bmpChar_8x13_228[] = { 8, 0, 0, 0, 58, 70, 66, 62, 2, 60, 0, 0, 36, 36, 0};
280static const unsigned char bmpChar_8x13_229[] = { 8, 0, 0, 0, 58, 70, 66, 62, 2, 60, 0, 24, 36, 24, 0};
281static const unsigned char bmpChar_8x13_230[] = { 8, 0, 0, 0,108,146,144,124, 18,108, 0, 0, 0, 0, 0};
282static const unsigned char bmpChar_8x13_231[] = { 8, 0, 16, 8, 60, 66, 64, 64, 66, 60, 0, 0, 0, 0, 0};
283static const unsigned char bmpChar_8x13_232[] = { 8, 0, 0, 0, 60, 66, 64,126, 66, 60, 0, 0, 8, 16, 0};
284static const unsigned char bmpChar_8x13_233[] = { 8, 0, 0, 0, 60, 66, 64,126, 66, 60, 0, 0, 16, 8, 0};
285static const unsigned char bmpChar_8x13_234[] = { 8, 0, 0, 0, 60, 66, 64,126, 66, 60, 0, 0, 36, 24, 0};
286static const unsigned char bmpChar_8x13_235[] = { 8, 0, 0, 0, 60, 66, 64,126, 66, 60, 0, 0, 36, 36, 0};
287static const unsigned char bmpChar_8x13_236[] = { 8, 0, 0, 0,124, 16, 16, 16, 16, 48, 0, 0, 16, 32, 0};
288static const unsigned char bmpChar_8x13_237[] = { 8, 0, 0, 0,124, 16, 16, 16, 16, 48, 0, 0, 32, 16, 0};
289static const unsigned char bmpChar_8x13_238[] = { 8, 0, 0, 0,124, 16, 16, 16, 16, 48, 0, 0, 72, 48, 0};
290static const unsigned char bmpChar_8x13_239[] = { 8, 0, 0, 0,124, 16, 16, 16, 16, 48, 0, 0, 40, 40, 0};
291static const unsigned char bmpChar_8x13_240[] = { 8, 0, 0, 0, 60, 66, 66, 66, 66, 60, 4, 40, 24, 36, 0};
292static const unsigned char bmpChar_8x13_241[] = { 8, 0, 0, 0, 66, 66, 66, 66, 98, 92, 0, 0, 76, 50, 0};
293static const unsigned char bmpChar_8x13_242[] = { 8, 0, 0, 0, 60, 66, 66, 66, 66, 60, 0, 0, 16, 32, 0};
294static const unsigned char bmpChar_8x13_243[] = { 8, 0, 0, 0, 60, 66, 66, 66, 66, 60, 0, 0, 16, 8, 0};
295static const unsigned char bmpChar_8x13_244[] = { 8, 0, 0, 0, 60, 66, 66, 66, 66, 60, 0, 0, 36, 24, 0};
296static const unsigned char bmpChar_8x13_245[] = { 8, 0, 0, 0, 60, 66, 66, 66, 66, 60, 0, 0, 76, 50, 0};
297static const unsigned char bmpChar_8x13_246[] = { 8, 0, 0, 0, 60, 66, 66, 66, 66, 60, 0, 0, 36, 36, 0};
298static const unsigned char bmpChar_8x13_247[] = { 8, 0, 0, 0, 0, 16, 16, 0,124, 0, 16, 16, 0, 0, 0};
299static const unsigned char bmpChar_8x13_248[] = { 8, 0, 0, 64, 60, 98, 82, 74, 70, 60, 2, 0, 0, 0, 0};
300static const unsigned char bmpChar_8x13_249[] = { 8, 0, 0, 0, 58, 68, 68, 68, 68, 68, 0, 0, 16, 32, 0};
301static const unsigned char bmpChar_8x13_250[] = { 8, 0, 0, 0, 58, 68, 68, 68, 68, 68, 0, 0, 16, 8, 0};
302static const unsigned char bmpChar_8x13_251[] = { 8, 0, 0, 0, 58, 68, 68, 68, 68, 68, 0, 0, 36, 24, 0};
303static const unsigned char bmpChar_8x13_252[] = { 8, 0, 0, 0, 58, 68, 68, 68, 68, 68, 0, 0, 40, 40, 0};
304static const unsigned char bmpChar_8x13_253[] = { 8, 0, 60, 66, 2, 58, 70, 66, 66, 66, 0, 0, 16, 8, 0};
305static const unsigned char bmpChar_8x13_254[] = { 8, 0, 64, 64, 92, 98, 66, 66, 98, 92, 64, 64, 0, 0, 0};
306static const unsigned char bmpChar_8x13_255[] = { 8, 0, 60, 66, 2, 58, 70, 66, 66, 66, 0, 0, 36, 36, 0};
307
308/* The font characters mapping: */
309static const unsigned char* bmpChar_8x13_Map[] = { bmpChar_8x13_000,bmpChar_8x13_001,bmpChar_8x13_002,bmpChar_8x13_003,bmpChar_8x13_004,bmpChar_8x13_005,bmpChar_8x13_006,bmpChar_8x13_007,bmpChar_8x13_008,bmpChar_8x13_009,bmpChar_8x13_010,bmpChar_8x13_011,bmpChar_8x13_012,bmpChar_8x13_013,bmpChar_8x13_014,bmpChar_8x13_015,
310bmpChar_8x13_016,bmpChar_8x13_017,bmpChar_8x13_018,bmpChar_8x13_019,bmpChar_8x13_020,bmpChar_8x13_021,bmpChar_8x13_022,bmpChar_8x13_023,bmpChar_8x13_024,bmpChar_8x13_025,bmpChar_8x13_026,bmpChar_8x13_027,bmpChar_8x13_028,bmpChar_8x13_029,bmpChar_8x13_030,bmpChar_8x13_031,
311bmpChar_8x13_032,bmpChar_8x13_033,bmpChar_8x13_034,bmpChar_8x13_035,bmpChar_8x13_036,bmpChar_8x13_037,bmpChar_8x13_038,bmpChar_8x13_039,bmpChar_8x13_040,bmpChar_8x13_041,bmpChar_8x13_042,bmpChar_8x13_043,bmpChar_8x13_044,bmpChar_8x13_045,bmpChar_8x13_046,bmpChar_8x13_047,
312bmpChar_8x13_048,bmpChar_8x13_049,bmpChar_8x13_050,bmpChar_8x13_051,bmpChar_8x13_052,bmpChar_8x13_053,bmpChar_8x13_054,bmpChar_8x13_055,bmpChar_8x13_056,bmpChar_8x13_057,bmpChar_8x13_058,bmpChar_8x13_059,bmpChar_8x13_060,bmpChar_8x13_061,bmpChar_8x13_062,bmpChar_8x13_063,
313bmpChar_8x13_064,bmpChar_8x13_065,bmpChar_8x13_066,bmpChar_8x13_067,bmpChar_8x13_068,bmpChar_8x13_069,bmpChar_8x13_070,bmpChar_8x13_071,bmpChar_8x13_072,bmpChar_8x13_073,bmpChar_8x13_074,bmpChar_8x13_075,bmpChar_8x13_076,bmpChar_8x13_077,bmpChar_8x13_078,bmpChar_8x13_079,
314bmpChar_8x13_080,bmpChar_8x13_081,bmpChar_8x13_082,bmpChar_8x13_083,bmpChar_8x13_084,bmpChar_8x13_085,bmpChar_8x13_086,bmpChar_8x13_087,bmpChar_8x13_088,bmpChar_8x13_089,bmpChar_8x13_090,bmpChar_8x13_091,bmpChar_8x13_092,bmpChar_8x13_093,bmpChar_8x13_094,bmpChar_8x13_095,
315bmpChar_8x13_096,bmpChar_8x13_097,bmpChar_8x13_098,bmpChar_8x13_099,bmpChar_8x13_100,bmpChar_8x13_101,bmpChar_8x13_102,bmpChar_8x13_103,bmpChar_8x13_104,bmpChar_8x13_105,bmpChar_8x13_106,bmpChar_8x13_107,bmpChar_8x13_108,bmpChar_8x13_109,bmpChar_8x13_110,bmpChar_8x13_111,
316bmpChar_8x13_112,bmpChar_8x13_113,bmpChar_8x13_114,bmpChar_8x13_115,bmpChar_8x13_116,bmpChar_8x13_117,bmpChar_8x13_118,bmpChar_8x13_119,bmpChar_8x13_120,bmpChar_8x13_121,bmpChar_8x13_122,bmpChar_8x13_123,bmpChar_8x13_124,bmpChar_8x13_125,bmpChar_8x13_126,bmpChar_8x13_032,
317bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,
318bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,bmpChar_8x13_032,
319bmpChar_8x13_160,bmpChar_8x13_161,bmpChar_8x13_162,bmpChar_8x13_163,bmpChar_8x13_164,bmpChar_8x13_165,bmpChar_8x13_166,bmpChar_8x13_167,bmpChar_8x13_168,bmpChar_8x13_169,bmpChar_8x13_170,bmpChar_8x13_171,bmpChar_8x13_172,bmpChar_8x13_173,bmpChar_8x13_174,bmpChar_8x13_175,
320bmpChar_8x13_176,bmpChar_8x13_177,bmpChar_8x13_178,bmpChar_8x13_179,bmpChar_8x13_180,bmpChar_8x13_181,bmpChar_8x13_182,bmpChar_8x13_183,bmpChar_8x13_184,bmpChar_8x13_185,bmpChar_8x13_186,bmpChar_8x13_187,bmpChar_8x13_188,bmpChar_8x13_189,bmpChar_8x13_190,bmpChar_8x13_191,
321bmpChar_8x13_192,bmpChar_8x13_193,bmpChar_8x13_194,bmpChar_8x13_195,bmpChar_8x13_196,bmpChar_8x13_197,bmpChar_8x13_198,bmpChar_8x13_199,bmpChar_8x13_200,bmpChar_8x13_201,bmpChar_8x13_202,bmpChar_8x13_203,bmpChar_8x13_204,bmpChar_8x13_205,bmpChar_8x13_206,bmpChar_8x13_207,
322bmpChar_8x13_208,bmpChar_8x13_209,bmpChar_8x13_210,bmpChar_8x13_211,bmpChar_8x13_212,bmpChar_8x13_213,bmpChar_8x13_214,bmpChar_8x13_215,bmpChar_8x13_216,bmpChar_8x13_217,bmpChar_8x13_218,bmpChar_8x13_219,bmpChar_8x13_220,bmpChar_8x13_221,bmpChar_8x13_222,bmpChar_8x13_223,
323bmpChar_8x13_224,bmpChar_8x13_225,bmpChar_8x13_226,bmpChar_8x13_227,bmpChar_8x13_228,bmpChar_8x13_229,bmpChar_8x13_230,bmpChar_8x13_231,bmpChar_8x13_232,bmpChar_8x13_233,bmpChar_8x13_234,bmpChar_8x13_235,bmpChar_8x13_236,bmpChar_8x13_237,bmpChar_8x13_238,bmpChar_8x13_239,
324bmpChar_8x13_240,bmpChar_8x13_241,bmpChar_8x13_242,bmpChar_8x13_243,bmpChar_8x13_244,bmpChar_8x13_245,bmpChar_8x13_246,bmpChar_8x13_247,bmpChar_8x13_248,bmpChar_8x13_249,bmpChar_8x13_250,bmpChar_8x13_251,bmpChar_8x13_252,bmpChar_8x13_253,bmpChar_8x13_254,bmpChar_8x13_255,nullptr};
325
326
327
328#include "ofTexture.h"
329static const float widthTex = 8.0f/256.0f;
330static const float heightTex = 14.0f/256.0f;
331ofPixels ofBitmapFont::pixels;
332
333using std::numeric_limits;
334using std::string;
335
336void ofBitmapFont::init(){
337if(pixels.isAllocated()) return;
338pixels.allocate(16*16, 16*16, OF_PIXELS_GRAY_ALPHA); // letter size:8x14pixels, texture size:16x8letters, gl_r: 1bytes/1pixel
339pixels.set(0);
340for (size_t i = 0; i < 256; i++) {
341const unsigned char * face = bmpChar_8x13_Map[i];
342for (size_t j = 1; j < 15; j++){
343for (size_t k = 0; k < 8; k++){
344if ( ((face[15-j] << k) & (128)) > 0 ){
345pixels[(((i/16))*16*16*16+(i%16)*16 + (j-1)*16*16 + k)*2] = 255;
346pixels[(((i/16))*16*16*16+(i%16)*16 + (j-1)*16*16 + k)*2+1] = 255;
347}
348}
349}
350}
351
352}
353
354//---------------------------------------------------------------------
355static void addBitmapCharacter(ofMesh & charMesh, int & vertexCount, int character, int x , int y, bool vFlipped){
356if (character < 128) {
357
358float posTexW = (float)(character % 16)/16.0f;
359float posTexH = ((int)(character / 16.0f))/16.0f;
360
361float texY1 = posTexH;
362float texY2 = posTexH+heightTex;
363
364//TODO: look into a better fix.
365//old ofDrawBitmapString was 3 pixels higher, so this version renders text in a different position.
366//3 pixel adjustment corrects that when y is flpped 5 when it's not.
367int yOffset = 14;
368if(!vFlipped){
369y += 5;
370y += yOffset;
371yOffset *= -1;
372}else{
373y -= 3;
374}
375
376size_t vC = vertexCount;
377charMesh.getTexCoords()[vC] = {posTexW,texY1};
378charMesh.getTexCoords()[vC+1] = {posTexW + widthTex,texY1};
379charMesh.getTexCoords()[vC+2] = {posTexW+widthTex,texY2};
380
381charMesh.getTexCoords()[vC+3] = {posTexW + widthTex,texY2};
382charMesh.getTexCoords()[vC+4] = {posTexW,texY2};
383charMesh.getTexCoords()[vC+5] = {posTexW,texY1};
384
385charMesh.getVertices()[vC] = glm::vec3(x,y,0.f);
386charMesh.getVertices()[vC+1] = glm::vec3(x+8,y,0.f);
387charMesh.getVertices()[vC+2] = glm::vec3(x+8,y+yOffset,0.f);
388
389charMesh.getVertices()[vC+3] = glm::vec3(x+8,y+yOffset,0.f);
390charMesh.getVertices()[vC+4] = glm::vec3(x,y+yOffset,0.f);
391charMesh.getVertices()[vC+5] = glm::vec3(x,y,0.f);
392
393vertexCount += 6;
394}
395}
396
397ofMesh ofBitmapFont::getMesh(const string & text, int x, int y, ofDrawBitmapMode mode, bool vFlipped) const{
398int len = (int)text.length();
399float fontSize = 8.0f;
400
401ofMesh charMesh;
402charMesh.setMode(OF_PRIMITIVE_TRIANGLES);
403charMesh.getVertices().resize(6 * len);
404charMesh.getTexCoords().resize(6 * len);
405
406int vertexCount = 0;
407int column = 0;
408float lineHeight = fontSize*1.7f;
409int newLineDirection = 1.0f;
410
411if(!vFlipped){
412newLineDirection = -1;
413// this would align multiline texts to the last line when vflip is disabled
414//int lines = ofStringTimesInString(textString,"\n");
415//y = lines*lineHeight;
416}
417
418float sx = x;
419float sy = y-fontSize;
420
421for(int c = 0; c < len; c++){
422if(text[c] == '\n'){
423
424sy += lineHeight*newLineDirection;
425// if(mode == OF_BITMAPMODE_SIMPLE) {
426sx = x;
427// } else {
428// sx = 0;
429// }
430
431column = 0;
432} else if (text[c] == '\t'){
433//move the cursor to the position of the next tab
434//8 is the default tab spacing in osx terminal and windows command line
435int out = column + 8 - (column % 8);
436sx += fontSize * (out-column);
437column = out;
438} else if (text[c] >= 32){
439// < 32 = control characters - don't draw
440// solves a bug with control characters
441// getting drawn when they ought to not be
442addBitmapCharacter(charMesh, vertexCount, text[c], (int)sx, (int)sy, vFlipped);
443
444sx += fontSize;
445column++;
446}
447}
448//We do this because its way faster
449charMesh.getVertices().resize(vertexCount);
450charMesh.getTexCoords().resize(vertexCount);
451return charMesh;
452
453}
454
455ofBitmapFont::ofBitmapFont(){
456#ifdef TARGET_ANDROID
457ofAddListener(ofxAndroidEvents().unloadGL,this,&ofBitmapFont::unloadTexture);
458#endif
459}
460
461ofBitmapFont::~ofBitmapFont(){
462#ifdef TARGET_ANDROID
463ofRemoveListener(ofxAndroidEvents().unloadGL,this,&ofBitmapFont::unloadTexture);
464#endif
465}
466
467void ofBitmapFont::unloadTexture(){
468texture.clear();
469}
470
471const ofTexture & ofBitmapFont::getTexture() const{
472if(!texture.isAllocated()){
473ofBitmapFont::init();
474texture.allocate(pixels,false);
475texture.setTextureMinMagFilter(GL_LINEAR,GL_NEAREST);
476}
477return texture;
478}
479
480
481ofRectangle ofBitmapFont::getBoundingBox(const string & text, int x, int y, ofDrawBitmapMode mode, bool vFlipped) const{
482if(text.empty()){
483return ofRectangle(x,y,0,0);
484}
485
486const ofMesh & mesh = getMesh(text,x,y, mode, vFlipped);
487glm::vec2 max(numeric_limits<float>::lowest(),numeric_limits<float>::lowest());
488glm::vec2 min(numeric_limits<float>::max(),numeric_limits<float>::max());
489for(const auto & p : mesh.getVertices()){
490if(p.x<min.x) min.x = p.x;
491if(p.y<min.y) min.y = p.y;
492if(p.x>max.x) max.x = p.x;
493if(p.y>max.y) max.y = p.y;
494}
495return ofRectangle(min,max);
496}
497