1+ #include " Font.h"
2+
3+ Font::Font ()
4+ {
5+ UnsupportedChar = new FontChar (3 , 6 , 0 , 252783 );
6+
7+ Chars = new FontChar*[255 ];
8+
9+ // Unsupported chars: 0-31
10+ for (int i=0 ; i<=31 ; ++i)
11+ Chars[i] = UnsupportedChar;
12+
13+ Chars[32 ] = new FontChar (2 , 1 , 0 , 0 ); //
14+ Chars[33 ] = new FontChar (1 , 5 , 1 , 23 ); // !
15+
16+ // Unsupported chars: 34-43
17+ for (int i=34 ; i<=43 ; ++i)
18+ Chars[i] = UnsupportedChar;
19+
20+ Chars[44 ] = new FontChar (2 , 2 , 5 , 6 ); // ,
21+ Chars[45 ] = new FontChar (3 , 1 , 3 , 7 ); // -
22+ Chars[46 ] = new FontChar (1 , 1 , 5 , 1 ); // .
23+ Chars[47 ] = UnsupportedChar; // /
24+ Chars[48 ] = new FontChar (4 , 5 , 1 , 432534 ); // 0
25+ Chars[49 ] = new FontChar (2 , 5 , 1 , 683 ); // 1
26+ Chars[50 ] = new FontChar (4 , 5 , 1 , 988807 ); // 2
27+ Chars[51 ] = new FontChar (4 , 5 , 1 , 493191 ); // 3
28+ Chars[52 ] = new FontChar (4 , 5 , 1 , 324964 ); // 4
29+ Chars[53 ] = new FontChar (4 , 5 , 1 , 493343 ); // 5
30+ Chars[54 ] = new FontChar (4 , 5 , 1 , 431894 ); // 6
31+ Chars[55 ] = new FontChar (4 , 5 , 1 , 140431 ); // 7
32+ Chars[56 ] = new FontChar (4 , 5 , 1 , 431766 ); // 8
33+ Chars[57 ] = new FontChar (4 , 5 , 1 , 429718 ); // 9
34+
35+ // Unsupported chars: 58-59
36+ for (int i=58 ; i<=59 ; ++i)
37+ Chars[i] = UnsupportedChar;
38+
39+ Chars[60 ] = new FontChar (3 , 5 , 1 , 17492 ); // <
40+ Chars[61 ] = UnsupportedChar; // =
41+ Chars[62 ] = new FontChar (3 , 5 , 1 , 5393 ); // >
42+ Chars[63 ] = new FontChar (4 , 5 , 1 , 132743 ); // ?
43+ Chars[64 ] = UnsupportedChar; // @
44+ Chars[65 ] = new FontChar (4 , 5 , 1 , 653718 ); // A
45+ Chars[66 ] = new FontChar (4 , 5 , 1 , 497559 ); // B
46+ Chars[67 ] = new FontChar (3 , 5 , 1 , 25166 ); // C
47+ Chars[68 ] = new FontChar (4 , 5 , 1 , 498071 ); // D
48+ Chars[69 ] = new FontChar (3 , 5 , 1 , 29647 ); // E
49+ Chars[70 ] = new FontChar (3 , 5 , 1 , 5071 ); // F
50+ Chars[71 ] = new FontChar (4 , 5 , 1 , 957726 ); // G
51+ Chars[72 ] = new FontChar (4 , 5 , 1 , 630681 ); // H
52+ Chars[73 ] = new FontChar (3 , 5 , 1 , 29847 ); // I
53+ Chars[74 ] = UnsupportedChar; // J
54+ Chars[75 ] = new FontChar (4 , 5 , 1 , 611161 ); // K
55+ Chars[76 ] = new FontChar (3 , 5 , 1 , 29257 ); // L
56+ Chars[77 ] = new FontChar (5 , 5 , 1 , 18405233 ); // M
57+ Chars[78 ] = new FontChar (4 , 5 , 1 , 630201 ); // N
58+ Chars[79 ] = new FontChar (4 , 5 , 1 , 432534 ); // O
59+ Chars[80 ] = new FontChar (4 , 5 , 1 , 96663 ); // P
60+ Chars[81 ] = new FontChar (4 , 6 , 1 , 8821142 ); // Q
61+ Chars[82 ] = new FontChar (4 , 5 , 1 , 620951 ); // R
62+ Chars[83 ] = new FontChar (4 , 5 , 1 , 493086 ); // S
63+ Chars[84 ] = new FontChar (3 , 5 , 1 , 9367 ); // T
64+ Chars[85 ] = new FontChar (4 , 5 , 1 , 432537 ); // U
65+ Chars[86 ] = new FontChar (4 , 5 , 1 , 152985 ); // V
66+ Chars[87 ] = new FontChar (5 , 5 , 1 , 11196081 ); // W
67+ Chars[88 ] = new FontChar (4 , 5 , 1 , 628377 ); // X
68+ Chars[89 ] = new FontChar (4 , 5 , 1 , 429721 ); // Y
69+ Chars[90 ] = new FontChar (3 , 5 , 1 , 29351 ); // Z
70+
71+ // Unsupported chars: 91-96
72+ for (int i=91 ; i<=96 ; ++i)
73+ Chars[i] = UnsupportedChar;
74+
75+ Chars[97 ] = new FontChar (4 , 4 , 2 , 59806 ); // a
76+ Chars[98 ] = new FontChar (4 , 5 , 1 , 498033 ); // b
77+ Chars[99 ] = new FontChar (3 , 4 , 2 , 3150 ); // c
78+ Chars[100 ] = new FontChar (4 , 5 , 1 , 956904 ); // d
79+ Chars[101 ] = new FontChar (4 , 4 , 2 , 25558 ); // e
80+ Chars[102 ] = new FontChar (3 , 5 , 1 , 9684 ); // f
81+ Chars[103 ] = new FontChar (4 , 6 , 2 , 6875550 ); // g
82+ Chars[104 ] = new FontChar (4 , 5 , 1 , 629105 ); // h
83+ Chars[105 ] = new FontChar (1 , 5 , 1 , 29 ); // i
84+ Chars[106 ] = new FontChar (2 , 7 , 1 , 6818 ); // j
85+ Chars[107 ] = new FontChar (4 , 5 , 1 , 619921 ); // k
86+ Chars[108 ] = new FontChar (1 , 5 , 1 , 31 ); // l
87+ Chars[109 ] = new FontChar (5 , 4 , 2 , 710319 ); // m
88+ Chars[110 ] = new FontChar (4 , 4 , 2 , 39319 ); // n
89+ Chars[111 ] = new FontChar (4 , 4 , 2 , 27030 ); // o
90+ Chars[112 ] = new FontChar (4 , 6 , 2 , 1145239 ); // p
91+ Chars[113 ] = new FontChar (4 , 6 , 2 , 8972702 ); // q
92+ Chars[114 ] = new FontChar (3 , 4 , 2 , 605 ); // r
93+ Chars[115 ] = new FontChar (4 , 4 , 2 , 31806 ); // s
94+ Chars[116 ] = new FontChar (3 , 5 , 1 , 17594 ); // t
95+ Chars[117 ] = new FontChar (4 , 4 , 2 , 59801 ); // u
96+ Chars[118 ] = new FontChar (4 , 4 , 2 , 9625 ); // v
97+ Chars[119 ] = new FontChar (5 , 4 , 2 , 338613 ); // w
98+ Chars[120 ] = new FontChar (3 , 4 , 2 , 2709 ); // x
99+ Chars[121 ] = new FontChar (4 , 6 , 2 , 6875545 ); // y
100+ Chars[122 ] = new FontChar (4 , 4 , 2 , 62031 ); // z
101+
102+ // Unsupported chars: 123-254
103+ for (int i=123 ; i<=254 ; ++i) Chars[i] = UnsupportedChar;
104+ }
105+
106+ void Font::MeasureString (const String& str, int & width, int & height, int spacing)
107+ {
108+ width = 0 ;
109+ height = 0 ;
110+
111+ for (int i=0 ; i<str.length (); ++i)
112+ {
113+ char c = str[i];
114+ FontChar* fontChar = Chars[(int )c];
115+
116+ width += fontChar->Width + spacing;
117+ if (fontChar->Height > height)
118+ height = fontChar->Height ;
119+ }
120+ }
0 commit comments