85 {0x6,0x9,0x9,0x9,0x6},
86 {0x2,0x6,0x2,0x2,0x7},
87 {0xF,0x1,0xF,0x8,0xF},
88 {0xE,0x1,0x7,0x1,0xE},
89 {0x9,0x9,0xF,0x1,0x1},
90 {0xF,0x8,0xF,0x1,0xF},
91 {0x6,0x8,0xE,0x9,0x6},
92 {0xF,0x1,0x2,0x4,0x4},
93 {0x6,0x9,0x6,0x9,0x6},
94 {0x6,0x9,0x7,0x1,0x6},
95 {0xF,0x9,0xF,0x9,0x9},
96 {0xE,0x9,0xE,0x9,0xE},
97 {0x7,0x8,0x8,0x8,0x7},
98 {0xE,0x9,0x9,0x9,0xE},
99 {0xF,0x8,0xE,0x8,0xF},
100 {0xF,0x8,0xE,0x8,0x8}
115 int startcp, endcp, thiscp;
120 fprintf (stderr,
"\n%s - generate unifont.hex code points as\n", argv[0]);
121 fprintf (stderr,
"four-digit hexadecimal numbers in a 2 by 2 grid,\n");
122 fprintf (stderr,
"or six-digit hexadecimal numbers in a 3 by 2 grid.\n");
123 fprintf (stderr,
"Syntax:\n\n");
124 fprintf (stderr,
" %s first_code_point last_code_point > glyphs.hex\n\n", argv[0]);
125 fprintf (stderr,
"Example (to generate glyphs for the Private Use Area):\n\n");
126 fprintf (stderr,
" %s e000 f8ff > pua.hex\n\n", argv[0]);
130 sscanf (argv[1],
"%x", &startcp);
131 sscanf (argv[2],
"%x", &endcp);
139 for (thiscp = startcp; thiscp <= endcp; thiscp++) {
140 if (thiscp <= 0xFFFF) {
171 d1 = (thiscp >> 12) & 0xF;
172 d2 = (thiscp >> 8) & 0xF;
173 d3 = (thiscp >> 4) & 0xF;
174 d4 = (thiscp ) & 0xF;
177 grid[0] = grid[15] = 0x0000;
180 for (row = 1; row < 15; row++) grid[row] = 0x7FFE;
182 printf (
"%04X:", thiscp);
188 for (row = 2; row < 7; row++) {
189 rowbits = (
hexdigit[d1][digitrow] << 9) |
191 grid[row] ^= rowbits;
199 for (row = 9; row < 14; row++) {
200 rowbits = (
hexdigit[d3][digitrow] << 9) |
202 grid[row] ^= rowbits;
206 for (row = 0; row < 16; row++) printf (
"%04X", grid[row] & 0xFFFF);
232 int d1, d2, d3, d4, d5, d6;
234 d1 = (thiscp >> 20) & 0xF;
235 d2 = (thiscp >> 16) & 0xF;
236 d3 = (thiscp >> 12) & 0xF;
237 d4 = (thiscp >> 8) & 0xF;
238 d5 = (thiscp >> 4) & 0xF;
239 d6 = (thiscp ) & 0xF;
242 grid[0] = grid[15] = 0x0000;
245 for (row = 1; row < 15; row++) grid[row] = 0xFFFF;
248 printf (
"%06X:", thiscp);
254 for (row = 2; row < 7; row++) {
255 rowbits = (
hexdigit[d1][digitrow] << 11) |
258 grid[row] ^= rowbits;
266 for (row = 9; row < 14; row++) {
267 rowbits = (
hexdigit[d4][digitrow] << 11) |
270 grid[row] ^= rowbits;
274 for (row = 0; row < 16; row++) printf (
"%04X", grid[row] & 0xFFFF);
int main(int argc, char *argv[])
The main function.
void hexprint4(int thiscp)
Generate a bitmap containing a 4-digit Unicode code point.
void hexprint6(int thiscp)
Generate a bitmap containing a 6-digit Unicode code point.
char hexdigit[16][5]
Bitmap pattern for each hexadecimal digit.