wiki-patch-case-insensitive


deleted-page

moved to darcs

diff -urN wiliki-0.5/Makefile wiliki-0.5-case-insensitive/Makefile
--- wiliki-0.5/Makefile 2004-04-04 13:12:14.000000000 +0200
+++ wiliki-0.5-case-insensitive/Makefile        2004-09-13 16:20:08.000000000 +0200
@@ -17,6 +17,7 @@
 install: all
        cd src; $(MAKE) install
        cd doc; $(MAKE) install
+       cd scheme-unicode; $(MAKE) install
 
 distclean: clean
        cd src; $(MAKE) distclean
diff -urN wiliki-0.5/scheme-unicode/COPYING wiliki-0.5-case-insensitive/scheme-unicode/COPYING
--- wiliki-0.5/scheme-unicode/COPYING   1970-01-01 01:00:00.000000000 +0100
+++ wiliki-0.5-case-insensitive/scheme-unicode/COPYING  2004-09-13 16:20:08.000000000 +0200
@@ -0,0 +1,5 @@
+
+Copyright (C) 2002-2003 Alex Shinn, All rights reserved.
+
+This library is free software; you can redistribute it and/or modify
+it under either the GNU GPL or Artistic licenses.
diff -urN wiliki-0.5/scheme-unicode/data/case-map-2.dat wiliki-0.5-case-insensitive/scheme-unicode/data/case-map-2.dat
--- wiliki-0.5/scheme-unicode/data/case-map-2.dat       1970-01-01 01:00:00.000000000 +0100
+++ wiliki-0.5-case-insensitive/scheme-unicode/data/case-map-2.dat      2004-09-13 16:20:08.000000000 +0200
@@ -0,0 +1 @@
+#(#(223 #\ß "Ss" "SS") #(304 "i̇" #\İ #\İ) #(329 #\ʼn "ʼN" "ʼN") #(496 #\ǰ "J̌" "J̌") #(912 #\ΐ "Ϊ́" "Ϊ́") #(944 #\ΰ "Ϋ́" "Ϋ́") #(1415 #\և "Եւ" "ԵՒ") #(7830 #\ẖ "H̱" "H̱") #(7831 #\ẗ "T̈" "T̈") #(7832 #\ẘ "W̊" "W̊") #(7833 #\ẙ "Y̊" "Y̊") #(7834 #\ẚ "Aʾ" "Aʾ") #(8016 #\ὐ "Υ̓" "Υ̓") #(8018 #\ὒ "Υ̓̀" "Υ̓̀") #(8020 #\ὔ "Υ̓́" "Υ̓́") #(8022 #\ὖ "Υ̓͂" "Υ̓͂") #(8064 #\ᾀ #\ᾈ "ἈΙ") #(8065 #\ᾁ #\ᾉ "ἉΙ") #(8066 #\ᾂ #\ᾊ "ἊΙ") #(8067 #\ᾃ #\ᾋ "ἋΙ") #(8068 #\ᾄ #\ᾌ "ἌΙ") #(8069 #\ᾅ #\ᾍ "ἍΙ") #(8070 #\ᾆ #\ᾎ "ἎΙ") #(8071 #\ᾇ #\ᾏ "ἏΙ") #(8072 #\ᾀ #\ᾈ "ἈΙ") #(8073 #\ᾁ #\ᾉ "ἉΙ") #(8074 #\ᾂ #\ᾊ "ἊΙ") #(8075 #\ᾃ #\ᾋ "ἋΙ") #(8076 #\ᾄ #\ᾌ "ἌΙ") #(8077 #\ᾅ #\ᾍ "ἍΙ") #(8078 #\ᾆ #\ᾎ "ἎΙ") #(8079 #\ᾇ #\ᾏ "ἏΙ") #(8080 #\ᾐ #\ᾘ "ἨΙ") #(8081 #\ᾑ #\ᾙ "ἩΙ") #(8082 #\ᾒ #\ᾚ "ἪΙ") #(8083 #\ᾓ #\ᾛ "ἫΙ") #(8084 #\ᾔ #\ᾜ "ἬΙ") #(8085 #\ᾕ #\ᾝ "ἭΙ") #(8086 #\ᾖ #\ᾞ "ἮΙ") #(8087 #\ᾗ #\ᾟ "ἯΙ") #(8088 #\ᾐ #\ᾘ "ἨΙ") #(8089 #\ᾑ #\ᾙ "ἩΙ") #(8090 #\ᾒ #\ᾚ "ἪΙ") #(8091 #\ᾓ #\ᾛ "ἫΙ") #(8092 #\ᾔ #\ᾜ "ἬΙ") #(8093 #\ᾕ #\ᾝ "ἭΙ") #(8094 #\ᾖ #\ᾞ "ἮΙ") #(8095 #\ᾗ #\ᾟ "ἯΙ") #(8096 #\ᾠ #\ᾨ "ὨΙ") #(8097 #\ᾡ #\ᾩ "ὩΙ") #(8098 #\ᾢ #\ᾪ "ὪΙ") #(8099 #\ᾣ #\ᾫ "ὫΙ") #(8100 #\ᾤ #\ᾬ "ὬΙ") #(8101 #\ᾥ #\ᾭ "ὭΙ") #(8102 #\ᾦ #\ᾮ "ὮΙ") #(8103 #\ᾧ #\ᾯ "ὯΙ") #(8104 #\ᾠ #\ᾨ "ὨΙ") #(8105 #\ᾡ #\ᾩ "ὩΙ") #(8106 #\ᾢ #\ᾪ "ὪΙ") #(8107 #\ᾣ #\ᾫ "ὫΙ") #(8108 #\ᾤ #\ᾬ "ὬΙ") #(8109 #\ᾥ #\ᾭ "ὭΙ") #(8110 #\ᾦ #\ᾮ "ὮΙ") #(8111 #\ᾧ #\ᾯ "ὯΙ") #(8114 #\ᾲ "Ὰͅ" "ᾺΙ") #(8115 #\ᾳ #\ᾼ "ΑΙ") #(8116 #\ᾴ "Άͅ" "ΆΙ") #(8118 #\ᾶ "Α͂" "Α͂") #(8119 #\ᾷ "ᾼ͂" "Α͂Ι") #(8124 #\ᾳ #\ᾼ "ΑΙ") #(8130 #\ῂ "Ὴͅ" "ῊΙ") #(8131 #\ῃ #\ῌ "ΗΙ") #(8132 #\ῄ "Ήͅ" "ΉΙ") #(8134 #\ῆ "Η͂" "Η͂") #(8135 #\ῇ "ῌ͂" "Η͂Ι") #(8140 #\ῃ #\ῌ "ΗΙ") #(8146 #\ῒ "Ϊ̀" "Ϊ̀") #(8147 #\ΐ "Ϊ́" "Ϊ́") #(8150 #\ῖ "Ι͂" "Ι͂") #(8151 #\ῗ "Ϊ͂" "Ϊ͂") #(8162 #\ῢ "Ϋ̀" "Ϋ̀") #(8163 #\ΰ "Ϋ́" "Ϋ́") #(8164 #\ῤ "Ρ̓" "Ρ̓") #(8166 #\ῦ "Υ͂" "Υ͂") #(8167 #\ῧ "Ϋ͂" "Ϋ͂") #(8178 #\ῲ "Ὼͅ" "ῺΙ") #(8179 #\ῳ #\ῼ "ΩΙ") #(8180 #\ῴ "Ώͅ" "ΏΙ") #(8182 #\ῶ "Ω͂" "Ω͂") #(8183 #\ῷ "ῼ͂" "Ω͂Ι") #(8188 #\ῳ #\ῼ "ΩΙ") #(64256 #\ff "Ff" "FF") #(64257 #\fi "Fi" "FI") #(64258 #\fl "Fl" "FL") #(64259 #\ffi "Ffi" "FFI") #(64260 #\ffl "Ffl" "FFL") #(64261 #\ſt "St" "ST") #(64262 #\st "St" "ST") #(64275 #\ﬓ "Մն" "ՄՆ") #(64276 #\ﬔ "Մե" "ՄԵ") #(64277 #\ﬕ "Մի" "ՄԻ") #(64278 #\ﬖ "Վն" "ՎՆ") #(64279 #\ﬗ "Մխ" "ՄԽ"))
\ No newline at end of file
diff -urN wiliki-0.5/scheme-unicode/data/ranges.dat wiliki-0.5-case-insensitive/scheme-unicode/data/ranges.dat
--- wiliki-0.5/scheme-unicode/data/ranges.dat   1970-01-01 01:00:00.000000000 +0100
+++ wiliki-0.5-case-insensitive/scheme-unicode/data/ranges.dat  2004-09-13 16:20:08.000000000 +0200
@@ -0,0 +1 @@
+((15877 15934) ((10747 12287) ((8571 8591) ((963 969 42706) ((509 591) ((382 402) ((216 246 43470) ((183 214 43438) ((128 159 9404544) #f #f) #f) ((248 256 43501) #f #f)) ((450 460) ((403 449) #f #f) ((476 503) #f #f))) ((865 912) ((745 767) ((741 745 44000) ((674 710) #f #f) #f) ((829 864) #f #f)) ((931 937 42674) ((913 929 42657) #f #f) ((945 961 42689) #f #f)))) ((8051 8207) ((1072 1077 42961) ((1040 1045 42913) ((1025 1039) ((969 1024) #f #f) #f) ((1046 1071 42920) #f #f)) ((1105 7741) ((1078 1103 42968) #f #f) ((7743 8047) #f #f))) ((8501 8530) ((8451 8462) ((8364 8450) ((8273 8363) #f #f) #f) ((8470 8480) #f #f)) ((8544 8554 44469) ((8533 8543) #f #f) ((8560 8571 44213) #f #f))))) ((9331 9423) ((8869 8894) ((8786 8799) ((8660 8677) ((8644 8657) ((8601 8643) #f #f) #f) ((8681 8703) #f #f)) ((8823 8833) ((8811 8821) #f #f) ((8855 8868) #f #f))) ((9150 9164 42946) ((8966 8977) ((8923 8964) ((8895 8921) #f #f) #f) ((8984 9149) #f #f)) ((9251 9311) ((9166 9250) #f #f) ((9312 9331 44449) #f #f)))) ((9794 9823) ((9633 9648) ((9461 9470 42714) ((9451 9460 44203) ((9424 9449 44225) #f #f) #f) ((9547 9631) #f #f)) ((9711 9727) ((9683 9701) #f #f) ((9758 9791) #f #f))) ((10111 10547) ((10070 10101) ((10003 10069) ((9839 10002) #f #f) #f) ((10102 10111 44193) #f #f)) ((10630 10686) ((10549 10628) #f #f) ((10687 10745) #f #f)))))) ((13812 13828) ((13115 13128) ((12857 12880) ((12543 12783) ((12353 12438 42145) ((12320 12338) ((12296 12305 41426) #f #f) #f) ((12449 12534 42401) #f #f)) ((12794 12799 42745) ((12784 12793 42734) #f #f) ((12799 12848) #f #f))) ((12991 13007) ((12964 12968 44517) ((12895 12963) ((12881 12895 43201) #f #f) #f) ((12977 12991 43216) #f #f)) ((13037 13049) ((13008 13027 44251) #f #f) ((13099 13109) #f #f)))) ((13458 13492) ((13261 13313) ((13199 13211) ((13182 13197) ((13143 13178) #f #f) #f) ((13217 13251) #f #f)) ((13358 13415) ((13318 13355) #f #f) ((13418 13457) #f #f))) ((13678 13733) ((13599 13660) ((13531 13598) ((13511 13530) #f #f) #f) ((13667 13677) #f #f)) ((13765 13785) ((13736 13764) #f #f) ((13786 13811) #f #f))))) ((15118 15129) ((14336 14382) ((14197 14220) ((13977 14030) ((13898 13968) ((13829 13897) #f #f) #f) ((14031 14176) #f #f)) ((14273 14305) ((14221 14272) #f #f) ((14312 14323) #f #f))) ((14703 14957) ((14586 14614) ((14433 14585) ((14400 14427) #f #f) #f) ((14618 14702) #f #f)) ((15063 15081) ((14963 15061) #f #f) ((15082 15117) #f #f)))) ((15398 15554) ((15286 15298) ((15245 15267) ((15223 15238) ((15138 15212) #f #f) #f) ((15268 15285) #f #f)) ((15344 15374) ((15309 15343) #f #f) ((15375 15397) #f #f))) ((15716 15769) ((15633 15645) ((15570 15632) ((15555 15569) #f #f) #f) ((15646 15715) #f #f)) ((15808 15827) ((15770 15807) #f #f) ((15828 15876) #f #f))))))) ((22043 22055) ((17701 17730) ((16883 16902) ((16343 16440) ((16215 16241) ((16003 16019) ((15976 16002) ((15935 15967) #f #f) #f) ((16020 16214) #f #f)) ((16302 16328) ((16247 16301) #f #f) ((16329 16342) #f #f))) ((16719 16738) ((16531 16644) ((16472 16530) ((16441 16471) #f #f) #f) ((16645 16711) #f #f)) ((16820 16830) ((16739 16819) #f #f) ((16831 16869) #f #f)))) ((17416 17430) ((17154 17194) ((17094 17109) ((16996 17093) ((16910 16995) #f #f) #f) ((17117 17153) #f #f)) ((17219 17389) ((17195 17218) #f #f) ((17392 17415) #f #f))) ((17587 17597) ((17530 17552) ((17499 17525) ((17442 17490) #f #f) #f) ((17553 17586) #f #f)) ((17620 17671) ((17598 17619) #f #f) ((17677 17700) #f #f))))) ((18948 18984) ((18095 18187) ((17935 17984) ((17848 17892) ((17821 17847) ((17731 17820) #f #f) #f) ((17898 17934) #f #f)) ((18021 18080) ((17985 18020) #f #f) ((18081 18094) #f #f))) ((18510 18612) ((18429 18453) ((18276 18428) ((18188 18275) #f #f) #f) ((18454 18499) #f #f)) ((18864 18918) ((18613 18863) #f #f) ((18919 18937) #f #f)))) ((19719 19830) ((19432 19478) ((19259 19393) ((19132 19258) ((18985 19131) #f #f) #f) ((19410 19431) #f #f)) ((19652 19664) ((19488 19651) #f #f) ((19665 19718) #f #f))) ((21705 21719) ((20253 20270) ((20083 20093) ((19831 19967) #f #f) #f) ((21380 21394) #f #f)) ((21860 21882) ((21782 21802) #f #f) ((21993 22006) #f #f)))))) ((34427 34438) ((27973 27991) ((25062 25073) ((23700 23710) ((23113 23124) ((22353 22368) ((22096 22106) #f #f) #f) ((23676 23687) #f #f)) ((23997 24008) ((23926 23936) #f #f) ((24575 24588) #f #f))) ((26628 26639) ((25666 25677) ((25594 25605) ((25313 25323) #f #f) #f) ((26313 26325) #f #f)) ((27684 27698) ((27635 27646) #f #f) ((27714 27724) #f #f)))) ((30592 30602) ((29038 29052) ((28485 28496) ((28382 28394) ((28060 28073) #f #f) #f) ((28859 28871) #f #f)) ((29527 29538) ((29211 29223) #f #f) ((30476 30486) #f #f))) ((33478 33488) ((31264 31276) ((31216 31226) ((30801 30812) #f #f) #f) ((32412 32565) #f #f)) ((34012 34022) ((33635 33650) #f #f) ((34369 34380) #f #f))))) ((40058 40164) ((37406 37416) ((36234 36244) ((35742 35894) ((35264 35281) ((34707 34718) #f #f) #f) ((36123 36195) #f #f)) ((36708 36762) ((36587 36599) #f #f) ((37126 37137) #f #f))) ((39115 39130) ((38881 38892) ((38373 38427) ((38017 38262) #f #f) #f) ((39028 39079) #f #f)) ((39394 39404) ((39264 39317) #f #f) ((39531 39591) #f #f)))) ((63856 63951) ((40866 63772) ((40737 40747) ((40478 40564) ((40182 40193) #f #f) #f) ((40823 40844) #f #f)) ((63785 63797) ((63773 63783) #f #f) ((63798 63855) #f #f))) ((65296 65305 41904) ((64106 65092) ((63964 64014) ((63952 63963) #f #f) #f) ((65094 65280) #f #f)) ((65345 65370 41953) ((65313 65338 41921) #f #f) ((65377 65439 36513) #f #f))))))))
diff -urN wiliki-0.5/scheme-unicode/lib/lang/case-map.scm wiliki-0.5-case-insensitive/scheme-unicode/lib/lang/case-map.scm
--- wiliki-0.5/scheme-unicode/lib/lang/case-map.scm     1970-01-01 01:00:00.000000000 +0100
+++ wiliki-0.5-case-insensitive/scheme-unicode/lib/lang/case-map.scm    2004-09-13 16:20:08.000000000 +0200
@@ -0,0 +1,236 @@
+
+(define-module lang.case-map
+  (use srfi-2)
+  (use srfi-13)
+  (use lang.char-set)
+  (use gauche.uvector)
+  (export char-upcase* char-downcase* char-titlecase*
+          upcase downcase titlecase))
+(select-module lang.case-map)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; simple case conversions
+
+(define *char-case-file-1*
+  (format "~A/case-map-1.dat" (gauche-site-library-directory)))
+
+(define *char-case-table-1*
+  (with-error-handler
+      (lambda (err . args)
+        (warn "couldn't load case-map-1.dat")
+        (make-u32vector 0))
+    (lambda ()
+      (and-let* ((stat (sys-stat *char-case-file-1*))
+                 (size (slot-ref stat 'size))
+                 (vec (make-u32vector (quotient size 4))))
+        (call-with-input-file *char-case-file-1*
+          (cut read-block! vec <>))
+        vec))))
+
+(define *char-case-count-1*
+  (- (quotient (u32vector-length *char-case-table-1*) 4) 1))
+
+(define (char-case-index tab i)
+  (if (zero? (u32vector-length tab))
+    0
+    (do ((j 0 (+ j 4)))
+        ((>= (u32vector-ref tab j) i) (quotient j 4)))))
+
+(define *index-2500* (char-case-index *char-case-table-1* #x2500))
+(define *index-FF20* (char-case-index *char-case-table-1* #xFF20))
+
+(define (char-case-search tab i off . opt)
+  (let-optionals* opt ((min 0) (max *char-case-count-1*))
+    (and
+     (>= max min)
+     (cond
+       ((= i (u32vector-ref tab (* min 4)))
+        (u32vector-ref (+ (* min 4) off)))
+       ((= i (u32vector-ref tab (* max 4)))
+        (u32vector-ref (+ (* max 4) off)))
+       (else
+        (let loop ((a min) (b max))
+          (if (= a b)
+            #f
+            (let* ((mid (+ a (quotient (- b a) 2)))
+                   (ind (* mid 4))
+                   (val (u32vector-ref tab ind)))
+              (cond ((< i val) (if (= mid b) #f (loop a mid)))
+                    ((> i val) (if (= mid a) #f (loop mid b)))
+                    (else (u32vector-ref tab (+ ind off))))))))))))
+
+(define (char-map-single-case i off)
+  (cond ((< i 128) #f)
+        ((< i #x2500)
+         (and-let* ((j (char-case-search *char-case-table-1*
+                                         i off 0 *index-2500*)))
+           (ucs->char j)))
+        ((> i #xFF20)
+         (and-let* ((j (char-case-search *char-case-table-1*
+                                         i off *index-FF20*
+                                         *char-case-count-1*)))
+           (ucs->char j)))
+        (else #f)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; special casing
+
+(define *char-case-file-2*
+  (format "~A/case-map-2.dat" (gauche-site-library-directory)))
+
+(define *char-case-table-2*
+  (with-error-handler
+      (lambda (err . args) (warn "couldn't load case-map-2.dat") #())
+    (cut with-input-from-file *char-case-file-2* read)))
+
+(define *char-case-length-2* (vector-length *char-case-table-2*))
+
+(define (char-map-multi-case i off)
+  (let loop ((a 0) (b *char-case-length-2*))
+    (if (= a b)
+      #f
+      (let* ((mid (+ a (quotient (- b a) 2)))
+             (vec (vector-ref *char-case-table-2* mid))
+             (val (vector-ref vec 0)))
+        (cond ((< i val) (if (= mid b) #f (loop a mid)))
+              ((> i val) (if (= mid a) #f (loop mid b)))
+              (else (vector-ref vec off)))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; interface
+
+;; returns a single char
+(define (char-upcase-single c)
+  (let ((i (char->ucs c)))
+    (if (< i 128)
+      (char-upcase c)
+      (or (char-map-single-case i 1) c))))
+(define (char-downcase-single c)
+  (let ((i (char->ucs c)))
+    (if (< i 128)
+      (char-downcase c)
+      (or (char-map-single-case i 2) c))))
+(define (char-titlecase-single c)
+  (let ((i (char->ucs c)))
+    (if (< i 128)
+      (char-upcase c)
+      (or (char-map-single-case i 3) c))))
+
+;; may return a char or string
+(define (char-downcase* c)
+  (or (char-map-multi-case (char->ucs c) 1)
+      (char-downcase-single c)))
+(define (char-titlecase* c)
+  (or (char-map-multi-case (char->ucs c) 2)
+      (char-titlecase-single c)))
+(define (char-upcase* c)
+  (or (char-map-multi-case (char->ucs c) 3)
+      (char-upcase-single c)))
+
+(define (opt? pred opt)
+  (and (pair? opt) (pred (car opt))))
+
+(define (peek-char-is? pred)
+  (let ((c (peek-char)))
+    (and (not (eof-object? c))
+         (if (char-set? pred)
+           (char-set-contains? pred c)
+           (pred c)))))
+
+(define (with-string-io* s thunk)
+  (with-output-to-string
+    (lambda ()
+      (with-input-from-port (if (string? s) (open-input-string s) s)
+        thunk))))
+
+;; takes an optional locale string
+(define (upcase str . opt)
+  (with-string-io* str
+    (lambda ()
+      (let loop ((c (read-char))
+                 (prev #f))
+        (unless (eof-object? c)
+          (display
+           (or
+            (case c
+              ;; Turkish and Azeri
+              ((#\u0069) (if (opt? #/^(tr|az)/i opt) "\u0130" #\I))
+              (else #f))
+            (char-upcase* c)))
+          (loop (read-char) c))))))
+
+(define (downcase str . opt)
+  (with-string-io* str
+    (lambda ()
+      (let loop ((c (read-char))
+                 (prev #f))
+        (unless (eof-object? c)
+          (display
+           (or
+            (case c
+              ;; Final Sigma
+              ((#\u03A3) (if (not (peek-char-is? char-set:greek)) #\u03C2 #\u03C3))
+              ;; Lithuanian (XXXX add More_Above logic)
+              ((#\u00CC) (and (opt? #/^lt/i opt) "\u0069\u0307\u0300"))
+              ((#\u00CD) (and (opt? #/^lt/i opt) "\u0069\u0307\u0301"))
+              ((#\u0128) (and (opt? #/^lt/i opt) "\u0069\u0307\u0303"))
+              ;; Turkish and Azeri
+              ((#\u0130) (if (opt? #/^(tr|az)/i opt) #\u0069 "\u0069\u0307"))
+              ((#\u0307) (and (opt? #/^(tr|az)/i opt) ""))
+              ((#\u0049) (and (opt? #/^(tr|az)/i opt) #\u0131))
+              (else #f))
+            (char-downcase* c)))
+          (loop (read-char) c))))))
+
+;; Note: there are some characters which define case mappings (such as
+;; the circled latin letters), but which unicode doesn't consider
+;; alphabetic.  So the faster and more natural test for the alphabetic
+;; property doesn't work, and we somewhat clumsily test whether or not
+;; the characters are either upper or lowercase.
+;;
+;; An alternative approach is to explicitly compare the script property
+;; of successive characters and start a new word when that property
+;; changes.  So a consecutive string of Greek letters followed
+;; immediately by Latin characters would result in the first Greek
+;; letter and first Latin character being uppercased, as opposed to just
+;; the first Greek letter as we do now.
+(define (has-case? c)
+  ;;(char-set-contains? char-set:alphabetic c)
+  (or (char-set-contains? char-set:uppercase c)
+      (char-set-contains? char-set:lowercase c)))
+
+(define (titlecase str . opt)
+  (with-string-io* str
+    (lambda ()
+      (let loop ((c (read-char))
+                 (prev #f)
+                 (in-word? #f))
+        (unless (eof-object? c)
+          (let ((letter? (has-case? c)))
+            (display
+             (if (and letter? (not in-word?))
+               ;; start of word, titlecase
+               (or
+                (case c
+                  ;; Turkish and Azeri
+                  ((#\u0069) (if (opt? #/^(tr|az)/i opt) "\u0130" #\I))
+                  (else #f))
+                (char-titlecase* c))
+               ;; non-word/in-word, lowercase
+               (or
+                (case c
+                  ;; Final Sigma
+                  ((#\u03A3) (if (not (peek-char-is? char-set:greek)) #\u03C2 #\u03C3))
+                  ;; Lithuanian (XXXX add More_Above logic)
+                  ((#\u00CC) (and (opt? #/^lt/i opt) "\u0069\u0307\u0300"))
+                  ((#\u00CD) (and (opt? #/^lt/i opt) "\u0069\u0307\u0301"))
+                  ((#\u0128) (and (opt? #/^lt/i opt) "\u0069\u0307\u0303"))
+                  ;; Turkish and Azeri
+                  ((#\u0130) (if (opt? #/^(tr|az)/i opt) #\u0069 "\u0069\u0307"))
+                  ((#\u0307) (and (opt? #/^(tr|az)/i opt) ""))
+                  ((#\u0049) (and (opt? #/^(tr|az)/i opt) #\u0131))
+                  (else #f))
+                (char-downcase* c))))
+            (loop (read-char) c letter?)))))))
+
+(provide "lang/case-map")
diff -urN wiliki-0.5/scheme-unicode/lib/lang/char-set.scm wiliki-0.5-case-insensitive/scheme-unicode/lib/lang/char-set.scm
--- wiliki-0.5/scheme-unicode/lib/lang/char-set.scm     1970-01-01 01:00:00.000000000 +0100
+++ wiliki-0.5-case-insensitive/scheme-unicode/lib/lang/char-set.scm    2004-09-13 16:20:08.000000000 +0200
@@ -0,0 +1,5595 @@
+;; auto-generated on Wed Dec 24 18:03:33 2003
+
+(define-module lang.char-set
+  (use srfi-14)
+  (export-all))
+(select-module lang.char-set)
+
+(provide "lang/char-set")
+
+(define char-set:arabic
+  (char-set-union
+   (ucs-range->char-set #x621 #x63B)
+   (ucs-range->char-set #x641 #x64B)
+   (ucs-range->char-set #x66E #x670)
+   (ucs-range->char-set #x671 #x6D4)
+   (char-set (ucs->char #x6D5))
+   (ucs-range->char-set #x6E5 #x6E7)
+   (ucs-range->char-set #x6EE #x6F0)
+   (ucs-range->char-set #x6FA #x6FD)
+   (char-set (ucs->char #x6FF))
+   (ucs-range->char-set #xFB50 #xFBB2)
+   (ucs-range->char-set #xFBD3 #xFD3E)
+   (ucs-range->char-set #xFD50 #xFD90)
+   (ucs-range->char-set #xFD92 #xFDC8)
+   (ucs-range->char-set #xFDF0 #xFDFC)
+   (ucs-range->char-set #xFE70 #xFE75)
+   (ucs-range->char-set #xFE76 #xFEFD)
+   ))
+
+(define char-set:armenian
+  (char-set-union
+   (ucs-range->char-set #x531 #x557)
+   (char-set (ucs->char #x559))
+   (ucs-range->char-set #x561 #x588)
+   (ucs-range->char-set #xFB13 #xFB18)
+   ))
+
+(define char-set:bengali
+  (char-set-union
+   (char-set (ucs->char #x981))
+   (ucs-range->char-set #x982 #x984)
+   (ucs-range->char-set #x985 #x98D)
+   (ucs-range->char-set #x98F #x991)
+   (ucs-range->char-set #x993 #x9A9)
+   (ucs-range->char-set #x9AA #x9B1)
+   (char-set (ucs->char #x9B2))
+   (ucs-range->char-set #x9B6 #x9BA)
+   (char-set (ucs->char #x9BC))
+   (char-set (ucs->char #x9BD))
+   (ucs-range->char-set #x9BE #x9C1)
+   (ucs-range->char-set #x9C1 #x9C5)
+   (ucs-range->char-set #x9C7 #x9C9)
+   (ucs-range->char-set #x9CB #x9CD)
+   (char-set (ucs->char #x9CD))
+   (char-set (ucs->char #x9D7))
+   (ucs-range->char-set #x9DC #x9DE)
+   (ucs-range->char-set #x9DF #x9E2)
+   (ucs-range->char-set #x9E2 #x9E4)
+   (ucs-range->char-set #x9E6 #x9F0)
+   (ucs-range->char-set #x9F0 #x9F2)
+   ))
+
+(define char-set:bopomofo
+  (char-set-union
+   (ucs-range->char-set #x3105 #x312D)
+   (ucs-range->char-set #x31A0 #x31B8)
+   ))
+
+(define char-set:braille
+  (char-set-union
+   (ucs-range->char-set #x2800 #x2900)
+   ))
+
+(define char-set:buhid
+  (char-set-union
+   (ucs-range->char-set #x1740 #x1752)
+   (ucs-range->char-set #x1752 #x1754)
+   ))
+
+(define char-set:canadian-aboriginal
+  (char-set-union
+   (ucs-range->char-set #x1401 #x166D)
+   (ucs-range->char-set #x166F #x1677)
+   ))
+
+(define char-set:cherokee
+  (char-set-union
+   (ucs-range->char-set #x13A0 #x13F5)
+   ))
+
+(define char-set:cypriot
+  (char-set-union
+   (ucs-range->char-set #x10800 #x10806)
+   (char-set (ucs->char #x10808))
+   (ucs-range->char-set #x1080A #x10836)
+   (ucs-range->char-set #x10837 #x10839)
+   (char-set (ucs->char #x1083C))
+   (char-set (ucs->char #x1083F))
+   ))
+
+(define char-set:cyrillic
+  (char-set-union
+   (ucs-range->char-set #x400 #x482)
+   (ucs-range->char-set #x483 #x487)
+   (ucs-range->char-set #x48A #x4CF)
+   (ucs-range->char-set #x4D0 #x4F6)
+   (ucs-range->char-set #x4F8 #x4FA)
+   (ucs-range->char-set #x500 #x510)
+   (char-set (ucs->char #x1D2B))
+   ))
+
+(define char-set:deseret
+  (char-set-union
+   (ucs-range->char-set #x10400 #x10450)
+   ))
+
+(define char-set:devanagari
+  (char-set-union
+   (ucs-range->char-set #x901 #x903)
+   (char-set (ucs->char #x903))
+   (ucs-range->char-set #x904 #x93A)
+   (char-set (ucs->char #x93C))
+   (char-set (ucs->char #x93D))
+   (ucs-range->char-set #x93E #x941)
+   (ucs-range->char-set #x941 #x949)
+   (ucs-range->char-set #x949 #x94D)
+   (char-set (ucs->char #x94D))
+   (char-set (ucs->char #x950))
+   (ucs-range->char-set #x951 #x955)
+   (ucs-range->char-set #x958 #x962)
+   (ucs-range->char-set #x962 #x964)
+   (ucs-range->char-set #x966 #x970)
+   ))
+
+(define char-set:ethiopic
+  (char-set-union
+   (ucs-range->char-set #x1200 #x1207)
+   (ucs-range->char-set #x1208 #x1247)
+   (char-set (ucs->char #x1248))
+   (ucs-range->char-set #x124A #x124E)
+   (ucs-range->char-set #x1250 #x1257)
+   (char-set (ucs->char #x1258))
+   (ucs-range->char-set #x125A #x125E)
+   (ucs-range->char-set #x1260 #x1287)
+   (char-set (ucs->char #x1288))
+   (ucs-range->char-set #x128A #x128E)
+   (ucs-range->char-set #x1290 #x12AF)
+   (char-set (ucs->char #x12B0))
+   (ucs-range->char-set #x12B2 #x12B6)
+   (ucs-range->char-set #x12B8 #x12BF)
+   (char-set (ucs->char #x12C0))
+   (ucs-range->char-set #x12C2 #x12C6)
+   (ucs-range->char-set #x12C8 #x12CF)
+   (ucs-range->char-set #x12D0 #x12D7)
+   (ucs-range->char-set #x12D8 #x12EF)
+   (ucs-range->char-set #x12F0 #x130F)
+   (char-set (ucs->char #x1310))
+   (ucs-range->char-set #x1312 #x1316)
+   (ucs-range->char-set #x1318 #x131F)
+   (ucs-range->char-set #x1320 #x1347)
+   (ucs-range->char-set #x1348 #x135B)
+   (ucs-range->char-set #x1369 #x1372)
+   (ucs-range->char-set #x1372 #x137D)
+   ))
+
+(define char-set:georgian
+  (char-set-union
+   (ucs-range->char-set #x10A0 #x10C6)
+   (ucs-range->char-set #x10D0 #x10F9)
+   ))
+
+(define char-set:gothic
+  (char-set-union
+   (ucs-range->char-set #x10330 #x1034A)
+   (char-set (ucs->char #x1034A))
+   ))
+
+(define char-set:greek
+  (char-set-union
+   (char-set (ucs->char #xB5))
+   (char-set (ucs->char #x37A))
+   (char-set (ucs->char #x386))
+   (ucs-range->char-set #x388 #x38B)
+   (char-set (ucs->char #x38C))
+   (ucs-range->char-set #x38E #x3A2)
+   (ucs-range->char-set #x3A3 #x3CF)
+   (ucs-range->char-set #x3D0 #x3F6)
+   (ucs-range->char-set #x3F7 #x3FC)
+   (ucs-range->char-set #x1D26 #x1D2B)
+   (ucs-range->char-set #x1D5D #x1D62)
+   (ucs-range->char-set #x1D66 #x1D6B)
+   (ucs-range->char-set #x1F00 #x1F16)
+   (ucs-range->char-set #x1F18 #x1F1E)
+   (ucs-range->char-set #x1F20 #x1F46)
+   (ucs-range->char-set #x1F48 #x1F4E)
+   (ucs-range->char-set #x1F50 #x1F58)
+   (char-set (ucs->char #x1F59))
+   (char-set (ucs->char #x1F5B))
+   (char-set (ucs->char #x1F5D))
+   (ucs-range->char-set #x1F5F #x1F7E)
+   (ucs-range->char-set #x1F80 #x1FB5)
+   (ucs-range->char-set #x1FB6 #x1FBD)
+   (char-set (ucs->char #x1FBE))
+   (ucs-range->char-set #x1FC2 #x1FC5)
+   (ucs-range->char-set #x1FC6 #x1FCD)
+   (ucs-range->char-set #x1FD0 #x1FD4)
+   (ucs-range->char-set #x1FD6 #x1FDC)
+   (ucs-range->char-set #x1FE0 #x1FED)
+   (ucs-range->char-set #x1FF2 #x1FF5)
+   (ucs-range->char-set #x1FF6 #x1FFD)
+   (char-set (ucs->char #x2126))
+   ))
+
+(define char-set:gujarati
+  (char-set-union
+   (ucs-range->char-set #xA81 #xA83)
+   (char-set (ucs->char #xA83))
+   (ucs-range->char-set #xA85 #xA8E)
+   (ucs-range->char-set #xA8F #xA92)
+   (ucs-range->char-set #xA93 #xAA9)
+   (ucs-range->char-set #xAAA #xAB1)
+   (ucs-range->char-set #xAB2 #xAB4)
+   (ucs-range->char-set #xAB5 #xABA)
+   (char-set (ucs->char #xABC))
+   (char-set (ucs->char #xABD))
+   (ucs-range->char-set #xABE #xAC1)
+   (ucs-range->char-set #xAC1 #xAC6)
+   (ucs-range->char-set #xAC7 #xAC9)
+   (char-set (ucs->char #xAC9))
+   (ucs-range->char-set #xACB #xACD)
+   (char-set (ucs->char #xACD))
+   (char-set (ucs->char #xAD0))
+   (ucs-range->char-set #xAE0 #xAE2)
+   (ucs-range->char-set #xAE2 #xAE4)
+   (ucs-range->char-set #xAE6 #xAF0)
+   ))
+
+(define char-set:gurmukhi
+  (char-set-union
+   (char-set (ucs->char #xA02))
+   (char-set (ucs->char #xA03))
+   (ucs-range->char-set #xA05 #xA0B)
+   (ucs-range->char-set #xA0F #xA11)
+   (ucs-range->char-set #xA13 #xA29)
+   (ucs-range->char-set #xA2A #xA31)
+   (ucs-range->char-set #xA32 #xA34)
+   (ucs-range->char-set #xA35 #xA37)
+   (ucs-range->char-set #xA38 #xA3A)
+   (char-set (ucs->char #xA3C))
+   (ucs-range->char-set #xA3E #xA41)
+   (ucs-range->char-set #xA41 #xA43)
+   (ucs-range->char-set #xA47 #xA49)
+   (ucs-range->char-set #xA4B #xA4E)
+   (ucs-range->char-set #xA59 #xA5D)
+   (char-set (ucs->char #xA5E))
+   (ucs-range->char-set #xA66 #xA70)
+   (ucs-range->char-set #xA70 #xA72)
+   (ucs-range->char-set #xA72 #xA75)
+   ))
+
+(define char-set:han
+  (char-set-union
+   (ucs-range->char-set #x2E80 #x2E9A)
+   (ucs-range->char-set #x2E9B #x2EF4)
+   (ucs-range->char-set #x2F00 #x2FD6)
+   (char-set (ucs->char #x3005))
+   (char-set (ucs->char #x3007))
+   (ucs-range->char-set #x3021 #x302A)
+   (ucs-range->char-set #x3038 #x303B)
+   (char-set (ucs->char #x303B))
+   (ucs-range->char-set #x3400 #x4DB6)
+   (ucs-range->char-set #x4E00 #x9FA6)
+   (ucs-range->char-set #xF900 #xFA2E)
+   (ucs-range->char-set #xFA30 #xFA6B)
+   (ucs-range->char-set #x20000 #x2A6D7)
+   (ucs-range->char-set #x2F800 #x2FA1E)
+   ))
+
+(define char-set:hangul
+  (char-set-union
+   (ucs-range->char-set #x1100 #x115A)
+   (ucs-range->char-set #x115F #x11A3)
+   (ucs-range->char-set #x11A8 #x11FA)
+   (ucs-range->char-set #x3131 #x318F)
+   (ucs-range->char-set #xAC00 #xD7A4)
+   (ucs-range->char-set #xFFA0 #xFFBF)
+   (ucs-range->char-set #xFFC2 #xFFC8)
+   (ucs-range->char-set #xFFCA #xFFD0)
+   (ucs-range->char-set #xFFD2 #xFFD8)
+   (ucs-range->char-set #xFFDA #xFFDD)
+   ))
+
+(define char-set:hanunoo
+  (char-set-union
+   (ucs-range->char-set #x1720 #x1732)
+   (ucs-range->char-set #x1732 #x1735)
+   ))
+
+(define char-set:hebrew
+  (char-set-union
+   (ucs-range->char-set #x5D0 #x5EB)
+   (ucs-range->char-set #x5F0 #x5F3)
+   (char-set (ucs->char #xFB1D))
+   (ucs-range->char-set #xFB1F #xFB29)
+   (ucs-range->char-set #xFB2A #xFB37)
+   (ucs-range->char-set #xFB38 #xFB3D)
+   (char-set (ucs->char #xFB3E))
+   (ucs-range->char-set #xFB40 #xFB42)
+   (ucs-range->char-set #xFB43 #xFB45)
+   (ucs-range->char-set #xFB46 #xFB50)
+   ))
+
+(define char-set:hiragana
+  (char-set-union
+   (ucs-range->char-set #x3041 #x3097)
+   (ucs-range->char-set #x309D #x309F)
+   (char-set (ucs->char #x309F))
+   ))
+
+(define char-set:inherited
+  (char-set-union
+   (ucs-range->char-set #x300 #x350)
+   (ucs-range->char-set #x360 #x370)
+   (ucs-range->char-set #x488 #x48A)
+   (ucs-range->char-set #x591 #x5A2)
+   (ucs-range->char-set #x5A3 #x5BA)
+   (ucs-range->char-set #x5BB #x5BE)
+   (char-set (ucs->char #x5BF))
+   (ucs-range->char-set #x5C1 #x5C3)
+   (char-set (ucs->char #x5C4))
+   (ucs-range->char-set #x64B #x656)
+   (char-set (ucs->char #x670))
+   (ucs-range->char-set #x6D6 #x6DD)
+   (char-set (ucs->char #x6DD))
+   (char-set (ucs->char #x6DE))
+   (ucs-range->char-set #x6DF #x6E5)
+   (ucs-range->char-set #x6E7 #x6E9)
+   (ucs-range->char-set #x6EA #x6EE)
+   (ucs-range->char-set #x180B #x180E)
+   (ucs-range->char-set #x20D0 #x20DD)
+   (ucs-range->char-set #x20DD #x20E1)
+   (char-set (ucs->char #x20E1))
+   (ucs-range->char-set #x20E2 #x20E5)
+   (ucs-range->char-set #x20E5 #x20EB)
+   (ucs-range->char-set #x302A #x3030)
+   (ucs-range->char-set #x3099 #x309B)
+   (char-set (ucs->char #xFB1E))
+   (ucs-range->char-set #xFE00 #xFE10)
+   (ucs-range->char-set #xFE20 #xFE24)
+   (ucs-range->char-set #x1D167 #x1D16A)
+   (ucs-range->char-set #x1D17B #x1D183)
+   (ucs-range->char-set #x1D185 #x1D18C)
+   (ucs-range->char-set #x1D1AA #x1D1AE)
+   ))
+
+(define char-set:kannada
+  (char-set-union
+   (ucs-range->char-set #xC82 #xC84)
+   (ucs-range->char-set #xC85 #xC8D)
+   (ucs-range->char-set #xC8E #xC91)
+   (ucs-range->char-set #xC92 #xCA9)
+   (ucs-range->char-set #xCAA #xCB4)
+   (ucs-range->char-set #xCB5 #xCBA)
+   (char-set (ucs->char #xCBD))
+   (char-set (ucs->char #xCBE))
+   (char-set (ucs->char #xCBF))
+   (ucs-range->char-set #xCC0 #xCC5)
+   (char-set (ucs->char #xCC6))
+   (ucs-range->char-set #xCC7 #xCC9)
+   (ucs-range->char-set #xCCA #xCCC)
+   (ucs-range->char-set #xCCC #xCCE)
+   (ucs-range->char-set #xCD5 #xCD7)
+   (char-set (ucs->char #xCDE))
+   (ucs-range->char-set #xCE0 #xCE2)
+   (ucs-range->char-set #xCE6 #xCF0)
+   ))
+
+(define char-set:katakana
+  (char-set-union
+   (ucs-range->char-set #x30A1 #x30FB)
+   (ucs-range->char-set #x30FD #x30FF)
+   (char-set (ucs->char #x30FF))
+   (ucs-range->char-set #x31F0 #x3200)
+   (ucs-range->char-set #xFF66 #xFF70)
+   (ucs-range->char-set #xFF71 #xFF9E)
+   ))
+
+(define char-set:khmer
+  (char-set-union
+   (ucs-range->char-set #x1780 #x17B4)
+   (ucs-range->char-set #x17B4 #x17B6)
+   (char-set (ucs->char #x17B6))
+   (ucs-range->char-set #x17B7 #x17BE)
+   (ucs-range->char-set #x17BE #x17C6)
+   (char-set (ucs->char #x17C6))
+   (ucs-range->char-set #x17C7 #x17C9)
+   (ucs-range->char-set #x17C9 #x17D4)
+   (ucs-range->char-set #x17E0 #x17EA)
+   ))
+
+(define char-set:lao
+  (char-set-union
+   (ucs-range->char-set #xE81 #xE83)
+   (char-set (ucs->char #xE84))
+   (ucs-range->char-set #xE87 #xE89)
+   (char-set (ucs->char #xE8A))
+   (char-set (ucs->char #xE8D))
+   (ucs-range->char-set #xE94 #xE98)
+   (ucs-range->char-set #xE99 #xEA0)
+   (ucs-range->char-set #xEA1 #xEA4)
+   (char-set (ucs->char #xEA5))
+   (char-set (ucs->char #xEA7))
+   (ucs-range->char-set #xEAA #xEAC)
+   (ucs-range->char-set #xEAD #xEB1)
+   (char-set (ucs->char #xEB1))
+   (ucs-range->char-set #xEB2 #xEB4)
+   (ucs-range->char-set #xEB4 #xEBA)
+   (ucs-range->char-set #xEBB #xEBD)
+   (char-set (ucs->char #xEBD))
+   (ucs-range->char-set #xEC0 #xEC5)
+   (char-set (ucs->char #xEC6))
+   (ucs-range->char-set #xEC8 #xECE)
+   (ucs-range->char-set #xED0 #xEDA)
+   (ucs-range->char-set #xEDC #xEDE)
+   ))
+
+(define char-set:latin
+  (char-set-union
+   (ucs-range->char-set #x41 #x5B)
+   (ucs-range->char-set #x61 #x7B)
+   (char-set (ucs->char #xAA))
+   (char-set (ucs->char #xBA))
+   (ucs-range->char-set #xC0 #xD7)
+   (ucs-range->char-set #xD8 #xF7)
+   (ucs-range->char-set #xF8 #x1BB)
+   (char-set (ucs->char #x1BB))
+   (ucs-range->char-set #x1BC #x1C0)
+   (ucs-range->char-set #x1C0 #x1C4)
+   (ucs-range->char-set #x1C4 #x237)
+   (ucs-range->char-set #x250 #x2B0)
+   (ucs-range->char-set #x2B0 #x2B9)
+   (ucs-range->char-set #x2E0 #x2E5)
+   (ucs-range->char-set #x1D00 #x1D26)
+   (ucs-range->char-set #x1D2C #x1D5D)
+   (ucs-range->char-set #x1D62 #x1D66)
+   (char-set (ucs->char #x1D6B))
+   (ucs-range->char-set #x1E00 #x1E9C)
+   (ucs-range->char-set #x1EA0 #x1EFA)
+   (char-set (ucs->char #x2071))
+   (char-set (ucs->char #x207F))
+   (ucs-range->char-set #x212A #x212C)
+   (ucs-range->char-set #xFB00 #xFB07)
+   (ucs-range->char-set #xFF21 #xFF3B)
+   (ucs-range->char-set #xFF41 #xFF5B)
+   ))
+
+(define char-set:limbu
+  (char-set-union
+   (ucs-range->char-set #x1900 #x191D)
+   (ucs-range->char-set #x1920 #x1923)
+   (ucs-range->char-set #x1923 #x1927)
+   (ucs-range->char-set #x1927 #x1929)
+   (ucs-range->char-set #x1929 #x192C)
+   (ucs-range->char-set #x1930 #x1932)
+   (char-set (ucs->char #x1932))
+   (ucs-range->char-set #x1933 #x1939)
+   (ucs-range->char-set #x1939 #x193C)
+   (ucs-range->char-set #x1946 #x1950)
+   ))
+
+(define char-set:linear-b
+  (char-set-union
+   (ucs-range->char-set #x10000 #x1000C)
+   (ucs-range->char-set #x1000D #x10027)
+   (ucs-range->char-set #x10028 #x1003B)
+   (ucs-range->char-set #x1003C #x1003E)
+   (ucs-range->char-set #x1003F #x1004E)
+   (ucs-range->char-set #x10050 #x1005E)
+   (ucs-range->char-set #x10080 #x100FB)
+   ))
+
+(define char-set:malayalam
+  (char-set-union
+   (ucs-range->char-set #xD02 #xD04)
+   (ucs-range->char-set #xD05 #xD0D)
+   (ucs-range->char-set #xD0E #xD11)
+   (ucs-range->char-set #xD12 #xD29)
+   (ucs-range->char-set #xD2A #xD3A)
+   (ucs-range->char-set #xD3E #xD41)
+   (ucs-range->char-set #xD41 #xD44)
+   (ucs-range->char-set #xD46 #xD49)
+   (ucs-range->char-set #xD4A #xD4D)
+   (char-set (ucs->char #xD4D))
+   (char-set (ucs->char #xD57))
+   (ucs-range->char-set #xD60 #xD62)
+   (ucs-range->char-set #xD66 #xD70)
+   ))
+
+(define char-set:mongolian
+  (char-set-union
+   (ucs-range->char-set #x1810 #x181A)
+   (ucs-range->char-set #x1820 #x1843)
+   (char-set (ucs->char #x1843))
+   (ucs-range->char-set #x1844 #x1878)
+   (ucs-range->char-set #x1880 #x18A9)
+   (char-set (ucs->char #x18A9))
+   ))
+
+(define char-set:myanmar
+  (char-set-union
+   (ucs-range->char-set #x1000 #x1022)
+   (ucs-range->char-set #x1023 #x1028)
+   (ucs-range->char-set #x1029 #x102B)
+   (char-set (ucs->char #x102C))
+   (ucs-range->char-set #x102D #x1031)
+   (char-set (ucs->char #x1031))
+   (char-set (ucs->char #x1032))
+   (ucs-range->char-set #x1036 #x1038)
+   (char-set (ucs->char #x1038))
+   (char-set (ucs->char #x1039))
+   (ucs-range->char-set #x1040 #x104A)
+   (ucs-range->char-set #x1050 #x1056)
+   (ucs-range->char-set #x1056 #x1058)
+   (ucs-range->char-set #x1058 #x105A)
+   ))
+
+(define char-set:ogham
+  (char-set-union
+   (ucs-range->char-set #x1681 #x169B)
+   ))
+
+(define char-set:old-italic
+  (char-set-union
+   (ucs-range->char-set #x10300 #x1031F)
+   ))
+
+(define char-set:oriya
+  (char-set-union
+   (char-set (ucs->char #xB01))
+   (ucs-range->char-set #xB02 #xB04)
+   (ucs-range->char-set #xB05 #xB0D)
+   (ucs-range->char-set #xB0F #xB11)
+   (ucs-range->char-set #xB13 #xB29)
+   (ucs-range->char-set #xB2A #xB31)
+   (ucs-range->char-set #xB32 #xB34)
+   (ucs-range->char-set #xB35 #xB3A)
+   (char-set (ucs->char #xB3C))
+   (char-set (ucs->char #xB3D))
+   (char-set (ucs->char #xB3E))
+   (char-set (ucs->char #xB3F))
+   (char-set (ucs->char #xB40))
+   (ucs-range->char-set #xB41 #xB44)
+   (ucs-range->char-set #xB47 #xB49)
+   (ucs-range->char-set #xB4B #xB4D)
+   (char-set (ucs->char #xB4D))
+   (char-set (ucs->char #xB56))
+   (char-set (ucs->char #xB57))
+   (ucs-range->char-set #xB5C #xB5E)
+   (ucs-range->char-set #xB5F #xB62)
+   (ucs-range->char-set #xB66 #xB70)
+   (char-set (ucs->char #xB71))
+   ))
+
+(define char-set:osmanya
+  (char-set-union
+   (ucs-range->char-set #x10480 #x1049E)
+   (ucs-range->char-set #x104A0 #x104AA)
+   ))
+
+(define char-set:runic
+  (char-set-union
+   (ucs-range->char-set #x16A0 #x16EB)
+   (ucs-range->char-set #x16EE #x16F1)
+   ))
+
+(define char-set:shavian
+  (char-set-union
+   (ucs-range->char-set #x10450 #x10480)
+   ))
+
+(define char-set:sinhala
+  (char-set-union
+   (ucs-range->char-set #xD82 #xD84)
+   (ucs-range->char-set #xD85 #xD97)
+   (ucs-range->char-set #xD9A #xDB2)
+   (ucs-range->char-set #xDB3 #xDBC)
+   (char-set (ucs->char #xDBD))
+   (ucs-range->char-set #xDC0 #xDC7)
+   (char-set (ucs->char #xDCA))
+   (ucs-range->char-set #xDCF #xDD2)
+   (ucs-range->char-set #xDD2 #xDD5)
+   (char-set (ucs->char #xDD6))
+   (ucs-range->char-set #xDD8 #xDE0)
+   (ucs-range->char-set #xDF2 #xDF4)
+   ))
+
+(define char-set:syriac
+  (char-set-union
+   (char-set (ucs->char #x710))
+   (char-set (ucs->char #x711))
+   (ucs-range->char-set #x712 #x730)
+   (ucs-range->char-set #x730 #x74B)
+   (ucs-range->char-set #x74D #x750)
+   ))
+
+(define char-set:tagalog
+  (char-set-union
+   (ucs-range->char-set #x1700 #x170D)
+   (ucs-range->char-set #x170E #x1712)
+   (ucs-range->char-set #x1712 #x1715)
+   ))
+
+(define char-set:tagbanwa
+  (char-set-union
+   (ucs-range->char-set #x1760 #x176D)
+   (ucs-range->char-set #x176E #x1771)
+   (ucs-range->char-set #x1772 #x1774)
+   ))
+
+(define char-set:tai-le
+  (char-set-union
+   (ucs-range->char-set #x1950 #x196E)
+   (ucs-range->char-set #x1970 #x1975)
+   ))
+
+(define char-set:tamil
+  (char-set-union
+   (char-set (ucs->char #xB82))
+   (char-set (ucs->char #xB83))
+   (ucs-range->char-set #xB85 #xB8B)
+   (ucs-range->char-set #xB8E #xB91)
+   (ucs-range->char-set #xB92 #xB96)
+   (ucs-range->char-set #xB99 #xB9B)
+   (char-set (ucs->char #xB9C))
+   (ucs-range->char-set #xB9E #xBA0)
+   (ucs-range->char-set #xBA3 #xBA5)
+   (ucs-range->char-set #xBA8 #xBAB)
+   (ucs-range->char-set #xBAE #xBB6)
+   (ucs-range->char-set #xBB7 #xBBA)
+   (ucs-range->char-set #xBBE #xBC0)
+   (char-set (ucs->char #xBC0))
+   (ucs-range->char-set #xBC1 #xBC3)
+   (ucs-range->char-set #xBC6 #xBC9)
+   (ucs-range->char-set #xBCA #xBCD)
+   (char-set (ucs->char #xBCD))
+   (char-set (ucs->char #xBD7))
+   (ucs-range->char-set #xBE7 #xBF0)
+   (ucs-range->char-set #xBF0 #xBF3)
+   ))
+
+(define char-set:telugu
+  (char-set-union
+   (ucs-range->char-set #xC01 #xC04)
+   (ucs-range->char-set #xC05 #xC0D)
+   (ucs-range->char-set #xC0E #xC11)
+   (ucs-range->char-set #xC12 #xC29)
+   (ucs-range->char-set #xC2A #xC34)
+   (ucs-range->char-set #xC35 #xC3A)
+   (ucs-range->char-set #xC3E #xC41)
+   (ucs-range->char-set #xC41 #xC45)
+   (ucs-range->char-set #xC46 #xC49)
+   (ucs-range->char-set #xC4A #xC4E)
+   (ucs-range->char-set #xC55 #xC57)
+   (ucs-range->char-set #xC60 #xC62)
+   (ucs-range->char-set #xC66 #xC70)
+   ))
+
+(define char-set:thaana
+  (char-set-union
+   (ucs-range->char-set #x780 #x7A6)
+   (ucs-range->char-set #x7A6 #x7B1)
+   (char-set (ucs->char #x7B1))
+   ))
+
+(define char-set:thai
+  (char-set-union
+   (ucs-range->char-set #xE01 #xE31)
+   (char-set (ucs->char #xE31))
+   (ucs-range->char-set #xE32 #xE34)
+   (ucs-range->char-set #xE34 #xE3B)
+   (ucs-range->char-set #xE40 #xE46)
+   (char-set (ucs->char #xE46))
+   (ucs-range->char-set #xE47 #xE4F)
+   (ucs-range->char-set #xE50 #xE5A)
+   ))
+
+(define char-set:tibetan
+  (char-set-union
+   (char-set (ucs->char #xF00))
+   (ucs-range->char-set #xF18 #xF1A)
+   (ucs-range->char-set #xF20 #xF2A)
+   (ucs-range->char-set #xF2A #xF34)
+   (char-set (ucs->char #xF35))
+   (char-set (ucs->char #xF37))
+   (char-set (ucs->char #xF39))
+   (ucs-range->char-set #xF40 #xF48)
+   (ucs-range->char-set #xF49 #xF6B)
+   (ucs-range->char-set #xF71 #xF7F)
+   (char-set (ucs->char #xF7F))
+   (ucs-range->char-set #xF80 #xF85)
+   (ucs-range->char-set #xF86 #xF88)
+   (ucs-range->char-set #xF88 #xF8C)
+   (ucs-range->char-set #xF90 #xF98)
+   (ucs-range->char-set #xF99 #xFBD)
+   (char-set (ucs->char #xFC6))
+   ))
+
+(define char-set:ugaritic
+  (char-set-union
+   (ucs-range->char-set #x10380 #x1039E)
+   ))
+
+(define char-set:yi
+  (char-set-union
+   (ucs-range->char-set #xA000 #xA48D)
+   (ucs-range->char-set #xA490 #xA4C7)
+   ))
+
+(define char-set:common
+  (char-set-complement
+   (char-set-union
+    char-set:arabic
+    char-set:armenian
+    char-set:bengali
+    char-set:bopomofo
+    char-set:braille
+    char-set:buhid
+    char-set:canadian-aboriginal
+    char-set:cherokee
+    char-set:cypriot
+    char-set:cyrillic
+    char-set:deseret
+    char-set:devanagari
+    char-set:ethiopic
+    char-set:georgian
+    char-set:gothic
+    char-set:greek
+    char-set:gujarati
+    char-set:gurmukhi
+    char-set:han
+    char-set:hangul
+    char-set:hanunoo
+    char-set:hebrew
+    char-set:hiragana
+    char-set:inherited
+    char-set:kannada
+    char-set:katakana
+    char-set:khmer
+    char-set:lao
+    char-set:latin
+    char-set:limbu
+    char-set:linear-b
+    char-set:malayalam
+    char-set:mongolian
+    char-set:myanmar
+    char-set:ogham
+    char-set:old-italic
+    char-set:oriya
+    char-set:osmanya
+    char-set:runic
+    char-set:shavian
+    char-set:sinhala
+    char-set:syriac
+    char-set:tagalog
+    char-set:tagbanwa
+    char-set:tai-le
+    char-set:tamil
+    char-set:telugu
+    char-set:thaana
+    char-set:thai
+    char-set:tibetan
+    char-set:ugaritic
+    char-set:yi
+    )))
+
+(define char-set:ascii-hex-digit
+  (char-set-union
+   (ucs-range->char-set #x30 #x3A)
+   (ucs-range->char-set #x41 #x47)
+   (ucs-range->char-set #x61 #x67)
+   ))
+
+(define char-set:bidi-control
+  (char-set-union
+   (ucs-range->char-set #x200E #x2010)
+   (ucs-range->char-set #x202A #x202F)
+   ))
+
+(define char-set:dash
+  (char-set-union
+   (char-set (ucs->char #x2D))
+   (char-set (ucs->char #x58A))
+   (char-set (ucs->char #x1806))
+   (ucs-range->char-set #x2010 #x2016)
+   (char-set (ucs->char #x2053))
+   (char-set (ucs->char #x207B))
+   (char-set (ucs->char #x208B))
+   (char-set (ucs->char #x2212))
+   (char-set (ucs->char #x301C))
+   (char-set (ucs->char #x3030))
+   (ucs-range->char-set #xFE31 #xFE33)
+   (char-set (ucs->char #xFE58))
+   (char-set (ucs->char #xFE63))
+   (char-set (ucs->char #xFF0D))
+   ))
+
+(define char-set:deprecated
+  (char-set-union
+   (ucs-range->char-set #x340 #x342)
+   (char-set (ucs->char #x17A3))
+   (char-set (ucs->char #x17D3))
+   (ucs-range->char-set #x206A #x2070)
+   ))
+
+(define char-set:diacritic
+  (char-set-union
+   (char-set (ucs->char #x5E))
+   (char-set (ucs->char #x60))
+   (char-set (ucs->char #xA8))
+   (char-set (ucs->char #xAF))
+   (char-set (ucs->char #xB4))
+   (char-set (ucs->char #xB7))
+   (char-set (ucs->char #xB8))
+   (ucs-range->char-set #x2B0 #x2C2)
+   (ucs-range->char-set #x2C2 #x2C6)
+   (ucs-range->char-set #x2C6 #x2D2)
+   (ucs-range->char-set #x2D2 #x2E0)
+   (ucs-range->char-set #x2E0 #x2E5)
+   (ucs-range->char-set #x2E5 #x2EE)
+   (char-set (ucs->char #x2EE))
+   (ucs-range->char-set #x2EF #x300)
+   (ucs-range->char-set #x300 #x34F)
+   (ucs-range->char-set #x350 #x358)
+   (ucs-range->char-set #x35D #x363)
+   (ucs-range->char-set #x374 #x376)
+   (char-set (ucs->char #x37A))
+   (ucs-range->char-set #x384 #x386)
+   (ucs-range->char-set #x483 #x487)
+   (char-set (ucs->char #x559))
+   (ucs-range->char-set #x591 #x5A2)
+   (ucs-range->char-set #x5A3 #x5BA)
+   (ucs-range->char-set #x5BB #x5BE)
+   (char-set (ucs->char #x5BF))
+   (ucs-range->char-set #x5C1 #x5C3)
+   (char-set (ucs->char #x5C4))
+   (ucs-range->char-set #x64B #x653)
+   (ucs-range->char-set #x657 #x659)
+   (ucs-range->char-set #x6DF #x6E1)
+   (ucs-range->char-set #x6E5 #x6E7)
+   (ucs-range->char-set #x6EA #x6ED)
+   (ucs-range->char-set #x730 #x74B)
+   (ucs-range->char-set #x7A6 #x7B1)
+   (char-set (ucs->char #x93C))
+   (char-set (ucs->char #x94D))
+   (ucs-range->char-set #x951 #x955)
+   (char-set (ucs->char #x9BC))
+   (char-set (ucs->char #x9CD))
+   (char-set (ucs->char #xA3C))
+   (char-set (ucs->char #xA4D))
+   (char-set (ucs->char #xABC))
+   (char-set (ucs->char #xACD))
+   (char-set (ucs->char #xB3C))
+   (char-set (ucs->char #xB4D))
+   (char-set (ucs->char #xBCD))
+   (char-set (ucs->char #xC4D))
+   (char-set (ucs->char #xCBC))
+   (char-set (ucs->char #xCCD))
+   (char-set (ucs->char #xD4D))
+   (char-set (ucs->char #xDCA))
+   (ucs-range->char-set #xE47 #xE4D)
+   (char-set (ucs->char #xE4E))
+   (ucs-range->char-set #xEC8 #xECD)
+   (ucs-range->char-set #xF18 #xF1A)
+   (char-set (ucs->char #xF35))
+   (char-set (ucs->char #xF37))
+   (char-set (ucs->char #xF39))
+   (ucs-range->char-set #xF3E #xF40)
+   (ucs-range->char-set #xF82 #xF85)
+   (ucs-range->char-set #xF86 #xF88)
+   (char-set (ucs->char #xFC6))
+   (char-set (ucs->char #x1037))
+   (char-set (ucs->char #x1039))
+   (ucs-range->char-set #x17C9 #x17D4)
+   (char-set (ucs->char #x17DD))
+   (ucs-range->char-set #x1939 #x193C)
+   (ucs-range->char-set #x1D2C #x1D62)
+   (ucs-range->char-set #x1D62 #x1D6B)
+   (char-set (ucs->char #x1FBD))
+   (ucs-range->char-set #x1FBF #x1FC2)
+   (ucs-range->char-set #x1FCD #x1FD0)
+   (ucs-range->char-set #x1FDD #x1FE0)
+   (ucs-range->char-set #x1FED #x1FF0)
+   (ucs-range->char-set #x1FFD #x1FFF)
+   (ucs-range->char-set #x302A #x3030)
+   (ucs-range->char-set #x3099 #x309B)
+   (ucs-range->char-set #x309B #x309D)
+   (char-set (ucs->char #x30FC))
+   (char-set (ucs->char #xFB1E))
+   (ucs-range->char-set #xFE20 #xFE24)
+   (char-set (ucs->char #xFF3E))
+   (char-set (ucs->char #xFF40))
+   (char-set (ucs->char #xFF70))
+   (ucs-range->char-set #xFF9E #xFFA0)
+   (char-set (ucs->char #xFFE3))
+   (ucs-range->char-set #x1D167 #x1D16A)
+   (ucs-range->char-set #x1D16D #x1D173)
+   (ucs-range->char-set #x1D17B #x1D183)
+   (ucs-range->char-set #x1D185 #x1D18C)
+   (ucs-range->char-set #x1D1AA #x1D1AE)
+   ))
+
+(define char-set:extender
+  (char-set-union
+   (char-set (ucs->char #xB7))
+   (ucs-range->char-set #x2D0 #x2D2)
+   (char-set (ucs->char #x640))
+   (char-set (ucs->char #xE46))
+   (char-set (ucs->char #xEC6))
+   (char-set (ucs->char #x1843))
+   (char-set (ucs->char #x3005))
+   (ucs-range->char-set #x3031 #x3036)
+   (ucs-range->char-set #x309D #x309F)
+   (ucs-range->char-set #x30FC #x30FF)
+   (char-set (ucs->char #xFF70))
+   ))
+
+(define char-set:grapheme-link
+  (char-set-union
+   (char-set (ucs->char #x34F))
+   (char-set (ucs->char #x94D))
+   (char-set (ucs->char #x9CD))
+   (char-set (ucs->char #xA4D))
+   (char-set (ucs->char #xACD))
+   (char-set (ucs->char #xB4D))
+   (char-set (ucs->char #xBCD))
+   (char-set (ucs->char #xC4D))
+   (char-set (ucs->char #xCCD))
+   (char-set (ucs->char #xD4D))
+   (char-set (ucs->char #xDCA))
+   (char-set (ucs->char #xE3A))
+   (char-set (ucs->char #x1039))
+   (char-set (ucs->char #x17D2))
+   ))
+
+(define char-set:hex-digit
+  (char-set-union
+   (ucs-range->char-set #x30 #x3A)
+   (ucs-range->char-set #x41 #x47)
+   (ucs-range->char-set #x61 #x67)
+   (ucs-range->char-set #xFF10 #xFF1A)
+   (ucs-range->char-set #xFF21 #xFF27)
+   (ucs-range->char-set #xFF41 #xFF47)
+   ))
+
+(define char-set:hyphen
+  (char-set-union
+   (char-set (ucs->char #x2D))
+   (char-set (ucs->char #xAD))
+   (char-set (ucs->char #x58A))
+   (char-set (ucs->char #x1806))
+   (ucs-range->char-set #x2010 #x2012)
+   (char-set (ucs->char #x30FB))
+   (char-set (ucs->char #xFE63))
+   (char-set (ucs->char #xFF0D))
+   (char-set (ucs->char #xFF65))
+   ))
+
+(define char-set:ideographic
+  (char-set-union
+   (char-set (ucs->char #x3006))
+   (char-set (ucs->char #x3007))
+   (ucs-range->char-set #x3021 #x302A)
+   (ucs-range->char-set #x3038 #x303B)
+   (ucs-range->char-set #x3400 #x4DB6)
+   (ucs-range->char-set #x4E00 #x9FA6)
+   (ucs-range->char-set #xF900 #xFA2E)
+   (ucs-range->char-set #x20000 #x2A6D7)
+   (ucs-range->char-set #x2F800 #x2FA1E)
+   ))
+
+(define char-set:ids-binary-operator
+  (char-set-union
+   (ucs-range->char-set #x2FF0 #x2FF2)
+   (ucs-range->char-set #x2FF4 #x2FFC)
+   ))
+
+(define char-set:ids-trinary-operator
+  (char-set-union
+   (ucs-range->char-set #x2FF2 #x2FF4)
+   ))
+
+(define char-set:join-control
+  (char-set-union
+   (ucs-range->char-set #x200C #x200E)
+   ))
+
+(define char-set:logical-order-exception
+  (char-set-union
+   (ucs-range->char-set #xE40 #xE45)
+   (ucs-range->char-set #xEC0 #xEC5)
+   ))
+
+(define char-set:noncharacter-code-point
+  (char-set-union
+   (ucs-range->char-set #xFDD0 #xFDF0)
+   (ucs-range->char-set #xFFFE #x10000)
+   (ucs-range->char-set #x1FFFE #x20000)
+   (ucs-range->char-set #x2FFFE #x30000)
+   (ucs-range->char-set #x3FFFE #x40000)
+   (ucs-range->char-set #x4FFFE #x50000)
+   (ucs-range->char-set #x5FFFE #x60000)
+   (ucs-range->char-set #x6FFFE #x70000)
+   (ucs-range->char-set #x7FFFE #x80000)
+   (ucs-range->char-set #x8FFFE #x90000)
+   (ucs-range->char-set #x9FFFE #xA0000)
+   (ucs-range->char-set #xAFFFE #xB0000)
+   (ucs-range->char-set #xBFFFE #xC0000)
+   (ucs-range->char-set #xCFFFE #xD0000)
+   (ucs-range->char-set #xDFFFE #xE0000)
+   (ucs-range->char-set #xEFFFE #xF0000)
+   (ucs-range->char-set #xFFFFE #x100000)
+   (ucs-range->char-set #x10FFFE #x110000)
+   ))
+
+(define char-set:other-alphabetic
+  (char-set-union
+   (char-set (ucs->char #x345))
+   (ucs-range->char-set #x5B0 #x5BA)
+   (ucs-range->char-set #x5BB #x5BE)
+   (char-set (ucs->char #x5BF))
+   (ucs-range->char-set #x5C1 #x5C3)
+   (char-set (ucs->char #x5C4))
+   (ucs-range->char-set #x610 #x616)
+   (ucs-range->char-set #x64B #x658)
+   (char-set (ucs->char #x670))
+   (ucs-range->char-set #x6D6 #x6DD)
+   (ucs-range->char-set #x6E1 #x6E5)
+   (ucs-range->char-set #x6E7 #x6E9)
+   (char-set (ucs->char #x6ED))
+   (char-set (ucs->char #x711))
+   (ucs-range->char-set #x730 #x740)
+   (ucs-range->char-set #x7A6 #x7B1)
+   (ucs-range->char-set #x901 #x903)
+   (char-set (ucs->char #x903))
+   (ucs-range->char-set #x93E #x941)
+   (ucs-range->char-set #x941 #x949)
+   (ucs-range->char-set #x949 #x94D)
+   (ucs-range->char-set #x962 #x964)
+   (char-set (ucs->char #x981))
+   (ucs-range->char-set #x982 #x984)
+   (ucs-range->char-set #x9BE #x9C1)
+   (ucs-range->char-set #x9C1 #x9C5)
+   (ucs-range->char-set #x9C7 #x9C9)
+   (ucs-range->char-set #x9CB #x9CD)
+   (char-set (ucs->char #x9D7))
+   (ucs-range->char-set #x9E2 #x9E4)
+   (ucs-range->char-set #xA01 #xA03)
+   (char-set (ucs->char #xA03))
+   (ucs-range->char-set #xA3E #xA41)
+   (ucs-range->char-set #xA41 #xA43)
+   (ucs-range->char-set #xA47 #xA49)
+   (ucs-range->char-set #xA4B #xA4D)
+   (ucs-range->char-set #xA70 #xA72)
+   (ucs-range->char-set #xA81 #xA83)
+   (char-set (ucs->char #xA83))
+   (ucs-range->char-set #xABE #xAC1)
+   (ucs-range->char-set #xAC1 #xAC6)
+   (ucs-range->char-set #xAC7 #xAC9)
+   (char-set (ucs->char #xAC9))
+   (ucs-range->char-set #xACB #xACD)
+   (ucs-range->char-set #xAE2 #xAE4)
+   (char-set (ucs->char #xB01))
+   (ucs-range->char-set #xB02 #xB04)
+   (char-set (ucs->char #xB3E))
+   (char-set (ucs->char #xB3F))
+   (char-set (ucs->char #xB40))
+   (ucs-range->char-set #xB41 #xB44)
+   (ucs-range->char-set #xB47 #xB49)
+   (ucs-range->char-set #xB4B #xB4D)
+   (char-set (ucs->char #xB56))
+   (char-set (ucs->char #xB57))
+   (char-set (ucs->char #xB82))
+   (ucs-range->char-set #xBBE #xBC0)
+   (char-set (ucs->char #xBC0))
+   (ucs-range->char-set #xBC1 #xBC3)
+   (ucs-range->char-set #xBC6 #xBC9)
+   (ucs-range->char-set #xBCA #xBCD)
+   (char-set (ucs->char #xBD7))
+   (ucs-range->char-set #xC01 #xC04)
+   (ucs-range->char-set #xC3E #xC41)
+   (ucs-range->char-set #xC41 #xC45)
+   (ucs-range->char-set #xC46 #xC49)
+   (ucs-range->char-set #xC4A #xC4D)
+   (ucs-range->char-set #xC55 #xC57)
+   (ucs-range->char-set #xC82 #xC84)
+   (char-set (ucs->char #xCBE))
+   (char-set (ucs->char #xCBF))
+   (ucs-range->char-set #xCC0 #xCC5)
+   (char-set (ucs->char #xCC6))
+   (ucs-range->char-set #xCC7 #xCC9)
+   (ucs-range->char-set #xCCA #xCCC)
+   (char-set (ucs->char #xCCC))
+   (ucs-range->char-set #xCD5 #xCD7)
+   (ucs-range->char-set #xD02 #xD04)
+   (ucs-range->char-set #xD3E #xD41)
+   (ucs-range->char-set #xD41 #xD44)
+   (ucs-range->char-set #xD46 #xD49)
+   (ucs-range->char-set #xD4A #xD4D)
+   (char-set (ucs->char #xD57))
+   (ucs-range->char-set #xD82 #xD84)
+   (ucs-range->char-set #xDCF #xDD2)
+   (ucs-range->char-set #xDD2 #xDD5)
+   (char-set (ucs->char #xDD6))
+   (ucs-range->char-set #xDD8 #xDE0)
+   (ucs-range->char-set #xDF2 #xDF4)
+   (char-set (ucs->char #xE31))
+   (ucs-range->char-set #xE34 #xE3B)
+   (char-set (ucs->char #xE4D))
+   (char-set (ucs->char #xEB1))
+   (ucs-range->char-set #xEB4 #xEBA)
+   (ucs-range->char-set #xEBB #xEBD)
+   (char-set (ucs->char #xECD))
+   (ucs-range->char-set #xF71 #xF7F)
+   (char-set (ucs->char #xF7F))
+   (ucs-range->char-set #xF80 #xF82)
+   (ucs-range->char-set #xF90 #xF98)
+   (ucs-range->char-set #xF99 #xFBD)
+   (char-set (ucs->char #x102C))
+   (ucs-range->char-set #x102D #x1031)
+   (char-set (ucs->char #x1031))
+   (char-set (ucs->char #x1032))
+   (char-set (ucs->char #x1036))
+   (char-set (ucs->char #x1038))
+   (ucs-range->char-set #x1056 #x1058)
+   (ucs-range->char-set #x1058 #x105A)
+   (ucs-range->char-set #x16EE #x16F1)
+   (ucs-range->char-set #x1712 #x1714)
+   (ucs-range->char-set #x1732 #x1734)
+   (ucs-range->char-set #x1752 #x1754)
+   (ucs-range->char-set #x1772 #x1774)
+   (char-set (ucs->char #x17B6))
+   (ucs-range->char-set #x17B7 #x17BE)
+   (ucs-range->char-set #x17BE #x17C6)
+   (char-set (ucs->char #x17C6))
+   (ucs-range->char-set #x17C7 #x17C9)
+   (char-set (ucs->char #x18A9))
+   (ucs-range->char-set #x1920 #x1923)
+   (ucs-range->char-set #x1923 #x1927)
+   (ucs-range->char-set #x1927 #x1929)
+   (ucs-range->char-set #x1929 #x192C)
+   (ucs-range->char-set #x1930 #x1932)
+   (char-set (ucs->char #x1932))
+   (ucs-range->char-set #x1933 #x1939)
+   (ucs-range->char-set #x2160 #x2184)
+   (char-set (ucs->char #xFB1E))
+   (char-set (ucs->char #x1034A))
+   ))
+
+(define char-set:other-default-ignorable-code-point
+  (char-set-union
+   (char-set (ucs->char #x34F))
+   (ucs-range->char-set #x115F #x1161)
+   (ucs-range->char-set #x180B #x180E)
+   (char-set (ucs->char #x200B))
+   (ucs-range->char-set #x2064 #x206A)
+   (char-set (ucs->char #x3164))
+   (ucs-range->char-set #xFE00 #xFE10)
+   (char-set (ucs->char #xFFA0))
+   (ucs-range->char-set #xFFF0 #xFFF9)
+   (char-set (ucs->char #xE0000))
+   (ucs-range->char-set #xE0002 #xE0020)
+   (ucs-range->char-set #xE0080 #xE0100)
+   (ucs-range->char-set #xE0100 #xE01F0)
+   (ucs-range->char-set #xE01F0 #xE1000)
+   ))
+
+(define char-set:other-grapheme-extend
+  (char-set-union
+   (char-set (ucs->char #x9BE))
+   (char-set (ucs->char #x9D7))
+   (char-set (ucs->char #xB3E))
+   (char-set (ucs->char #xB57))
+   (char-set (ucs->char #xBBE))
+   (char-set (ucs->char #xBD7))
+   (char-set (ucs->char #xCC2))
+   (ucs-range->char-set #xCD5 #xCD7)
+   (char-set (ucs->char #xD3E))
+   (char-set (ucs->char #xD57))
+   (char-set (ucs->char #xDCF))
+   (char-set (ucs->char #xDDF))
+   (char-set (ucs->char #x1D165))
+   (ucs-range->char-set #x1D16E #x1D170)
+   ))
+
+(define char-set:other-id-start
+  (char-set-union
+   (char-set (ucs->char #x2118))
+   (char-set (ucs->char #x212E))
+   (ucs-range->char-set #x309B #x309D)
+   ))
+
+(define char-set:other-lowercase
+  (char-set-union
+   (ucs-range->char-set #x2B0 #x2B9)
+   (ucs-range->char-set #x2C0 #x2C2)
+   (ucs-range->char-set #x2E0 #x2E5)
+   (char-set (ucs->char #x345))
+   (char-set (ucs->char #x37A))
+   (ucs-range->char-set #x1D2C #x1D62)
+   (ucs-range->char-set #x2170 #x2180)
+   (ucs-range->char-set #x24D0 #x24EA)
+   ))
+
+(define char-set:other-math
+  (char-set-union
+   (char-set (ucs->char #x28))
+   (char-set (ucs->char #x29))
+   (char-set (ucs->char #x2A))
+   (char-set (ucs->char #x2D))
+   (char-set (ucs->char #x2F))
+   (char-set (ucs->char #x5B))
+   (char-set (ucs->char #x5C))
+   (char-set (ucs->char #x5D))
+   (char-set (ucs->char #x5E))
+   (char-set (ucs->char #x7B))
+   (char-set (ucs->char #x7D))
+   (char-set (ucs->char #x2016))
+   (ucs-range->char-set #x2032 #x2035)
+   (char-set (ucs->char #x207D))
+   (char-set (ucs->char #x207E))
+   (char-set (ucs->char #x208D))
+   (char-set (ucs->char #x208E))
+   (ucs-range->char-set #x20D0 #x20DD)
+   (char-set (ucs->char #x20E1))
+   (char-set (ucs->char #x2102))
+   (ucs-range->char-set #x210A #x2114)
+   (char-set (ucs->char #x2115))
+   (ucs-range->char-set #x2119 #x211E)
+   (char-set (ucs->char #x2124))
+   (char-set (ucs->char #x2128))
+   (ucs-range->char-set #x212C #x212E)
+   (ucs-range->char-set #x212F #x2132)
+   (ucs-range->char-set #x2133 #x2135)
+   (ucs-range->char-set #x2135 #x2139)
+   (char-set (ucs->char #xFE35))
+   (char-set (ucs->char #xFE36))
+   (char-set (ucs->char #xFE37))
+   (char-set (ucs->char #xFE38))
+   (char-set (ucs->char #xFE47))
+   (char-set (ucs->char #xFE48))
+   (char-set (ucs->char #xFE59))
+   (char-set (ucs->char #xFE5A))
+   (char-set (ucs->char #xFE5B))
+   (char-set (ucs->char #xFE5C))
+   (char-set (ucs->char #xFE61))
+   (char-set (ucs->char #xFE63))
+   (char-set (ucs->char #xFE68))
+   (char-set (ucs->char #xFF08))
+   (char-set (ucs->char #xFF09))
+   (char-set (ucs->char #xFF0A))
+   (char-set (ucs->char #xFF0D))
+   (char-set (ucs->char #xFF0F))
+   (char-set (ucs->char #xFF3B))
+   (char-set (ucs->char #xFF3C))
+   (char-set (ucs->char #xFF3D))
+   (char-set (ucs->char #xFF3E))
+   (char-set (ucs->char #xFF5B))
+   (char-set (ucs->char #xFF5D))
+   (ucs-range->char-set #x1D400 #x1D455)
+   (ucs-range->char-set #x1D456 #x1D49D)
+   (ucs-range->char-set #x1D49E #x1D4A0)
+   (char-set (ucs->char #x1D4A2))
+   (ucs-range->char-set #x1D4A5 #x1D4A7)
+   (ucs-range->char-set #x1D4A9 #x1D4AD)
+   (ucs-range->char-set #x1D4AE #x1D4BA)
+   (char-set (ucs->char #x1D4BB))
+   (ucs-range->char-set #x1D4BD #x1D4C4)
+   (ucs-range->char-set #x1D4C5 #x1D506)
+   (ucs-range->char-set #x1D507 #x1D50B)
+   (ucs-range->char-set #x1D50D #x1D515)
+   (ucs-range->char-set #x1D516 #x1D51D)
+   (ucs-range->char-set #x1D51E #x1D53A)
+   (ucs-range->char-set #x1D53B #x1D53F)
+   (ucs-range->char-set #x1D540 #x1D545)
+   (char-set (ucs->char #x1D546))
+   (ucs-range->char-set #x1D54A #x1D551)
+   (ucs-range->char-set #x1D552 #x1D6A4)
+   (ucs-range->char-set #x1D6A8 #x1D6C1)
+   (ucs-range->char-set #x1D6C2 #x1D6DB)
+   (ucs-range->char-set #x1D6DC #x1D6FB)
+   (ucs-range->char-set #x1D6FC #x1D715)
+   (ucs-range->char-set #x1D716 #x1D735)
+   (ucs-range->char-set #x1D736 #x1D74F)
+   (ucs-range->char-set #x1D750 #x1D76F)
+   (ucs-range->char-set #x1D770 #x1D789)
+   (ucs-range->char-set #x1D78A #x1D7A9)
+   (ucs-range->char-set #x1D7AA #x1D7C3)
+   (ucs-range->char-set #x1D7C4 #x1D7CA)
+   (ucs-range->char-set #x1D7CE #x1D800)
+   ))
+
+(define char-set:other-uppercase
+  (char-set-union
+   (ucs-range->char-set #x2160 #x2170)
+   (ucs-range->char-set #x24B6 #x24D0)
+   ))
+
+(define char-set:quotation-mark
+  (char-set-union
+   (char-set (ucs->char #x22))
+   (char-set (ucs->char #x27))
+   (char-set (ucs->char #xAB))
+   (char-set (ucs->char #xBB))
+   (char-set (ucs->char #x2018))
+   (char-set (ucs->char #x2019))
+   (char-set (ucs->char #x201A))
+   (ucs-range->char-set #x201B #x201D)
+   (char-set (ucs->char #x201D))
+   (char-set (ucs->char #x201E))
+   (char-set (ucs->char #x201F))
+   (char-set (ucs->char #x2039))
+   (char-set (ucs->char #x203A))
+   (char-set (ucs->char #x300C))
+   (char-set (ucs->char #x300D))
+   (char-set (ucs->char #x300E))
+   (char-set (ucs->char #x300F))
+   (char-set (ucs->char #x301D))
+   (ucs-range->char-set #x301E #x3020)
+   (char-set (ucs->char #xFE41))
+   (char-set (ucs->char #xFE42))
+   (char-set (ucs->char #xFE43))
+   (char-set (ucs->char #xFE44))
+   (char-set (ucs->char #xFF02))
+   (char-set (ucs->char #xFF07))
+   (char-set (ucs->char #xFF62))
+   (char-set (ucs->char #xFF63))
+   ))
+
+(define char-set:radical
+  (char-set-union
+   (ucs-range->char-set #x2E80 #x2E9A)
+   (ucs-range->char-set #x2E9B #x2EF4)
+   (ucs-range->char-set #x2F00 #x2FD6)
+   ))
+
+(define char-set:soft-dotted
+  (char-set-union
+   (ucs-range->char-set #x69 #x6B)
+   (char-set (ucs->char #x12F))
+   (char-set (ucs->char #x268))
+   (char-set (ucs->char #x456))
+   (char-set (ucs->char #x458))
+   (char-set (ucs->char #x1D62))
+   (char-set (ucs->char #x1E2D))
+   (char-set (ucs->char #x1ECB))
+   (char-set (ucs->char #x2071))
+   ))
+
+(define char-set:terminal-punctuation
+  (char-set-union
+   (char-set (ucs->char #x21))
+   (char-set (ucs->char #x2C))
+   (char-set (ucs->char #x2E))
+   (ucs-range->char-set #x3A #x3C)
+   (char-set (ucs->char #x3F))
+   (char-set (ucs->char #x37E))
+   (char-set (ucs->char #x387))
+   (char-set (ucs->char #x589))
+   (char-set (ucs->char #x60C))
+   (char-set (ucs->char #x61B))
+   (char-set (ucs->char #x61F))
+   (char-set (ucs->char #x6D4))
+   (ucs-range->char-set #x700 #x70B)
+   (char-set (ucs->char #x70C))
+   (ucs-range->char-set #x964 #x966)
+   (ucs-range->char-set #xE5A #xE5C)
+   (ucs-range->char-set #x104A #x104C)
+   (ucs-range->char-set #x1361 #x1369)
+   (ucs-range->char-set #x166D #x166F)
+   (ucs-range->char-set #x16EB #x16EE)
+   (ucs-range->char-set #x17D4 #x17D7)
+   (char-set (ucs->char #x17DA))
+   (ucs-range->char-set #x1802 #x1806)
+   (ucs-range->char-set #x1808 #x180A)
+   (ucs-range->char-set #x1944 #x1946)
+   (ucs-range->char-set #x203C #x203E)
+   (ucs-range->char-set #x2047 #x204A)
+   (ucs-range->char-set #x3001 #x3003)
+   (ucs-range->char-set #xFE50 #xFE53)
+   (ucs-range->char-set #xFE54 #xFE58)
+   (char-set (ucs->char #xFF01))
+   (char-set (ucs->char #xFF0C))
+   (char-set (ucs->char #xFF0E))
+   (ucs-range->char-set #xFF1A #xFF1C)
+   (char-set (ucs->char #xFF1F))
+   (char-set (ucs->char #xFF61))
+   (char-set (ucs->char #xFF64))
+   ))
+
+(define char-set:unified-ideograph
+  (char-set-union
+   (ucs-range->char-set #x3400 #x4DB6)
+   (ucs-range->char-set #x4E00 #x9FA6)
+   (ucs-range->char-set #xFA0E #xFA10)
+   (char-set (ucs->char #xFA11))
+   (ucs-range->char-set #xFA13 #xFA15)
+   (char-set (ucs->char #xFA1F))
+   (char-set (ucs->char #xFA21))
+   (ucs-range->char-set #xFA23 #xFA25)
+   (ucs-range->char-set #xFA27 #xFA2A)
+   (ucs-range->char-set #x20000 #x2A6D7)
+   ))
+
+(define char-set:white-space
+  (char-set-union
+   (ucs-range->char-set #x9 #xE)
+   (char-set (ucs->char #x20))
+   (char-set (ucs->char #x85))
+   (char-set (ucs->char #xA0))
+   (char-set (ucs->char #x1680))
+   (char-set (ucs->char #x180E))
+   (ucs-range->char-set #x2000 #x200B)
+   (char-set (ucs->char #x2028))
+   (char-set (ucs->char #x2029))
+   (char-set (ucs->char #x202F))
+   (char-set (ucs->char #x205F))
+   (char-set (ucs->char #x3000))
+   ))
+
+(define char-set:alphabetic
+  (char-set-union
+   char-set:other-alphabetic
+   (ucs-range->char-set #x41 #x5B)
+   (ucs-range->char-set #x61 #x7B)
+   (char-set (ucs->char #xAA))
+   (char-set (ucs->char #xB5))
+   (char-set (ucs->char #xBA))
+   (ucs-range->char-set #xC0 #xD7)
+   (ucs-range->char-set #xD8 #xF7)
+   (ucs-range->char-set #xF8 #x1BB)
+   (char-set (ucs->char #x1BB))
+   (ucs-range->char-set #x1BC #x1C0)
+   (ucs-range->char-set #x1C0 #x1C4)
+   (ucs-range->char-set #x1C4 #x237)
+   (ucs-range->char-set #x250 #x2B0)
+   (ucs-range->char-set #x2B0 #x2C2)
+   (ucs-range->char-set #x2C6 #x2D2)
+   (ucs-range->char-set #x2E0 #x2E5)
+   (char-set (ucs->char #x2EE))
+   (char-set (ucs->char #x37A))
+   (char-set (ucs->char #x386))
+   (ucs-range->char-set #x388 #x38B)
+   (char-set (ucs->char #x38C))
+   (ucs-range->char-set #x38E #x3A2)
+   (ucs-range->char-set #x3A3 #x3CF)
+   (ucs-range->char-set #x3D0 #x3F6)
+   (ucs-range->char-set #x3F7 #x3FC)
+   (ucs-range->char-set #x400 #x482)
+   (ucs-range->char-set #x48A #x4CF)
+   (ucs-range->char-set #x4D0 #x4F6)
+   (ucs-range->char-set #x4F8 #x4FA)
+   (ucs-range->char-set #x500 #x510)
+   (ucs-range->char-set #x531 #x557)
+   (char-set (ucs->char #x559))
+   (ucs-range->char-set #x561 #x588)
+   (ucs-range->char-set #x5D0 #x5EB)
+   (ucs-range->char-set #x5F0 #x5F3)
+   (ucs-range->char-set #x621 #x63B)
+   (char-set (ucs->char #x640))
+   (ucs-range->char-set #x641 #x64B)
+   (ucs-range->char-set #x66E #x670)
+   (ucs-range->char-set #x671 #x6D4)
+   (char-set (ucs->char #x6D5))
+   (ucs-range->char-set #x6E5 #x6E7)
+   (ucs-range->char-set #x6EE #x6F0)
+   (ucs-range->char-set #x6FA #x6FD)
+   (char-set (ucs->char #x6FF))
+   (char-set (ucs->char #x710))
+   (ucs-range->char-set #x712 #x730)
+   (ucs-range->char-set #x74D #x750)
+   (ucs-range->char-set #x780 #x7A6)
+   (char-set (ucs->char #x7B1))
+   (ucs-range->char-set #x904 #x93A)
+   (char-set (ucs->char #x93D))
+   (char-set (ucs->char #x950))
+   (ucs-range->char-set #x958 #x962)
+   (ucs-range->char-set #x985 #x98D)
+   (ucs-range->char-set #x98F #x991)
+   (ucs-range->char-set #x993 #x9A9)
+   (ucs-range->char-set #x9AA #x9B1)
+   (char-set (ucs->char #x9B2))
+   (ucs-range->char-set #x9B6 #x9BA)
+   (char-set (ucs->char #x9BD))
+   (ucs-range->char-set #x9DC #x9DE)
+   (ucs-range->char-set #x9DF #x9E2)
+   (ucs-range->char-set #x9F0 #x9F2)
+   (ucs-range->char-set #xA05 #xA0B)
+   (ucs-range->char-set #xA0F #xA11)
+   (ucs-range->char-set #xA13 #xA29)
+   (ucs-range->char-set #xA2A #xA31)
+   (ucs-range->char-set #xA32 #xA34)
+   (ucs-range->char-set #xA35 #xA37)
+   (ucs-range->char-set #xA38 #xA3A)
+   (ucs-range->char-set #xA59 #xA5D)
+   (char-set (ucs->char #xA5E))
+   (ucs-range->char-set #xA72 #xA75)
+   (ucs-range->char-set #xA85 #xA8E)
+   (ucs-range->char-set #xA8F #xA92)
+   (ucs-range->char-set #xA93 #xAA9)
+   (ucs-range->char-set #xAAA #xAB1)
+   (ucs-range->char-set #xAB2 #xAB4)
+   (ucs-range->char-set #xAB5 #xABA)
+   (char-set (ucs->char #xABD))
+   (char-set (ucs->char #xAD0))
+   (ucs-range->char-set #xAE0 #xAE2)
+   (ucs-range->char-set #xB05 #xB0D)
+   (ucs-range->char-set #xB0F #xB11)
+   (ucs-range->char-set #xB13 #xB29)
+   (ucs-range->char-set #xB2A #xB31)
+   (ucs-range->char-set #xB32 #xB34)
+   (ucs-range->char-set #xB35 #xB3A)
+   (char-set (ucs->char #xB3D))
+   (ucs-range->char-set #xB5C #xB5E)
+   (ucs-range->char-set #xB5F #xB62)
+   (char-set (ucs->char #xB71))
+   (char-set (ucs->char #xB83))
+   (ucs-range->char-set #xB85 #xB8B)
+   (ucs-range->char-set #xB8E #xB91)
+   (ucs-range->char-set #xB92 #xB96)
+   (ucs-range->char-set #xB99 #xB9B)
+   (char-set (ucs->char #xB9C))
+   (ucs-range->char-set #xB9E #xBA0)
+   (ucs-range->char-set #xBA3 #xBA5)
+   (ucs-range->char-set #xBA8 #xBAB)
+   (ucs-range->char-set #xBAE #xBB6)
+   (ucs-range->char-set #xBB7 #xBBA)
+   (ucs-range->char-set #xC05 #xC0D)
+   (ucs-range->char-set #xC0E #xC11)
+   (ucs-range->char-set #xC12 #xC29)
+   (ucs-range->char-set #xC2A #xC34)
+   (ucs-range->char-set #xC35 #xC3A)
+   (ucs-range->char-set #xC60 #xC62)
+   (ucs-range->char-set #xC85 #xC8D)
+   (ucs-range->char-set #xC8E #xC91)
+   (ucs-range->char-set #xC92 #xCA9)
+   (ucs-range->char-set #xCAA #xCB4)
+   (ucs-range->char-set #xCB5 #xCBA)
+   (char-set (ucs->char #xCBD))
+   (char-set (ucs->char #xCDE))
+   (ucs-range->char-set #xCE0 #xCE2)
+   (ucs-range->char-set #xD05 #xD0D)
+   (ucs-range->char-set #xD0E #xD11)
+   (ucs-range->char-set #xD12 #xD29)
+   (ucs-range->char-set #xD2A #xD3A)
+   (ucs-range->char-set #xD60 #xD62)
+   (ucs-range->char-set #xD85 #xD97)
+   (ucs-range->char-set #xD9A #xDB2)
+   (ucs-range->char-set #xDB3 #xDBC)
+   (char-set (ucs->char #xDBD))
+   (ucs-range->char-set #xDC0 #xDC7)
+   (ucs-range->char-set #xE01 #xE31)
+   (ucs-range->char-set #xE32 #xE34)
+   (ucs-range->char-set #xE40 #xE46)
+   (char-set (ucs->char #xE46))
+   (ucs-range->char-set #xE81 #xE83)
+   (char-set (ucs->char #xE84))
+   (ucs-range->char-set #xE87 #xE89)
+   (char-set (ucs->char #xE8A))
+   (char-set (ucs->char #xE8D))
+   (ucs-range->char-set #xE94 #xE98)
+   (ucs-range->char-set #xE99 #xEA0)
+   (ucs-range->char-set #xEA1 #xEA4)
+   (char-set (ucs->char #xEA5))
+   (char-set (ucs->char #xEA7))
+   (ucs-range->char-set #xEAA #xEAC)
+   (ucs-range->char-set #xEAD #xEB1)
+   (ucs-range->char-set #xEB2 #xEB4)
+   (char-set (ucs->char #xEBD))
+   (ucs-range->char-set #xEC0 #xEC5)
+   (char-set (ucs->char #xEC6))
+   (ucs-range->char-set #xEDC #xEDE)
+   (char-set (ucs->char #xF00))
+   (ucs-range->char-set #xF40 #xF48)
+   (ucs-range->char-set #xF49 #xF6B)
+   (ucs-range->char-set #xF88 #xF8C)
+   (ucs-range->char-set #x1000 #x1022)
+   (ucs-range->char-set #x1023 #x1028)
+   (ucs-range->char-set #x1029 #x102B)
+   (ucs-range->char-set #x1050 #x1056)
+   (ucs-range->char-set #x10A0 #x10C6)
+   (ucs-range->char-set #x10D0 #x10F9)
+   (ucs-range->char-set #x1100 #x115A)
+   (ucs-range->char-set #x115F #x11A3)
+   (ucs-range->char-set #x11A8 #x11FA)
+   (ucs-range->char-set #x1200 #x1207)
+   (ucs-range->char-set #x1208 #x1247)
+   (char-set (ucs->char #x1248))
+   (ucs-range->char-set #x124A #x124E)
+   (ucs-range->char-set #x1250 #x1257)
+   (char-set (ucs->char #x1258))
+   (ucs-range->char-set #x125A #x125E)
+   (ucs-range->char-set #x1260 #x1287)
+   (char-set (ucs->char #x1288))
+   (ucs-range->char-set #x128A #x128E)
+   (ucs-range->char-set #x1290 #x12AF)
+   (char-set (ucs->char #x12B0))
+   (ucs-range->char-set #x12B2 #x12B6)
+   (ucs-range->char-set #x12B8 #x12BF)
+   (char-set (ucs->char #x12C0))
+   (ucs-range->char-set #x12C2 #x12C6)
+   (ucs-range->char-set #x12C8 #x12CF)
+   (ucs-range->char-set #x12D0 #x12D7)
+   (ucs-range->char-set #x12D8 #x12EF)
+   (ucs-range->char-set #x12F0 #x130F)
+   (char-set (ucs->char #x1310))
+   (ucs-range->char-set #x1312 #x1316)
+   (ucs-range->char-set #x1318 #x131F)
+   (ucs-range->char-set #x1320 #x1347)
+   (ucs-range->char-set #x1348 #x135B)
+   (ucs-range->char-set #x13A0 #x13F5)
+   (ucs-range->char-set #x1401 #x166D)
+   (ucs-range->char-set #x166F #x1677)
+   (ucs-range->char-set #x1681 #x169B)
+   (ucs-range->char-set #x16A0 #x16EB)
+   (ucs-range->char-set #x1700 #x170D)
+   (ucs-range->char-set #x170E #x1712)
+   (ucs-range->char-set #x1720 #x1732)
+   (ucs-range->char-set #x1740 #x1752)
+   (ucs-range->char-set #x1760 #x176D)
+   (ucs-range->char-set #x176E #x1771)
+   (ucs-range->char-set #x1780 #x17B4)
+   (char-set (ucs->char #x17D7))
+   (char-set (ucs->char #x17DC))
+   (ucs-range->char-set #x1820 #x1843)
+   (char-set (ucs->char #x1843))
+   (ucs-range->char-set #x1844 #x1878)
+   (ucs-range->char-set #x1880 #x18A9)
+   (ucs-range->char-set #x1900 #x191D)
+   (ucs-range->char-set #x1950 #x196E)
+   (ucs-range->char-set #x1970 #x1975)
+   (ucs-range->char-set #x1D00 #x1D2C)
+   (ucs-range->char-set #x1D2C #x1D62)
+   (ucs-range->char-set #x1D62 #x1D6C)
+   (ucs-range->char-set #x1E00 #x1E9C)
+   (ucs-range->char-set #x1EA0 #x1EFA)
+   (ucs-range->char-set #x1F00 #x1F16)
+   (ucs-range->char-set #x1F18 #x1F1E)
+   (ucs-range->char-set #x1F20 #x1F46)
+   (ucs-range->char-set #x1F48 #x1F4E)
+   (ucs-range->char-set #x1F50 #x1F58)
+   (char-set (ucs->char #x1F59))
+   (char-set (ucs->char #x1F5B))
+   (char-set (ucs->char #x1F5D))
+   (ucs-range->char-set #x1F5F #x1F7E)
+   (ucs-range->char-set #x1F80 #x1FB5)
+   (ucs-range->char-set #x1FB6 #x1FBD)
+   (char-set (ucs->char #x1FBE))
+   (ucs-range->char-set #x1FC2 #x1FC5)
+   (ucs-range->char-set #x1FC6 #x1FCD)
+   (ucs-range->char-set #x1FD0 #x1FD4)
+   (ucs-range->char-set #x1FD6 #x1FDC)
+   (ucs-range->char-set #x1FE0 #x1FED)
+   (ucs-range->char-set #x1FF2 #x1FF5)
+   (ucs-range->char-set #x1FF6 #x1FFD)
+   (char-set (ucs->char #x2071))
+   (char-set (ucs->char #x207F))
+   (char-set (ucs->char #x2102))
+   (char-set (ucs->char #x2107))
+   (ucs-range->char-set #x210A #x2114)
+   (char-set (ucs->char #x2115))
+   (ucs-range->char-set #x2119 #x211E)
+   (char-set (ucs->char #x2124))
+   (char-set (ucs->char #x2126))
+   (char-set (ucs->char #x2128))
+   (ucs-range->char-set #x212A #x212E)
+   (ucs-range->char-set #x212F #x2132)
+   (ucs-range->char-set #x2133 #x2135)
+   (ucs-range->char-set #x2135 #x2139)
+   (char-set (ucs->char #x2139))
+   (ucs-range->char-set #x213D #x2140)
+   (ucs-range->char-set #x2145 #x214A)
+   (char-set (ucs->char #x3005))
+   (char-set (ucs->char #x3006))
+   (char-set (ucs->char #x3007))
+   (ucs-range->char-set #x3021 #x302A)
+   (ucs-range->char-set #x3031 #x3036)
+   (ucs-range->char-set #x3038 #x303B)
+   (char-set (ucs->char #x303B))
+   (char-set (ucs->char #x303C))
+   (ucs-range->char-set #x3041 #x3097)
+   (ucs-range->char-set #x309D #x309F)
+   (char-set (ucs->char #x309F))
+   (ucs-range->char-set #x30A1 #x30FB)
+   (ucs-range->char-set #x30FC #x30FF)
+   (char-set (ucs->char #x30FF))
+   (ucs-range->char-set #x3105 #x312D)
+   (ucs-range->char-set #x3131 #x318F)
+   (ucs-range->char-set #x31A0 #x31B8)
+   (ucs-range->char-set #x31F0 #x3200)
+   (ucs-range->char-set #x3400 #x4DB6)
+   (ucs-range->char-set #x4E00 #x9FA6)
+   (ucs-range->char-set #xA000 #xA48D)
+   (ucs-range->char-set #xAC00 #xD7A4)
+   (ucs-range->char-set #xF900 #xFA2E)
+   (ucs-range->char-set #xFA30 #xFA6B)
+   (ucs-range->char-set #xFB00 #xFB07)
+   (ucs-range->char-set #xFB13 #xFB18)
+   (char-set (ucs->char #xFB1D))
+   (ucs-range->char-set #xFB1F #xFB29)
+   (ucs-range->char-set #xFB2A #xFB37)
+   (ucs-range->char-set #xFB38 #xFB3D)
+   (char-set (ucs->char #xFB3E))
+   (ucs-range->char-set #xFB40 #xFB42)
+   (ucs-range->char-set #xFB43 #xFB45)
+   (ucs-range->char-set #xFB46 #xFBB2)
+   (ucs-range->char-set #xFBD3 #xFD3E)
+   (ucs-range->char-set #xFD50 #xFD90)
+   (ucs-range->char-set #xFD92 #xFDC8)
+   (ucs-range->char-set #xFDF0 #xFDFC)
+   (ucs-range->char-set #xFE70 #xFE75)
+   (ucs-range->char-set #xFE76 #xFEFD)
+   (ucs-range->char-set #xFF21 #xFF3B)
+   (ucs-range->char-set #xFF41 #xFF5B)
+   (ucs-range->char-set #xFF66 #xFF70)
+   (char-set (ucs->char #xFF70))
+   (ucs-range->char-set #xFF71 #xFF9E)
+   (ucs-range->char-set #xFF9E #xFFA0)
+   (ucs-range->char-set #xFFA0 #xFFBF)
+   (ucs-range->char-set #xFFC2 #xFFC8)
+   (ucs-range->char-set #xFFCA #xFFD0)
+   (ucs-range->char-set #xFFD2 #xFFD8)
+   (ucs-range->char-set #xFFDA #xFFDD)
+   (ucs-range->char-set #x10000 #x1000C)
+   (ucs-range->char-set #x1000D #x10027)
+   (ucs-range->char-set #x10028 #x1003B)
+   (ucs-range->char-set #x1003C #x1003E)
+   (ucs-range->char-set #x1003F #x1004E)
+   (ucs-range->char-set #x10050 #x1005E)
+   (ucs-range->char-set #x10080 #x100FB)
+   (ucs-range->char-set #x10300 #x1031F)
+   (ucs-range->char-set #x10330 #x1034A)
+   (ucs-range->char-set #x10380 #x1039E)
+   (ucs-range->char-set #x10400 #x10450)
+   (ucs-range->char-set #x10450 #x1049E)
+   (ucs-range->char-set #x10800 #x10806)
+   (char-set (ucs->char #x10808))
+   (ucs-range->char-set #x1080A #x10836)
+   (ucs-range->char-set #x10837 #x10839)
+   (char-set (ucs->char #x1083C))
+   (char-set (ucs->char #x1083F))
+   (ucs-range->char-set #x1D400 #x1D455)
+   (ucs-range->char-set #x1D456 #x1D49D)
+   (ucs-range->char-set #x1D49E #x1D4A0)
+   (char-set (ucs->char #x1D4A2))
+   (ucs-range->char-set #x1D4A5 #x1D4A7)
+   (ucs-range->char-set #x1D4A9 #x1D4AD)
+   (ucs-range->char-set #x1D4AE #x1D4BA)
+   (char-set (ucs->char #x1D4BB))
+   (ucs-range->char-set #x1D4BD #x1D4C4)
+   (ucs-range->char-set #x1D4C5 #x1D506)
+   (ucs-range->char-set #x1D507 #x1D50B)
+   (ucs-range->char-set #x1D50D #x1D515)
+   (ucs-range->char-set #x1D516 #x1D51D)
+   (ucs-range->char-set #x1D51E #x1D53A)
+   (ucs-range->char-set #x1D53B #x1D53F)
+   (ucs-range->char-set #x1D540 #x1D545)
+   (char-set (ucs->char #x1D546))
+   (ucs-range->char-set #x1D54A #x1D551)
+   (ucs-range->char-set #x1D552 #x1D6A4)
+   (ucs-range->char-set #x1D6A8 #x1D6C1)
+   (ucs-range->char-set #x1D6C2 #x1D6DB)
+   (ucs-range->char-set #x1D6DC #x1D6FB)
+   (ucs-range->char-set #x1D6FC #x1D715)
+   (ucs-range->char-set #x1D716 #x1D735)
+   (ucs-range->char-set #x1D736 #x1D74F)
+   (ucs-range->char-set #x1D750 #x1D76F)
+   (ucs-range->char-set #x1D770 #x1D789)
+   (ucs-range->char-set #x1D78A #x1D7A9)
+   (ucs-range->char-set #x1D7AA #x1D7C3)
+   (ucs-range->char-set #x1D7C4 #x1D7CA)
+   (ucs-range->char-set #x20000 #x2A6D7)
+   (ucs-range->char-set #x2F800 #x2FA1E)
+   ))
+
+(define char-set:default-ignorable-code-point
+  (char-set-union
+   char-set:other-default-ignorable-code-point
+   (ucs-range->char-set #x0 #x9)
+   (ucs-range->char-set #xE #x20)
+   (ucs-range->char-set #x7F #x85)
+   (ucs-range->char-set #x86 #xA0)
+   (char-set (ucs->char #xAD))
+   (ucs-range->char-set #x600 #x604)
+   (char-set (ucs->char #x6DD))
+   (char-set (ucs->char #x70F))
+   (ucs-range->char-set #x17B4 #x17B6)
+   (ucs-range->char-set #x200C #x2010)
+   (ucs-range->char-set #x202A #x202F)
+   (ucs-range->char-set #x2060 #x2064)
+   (ucs-range->char-set #x206A #x2070)
+   (ucs-range->char-set #xD800 #xE000)
+   (char-set (ucs->char #xFEFF))
+   (ucs-range->char-set #xFFF9 #xFFFC)
+   (ucs-range->char-set #x1D173 #x1D17B)
+   (char-set (ucs->char #xE0001))
+   (ucs-range->char-set #xE0020 #xE0080)
+   ))
+
+(define char-set:grapheme-base
+  (char-set-union
+   (char-set (ucs->char #x20))
+   (ucs-range->char-set #x21 #x24)
+   (char-set (ucs->char #x24))
+   (ucs-range->char-set #x25 #x28)
+   (char-set (ucs->char #x28))
+   (char-set (ucs->char #x29))
+   (char-set (ucs->char #x2A))
+   (char-set (ucs->char #x2B))
+   (char-set (ucs->char #x2C))
+   (char-set (ucs->char #x2D))
+   (ucs-range->char-set #x2E #x30)
+   (ucs-range->char-set #x30 #x3A)
+   (ucs-range->char-set #x3A #x3C)
+   (ucs-range->char-set #x3C #x3F)
+   (ucs-range->char-set #x3F #x41)
+   (ucs-range->char-set #x41 #x5B)
+   (char-set (ucs->char #x5B))
+   (char-set (ucs->char #x5C))
+   (char-set (ucs->char #x5D))
+   (char-set (ucs->char #x5E))
+   (char-set (ucs->char #x5F))
+   (char-set (ucs->char #x60))
+   (ucs-range->char-set #x61 #x7B)
+   (char-set (ucs->char #x7B))
+   (char-set (ucs->char #x7C))
+   (char-set (ucs->char #x7D))
+   (char-set (ucs->char #x7E))
+   (char-set (ucs->char #xA0))
+   (char-set (ucs->char #xA1))
+   (ucs-range->char-set #xA2 #xA6)
+   (ucs-range->char-set #xA6 #xA8)
+   (char-set (ucs->char #xA8))
+   (char-set (ucs->char #xA9))
+   (char-set (ucs->char #xAA))
+   (char-set (ucs->char #xAB))
+   (char-set (ucs->char #xAC))
+   (char-set (ucs->char #xAE))
+   (char-set (ucs->char #xAF))
+   (char-set (ucs->char #xB0))
+   (char-set (ucs->char #xB1))
+   (ucs-range->char-set #xB2 #xB4)
+   (char-set (ucs->char #xB4))
+   (char-set (ucs->char #xB5))
+   (char-set (ucs->char #xB6))
+   (char-set (ucs->char #xB7))
+   (char-set (ucs->char #xB8))
+   (char-set (ucs->char #xB9))
+   (char-set (ucs->char #xBA))
+   (char-set (ucs->char #xBB))
+   (ucs-range->char-set #xBC #xBF)
+   (char-set (ucs->char #xBF))
+   (ucs-range->char-set #xC0 #xD7)
+   (char-set (ucs->char #xD7))
+   (ucs-range->char-set #xD8 #xF7)
+   (char-set (ucs->char #xF7))
+   (ucs-range->char-set #xF8 #x1BB)
+   (char-set (ucs->char #x1BB))
+   (ucs-range->char-set #x1BC #x1C0)
+   (ucs-range->char-set #x1C0 #x1C4)
+   (ucs-range->char-set #x1C4 #x237)
+   (ucs-range->char-set #x250 #x2B0)
+   (ucs-range->char-set #x2B0 #x2C2)
+   (ucs-range->char-set #x2C2 #x2C6)
+   (ucs-range->char-set #x2C6 #x2D2)
+   (ucs-range->char-set #x2D2 #x2E0)
+   (ucs-range->char-set #x2E0 #x2E5)
+   (ucs-range->char-set #x2E5 #x2EE)
+   (char-set (ucs->char #x2EE))
+   (ucs-range->char-set #x2EF #x300)
+   (ucs-range->char-set #x374 #x376)
+   (char-set (ucs->char #x37A))
+   (char-set (ucs->char #x37E))
+   (ucs-range->char-set #x384 #x386)
+   (char-set (ucs->char #x386))
+   (char-set (ucs->char #x387))
+   (ucs-range->char-set #x388 #x38B)
+   (char-set (ucs->char #x38C))
+   (ucs-range->char-set #x38E #x3A2)
+   (ucs-range->char-set #x3A3 #x3CF)
+   (ucs-range->char-set #x3D0 #x3F6)
+   (char-set (ucs->char #x3F6))
+   (ucs-range->char-set #x3F7 #x3FC)
+   (ucs-range->char-set #x400 #x482)
+   (char-set (ucs->char #x482))
+   (ucs-range->char-set #x48A #x4CF)
+   (ucs-range->char-set #x4D0 #x4F6)
+   (ucs-range->char-set #x4F8 #x4FA)
+   (ucs-range->char-set #x500 #x510)
+   (ucs-range->char-set #x531 #x557)
+   (char-set (ucs->char #x559))
+   (ucs-range->char-set #x55A #x560)
+   (ucs-range->char-set #x561 #x588)
+   (char-set (ucs->char #x589))
+   (char-set (ucs->char #x58A))
+   (char-set (ucs->char #x5BE))
+   (char-set (ucs->char #x5C0))
+   (char-set (ucs->char #x5C3))
+   (ucs-range->char-set #x5D0 #x5EB)
+   (ucs-range->char-set #x5F0 #x5F3)
+   (ucs-range->char-set #x5F3 #x5F5)
+   (ucs-range->char-set #x60C #x60E)
+   (ucs-range->char-set #x60E #x610)
+   (char-set (ucs->char #x61B))
+   (char-set (ucs->char #x61F))
+   (ucs-range->char-set #x621 #x63B)
+   (char-set (ucs->char #x640))
+   (ucs-range->char-set #x641 #x64B)
+   (ucs-range->char-set #x660 #x66A)
+   (ucs-range->char-set #x66A #x66E)
+   (ucs-range->char-set #x66E #x670)
+   (ucs-range->char-set #x671 #x6D4)
+   (char-set (ucs->char #x6D4))
+   (char-set (ucs->char #x6D5))
+   (ucs-range->char-set #x6E5 #x6E7)
+   (char-set (ucs->char #x6E9))
+   (ucs-range->char-set #x6EE #x6F0)
+   (ucs-range->char-set #x6F0 #x6FA)
+   (ucs-range->char-set #x6FA #x6FD)
+   (ucs-range->char-set #x6FD #x6FF)
+   (char-set (ucs->char #x6FF))
+   (ucs-range->char-set #x700 #x70E)
+   (char-set (ucs->char #x710))
+   (ucs-range->char-set #x712 #x730)
+   (ucs-range->char-set #x74D #x750)
+   (ucs-range->char-set #x780 #x7A6)
+   (char-set (ucs->char #x7B1))
+   (char-set (ucs->char #x903))
+   (ucs-range->char-set #x904 #x93A)
+   (char-set (ucs->char #x93D))
+   (ucs-range->char-set #x93E #x941)
+   (ucs-range->char-set #x949 #x94D)
+   (char-set (ucs->char #x950))
+   (ucs-range->char-set #x958 #x962)
+   (ucs-range->char-set #x964 #x966)
+   (ucs-range->char-set #x966 #x970)
+   (char-set (ucs->char #x970))
+   (ucs-range->char-set #x982 #x984)
+   (ucs-range->char-set #x985 #x98D)
+   (ucs-range->char-set #x98F #x991)
+   (ucs-range->char-set #x993 #x9A9)
+   (ucs-range->char-set #x9AA #x9B1)
+   (char-set (ucs->char #x9B2))
+   (ucs-range->char-set #x9B6 #x9BA)
+   (char-set (ucs->char #x9BD))
+   (ucs-range->char-set #x9BF #x9C1)
+   (ucs-range->char-set #x9C7 #x9C9)
+   (ucs-range->char-set #x9CB #x9CD)
+   (ucs-range->char-set #x9DC #x9DE)
+   (ucs-range->char-set #x9DF #x9E2)
+   (ucs-range->char-set #x9E6 #x9F0)
+   (ucs-range->char-set #x9F0 #x9F2)
+   (ucs-range->char-set #x9F2 #x9F4)
+   (ucs-range->char-set #x9F4 #x9FA)
+   (char-set (ucs->char #x9FA))
+   (char-set (ucs->char #xA03))
+   (ucs-range->char-set #xA05 #xA0B)
+   (ucs-range->char-set #xA0F #xA11)
+   (ucs-range->char-set #xA13 #xA29)
+   (ucs-range->char-set #xA2A #xA31)
+   (ucs-range->char-set #xA32 #xA34)
+   (ucs-range->char-set #xA35 #xA37)
+   (ucs-range->char-set #xA38 #xA3A)
+   (ucs-range->char-set #xA3E #xA41)
+   (ucs-range->char-set #xA59 #xA5D)
+   (char-set (ucs->char #xA5E))
+   (ucs-range->char-set #xA66 #xA70)
+   (ucs-range->char-set #xA72 #xA75)
+   (char-set (ucs->char #xA83))
+   (ucs-range->char-set #xA85 #xA8E)
+   (ucs-range->char-set #xA8F #xA92)
+   (ucs-range->char-set #xA93 #xAA9)
+   (ucs-range->char-set #xAAA #xAB1)
+   (ucs-range->char-set #xAB2 #xAB4)
+   (ucs-range->char-set #xAB5 #xABA)
+   (char-set (ucs->char #xABD))
+   (ucs-range->char-set #xABE #xAC1)
+   (char-set (ucs->char #xAC9))
+   (ucs-range->char-set #xACB #xACD)
+   (char-set (ucs->char #xAD0))
+   (ucs-range->char-set #xAE0 #xAE2)
+   (ucs-range->char-set #xAE6 #xAF0)
+   (char-set (ucs->char #xAF1))
+   (ucs-range->char-set #xB02 #xB04)
+   (ucs-range->char-set #xB05 #xB0D)
+   (ucs-range->char-set #xB0F #xB11)
+   (ucs-range->char-set #xB13 #xB29)
+   (ucs-range->char-set #xB2A #xB31)
+   (ucs-range->char-set #xB32 #xB34)
+   (ucs-range->char-set #xB35 #xB3A)
+   (char-set (ucs->char #xB3D))
+   (char-set (ucs->char #xB40))
+   (ucs-range->char-set #xB47 #xB49)
+   (ucs-range->char-set #xB4B #xB4D)
+   (ucs-range->char-set #xB5C #xB5E)
+   (ucs-range->char-set #xB5F #xB62)
+   (ucs-range->char-set #xB66 #xB70)
+   (char-set (ucs->char #xB70))
+   (char-set (ucs->char #xB71))
+   (char-set (ucs->char #xB83))
+   (ucs-range->char-set #xB85 #xB8B)
+   (ucs-range->char-set #xB8E #xB91)
+   (ucs-range->char-set #xB92 #xB96)
+   (ucs-range->char-set #xB99 #xB9B)
+   (char-set (ucs->char #xB9C))
+   (ucs-range->char-set #xB9E #xBA0)
+   (ucs-range->char-set #xBA3 #xBA5)
+   (ucs-range->char-set #xBA8 #xBAB)
+   (ucs-range->char-set #xBAE #xBB6)
+   (ucs-range->char-set #xBB7 #xBBA)
+   (char-set (ucs->char #xBBF))
+   (ucs-range->char-set #xBC1 #xBC3)
+   (ucs-range->char-set #xBC6 #xBC9)
+   (ucs-range->char-set #xBCA #xBCD)
+   (ucs-range->char-set #xBE7 #xBF0)
+   (ucs-range->char-set #xBF0 #xBF3)
+   (ucs-range->char-set #xBF3 #xBF9)
+   (char-set (ucs->char #xBF9))
+   (char-set (ucs->char #xBFA))
+   (ucs-range->char-set #xC01 #xC04)
+   (ucs-range->char-set #xC05 #xC0D)
+   (ucs-range->char-set #xC0E #xC11)
+   (ucs-range->char-set #xC12 #xC29)
+   (ucs-range->char-set #xC2A #xC34)
+   (ucs-range->char-set #xC35 #xC3A)
+   (ucs-range->char-set #xC41 #xC45)
+   (ucs-range->char-set #xC60 #xC62)
+   (ucs-range->char-set #xC66 #xC70)
+   (ucs-range->char-set #xC82 #xC84)
+   (ucs-range->char-set #xC85 #xC8D)
+   (ucs-range->char-set #xC8E #xC91)
+   (ucs-range->char-set #xC92 #xCA9)
+   (ucs-range->char-set #xCAA #xCB4)
+   (ucs-range->char-set #xCB5 #xCBA)
+   (char-set (ucs->char #xCBD))
+   (char-set (ucs->char #xCBE))
+   (ucs-range->char-set #xCC0 #xCC2)
+   (ucs-range->char-set #xCC3 #xCC5)
+   (ucs-range->char-set #xCC7 #xCC9)
+   (ucs-range->char-set #xCCA #xCCC)
+   (char-set (ucs->char #xCDE))
+   (ucs-range->char-set #xCE0 #xCE2)
+   (ucs-range->char-set #xCE6 #xCF0)
+   (ucs-range->char-set #xD02 #xD04)
+   (ucs-range->char-set #xD05 #xD0D)
+   (ucs-range->char-set #xD0E #xD11)
+   (ucs-range->char-set #xD12 #xD29)
+   (ucs-range->char-set #xD2A #xD3A)
+   (ucs-range->char-set #xD3F #xD41)
+   (ucs-range->char-set #xD46 #xD49)
+   (ucs-range->char-set #xD4A #xD4D)
+   (ucs-range->char-set #xD60 #xD62)
+   (ucs-range->char-set #xD66 #xD70)
+   (ucs-range->char-set #xD82 #xD84)
+   (ucs-range->char-set #xD85 #xD97)
+   (ucs-range->char-set #xD9A #xDB2)
+   (ucs-range->char-set #xDB3 #xDBC)
+   (char-set (ucs->char #xDBD))
+   (ucs-range->char-set #xDC0 #xDC7)
+   (ucs-range->char-set #xDD0 #xDD2)
+   (ucs-range->char-set #xDD8 #xDDF)
+   (ucs-range->char-set #xDF2 #xDF4)
+   (char-set (ucs->char #xDF4))
+   (ucs-range->char-set #xE01 #xE31)
+   (ucs-range->char-set #xE32 #xE34)
+   (char-set (ucs->char #xE3F))
+   (ucs-range->char-set #xE40 #xE46)
+   (char-set (ucs->char #xE46))
+   (char-set (ucs->char #xE4F))
+   (ucs-range->char-set #xE50 #xE5A)
+   (ucs-range->char-set #xE5A #xE5C)
+   (ucs-range->char-set #xE81 #xE83)
+   (char-set (ucs->char #xE84))
+   (ucs-range->char-set #xE87 #xE89)
+   (char-set (ucs->char #xE8A))
+   (char-set (ucs->char #xE8D))
+   (ucs-range->char-set #xE94 #xE98)
+   (ucs-range->char-set #xE99 #xEA0)
+   (ucs-range->char-set #xEA1 #xEA4)
+   (char-set (ucs->char #xEA5))
+   (char-set (ucs->char #xEA7))
+   (ucs-range->char-set #xEAA #xEAC)
+   (ucs-range->char-set #xEAD #xEB1)
+   (ucs-range->char-set #xEB2 #xEB4)
+   (char-set (ucs->char #xEBD))
+   (ucs-range->char-set #xEC0 #xEC5)
+   (char-set (ucs->char #xEC6))
+   (ucs-range->char-set #xED0 #xEDA)
+   (ucs-range->char-set #xEDC #xEDE)
+   (char-set (ucs->char #xF00))
+   (ucs-range->char-set #xF01 #xF04)
+   (ucs-range->char-set #xF04 #xF13)
+   (ucs-range->char-set #xF13 #xF18)
+   (ucs-range->char-set #xF1A #xF20)
+   (ucs-range->char-set #xF20 #xF2A)
+   (ucs-range->char-set #xF2A #xF34)
+   (char-set (ucs->char #xF34))
+   (char-set (ucs->char #xF36))
+   (char-set (ucs->char #xF38))
+   (char-set (ucs->char #xF3A))
+   (char-set (ucs->char #xF3B))
+   (char-set (ucs->char #xF3C))
+   (char-set (ucs->char #xF3D))
+   (ucs-range->char-set #xF3E #xF40)
+   (ucs-range->char-set #xF40 #xF48)
+   (ucs-range->char-set #xF49 #xF6B)
+   (char-set (ucs->char #xF7F))
+   (char-set (ucs->char #xF85))
+   (ucs-range->char-set #xF88 #xF8C)
+   (ucs-range->char-set #xFBE #xFC6)
+   (ucs-range->char-set #xFC7 #xFCD)
+   (char-set (ucs->char #xFCF))
+   (ucs-range->char-set #x1000 #x1022)
+   (ucs-range->char-set #x1023 #x1028)
+   (ucs-range->char-set #x1029 #x102B)
+   (char-set (ucs->char #x102C))
+   (char-set (ucs->char #x1031))
+   (char-set (ucs->char #x1038))
+   (ucs-range->char-set #x1040 #x104A)
+   (ucs-range->char-set #x104A #x1050)
+   (ucs-range->char-set #x1050 #x1056)
+   (ucs-range->char-set #x1056 #x1058)
+   (ucs-range->char-set #x10A0 #x10C6)
+   (ucs-range->char-set #x10D0 #x10F9)
+   (char-set (ucs->char #x10FB))
+   (ucs-range->char-set #x1100 #x115A)
+   (ucs-range->char-set #x115F #x11A3)
+   (ucs-range->char-set #x11A8 #x11FA)
+   (ucs-range->char-set #x1200 #x1207)
+   (ucs-range->char-set #x1208 #x1247)
+   (char-set (ucs->char #x1248))
+   (ucs-range->char-set #x124A #x124E)
+   (ucs-range->char-set #x1250 #x1257)
+   (char-set (ucs->char #x1258))
+   (ucs-range->char-set #x125A #x125E)
+   (ucs-range->char-set #x1260 #x1287)
+   (char-set (ucs->char #x1288))
+   (ucs-range->char-set #x128A #x128E)
+   (ucs-range->char-set #x1290 #x12AF)
+   (char-set (ucs->char #x12B0))
+   (ucs-range->char-set #x12B2 #x12B6)
+   (ucs-range->char-set #x12B8 #x12BF)
+   (char-set (ucs->char #x12C0))
+   (ucs-range->char-set #x12C2 #x12C6)
+   (ucs-range->char-set #x12C8 #x12CF)
+   (ucs-range->char-set #x12D0 #x12D7)
+   (ucs-range->char-set #x12D8 #x12EF)
+   (ucs-range->char-set #x12F0 #x130F)
+   (char-set (ucs->char #x1310))
+   (ucs-range->char-set #x1312 #x1316)
+   (ucs-range->char-set #x1318 #x131F)
+   (ucs-range->char-set #x1320 #x1347)
+   (ucs-range->char-set #x1348 #x135B)
+   (ucs-range->char-set #x1361 #x1369)
+   (ucs-range->char-set #x1369 #x1372)
+   (ucs-range->char-set #x1372 #x137D)
+   (ucs-range->char-set #x13A0 #x13F5)
+   (ucs-range->char-set #x1401 #x166D)
+   (ucs-range->char-set #x166D #x166F)
+   (ucs-range->char-set #x166F #x1677)
+   (char-set (ucs->char #x1680))
+   (ucs-range->char-set #x1681 #x169B)
+   (char-set (ucs->char #x169B))
+   (char-set (ucs->char #x169C))
+   (ucs-range->char-set #x16A0 #x16EB)
+   (ucs-range->char-set #x16EB #x16EE)
+   (ucs-range->char-set #x16EE #x16F1)
+   (ucs-range->char-set #x1700 #x170D)
+   (ucs-range->char-set #x170E #x1712)
+   (ucs-range->char-set #x1720 #x1732)
+   (ucs-range->char-set #x1735 #x1737)
+   (ucs-range->char-set #x1740 #x1752)
+   (ucs-range->char-set #x1760 #x176D)
+   (ucs-range->char-set #x176E #x1771)
+   (ucs-range->char-set #x1780 #x17B4)
+   (char-set (ucs->char #x17B6))
+   (ucs-range->char-set #x17BE #x17C6)
+   (ucs-range->char-set #x17C7 #x17C9)
+   (ucs-range->char-set #x17D4 #x17D7)
+   (char-set (ucs->char #x17D7))
+   (ucs-range->char-set #x17D8 #x17DB)
+   (char-set (ucs->char #x17DB))
+   (char-set (ucs->char #x17DC))
+   (ucs-range->char-set #x17E0 #x17EA)
+   (ucs-range->char-set #x17F0 #x17FA)
+   (ucs-range->char-set #x1800 #x1806)
+   (char-set (ucs->char #x1806))
+   (ucs-range->char-set #x1807 #x180B)
+   (char-set (ucs->char #x180E))
+   (ucs-range->char-set #x1810 #x181A)
+   (ucs-range->char-set #x1820 #x1843)
+   (char-set (ucs->char #x1843))
+   (ucs-range->char-set #x1844 #x1878)
+   (ucs-range->char-set #x1880 #x18A9)
+   (ucs-range->char-set #x1900 #x191D)
+   (ucs-range->char-set #x1923 #x1927)
+   (ucs-range->char-set #x1929 #x192C)
+   (ucs-range->char-set #x1930 #x1932)
+   (ucs-range->char-set #x1933 #x1939)
+   (char-set (ucs->char #x1940))
+   (ucs-range->char-set #x1944 #x1946)
+   (ucs-range->char-set #x1946 #x1950)
+   (ucs-range->char-set #x1950 #x196E)
+   (ucs-range->char-set #x1970 #x1975)
+   (ucs-range->char-set #x19E0 #x1A00)
+   (ucs-range->char-set #x1D00 #x1D2C)
+   (ucs-range->char-set #x1D2C #x1D62)
+   (ucs-range->char-set #x1D62 #x1D6C)
+   (ucs-range->char-set #x1E00 #x1E9C)
+   (ucs-range->char-set #x1EA0 #x1EFA)
+   (ucs-range->char-set #x1F00 #x1F16)
+   (ucs-range->char-set #x1F18 #x1F1E)
+   (ucs-range->char-set #x1F20 #x1F46)
+   (ucs-range->char-set #x1F48 #x1F4E)
+   (ucs-range->char-set #x1F50 #x1F58)
+   (char-set (ucs->char #x1F59))
+   (char-set (ucs->char #x1F5B))
+   (char-set (ucs->char #x1F5D))
+   (ucs-range->char-set #x1F5F #x1F7E)
+   (ucs-range->char-set #x1F80 #x1FB5)
+   (ucs-range->char-set #x1FB6 #x1FBD)
+   (char-set (ucs->char #x1FBD))
+   (char-set (ucs->char #x1FBE))
+   (ucs-range->char-set #x1FBF #x1FC2)
+   (ucs-range->char-set #x1FC2 #x1FC5)
+   (ucs-range->char-set #x1FC6 #x1FCD)
+   (ucs-range->char-set #x1FCD #x1FD0)
+   (ucs-range->char-set #x1FD0 #x1FD4)
+   (ucs-range->char-set #x1FD6 #x1FDC)
+   (ucs-range->char-set #x1FDD #x1FE0)
+   (ucs-range->char-set #x1FE0 #x1FED)
+   (ucs-range->char-set #x1FED #x1FF0)
+   (ucs-range->char-set #x1FF2 #x1FF5)
+   (ucs-range->char-set #x1FF6 #x1FFD)
+   (ucs-range->char-set #x1FFD #x1FFF)
+   (ucs-range->char-set #x2000 #x200C)
+   (ucs-range->char-set #x2010 #x2016)
+   (ucs-range->char-set #x2016 #x2018)
+   (char-set (ucs->char #x2018))
+   (char-set (ucs->char #x2019))
+   (char-set (ucs->char #x201A))
+   (ucs-range->char-set #x201B #x201D)
+   (char-set (ucs->char #x201D))
+   (char-set (ucs->char #x201E))
+   (char-set (ucs->char #x201F))
+   (ucs-range->char-set #x2020 #x2028)
+   (char-set (ucs->char #x202F))
+   (ucs-range->char-set #x2030 #x2039)
+   (char-set (ucs->char #x2039))
+   (char-set (ucs->char #x203A))
+   (ucs-range->char-set #x203B #x203F)
+   (ucs-range->char-set #x203F #x2041)
+   (ucs-range->char-set #x2041 #x2044)
+   (char-set (ucs->char #x2044))
+   (char-set (ucs->char #x2045))
+   (char-set (ucs->char #x2046))
+   (ucs-range->char-set #x2047 #x2052)
+   (char-set (ucs->char #x2052))
+   (char-set (ucs->char #x2053))
+   (char-set (ucs->char #x2054))
+   (char-set (ucs->char #x2057))
+   (char-set (ucs->char #x205F))
+   (char-set (ucs->char #x2070))
+   (char-set (ucs->char #x2071))
+   (ucs-range->char-set #x2074 #x207A)
+   (ucs-range->char-set #x207A #x207D)
+   (char-set (ucs->char #x207D))
+   (char-set (ucs->char #x207E))
+   (char-set (ucs->char #x207F))
+   (ucs-range->char-set #x2080 #x208A)
+   (ucs-range->char-set #x208A #x208D)
+   (char-set (ucs->char #x208D))
+   (char-set (ucs->char #x208E))
+   (ucs-range->char-set #x20A0 #x20B2)
+   (ucs-range->char-set #x2100 #x2102)
+   (char-set (ucs->char #x2102))
+   (ucs-range->char-set #x2103 #x2107)
+   (char-set (ucs->char #x2107))
+   (ucs-range->char-set #x2108 #x210A)
+   (ucs-range->char-set #x210A #x2114)
+   (char-set (ucs->char #x2114))
+   (char-set (ucs->char #x2115))
+   (ucs-range->char-set #x2116 #x2119)
+   (ucs-range->char-set #x2119 #x211E)
+   (ucs-range->char-set #x211E #x2124)
+   (char-set (ucs->char #x2124))
+   (char-set (ucs->char #x2125))
+   (char-set (ucs->char #x2126))
+   (char-set (ucs->char #x2127))
+   (char-set (ucs->char #x2128))
+   (char-set (ucs->char #x2129))
+   (ucs-range->char-set #x212A #x212E)
+   (char-set (ucs->char #x212E))
+   (ucs-range->char-set #x212F #x2132)
+   (char-set (ucs->char #x2132))
+   (ucs-range->char-set #x2133 #x2135)
+   (ucs-range->char-set #x2135 #x2139)
+   (char-set (ucs->char #x2139))
+   (ucs-range->char-set #x213A #x213C)
+   (ucs-range->char-set #x213D #x2140)
+   (ucs-range->char-set #x2140 #x2145)
+   (ucs-range->char-set #x2145 #x214A)
+   (char-set (ucs->char #x214A))
+   (char-set (ucs->char #x214B))
+   (ucs-range->char-set #x2153 #x2160)
+   (ucs-range->char-set #x2160 #x2184)
+   (ucs-range->char-set #x2190 #x2195)
+   (ucs-range->char-set #x2195 #x219A)
+   (ucs-range->char-set #x219A #x219C)
+   (ucs-range->char-set #x219C #x21A0)
+   (char-set (ucs->char #x21A0))
+   (ucs-range->char-set #x21A1 #x21A3)
+   (char-set (ucs->char #x21A3))
+   (ucs-range->char-set #x21A4 #x21A6)
+   (char-set (ucs->char #x21A6))
+   (ucs-range->char-set #x21A7 #x21AE)
+   (char-set (ucs->char #x21AE))
+   (ucs-range->char-set #x21AF #x21CE)
+   (ucs-range->char-set #x21CE #x21D0)
+   (ucs-range->char-set #x21D0 #x21D2)
+   (char-set (ucs->char #x21D2))
+   (char-set (ucs->char #x21D3))
+   (char-set (ucs->char #x21D4))
+   (ucs-range->char-set #x21D5 #x21F4)
+   (ucs-range->char-set #x21F4 #x2300)
+   (ucs-range->char-set #x2300 #x2308)
+   (ucs-range->char-set #x2308 #x230C)
+   (ucs-range->char-set #x230C #x2320)
+   (ucs-range->char-set #x2320 #x2322)
+   (ucs-range->char-set #x2322 #x2329)
+   (char-set (ucs->char #x2329))
+   (char-set (ucs->char #x232A))
+   (ucs-range->char-set #x232B #x237C)
+   (char-set (ucs->char #x237C))
+   (ucs-range->char-set #x237D #x239B)
+   (ucs-range->char-set #x239B #x23B4)
+   (char-set (ucs->char #x23B4))
+   (char-set (ucs->char #x23B5))
+   (char-set (ucs->char #x23B6))
+   (ucs-range->char-set #x23B7 #x23D1)
+   (ucs-range->char-set #x2400 #x2427)
+   (ucs-range->char-set #x2440 #x244B)
+   (ucs-range->char-set #x2460 #x249C)
+   (ucs-range->char-set #x249C #x24EA)
+   (ucs-range->char-set #x24EA #x2500)
+   (ucs-range->char-set #x2500 #x25B7)
+   (char-set (ucs->char #x25B7))
+   (ucs-range->char-set #x25B8 #x25C1)
+   (char-set (ucs->char #x25C1))
+   (ucs-range->char-set #x25C2 #x25F8)
+   (ucs-range->char-set #x25F8 #x2600)
+   (ucs-range->char-set #x2600 #x2618)
+   (ucs-range->char-set #x2619 #x266F)
+   (char-set (ucs->char #x266F))
+   (ucs-range->char-set #x2670 #x267E)
+   (ucs-range->char-set #x2680 #x2692)
+   (ucs-range->char-set #x26A0 #x26A2)
+   (ucs-range->char-set #x2701 #x2705)
+   (ucs-range->char-set #x2706 #x270A)
+   (ucs-range->char-set #x270C #x2728)
+   (ucs-range->char-set #x2729 #x274C)
+   (char-set (ucs->char #x274D))
+   (ucs-range->char-set #x274F #x2753)
+   (char-set (ucs->char #x2756))
+   (ucs-range->char-set #x2758 #x275F)
+   (ucs-range->char-set #x2761 #x2768)
+   (char-set (ucs->char #x2768))
+   (char-set (ucs->char #x2769))
+   (char-set (ucs->char #x276A))
+   (char-set (ucs->char #x276B))
+   (char-set (ucs->char #x276C))
+   (char-set (ucs->char #x276D))
+   (char-set (ucs->char #x276E))
+   (char-set (ucs->char #x276F))
+   (char-set (ucs->char #x2770))
+   (char-set (ucs->char #x2771))
+   (char-set (ucs->char #x2772))
+   (char-set (ucs->char #x2773))
+   (char-set (ucs->char #x2774))
+   (char-set (ucs->char #x2775))
+   (ucs-range->char-set #x2776 #x2794)
+   (char-set (ucs->char #x2794))
+   (ucs-range->char-set #x2798 #x27B0)
+   (ucs-range->char-set #x27B1 #x27BF)
+   (ucs-range->char-set #x27D0 #x27E6)
+   (char-set (ucs->char #x27E6))
+   (char-set (ucs->char #x27E7))
+   (char-set (ucs->char #x27E8))
+   (char-set (ucs->char #x27E9))
+   (char-set (ucs->char #x27EA))
+   (char-set (ucs->char #x27EB))
+   (ucs-range->char-set #x27F0 #x2800)
+   (ucs-range->char-set #x2800 #x2900)
+   (ucs-range->char-set #x2900 #x2983)
+   (char-set (ucs->char #x2983))
+   (char-set (ucs->char #x2984))
+   (char-set (ucs->char #x2985))
+   (char-set (ucs->char #x2986))
+   (char-set (ucs->char #x2987))
+   (char-set (ucs->char #x2988))
+   (char-set (ucs->char #x2989))
+   (char-set (ucs->char #x298A))
+   (char-set (ucs->char #x298B))
+   (char-set (ucs->char #x298C))
+   (char-set (ucs->char #x298D))
+   (char-set (ucs->char #x298E))
+   (char-set (ucs->char #x298F))
+   (char-set (ucs->char #x2990))
+   (char-set (ucs->char #x2991))
+   (char-set (ucs->char #x2992))
+   (char-set (ucs->char #x2993))
+   (char-set (ucs->char #x2994))
+   (char-set (ucs->char #x2995))
+   (char-set (ucs->char #x2996))
+   (char-set (ucs->char #x2997))
+   (char-set (ucs->char #x2998))
+   (ucs-range->char-set #x2999 #x29D8)
+   (char-set (ucs->char #x29D8))
+   (char-set (ucs->char #x29D9))
+   (char-set (ucs->char #x29DA))
+   (char-set (ucs->char #x29DB))
+   (ucs-range->char-set #x29DC #x29FC)
+   (char-set (ucs->char #x29FC))
+   (char-set (ucs->char #x29FD))
+   (ucs-range->char-set #x29FE #x2B00)
+   (ucs-range->char-set #x2B00 #x2B0E)
+   (ucs-range->char-set #x2E80 #x2E9A)
+   (ucs-range->char-set #x2E9B #x2EF4)
+   (ucs-range->char-set #x2F00 #x2FD6)
+   (ucs-range->char-set #x2FF0 #x2FFC)
+   (char-set (ucs->char #x3000))
+   (ucs-range->char-set #x3001 #x3004)
+   (char-set (ucs->char #x3004))
+   (char-set (ucs->char #x3005))
+   (char-set (ucs->char #x3006))
+   (char-set (ucs->char #x3007))
+   (char-set (ucs->char #x3008))
+   (char-set (ucs->char #x3009))
+   (char-set (ucs->char #x300A))
+   (char-set (ucs->char #x300B))
+   (char-set (ucs->char #x300C))
+   (char-set (ucs->char #x300D))
+   (char-set (ucs->char #x300E))
+   (char-set (ucs->char #x300F))
+   (char-set (ucs->char #x3010))
+   (char-set (ucs->char #x3011))
+   (ucs-range->char-set #x3012 #x3014)
+   (char-set (ucs->char #x3014))
+   (char-set (ucs->char #x3015))
+   (char-set (ucs->char #x3016))
+   (char-set (ucs->char #x3017))
+   (char-set (ucs->char #x3018))
+   (char-set (ucs->char #x3019))
+   (char-set (ucs->char #x301A))
+   (char-set (ucs->char #x301B))
+   (char-set (ucs->char #x301C))
+   (char-set (ucs->char #x301D))
+   (ucs-range->char-set #x301E #x3020)
+   (char-set (ucs->char #x3020))
+   (ucs-range->char-set #x3021 #x302A)
+   (char-set (ucs->char #x3030))
+   (ucs-range->char-set #x3031 #x3036)
+   (ucs-range->char-set #x3036 #x3038)
+   (ucs-range->char-set #x3038 #x303B)
+   (char-set (ucs->char #x303B))
+   (char-set (ucs->char #x303C))
+   (char-set (ucs->char #x303D))
+   (ucs-range->char-set #x303E #x3040)
+   (ucs-range->char-set #x3041 #x3097)
+   (ucs-range->char-set #x309B #x309D)
+   (ucs-range->char-set #x309D #x309F)
+   (char-set (ucs->char #x309F))
+   (char-set (ucs->char #x30A0))
+   (ucs-range->char-set #x30A1 #x30FB)
+   (char-set (ucs->char #x30FB))
+   (ucs-range->char-set #x30FC #x30FF)
+   (char-set (ucs->char #x30FF))
+   (ucs-range->char-set #x3105 #x312D)
+   (ucs-range->char-set #x3131 #x318F)
+   (ucs-range->char-set #x3190 #x3192)
+   (ucs-range->char-set #x3192 #x3196)
+   (ucs-range->char-set #x3196 #x31A0)
+   (ucs-range->char-set #x31A0 #x31B8)
+   (ucs-range->char-set #x31F0 #x3200)
+   (ucs-range->char-set #x3200 #x321F)
+   (ucs-range->char-set #x3220 #x322A)
+   (ucs-range->char-set #x322A #x3244)
+   (char-set (ucs->char #x3250))
+   (ucs-range->char-set #x3251 #x3260)
+   (ucs-range->char-set #x3260 #x327E)
+   (char-set (ucs->char #x327F))
+   (ucs-range->char-set #x3280 #x328A)
+   (ucs-range->char-set #x328A #x32B1)
+   (ucs-range->char-set #x32B1 #x32C0)
+   (ucs-range->char-set #x32C0 #x32FF)
+   (ucs-range->char-set #x3300 #x3400)
+   (ucs-range->char-set #x3400 #x4DB6)
+   (ucs-range->char-set #x4DC0 #x4E00)
+   (ucs-range->char-set #x4E00 #x9FA6)
+   (ucs-range->char-set #xA000 #xA48D)
+   (ucs-range->char-set #xA490 #xA4C7)
+   (ucs-range->char-set #xAC00 #xD7A4)
+   (ucs-range->char-set #xF900 #xFA2E)
+   (ucs-range->char-set #xFA30 #xFA6B)
+   (ucs-range->char-set #xFB00 #xFB07)
+   (ucs-range->char-set #xFB13 #xFB18)
+   (char-set (ucs->char #xFB1D))
+   (ucs-range->char-set #xFB1F #xFB29)
+   (char-set (ucs->char #xFB29))
+   (ucs-range->char-set #xFB2A #xFB37)
+   (ucs-range->char-set #xFB38 #xFB3D)
+   (char-set (ucs->char #xFB3E))
+   (ucs-range->char-set #xFB40 #xFB42)
+   (ucs-range->char-set #xFB43 #xFB45)
+   (ucs-range->char-set #xFB46 #xFBB2)
+   (ucs-range->char-set #xFBD3 #xFD3E)
+   (char-set (ucs->char #xFD3E))
+   (char-set (ucs->char #xFD3F))
+   (ucs-range->char-set #xFD50 #xFD90)
+   (ucs-range->char-set #xFD92 #xFDC8)
+   (ucs-range->char-set #xFDF0 #xFDFC)
+   (char-set (ucs->char #xFDFC))
+   (char-set (ucs->char #xFDFD))
+   (char-set (ucs->char #xFE30))
+   (ucs-range->char-set #xFE31 #xFE33)
+   (ucs-range->char-set #xFE33 #xFE35)
+   (char-set (ucs->char #xFE35))
+   (char-set (ucs->char #xFE36))
+   (char-set (ucs->char #xFE37))
+   (char-set (ucs->char #xFE38))
+   (char-set (ucs->char #xFE39))
+   (char-set (ucs->char #xFE3A))
+   (char-set (ucs->char #xFE3B))
+   (char-set (ucs->char #xFE3C))
+   (char-set (ucs->char #xFE3D))
+   (char-set (ucs->char #xFE3E))
+   (char-set (ucs->char #xFE3F))
+   (char-set (ucs->char #xFE40))
+   (char-set (ucs->char #xFE41))
+   (char-set (ucs->char #xFE42))
+   (char-set (ucs->char #xFE43))
+   (char-set (ucs->char #xFE44))
+   (ucs-range->char-set #xFE45 #xFE47)
+   (char-set (ucs->char #xFE47))
+   (char-set (ucs->char #xFE48))
+   (ucs-range->char-set #xFE49 #xFE4D)
+   (ucs-range->char-set #xFE4D #xFE50)
+   (ucs-range->char-set #xFE50 #xFE53)
+   (ucs-range->char-set #xFE54 #xFE58)
+   (char-set (ucs->char #xFE58))
+   (char-set (ucs->char #xFE59))
+   (char-set (ucs->char #xFE5A))
+   (char-set (ucs->char #xFE5B))
+   (char-set (ucs->char #xFE5C))
+   (char-set (ucs->char #xFE5D))
+   (char-set (ucs->char #xFE5E))
+   (ucs-range->char-set #xFE5F #xFE62)
+   (char-set (ucs->char #xFE62))
+   (char-set (ucs->char #xFE63))
+   (ucs-range->char-set #xFE64 #xFE67)
+   (char-set (ucs->char #xFE68))
+   (char-set (ucs->char #xFE69))
+   (ucs-range->char-set #xFE6A #xFE6C)
+   (ucs-range->char-set #xFE70 #xFE75)
+   (ucs-range->char-set #xFE76 #xFEFD)
+   (ucs-range->char-set #xFF01 #xFF04)
+   (char-set (ucs->char #xFF04))
+   (ucs-range->char-set #xFF05 #xFF08)
+   (char-set (ucs->char #xFF08))
+   (char-set (ucs->char #xFF09))
+   (char-set (ucs->char #xFF0A))
+   (char-set (ucs->char #xFF0B))
+   (char-set (ucs->char #xFF0C))
+   (char-set (ucs->char #xFF0D))
+   (ucs-range->char-set #xFF0E #xFF10)
+   (ucs-range->char-set #xFF10 #xFF1A)
+   (ucs-range->char-set #xFF1A #xFF1C)
+   (ucs-range->char-set #xFF1C #xFF1F)
+   (ucs-range->char-set #xFF1F #xFF21)
+   (ucs-range->char-set #xFF21 #xFF3B)
+   (char-set (ucs->char #xFF3B))
+   (char-set (ucs->char #xFF3C))
+   (char-set (ucs->char #xFF3D))
+   (char-set (ucs->char #xFF3E))
+   (char-set (ucs->char #xFF3F))
+   (char-set (ucs->char #xFF40))
+   (ucs-range->char-set #xFF41 #xFF5B)
+   (char-set (ucs->char #xFF5B))
+   (char-set (ucs->char #xFF5C))
+   (char-set (ucs->char #xFF5D))
+   (char-set (ucs->char #xFF5E))
+   (char-set (ucs->char #xFF5F))
+   (char-set (ucs->char #xFF60))
+   (char-set (ucs->char #xFF61))
+   (char-set (ucs->char #xFF62))
+   (char-set (ucs->char #xFF63))
+   (char-set (ucs->char #xFF64))
+   (char-set (ucs->char #xFF65))
+   (ucs-range->char-set #xFF66 #xFF70)
+   (char-set (ucs->char #xFF70))
+   (ucs-range->char-set #xFF71 #xFF9E)
+   (ucs-range->char-set #xFF9E #xFFA0)
+   (ucs-range->char-set #xFFA0 #xFFBF)
+   (ucs-range->char-set #xFFC2 #xFFC8)
+   (ucs-range->char-set #xFFCA #xFFD0)
+   (ucs-range->char-set #xFFD2 #xFFD8)
+   (ucs-range->char-set #xFFDA #xFFDD)
+   (ucs-range->char-set #xFFE0 #xFFE2)
+   (char-set (ucs->char #xFFE2))
+   (char-set (ucs->char #xFFE3))
+   (char-set (ucs->char #xFFE4))
+   (ucs-range->char-set #xFFE5 #xFFE7)
+   (char-set (ucs->char #xFFE8))
+   (ucs-range->char-set #xFFE9 #xFFED)
+   (ucs-range->char-set #xFFED #xFFEF)
+   (ucs-range->char-set #xFFFC #xFFFE)
+   (ucs-range->char-set #x10000 #x1000C)
+   (ucs-range->char-set #x1000D #x10027)
+   (ucs-range->char-set #x10028 #x1003B)
+   (ucs-range->char-set #x1003C #x1003E)
+   (ucs-range->char-set #x1003F #x1004E)
+   (ucs-range->char-set #x10050 #x1005E)
+   (ucs-range->char-set #x10080 #x100FB)
+   (ucs-range->char-set #x10100 #x10102)
+   (char-set (ucs->char #x10102))
+   (ucs-range->char-set #x10107 #x10134)
+   (ucs-range->char-set #x10137 #x10140)
+   (ucs-range->char-set #x10300 #x1031F)
+   (ucs-range->char-set #x10320 #x10324)
+   (ucs-range->char-set #x10330 #x1034A)
+   (char-set (ucs->char #x1034A))
+   (ucs-range->char-set #x10380 #x1039E)
+   (char-set (ucs->char #x1039F))
+   (ucs-range->char-set #x10400 #x10450)
+   (ucs-range->char-set #x10450 #x1049E)
+   (ucs-range->char-set #x104A0 #x104AA)
+   (ucs-range->char-set #x10800 #x10806)
+   (char-set (ucs->char #x10808))
+   (ucs-range->char-set #x1080A #x10836)
+   (ucs-range->char-set #x10837 #x10839)
+   (char-set (ucs->char #x1083C))
+   (char-set (ucs->char #x1083F))
+   (ucs-range->char-set #x1D000 #x1D0F6)
+   (ucs-range->char-set #x1D100 #x1D127)
+   (ucs-range->char-set #x1D12A #x1D165)
+   (char-set (ucs->char #x1D166))
+   (ucs-range->char-set #x1D16A #x1D16D)
+   (char-set (ucs->char #x1D16D))
+   (ucs-range->char-set #x1D170 #x1D173)
+   (ucs-range->char-set #x1D183 #x1D185)
+   (ucs-range->char-set #x1D18C #x1D1AA)
+   (ucs-range->char-set #x1D1AE #x1D1DE)
+   (ucs-range->char-set #x1D300 #x1D357)
+   (ucs-range->char-set #x1D400 #x1D455)
+   (ucs-range->char-set #x1D456 #x1D49D)
+   (ucs-range->char-set #x1D49E #x1D4A0)
+   (char-set (ucs->char #x1D4A2))
+   (ucs-range->char-set #x1D4A5 #x1D4A7)
+   (ucs-range->char-set #x1D4A9 #x1D4AD)
+   (ucs-range->char-set #x1D4AE #x1D4BA)
+   (char-set (ucs->char #x1D4BB))
+   (ucs-range->char-set #x1D4BD #x1D4C4)
+   (ucs-range->char-set #x1D4C5 #x1D506)
+   (ucs-range->char-set #x1D507 #x1D50B)
+   (ucs-range->char-set #x1D50D #x1D515)
+   (ucs-range->char-set #x1D516 #x1D51D)
+   (ucs-range->char-set #x1D51E #x1D53A)
+   (ucs-range->char-set #x1D53B #x1D53F)
+   (ucs-range->char-set #x1D540 #x1D545)
+   (char-set (ucs->char #x1D546))
+   (ucs-range->char-set #x1D54A #x1D551)
+   (ucs-range->char-set #x1D552 #x1D6A4)
+   (ucs-range->char-set #x1D6A8 #x1D6C1)
+   (char-set (ucs->char #x1D6C1))
+   (ucs-range->char-set #x1D6C2 #x1D6DB)
+   (char-set (ucs->char #x1D6DB))
+   (ucs-range->char-set #x1D6DC #x1D6FB)
+   (char-set (ucs->char #x1D6FB))
+   (ucs-range->char-set #x1D6FC #x1D715)
+   (char-set (ucs->char #x1D715))
+   (ucs-range->char-set #x1D716 #x1D735)
+   (char-set (ucs->char #x1D735))
+   (ucs-range->char-set #x1D736 #x1D74F)
+   (char-set (ucs->char #x1D74F))
+   (ucs-range->char-set #x1D750 #x1D76F)
+   (char-set (ucs->char #x1D76F))
+   (ucs-range->char-set #x1D770 #x1D789)
+   (char-set (ucs->char #x1D789))
+   (ucs-range->char-set #x1D78A #x1D7A9)
+   (char-set (ucs->char #x1D7A9))
+   (ucs-range->char-set #x1D7AA #x1D7C3)
+   (char-set (ucs->char #x1D7C3))
+   (ucs-range->char-set #x1D7C4 #x1D7CA)
+   (ucs-range->char-set #x1D7CE #x1D800)
+   (ucs-range->char-set #x20000 #x2A6D7)
+   (ucs-range->char-set #x2F800 #x2FA1E)
+   ))
+
+(define char-set:grapheme-extend
+  (char-set-union
+   char-set:other-grapheme-extend
+   (ucs-range->char-set #x300 #x358)
+   (ucs-range->char-set #x35D #x370)
+   (ucs-range->char-set #x483 #x487)
+   (ucs-range->char-set #x488 #x48A)
+   (ucs-range->char-set #x591 #x5A2)
+   (ucs-range->char-set #x5A3 #x5BA)
+   (ucs-range->char-set #x5BB #x5BE)
+   (char-set (ucs->char #x5BF))
+   (ucs-range->char-set #x5C1 #x5C3)
+   (char-set (ucs->char #x5C4))
+   (ucs-range->char-set #x610 #x616)
+   (ucs-range->char-set #x64B #x659)
+   (char-set (ucs->char #x670))
+   (ucs-range->char-set #x6D6 #x6DD)
+   (char-set (ucs->char #x6DE))
+   (ucs-range->char-set #x6DF #x6E5)
+   (ucs-range->char-set #x6E7 #x6E9)
+   (ucs-range->char-set #x6EA #x6EE)
+   (char-set (ucs->char #x711))
+   (ucs-range->char-set #x730 #x74B)
+   (ucs-range->char-set #x7A6 #x7B1)
+   (ucs-range->char-set #x901 #x903)
+   (char-set (ucs->char #x93C))
+   (ucs-range->char-set #x941 #x949)
+   (char-set (ucs->char #x94D))
+   (ucs-range->char-set #x951 #x955)
+   (ucs-range->char-set #x962 #x964)
+   (char-set (ucs->char #x981))
+   (char-set (ucs->char #x9BC))
+   (ucs-range->char-set #x9C1 #x9C5)
+   (char-set (ucs->char #x9CD))
+   (ucs-range->char-set #x9E2 #x9E4)
+   (ucs-range->char-set #xA01 #xA03)
+   (char-set (ucs->char #xA3C))
+   (ucs-range->char-set #xA41 #xA43)
+   (ucs-range->char-set #xA47 #xA49)
+   (ucs-range->char-set #xA4B #xA4E)
+   (ucs-range->char-set #xA70 #xA72)
+   (ucs-range->char-set #xA81 #xA83)
+   (char-set (ucs->char #xABC))
+   (ucs-range->char-set #xAC1 #xAC6)
+   (ucs-range->char-set #xAC7 #xAC9)
+   (char-set (ucs->char #xACD))
+   (ucs-range->char-set #xAE2 #xAE4)
+   (char-set (ucs->char #xB01))
+   (char-set (ucs->char #xB3C))
+   (char-set (ucs->char #xB3F))
+   (ucs-range->char-set #xB41 #xB44)
+   (char-set (ucs->char #xB4D))
+   (char-set (ucs->char #xB56))
+   (char-set (ucs->char #xB82))
+   (char-set (ucs->char #xBC0))
+   (char-set (ucs->char #xBCD))
+   (ucs-range->char-set #xC3E #xC41)
+   (ucs-range->char-set #xC46 #xC49)
+   (ucs-range->char-set #xC4A #xC4E)
+   (ucs-range->char-set #xC55 #xC57)
+   (char-set (ucs->char #xCBC))
+   (char-set (ucs->char #xCBF))
+   (char-set (ucs->char #xCC6))
+   (ucs-range->char-set #xCCC #xCCE)
+   (ucs-range->char-set #xD41 #xD44)
+   (char-set (ucs->char #xD4D))
+   (char-set (ucs->char #xDCA))
+   (ucs-range->char-set #xDD2 #xDD5)
+   (char-set (ucs->char #xDD6))
+   (char-set (ucs->char #xE31))
+   (ucs-range->char-set #xE34 #xE3B)
+   (ucs-range->char-set #xE47 #xE4F)
+   (char-set (ucs->char #xEB1))
+   (ucs-range->char-set #xEB4 #xEBA)
+   (ucs-range->char-set #xEBB #xEBD)
+   (ucs-range->char-set #xEC8 #xECE)
+   (ucs-range->char-set #xF18 #xF1A)
+   (char-set (ucs->char #xF35))
+   (char-set (ucs->char #xF37))
+   (char-set (ucs->char #xF39))
+   (ucs-range->char-set #xF71 #xF7F)
+   (ucs-range->char-set #xF80 #xF85)
+   (ucs-range->char-set #xF86 #xF88)
+   (ucs-range->char-set #xF90 #xF98)
+   (ucs-range->char-set #xF99 #xFBD)
+   (char-set (ucs->char #xFC6))
+   (ucs-range->char-set #x102D #x1031)
+   (char-set (ucs->char #x1032))
+   (ucs-range->char-set #x1036 #x1038)
+   (char-set (ucs->char #x1039))
+   (ucs-range->char-set #x1058 #x105A)
+   (ucs-range->char-set #x1712 #x1715)
+   (ucs-range->char-set #x1732 #x1735)
+   (ucs-range->char-set #x1752 #x1754)
+   (ucs-range->char-set #x1772 #x1774)
+   (ucs-range->char-set #x17B7 #x17BE)
+   (char-set (ucs->char #x17C6))
+   (ucs-range->char-set #x17C9 #x17D4)
+   (char-set (ucs->char #x17DD))
+   (ucs-range->char-set #x180B #x180E)
+   (char-set (ucs->char #x18A9))
+   (ucs-range->char-set #x1920 #x1923)
+   (ucs-range->char-set #x1927 #x1929)
+   (char-set (ucs->char #x1932))
+   (ucs-range->char-set #x1939 #x193C)
+   (ucs-range->char-set #x20D0 #x20DD)
+   (ucs-range->char-set #x20DD #x20E1)
+   (char-set (ucs->char #x20E1))
+   (ucs-range->char-set #x20E2 #x20E5)
+   (ucs-range->char-set #x20E5 #x20EB)
+   (ucs-range->char-set #x302A #x3030)
+   (ucs-range->char-set #x3099 #x309B)
+   (char-set (ucs->char #xFB1E))
+   (ucs-range->char-set #xFE00 #xFE10)
+   (ucs-range->char-set #xFE20 #xFE24)
+   (ucs-range->char-set #x1D167 #x1D16A)
+   (ucs-range->char-set #x1D17B #x1D183)
+   (ucs-range->char-set #x1D185 #x1D18C)
+   (ucs-range->char-set #x1D1AA #x1D1AE)
+   (ucs-range->char-set #xE0100 #xE01F0)
+   ))
+
+(define char-set:id-continue
+  (char-set-union
+   (ucs-range->char-set #x30 #x3A)
+   (ucs-range->char-set #x41 #x5B)
+   (char-set (ucs->char #x5F))
+   (ucs-range->char-set #x61 #x7B)
+   (char-set (ucs->char #xAA))
+   (char-set (ucs->char #xB5))
+   (char-set (ucs->char #xBA))
+   (ucs-range->char-set #xC0 #xD7)
+   (ucs-range->char-set #xD8 #xF7)
+   (ucs-range->char-set #xF8 #x1BB)
+   (char-set (ucs->char #x1BB))
+   (ucs-range->char-set #x1BC #x1C0)
+   (ucs-range->char-set #x1C0 #x1C4)
+   (ucs-range->char-set #x1C4 #x237)
+   (ucs-range->char-set #x250 #x2B0)
+   (ucs-range->char-set #x2B0 #x2C2)
+   (ucs-range->char-set #x2C6 #x2D2)
+   (ucs-range->char-set #x2E0 #x2E5)
+   (char-set (ucs->char #x2EE))
+   (ucs-range->char-set #x300 #x358)
+   (ucs-range->char-set #x35D #x370)
+   (char-set (ucs->char #x37A))
+   (char-set (ucs->char #x386))
+   (ucs-range->char-set #x388 #x38B)
+   (char-set (ucs->char #x38C))
+   (ucs-range->char-set #x38E #x3A2)
+   (ucs-range->char-set #x3A3 #x3CF)
+   (ucs-range->char-set #x3D0 #x3F6)
+   (ucs-range->char-set #x3F7 #x3FC)
+   (ucs-range->char-set #x400 #x482)
+   (ucs-range->char-set #x483 #x487)
+   (ucs-range->char-set #x48A #x4CF)
+   (ucs-range->char-set #x4D0 #x4F6)
+   (ucs-range->char-set #x4F8 #x4FA)
+   (ucs-range->char-set #x500 #x510)
+   (ucs-range->char-set #x531 #x557)
+   (char-set (ucs->char #x559))
+   (ucs-range->char-set #x561 #x588)
+   (ucs-range->char-set #x591 #x5A2)
+   (ucs-range->char-set #x5A3 #x5BA)
+   (ucs-range->char-set #x5BB #x5BE)
+   (char-set (ucs->char #x5BF))
+   (ucs-range->char-set #x5C1 #x5C3)
+   (char-set (ucs->char #x5C4))
+   (ucs-range->char-set #x5D0 #x5EB)
+   (ucs-range->char-set #x5F0 #x5F3)
+   (ucs-range->char-set #x610 #x616)
+   (ucs-range->char-set #x621 #x63B)
+   (char-set (ucs->char #x640))
+   (ucs-range->char-set #x641 #x64B)
+   (ucs-range->char-set #x64B #x659)
+   (ucs-range->char-set #x660 #x66A)
+   (ucs-range->char-set #x66E #x670)
+   (char-set (ucs->char #x670))
+   (ucs-range->char-set #x671 #x6D4)
+   (char-set (ucs->char #x6D5))
+   (ucs-range->char-set #x6D6 #x6DD)
+   (ucs-range->char-set #x6DF #x6E5)
+   (ucs-range->char-set #x6E5 #x6E7)
+   (ucs-range->char-set #x6E7 #x6E9)
+   (ucs-range->char-set #x6EA #x6EE)
+   (ucs-range->char-set #x6EE #x6F0)
+   (ucs-range->char-set #x6F0 #x6FA)
+   (ucs-range->char-set #x6FA #x6FD)
+   (char-set (ucs->char #x6FF))
+   (char-set (ucs->char #x710))
+   (char-set (ucs->char #x711))
+   (ucs-range->char-set #x712 #x730)
+   (ucs-range->char-set #x730 #x74B)
+   (ucs-range->char-set #x74D #x750)
+   (ucs-range->char-set #x780 #x7A6)
+   (ucs-range->char-set #x7A6 #x7B1)
+   (char-set (ucs->char #x7B1))
+   (ucs-range->char-set #x901 #x903)
+   (char-set (ucs->char #x903))
+   (ucs-range->char-set #x904 #x93A)
+   (char-set (ucs->char #x93C))
+   (char-set (ucs->char #x93D))
+   (ucs-range->char-set #x93E #x941)
+   (ucs-range->char-set #x941 #x949)
+   (ucs-range->char-set #x949 #x94D)
+   (char-set (ucs->char #x94D))
+   (char-set (ucs->char #x950))
+   (ucs-range->char-set #x951 #x955)
+   (ucs-range->char-set #x958 #x962)
+   (ucs-range->char-set #x962 #x964)
+   (ucs-range->char-set #x966 #x970)
+   (char-set (ucs->char #x981))
+   (ucs-range->char-set #x982 #x984)
+   (ucs-range->char-set #x985 #x98D)
+   (ucs-range->char-set #x98F #x991)
+   (ucs-range->char-set #x993 #x9A9)
+   (ucs-range->char-set #x9AA #x9B1)
+   (char-set (ucs->char #x9B2))
+   (ucs-range->char-set #x9B6 #x9BA)
+   (char-set (ucs->char #x9BC))
+   (char-set (ucs->char #x9BD))
+   (ucs-range->char-set #x9BE #x9C1)
+   (ucs-range->char-set #x9C1 #x9C5)
+   (ucs-range->char-set #x9C7 #x9C9)
+   (ucs-range->char-set #x9CB #x9CD)
+   (char-set (ucs->char #x9CD))
+   (char-set (ucs->char #x9D7))
+   (ucs-range->char-set #x9DC #x9DE)
+   (ucs-range->char-set #x9DF #x9E2)
+   (ucs-range->char-set #x9E2 #x9E4)
+   (ucs-range->char-set #x9E6 #x9F0)
+   (ucs-range->char-set #x9F0 #x9F2)
+   (ucs-range->char-set #xA01 #xA03)
+   (char-set (ucs->char #xA03))
+   (ucs-range->char-set #xA05 #xA0B)
+   (ucs-range->char-set #xA0F #xA11)
+   (ucs-range->char-set #xA13 #xA29)
+   (ucs-range->char-set #xA2A #xA31)
+   (ucs-range->char-set #xA32 #xA34)
+   (ucs-range->char-set #xA35 #xA37)
+   (ucs-range->char-set #xA38 #xA3A)
+   (char-set (ucs->char #xA3C))
+   (ucs-range->char-set #xA3E #xA41)
+   (ucs-range->char-set #xA41 #xA43)
+   (ucs-range->char-set #xA47 #xA49)
+   (ucs-range->char-set #xA4B #xA4E)
+   (ucs-range->char-set #xA59 #xA5D)
+   (char-set (ucs->char #xA5E))
+   (ucs-range->char-set #xA66 #xA70)
+   (ucs-range->char-set #xA70 #xA72)
+   (ucs-range->char-set #xA72 #xA75)
+   (ucs-range->char-set #xA81 #xA83)
+   (char-set (ucs->char #xA83))
+   (ucs-range->char-set #xA85 #xA8E)
+   (ucs-range->char-set #xA8F #xA92)
+   (ucs-range->char-set #xA93 #xAA9)
+   (ucs-range->char-set #xAAA #xAB1)
+   (ucs-range->char-set #xAB2 #xAB4)
+   (ucs-range->char-set #xAB5 #xABA)
+   (char-set (ucs->char #xABC))
+   (char-set (ucs->char #xABD))
+   (ucs-range->char-set #xABE #xAC1)
+   (ucs-range->char-set #xAC1 #xAC6)
+   (ucs-range->char-set #xAC7 #xAC9)
+   (char-set (ucs->char #xAC9))
+   (ucs-range->char-set #xACB #xACD)
+   (char-set (ucs->char #xACD))
+   (char-set (ucs->char #xAD0))
+   (ucs-range->char-set #xAE0 #xAE2)
+   (ucs-range->char-set #xAE2 #xAE4)
+   (ucs-range->char-set #xAE6 #xAF0)
+   (char-set (ucs->char #xB01))
+   (ucs-range->char-set #xB02 #xB04)
+   (ucs-range->char-set #xB05 #xB0D)
+   (ucs-range->char-set #xB0F #xB11)
+   (ucs-range->char-set #xB13 #xB29)
+   (ucs-range->char-set #xB2A #xB31)
+   (ucs-range->char-set #xB32 #xB34)
+   (ucs-range->char-set #xB35 #xB3A)
+   (char-set (ucs->char #xB3C))
+   (char-set (ucs->char #xB3D))
+   (char-set (ucs->char #xB3E))
+   (char-set (ucs->char #xB3F))
+   (char-set (ucs->char #xB40))
+   (ucs-range->char-set #xB41 #xB44)
+   (ucs-range->char-set #xB47 #xB49)
+   (ucs-range->char-set #xB4B #xB4D)
+   (char-set (ucs->char #xB4D))
+   (char-set (ucs->char #xB56))
+   (char-set (ucs->char #xB57))
+   (ucs-range->char-set #xB5C #xB5E)
+   (ucs-range->char-set #xB5F #xB62)
+   (ucs-range->char-set #xB66 #xB70)
+   (char-set (ucs->char #xB71))
+   (char-set (ucs->char #xB82))
+   (char-set (ucs->char #xB83))
+   (ucs-range->char-set #xB85 #xB8B)
+   (ucs-range->char-set #xB8E #xB91)
+   (ucs-range->char-set #xB92 #xB96)
+   (ucs-range->char-set #xB99 #xB9B)
+   (char-set (ucs->char #xB9C))
+   (ucs-range->char-set #xB9E #xBA0)
+   (ucs-range->char-set #xBA3 #xBA5)
+   (ucs-range->char-set #xBA8 #xBAB)
+   (ucs-range->char-set #xBAE #xBB6)
+   (ucs-range->char-set #xBB7 #xBBA)
+   (ucs-range->char-set #xBBE #xBC0)
+   (char-set (ucs->char #xBC0))
+   (ucs-range->char-set #xBC1 #xBC3)
+   (ucs-range->char-set #xBC6 #xBC9)
+   (ucs-range->char-set #xBCA #xBCD)
+   (char-set (ucs->char #xBCD))
+   (char-set (ucs->char #xBD7))
+   (ucs-range->char-set #xBE7 #xBF0)
+   (ucs-range->char-set #xC01 #xC04)
+   (ucs-range->char-set #xC05 #xC0D)
+   (ucs-range->char-set #xC0E #xC11)
+   (ucs-range->char-set #xC12 #xC29)
+   (ucs-range->char-set #xC2A #xC34)
+   (ucs-range->char-set #xC35 #xC3A)
+   (ucs-range->char-set #xC3E #xC41)
+   (ucs-range->char-set #xC41 #xC45)
+   (ucs-range->char-set #xC46 #xC49)
+   (ucs-range->char-set #xC4A #xC4E)
+   (ucs-range->char-set #xC55 #xC57)
+   (ucs-range->char-set #xC60 #xC62)
+   (ucs-range->char-set #xC66 #xC70)
+   (ucs-range->char-set #xC82 #xC84)
+   (ucs-range->char-set #xC85 #xC8D)
+   (ucs-range->char-set #xC8E #xC91)
+   (ucs-range->char-set #xC92 #xCA9)
+   (ucs-range->char-set #xCAA #xCB4)
+   (ucs-range->char-set #xCB5 #xCBA)
+   (char-set (ucs->char #xCBC))
+   (char-set (ucs->char #xCBD))
+   (char-set (ucs->char #xCBE))
+   (char-set (ucs->char #xCBF))
+   (ucs-range->char-set #xCC0 #xCC5)
+   (char-set (ucs->char #xCC6))
+   (ucs-range->char-set #xCC7 #xCC9)
+   (ucs-range->char-set #xCCA #xCCC)
+   (ucs-range->char-set #xCCC #xCCE)
+   (ucs-range->char-set #xCD5 #xCD7)
+   (char-set (ucs->char #xCDE))
+   (ucs-range->char-set #xCE0 #xCE2)
+   (ucs-range->char-set #xCE6 #xCF0)
+   (ucs-range->char-set #xD02 #xD04)
+   (ucs-range->char-set #xD05 #xD0D)
+   (ucs-range->char-set #xD0E #xD11)
+   (ucs-range->char-set #xD12 #xD29)
+   (ucs-range->char-set #xD2A #xD3A)
+   (ucs-range->char-set #xD3E #xD41)
+   (ucs-range->char-set #xD41 #xD44)
+   (ucs-range->char-set #xD46 #xD49)
+   (ucs-range->char-set #xD4A #xD4D)
+   (char-set (ucs->char #xD4D))
+   (char-set (ucs->char #xD57))
+   (ucs-range->char-set #xD60 #xD62)
+   (ucs-range->char-set #xD66 #xD70)
+   (ucs-range->char-set #xD82 #xD84)
+   (ucs-range->char-set #xD85 #xD97)
+   (ucs-range->char-set #xD9A #xDB2)
+   (ucs-range->char-set #xDB3 #xDBC)
+   (char-set (ucs->char #xDBD))
+   (ucs-range->char-set #xDC0 #xDC7)
+   (char-set (ucs->char #xDCA))
+   (ucs-range->char-set #xDCF #xDD2)
+   (ucs-range->char-set #xDD2 #xDD5)
+   (char-set (ucs->char #xDD6))
+   (ucs-range->char-set #xDD8 #xDE0)
+   (ucs-range->char-set #xDF2 #xDF4)
+   (ucs-range->char-set #xE01 #xE31)
+   (char-set (ucs->char #xE31))
+   (ucs-range->char-set #xE32 #xE34)
+   (ucs-range->char-set #xE34 #xE3B)
+   (ucs-range->char-set #xE40 #xE46)
+   (char-set (ucs->char #xE46))
+   (ucs-range->char-set #xE47 #xE4F)
+   (ucs-range->char-set #xE50 #xE5A)
+   (ucs-range->char-set #xE81 #xE83)
+   (char-set (ucs->char #xE84))
+   (ucs-range->char-set #xE87 #xE89)
+   (char-set (ucs->char #xE8A))
+   (char-set (ucs->char #xE8D))
+   (ucs-range->char-set #xE94 #xE98)
+   (ucs-range->char-set #xE99 #xEA0)
+   (ucs-range->char-set #xEA1 #xEA4)
+   (char-set (ucs->char #xEA5))
+   (char-set (ucs->char #xEA7))
+   (ucs-range->char-set #xEAA #xEAC)
+   (ucs-range->char-set #xEAD #xEB1)
+   (char-set (ucs->char #xEB1))
+   (ucs-range->char-set #xEB2 #xEB4)
+   (ucs-range->char-set #xEB4 #xEBA)
+   (ucs-range->char-set #xEBB #xEBD)
+   (char-set (ucs->char #xEBD))
+   (ucs-range->char-set #xEC0 #xEC5)
+   (char-set (ucs->char #xEC6))
+   (ucs-range->char-set #xEC8 #xECE)
+   (ucs-range->char-set #xED0 #xEDA)
+   (ucs-range->char-set #xEDC #xEDE)
+   (char-set (ucs->char #xF00))
+   (ucs-range->char-set #xF18 #xF1A)
+   (ucs-range->char-set #xF20 #xF2A)
+   (char-set (ucs->char #xF35))
+   (char-set (ucs->char #xF37))
+   (char-set (ucs->char #xF39))
+   (ucs-range->char-set #xF3E #xF40)
+   (ucs-range->char-set #xF40 #xF48)
+   (ucs-range->char-set #xF49 #xF6B)
+   (ucs-range->char-set #xF71 #xF7F)
+   (char-set (ucs->char #xF7F))
+   (ucs-range->char-set #xF80 #xF85)
+   (ucs-range->char-set #xF86 #xF88)
+   (ucs-range->char-set #xF88 #xF8C)
+   (ucs-range->char-set #xF90 #xF98)
+   (ucs-range->char-set #xF99 #xFBD)
+   (char-set (ucs->char #xFC6))
+   (ucs-range->char-set #x1000 #x1022)
+   (ucs-range->char-set #x1023 #x1028)
+   (ucs-range->char-set #x1029 #x102B)
+   (char-set (ucs->char #x102C))
+   (ucs-range->char-set #x102D #x1031)
+   (char-set (ucs->char #x1031))
+   (char-set (ucs->char #x1032))
+   (ucs-range->char-set #x1036 #x1038)
+   (char-set (ucs->char #x1038))
+   (char-set (ucs->char #x1039))
+   (ucs-range->char-set #x1040 #x104A)
+   (ucs-range->char-set #x1050 #x1056)
+   (ucs-range->char-set #x1056 #x1058)
+   (ucs-range->char-set #x1058 #x105A)
+   (ucs-range->char-set #x10A0 #x10C6)
+   (ucs-range->char-set #x10D0 #x10F9)
+   (ucs-range->char-set #x1100 #x115A)
+   (ucs-range->char-set #x115F #x11A3)
+   (ucs-range->char-set #x11A8 #x11FA)
+   (ucs-range->char-set #x1200 #x1207)
+   (ucs-range->char-set #x1208 #x1247)
+   (char-set (ucs->char #x1248))
+   (ucs-range->char-set #x124A #x124E)
+   (ucs-range->char-set #x1250 #x1257)
+   (char-set (ucs->char #x1258))
+   (ucs-range->char-set #x125A #x125E)
+   (ucs-range->char-set #x1260 #x1287)
+   (char-set (ucs->char #x1288))
+   (ucs-range->char-set #x128A #x128E)
+   (ucs-range->char-set #x1290 #x12AF)
+   (char-set (ucs->char #x12B0))
+   (ucs-range->char-set #x12B2 #x12B6)
+   (ucs-range->char-set #x12B8 #x12BF)
+   (char-set (ucs->char #x12C0))
+   (ucs-range->char-set #x12C2 #x12C6)
+   (ucs-range->char-set #x12C8 #x12CF)
+   (ucs-range->char-set #x12D0 #x12D7)
+   (ucs-range->char-set #x12D8 #x12EF)
+   (ucs-range->char-set #x12F0 #x130F)
+   (char-set (ucs->char #x1310))
+   (ucs-range->char-set #x1312 #x1316)
+   (ucs-range->char-set #x1318 #x131F)
+   (ucs-range->char-set #x1320 #x1347)
+   (ucs-range->char-set #x1348 #x135B)
+   (ucs-range->char-set #x1369 #x1372)
+   (ucs-range->char-set #x13A0 #x13F5)
+   (ucs-range->char-set #x1401 #x166D)
+   (ucs-range->char-set #x166F #x1677)
+   (ucs-range->char-set #x1681 #x169B)
+   (ucs-range->char-set #x16A0 #x16EB)
+   (ucs-range->char-set #x16EE #x16F1)
+   (ucs-range->char-set #x1700 #x170D)
+   (ucs-range->char-set #x170E #x1712)
+   (ucs-range->char-set #x1712 #x1715)
+   (ucs-range->char-set #x1720 #x1732)
+   (ucs-range->char-set #x1732 #x1735)
+   (ucs-range->char-set #x1740 #x1752)
+   (ucs-range->char-set #x1752 #x1754)
+   (ucs-range->char-set #x1760 #x176D)
+   (ucs-range->char-set #x176E #x1771)
+   (ucs-range->char-set #x1772 #x1774)
+   (ucs-range->char-set #x1780 #x17B4)
+   (char-set (ucs->char #x17B6))
+   (ucs-range->char-set #x17B7 #x17BE)
+   (ucs-range->char-set #x17BE #x17C6)
+   (char-set (ucs->char #x17C6))
+   (ucs-range->char-set #x17C7 #x17C9)
+   (ucs-range->char-set #x17C9 #x17D4)
+   (char-set (ucs->char #x17D7))
+   (char-set (ucs->char #x17DC))
+   (char-set (ucs->char #x17DD))
+   (ucs-range->char-set #x17E0 #x17EA)
+   (ucs-range->char-set #x180B #x180E)
+   (ucs-range->char-set #x1810 #x181A)
+   (ucs-range->char-set #x1820 #x1843)
+   (char-set (ucs->char #x1843))
+   (ucs-range->char-set #x1844 #x1878)
+   (ucs-range->char-set #x1880 #x18A9)
+   (char-set (ucs->char #x18A9))
+   (ucs-range->char-set #x1900 #x191D)
+   (ucs-range->char-set #x1920 #x1923)
+   (ucs-range->char-set #x1923 #x1927)
+   (ucs-range->char-set #x1927 #x1929)
+   (ucs-range->char-set #x1929 #x192C)
+   (ucs-range->char-set #x1930 #x1932)
+   (char-set (ucs->char #x1932))
+   (ucs-range->char-set #x1933 #x1939)
+   (ucs-range->char-set #x1939 #x193C)
+   (ucs-range->char-set #x1946 #x1950)
+   (ucs-range->char-set #x1950 #x196E)
+   (ucs-range->char-set #x1970 #x1975)
+   (ucs-range->char-set #x1D00 #x1D2C)
+   (ucs-range->char-set #x1D2C #x1D62)
+   (ucs-range->char-set #x1D62 #x1D6C)
+   (ucs-range->char-set #x1E00 #x1E9C)
+   (ucs-range->char-set #x1EA0 #x1EFA)
+   (ucs-range->char-set #x1F00 #x1F16)
+   (ucs-range->char-set #x1F18 #x1F1E)
+   (ucs-range->char-set #x1F20 #x1F46)
+   (ucs-range->char-set #x1F48 #x1F4E)
+   (ucs-range->char-set #x1F50 #x1F58)
+   (char-set (ucs->char #x1F59))
+   (char-set (ucs->char #x1F5B))
+   (char-set (ucs->char #x1F5D))
+   (ucs-range->char-set #x1F5F #x1F7E)
+   (ucs-range->char-set #x1F80 #x1FB5)
+   (ucs-range->char-set #x1FB6 #x1FBD)
+   (char-set (ucs->char #x1FBE))
+   (ucs-range->char-set #x1FC2 #x1FC5)
+   (ucs-range->char-set #x1FC6 #x1FCD)
+   (ucs-range->char-set #x1FD0 #x1FD4)
+   (ucs-range->char-set #x1FD6 #x1FDC)
+   (ucs-range->char-set #x1FE0 #x1FED)
+   (ucs-range->char-set #x1FF2 #x1FF5)
+   (ucs-range->char-set #x1FF6 #x1FFD)
+   (ucs-range->char-set #x203F #x2041)
+   (char-set (ucs->char #x2054))
+   (char-set (ucs->char #x2071))
+   (char-set (ucs->char #x207F))
+   (ucs-range->char-set #x20D0 #x20DD)
+   (char-set (ucs->char #x20E1))
+   (ucs-range->char-set #x20E5 #x20EB)
+   (char-set (ucs->char #x2102))
+   (char-set (ucs->char #x2107))
+   (ucs-range->char-set #x210A #x2114)
+   (char-set (ucs->char #x2115))
+   (char-set (ucs->char #x2118))
+   (ucs-range->char-set #x2119 #x211E)
+   (char-set (ucs->char #x2124))
+   (char-set (ucs->char #x2126))
+   (char-set (ucs->char #x2128))
+   (ucs-range->char-set #x212A #x212E)
+   (char-set (ucs->char #x212E))
+   (ucs-range->char-set #x212F #x2132)
+   (ucs-range->char-set #x2133 #x2135)
+   (ucs-range->char-set #x2135 #x2139)
+   (char-set (ucs->char #x2139))
+   (ucs-range->char-set #x213D #x2140)
+   (ucs-range->char-set #x2145 #x214A)
+   (ucs-range->char-set #x2160 #x2184)
+   (char-set (ucs->char #x3005))
+   (char-set (ucs->char #x3006))
+   (char-set (ucs->char #x3007))
+   (ucs-range->char-set #x3021 #x302A)
+   (ucs-range->char-set #x302A #x3030)
+   (ucs-range->char-set #x3031 #x3036)
+   (ucs-range->char-set #x3038 #x303B)
+   (char-set (ucs->char #x303B))
+   (char-set (ucs->char #x303C))
+   (ucs-range->char-set #x3041 #x3097)
+   (ucs-range->char-set #x3099 #x309B)
+   (ucs-range->char-set #x309B #x309D)
+   (ucs-range->char-set #x309D #x309F)
+   (char-set (ucs->char #x309F))
+   (ucs-range->char-set #x30A1 #x30FB)
+   (char-set (ucs->char #x30FB))
+   (ucs-range->char-set #x30FC #x30FF)
+   (char-set (ucs->char #x30FF))
+   (ucs-range->char-set #x3105 #x312D)
+   (ucs-range->char-set #x3131 #x318F)
+   (ucs-range->char-set #x31A0 #x31B8)
+   (ucs-range->char-set #x31F0 #x3200)
+   (ucs-range->char-set #x3400 #x4DB6)
+   (ucs-range->char-set #x4E00 #x9FA6)
+   (ucs-range->char-set #xA000 #xA48D)
+   (ucs-range->char-set #xAC00 #xD7A4)
+   (ucs-range->char-set #xF900 #xFA2E)
+   (ucs-range->char-set #xFA30 #xFA6B)
+   (ucs-range->char-set #xFB00 #xFB07)
+   (ucs-range->char-set #xFB13 #xFB18)
+   (char-set (ucs->char #xFB1D))
+   (char-set (ucs->char #xFB1E))
+   (ucs-range->char-set #xFB1F #xFB29)
+   (ucs-range->char-set #xFB2A #xFB37)
+   (ucs-range->char-set #xFB38 #xFB3D)
+   (char-set (ucs->char #xFB3E))
+   (ucs-range->char-set #xFB40 #xFB42)
+   (ucs-range->char-set #xFB43 #xFB45)
+   (ucs-range->char-set #xFB46 #xFBB2)
+   (ucs-range->char-set #xFBD3 #xFD3E)
+   (ucs-range->char-set #xFD50 #xFD90)
+   (ucs-range->char-set #xFD92 #xFDC8)
+   (ucs-range->char-set #xFDF0 #xFDFC)
+   (ucs-range->char-set #xFE00 #xFE10)
+   (ucs-range->char-set #xFE20 #xFE24)
+   (ucs-range->char-set #xFE33 #xFE35)
+   (ucs-range->char-set #xFE4D #xFE50)
+   (ucs-range->char-set #xFE70 #xFE75)
+   (ucs-range->char-set #xFE76 #xFEFD)
+   (ucs-range->char-set #xFF10 #xFF1A)
+   (ucs-range->char-set #xFF21 #xFF3B)
+   (char-set (ucs->char #xFF3F))
+   (ucs-range->char-set #xFF41 #xFF5B)
+   (char-set (ucs->char #xFF65))
+   (ucs-range->char-set #xFF66 #xFF70)
+   (char-set (ucs->char #xFF70))
+   (ucs-range->char-set #xFF71 #xFF9E)
+   (ucs-range->char-set #xFF9E #xFFA0)
+   (ucs-range->char-set #xFFA0 #xFFBF)
+   (ucs-range->char-set #xFFC2 #xFFC8)
+   (ucs-range->char-set #xFFCA #xFFD0)
+   (ucs-range->char-set #xFFD2 #xFFD8)
+   (ucs-range->char-set #xFFDA #xFFDD)
+   (ucs-range->char-set #x10000 #x1000C)
+   (ucs-range->char-set #x1000D #x10027)
+   (ucs-range->char-set #x10028 #x1003B)
+   (ucs-range->char-set #x1003C #x1003E)
+   (ucs-range->char-set #x1003F #x1004E)
+   (ucs-range->char-set #x10050 #x1005E)
+   (ucs-range->char-set #x10080 #x100FB)
+   (ucs-range->char-set #x10300 #x1031F)
+   (ucs-range->char-set #x10330 #x1034A)
+   (char-set (ucs->char #x1034A))
+   (ucs-range->char-set #x10380 #x1039E)
+   (ucs-range->char-set #x10400 #x10450)
+   (ucs-range->char-set #x10450 #x1049E)
+   (ucs-range->char-set #x104A0 #x104AA)
+   (ucs-range->char-set #x10800 #x10806)
+   (char-set (ucs->char #x10808))
+   (ucs-range->char-set #x1080A #x10836)
+   (ucs-range->char-set #x10837 #x10839)
+   (char-set (ucs->char #x1083C))
+   (char-set (ucs->char #x1083F))
+   (ucs-range->char-set #x1D165 #x1D167)
+   (ucs-range->char-set #x1D167 #x1D16A)
+   (ucs-range->char-set #x1D16D #x1D173)
+   (ucs-range->char-set #x1D17B #x1D183)
+   (ucs-range->char-set #x1D185 #x1D18C)
+   (ucs-range->char-set #x1D1AA #x1D1AE)
+   (ucs-range->char-set #x1D400 #x1D455)
+   (ucs-range->char-set #x1D456 #x1D49D)
+   (ucs-range->char-set #x1D49E #x1D4A0)
+   (char-set (ucs->char #x1D4A2))
+   (ucs-range->char-set #x1D4A5 #x1D4A7)
+   (ucs-range->char-set #x1D4A9 #x1D4AD)
+   (ucs-range->char-set #x1D4AE #x1D4BA)
+   (char-set (ucs->char #x1D4BB))
+   (ucs-range->char-set #x1D4BD #x1D4C4)
+   (ucs-range->char-set #x1D4C5 #x1D506)
+   (ucs-range->char-set #x1D507 #x1D50B)
+   (ucs-range->char-set #x1D50D #x1D515)
+   (ucs-range->char-set #x1D516 #x1D51D)
+   (ucs-range->char-set #x1D51E #x1D53A)
+   (ucs-range->char-set #x1D53B #x1D53F)
+   (ucs-range->char-set #x1D540 #x1D545)
+   (char-set (ucs->char #x1D546))
+   (ucs-range->char-set #x1D54A #x1D551)
+   (ucs-range->char-set #x1D552 #x1D6A4)
+   (ucs-range->char-set #x1D6A8 #x1D6C1)
+   (ucs-range->char-set #x1D6C2 #x1D6DB)
+   (ucs-range->char-set #x1D6DC #x1D6FB)
+   (ucs-range->char-set #x1D6FC #x1D715)
+   (ucs-range->char-set #x1D716 #x1D735)
+   (ucs-range->char-set #x1D736 #x1D74F)
+   (ucs-range->char-set #x1D750 #x1D76F)
+   (ucs-range->char-set #x1D770 #x1D789)
+   (ucs-range->char-set #x1D78A #x1D7A9)
+   (ucs-range->char-set #x1D7AA #x1D7C3)
+   (ucs-range->char-set #x1D7C4 #x1D7CA)
+   (ucs-range->char-set #x1D7CE #x1D800)
+   (ucs-range->char-set #x20000 #x2A6D7)
+   (ucs-range->char-set #x2F800 #x2FA1E)
+   (ucs-range->char-set #xE0100 #xE01F0)
+   ))
+
+(define char-set:id-start
+  (char-set-union
+   char-set:other-id-start
+   (ucs-range->char-set #x41 #x5B)
+   (ucs-range->char-set #x61 #x7B)
+   (char-set (ucs->char #xAA))
+   (char-set (ucs->char #xB5))
+   (char-set (ucs->char #xBA))
+   (ucs-range->char-set #xC0 #xD7)
+   (ucs-range->char-set #xD8 #xF7)
+   (ucs-range->char-set #xF8 #x1BB)
+   (char-set (ucs->char #x1BB))
+   (ucs-range->char-set #x1BC #x1C0)
+   (ucs-range->char-set #x1C0 #x1C4)
+   (ucs-range->char-set #x1C4 #x237)
+   (ucs-range->char-set #x250 #x2B0)
+   (ucs-range->char-set #x2B0 #x2C2)
+   (ucs-range->char-set #x2C6 #x2D2)
+   (ucs-range->char-set #x2E0 #x2E5)
+   (char-set (ucs->char #x2EE))
+   (char-set (ucs->char #x37A))
+   (char-set (ucs->char #x386))
+   (ucs-range->char-set #x388 #x38B)
+   (char-set (ucs->char #x38C))
+   (ucs-range->char-set #x38E #x3A2)
+   (ucs-range->char-set #x3A3 #x3CF)
+   (ucs-range->char-set #x3D0 #x3F6)
+   (ucs-range->char-set #x3F7 #x3FC)
+   (ucs-range->char-set #x400 #x482)
+   (ucs-range->char-set #x48A #x4CF)
+   (ucs-range->char-set #x4D0 #x4F6)
+   (ucs-range->char-set #x4F8 #x4FA)
+   (ucs-range->char-set #x500 #x510)
+   (ucs-range->char-set #x531 #x557)
+   (char-set (ucs->char #x559))
+   (ucs-range->char-set #x561 #x588)
+   (ucs-range->char-set #x5D0 #x5EB)
+   (ucs-range->char-set #x5F0 #x5F3)
+   (ucs-range->char-set #x621 #x63B)
+   (char-set (ucs->char #x640))
+   (ucs-range->char-set #x641 #x64B)
+   (ucs-range->char-set #x66E #x670)
+   (ucs-range->char-set #x671 #x6D4)
+   (char-set (ucs->char #x6D5))
+   (ucs-range->char-set #x6E5 #x6E7)
+   (ucs-range->char-set #x6EE #x6F0)
+   (ucs-range->char-set #x6FA #x6FD)
+   (char-set (ucs->char #x6FF))
+   (char-set (ucs->char #x710))
+   (ucs-range->char-set #x712 #x730)
+   (ucs-range->char-set #x74D #x750)
+   (ucs-range->char-set #x780 #x7A6)
+   (char-set (ucs->char #x7B1))
+   (ucs-range->char-set #x904 #x93A)
+   (char-set (ucs->char #x93D))
+   (char-set (ucs->char #x950))
+   (ucs-range->char-set #x958 #x962)
+   (ucs-range->char-set #x985 #x98D)
+   (ucs-range->char-set #x98F #x991)
+   (ucs-range->char-set #x993 #x9A9)
+   (ucs-range->char-set #x9AA #x9B1)
+   (char-set (ucs->char #x9B2))
+   (ucs-range->char-set #x9B6 #x9BA)
+   (char-set (ucs->char #x9BD))
+   (ucs-range->char-set #x9DC #x9DE)
+   (ucs-range->char-set #x9DF #x9E2)
+   (ucs-range->char-set #x9F0 #x9F2)
+   (ucs-range->char-set #xA05 #xA0B)
+   (ucs-range->char-set #xA0F #xA11)
+   (ucs-range->char-set #xA13 #xA29)
+   (ucs-range->char-set #xA2A #xA31)
+   (ucs-range->char-set #xA32 #xA34)
+   (ucs-range->char-set #xA35 #xA37)
+   (ucs-range->char-set #xA38 #xA3A)
+   (ucs-range->char-set #xA59 #xA5D)
+   (char-set (ucs->char #xA5E))
+   (ucs-range->char-set #xA72 #xA75)
+   (ucs-range->char-set #xA85 #xA8E)
+   (ucs-range->char-set #xA8F #xA92)
+   (ucs-range->char-set #xA93 #xAA9)
+   (ucs-range->char-set #xAAA #xAB1)
+   (ucs-range->char-set #xAB2 #xAB4)
+   (ucs-range->char-set #xAB5 #xABA)
+   (char-set (ucs->char #xABD))
+   (char-set (ucs->char #xAD0))
+   (ucs-range->char-set #xAE0 #xAE2)
+   (ucs-range->char-set #xB05 #xB0D)
+   (ucs-range->char-set #xB0F #xB11)
+   (ucs-range->char-set #xB13 #xB29)
+   (ucs-range->char-set #xB2A #xB31)
+   (ucs-range->char-set #xB32 #xB34)
+   (ucs-range->char-set #xB35 #xB3A)
+   (char-set (ucs->char #xB3D))
+   (ucs-range->char-set #xB5C #xB5E)
+   (ucs-range->char-set #xB5F #xB62)
+   (char-set (ucs->char #xB71))
+   (char-set (ucs->char #xB83))
+   (ucs-range->char-set #xB85 #xB8B)
+   (ucs-range->char-set #xB8E #xB91)
+   (ucs-range->char-set #xB92 #xB96)
+   (ucs-range->char-set #xB99 #xB9B)
+   (char-set (ucs->char #xB9C))
+   (ucs-range->char-set #xB9E #xBA0)
+   (ucs-range->char-set #xBA3 #xBA5)
+   (ucs-range->char-set #xBA8 #xBAB)
+   (ucs-range->char-set #xBAE #xBB6)
+   (ucs-range->char-set #xBB7 #xBBA)
+   (ucs-range->char-set #xC05 #xC0D)
+   (ucs-range->char-set #xC0E #xC11)
+   (ucs-range->char-set #xC12 #xC29)
+   (ucs-range->char-set #xC2A #xC34)
+   (ucs-range->char-set #xC35 #xC3A)
+   (ucs-range->char-set #xC60 #xC62)
+   (ucs-range->char-set #xC85 #xC8D)
+   (ucs-range->char-set #xC8E #xC91)
+   (ucs-range->char-set #xC92 #xCA9)
+   (ucs-range->char-set #xCAA #xCB4)
+   (ucs-range->char-set #xCB5 #xCBA)
+   (char-set (ucs->char #xCBD))
+   (char-set (ucs->char #xCDE))
+   (ucs-range->char-set #xCE0 #xCE2)
+   (ucs-range->char-set #xD05 #xD0D)
+   (ucs-range->char-set #xD0E #xD11)
+   (ucs-range->char-set #xD12 #xD29)
+   (ucs-range->char-set #xD2A #xD3A)
+   (ucs-range->char-set #xD60 #xD62)
+   (ucs-range->char-set #xD85 #xD97)
+   (ucs-range->char-set #xD9A #xDB2)
+   (ucs-range->char-set #xDB3 #xDBC)
+   (char-set (ucs->char #xDBD))
+   (ucs-range->char-set #xDC0 #xDC7)
+   (ucs-range->char-set #xE01 #xE31)
+   (ucs-range->char-set #xE32 #xE34)
+   (ucs-range->char-set #xE40 #xE46)
+   (char-set (ucs->char #xE46))
+   (ucs-range->char-set #xE81 #xE83)
+   (char-set (ucs->char #xE84))
+   (ucs-range->char-set #xE87 #xE89)
+   (char-set (ucs->char #xE8A))
+   (char-set (ucs->char #xE8D))
+   (ucs-range->char-set #xE94 #xE98)
+   (ucs-range->char-set #xE99 #xEA0)
+   (ucs-range->char-set #xEA1 #xEA4)
+   (char-set (ucs->char #xEA5))
+   (char-set (ucs->char #xEA7))
+   (ucs-range->char-set #xEAA #xEAC)
+   (ucs-range->char-set #xEAD #xEB1)
+   (ucs-range->char-set #xEB2 #xEB4)
+   (char-set (ucs->char #xEBD))
+   (ucs-range->char-set #xEC0 #xEC5)
+   (char-set (ucs->char #xEC6))
+   (ucs-range->char-set #xEDC #xEDE)
+   (char-set (ucs->char #xF00))
+   (ucs-range->char-set #xF40 #xF48)
+   (ucs-range->char-set #xF49 #xF6B)
+   (ucs-range->char-set #xF88 #xF8C)
+   (ucs-range->char-set #x1000 #x1022)
+   (ucs-range->char-set #x1023 #x1028)
+   (ucs-range->char-set #x1029 #x102B)
+   (ucs-range->char-set #x1050 #x1056)
+   (ucs-range->char-set #x10A0 #x10C6)
+   (ucs-range->char-set #x10D0 #x10F9)
+   (ucs-range->char-set #x1100 #x115A)
+   (ucs-range->char-set #x115F #x11A3)
+   (ucs-range->char-set #x11A8 #x11FA)
+   (ucs-range->char-set #x1200 #x1207)
+   (ucs-range->char-set #x1208 #x1247)
+   (char-set (ucs->char #x1248))
+   (ucs-range->char-set #x124A #x124E)
+   (ucs-range->char-set #x1250 #x1257)
+   (char-set (ucs->char #x1258))
+   (ucs-range->char-set #x125A #x125E)
+   (ucs-range->char-set #x1260 #x1287)
+   (char-set (ucs->char #x1288))
+   (ucs-range->char-set #x128A #x128E)
+   (ucs-range->char-set #x1290 #x12AF)
+   (char-set (ucs->char #x12B0))
+   (ucs-range->char-set #x12B2 #x12B6)
+   (ucs-range->char-set #x12B8 #x12BF)
+   (char-set (ucs->char #x12C0))
+   (ucs-range->char-set #x12C2 #x12C6)
+   (ucs-range->char-set #x12C8 #x12CF)
+   (ucs-range->char-set #x12D0 #x12D7)
+   (ucs-range->char-set #x12D8 #x12EF)
+   (ucs-range->char-set #x12F0 #x130F)
+   (char-set (ucs->char #x1310))
+   (ucs-range->char-set #x1312 #x1316)
+   (ucs-range->char-set #x1318 #x131F)
+   (ucs-range->char-set #x1320 #x1347)
+   (ucs-range->char-set #x1348 #x135B)
+   (ucs-range->char-set #x13A0 #x13F5)
+   (ucs-range->char-set #x1401 #x166D)
+   (ucs-range->char-set #x166F #x1677)
+   (ucs-range->char-set #x1681 #x169B)
+   (ucs-range->char-set #x16A0 #x16EB)
+   (ucs-range->char-set #x16EE #x16F1)
+   (ucs-range->char-set #x1700 #x170D)
+   (ucs-range->char-set #x170E #x1712)
+   (ucs-range->char-set #x1720 #x1732)
+   (ucs-range->char-set #x1740 #x1752)
+   (ucs-range->char-set #x1760 #x176D)
+   (ucs-range->char-set #x176E #x1771)
+   (ucs-range->char-set #x1780 #x17B4)
+   (char-set (ucs->char #x17D7))
+   (char-set (ucs->char #x17DC))
+   (ucs-range->char-set #x1820 #x1843)
+   (char-set (ucs->char #x1843))
+   (ucs-range->char-set #x1844 #x1878)
+   (ucs-range->char-set #x1880 #x18A9)
+   (ucs-range->char-set #x1900 #x191D)
+   (ucs-range->char-set #x1950 #x196E)
+   (ucs-range->char-set #x1970 #x1975)
+   (ucs-range->char-set #x1D00 #x1D2C)
+   (ucs-range->char-set #x1D2C #x1D62)
+   (ucs-range->char-set #x1D62 #x1D6C)
+   (ucs-range->char-set #x1E00 #x1E9C)
+   (ucs-range->char-set #x1EA0 #x1EFA)
+   (ucs-range->char-set #x1F00 #x1F16)
+   (ucs-range->char-set #x1F18 #x1F1E)
+   (ucs-range->char-set #x1F20 #x1F46)
+   (ucs-range->char-set #x1F48 #x1F4E)
+   (ucs-range->char-set #x1F50 #x1F58)
+   (char-set (ucs->char #x1F59))
+   (char-set (ucs->char #x1F5B))
+   (char-set (ucs->char #x1F5D))
+   (ucs-range->char-set #x1F5F #x1F7E)
+   (ucs-range->char-set #x1F80 #x1FB5)
+   (ucs-range->char-set #x1FB6 #x1FBD)
+   (char-set (ucs->char #x1FBE))
+   (ucs-range->char-set #x1FC2 #x1FC5)
+   (ucs-range->char-set #x1FC6 #x1FCD)
+   (ucs-range->char-set #x1FD0 #x1FD4)
+   (ucs-range->char-set #x1FD6 #x1FDC)
+   (ucs-range->char-set #x1FE0 #x1FED)
+   (ucs-range->char-set #x1FF2 #x1FF5)
+   (ucs-range->char-set #x1FF6 #x1FFD)
+   (char-set (ucs->char #x2071))
+   (char-set (ucs->char #x207F))
+   (char-set (ucs->char #x2102))
+   (char-set (ucs->char #x2107))
+   (ucs-range->char-set #x210A #x2114)
+   (char-set (ucs->char #x2115))
+   (ucs-range->char-set #x2119 #x211E)
+   (char-set (ucs->char #x2124))
+   (char-set (ucs->char #x2126))
+   (char-set (ucs->char #x2128))
+   (ucs-range->char-set #x212A #x212E)
+   (ucs-range->char-set #x212F #x2132)
+   (ucs-range->char-set #x2133 #x2135)
+   (ucs-range->char-set #x2135 #x2139)
+   (char-set (ucs->char #x2139))
+   (ucs-range->char-set #x213D #x2140)
+   (ucs-range->char-set #x2145 #x214A)
+   (ucs-range->char-set #x2160 #x2184)
+   (char-set (ucs->char #x3005))
+   (char-set (ucs->char #x3006))
+   (char-set (ucs->char #x3007))
+   (ucs-range->char-set #x3021 #x302A)
+   (ucs-range->char-set #x3031 #x3036)
+   (ucs-range->char-set #x3038 #x303B)
+   (char-set (ucs->char #x303B))
+   (char-set (ucs->char #x303C))
+   (ucs-range->char-set #x3041 #x3097)
+   (ucs-range->char-set #x309D #x309F)
+   (char-set (ucs->char #x309F))
+   (ucs-range->char-set #x30A1 #x30FB)
+   (ucs-range->char-set #x30FC #x30FF)
+   (char-set (ucs->char #x30FF))
+   (ucs-range->char-set #x3105 #x312D)
+   (ucs-range->char-set #x3131 #x318F)
+   (ucs-range->char-set #x31A0 #x31B8)
+   (ucs-range->char-set #x31F0 #x3200)
+   (ucs-range->char-set #x3400 #x4DB6)
+   (ucs-range->char-set #x4E00 #x9FA6)
+   (ucs-range->char-set #xA000 #xA48D)
+   (ucs-range->char-set #xAC00 #xD7A4)
+   (ucs-range->char-set #xF900 #xFA2E)
+   (ucs-range->char-set #xFA30 #xFA6B)
+   (ucs-range->char-set #xFB00 #xFB07)
+   (ucs-range->char-set #xFB13 #xFB18)
+   (char-set (ucs->char #xFB1D))
+   (ucs-range->char-set #xFB1F #xFB29)
+   (ucs-range->char-set #xFB2A #xFB37)
+   (ucs-range->char-set #xFB38 #xFB3D)
+   (char-set (ucs->char #xFB3E))
+   (ucs-range->char-set #xFB40 #xFB42)
+   (ucs-range->char-set #xFB43 #xFB45)
+   (ucs-range->char-set #xFB46 #xFBB2)
+   (ucs-range->char-set #xFBD3 #xFD3E)
+   (ucs-range->char-set #xFD50 #xFD90)
+   (ucs-range->char-set #xFD92 #xFDC8)
+   (ucs-range->char-set #xFDF0 #xFDFC)
+   (ucs-range->char-set #xFE70 #xFE75)
+   (ucs-range->char-set #xFE76 #xFEFD)
+   (ucs-range->char-set #xFF21 #xFF3B)
+   (ucs-range->char-set #xFF41 #xFF5B)
+   (ucs-range->char-set #xFF66 #xFF70)
+   (char-set (ucs->char #xFF70))
+   (ucs-range->char-set #xFF71 #xFF9E)
+   (ucs-range->char-set #xFF9E #xFFA0)
+   (ucs-range->char-set #xFFA0 #xFFBF)
+   (ucs-range->char-set #xFFC2 #xFFC8)
+   (ucs-range->char-set #xFFCA #xFFD0)
+   (ucs-range->char-set #xFFD2 #xFFD8)
+   (ucs-range->char-set #xFFDA #xFFDD)
+   (ucs-range->char-set #x10000 #x1000C)
+   (ucs-range->char-set #x1000D #x10027)
+   (ucs-range->char-set #x10028 #x1003B)
+   (ucs-range->char-set #x1003C #x1003E)
+   (ucs-range->char-set #x1003F #x1004E)
+   (ucs-range->char-set #x10050 #x1005E)
+   (ucs-range->char-set #x10080 #x100FB)
+   (ucs-range->char-set #x10300 #x1031F)
+   (ucs-range->char-set #x10330 #x1034A)
+   (char-set (ucs->char #x1034A))
+   (ucs-range->char-set #x10380 #x1039E)
+   (ucs-range->char-set #x10400 #x10450)
+   (ucs-range->char-set #x10450 #x1049E)
+   (ucs-range->char-set #x10800 #x10806)
+   (char-set (ucs->char #x10808))
+   (ucs-range->char-set #x1080A #x10836)
+   (ucs-range->char-set #x10837 #x10839)
+   (char-set (ucs->char #x1083C))
+   (char-set (ucs->char #x1083F))
+   (ucs-range->char-set #x1D400 #x1D455)
+   (ucs-range->char-set #x1D456 #x1D49D)
+   (ucs-range->char-set #x1D49E #x1D4A0)
+   (char-set (ucs->char #x1D4A2))
+   (ucs-range->char-set #x1D4A5 #x1D4A7)
+   (ucs-range->char-set #x1D4A9 #x1D4AD)
+   (ucs-range->char-set #x1D4AE #x1D4BA)
+   (char-set (ucs->char #x1D4BB))
+   (ucs-range->char-set #x1D4BD #x1D4C4)
+   (ucs-range->char-set #x1D4C5 #x1D506)
+   (ucs-range->char-set #x1D507 #x1D50B)
+   (ucs-range->char-set #x1D50D #x1D515)
+   (ucs-range->char-set #x1D516 #x1D51D)
+   (ucs-range->char-set #x1D51E #x1D53A)
+   (ucs-range->char-set #x1D53B #x1D53F)
+   (ucs-range->char-set #x1D540 #x1D545)
+   (char-set (ucs->char #x1D546))
+   (ucs-range->char-set #x1D54A #x1D551)
+   (ucs-range->char-set #x1D552 #x1D6A4)
+   (ucs-range->char-set #x1D6A8 #x1D6C1)
+   (ucs-range->char-set #x1D6C2 #x1D6DB)
+   (ucs-range->char-set #x1D6DC #x1D6FB)
+   (ucs-range->char-set #x1D6FC #x1D715)
+   (ucs-range->char-set #x1D716 #x1D735)
+   (ucs-range->char-set #x1D736 #x1D74F)
+   (ucs-range->char-set #x1D750 #x1D76F)
+   (ucs-range->char-set #x1D770 #x1D789)
+   (ucs-range->char-set #x1D78A #x1D7A9)
+   (ucs-range->char-set #x1D7AA #x1D7C3)
+   (ucs-range->char-set #x1D7C4 #x1D7CA)
+   (ucs-range->char-set #x20000 #x2A6D7)
+   (ucs-range->char-set #x2F800 #x2FA1E)
+   ))
+
+(define char-set:lowercase
+  (char-set-union
+   char-set:other-lowercase
+   (ucs-range->char-set #x61 #x7B)
+   (char-set (ucs->char #xAA))
+   (char-set (ucs->char #xB5))
+   (char-set (ucs->char #xBA))
+   (ucs-range->char-set #xDF #xF7)
+   (ucs-range->char-set #xF8 #x100)
+   (char-set (ucs->char #x101))
+   (char-set (ucs->char #x103))
+   (char-set (ucs->char #x105))
+   (char-set (ucs->char #x107))
+   (char-set (ucs->char #x109))
+   (char-set (ucs->char #x10B))
+   (char-set (ucs->char #x10D))
+   (char-set (ucs->char #x10F))
+   (char-set (ucs->char #x111))
+   (char-set (ucs->char #x113))
+   (char-set (ucs->char #x115))
+   (char-set (ucs->char #x117))
+   (char-set (ucs->char #x119))
+   (char-set (ucs->char #x11B))
+   (char-set (ucs->char #x11D))
+   (char-set (ucs->char #x11F))
+   (char-set (ucs->char #x121))
+   (char-set (ucs->char #x123))
+   (char-set (ucs->char #x125))
+   (char-set (ucs->char #x127))
+   (char-set (ucs->char #x129))
+   (char-set (ucs->char #x12B))
+   (char-set (ucs->char #x12D))
+   (char-set (ucs->char #x12F))
+   (char-set (ucs->char #x131))
+   (char-set (ucs->char #x133))
+   (char-set (ucs->char #x135))
+   (ucs-range->char-set #x137 #x139)
+   (char-set (ucs->char #x13A))
+   (char-set (ucs->char #x13C))
+   (char-set (ucs->char #x13E))
+   (char-set (ucs->char #x140))
+   (char-set (ucs->char #x142))
+   (char-set (ucs->char #x144))
+   (char-set (ucs->char #x146))
+   (ucs-range->char-set #x148 #x14A)
+   (char-set (ucs->char #x14B))
+   (char-set (ucs->char #x14D))
+   (char-set (ucs->char #x14F))
+   (char-set (ucs->char #x151))
+   (char-set (ucs->char #x153))
+   (char-set (ucs->char #x155))
+   (char-set (ucs->char #x157))
+   (char-set (ucs->char #x159))
+   (char-set (ucs->char #x15B))
+   (char-set (ucs->char #x15D))
+   (char-set (ucs->char #x15F))
+   (char-set (ucs->char #x161))
+   (char-set (ucs->char #x163))
+   (char-set (ucs->char #x165))
+   (char-set (ucs->char #x167))
+   (char-set (ucs->char #x169))
+   (char-set (ucs->char #x16B))
+   (char-set (ucs->char #x16D))
+   (char-set (ucs->char #x16F))
+   (char-set (ucs->char #x171))
+   (char-set (ucs->char #x173))
+   (char-set (ucs->char #x175))
+   (char-set (ucs->char #x177))
+   (char-set (ucs->char #x17A))
+   (char-set (ucs->char #x17C))
+   (ucs-range->char-set #x17E #x181)
+   (char-set (ucs->char #x183))
+   (char-set (ucs->char #x185))
+   (char-set (ucs->char #x188))
+   (ucs-range->char-set #x18C #x18E)
+   (char-set (ucs->char #x192))
+   (char-set (ucs->char #x195))
+   (ucs-range->char-set #x199 #x19C)
+   (char-set (ucs->char #x19E))
+   (char-set (ucs->char #x1A1))
+   (char-set (ucs->char #x1A3))
+   (char-set (ucs->char #x1A5))
+   (char-set (ucs->char #x1A8))
+   (ucs-range->char-set #x1AA #x1AC)
+   (char-set (ucs->char #x1AD))
+   (char-set (ucs->char #x1B0))
+   (char-set (ucs->char #x1B4))
+   (char-set (ucs->char #x1B6))
+   (ucs-range->char-set #x1B9 #x1BB)
+   (ucs-range->char-set #x1BD #x1C0)
+   (char-set (ucs->char #x1C6))
+   (char-set (ucs->char #x1C9))
+   (char-set (ucs->char #x1CC))
+   (char-set (ucs->char #x1CE))
+   (char-set (ucs->char #x1D0))
+   (char-set (ucs->char #x1D2))
+   (char-set (ucs->char #x1D4))
+   (char-set (ucs->char #x1D6))
+   (char-set (ucs->char #x1D8))
+   (char-set (ucs->char #x1DA))
+   (ucs-range->char-set #x1DC #x1DE)
+   (char-set (ucs->char #x1DF))
+   (char-set (ucs->char #x1E1))
+   (char-set (ucs->char #x1E3))
+   (char-set (ucs->char #x1E5))
+   (char-set (ucs->char #x1E7))
+   (char-set (ucs->char #x1E9))
+   (char-set (ucs->char #x1EB))
+   (char-set (ucs->char #x1ED))
+   (ucs-range->char-set #x1EF #x1F1)
+   (char-set (ucs->char #x1F3))
+   (char-set (ucs->char #x1F5))
+   (char-set (ucs->char #x1F9))
+   (char-set (ucs->char #x1FB))
+   (char-set (ucs->char #x1FD))
+   (char-set (ucs->char #x1FF))
+   (char-set (ucs->char #x201))
+   (char-set (ucs->char #x203))
+   (char-set (ucs->char #x205))
+   (char-set (ucs->char #x207))
+   (char-set (ucs->char #x209))
+   (char-set (ucs->char #x20B))
+   (char-set (ucs->char #x20D))
+   (char-set (ucs->char #x20F))
+   (char-set (ucs->char #x211))
+   (char-set (ucs->char #x213))
+   (char-set (ucs->char #x215))
+   (char-set (ucs->char #x217))
+   (char-set (ucs->char #x219))
+   (char-set (ucs->char #x21B))
+   (char-set (ucs->char #x21D))
+   (char-set (ucs->char #x21F))
+   (char-set (ucs->char #x221))
+   (char-set (ucs->char #x223))
+   (char-set (ucs->char #x225))
+   (char-set (ucs->char #x227))
+   (char-set (ucs->char #x229))
+   (char-set (ucs->char #x22B))
+   (char-set (ucs->char #x22D))
+   (char-set (ucs->char #x22F))
+   (char-set (ucs->char #x231))
+   (ucs-range->char-set #x233 #x237)
+   (ucs-range->char-set #x250 #x2B0)
+   (char-set (ucs->char #x390))
+   (ucs-range->char-set #x3AC #x3CF)
+   (ucs-range->char-set #x3D0 #x3D2)
+   (ucs-range->char-set #x3D5 #x3D8)
+   (char-set (ucs->char #x3D9))
+   (char-set (ucs->char #x3DB))
+   (char-set (ucs->char #x3DD))
+   (char-set (ucs->char #x3DF))
+   (char-set (ucs->char #x3E1))
+   (char-set (ucs->char #x3E3))
+   (char-set (ucs->char #x3E5))
+   (char-set (ucs->char #x3E7))
+   (char-set (ucs->char #x3E9))
+   (char-set (ucs->char #x3EB))
+   (char-set (ucs->char #x3ED))
+   (ucs-range->char-set #x3EF #x3F4)
+   (char-set (ucs->char #x3F5))
+   (char-set (ucs->char #x3F8))
+   (char-set (ucs->char #x3FB))
+   (ucs-range->char-set #x430 #x460)
+   (char-set (ucs->char #x461))
+   (char-set (ucs->char #x463))
+   (char-set (ucs->char #x465))
+   (char-set (ucs->char #x467))
+   (char-set (ucs->char #x469))
+   (char-set (ucs->char #x46B))
+   (char-set (ucs->char #x46D))
+   (char-set (ucs->char #x46F))
+   (char-set (ucs->char #x471))
+   (char-set (ucs->char #x473))
+   (char-set (ucs->char #x475))
+   (char-set (ucs->char #x477))
+   (char-set (ucs->char #x479))
+   (char-set (ucs->char #x47B))
+   (char-set (ucs->char #x47D))
+   (char-set (ucs->char #x47F))
+   (char-set (ucs->char #x481))
+   (char-set (ucs->char #x48B))
+   (char-set (ucs->char #x48D))
+   (char-set (ucs->char #x48F))
+   (char-set (ucs->char #x491))
+   (char-set (ucs->char #x493))
+   (char-set (ucs->char #x495))
+   (char-set (ucs->char #x497))
+   (char-set (ucs->char #x499))
+   (char-set (ucs->char #x49B))
+   (char-set (ucs->char #x49D))
+   (char-set (ucs->char #x49F))
+   (char-set (ucs->char #x4A1))
+   (char-set (ucs->char #x4A3))
+   (char-set (ucs->char #x4A5))
+   (char-set (ucs->char #x4A7))
+   (char-set (ucs->char #x4A9))
+   (char-set (ucs->char #x4AB))
+   (char-set (ucs->char #x4AD))
+   (char-set (ucs->char #x4AF))
+   (char-set (ucs->char #x4B1))
+   (char-set (ucs->char #x4B3))
+   (char-set (ucs->char #x4B5))
+   (char-set (ucs->char #x4B7))
+   (char-set (ucs->char #x4B9))
+   (char-set (ucs->char #x4BB))
+   (char-set (ucs->char #x4BD))
+   (char-set (ucs->char #x4BF))
+   (char-set (ucs->char #x4C2))
+   (char-set (ucs->char #x4C4))
+   (char-set (ucs->char #x4C6))
+   (char-set (ucs->char #x4C8))
+   (char-set (ucs->char #x4CA))
+   (char-set (ucs->char #x4CC))
+   (char-set (ucs->char #x4CE))
+   (char-set (ucs->char #x4D1))
+   (char-set (ucs->char #x4D3))
+   (char-set (ucs->char #x4D5))
+   (char-set (ucs->char #x4D7))
+   (char-set (ucs->char #x4D9))
+   (char-set (ucs->char #x4DB))
+   (char-set (ucs->char #x4DD))
+   (char-set (ucs->char #x4DF))
+   (char-set (ucs->char #x4E1))
+   (char-set (ucs->char #x4E3))
+   (char-set (ucs->char #x4E5))
+   (char-set (ucs->char #x4E7))
+   (char-set (ucs->char #x4E9))
+   (char-set (ucs->char #x4EB))
+   (char-set (ucs->char #x4ED))
+   (char-set (ucs->char #x4EF))
+   (char-set (ucs->char #x4F1))
+   (char-set (ucs->char #x4F3))
+   (char-set (ucs->char #x4F5))
+   (char-set (ucs->char #x4F9))
+   (char-set (ucs->char #x501))
+   (char-set (ucs->char #x503))
+   (char-set (ucs->char #x505))
+   (char-set (ucs->char #x507))
+   (char-set (ucs->char #x509))
+   (char-set (ucs->char #x50B))
+   (char-set (ucs->char #x50D))
+   (char-set (ucs->char #x50F))
+   (ucs-range->char-set #x561 #x588)
+   (ucs-range->char-set #x1D00 #x1D2C)
+   (ucs-range->char-set #x1D62 #x1D6C)
+   (char-set (ucs->char #x1E01))
+   (char-set (ucs->char #x1E03))
+   (char-set (ucs->char #x1E05))
+   (char-set (ucs->char #x1E07))
+   (char-set (ucs->char #x1E09))
+   (char-set (ucs->char #x1E0B))
+   (char-set (ucs->char #x1E0D))
+   (char-set (ucs->char #x1E0F))
+   (char-set (ucs->char #x1E11))
+   (char-set (ucs->char #x1E13))
+   (char-set (ucs->char #x1E15))
+   (char-set (ucs->char #x1E17))
+   (char-set (ucs->char #x1E19))
+   (char-set (ucs->char #x1E1B))
+   (char-set (ucs->char #x1E1D))
+   (char-set (ucs->char #x1E1F))
+   (char-set (ucs->char #x1E21))
+   (char-set (ucs->char #x1E23))
+   (char-set (ucs->char #x1E25))
+   (char-set (ucs->char #x1E27))
+   (char-set (ucs->char #x1E29))
+   (char-set (ucs->char #x1E2B))
+   (char-set (ucs->char #x1E2D))
+   (char-set (ucs->char #x1E2F))
+   (char-set (ucs->char #x1E31))
+   (char-set (ucs->char #x1E33))
+   (char-set (ucs->char #x1E35))
+   (char-set (ucs->char #x1E37))
+   (char-set (ucs->char #x1E39))
+   (char-set (ucs->char #x1E3B))
+   (char-set (ucs->char #x1E3D))
+   (char-set (ucs->char #x1E3F))
+   (char-set (ucs->char #x1E41))
+   (char-set (ucs->char #x1E43))
+   (char-set (ucs->char #x1E45))
+   (char-set (ucs->char #x1E47))
+   (char-set (ucs->char #x1E49))
+   (char-set (ucs->char #x1E4B))
+   (char-set (ucs->char #x1E4D))
+   (char-set (ucs->char #x1E4F))
+   (char-set (ucs->char #x1E51))
+   (char-set (ucs->char #x1E53))
+   (char-set (ucs->char #x1E55))
+   (char-set (ucs->char #x1E57))
+   (char-set (ucs->char #x1E59))
+   (char-set (ucs->char #x1E5B))
+   (char-set (ucs->char #x1E5D))
+   (char-set (ucs->char #x1E5F))
+   (char-set (ucs->char #x1E61))
+   (char-set (ucs->char #x1E63))
+   (char-set (ucs->char #x1E65))
+   (char-set (ucs->char #x1E67))
+   (char-set (ucs->char #x1E69))
+   (char-set (ucs->char #x1E6B))
+   (char-set (ucs->char #x1E6D))
+   (char-set (ucs->char #x1E6F))
+   (char-set (ucs->char #x1E71))
+   (char-set (ucs->char #x1E73))
+   (char-set (ucs->char #x1E75))
+   (char-set (ucs->char #x1E77))
+   (char-set (ucs->char #x1E79))
+   (char-set (ucs->char #x1E7B))
+   (char-set (ucs->char #x1E7D))
+   (char-set (ucs->char #x1E7F))
+   (char-set (ucs->char #x1E81))
+   (char-set (ucs->char #x1E83))
+   (char-set (ucs->char #x1E85))
+   (char-set (ucs->char #x1E87))
+   (char-set (ucs->char #x1E89))
+   (char-set (ucs->char #x1E8B))
+   (char-set (ucs->char #x1E8D))
+   (char-set (ucs->char #x1E8F))
+   (char-set (ucs->char #x1E91))
+   (char-set (ucs->char #x1E93))
+   (ucs-range->char-set #x1E95 #x1E9C)
+   (char-set (ucs->char #x1EA1))
+   (char-set (ucs->char #x1EA3))
+   (char-set (ucs->char #x1EA5))
+   (char-set (ucs->char #x1EA7))
+   (char-set (ucs->char #x1EA9))
+   (char-set (ucs->char #x1EAB))
+   (char-set (ucs->char #x1EAD))
+   (char-set (ucs->char #x1EAF))
+   (char-set (ucs->char #x1EB1))
+   (char-set (ucs->char #x1EB3))
+   (char-set (ucs->char #x1EB5))
+   (char-set (ucs->char #x1EB7))
+   (char-set (ucs->char #x1EB9))
+   (char-set (ucs->char #x1EBB))
+   (char-set (ucs->char #x1EBD))
+   (char-set (ucs->char #x1EBF))
+   (char-set (ucs->char #x1EC1))
+   (char-set (ucs->char #x1EC3))
+   (char-set (ucs->char #x1EC5))
+   (char-set (ucs->char #x1EC7))
+   (char-set (ucs->char #x1EC9))
+   (char-set (ucs->char #x1ECB))
+   (char-set (ucs->char #x1ECD))
+   (char-set (ucs->char #x1ECF))
+   (char-set (ucs->char #x1ED1))
+   (char-set (ucs->char #x1ED3))
+   (char-set (ucs->char #x1ED5))
+   (char-set (ucs->char #x1ED7))
+   (char-set (ucs->char #x1ED9))
+   (char-set (ucs->char #x1EDB))
+   (char-set (ucs->char #x1EDD))
+   (char-set (ucs->char #x1EDF))
+   (char-set (ucs->char #x1EE1))
+   (char-set (ucs->char #x1EE3))
+   (char-set (ucs->char #x1EE5))
+   (char-set (ucs->char #x1EE7))
+   (char-set (ucs->char #x1EE9))
+   (char-set (ucs->char #x1EEB))
+   (char-set (ucs->char #x1EED))
+   (char-set (ucs->char #x1EEF))
+   (char-set (ucs->char #x1EF1))
+   (char-set (ucs->char #x1EF3))
+   (char-set (ucs->char #x1EF5))
+   (char-set (ucs->char #x1EF7))
+   (char-set (ucs->char #x1EF9))
+   (ucs-range->char-set #x1F00 #x1F08)
+   (ucs-range->char-set #x1F10 #x1F16)
+   (ucs-range->char-set #x1F20 #x1F28)
+   (ucs-range->char-set #x1F30 #x1F38)
+   (ucs-range->char-set #x1F40 #x1F46)
+   (ucs-range->char-set #x1F50 #x1F58)
+   (ucs-range->char-set #x1F60 #x1F68)
+   (ucs-range->char-set #x1F70 #x1F7E)
+   (ucs-range->char-set #x1F80 #x1F88)
+   (ucs-range->char-set #x1F90 #x1F98)
+   (ucs-range->char-set #x1FA0 #x1FA8)
+   (ucs-range->char-set #x1FB0 #x1FB5)
+   (ucs-range->char-set #x1FB6 #x1FB8)
+   (char-set (ucs->char #x1FBE))
+   (ucs-range->char-set #x1FC2 #x1FC5)
+   (ucs-range->char-set #x1FC6 #x1FC8)
+   (ucs-range->char-set #x1FD0 #x1FD4)
+   (ucs-range->char-set #x1FD6 #x1FD8)
+   (ucs-range->char-set #x1FE0 #x1FE8)
+   (ucs-range->char-set #x1FF2 #x1FF5)
+   (ucs-range->char-set #x1FF6 #x1FF8)
+   (char-set (ucs->char #x2071))
+   (char-set (ucs->char #x207F))
+   (char-set (ucs->char #x210A))
+   (ucs-range->char-set #x210E #x2110)
+   (char-set (ucs->char #x2113))
+   (char-set (ucs->char #x212F))
+   (char-set (ucs->char #x2134))
+   (char-set (ucs->char #x2139))
+   (char-set (ucs->char #x213D))
+   (ucs-range->char-set #x2146 #x214A)
+   (ucs-range->char-set #xFB00 #xFB07)
+   (ucs-range->char-set #xFB13 #xFB18)
+   (ucs-range->char-set #xFF41 #xFF5B)
+   (ucs-range->char-set #x10428 #x10450)
+   (ucs-range->char-set #x1D41A #x1D434)
+   (ucs-range->char-set #x1D44E #x1D455)
+   (ucs-range->char-set #x1D456 #x1D468)
+   (ucs-range->char-set #x1D482 #x1D49C)
+   (ucs-range->char-set #x1D4B6 #x1D4BA)
+   (char-set (ucs->char #x1D4BB))
+   (ucs-range->char-set #x1D4BD #x1D4C4)
+   (ucs-range->char-set #x1D4C5 #x1D4D0)
+   (ucs-range->char-set #x1D4EA #x1D504)
+   (ucs-range->char-set #x1D51E #x1D538)
+   (ucs-range->char-set #x1D552 #x1D56C)
+   (ucs-range->char-set #x1D586 #x1D5A0)
+   (ucs-range->char-set #x1D5BA #x1D5D4)
+   (ucs-range->char-set #x1D5EE #x1D608)
+   (ucs-range->char-set #x1D622 #x1D63C)
+   (ucs-range->char-set #x1D656 #x1D670)
+   (ucs-range->char-set #x1D68A #x1D6A4)
+   (ucs-range->char-set #x1D6C2 #x1D6DB)
+   (ucs-range->char-set #x1D6DC #x1D6E2)
+   (ucs-range->char-set #x1D6FC #x1D715)
+   (ucs-range->char-set #x1D716 #x1D71C)
+   (ucs-range->char-set #x1D736 #x1D74F)
+   (ucs-range->char-set #x1D750 #x1D756)
+   (ucs-range->char-set #x1D770 #x1D789)
+   (ucs-range->char-set #x1D78A #x1D790)
+   (ucs-range->char-set #x1D7AA #x1D7C3)
+   (ucs-range->char-set #x1D7C4 #x1D7CA)
+   ))
+
+(define char-set:math
+  (char-set-union
+   char-set:other-math
+   (char-set (ucs->char #x2B))
+   (ucs-range->char-set #x3C #x3F)
+   (char-set (ucs->char #x7C))
+   (char-set (ucs->char #x7E))
+   (char-set (ucs->char #xAC))
+   (char-set (ucs->char #xB1))
+   (char-set (ucs->char #xD7))
+   (char-set (ucs->char #xF7))
+   (char-set (ucs->char #x3F6))
+   (char-set (ucs->char #x2044))
+   (char-set (ucs->char #x2052))
+   (ucs-range->char-set #x207A #x207D)
+   (ucs-range->char-set #x208A #x208D)
+   (ucs-range->char-set #x2140 #x2145)
+   (char-set (ucs->char #x214B))
+   (ucs-range->char-set #x2190 #x2195)
+   (ucs-range->char-set #x219A #x219C)
+   (char-set (ucs->char #x21A0))
+   (char-set (ucs->char #x21A3))
+   (char-set (ucs->char #x21A6))
+   (char-set (ucs->char #x21AE))
+   (ucs-range->char-set #x21CE #x21D0)
+   (char-set (ucs->char #x21D2))
+   (char-set (ucs->char #x21D4))
+   (ucs-range->char-set #x21F4 #x2300)
+   (ucs-range->char-set #x2308 #x230C)
+   (ucs-range->char-set #x2320 #x2322)
+   (char-set (ucs->char #x237C))
+   (ucs-range->char-set #x239B #x23B4)
+   (char-set (ucs->char #x25B7))
+   (char-set (ucs->char #x25C1))
+   (ucs-range->char-set #x25F8 #x2600)
+   (char-set (ucs->char #x266F))
+   (ucs-range->char-set #x27D0 #x27E6)
+   (ucs-range->char-set #x27F0 #x2800)
+   (ucs-range->char-set #x2900 #x2983)
+   (ucs-range->char-set #x2999 #x29D8)
+   (ucs-range->char-set #x29DC #x29FC)
+   (ucs-range->char-set #x29FE #x2B00)
+   (char-set (ucs->char #xFB29))
+   (char-set (ucs->char #xFE62))
+   (ucs-range->char-set #xFE64 #xFE67)
+   (char-set (ucs->char #xFF0B))
+   (ucs-range->char-set #xFF1C #xFF1F)
+   (char-set (ucs->char #xFF5C))
+   (char-set (ucs->char #xFF5E))
+   (char-set (ucs->char #xFFE2))
+   (ucs-range->char-set #xFFE9 #xFFED)
+   (char-set (ucs->char #x1D6C1))
+   (char-set (ucs->char #x1D6DB))
+   (char-set (ucs->char #x1D6FB))
+   (char-set (ucs->char #x1D715))
+   (char-set (ucs->char #x1D735))
+   (char-set (ucs->char #x1D74F))
+   (char-set (ucs->char #x1D76F))
+   (char-set (ucs->char #x1D789))
+   (char-set (ucs->char #x1D7A9))
+   (char-set (ucs->char #x1D7C3))
+   ))
+
+(define char-set:uppercase
+  (char-set-union
+   char-set:other-uppercase
+   (ucs-range->char-set #x41 #x5B)
+   (ucs-range->char-set #xC0 #xD7)
+   (ucs-range->char-set #xD8 #xDF)
+   (char-set (ucs->char #x100))
+   (char-set (ucs->char #x102))
+   (char-set (ucs->char #x104))
+   (char-set (ucs->char #x106))
+   (char-set (ucs->char #x108))
+   (char-set (ucs->char #x10A))
+   (char-set (ucs->char #x10C))
+   (char-set (ucs->char #x10E))
+   (char-set (ucs->char #x110))
+   (char-set (ucs->char #x112))
+   (char-set (ucs->char #x114))
+   (char-set (ucs->char #x116))
+   (char-set (ucs->char #x118))
+   (char-set (ucs->char #x11A))
+   (char-set (ucs->char #x11C))
+   (char-set (ucs->char #x11E))
+   (char-set (ucs->char #x120))
+   (char-set (ucs->char #x122))
+   (char-set (ucs->char #x124))
+   (char-set (ucs->char #x126))
+   (char-set (ucs->char #x128))
+   (char-set (ucs->char #x12A))
+   (char-set (ucs->char #x12C))
+   (char-set (ucs->char #x12E))
+   (char-set (ucs->char #x130))
+   (char-set (ucs->char #x132))
+   (char-set (ucs->char #x134))
+   (char-set (ucs->char #x136))
+   (char-set (ucs->char #x139))
+   (char-set (ucs->char #x13B))
+   (char-set (ucs->char #x13D))
+   (char-set (ucs->char #x13F))
+   (char-set (ucs->char #x141))
+   (char-set (ucs->char #x143))
+   (char-set (ucs->char #x145))
+   (char-set (ucs->char #x147))
+   (char-set (ucs->char #x14A))
+   (char-set (ucs->char #x14C))
+   (char-set (ucs->char #x14E))
+   (char-set (ucs->char #x150))
+   (char-set (ucs->char #x152))
+   (char-set (ucs->char #x154))
+   (char-set (ucs->char #x156))
+   (char-set (ucs->char #x158))
+   (char-set (ucs->char #x15A))
+   (char-set (ucs->char #x15C))
+   (char-set (ucs->char #x15E))
+   (char-set (ucs->char #x160))
+   (char-set (ucs->char #x162))
+   (char-set (ucs->char #x164))
+   (char-set (ucs->char #x166))
+   (char-set (ucs->char #x168))
+   (char-set (ucs->char #x16A))
+   (char-set (ucs->char #x16C))
+   (char-set (ucs->char #x16E))
+   (char-set (ucs->char #x170))
+   (char-set (ucs->char #x172))
+   (char-set (ucs->char #x174))
+   (char-set (ucs->char #x176))
+   (ucs-range->char-set #x178 #x17A)
+   (char-set (ucs->char #x17B))
+   (char-set (ucs->char #x17D))
+   (ucs-range->char-set #x181 #x183)
+   (char-set (ucs->char #x184))
+   (ucs-range->char-set #x186 #x188)
+   (ucs-range->char-set #x189 #x18C)
+   (ucs-range->char-set #x18E #x192)
+   (ucs-range->char-set #x193 #x195)
+   (ucs-range->char-set #x196 #x199)
+   (ucs-range->char-set #x19C #x19E)
+   (ucs-range->char-set #x19F #x1A1)
+   (char-set (ucs->char #x1A2))
+   (char-set (ucs->char #x1A4))
+   (ucs-range->char-set #x1A6 #x1A8)
+   (char-set (ucs->char #x1A9))
+   (char-set (ucs->char #x1AC))
+   (ucs-range->char-set #x1AE #x1B0)
+   (ucs-range->char-set #x1B1 #x1B4)
+   (char-set (ucs->char #x1B5))
+   (ucs-range->char-set #x1B7 #x1B9)
+   (char-set (ucs->char #x1BC))
+   (char-set (ucs->char #x1C4))
+   (char-set (ucs->char #x1C7))
+   (char-set (ucs->char #x1CA))
+   (char-set (ucs->char #x1CD))
+   (char-set (ucs->char #x1CF))
+   (char-set (ucs->char #x1D1))
+   (char-set (ucs->char #x1D3))
+   (char-set (ucs->char #x1D5))
+   (char-set (ucs->char #x1D7))
+   (char-set (ucs->char #x1D9))
+   (char-set (ucs->char #x1DB))
+   (char-set (ucs->char #x1DE))
+   (char-set (ucs->char #x1E0))
+   (char-set (ucs->char #x1E2))
+   (char-set (ucs->char #x1E4))
+   (char-set (ucs->char #x1E6))
+   (char-set (ucs->char #x1E8))
+   (char-set (ucs->char #x1EA))
+   (char-set (ucs->char #x1EC))
+   (char-set (ucs->char #x1EE))
+   (char-set (ucs->char #x1F1))
+   (char-set (ucs->char #x1F4))
+   (ucs-range->char-set #x1F6 #x1F9)
+   (char-set (ucs->char #x1FA))
+   (char-set (ucs->char #x1FC))
+   (char-set (ucs->char #x1FE))
+   (char-set (ucs->char #x200))
+   (char-set (ucs->char #x202))
+   (char-set (ucs->char #x204))
+   (char-set (ucs->char #x206))
+   (char-set (ucs->char #x208))
+   (char-set (ucs->char #x20A))
+   (char-set (ucs->char #x20C))
+   (char-set (ucs->char #x20E))
+   (char-set (ucs->char #x210))
+   (char-set (ucs->char #x212))
+   (char-set (ucs->char #x214))
+   (char-set (ucs->char #x216))
+   (char-set (ucs->char #x218))
+   (char-set (ucs->char #x21A))
+   (char-set (ucs->char #x21C))
+   (char-set (ucs->char #x21E))
+   (char-set (ucs->char #x220))
+   (char-set (ucs->char #x222))
+   (char-set (ucs->char #x224))
+   (char-set (ucs->char #x226))
+   (char-set (ucs->char #x228))
+   (char-set (ucs->char #x22A))
+   (char-set (ucs->char #x22C))
+   (char-set (ucs->char #x22E))
+   (char-set (ucs->char #x230))
+   (char-set (ucs->char #x232))
+   (char-set (ucs->char #x386))
+   (ucs-range->char-set #x388 #x38B)
+   (char-set (ucs->char #x38C))
+   (ucs-range->char-set #x38E #x390)
+   (ucs-range->char-set #x391 #x3A2)
+   (ucs-range->char-set #x3A3 #x3AC)
+   (ucs-range->char-set #x3D2 #x3D5)
+   (char-set (ucs->char #x3D8))
+   (char-set (ucs->char #x3DA))
+   (char-set (ucs->char #x3DC))
+   (char-set (ucs->char #x3DE))
+   (char-set (ucs->char #x3E0))
+   (char-set (ucs->char #x3E2))
+   (char-set (ucs->char #x3E4))
+   (char-set (ucs->char #x3E6))
+   (char-set (ucs->char #x3E8))
+   (char-set (ucs->char #x3EA))
+   (char-set (ucs->char #x3EC))
+   (char-set (ucs->char #x3EE))
+   (char-set (ucs->char #x3F4))
+   (char-set (ucs->char #x3F7))
+   (ucs-range->char-set #x3F9 #x3FB)
+   (ucs-range->char-set #x400 #x430)
+   (char-set (ucs->char #x460))
+   (char-set (ucs->char #x462))
+   (char-set (ucs->char #x464))
+   (char-set (ucs->char #x466))
+   (char-set (ucs->char #x468))
+   (char-set (ucs->char #x46A))
+   (char-set (ucs->char #x46C))
+   (char-set (ucs->char #x46E))
+   (char-set (ucs->char #x470))
+   (char-set (ucs->char #x472))
+   (char-set (ucs->char #x474))
+   (char-set (ucs->char #x476))
+   (char-set (ucs->char #x478))
+   (char-set (ucs->char #x47A))
+   (char-set (ucs->char #x47C))
+   (char-set (ucs->char #x47E))
+   (char-set (ucs->char #x480))
+   (char-set (ucs->char #x48A))
+   (char-set (ucs->char #x48C))
+   (char-set (ucs->char #x48E))
+   (char-set (ucs->char #x490))
+   (char-set (ucs->char #x492))
+   (char-set (ucs->char #x494))
+   (char-set (ucs->char #x496))
+   (char-set (ucs->char #x498))
+   (char-set (ucs->char #x49A))
+   (char-set (ucs->char #x49C))
+   (char-set (ucs->char #x49E))
+   (char-set (ucs->char #x4A0))
+   (char-set (ucs->char #x4A2))
+   (char-set (ucs->char #x4A4))
+   (char-set (ucs->char #x4A6))
+   (char-set (ucs->char #x4A8))
+   (char-set (ucs->char #x4AA))
+   (char-set (ucs->char #x4AC))
+   (char-set (ucs->char #x4AE))
+   (char-set (ucs->char #x4B0))
+   (char-set (ucs->char #x4B2))
+   (char-set (ucs->char #x4B4))
+   (char-set (ucs->char #x4B6))
+   (char-set (ucs->char #x4B8))
+   (char-set (ucs->char #x4BA))
+   (char-set (ucs->char #x4BC))
+   (char-set (ucs->char #x4BE))
+   (ucs-range->char-set #x4C0 #x4C2)
+   (char-set (ucs->char #x4C3))
+   (char-set (ucs->char #x4C5))
+   (char-set (ucs->char #x4C7))
+   (char-set (ucs->char #x4C9))
+   (char-set (ucs->char #x4CB))
+   (char-set (ucs->char #x4CD))
+   (char-set (ucs->char #x4D0))
+   (char-set (ucs->char #x4D2))
+   (char-set (ucs->char #x4D4))
+   (char-set (ucs->char #x4D6))
+   (char-set (ucs->char #x4D8))
+   (char-set (ucs->char #x4DA))
+   (char-set (ucs->char #x4DC))
+   (char-set (ucs->char #x4DE))
+   (char-set (ucs->char #x4E0))
+   (char-set (ucs->char #x4E2))
+   (char-set (ucs->char #x4E4))
+   (char-set (ucs->char #x4E6))
+   (char-set (ucs->char #x4E8))
+   (char-set (ucs->char #x4EA))
+   (char-set (ucs->char #x4EC))
+   (char-set (ucs->char #x4EE))
+   (char-set (ucs->char #x4F0))
+   (char-set (ucs->char #x4F2))
+   (char-set (ucs->char #x4F4))
+   (char-set (ucs->char #x4F8))
+   (char-set (ucs->char #x500))
+   (char-set (ucs->char #x502))
+   (char-set (ucs->char #x504))
+   (char-set (ucs->char #x506))
+   (char-set (ucs->char #x508))
+   (char-set (ucs->char #x50A))
+   (char-set (ucs->char #x50C))
+   (char-set (ucs->char #x50E))
+   (ucs-range->char-set #x531 #x557)
+   (ucs-range->char-set #x10A0 #x10C6)
+   (char-set (ucs->char #x1E00))
+   (char-set (ucs->char #x1E02))
+   (char-set (ucs->char #x1E04))
+   (char-set (ucs->char #x1E06))
+   (char-set (ucs->char #x1E08))
+   (char-set (ucs->char #x1E0A))
+   (char-set (ucs->char #x1E0C))
+   (char-set (ucs->char #x1E0E))
+   (char-set (ucs->char #x1E10))
+   (char-set (ucs->char #x1E12))
+   (char-set (ucs->char #x1E14))
+   (char-set (ucs->char #x1E16))
+   (char-set (ucs->char #x1E18))
+   (char-set (ucs->char #x1E1A))
+   (char-set (ucs->char #x1E1C))
+   (char-set (ucs->char #x1E1E))
+   (char-set (ucs->char #x1E20))
+   (char-set (ucs->char #x1E22))
+   (char-set (ucs->char #x1E24))
+   (char-set (ucs->char #x1E26))
+   (char-set (ucs->char #x1E28))
+   (char-set (ucs->char #x1E2A))
+   (char-set (ucs->char #x1E2C))
+   (char-set (ucs->char #x1E2E))
+   (char-set (ucs->char #x1E30))
+   (char-set (ucs->char #x1E32))
+   (char-set (ucs->char #x1E34))
+   (char-set (ucs->char #x1E36))
+   (char-set (ucs->char #x1E38))
+   (char-set (ucs->char #x1E3A))
+   (char-set (ucs->char #x1E3C))
+   (char-set (ucs->char #x1E3E))
+   (char-set (ucs->char #x1E40))
+   (char-set (ucs->char #x1E42))
+   (char-set (ucs->char #x1E44))
+   (char-set (ucs->char #x1E46))
+   (char-set (ucs->char #x1E48))
+   (char-set (ucs->char #x1E4A))
+   (char-set (ucs->char #x1E4C))
+   (char-set (ucs->char #x1E4E))
+   (char-set (ucs->char #x1E50))
+   (char-set (ucs->char #x1E52))
+   (char-set (ucs->char #x1E54))
+   (char-set (ucs->char #x1E56))
+   (char-set (ucs->char #x1E58))
+   (char-set (ucs->char #x1E5A))
+   (char-set (ucs->char #x1E5C))
+   (char-set (ucs->char #x1E5E))
+   (char-set (ucs->char #x1E60))
+   (char-set (ucs->char #x1E62))
+   (char-set (ucs->char #x1E64))
+   (char-set (ucs->char #x1E66))
+   (char-set (ucs->char #x1E68))
+   (char-set (ucs->char #x1E6A))
+   (char-set (ucs->char #x1E6C))
+   (char-set (ucs->char #x1E6E))
+   (char-set (ucs->char #x1E70))
+   (char-set (ucs->char #x1E72))
+   (char-set (ucs->char #x1E74))
+   (char-set (ucs->char #x1E76))
+   (char-set (ucs->char #x1E78))
+   (char-set (ucs->char #x1E7A))
+   (char-set (ucs->char #x1E7C))
+   (char-set (ucs->char #x1E7E))
+   (char-set (ucs->char #x1E80))
+   (char-set (ucs->char #x1E82))
+   (char-set (ucs->char #x1E84))
+   (char-set (ucs->char #x1E86))
+   (char-set (ucs->char #x1E88))
+   (char-set (ucs->char #x1E8A))
+   (char-set (ucs->char #x1E8C))
+   (char-set (ucs->char #x1E8E))
+   (char-set (ucs->char #x1E90))
+   (char-set (ucs->char #x1E92))
+   (char-set (ucs->char #x1E94))
+   (char-set (ucs->char #x1EA0))
+   (char-set (ucs->char #x1EA2))
+   (char-set (ucs->char #x1EA4))
+   (char-set (ucs->char #x1EA6))
+   (char-set (ucs->char #x1EA8))
+   (char-set (ucs->char #x1EAA))
+   (char-set (ucs->char #x1EAC))
+   (char-set (ucs->char #x1EAE))
+   (char-set (ucs->char #x1EB0))
+   (char-set (ucs->char #x1EB2))
+   (char-set (ucs->char #x1EB4))
+   (char-set (ucs->char #x1EB6))
+   (char-set (ucs->char #x1EB8))
+   (char-set (ucs->char #x1EBA))
+   (char-set (ucs->char #x1EBC))
+   (char-set (ucs->char #x1EBE))
+   (char-set (ucs->char #x1EC0))
+   (char-set (ucs->char #x1EC2))
+   (char-set (ucs->char #x1EC4))
+   (char-set (ucs->char #x1EC6))
+   (char-set (ucs->char #x1EC8))
+   (char-set (ucs->char #x1ECA))
+   (char-set (ucs->char #x1ECC))
+   (char-set (ucs->char #x1ECE))
+   (char-set (ucs->char #x1ED0))
+   (char-set (ucs->char #x1ED2))
+   (char-set (ucs->char #x1ED4))
+   (char-set (ucs->char #x1ED6))
+   (char-set (ucs->char #x1ED8))
+   (char-set (ucs->char #x1EDA))
+   (char-set (ucs->char #x1EDC))
+   (char-set (ucs->char #x1EDE))
+   (char-set (ucs->char #x1EE0))
+   (char-set (ucs->char #x1EE2))
+   (char-set (ucs->char #x1EE4))
+   (char-set (ucs->char #x1EE6))
+   (char-set (ucs->char #x1EE8))
+   (char-set (ucs->char #x1EEA))
+   (char-set (ucs->char #x1EEC))
+   (char-set (ucs->char #x1EEE))
+   (char-set (ucs->char #x1EF0))
+   (char-set (ucs->char #x1EF2))
+   (char-set (ucs->char #x1EF4))
+   (char-set (ucs->char #x1EF6))
+   (char-set (ucs->char #x1EF8))
+   (ucs-range->char-set #x1F08 #x1F10)
+   (ucs-range->char-set #x1F18 #x1F1E)
+   (ucs-range->char-set #x1F28 #x1F30)
+   (ucs-range->char-set #x1F38 #x1F40)
+   (ucs-range->char-set #x1F48 #x1F4E)
+   (char-set (ucs->char #x1F59))
+   (char-set (ucs->char #x1F5B))
+   (char-set (ucs->char #x1F5D))
+   (char-set (ucs->char #x1F5F))
+   (ucs-range->char-set #x1F68 #x1F70)
+   (ucs-range->char-set #x1FB8 #x1FBC)
+   (ucs-range->char-set #x1FC8 #x1FCC)
+   (ucs-range->char-set #x1FD8 #x1FDC)
+   (ucs-range->char-set #x1FE8 #x1FED)
+   (ucs-range->char-set #x1FF8 #x1FFC)
+   (char-set (ucs->char #x2102))
+   (char-set (ucs->char #x2107))
+   (ucs-range->char-set #x210B #x210E)
+   (ucs-range->char-set #x2110 #x2113)
+   (char-set (ucs->char #x2115))
+   (ucs-range->char-set #x2119 #x211E)
+   (char-set (ucs->char #x2124))
+   (char-set (ucs->char #x2126))
+   (char-set (ucs->char #x2128))
+   (ucs-range->char-set #x212A #x212E)
+   (ucs-range->char-set #x2130 #x2132)
+   (char-set (ucs->char #x2133))
+   (ucs-range->char-set #x213E #x2140)
+   (char-set (ucs->char #x2145))
+   (ucs-range->char-set #xFF21 #xFF3B)
+   (ucs-range->char-set #x10400 #x10428)
+   (ucs-range->char-set #x1D400 #x1D41A)
+   (ucs-range->char-set #x1D434 #x1D44E)
+   (ucs-range->char-set #x1D468 #x1D482)
+   (char-set (ucs->char #x1D49C))
+   (ucs-range->char-set #x1D49E #x1D4A0)
+   (char-set (ucs->char #x1D4A2))
+   (ucs-range->char-set #x1D4A5 #x1D4A7)
+   (ucs-range->char-set #x1D4A9 #x1D4AD)
+   (ucs-range->char-set #x1D4AE #x1D4B6)
+   (ucs-range->char-set #x1D4D0 #x1D4EA)
+   (ucs-range->char-set #x1D504 #x1D506)
+   (ucs-range->char-set #x1D507 #x1D50B)
+   (ucs-range->char-set #x1D50D #x1D515)
+   (ucs-range->char-set #x1D516 #x1D51D)
+   (ucs-range->char-set #x1D538 #x1D53A)
+   (ucs-range->char-set #x1D53B #x1D53F)
+   (ucs-range->char-set #x1D540 #x1D545)
+   (char-set (ucs->char #x1D546))
+   (ucs-range->char-set #x1D54A #x1D551)
+   (ucs-range->char-set #x1D56C #x1D586)
+   (ucs-range->char-set #x1D5A0 #x1D5BA)
+   (ucs-range->char-set #x1D5D4 #x1D5EE)
+   (ucs-range->char-set #x1D608 #x1D622)
+   (ucs-range->char-set #x1D63C #x1D656)
+   (ucs-range->char-set #x1D670 #x1D68A)
+   (ucs-range->char-set #x1D6A8 #x1D6C1)
+   (ucs-range->char-set #x1D6E2 #x1D6FB)
+   (ucs-range->char-set #x1D71C #x1D735)
+   (ucs-range->char-set #x1D756 #x1D76F)
+   (ucs-range->char-set #x1D790 #x1D7A9)
+   ))
+
+(define char-set:xid-continue
+  (char-set-union
+   (ucs-range->char-set #x30 #x3A)
+   (ucs-range->char-set #x41 #x5B)
+   (char-set (ucs->char #x5F))
+   (ucs-range->char-set #x61 #x7B)
+   (char-set (ucs->char #xAA))
+   (char-set (ucs->char #xB5))
+   (char-set (ucs->char #xB7))
+   (char-set (ucs->char #xBA))
+   (ucs-range->char-set #xC0 #xD7)
+   (ucs-range->char-set #xD8 #xF7)
+   (ucs-range->char-set #xF8 #x1BB)
+   (char-set (ucs->char #x1BB))
+   (ucs-range->char-set #x1BC #x1C0)
+   (ucs-range->char-set #x1C0 #x1C4)
+   (ucs-range->char-set #x1C4 #x237)
+   (ucs-range->char-set #x250 #x2B0)
+   (ucs-range->char-set #x2B0 #x2C2)
+   (ucs-range->char-set #x2C6 #x2D2)
+   (ucs-range->char-set #x2E0 #x2E5)
+   (char-set (ucs->char #x2EE))
+   (ucs-range->char-set #x300 #x358)
+   (ucs-range->char-set #x35D #x370)
+   (char-set (ucs->char #x386))
+   (ucs-range->char-set #x388 #x38B)
+   (char-set (ucs->char #x38C))
+   (ucs-range->char-set #x38E #x3A2)
+   (ucs-range->char-set #x3A3 #x3CF)
+   (ucs-range->char-set #x3D0 #x3F6)
+   (ucs-range->char-set #x3F7 #x3FC)
+   (ucs-range->char-set #x400 #x482)
+   (ucs-range->char-set #x483 #x487)
+   (ucs-range->char-set #x48A #x4CF)
+   (ucs-range->char-set #x4D0 #x4F6)
+   (ucs-range->char-set #x4F8 #x4FA)
+   (ucs-range->char-set #x500 #x510)
+   (ucs-range->char-set #x531 #x557)
+   (char-set (ucs->char #x559))
+   (ucs-range->char-set #x561 #x588)
+   (ucs-range->char-set #x591 #x5A2)
+   (ucs-range->char-set #x5A3 #x5BA)
+   (ucs-range->char-set #x5BB #x5BE)
+   (char-set (ucs->char #x5BF))
+   (ucs-range->char-set #x5C1 #x5C3)
+   (char-set (ucs->char #x5C4))
+   (ucs-range->char-set #x5D0 #x5EB)
+   (ucs-range->char-set #x5F0 #x5F3)
+   (ucs-range->char-set #x610 #x616)
+   (ucs-range->char-set #x621 #x63B)
+   (char-set (ucs->char #x640))
+   (ucs-range->char-set #x641 #x64B)
+   (ucs-range->char-set #x64B #x659)
+   (ucs-range->char-set #x660 #x66A)
+   (ucs-range->char-set #x66E #x670)
+   (char-set (ucs->char #x670))
+   (ucs-range->char-set #x671 #x6D4)
+   (char-set (ucs->char #x6D5))
+   (ucs-range->char-set #x6D6 #x6DD)
+   (ucs-range->char-set #x6DF #x6E5)
+   (ucs-range->char-set #x6E5 #x6E7)
+   (ucs-range->char-set #x6E7 #x6E9)
+   (ucs-range->char-set #x6EA #x6EE)
+   (ucs-range->char-set #x6EE #x6F0)
+   (ucs-range->char-set #x6F0 #x6FA)
+   (ucs-range->char-set #x6FA #x6FD)
+   (char-set (ucs->char #x6FF))
+   (char-set (ucs->char #x710))
+   (char-set (ucs->char #x711))
+   (ucs-range->char-set #x712 #x730)
+   (ucs-range->char-set #x730 #x74B)
+   (ucs-range->char-set #x74D #x750)
+   (ucs-range->char-set #x780 #x7A6)
+   (ucs-range->char-set #x7A6 #x7B1)
+   (char-set (ucs->char #x7B1))
+   (ucs-range->char-set #x901 #x903)
+   (char-set (ucs->char #x903))
+   (ucs-range->char-set #x904 #x93A)
+   (char-set (ucs->char #x93C))
+   (char-set (ucs->char #x93D))
+   (ucs-range->char-set #x93E #x941)
+   (ucs-range->char-set #x941 #x949)
+   (ucs-range->char-set #x949 #x94D)
+   (char-set (ucs->char #x94D))
+   (char-set (ucs->char #x950))
+   (ucs-range->char-set #x951 #x955)
+   (ucs-range->char-set #x958 #x962)
+   (ucs-range->char-set #x962 #x964)
+   (ucs-range->char-set #x966 #x970)
+   (char-set (ucs->char #x981))
+   (ucs-range->char-set #x982 #x984)
+   (ucs-range->char-set #x985 #x98D)
+   (ucs-range->char-set #x98F #x991)
+   (ucs-range->char-set #x993 #x9A9)
+   (ucs-range->char-set #x9AA #x9B1)
+   (char-set (ucs->char #x9B2))
+   (ucs-range->char-set #x9B6 #x9BA)
+   (char-set (ucs->char #x9BC))
+   (char-set (ucs->char #x9BD))
+   (ucs-range->char-set #x9BE #x9C1)
+   (ucs-range->char-set #x9C1 #x9C5)
+   (ucs-range->char-set #x9C7 #x9C9)
+   (ucs-range->char-set #x9CB #x9CD)
+   (char-set (ucs->char #x9CD))
+   (char-set (ucs->char #x9D7))
+   (ucs-range->char-set #x9DC #x9DE)
+   (ucs-range->char-set #x9DF #x9E2)
+   (ucs-range->char-set #x9E2 #x9E4)
+   (ucs-range->char-set #x9E6 #x9F0)
+   (ucs-range->char-set #x9F0 #x9F2)
+   (ucs-range->char-set #xA01 #xA03)
+   (char-set (ucs->char #xA03))
+   (ucs-range->char-set #xA05 #xA0B)
+   (ucs-range->char-set #xA0F #xA11)
+   (ucs-range->char-set #xA13 #xA29)
+   (ucs-range->char-set #xA2A #xA31)
+   (ucs-range->char-set #xA32 #xA34)
+   (ucs-range->char-set #xA35 #xA37)
+   (ucs-range->char-set #xA38 #xA3A)
+   (char-set (ucs->char #xA3C))
+   (ucs-range->char-set #xA3E #xA41)
+   (ucs-range->char-set #xA41 #xA43)
+   (ucs-range->char-set #xA47 #xA49)
+   (ucs-range->char-set #xA4B #xA4E)
+   (ucs-range->char-set #xA59 #xA5D)
+   (char-set (ucs->char #xA5E))
+   (ucs-range->char-set #xA66 #xA70)
+   (ucs-range->char-set #xA70 #xA72)
+   (ucs-range->char-set #xA72 #xA75)
+   (ucs-range->char-set #xA81 #xA83)
+   (char-set (ucs->char #xA83))
+   (ucs-range->char-set #xA85 #xA8E)
+   (ucs-range->char-set #xA8F #xA92)
+   (ucs-range->char-set #xA93 #xAA9)
+   (ucs-range->char-set #xAAA #xAB1)
+   (ucs-range->char-set #xAB2 #xAB4)
+   (ucs-range->char-set #xAB5 #xABA)
+   (char-set (ucs->char #xABC))
+   (char-set (ucs->char #xABD))
+   (ucs-range->char-set #xABE #xAC1)
+   (ucs-range->char-set #xAC1 #xAC6)
+   (ucs-range->char-set #xAC7 #xAC9)
+   (char-set (ucs->char #xAC9))
+   (ucs-range->char-set #xACB #xACD)
+   (char-set (ucs->char #xACD))
+   (char-set (ucs->char #xAD0))
+   (ucs-range->char-set #xAE0 #xAE2)
+   (ucs-range->char-set #xAE2 #xAE4)
+   (ucs-range->char-set #xAE6 #xAF0)
+   (char-set (ucs->char #xB01))
+   (ucs-range->char-set #xB02 #xB04)
+   (ucs-range->char-set #xB05 #xB0D)
+   (ucs-range->char-set #xB0F #xB11)
+   (ucs-range->char-set #xB13 #xB29)
+   (ucs-range->char-set #xB2A #xB31)
+   (ucs-range->char-set #xB32 #xB34)
+   (ucs-range->char-set #xB35 #xB3A)
+   (char-set (ucs->char #xB3C))
+   (char-set (ucs->char #xB3D))
+   (char-set (ucs->char #xB3E))
+   (char-set (ucs->char #xB3F))
+   (char-set (ucs->char #xB40))
+   (ucs-range->char-set #xB41 #xB44)
+   (ucs-range->char-set #xB47 #xB49)
+   (ucs-range->char-set #xB4B #xB4D)
+   (char-set (ucs->char #xB4D))
+   (char-set (ucs->char #xB56))
+   (char-set (ucs->char #xB57))
+   (ucs-range->char-set #xB5C #xB5E)
+   (ucs-range->char-set #xB5F #xB62)
+   (ucs-range->char-set #xB66 #xB70)
+   (char-set (ucs->char #xB71))
+   (char-set (ucs->char #xB82))
+   (char-set (ucs->char #xB83))
+   (ucs-range->char-set #xB85 #xB8B)
+   (ucs-range->char-set #xB8E #xB91)
+   (ucs-range->char-set #xB92 #xB96)
+   (ucs-range->char-set #xB99 #xB9B)
+   (char-set (ucs->char #xB9C))
+   (ucs-range->char-set #xB9E #xBA0)
+   (ucs-range->char-set #xBA3 #xBA5)
+   (ucs-range->char-set #xBA8 #xBAB)
+   (ucs-range->char-set #xBAE #xBB6)
+   (ucs-range->char-set #xBB7 #xBBA)
+   (ucs-range->char-set #xBBE #xBC0)
+   (char-set (ucs->char #xBC0))
+   (ucs-range->char-set #xBC1 #xBC3)
+   (ucs-range->char-set #xBC6 #xBC9)
+   (ucs-range->char-set #xBCA #xBCD)
+   (char-set (ucs->char #xBCD))
+   (char-set (ucs->char #xBD7))
+   (ucs-range->char-set #xBE7 #xBF0)
+   (ucs-range->char-set #xC01 #xC04)
+   (ucs-range->char-set #xC05 #xC0D)
+   (ucs-range->char-set #xC0E #xC11)
+   (ucs-range->char-set #xC12 #xC29)
+   (ucs-range->char-set #xC2A #xC34)
+   (ucs-range->char-set #xC35 #xC3A)
+   (ucs-range->char-set #xC3E #xC41)
+   (ucs-range->char-set #xC41 #xC45)
+   (ucs-range->char-set #xC46 #xC49)
+   (ucs-range->char-set #xC4A #xC4E)
+   (ucs-range->char-set #xC55 #xC57)
+   (ucs-range->char-set #xC60 #xC62)
+   (ucs-range->char-set #xC66 #xC70)
+   (ucs-range->char-set #xC82 #xC84)
+   (ucs-range->char-set #xC85 #xC8D)
+   (ucs-range->char-set #xC8E #xC91)
+   (ucs-range->char-set #xC92 #xCA9)
+   (ucs-range->char-set #xCAA #xCB4)
+   (ucs-range->char-set #xCB5 #xCBA)
+   (char-set (ucs->char #xCBC))
+   (char-set (ucs->char #xCBD))
+   (char-set (ucs->char #xCBE))
+   (char-set (ucs->char #xCBF))
+   (ucs-range->char-set #xCC0 #xCC5)
+   (char-set (ucs->char #xCC6))
+   (ucs-range->char-set #xCC7 #xCC9)
+   (ucs-range->char-set #xCCA #xCCC)
+   (ucs-range->char-set #xCCC #xCCE)
+   (ucs-range->char-set #xCD5 #xCD7)
+   (char-set (ucs->char #xCDE))
+   (ucs-range->char-set #xCE0 #xCE2)
+   (ucs-range->char-set #xCE6 #xCF0)
+   (ucs-range->char-set #xD02 #xD04)
+   (ucs-range->char-set #xD05 #xD0D)
+   (ucs-range->char-set #xD0E #xD11)
+   (ucs-range->char-set #xD12 #xD29)
+   (ucs-range->char-set #xD2A #xD3A)
+   (ucs-range->char-set #xD3E #xD41)
+   (ucs-range->char-set #xD41 #xD44)
+   (ucs-range->char-set #xD46 #xD49)
+   (ucs-range->char-set #xD4A #xD4D)
+   (char-set (ucs->char #xD4D))
+   (char-set (ucs->char #xD57))
+   (ucs-range->char-set #xD60 #xD62)
+   (ucs-range->char-set #xD66 #xD70)
+   (ucs-range->char-set #xD82 #xD84)
+   (ucs-range->char-set #xD85 #xD97)
+   (ucs-range->char-set #xD9A #xDB2)
+   (ucs-range->char-set #xDB3 #xDBC)
+   (char-set (ucs->char #xDBD))
+   (ucs-range->char-set #xDC0 #xDC7)
+   (char-set (ucs->char #xDCA))
+   (ucs-range->char-set #xDCF #xDD2)
+   (ucs-range->char-set #xDD2 #xDD5)
+   (char-set (ucs->char #xDD6))
+   (ucs-range->char-set #xDD8 #xDE0)
+   (ucs-range->char-set #xDF2 #xDF4)
+   (ucs-range->char-set #xE01 #xE31)
+   (char-set (ucs->char #xE31))
+   (ucs-range->char-set #xE32 #xE34)
+   (ucs-range->char-set #xE34 #xE3B)
+   (ucs-range->char-set #xE40 #xE46)
+   (char-set (ucs->char #xE46))
+   (ucs-range->char-set #xE47 #xE4F)
+   (ucs-range->char-set #xE50 #xE5A)
+   (ucs-range->char-set #xE81 #xE83)
+   (char-set (ucs->char #xE84))
+   (ucs-range->char-set #xE87 #xE89)
+   (char-set (ucs->char #xE8A))
+   (char-set (ucs->char #xE8D))
+   (ucs-range->char-set #xE94 #xE98)
+   (ucs-range->char-set #xE99 #xEA0)
+   (ucs-range->char-set #xEA1 #xEA4)
+   (char-set (ucs->char #xEA5))
+   (char-set (ucs->char #xEA7))
+   (ucs-range->char-set #xEAA #xEAC)
+   (ucs-range->char-set #xEAD #xEB1)
+   (char-set (ucs->char #xEB1))
+   (ucs-range->char-set #xEB2 #xEB4)
+   (ucs-range->char-set #xEB4 #xEBA)
+   (ucs-range->char-set #xEBB #xEBD)
+   (char-set (ucs->char #xEBD))
+   (ucs-range->char-set #xEC0 #xEC5)
+   (char-set (ucs->char #xEC6))
+   (ucs-range->char-set #xEC8 #xECE)
+   (ucs-range->char-set #xED0 #xEDA)
+   (ucs-range->char-set #xEDC #xEDE)
+   (char-set (ucs->char #xF00))
+   (ucs-range->char-set #xF18 #xF1A)
+   (ucs-range->char-set #xF20 #xF2A)
+   (char-set (ucs->char #xF35))
+   (char-set (ucs->char #xF37))
+   (char-set (ucs->char #xF39))
+   (ucs-range->char-set #xF3E #xF40)
+   (ucs-range->char-set #xF40 #xF48)
+   (ucs-range->char-set #xF49 #xF6B)
+   (ucs-range->char-set #xF71 #xF7F)
+   (char-set (ucs->char #xF7F))
+   (ucs-range->char-set #xF80 #xF85)
+   (ucs-range->char-set #xF86 #xF88)
+   (ucs-range->char-set #xF88 #xF8C)
+   (ucs-range->char-set #xF90 #xF98)
+   (ucs-range->char-set #xF99 #xFBD)
+   (char-set (ucs->char #xFC6))
+   (ucs-range->char-set #x1000 #x1022)
+   (ucs-range->char-set #x1023 #x1028)
+   (ucs-range->char-set #x1029 #x102B)
+   (char-set (ucs->char #x102C))
+   (ucs-range->char-set #x102D #x1031)
+   (char-set (ucs->char #x1031))
+   (char-set (ucs->char #x1032))
+   (ucs-range->char-set #x1036 #x1038)
+   (char-set (ucs->char #x1038))
+   (char-set (ucs->char #x1039))
+   (ucs-range->char-set #x1040 #x104A)
+   (ucs-range->char-set #x1050 #x1056)
+   (ucs-range->char-set #x1056 #x1058)
+   (ucs-range->char-set #x1058 #x105A)
+   (ucs-range->char-set #x10A0 #x10C6)
+   (ucs-range->char-set #x10D0 #x10F9)
+   (ucs-range->char-set #x1100 #x115A)
+   (ucs-range->char-set #x115F #x11A3)
+   (ucs-range->char-set #x11A8 #x11FA)
+   (ucs-range->char-set #x1200 #x1207)
+   (ucs-range->char-set #x1208 #x1247)
+   (char-set (ucs->char #x1248))
+   (ucs-range->char-set #x124A #x124E)
+   (ucs-range->char-set #x1250 #x1257)
+   (char-set (ucs->char #x1258))
+   (ucs-range->char-set #x125A #x125E)
+   (ucs-range->char-set #x1260 #x1287)
+   (char-set (ucs->char #x1288))
+   (ucs-range->char-set #x128A #x128E)
+   (ucs-range->char-set #x1290 #x12AF)
+   (char-set (ucs->char #x12B0))
+   (ucs-range->char-set #x12B2 #x12B6)
+   (ucs-range->char-set #x12B8 #x12BF)
+   (char-set (ucs->char #x12C0))
+   (ucs-range->char-set #x12C2 #x12C6)
+   (ucs-range->char-set #x12C8 #x12CF)
+   (ucs-range->char-set #x12D0 #x12D7)
+   (ucs-range->char-set #x12D8 #x12EF)
+   (ucs-range->char-set #x12F0 #x130F)
+   (char-set (ucs->char #x1310))
+   (ucs-range->char-set #x1312 #x1316)
+   (ucs-range->char-set #x1318 #x131F)
+   (ucs-range->char-set #x1320 #x1347)
+   (ucs-range->char-set #x1348 #x135B)
+   (ucs-range->char-set #x1369 #x1372)
+   (ucs-range->char-set #x13A0 #x13F5)
+   (ucs-range->char-set #x1401 #x166D)
+   (ucs-range->char-set #x166F #x1677)
+   (ucs-range->char-set #x1681 #x169B)
+   (ucs-range->char-set #x16A0 #x16EB)
+   (ucs-range->char-set #x16EE #x16F1)
+   (ucs-range->char-set #x1700 #x170D)
+   (ucs-range->char-set #x170E #x1712)
+   (ucs-range->char-set #x1712 #x1715)
+   (ucs-range->char-set #x1720 #x1732)
+   (ucs-range->char-set #x1732 #x1735)
+   (ucs-range->char-set #x1740 #x1752)
+   (ucs-range->char-set #x1752 #x1754)
+   (ucs-range->char-set #x1760 #x176D)
+   (ucs-range->char-set #x176E #x1771)
+   (ucs-range->char-set #x1772 #x1774)
+   (ucs-range->char-set #x1780 #x17B4)
+   (char-set (ucs->char #x17B6))
+   (ucs-range->char-set #x17B7 #x17BE)
+   (ucs-range->char-set #x17BE #x17C6)
+   (char-set (ucs->char #x17C6))
+   (ucs-range->char-set #x17C7 #x17C9)
+   (ucs-range->char-set #x17C9 #x17D4)
+   (char-set (ucs->char #x17D7))
+   (char-set (ucs->char #x17DC))
+   (char-set (ucs->char #x17DD))
+   (ucs-range->char-set #x17E0 #x17EA)
+   (ucs-range->char-set #x180B #x180E)
+   (ucs-range->char-set #x1810 #x181A)
+   (ucs-range->char-set #x1820 #x1843)
+   (char-set (ucs->char #x1843))
+   (ucs-range->char-set #x1844 #x1878)
+   (ucs-range->char-set #x1880 #x18A9)
+   (char-set (ucs->char #x18A9))
+   (ucs-range->char-set #x1900 #x191D)
+   (ucs-range->char-set #x1920 #x1923)
+   (ucs-range->char-set #x1923 #x1927)
+   (ucs-range->char-set #x1927 #x1929)
+   (ucs-range->char-set #x1929 #x192C)
+   (ucs-range->char-set #x1930 #x1932)
+   (char-set (ucs->char #x1932))
+   (ucs-range->char-set #x1933 #x1939)
+   (ucs-range->char-set #x1939 #x193C)
+   (ucs-range->char-set #x1946 #x1950)
+   (ucs-range->char-set #x1950 #x196E)
+   (ucs-range->char-set #x1970 #x1975)
+   (ucs-range->char-set #x1D00 #x1D2C)
+   (ucs-range->char-set #x1D2C #x1D62)
+   (ucs-range->char-set #x1D62 #x1D6C)
+   (ucs-range->char-set #x1E00 #x1E9C)
+   (ucs-range->char-set #x1EA0 #x1EFA)
+   (ucs-range->char-set #x1F00 #x1F16)
+   (ucs-range->char-set #x1F18 #x1F1E)
+   (ucs-range->char-set #x1F20 #x1F46)
+   (ucs-range->char-set #x1F48 #x1F4E)
+   (ucs-range->char-set #x1F50 #x1F58)
+   (char-set (ucs->char #x1F59))
+   (char-set (ucs->char #x1F5B))
+   (char-set (ucs->char #x1F5D))
+   (ucs-range->char-set #x1F5F #x1F7E)
+   (ucs-range->char-set #x1F80 #x1FB5)
+   (ucs-range->char-set #x1FB6 #x1FBD)
+   (char-set (ucs->char #x1FBE))
+   (ucs-range->char-set #x1FC2 #x1FC5)
+   (ucs-range->char-set #x1FC6 #x1FCD)
+   (ucs-range->char-set #x1FD0 #x1FD4)
+   (ucs-range->char-set #x1FD6 #x1FDC)
+   (ucs-range->char-set #x1FE0 #x1FED)
+   (ucs-range->char-set #x1FF2 #x1FF5)
+   (ucs-range->char-set #x1FF6 #x1FFD)
+   (ucs-range->char-set #x203F #x2041)
+   (char-set (ucs->char #x2054))
+   (char-set (ucs->char #x2071))
+   (char-set (ucs->char #x207F))
+   (ucs-range->char-set #x20D0 #x20DD)
+   (char-set (ucs->char #x20E1))
+   (ucs-range->char-set #x20E5 #x20EB)
+   (char-set (ucs->char #x2102))
+   (char-set (ucs->char #x2107))
+   (ucs-range->char-set #x210A #x2114)
+   (char-set (ucs->char #x2115))
+   (char-set (ucs->char #x2118))
+   (ucs-range->char-set #x2119 #x211E)
+   (char-set (ucs->char #x2124))
+   (char-set (ucs->char #x2126))
+   (char-set (ucs->char #x2128))
+   (ucs-range->char-set #x212A #x212E)
+   (char-set (ucs->char #x212E))
+   (ucs-range->char-set #x212F #x2132)
+   (ucs-range->char-set #x2133 #x2135)
+   (ucs-range->char-set #x2135 #x2139)
+   (char-set (ucs->char #x2139))
+   (ucs-range->char-set #x213D #x2140)
+   (ucs-range->char-set #x2145 #x214A)
+   (ucs-range->char-set #x2160 #x2184)
+   (char-set (ucs->char #x3005))
+   (char-set (ucs->char #x3006))
+   (char-set (ucs->char #x3007))
+   (ucs-range->char-set #x3021 #x302A)
+   (ucs-range->char-set #x302A #x3030)
+   (ucs-range->char-set #x3031 #x3036)
+   (ucs-range->char-set #x3038 #x303B)
+   (char-set (ucs->char #x303B))
+   (char-set (ucs->char #x303C))
+   (ucs-range->char-set #x3041 #x3097)
+   (ucs-range->char-set #x3099 #x309B)
+   (ucs-range->char-set #x309D #x309F)
+   (char-set (ucs->char #x309F))
+   (ucs-range->char-set #x30A1 #x30FB)
+   (char-set (ucs->char #x30FB))
+   (ucs-range->char-set #x30FC #x30FF)
+   (char-set (ucs->char #x30FF))
+   (ucs-range->char-set #x3105 #x312D)
+   (ucs-range->char-set #x3131 #x318F)
+   (ucs-range->char-set #x31A0 #x31B8)
+   (ucs-range->char-set #x31F0 #x3200)
+   (ucs-range->char-set #x3400 #x4DB6)
+   (ucs-range->char-set #x4E00 #x9FA6)
+   (ucs-range->char-set #xA000 #xA48D)
+   (ucs-range->char-set #xAC00 #xD7A4)
+   (ucs-range->char-set #xF900 #xFA2E)
+   (ucs-range->char-set #xFA30 #xFA6B)
+   (ucs-range->char-set #xFB00 #xFB07)
+   (ucs-range->char-set #xFB13 #xFB18)
+   (char-set (ucs->char #xFB1D))
+   (char-set (ucs->char #xFB1E))
+   (ucs-range->char-set #xFB1F #xFB29)
+   (ucs-range->char-set #xFB2A #xFB37)
+   (ucs-range->char-set #xFB38 #xFB3D)
+   (char-set (ucs->char #xFB3E))
+   (ucs-range->char-set #xFB40 #xFB42)
+   (ucs-range->char-set #xFB43 #xFB45)
+   (ucs-range->char-set #xFB46 #xFBB2)
+   (ucs-range->char-set #xFBD3 #xFC5E)
+   (ucs-range->char-set #xFC64 #xFD3E)
+   (ucs-range->char-set #xFD50 #xFD90)
+   (ucs-range->char-set #xFD92 #xFDC8)
+   (ucs-range->char-set #xFDF0 #xFDFA)
+   (ucs-range->char-set #xFE00 #xFE10)
+   (ucs-range->char-set #xFE20 #xFE24)
+   (ucs-range->char-set #xFE33 #xFE35)
+   (ucs-range->char-set #xFE4D #xFE50)
+   (char-set (ucs->char #xFE71))
+   (char-set (ucs->char #xFE73))
+   (char-set (ucs->char #xFE77))
+   (char-set (ucs->char #xFE79))
+   (char-set (ucs->char #xFE7B))
+   (char-set (ucs->char #xFE7D))
+   (ucs-range->char-set #xFE7F #xFEFD)
+   (ucs-range->char-set #xFF10 #xFF1A)
+   (ucs-range->char-set #xFF21 #xFF3B)
+   (char-set (ucs->char #xFF3F))
+   (ucs-range->char-set #xFF41 #xFF5B)
+   (char-set (ucs->char #xFF65))
+   (ucs-range->char-set #xFF66 #xFF70)
+   (char-set (ucs->char #xFF70))
+   (ucs-range->char-set #xFF71 #xFF9E)
+   (ucs-range->char-set #xFF9E #xFFA0)
+   (ucs-range->char-set #xFFA0 #xFFBF)
+   (ucs-range->char-set #xFFC2 #xFFC8)
+   (ucs-range->char-set #xFFCA #xFFD0)
+   (ucs-range->char-set #xFFD2 #xFFD8)
+   (ucs-range->char-set #xFFDA #xFFDD)
+   (ucs-range->char-set #x10000 #x1000C)
+   (ucs-range->char-set #x1000D #x10027)
+   (ucs-range->char-set #x10028 #x1003B)
+   (ucs-range->char-set #x1003C #x1003E)
+   (ucs-range->char-set #x1003F #x1004E)
+   (ucs-range->char-set #x10050 #x1005E)
+   (ucs-range->char-set #x10080 #x100FB)
+   (ucs-range->char-set #x10300 #x1031F)
+   (ucs-range->char-set #x10330 #x1034A)
+   (char-set (ucs->char #x1034A))
+   (ucs-range->char-set #x10380 #x1039E)
+   (ucs-range->char-set #x10400 #x10450)
+   (ucs-range->char-set #x10450 #x1049E)
+   (ucs-range->char-set #x104A0 #x104AA)
+   (ucs-range->char-set #x10800 #x10806)
+   (char-set (ucs->char #x10808))
+   (ucs-range->char-set #x1080A #x10836)
+   (ucs-range->char-set #x10837 #x10839)
+   (char-set (ucs->char #x1083C))
+   (char-set (ucs->char #x1083F))
+   (ucs-range->char-set #x1D165 #x1D167)
+   (ucs-range->char-set #x1D167 #x1D16A)
+   (ucs-range->char-set #x1D16D #x1D173)
+   (ucs-range->char-set #x1D17B #x1D183)
+   (ucs-range->char-set #x1D185 #x1D18C)
+   (ucs-range->char-set #x1D1AA #x1D1AE)
+   (ucs-range->char-set #x1D400 #x1D455)
+   (ucs-range->char-set #x1D456 #x1D49D)
+   (ucs-range->char-set #x1D49E #x1D4A0)
+   (char-set (ucs->char #x1D4A2))
+   (ucs-range->char-set #x1D4A5 #x1D4A7)
+   (ucs-range->char-set #x1D4A9 #x1D4AD)
+   (ucs-range->char-set #x1D4AE #x1D4BA)
+   (char-set (ucs->char #x1D4BB))
+   (ucs-range->char-set #x1D4BD #x1D4C4)
+   (ucs-range->char-set #x1D4C5 #x1D506)
+   (ucs-range->char-set #x1D507 #x1D50B)
+   (ucs-range->char-set #x1D50D #x1D515)
+   (ucs-range->char-set #x1D516 #x1D51D)
+   (ucs-range->char-set #x1D51E #x1D53A)
+   (ucs-range->char-set #x1D53B #x1D53F)
+   (ucs-range->char-set #x1D540 #x1D545)
+   (char-set (ucs->char #x1D546))
+   (ucs-range->char-set #x1D54A #x1D551)
+   (ucs-range->char-set #x1D552 #x1D6A4)
+   (ucs-range->char-set #x1D6A8 #x1D6C1)
+   (ucs-range->char-set #x1D6C2 #x1D6DB)
+   (ucs-range->char-set #x1D6DC #x1D6FB)
+   (ucs-range->char-set #x1D6FC #x1D715)
+   (ucs-range->char-set #x1D716 #x1D735)
+   (ucs-range->char-set #x1D736 #x1D74F)
+   (ucs-range->char-set #x1D750 #x1D76F)
+   (ucs-range->char-set #x1D770 #x1D789)
+   (ucs-range->char-set #x1D78A #x1D7A9)
+   (ucs-range->char-set #x1D7AA #x1D7C3)
+   (ucs-range->char-set #x1D7C4 #x1D7CA)
+   (ucs-range->char-set #x1D7CE #x1D800)
+   (ucs-range->char-set #x20000 #x2A6D7)
+   (ucs-range->char-set #x2F800 #x2FA1E)
+   (ucs-range->char-set #xE0100 #xE01F0)
+   ))
+
+(define char-set:xid-start
+  (char-set-union
+   (ucs-range->char-set #x41 #x5B)
+   (ucs-range->char-set #x61 #x7B)
+   (char-set (ucs->char #xAA))
+   (char-set (ucs->char #xB5))
+   (char-set (ucs->char #xBA))
+   (ucs-range->char-set #xC0 #xD7)
+   (ucs-range->char-set #xD8 #xF7)
+   (ucs-range->char-set #xF8 #x1BB)
+   (char-set (ucs->char #x1BB))
+   (ucs-range->char-set #x1BC #x1C0)
+   (ucs-range->char-set #x1C0 #x1C4)
+   (ucs-range->char-set #x1C4 #x237)
+   (ucs-range->char-set #x250 #x2B0)
+   (ucs-range->char-set #x2B0 #x2C2)
+   (ucs-range->char-set #x2C6 #x2D2)
+   (ucs-range->char-set #x2E0 #x2E5)
+   (char-set (ucs->char #x2EE))
+   (char-set (ucs->char #x386))
+   (ucs-range->char-set #x388 #x38B)
+   (char-set (ucs->char #x38C))
+   (ucs-range->char-set #x38E #x3A2)
+   (ucs-range->char-set #x3A3 #x3CF)
+   (ucs-range->char-set #x3D0 #x3F6)
+   (ucs-range->char-set #x3F7 #x3FC)
+   (ucs-range->char-set #x400 #x482)
+   (ucs-range->char-set #x48A #x4CF)
+   (ucs-range->char-set #x4D0 #x4F6)
+   (ucs-range->char-set #x4F8 #x4FA)
+   (ucs-range->char-set #x500 #x510)
+   (ucs-range->char-set #x531 #x557)
+   (char-set (ucs->char #x559))
+   (ucs-range->char-set #x561 #x588)
+   (ucs-range->char-set #x5D0 #x5EB)
+   (ucs-range->char-set #x5F0 #x5F3)
+   (ucs-range->char-set #x621 #x63B)
+   (char-set (ucs->char #x640))
+   (ucs-range->char-set #x641 #x64B)
+   (ucs-range->char-set #x66E #x670)
+   (ucs-range->char-set #x671 #x6D4)
+   (char-set (ucs->char #x6D5))
+   (ucs-range->char-set #x6E5 #x6E7)
+   (ucs-range->char-set #x6EE #x6F0)
+   (ucs-range->char-set #x6FA #x6FD)
+   (char-set (ucs->char #x6FF))
+   (char-set (ucs->char #x710))
+   (ucs-range->char-set #x712 #x730)
+   (ucs-range->char-set #x74D #x750)
+   (ucs-range->char-set #x780 #x7A6)
+   (char-set (ucs->char #x7B1))
+   (ucs-range->char-set #x904 #x93A)
+   (char-set (ucs->char #x93D))
+   (char-set (ucs->char #x950))
+   (ucs-range->char-set #x958 #x962)
+   (ucs-range->char-set #x985 #x98D)
+   (ucs-range->char-set #x98F #x991)
+   (ucs-range->char-set #x993 #x9A9)
+   (ucs-range->char-set #x9AA #x9B1)
+   (char-set (ucs->char #x9B2))
+   (ucs-range->char-set #x9B6 #x9BA)
+   (char-set (ucs->char #x9BD))
+   (ucs-range->char-set #x9DC #x9DE)
+   (ucs-range->char-set #x9DF #x9E2)
+   (ucs-range->char-set #x9F0 #x9F2)
+   (ucs-range->char-set #xA05 #xA0B)
+   (ucs-range->char-set #xA0F #xA11)
+   (ucs-range->char-set #xA13 #xA29)
+   (ucs-range->char-set #xA2A #xA31)
+   (ucs-range->char-set #xA32 #xA34)
+   (ucs-range->char-set #xA35 #xA37)
+   (ucs-range->char-set #xA38 #xA3A)
+   (ucs-range->char-set #xA59 #xA5D)
+   (char-set (ucs->char #xA5E))
+   (ucs-range->char-set #xA72 #xA75)
+   (ucs-range->char-set #xA85 #xA8E)
+   (ucs-range->char-set #xA8F #xA92)
+   (ucs-range->char-set #xA93 #xAA9)
+   (ucs-range->char-set #xAAA #xAB1)
+   (ucs-range->char-set #xAB2 #xAB4)
+   (ucs-range->char-set #xAB5 #xABA)
+   (char-set (ucs->char #xABD))
+   (char-set (ucs->char #xAD0))
+   (ucs-range->char-set #xAE0 #xAE2)
+   (ucs-range->char-set #xB05 #xB0D)
+   (ucs-range->char-set #xB0F #xB11)
+   (ucs-range->char-set #xB13 #xB29)
+   (ucs-range->char-set #xB2A #xB31)
+   (ucs-range->char-set #xB32 #xB34)
+   (ucs-range->char-set #xB35 #xB3A)
+   (char-set (ucs->char #xB3D))
+   (ucs-range->char-set #xB5C #xB5E)
+   (ucs-range->char-set #xB5F #xB62)
+   (char-set (ucs->char #xB71))
+   (char-set (ucs->char #xB83))
+   (ucs-range->char-set #xB85 #xB8B)
+   (ucs-range->char-set #xB8E #xB91)
+   (ucs-range->char-set #xB92 #xB96)
+   (ucs-range->char-set #xB99 #xB9B)
+   (char-set (ucs->char #xB9C))
+   (ucs-range->char-set #xB9E #xBA0)
+   (ucs-range->char-set #xBA3 #xBA5)
+   (ucs-range->char-set #xBA8 #xBAB)
+   (ucs-range->char-set #xBAE #xBB6)
+   (ucs-range->char-set #xBB7 #xBBA)
+   (ucs-range->char-set #xC05 #xC0D)
+   (ucs-range->char-set #xC0E #xC11)
+   (ucs-range->char-set #xC12 #xC29)
+   (ucs-range->char-set #xC2A #xC34)
+   (ucs-range->char-set #xC35 #xC3A)
+   (ucs-range->char-set #xC60 #xC62)
+   (ucs-range->char-set #xC85 #xC8D)
+   (ucs-range->char-set #xC8E #xC91)
+   (ucs-range->char-set #xC92 #xCA9)
+   (ucs-range->char-set #xCAA #xCB4)
+   (ucs-range->char-set #xCB5 #xCBA)
+   (char-set (ucs->char #xCBD))
+   (char-set (ucs->char #xCDE))
+   (ucs-range->char-set #xCE0 #xCE2)
+   (ucs-range->char-set #xD05 #xD0D)
+   (ucs-range->char-set #xD0E #xD11)
+   (ucs-range->char-set #xD12 #xD29)
+   (ucs-range->char-set #xD2A #xD3A)
+   (ucs-range->char-set #xD60 #xD62)
+   (ucs-range->char-set #xD85 #xD97)
+   (ucs-range->char-set #xD9A #xDB2)
+   (ucs-range->char-set #xDB3 #xDBC)
+   (char-set (ucs->char #xDBD))
+   (ucs-range->char-set #xDC0 #xDC7)
+   (ucs-range->char-set #xE01 #xE31)
+   (char-set (ucs->char #xE32))
+   (ucs-range->char-set #xE40 #xE46)
+   (char-set (ucs->char #xE46))
+   (ucs-range->char-set #xE81 #xE83)
+   (char-set (ucs->char #xE84))
+   (ucs-range->char-set #xE87 #xE89)
+   (char-set (ucs->char #xE8A))
+   (char-set (ucs->char #xE8D))
+   (ucs-range->char-set #xE94 #xE98)
+   (ucs-range->char-set #xE99 #xEA0)
+   (ucs-range->char-set #xEA1 #xEA4)
+   (char-set (ucs->char #xEA5))
+   (char-set (ucs->char #xEA7))
+   (ucs-range->char-set #xEAA #xEAC)
+   (ucs-range->char-set #xEAD #xEB1)
+   (char-set (ucs->char #xEB2))
+   (char-set (ucs->char #xEBD))
+   (ucs-range->char-set #xEC0 #xEC5)
+   (char-set (ucs->char #xEC6))
+   (ucs-range->char-set #xEDC #xEDE)
+   (char-set (ucs->char #xF00))
+   (ucs-range->char-set #xF40 #xF48)
+   (ucs-range->char-set #xF49 #xF6B)
+   (ucs-range->char-set #xF88 #xF8C)
+   (ucs-range->char-set #x1000 #x1022)
+   (ucs-range->char-set #x1023 #x1028)
+   (ucs-range->char-set #x1029 #x102B)
+   (ucs-range->char-set #x1050 #x1056)
+   (ucs-range->char-set #x10A0 #x10C6)
+   (ucs-range->char-set #x10D0 #x10F9)
+   (ucs-range->char-set #x1100 #x115A)
+   (ucs-range->char-set #x115F #x11A3)
+   (ucs-range->char-set #x11A8 #x11FA)
+   (ucs-range->char-set #x1200 #x1207)
+   (ucs-range->char-set #x1208 #x1247)
+   (char-set (ucs->char #x1248))
+   (ucs-range->char-set #x124A #x124E)
+   (ucs-range->char-set #x1250 #x1257)
+   (char-set (ucs->char #x1258))
+   (ucs-range->char-set #x125A #x125E)
+   (ucs-range->char-set #x1260 #x1287)
+   (char-set (ucs->char #x1288))
+   (ucs-range->char-set #x128A #x128E)
+   (ucs-range->char-set #x1290 #x12AF)
+   (char-set (ucs->char #x12B0))
+   (ucs-range->char-set #x12B2 #x12B6)
+   (ucs-range->char-set #x12B8 #x12BF)
+   (char-set (ucs->char #x12C0))
+   (ucs-range->char-set #x12C2 #x12C6)
+   (ucs-range->char-set #x12C8 #x12CF)
+   (ucs-range->char-set #x12D0 #x12D7)
+   (ucs-range->char-set #x12D8 #x12EF)
+   (ucs-range->char-set #x12F0 #x130F)
+   (char-set (ucs->char #x1310))
+   (ucs-range->char-set #x1312 #x1316)
+   (ucs-range->char-set #x1318 #x131F)
+   (ucs-range->char-set #x1320 #x1347)
+   (ucs-range->char-set #x1348 #x135B)
+   (ucs-range->char-set #x13A0 #x13F5)
+   (ucs-range->char-set #x1401 #x166D)
+   (ucs-range->char-set #x166F #x1677)
+   (ucs-range->char-set #x1681 #x169B)
+   (ucs-range->char-set #x16A0 #x16EB)
+   (ucs-range->char-set #x16EE #x16F1)
+   (ucs-range->char-set #x1700 #x170D)
+   (ucs-range->char-set #x170E #x1712)
+   (ucs-range->char-set #x1720 #x1732)
+   (ucs-range->char-set #x1740 #x1752)
+   (ucs-range->char-set #x1760 #x176D)
+   (ucs-range->char-set #x176E #x1771)
+   (ucs-range->char-set #x1780 #x17B4)
+   (char-set (ucs->char #x17D7))
+   (char-set (ucs->char #x17DC))
+   (ucs-range->char-set #x1820 #x1843)
+   (char-set (ucs->char #x1843))
+   (ucs-range->char-set #x1844 #x1878)
+   (ucs-range->char-set #x1880 #x18A9)
+   (ucs-range->char-set #x1900 #x191D)
+   (ucs-range->char-set #x1950 #x196E)
+   (ucs-range->char-set #x1970 #x1975)
+   (ucs-range->char-set #x1D00 #x1D2C)
+   (ucs-range->char-set #x1D2C #x1D62)
+   (ucs-range->char-set #x1D62 #x1D6C)
+   (ucs-range->char-set #x1E00 #x1E9C)
+   (ucs-range->char-set #x1EA0 #x1EFA)
+   (ucs-range->char-set #x1F00 #x1F16)
+   (ucs-range->char-set #x1F18 #x1F1E)
+   (ucs-range->char-set #x1F20 #x1F46)
+   (ucs-range->char-set #x1F48 #x1F4E)
+   (ucs-range->char-set #x1F50 #x1F58)
+   (char-set (ucs->char #x1F59))
+   (char-set (ucs->char #x1F5B))
+   (char-set (ucs->char #x1F5D))
+   (ucs-range->char-set #x1F5F #x1F7E)
+   (ucs-range->char-set #x1F80 #x1FB5)
+   (ucs-range->char-set #x1FB6 #x1FBD)
+   (char-set (ucs->char #x1FBE))
+   (ucs-range->char-set #x1FC2 #x1FC5)
+   (ucs-range->char-set #x1FC6 #x1FCD)
+   (ucs-range->char-set #x1FD0 #x1FD4)
+   (ucs-range->char-set #x1FD6 #x1FDC)
+   (ucs-range->char-set #x1FE0 #x1FED)
+   (ucs-range->char-set #x1FF2 #x1FF5)
+   (ucs-range->char-set #x1FF6 #x1FFD)
+   (char-set (ucs->char #x2071))
+   (char-set (ucs->char #x207F))
+   (char-set (ucs->char #x2102))
+   (char-set (ucs->char #x2107))
+   (ucs-range->char-set #x210A #x2114)
+   (char-set (ucs->char #x2115))
+   (char-set (ucs->char #x2118))
+   (ucs-range->char-set #x2119 #x211E)
+   (char-set (ucs->char #x2124))
+   (char-set (ucs->char #x2126))
+   (char-set (ucs->char #x2128))
+   (ucs-range->char-set #x212A #x212E)
+   (char-set (ucs->char #x212E))
+   (ucs-range->char-set #x212F #x2132)
+   (ucs-range->char-set #x2133 #x2135)
+   (ucs-range->char-set #x2135 #x2139)
+   (char-set (ucs->char #x2139))
+   (ucs-range->char-set #x213D #x2140)
+   (ucs-range->char-set #x2145 #x214A)
+   (ucs-range->char-set #x2160 #x2184)
+   (char-set (ucs->char #x3005))
+   (char-set (ucs->char #x3006))
+   (char-set (ucs->char #x3007))
+   (ucs-range->char-set #x3021 #x302A)
+   (ucs-range->char-set #x3031 #x3036)
+   (ucs-range->char-set #x3038 #x303B)
+   (char-set (ucs->char #x303B))
+   (char-set (ucs->char #x303C))
+   (ucs-range->char-set #x3041 #x3097)
+   (ucs-range->char-set #x309D #x309F)
+   (char-set (ucs->char #x309F))
+   (ucs-range->char-set #x30A1 #x30FB)
+   (ucs-range->char-set #x30FC #x30FF)
+   (char-set (ucs->char #x30FF))
+   (ucs-range->char-set #x3105 #x312D)
+   (ucs-range->char-set #x3131 #x318F)
+   (ucs-range->char-set #x31A0 #x31B8)
+   (ucs-range->char-set #x31F0 #x3200)
+   (ucs-range->char-set #x3400 #x4DB6)
+   (ucs-range->char-set #x4E00 #x9FA6)
+   (ucs-range->char-set #xA000 #xA48D)
+   (ucs-range->char-set #xAC00 #xD7A4)
+   (ucs-range->char-set #xF900 #xFA2E)
+   (ucs-range->char-set #xFA30 #xFA6B)
+   (ucs-range->char-set #xFB00 #xFB07)
+   (ucs-range->char-set #xFB13 #xFB18)
+   (char-set (ucs->char #xFB1D))
+   (ucs-range->char-set #xFB1F #xFB29)
+   (ucs-range->char-set #xFB2A #xFB37)
+   (ucs-range->char-set #xFB38 #xFB3D)
+   (char-set (ucs->char #xFB3E))
+   (ucs-range->char-set #xFB40 #xFB42)
+   (ucs-range->char-set #xFB43 #xFB45)
+   (ucs-range->char-set #xFB46 #xFBB2)
+   (ucs-range->char-set #xFBD3 #xFC5E)
+   (ucs-range->char-set #xFC64 #xFD3E)
+   (ucs-range->char-set #xFD50 #xFD90)
+   (ucs-range->char-set #xFD92 #xFDC8)
+   (ucs-range->char-set #xFDF0 #xFDFA)
+   (char-set (ucs->char #xFE71))
+   (char-set (ucs->char #xFE73))
+   (char-set (ucs->char #xFE77))
+   (char-set (ucs->char #xFE79))
+   (char-set (ucs->char #xFE7B))
+   (char-set (ucs->char #xFE7D))
+   (ucs-range->char-set #xFE7F #xFEFD)
+   (ucs-range->char-set #xFF21 #xFF3B)
+   (ucs-range->char-set #xFF41 #xFF5B)
+   (ucs-range->char-set #xFF66 #xFF70)
+   (char-set (ucs->char #xFF70))
+   (ucs-range->char-set #xFF71 #xFF9E)
+   (ucs-range->char-set #xFFA0 #xFFBF)
+   (ucs-range->char-set #xFFC2 #xFFC8)
+   (ucs-range->char-set #xFFCA #xFFD0)
+   (ucs-range->char-set #xFFD2 #xFFD8)
+   (ucs-range->char-set #xFFDA #xFFDD)
+   (ucs-range->char-set #x10000 #x1000C)
+   (ucs-range->char-set #x1000D #x10027)
+   (ucs-range->char-set #x10028 #x1003B)
+   (ucs-range->char-set #x1003C #x1003E)
+   (ucs-range->char-set #x1003F #x1004E)
+   (ucs-range->char-set #x10050 #x1005E)
+   (ucs-range->char-set #x10080 #x100FB)
+   (ucs-range->char-set #x10300 #x1031F)
+   (ucs-range->char-set #x10330 #x1034A)
+   (char-set (ucs->char #x1034A))
+   (ucs-range->char-set #x10380 #x1039E)
+   (ucs-range->char-set #x10400 #x10450)
+   (ucs-range->char-set #x10450 #x1049E)
+   (ucs-range->char-set #x10800 #x10806)
+   (char-set (ucs->char #x10808))
+   (ucs-range->char-set #x1080A #x10836)
+   (ucs-range->char-set #x10837 #x10839)
+   (char-set (ucs->char #x1083C))
+   (char-set (ucs->char #x1083F))
+   (ucs-range->char-set #x1D400 #x1D455)
+   (ucs-range->char-set #x1D456 #x1D49D)
+   (ucs-range->char-set #x1D49E #x1D4A0)
+   (char-set (ucs->char #x1D4A2))
+   (ucs-range->char-set #x1D4A5 #x1D4A7)
+   (ucs-range->char-set #x1D4A9 #x1D4AD)
+   (ucs-range->char-set #x1D4AE #x1D4BA)
+   (char-set (ucs->char #x1D4BB))
+   (ucs-range->char-set #x1D4BD #x1D4C4)
+   (ucs-range->char-set #x1D4C5 #x1D506)
+   (ucs-range->char-set #x1D507 #x1D50B)
+   (ucs-range->char-set #x1D50D #x1D515)
+   (ucs-range->char-set #x1D516 #x1D51D)
+   (ucs-range->char-set #x1D51E #x1D53A)
+   (ucs-range->char-set #x1D53B #x1D53F)
+   (ucs-range->char-set #x1D540 #x1D545)
+   (char-set (ucs->char #x1D546))
+   (ucs-range->char-set #x1D54A #x1D551)
+   (ucs-range->char-set #x1D552 #x1D6A4)
+   (ucs-range->char-set #x1D6A8 #x1D6C1)
+   (ucs-range->char-set #x1D6C2 #x1D6DB)
+   (ucs-range->char-set #x1D6DC #x1D6FB)
+   (ucs-range->char-set #x1D6FC #x1D715)
+   (ucs-range->char-set #x1D716 #x1D735)
+   (ucs-range->char-set #x1D736 #x1D74F)
+   (ucs-range->char-set #x1D750 #x1D76F)
+   (ucs-range->char-set #x1D770 #x1D789)
+   (ucs-range->char-set #x1D78A #x1D7A9)
+   (ucs-range->char-set #x1D7AA #x1D7C3)
+   (ucs-range->char-set #x1D7C4 #x1D7CA)
+   (ucs-range->char-set #x20000 #x2A6D7)
+   (ucs-range->char-set #x2F800 #x2FA1E)
+   ))
+
diff -urN wiliki-0.5/scheme-unicode/Makefile wiliki-0.5-case-insensitive/scheme-unicode/Makefile
--- wiliki-0.5/scheme-unicode/Makefile  1970-01-01 01:00:00.000000000 +0100
+++ wiliki-0.5-case-insensitive/scheme-unicode/Makefile 2004-09-13 16:22:37.000000000 +0200
@@ -0,0 +1,81 @@
+
+.PHONY: test clean distclean dist install
+
+GOSH = gosh
+GOSH_EUC = gosh-euc
+GAUCHE_CONFIG = gauche-config
+INSTALL = /usr/bin/install -c
+INSTALL_TYPE = site
+SCM_INSTALL_DIR = $(DESTDIR)`$(GAUCHE_CONFIG) --$(INSTALL_TYPE)libdir`
+SCM_PATCH_DIR = $(DESTDIR)`$(GAUCHE_CONFIG) --syslibdir`
+UNICODEURL = "http://www.unicode.org/Public/UNIDATA"
+VERSION=`cat VERSION`
+TESTENV=
+
+# data from unicode.org not included, so nothing builds by default
+#all: case-maps char-sets
+all:
+
+install: all
+       for f in `cd lib && find . -name \*.scm`; do      \
+         $(INSTALL) -D -m 644 lib/$$f $(SCM_INSTALL_DIR)/$$f; \
+       done
+       cp data/case-map-*.dat $(SCM_INSTALL_DIR)
+
+srfi-14-patch:
+       cp srfi-14.scm.diff $(SCM_PATCH_DIR)
+       cd $(SCM_PATCH_DIR) && patch -p 0 < srfi-14.scm.diff && rm -f srfi-14.scm.diff
+       $(INSTALL) -D -m 644 data/ranges.dat $(SCM_PATCH_DIR)/srfi-14/ranges.dat
+
+test: all
+       cd test;                                \
+       for f in t-*.scm; do                    \
+         $(TESTENV) $(GOSH) $$f;               \
+       done
+
+clean:
+       rm -f `find . -name \*~`
+
+distclean: clean
+       rm -rf debian/tmp
+
+# build from Unicode data (not included)
+
+ranges:
+       if type $(GOSH_EUC) 2>/dev/null; then               \
+         $(GOSH_EUC) ./tools/gen-ranges >data/ranges.dat;  \
+       else                                                \
+         $(GOSH) ./tools/gen-ranges >data/ranges.dat;      \
+       fi
+
+case-maps: case-map-1 case-map-2
+
+case-map-1: UnicodeData.txt
+       ./tools/extract-case-1.scm < $< > data/case-map-1.dat
+
+case-map-2: SpecialCasing.txt
+       ./tools/extract-case-2.scm < $< > data/case-map-2.dat
+
+# chained autoload is causing problems
+#char-sets: Scripts.txt PropList.txt DerivedCoreProperties.txt
+#      ./tools/extract-prop.scm -g -m lang.char-set.other -o lib/lang/char-set/other.scm -i "other" PropList.txt
+#      ./tools/extract-prop.scm -g -m lang.char-set.derived -o lib/lang/char-set/derived.scm -f PropList.txt -A lib/lang/char-set/other.scm DerivedCoreProperties.txt
+#      ./tools/extract-prop.scm -g -m lang.char-set -o lib/lang/char-set.scm -A lib/lang/char-set/other.scm,lib/lang/char-set/derived.scm Scripts.txt
+#      ./tools/extract-prop.scm -g -a lib/lang/char-set.scm -x "other" PropList.txt
+
+char-sets: Scripts.txt PropList.txt DerivedCoreProperties.txt
+       ./tools/extract-prop.scm -g -m lang.char-set -e -d common -o lib/lang/char-set.scm Scripts.txt
+       ./tools/extract-prop.scm -g -a lib/lang/char-set.scm PropList.txt
+       ./tools/extract-prop.scm -g -f PropList.txt -a lib/lang/char-set.scm DerivedCoreProperties.txt
+
+UnicodeData.txt SpecialCasing.txt Scripts.txt PropList.txt DerivedCoreProperties.txt:
+       wget $(UNICODEURL)/$@
+
+# build distribution tarballs
+dist: all distclean
+       dir=`basename $$PWD`             && \
+       name=$${dir}-$(VERSION)          && \
+       cd ..                            && \
+       tar cjvf $$name.tar.bz2 -h --exclude \*.txt $$dir && \
+       cd $$dir
+
diff -urN wiliki-0.5/scheme-unicode/README wiliki-0.5-case-insensitive/scheme-unicode/README
--- wiliki-0.5/scheme-unicode/README    1970-01-01 01:00:00.000000000 +0100
+++ wiliki-0.5-case-insensitive/scheme-unicode/README   2004-09-13 16:20:08.000000000 +0200
@@ -0,0 +1,65 @@
+
+                           scheme-unicode
+                           --------------
+
+                     Unicode utilities for Scheme
+
+                     http://synthcode.com/scheme/
+
+                            version 0.1
+                            Dec 24, 2003
+
+
+This directory contains a general library for handling Unicode strings
+in Scheme (currently only supports Gauche).  The lang.char-set module
+provides char-sets for all standard Unicode properties, and the
+lang.case-map module provides generalized upcase, downcase and titlecase
+procedures which work on strings or ports and take an optional locale
+string parameter.  The resulting strings may be denormalized - future
+versions of this library will include normalization routines and more
+general access to the Unicode Character Database (UCB).
+
+To install run "make install".
+
+An optional patch to make SRFI-14's ucs-range->char-set faster for
+non-Unicode Gauche is also included.  This can be installed with "make
+srfi-14-patch".  This takes advantage of the fact in Unicode a fair
+number of consecutive ranges correspond to ranges in JIS, and an even
+greater number of ranges are not handled by JIS.  The common ranges are
+as follows:
+
+ u: 0080-009F => j: 8F8080-8F809F (32)  ;; meta chars
+ u: 00B7-00D6 => j: A9AE-A9CD (32)      ;; symbols
+ u: 00D8-00F6 => j: A9CE-A9EC (31)      ;; latin
+ u: 00F8-0100 => j: A9ED-A9F5 ( 9)      ;; latin
+ u: 02E5-02E9 => j: ABE0-ABE4 ( 5)      ;; line-drawing
+ u: 0391-03A1 => j: A6A1-A6B1 (17)      ;; uppercase Greek
+ u: 03A3-03A9 => j: A6B2-A6B8 ( 7)      ;; uppercase Greek
+ u: 03B1-03C1 => j: A6C1-A6D1 (17)      ;; lowercase Greek
+ u: 03C3-03C9 => j: A6D2-A6D8 ( 7)      ;; lowercase Greek
+ u: 0410-0415 => j: A7A1-A7A6 ( 6)      ;; uppercase Cyrillic
+ u: 0416-042F => j: A7A8-A7C1 (26)      ;; uppercase Cyrillic
+ u: 0430-0435 => j: A7D1-A7D6 ( 6)      ;; lowercase Cyrillic
+ u: 0436-044F => j: A7D8-A7F1 (26)      ;; lowercase Cyrillic
+ u: 2160-216A => j: ADB5-ADBF (11)      ;; uppercase roman numerals I..XI
+ u: 2170-217B => j: ACB5-ACC0 (12)      ;; lowercase roman numerals I..XII
+ u: 23BE-23CC => j: A7C2-A7D0 (15)      ;; ????
+ u: 2460-2473 => j: ADA1-ADB4 (20)      ;; circled numbers
+ u: 24D0-24E9 => j: ACC1-ACDA (26)      ;; circled letters
+ u: 24EB-24F4 => j: ACAB-ACB4 (10)      ;; ????
+ u: 24F5-24FE => j: A6DA-A6E3 (10)      ;; ????
+ u: 2776-277F => j: ACA1-ACAA (10)      ;; solid circled numbers
+ u: 3008-3011 => j: A1D2-A1DB (10)      ;; extended brackets
+ u: 3041-3096 => j: A4A1-A4F6 (86)      ;; hiragana
+ u: 30A1-30F6 => j: A5A1-A5F6 (86)      ;; katakana
+ u: 31F0-31F9 => j: A6EE-A6F7 (10)      ;; ????
+ u: 31FA-31FF => j: A6F9-A6FE ( 6)      ;; ????
+ u: 3251-325F => j: A8C1-A8CF (15)      ;; ????
+ u: 32A4-32A8 => j: ADE5-ADE9 ( 5)      ;; circled hi/mid/lo/left/right kanji
+ u: 32B1-32BF => j: A8D0-A8DE (15)      ;; ????
+ u: 32D0-32E3 => j: ACDB-ACEE (20)      ;; circled katakana
+ u: FF10-FF19 => j: A3B0-A3B9 (10)      ;; wide digits 0-9
+ u: FF21-FF3A => j: A3C1-A3DA (26)      ;; wide uppercase latin
+ u: FF41-FF5A => j: A3E1-A3FA (26)      ;; wide lowercase latin
+ u: FF61-FF9F => j: 8EA1-8EDF (63)      ;; miscellaneous symbols
+
diff -urN wiliki-0.5/scheme-unicode/srfi-14.scm.diff wiliki-0.5-case-insensitive/scheme-unicode/srfi-14.scm.diff
--- wiliki-0.5/scheme-unicode/srfi-14.scm.diff  1970-01-01 01:00:00.000000000 +0100
+++ wiliki-0.5-case-insensitive/scheme-unicode/srfi-14.scm.diff 2004-09-13 16:20:08.000000000 +0200
@@ -0,0 +1,102 @@
+*** srfi-14.scm        20 Nov 2003 16:12:12 -0000      1.12
+--- srfi-14.scm        24 Dec 2003 08:15:25 -0000
+***************
+*** 239,267 ****
+  (define ucs-range->char-set!
+    (if (eq? (gauche-character-encoding) 'utf-8)
+        integer-range->char-set!
+!       (lambda (low upper error? base)
+!         (when (< low 0)
+!           (if error?
+                (error "argument out of range:" low)
+                (set! low 0)))
+!         (if (< upper 128)
+!             (%char-set-add-range! base low (- upper 1))
+!             (begin
+!               (when (< low 128)
+!                 (%char-set-add-range! base low 128)
+!                 (set! low 128))
+!               (do ((i low (+ i 1)))
+!                   ((>= i upper) base)
+!                 (let ((c (ucs->char i)))
+!                   (if c
+!                       (%char-set-add-range! base c c)
+!                       (if error?
+!                           (error "unicode character #\\u~8,'0x is not supported in the native character set (~a)"
+!                                  i (gauche-character-encoding)))))
+!                 )))
+!         )
+!       ))
+!                   
+  (define (->char-set obj)
+    (cond ((list? obj)   (list->char-set obj))
+          ((string? obj) (string->char-set obj))
+--- 239,306 ----
+  (define ucs-range->char-set!
+    (if (eq? (gauche-character-encoding) 'utf-8)
+        integer-range->char-set!
+!       (letrec
+!           ((%common-ranges
+!             (with-error-handler
+!                 (lambda (err . args) (warn "couldn't load unicode ranges") #f)
+!               (lambda ()
+!                 (with-input-from-file
+!                     (format "~A/srfi-14/ranges.dat" (gauche-library-directory))
+!                   read))))
+!            (%search-range
+!             (lambda (i)
+!               (let loop ((tree %common-ranges))
+!                 (and tree
+!                      (let* ((cur (car tree))
+!                             (start (car cur)))
+!                        (cond
+!                          ((< i start)
+!                           (loop (cadr tree)))
+!                          ((>= i start)
+!                           (if (<= i (cadr cur))
+!                             cur
+!                             (loop (caddr tree))))))))))
+!            (%out-of-range
+!             (lambda (i)
+!               (errorf "unicode character #\\u~8,'0x is not supported in the native character set (~a)"
+!                       i (gauche-character-encoding))))
+!            )
+!         (lambda (low upper error? base)
+!           (when (< low 0)
+!             (if error?
+                (error "argument out of range:" low)
+                (set! low 0)))
+!           (cond
+!             ((< upper 128)
+!              (%char-set-add-range! base low (- upper 1)))
+!             ((%search-range low)
+!              => (lambda (r)
+!                   (let* ((start (car r))
+!                          (end (cadr r))
+!                          (end2 (min end (- upper 1)))
+!                          (val (list-ref r 2 #f)))
+!                     (cond
+!                       (val
+!                        (%char-set-add-range! base val (+ val (- end2 start))))
+!                       (error? (%out-of-range low)))
+!                     (if (> (- upper 1) end)
+!                       (ucs-range->char-set! (+ end 1) upper error? base)
+!                       base))))
+!             ((%search-range (- upper 1))
+!              => (lambda (r)
+!                   (ucs-range->char-set! (car r) upper error? base)
+!                   (ucs-range->char-set! low (car r) error? base)))
+!             (else
+!              (when (< low 128)
+!                (%char-set-add-range! base low 128)
+!                (set! low 128))
+!              (do ((i low (+ i 1)))
+!                  ((>= i upper) base)
+!                (let ((c (ucs->char i)))
+!                  (if c
+!                    (%char-set-add-range! base c c)
+!                    (if error? (%out-of-range i)))))))))))
+! 
+  (define (->char-set obj)
+    (cond ((list? obj)   (list->char-set obj))
+          ((string? obj) (string->char-set obj))
diff -urN wiliki-0.5/scheme-unicode/test/t-case-map.scm wiliki-0.5-case-insensitive/scheme-unicode/test/t-case-map.scm
--- wiliki-0.5/scheme-unicode/test/t-case-map.scm       1970-01-01 01:00:00.000000000 +0100
+++ wiliki-0.5-case-insensitive/scheme-unicode/test/t-case-map.scm      2004-09-13 16:20:08.000000000 +0200
@@ -0,0 +1,47 @@
+#! /usr/bin/env gosh
+
+(use gauche.test)
+
+(test-start "case-map")
+
+(add-load-path "..")
+(add-load-path "../lib")
+(use srfi-13)
+(use lang.case-map)
+
+(define-syntax let-list*
+  (syntax-rules ()
+    ((_ (var ...) ls . body) (let-optionals* ls ((var #f) ...) . body))))
+
+(for-each
+ (lambda (t)
+   (let-list* (base down title up locale) t
+     (test* (format "downcase ~S ~S" base locale) down
+       (if locale (downcase base locale) (downcase base)))
+     (test* (format "titlecase ~S ~S" base locale) title
+       (if locale (titlecase base locale) (titlecase base)))
+     (test* (format "upcase ~S ~S" base locale) up
+       (if locale (upcase base locale) (upcase base)))
+     ))
+ '(;; Latin
+   ("aBcI" "abci" "Abci" "ABCI")
+   ;; Cyrillic
+   ("яЗи" "язи" "Язи" "ЯЗИ")
+   ;; Greek, checking final sigma
+   ("πΣΜΣ" "πσμς" "Πσμς" "ΠΣΜΣ")
+   ;; wide Latin
+   ("aBc" "abc" "Abc" "ABC")
+   ;; Roman Numerals
+   ("ⅰⅢⅧⅹ" "ⅰⅲⅷⅹ" "Ⅰⅲⅷⅹ" "ⅠⅢⅧⅩ")
+   ;; using \u, my font doesn't have the uppercase versions :(
+   ("ⓐ\u24B7ⓒ" "ⓐⓑⓒ" "\u24B6ⓑⓒ" "\u24B6\u24B7\u24B8")
+   ;; German, with everyone's favorite es-zed
+   ("ßhöÜ" "ßhöü" "Sshöü" "SSHÖÜ")
+   ;; Turkish
+   ("iİıI" "iiıı" "İiıı" "İİII" "tr")
+   ("iİıI" "i\u0069\u0307ıi" "I\u0069\u0307ıi" "IİII") ;; ick, denormalized
+   ;;("" "" "" "")
+   ))
+
+(test-end)
+
diff -urN wiliki-0.5/scheme-unicode/tools/extract-case-1.scm wiliki-0.5-case-insensitive/scheme-unicode/tools/extract-case-1.scm
--- wiliki-0.5/scheme-unicode/tools/extract-case-1.scm  1970-01-01 01:00:00.000000000 +0100
+++ wiliki-0.5-case-insensitive/scheme-unicode/tools/extract-case-1.scm 2004-09-13 16:20:08.000000000 +0200
@@ -0,0 +1,36 @@
+#! /usr/bin/env gosh
+
+(use gauche.parseopt)
+(autoload binary.pack pack)
+
+(define (main args)
+  (let-args (cdr args)
+      ((pretty? "pretty|p")
+       (output "output|o=s")
+       . rest)
+    (define (run)
+      (do ((line (read-line) (read-line)))
+          ((eof-object? line))
+        (let* ((fields
+                (map
+                 (lambda (x) (if (equal? x "") #f x))
+                 (string-split (regexp-replace #/\s*\#.*$/ line "") #\;)))
+               (uc (list-ref fields 12 #f))
+               (lc (list-ref fields 13 #f))
+               (tc (list-ref fields 14 #f)))
+          (when (or uc lc tc)
+            (let* ((i (string->number (car fields) 16))
+                   (uci (string->number (or uc (car fields)) 16))
+                   (lci (string->number (or lc (car fields)) 16))
+                   (tci (string->number (or tc uc (car fields)) 16)))
+              (if pretty?
+                (format #t "~X (~A) ~X (~A) ~X (~A) ~X (~A)\n"
+                        i (ucs->char i) uci (ucs->char uci)
+                        lci (ucs->char lci) tci (ucs->char tci))
+                (pack "L4" (list i uci lci tci))))))))
+    (define (read-loop)
+      (if (pair? rest)
+        (for-each (cut with-input-from-file <> run) rest)
+        (run)))
+    (if output (with-output-to-file output read-loop) (read-loop))
+    0))
diff -urN wiliki-0.5/scheme-unicode/tools/extract-case-2.scm wiliki-0.5-case-insensitive/scheme-unicode/tools/extract-case-2.scm
--- wiliki-0.5/scheme-unicode/tools/extract-case-2.scm  1970-01-01 01:00:00.000000000 +0100
+++ wiliki-0.5-case-insensitive/scheme-unicode/tools/extract-case-2.scm 2004-09-13 16:20:08.000000000 +0200
@@ -0,0 +1,46 @@
+#! /usr/bin/env gosh
+
+(use util.list)
+(use gauche.parseopt)
+
+(define (main args)
+  (let-args (cdr args)
+      ((output "output|o=s")
+       . rest)
+    (define (make-entry c lc tc uc)
+      (define (conv x)
+        (if x
+          (let ((chars (map (lambda (s) (ucs->char (string->number s 16)))
+                            (filter (lambda (s) (not (equal? s "")))
+                                    (string-split x #/\s+/)))))
+            (if (pair? (cdr chars))
+              (list->string chars)
+              (car chars)))
+          ""))
+      (vector (string->number c 16) (conv lc) (conv tc) (conv uc)))
+    (define (run)
+      (let loop ((line (read-line))
+                 (entries '()))
+        (cond
+          ((eof-object? line)
+           (write (list->vector (sort entries (lambda (a b) (< (vector-ref a 0) (vector-ref b 0)))))))
+          (else
+           (let* ((fields
+                   (map
+                    (lambda (x) (if (equal? x "") #f x))
+                    (string-split (regexp-replace #/\s*\#.*$/ line "") #\;)))
+                  (c (list-ref fields 0 #f))
+                  (lc (list-ref fields 1 #f))
+                  (tc (list-ref fields 2 #f))
+                  (uc (list-ref fields 3 #f))
+                  (special (list-ref fields 4 #f)))
+             ;;(warn "c: ~S lc: ~S tc: ~S uc: ~S" c lc tc uc)
+             (if (and (or uc lc tc) (not special))
+               (loop (read-line) (cons (make-entry c lc tc uc) entries))
+               (loop (read-line) entries)))))))
+    (define (read-loop)
+      (if (pair? rest)
+        (for-each (cut with-input-from-file <> run) rest)
+        (run)))
+    (if output (with-output-to-file output read-loop) (read-loop))
+    0))
diff -urN wiliki-0.5/scheme-unicode/tools/extract-prop.scm wiliki-0.5-case-insensitive/scheme-unicode/tools/extract-prop.scm
--- wiliki-0.5/scheme-unicode/tools/extract-prop.scm    1970-01-01 01:00:00.000000000 +0100
+++ wiliki-0.5-case-insensitive/scheme-unicode/tools/extract-prop.scm   2004-09-13 16:20:08.000000000 +0200
@@ -0,0 +1,172 @@
+#! /usr/bin/env gosh
+
+(use srfi-1)
+(use srfi-2)
+(use srfi-13)
+(use srfi-14)
+(use gauche.parseopt)
+
+(define (main args)
+
+  (let-args (cdr args)
+      ((output "output|o=s")
+       (append-file "append|a=s")
+       (default "default|d=s")
+       (module "module|m=s")
+       (no-header? "no-header|n")
+       (derived "derive-from|derive|f=s")
+       (gauche? "gauche|g")
+       (include "include|i=s")
+       (exclude "exclude|x=s")
+       (autoload-from "autoload-from|A=s")
+       (export-all? "export-all|e")
+       . rest)
+
+    (define tab (make-hash-table 'string=?))
+    (define derivations (make-hash-table 'string=?))
+    (define inheritance (make-hash-table 'string=?))
+    (define current #f)
+    (define base #f)
+    (define (prop-name s)
+      (regexp-replace-all #/_/ (string-downcase s) "-"))
+    (define (keep? s)
+      (and (or (not include) (rxmatch include (x->string s)))
+           (or (not exclude) (not (rxmatch exclude (x->string s))))))
+
+    ;; return the module name and exported symbols from a file
+    (define (get-exports f)
+      (define (find-form sym)
+        (lambda (x) (and (pair? x) (eq? (car x) sym))))
+      (define (defname x)
+        (let ((rest (cdr x)))
+          (if (pair? rest)
+            (let ((form (car rest)))
+              (if (pair? form) (car form) form))
+            (begin (warn "invalid define: ~S" x) #f))))
+      (call-with-input-file f
+        (lambda (p)
+          (and-let* ((code (port->sexp-list p))
+                     (def (find (find-form 'define-module) code))
+                     (modname (cadr def)))
+            (let ((exports
+                   (if (or (any (find-form 'export-all) (cddr def))
+                           (any (find-form 'export-all) code))
+                     (map defname (append (filter (find-form 'define) (cddr def))
+                                          (filter (find-form 'define) code)))
+                     (append-map cdr (append (filter (find-form 'export) (cddr def))
+                                             (filter (find-form 'export) code))))))
+              (cons modname exports))))))
+
+    (define (run)
+      (do ((line (read-line) (read-line)))
+          ((eof-object? line))
+        (rxmatch-case line
+          (#/^\s*#\s*derived\s*property\s*:?\s*(\w+)/i (#f prop)
+           (set! base #f)
+           (set! current (prop-name prop)))
+          ;; XXXX we assume the base class is the only one with greater
+          ;; than 2 characters (currently true)
+          (#/^\s*#\s*generated\s*from\s*(?:.*\+)?\s*(\w{3,})\s*(?:\+.*)?\s*$/i (#f prop)
+           (when current (hash-table-put! inheritance current (prop-name prop)))
+           (set! base (hash-table-get derivations (prop-name prop) #f)))
+          (else
+           (and-let*
+               ((fields
+                 (map
+                  (lambda (x) (if (equal? x "") #f x))
+                  (map
+                   (cut string-trim-both <> char-set:whitespace)
+                   (string-split
+                    (regexp-replace #/\s*\#.*$/ line "") #\;))))
+                (range-str (list-ref fields 0 #f))
+                (range-ls (map (cut string->number <> 16)
+                               (string-split range-str "..")))
+                (range (list (car range-ls) (+ 1 (list-ref range-ls 1 (car range-ls)))))
+                (prop (list-ref fields 1 #f)))
+             (unless (and base
+                          (char-set<=
+                           (ucs-range->char-set (car range) (cadr range))
+                           base))
+               (hash-table-push! tab (prop-name prop) range)))))))
+
+    (define (read-loop)
+      ;; build table
+      (if (pair? rest)
+        (for-each (cut with-input-from-file <> run) rest)
+        (run))
+      ;; header
+      (unless (or append-file no-header?)
+        (format #t ";; auto-generated on ~A\n\n"
+                (sys-strftime "%c" (sys-localtime (sys-time)))))
+      ;; Gauche module start
+      (let ((props (sort (filter keep? (hash-table-keys tab)))))
+        (when module
+          (format #t "(define-module ~A\n  (use srfi-14)\n" module)
+          (let ((autoloads
+                 (map get-exports
+                      (if autoload-from
+                        (filter (lambda (s) (not (string=? s "")))
+                                (string-split autoload-from #/,/))
+                        '()))))
+            (for-each
+             (lambda (a)
+               (format #t "  (autoload ~S" (car a))
+               (for-each (cut format #t " ~S" <>) (cdr a))
+               (display ")\n"))
+             autoloads)
+            (cond
+              (export-all?
+               (display "  (export-all"))
+              (else
+               (display "  (export")
+               (for-each (cut format #t " char-set:~A" <>) props)
+               (for-each (cut format #t " ~A" <>) (append-map cdr autoloads))))
+            (format #t "))\n(select-module ~A)\n\n" module)
+            (format #t "(provide ~S)\n\n" (regexp-replace-all #/\./ module "/"))))
+        ;; print char-sets
+        (for-each
+         (lambda (prop)
+           (format #t "(define char-set:~A\n  (char-set-union\n" prop)
+           (and-let* ((base (hash-table-get inheritance prop #f)))
+             (format #t "   char-set:~A\n" base))
+           (for-each
+            (lambda (r)
+              (if (and gauche? (= (+ 1 (car r)) (cadr r)))
+                (format #t "   (char-set (ucs->char #x~X))\n" (car r))
+                (format #t "   (ucs-range->char-set #x~X #x~X)\n" (car r) (cadr r))))
+            (reverse (hash-table-get tab prop)))
+           (display "   ))\n\n"))
+         props)
+        ;; print default char-set
+        (when default
+          (format #t "(define char-set:~A\n  (char-set-complement\n   (char-set-union\n"
+                  default)
+          (for-each
+           (lambda (prop) (format #t "    char-set:~A\n" prop))
+           (sort (hash-table-keys tab)))
+          (display "    )))\n\n"))
+        ))
+
+    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+    ;; build derived charsets
+    (when derived
+      (with-input-from-file derived run)
+      (hash-table-for-each
+       tab
+       (lambda (prop ls)
+         (hash-table-put!
+          derivations prop
+          (apply
+           char-set-union
+           (map
+            (lambda (r) (ucs-range->char-set (car r) (cadr r)))
+            ls)))))
+      (set! tab (make-hash-table 'string=?)))
+
+    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+    ;; run with appropriate output
+    (cond (output (with-output-to-file output read-loop))
+          (append-file (with-output-to-file append-file read-loop :if-exists :append))
+          (else (read-loop)))
+
+    0))
diff -urN wiliki-0.5/scheme-unicode/tools/gen-ranges.scm wiliki-0.5-case-insensitive/scheme-unicode/tools/gen-ranges.scm
--- wiliki-0.5/scheme-unicode/tools/gen-ranges.scm      1970-01-01 01:00:00.000000000 +0100
+++ wiliki-0.5-case-insensitive/scheme-unicode/tools/gen-ranges.scm     2004-09-13 16:20:08.000000000 +0200
@@ -0,0 +1,58 @@
+#! /usr/bin/env gosh-euc
+
+(use gauche.parseopt)
+
+;; make a balanced binary tree from a sorted list
+(define (make-binary-tree ls)
+  (if (null? ls)
+    #f
+    (let loop ((hare ls) (tortoise ls) (res '()))
+      (if (or (null? hare) (null? (cdr hare)))
+        (list (car tortoise)
+              (make-binary-tree (reverse res))
+              (make-binary-tree (cdr tortoise)))
+        (loop (cddr hare) (cdr tortoise) (cons (car tortoise) res))))))
+
+(define (main args)
+  (define geta (char->integer (ucs->char 41646)))
+  (define ranges '())
+  (let-args (cdr args) ((pretty? "p|pretty")
+                        (inclusive? "i|inclusive|inclusive-only")
+                        (exclusive? "e|exclusive|exclusive-only")
+                        . rest)
+    (if (eq? (gauche-character-encoding) 'utf-8)
+      (errorf "~A: cannot be run in a utf-8 Gauche" (car args)))
+    (if (or inclusive? (not exclusive?))
+      (let loop ((i 128) (e -2) (k 0))
+        (when (< i #xFFFF)
+          (let* ((c (ucs->char i))
+                 (e2 (char->integer c)))
+            (cond
+              ((= 1 (- e2 e))
+               (loop (+ i 1) e2 (+ k 1)))
+              (else
+               (when (> k 3)
+                 (if pretty?
+                   (format #t " u: ~4,'0X-~4,'0X => j: ~4,'0X-~4,'0X (~2D)\n"
+                           (- i k 1) (- i 1) (- e k) e (+ k 1))
+                   (push! ranges (list (- i k 1) (- i 1) (- e k)))))
+               (loop (+ i 1) e2 0)))))))
+    (if (or exclusive? (not inclusive?))
+      (let loop ((i 128) (k 0))
+        (when (< i #xFFFF)
+          (let* ((c (ucs->char i))
+                 (e (char->integer c)))
+            (cond
+              ((= e geta)
+               (loop (+ i 1) (+ k 1)))
+              (else
+               (when (> k 9)
+                 (if pretty?
+                   (format #t " u: ~4,'0X-~4,'0X != j (~2D)\n"
+                           (- i k 1) (- i 1) (+ k 1))
+                   (push! ranges (list (- i k 1) (- i 1)))))
+               (loop (+ i 1) 0)))))))
+    (unless pretty?
+      (write (make-binary-tree (sort ranges (lambda (a b) (< (car a) (car b))))))
+      (newline))
+    0))
diff -urN wiliki-0.5/scheme-unicode/VERSION wiliki-0.5-case-insensitive/scheme-unicode/VERSION
--- wiliki-0.5/scheme-unicode/VERSION   1970-01-01 01:00:00.000000000 +0100
+++ wiliki-0.5-case-insensitive/scheme-unicode/VERSION  2004-09-13 16:20:08.000000000 +0200
@@ -0,0 +1 @@
+0.1
diff -urN wiliki-0.5/src/dbm/gdbm-ci.scm wiliki-0.5-case-insensitive/src/dbm/gdbm-ci.scm
--- wiliki-0.5/src/dbm/gdbm-ci.scm      1970-01-01 01:00:00.000000000 +0100
+++ wiliki-0.5-case-insensitive/src/dbm/gdbm-ci.scm     2004-09-13 16:20:08.000000000 +0200
@@ -0,0 +1,64 @@
+;;; Copyright (c) 2004 by Jorgen Schaefer
+;;; This code is in the public domain.
+(define-module dbm.gdbm-ci
+  (extend dbm.gdbm)
+  (export <gdbm-ci>)
+  ;(use srfi-13)
+  (use lang.case-map) ;; use this lib for real case-insensitivity
+  )
+(select-module dbm.gdbm-ci)
+
+(define-class <gdbm-ci-meta> (<dbm-meta>)
+  ())
+
+(define-class <gdbm-ci> (<dbm>)
+  ((gdbm :accessor gdbm-ci-gdbm
+         :init-keyword :gdbm
+         :init-form #f)
+   (sync      :init-keyword :sync   :initform #f)
+   (nolock    :init-keyword :nolock :initform #f)
+   (bsize     :init-keyword :bsize  :initform 0))
+  :metaclass <gdbm-ci-meta>)
+
+(define-method dbm-open ((self <gdbm-ci>))
+  (next-method)
+  (let ((gdbm (make <gdbm>)))
+    (for-each (lambda (field)
+                (slot-set! gdbm
+                           field
+                           (slot-ref self field)))
+              '(path rw-mode sync nolock bsize file-mode))
+    (slot-set! self 'gdbm gdbm)
+    (dbm-open gdbm))
+  self)
+
+(define-method dbm-close ((self <gdbm-ci>))
+  (next-method)
+  (dbm-close (gdbm-ci-gdbm self)))
+
+(define-method dbm-closed? ((self <gdbm-ci>))
+  (next-method)
+  (dbm-closed? (gdbm-ci-gdbm self)))
+
+(define-method dbm-put! ((self <gdbm-ci>) key value)
+  (next-method)
+  (dbm-put! (gdbm-ci-gdbm self) (downcase key) value))
+
+(define-method dbm-get ((self <gdbm-ci>) key . args)
+  (next-method)
+  (apply dbm-get (gdbm-ci-gdbm self) (downcase key) args))
+
+(define-method dbm-exists? ((self <gdbm-ci>) key)
+  (next-method)
+  (dbm-exists? (gdbm-ci-gdbm self) (downcase key)))
+
+(define-method dbm-db-exists? ((class <gdbm-ci-meta>) name)
+  (file-exists? name))
+
+(define-method dbm-delete! ((self <gdbm-ci>) key)
+  (next-method)
+  (dbm-delete! (gdbm-ci-gdbm self) (downcase key)))
+
+(define-method dbm-fold ((self <gdbm-ci>) proc knil)
+  (next-method)
+  (dbm-fold (gdbm-ci-gdbm self) proc knil))
diff -urN wiliki-0.5/src/Makefile wiliki-0.5-case-insensitive/src/Makefile
--- wiliki-0.5/src/Makefile     2004-05-24 01:03:53.000000000 +0200
+++ wiliki-0.5-case-insensitive/src/Makefile    2004-09-13 16:20:08.000000000 +0200
@@ -17,7 +17,7 @@
            wiliki/pasttime.scm \
           wiliki/version.scm
 
-TARGET = $(SCMFILES) wiliki/msgs.jp
+TARGET = $(SCMFILES) wiliki/msgs.jp dbm/gdbm-ci.scm
 
 GENERATED = wiliki/msgs.jp wiliki/version.scm