7static double DIMC,CONSTANT;
8#define isset(n,i) (((i)&1<<(n))!=0)
9#define canset(n,i) (!isset(n,i)&&isset(n-1,i))
13static void values(
int c,
int *v1,
int *v2,
int *v3,
int *v4)
17 unsigned const char *font;
18 font = currfont->data;
19 font = currfont->data;
21 c = c * currfont->height;
26 for (i = 0; i < currfont->height / 2; i++) {
27 *v1 += (isset(0, font[c + i]) +
28 isset(1, font[c + i]) +
29 isset(2, font[c + i]) +
30 isset(3, font[c + i]));
31 *v2 += (isset(4, font[c + i]) +
32 isset(5, font[c + i]) +
33 isset(6, font[c + i]) +
34 isset(7, font[c + i]));
36 for (; i < currfont->height; i++) {
37 *v3 += (isset(0, font[c + i]) +
38 isset(1, font[c + i]) +
39 isset(2, font[c + i]) +
40 isset(3, font[c + i]));
41 *v4 += (isset(4, font[c + i]) +
42 isset(5, font[c + i]) +
43 isset(6, font[c + i]) +
44 isset(7, font[c + i]));
52 *v1 = currfont->height * 2 * MUL - *v1;
53 *v2 = currfont->height * 2 * MUL - *v2;
54 *v3 = currfont->height * 2 * MUL - *v3;
55 *v4 = currfont->height * 2 * MUL - *v4;
58 *v1 = (*v1 + 1) / DIMC;
59 *v2 = (*v2 + 1) / DIMC;
60 *v3 = (*v3 + 1) / DIMC;
61 *v4 = (*v4 + 1) / DIMC;
70 for (i = 0; i < currfont->height / 2; i++) {
71 *v1 += ((isset(0, font[c + i]) +
72 canset(1, font[c + i]) +
73 canset(2, font[c + i]) +
74 canset(3, font[c + i]))) * MUL;
75 *v2 += ((isset(4, font[c + i]) +
76 canset(5, font[c + i]) +
77 canset(6, font[c + i]) +
78 canset(7, font[c + i]))) * MUL;
80 for (; i < currfont->height; i++) {
81 *v3 += ((isset(0, font[c + i]) +
82 canset(1, font[c + i]) +
83 canset(2, font[c + i]) +
84 canset(3, font[c + i]))) * MUL;
85 *v4 += ((isset(4, font[c + i]) +
86 canset(5, font[c + i]) +
87 canset(6, font[c + i]) +
88 canset(7, font[c + i]))) * MUL;
95 int ma1 = 0, ma2 = 0, ma3 = 0, ma4 = 0, msum = 0;
96 int mi1 = 50000, mi2 = 50000, mi3 = 50000, mi4 = 50000, misum = 50000;
97 int v1, v2, v3, v4, sum;
101 for (i = 0; i < NCHARS; i++) {
102 if (!ALOWED(i, supported))
104 values(i, &v1, &v2, &v3, &v4);
113 if (v1 + v2 + v3 + v4 > msum)
114 msum = v1 + v2 + v3 + v4;
123 if (v1 + v2 + v3 + v4 < misum)
124 misum = v1 + v2 + v3 + v4;
142 for (i = 0; i < NCHARS; i++) {
143 if (!ALOWED1(i, supported))
145 values(i, &v1, &v2, &v3, &v4);
146 sum = ((double) (v1 + v2 + v3 + v4 - misum) * (1020 / (double) msum) + 0.5);
147 v1 = ((double) (v1 - mi1) * (255 / (double) ma1) + 0.5);
148 v2 = ((double) (v2 - mi2) * (255 / (double) ma2) + 0.5);
149 v3 = ((double) (v3 - mi3) * (255 / (double) ma3) + 0.5);
150 v4 = ((double) (v4 - mi4) * (255 / (double) ma4) + 0.5);
152 sum = v1 + v2 + v3 + v4;