unibdf2hex: invert encompassing if statements to match exceptions
authorMischa POSLAWSKY <perl@shiar.org>
Thu, 16 Jul 2015 03:53:46 +0000 (05:53 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Thu, 16 Jul 2015 03:53:46 +0000 (05:53 +0200)
Make code easier to read and maintain.

src/unibdf2hex.c

index e8c65f502e06846ee1e9c42bc800ca2bb50bf8d7..6669d8f7e372521deea9fafbeaf3abcc2658d5e9 100644 (file)
@@ -48,57 +48,56 @@ main()
    unsigned rowout;
 
    while (fgets (inbuf, MAXBUF - 1, stdin) != NULL) {
-      if (strncmp (inbuf, "ENCODING ", 9) == 0) {
-         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
-            {
-            while (fgets (inbuf, MAXBUF - 1, stdin) != NULL &&
-                   strncmp (inbuf, "BBX ", 4) != 0); /* find bounding box */
+      if (strncmp (inbuf, "ENCODING ", 9) != 0) 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 */
 
-            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 */
-            fprintf (stdout, "%04X:", thispoint);
-            digitsout = 0;
-            /* Print initial blank rows */
-            startrow = descent + bbxyoff + bbxy;
+      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 */
+      fprintf (stdout, "%04X:", thispoint);
+      digitsout = 0;
+      /* Print initial blank rows */
+      startrow = descent + bbxyoff + bbxy;
 
-            /* Force everything to 16 pixels wide */
-            for (i = 16; i > startrow; i--) {
-               fprintf (stdout,"0000");
-               digitsout += 4;
-            }
-            while (fgets (inbuf, MAXBUF - 1, stdin) != NULL &&
-                   strncmp (inbuf, "END", 3) != 0) { /* copy bitmap until END */
-               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 */
-               rowout >>= bbxxoff;
-               fprintf (stdout, "%04X", rowout);
-               digitsout += 4;
-            }
+      /* Force everything to 16 pixels wide */
+      for (i = 16; i > startrow; i--) {
+         fprintf (stdout,"0000");
+         digitsout += 4;
+      }
+      while (fgets (inbuf, MAXBUF - 1, stdin) != NULL &&
+             strncmp (inbuf, "END", 3) != 0) { /* copy bitmap until END */
+         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 */
+         rowout >>= bbxxoff;
+         fprintf (stdout, "%04X", rowout);
+         digitsout += 4;
+      }
 
-            /* Pad for 16x16 glyph */
-            while (digitsout < 64) {
-               fprintf (stdout,"0000");
-               digitsout += 4;
-            }
-            fprintf (stdout,"\n");
-         }
+      /* Pad for 16x16 glyph */
+      while (digitsout < 64) {
+         fprintf (stdout,"0000");
+         digitsout += 4;
       }
+      fprintf (stdout,"\n");
    }
    exit (0);
 }