#include <stdlib.h>
#include <string.h>
-#define UNISTART 0x3400
-#define UNISTOP 0x4DBF
-
#define MAXBUF 256
int startrow; /* row to start glyph */
unsigned rowout;
- while (fgets (inbuf, MAXBUF - 1, stdin) != NULL) {
- if (strncmp (inbuf, "ENCODING ", 9) != 0) continue;
+ while (fgets (inbuf, MAXBUF - 1, stdin)) {
+ if (strncmp (inbuf, "ENCODING ", 9)) continue;
sscanf (&inbuf[9], "%d", &thispoint); /* get code point */
- /*
- If we want this code point, get the BBX (bounding box) and
- BITMAP information.
- */
- if (!(
- (thispoint >= 0x2E80 && thispoint <= 0x2EFF) || // CJK Radicals Supplement
- (thispoint >= 0x2F00 && thispoint <= 0x2FDF) || // Kangxi Radicals
- (thispoint >= 0x2FF0 && thispoint <= 0x2FFF) || // Ideographic Description Characters
- (thispoint >= 0x3001 && thispoint <= 0x303F) || // CJK Symbols and Punctuation (U+3000 is a space)
- (thispoint >= 0x3100 && thispoint <= 0x312F) || // Bopomofo
- (thispoint >= 0x31A0 && thispoint <= 0x31BF) || // Bopomofo extend
- (thispoint >= 0x31C0 && thispoint <= 0x31EF) || // CJK Strokes
- (thispoint >= 0x3400 && thispoint <= 0x4DBF) || // CJK Unified Ideographs Extension A
- (thispoint >= 0x4E00 && thispoint <= 0x9FCF) || // CJK Unified Ideographs
- (thispoint >= 0xF900 && thispoint <= 0xFAFF)) // CJK Compatibility Ideographs
- ) continue;
- while (fgets (inbuf, MAXBUF - 1, stdin) != NULL &&
- strncmp (inbuf, "BBX ", 4) != 0); /* find bounding box */
+ /* Read bounding box values from BBX line */
+ while (fgets (inbuf, MAXBUF - 1, stdin)) {
+ if (!strncmp (inbuf, "BBX ", 4)) break;
+ }
sscanf (&inbuf[4], "%d %d %d %d", &bbxx, &bbxy, &bbxxoff, &bbxyoff);
- while (fgets (inbuf, MAXBUF - 1, stdin) != NULL &&
- strncmp (inbuf, "BITMAP", 6) != 0); /* find bitmap start */
+
+ /* Find BITMAP start */
+ while (fgets (inbuf, MAXBUF - 1, stdin)) {
+ if (!strncmp (inbuf, "BITMAP", 6)) break;
+ }
+
fprintf (stdout, "%04X:", thispoint);
digitsout = 0;
/* Print initial blank rows */
fprintf (stdout,"0000");
digitsout += 4;
}
- while (fgets (inbuf, MAXBUF - 1, stdin) != NULL &&
- strncmp (inbuf, "END", 3) != 0) { /* copy bitmap until END */
+ /* Copy bitmap until END */
+ while (fgets (inbuf, MAXBUF - 1, stdin)) {
+ if (!strncmp (inbuf, "END", 3)) break;
sscanf (inbuf, "%X", &rowout);
/* Now force glyph to a 16x16 grid even if they'd fit in 8x16 */
if (bbxx <= 8) rowout <<= 8; /* shift left for 16x16 glyph */