emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/admin/charsets/compact.awk [emacs-unicode


From: Kenichi Handa
Subject: [Emacs-diffs] Changes to emacs/admin/charsets/compact.awk [emacs-unicode-2]
Date: Mon, 08 Sep 2003 07:56:10 -0400

Index: emacs/admin/charsets/compact.awk
diff -c /dev/null emacs/admin/charsets/compact.awk:1.1.2.1
*** /dev/null   Mon Sep  8 07:56:10 2003
--- emacs/admin/charsets/compact.awk    Mon Sep  8 07:56:09 2003
***************
*** 0 ****
--- 1,123 ----
+ # compact.awk -- Make charset map compact.
+ # Copyright (C) 2003
+ #   National Institute of Advanced Industrial Science and Technology (AIST)
+ #   Registration Number H13PRO009
+ #
+ # This file is part of GNU Emacs.
+ #
+ # GNU Emacs is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 2, or (at your option)
+ # any later version.
+ #
+ # GNU Emacs is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with GNU Emacs; see the file COPYING.  If not, write to the
+ # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ # Boston, MA 02111-1307, USA.
+ 
+ # Comment:
+ # Make a charset map compact by changing this kind of line sequence:
+ #   0x00 0x0000
+ #   0x01 0x0001
+ #   ...
+ #   0x7F 0x007F
+ # to one line of this format:
+ #   0x00-0x7F 0x0000
+ 
+ BEGIN {
+   tohex["0"] = 1;
+   tohex["1"] = 2;
+   tohex["2"] = 3;
+   tohex["3"] = 4;
+   tohex["4"] = 5;
+   tohex["5"] = 6;
+   tohex["6"] = 7;
+   tohex["7"] = 8;
+   tohex["8"] = 9;
+   tohex["9"] = 10;
+   tohex["A"] = 11;
+   tohex["B"] = 12;
+   tohex["C"] = 13;
+   tohex["D"] = 14;
+   tohex["E"] = 15;
+   tohex["F"] = 16;
+   tohex["a"] = 11;
+   tohex["b"] = 12;
+   tohex["c"] = 13;
+   tohex["d"] = 14;
+   tohex["e"] = 15;
+   tohex["f"] = 16;
+   from_code = 0;
+   to_code = -1;
+   to_unicode = 0;
+   from_unicode = 0;
+ }
+ 
+ function decode_hex(str, idx) {
+   n = 0;
+   len = length(str);
+   for (i = idx; i <= len; i++)
+     {
+       c = tohex[substr (str, i, 1)];
+       if (c == 0)
+       break;
+       n = n * 16 + c - 1;
+     }
+   return n;
+ }
+ 
+ /^\#/ {
+   print;
+   next;
+ }
+ 
+ {
+   code = decode_hex($1, 3);
+   unicode = decode_hex($2, 3);
+   if ((code == to_code + 1) && (unicode == to_unicode + 1))
+     {
+       to_code++;
+       to_unicode++;
+     }
+   else
+     {
+       if (to_code < 256)
+       {
+         if (from_code == to_code)
+           printf "0x%02X 0x%04X\n", from_code, from_unicode;
+         else if (from_code < to_code)
+           printf "0x%02X-0x%02X 0x%04X\n", from_code, to_code, from_unicode;
+       }
+       else
+       {
+         if (from_code == to_code)
+           printf "0x%04X 0x%04X\n", from_code, from_unicode;
+         else if (from_code < to_code)
+           printf "0x%04X-0x%04X 0x%04X\n", from_code, to_code, from_unicode;
+       }
+       from_code = to_code = code;
+       from_unicode = to_unicode = unicode;
+     }
+ }
+ 
+ END {
+   if (to_code < 256)
+     {
+       if (from_code == to_code)
+       printf "0x%02X 0x%04X\n", from_code, from_unicode;
+       else
+       printf "0x%02X-0x%02X 0x%04X\n", from_code, to_code, from_unicode;
+     }
+   else
+     {
+       if (from_code == to_code)
+       printf "0x%04X 0x%04X\n", from_code, from_unicode;
+       else
+       printf "0x%04X-0x%04X 0x%04X\n", from_code, to_code, from_unicode;
+     }
+ }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]