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
|
// rendertext.cpp: based on Don's gl_text.cpp
#include "cube.h"
short char_coords[96][4] = {
{0, 0, 25, 64}, //!
{25, 0, 54, 64}, //"
{54, 0, 107, 64}, // #
{107, 0, 148, 64}, //$
{148, 0, 217, 64}, //%
{217, 0, 263, 64}, //&
{263, 0, 280, 64}, //'
{280, 0, 309, 64}, //(
{309, 0, 338, 64}, //)
{338, 0, 379, 64}, //*
{379, 0, 432, 64}, //+
{432, 0, 455, 64}, //,
{455, 0, 484, 64}, //-
{0, 64, 21, 128}, //.
{23, 64, 52, 128}, ///
{52, 64, 93, 128}, // 0
{93, 64, 133, 128}, // 1
{133, 64, 174, 128}, // 2
{174, 64, 215, 128}, // 3
{215, 64, 256, 128}, // 4
{256, 64, 296, 128}, // 5
{296, 64, 337, 128}, // 6
{337, 64, 378, 128}, // 7
{378, 64, 419, 128}, // 8
{419, 64, 459, 128}, // 9
{459, 64, 488, 128}, //:
{0, 128, 29, 192}, //;
{29, 128, 81, 192}, //<
{81, 128, 134, 192}, //=
{134, 128, 186, 192}, //>
{186, 128, 221, 192}, //?
{221, 128, 285, 192}, //@
{285, 128, 329, 192}, // A
{329, 128, 373, 192}, // B
{373, 128, 418, 192}, // C
{418, 128, 467, 192}, // D
{0, 192, 40, 256}, // E
{40, 192, 77, 256}, // F
{77, 192, 127, 256}, // G
{127, 192, 175, 256}, // H
{175, 192, 202, 256}, // I
{202, 192, 231, 256}, // J
{231, 192, 275, 256}, // K
{275, 192, 311, 256}, // L
{311, 192, 365, 256}, // M
{365, 192, 413, 256}, // N
{413, 192, 463, 256}, // O
{1, 256, 38, 320}, // P
{38, 256, 89, 320}, // Q
{89, 256, 133, 320}, // R
{133, 256, 176, 320}, // S
{177, 256, 216, 320}, // T
{217, 256, 263, 320}, // U
{263, 256, 307, 320}, // V
{307, 256, 370, 320}, // W
{370, 256, 414, 320}, // X
{414, 256, 453, 320}, // Y
{453, 256, 497, 320}, // Z
{0, 320, 29, 384}, //[
{29, 320, 58, 384}, //"\"
{59, 320, 87, 384}, //]
{87, 320, 139, 384}, //^
{139, 320, 180, 384}, //_
{180, 320, 221, 384}, //`
{221, 320, 259, 384}, // a
{259, 320, 299, 384}, // b
{299, 320, 332, 384}, // c
{332, 320, 372, 384}, // d
{372, 320, 411, 384}, // e
{411, 320, 433, 384}, // f
{435, 320, 473, 384}, // g
{0, 384, 40, 448}, // h
{40, 384, 56, 448}, // i
{58, 384, 80, 448}, // j
{80, 384, 118, 448}, // k
{118, 384, 135, 448}, // l
{135, 384, 197, 448}, // m
{197, 384, 238, 448}, // n
{238, 384, 277, 448}, // o
{277, 384, 317, 448}, // p
{317, 384, 356, 448}, // q
{357, 384, 384, 448}, // r
{385, 384, 417, 448}, // s
{417, 384, 442, 448}, // t
{443, 384, 483, 448}, // u
{0, 448, 38, 512}, // v
{38, 448, 90, 512}, // w
{90, 448, 128, 512}, // x
{128, 448, 166, 512}, // y
{166, 448, 200, 512}, // z
{200, 448, 241, 512}, //{
{241, 448, 270, 512}, //|
{270, 448, 310, 512}, //}
{310, 448, 363, 512}, //~
};
int
text_width(OFString *string)
{
@autoreleasepool {
const char *str = string.UTF8String;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
// rendertext.cpp: based on Don's gl_text.cpp
#include "cube.h"
short char_coords[96][4] = {
{ 0, 0, 25, 64 }, //!
{ 25, 0, 54, 64 }, //"
{ 54, 0, 107, 64 }, // #
{ 107, 0, 148, 64 }, //$
{ 148, 0, 217, 64 }, //%
{ 217, 0, 263, 64 }, //&
{ 263, 0, 280, 64 }, //'
{ 280, 0, 309, 64 }, //(
{ 309, 0, 338, 64 }, //)
{ 338, 0, 379, 64 }, //*
{ 379, 0, 432, 64 }, //+
{ 432, 0, 455, 64 }, //,
{ 455, 0, 484, 64 }, //-
{ 0, 64, 21, 128 }, //.
{ 23, 64, 52, 128 }, ///
{ 52, 64, 93, 128 }, // 0
{ 93, 64, 133, 128 }, // 1
{ 133, 64, 174, 128 }, // 2
{ 174, 64, 215, 128 }, // 3
{ 215, 64, 256, 128 }, // 4
{ 256, 64, 296, 128 }, // 5
{ 296, 64, 337, 128 }, // 6
{ 337, 64, 378, 128 }, // 7
{ 378, 64, 419, 128 }, // 8
{ 419, 64, 459, 128 }, // 9
{ 459, 64, 488, 128 }, //:
{ 0, 128, 29, 192 }, //;
{ 29, 128, 81, 192 }, //<
{ 81, 128, 134, 192 }, //=
{ 134, 128, 186, 192 }, //>
{ 186, 128, 221, 192 }, //?
{ 221, 128, 285, 192 }, //@
{ 285, 128, 329, 192 }, // A
{ 329, 128, 373, 192 }, // B
{ 373, 128, 418, 192 }, // C
{ 418, 128, 467, 192 }, // D
{ 0, 192, 40, 256 }, // E
{ 40, 192, 77, 256 }, // F
{ 77, 192, 127, 256 }, // G
{ 127, 192, 175, 256 }, // H
{ 175, 192, 202, 256 }, // I
{ 202, 192, 231, 256 }, // J
{ 231, 192, 275, 256 }, // K
{ 275, 192, 311, 256 }, // L
{ 311, 192, 365, 256 }, // M
{ 365, 192, 413, 256 }, // N
{ 413, 192, 463, 256 }, // O
{ 1, 256, 38, 320 }, // P
{ 38, 256, 89, 320 }, // Q
{ 89, 256, 133, 320 }, // R
{ 133, 256, 176, 320 }, // S
{ 177, 256, 216, 320 }, // T
{ 217, 256, 263, 320 }, // U
{ 263, 256, 307, 320 }, // V
{ 307, 256, 370, 320 }, // W
{ 370, 256, 414, 320 }, // X
{ 414, 256, 453, 320 }, // Y
{ 453, 256, 497, 320 }, // Z
{ 0, 320, 29, 384 }, //[
{ 29, 320, 58, 384 }, //"\"
{ 59, 320, 87, 384 }, //]
{ 87, 320, 139, 384 }, //^
{ 139, 320, 180, 384 }, //_
{ 180, 320, 221, 384 }, //`
{ 221, 320, 259, 384 }, // a
{ 259, 320, 299, 384 }, // b
{ 299, 320, 332, 384 }, // c
{ 332, 320, 372, 384 }, // d
{ 372, 320, 411, 384 }, // e
{ 411, 320, 433, 384 }, // f
{ 435, 320, 473, 384 }, // g
{ 0, 384, 40, 448 }, // h
{ 40, 384, 56, 448 }, // i
{ 58, 384, 80, 448 }, // j
{ 80, 384, 118, 448 }, // k
{ 118, 384, 135, 448 }, // l
{ 135, 384, 197, 448 }, // m
{ 197, 384, 238, 448 }, // n
{ 238, 384, 277, 448 }, // o
{ 277, 384, 317, 448 }, // p
{ 317, 384, 356, 448 }, // q
{ 357, 384, 384, 448 }, // r
{ 385, 384, 417, 448 }, // s
{ 417, 384, 442, 448 }, // t
{ 443, 384, 483, 448 }, // u
{ 0, 448, 38, 512 }, // v
{ 38, 448, 90, 512 }, // w
{ 90, 448, 128, 512 }, // x
{ 128, 448, 166, 512 }, // y
{ 166, 448, 200, 512 }, // z
{ 200, 448, 241, 512 }, //{
{ 241, 448, 270, 512 }, //|
{ 270, 448, 310, 512 }, //}
{ 310, 448, 363, 512 }, //~
};
int
text_width(OFString *string)
{
@autoreleasepool {
const char *str = string.UTF8String;
|