diff --git a/src/ikarus.boot b/src/ikarus.boot index ecaba1d..676faad 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/ikarus.unicode-data.ss b/src/ikarus.unicode-data.ss index 5e0d2af..295cc8e 100644 --- a/src/ikarus.unicode-data.ss +++ b/src/ikarus.unicode-data.ss @@ -17,8 +17,9 @@ string-ci=? string-ci? string-ci>=? string-foldcase char-general-category)) - (include "unicode/unicode-constituents.ss") + ; (include "unicode/unicode-constituents.ss") (include "unicode/unicode-char-cases.ss") + (include "unicode/unicode-charinfo.ss") (define (binary-search n v) (let ([k ($fx- ($vector-length v) 1)]) @@ -31,7 +32,7 @@ [($fx<= ($vector-ref v j) n) (f j k n v)] [else (f i ($fx- j 1) n v)]))])))) - (define (char-general-category c) + (define (lookup-char-info c) (let ([v unicode-categories-lookup-vector] [t unicode-categories-values-vector]) (define (f i k n) @@ -47,18 +48,25 @@ (cond [(fx<= (vector-ref v j) n) (f j k n)] [else (f i (fx- j 1) n)]))])) - (if (char? c) - (vector-ref unicode-categories-name-vector - (f 0 (fx- (vector-length v) 1) (char->integer c))) - (error 'char-general-category "~s is not a char" c)))) + (f 0 (fx- (vector-length v) 1) (char->integer c)))) + + (define (char-general-category c) + (if (char? c) + (vector-ref unicode-categories-name-vector + (fxlogand 63 (lookup-char-info c))) + (error 'char-general-category "~s is not a char" c))) (define (binary-search-on? n v) ($fx= ($fxlogand (binary-search n v) 1) 1)) - (define (unicode-printable-char? c) - (binary-search-on? - ($char->fixnum c) - unicode-constituents-vector)) + ;(define (unicode-printable-char? c) + ; (binary-search-on? + ; ($char->fixnum c) + ; unicode-constituents-vector)) + (define (unicode-printable-char? c) + (if (char? c) + (not (fxzero? (fxlogand (lookup-char-info c) constituent-property))) + (error 'unicode-printable-char? "~s is not a char" c))) (define (convert-char x adjustment-vec) (let ([n ($char->fixnum x)]) diff --git a/src/unicode/extract-categories.ss b/src/unicode/extract-categories.ss deleted file mode 100755 index b0c34b9..0000000 --- a/src/unicode/extract-categories.ss +++ /dev/null @@ -1,192 +0,0 @@ -#!/usr/bin/env ikarus --r6rs-script - -(import - (ikarus) - (unicode-data)) - - -(define (codes-in-cats ls cats) - (let f ([ls ls] [ac '()]) - (cond - [(null? ls) (reverse ac)] - [(memq (cdar ls) cats) - (f (cdr ls) (cons (caar ls) ac))] - [else (f (cdr ls) ac)]))) - -(define (make-xonxoff ls) - ;;; makes a list where if your index is at an odd - ;;; position, then you're ON. If your index is not in - ;;; the list, then look for the index before you. - (cons 0 - (let f ([i 1] [on? #f] - [ls (if (= (car ls) 0) - (error 'make-xonxoff "first is on") - ls)]) - (cond - [(null? ls) (list i)] - [(= i (car ls)) - (if on? - (f (+ i 1) #t (cdr ls)) - (cons i (f (+ i 1) #t (cdr ls))))] - [else - (if on? - (cons i (f (+ i 1) #f ls)) - (f (+ i 1) #f ls))])))) - - -(define (search-on? n v) - (let ([k (- (vector-length v) 1)]) - (let f ([i 0] [k k]) - (cond - [(fx= i k) (odd? i)] - [else - (let ([j (fxsra (+ i k 1) 1)]) - (cond - [(<= (vector-ref v j) n) (f j k)] - [else (f i (- j 1))]))])))) - - -(define (verify vec ls) - (let f ([i 0] [ls ls]) - (unless (> i #x10FFFF) - (let-values ([(on? ls) - (cond - [(null? ls) (values #f '())] - [(= i (car ls)) (values #t (cdr ls))] - [else (values #f ls)])]) - (unless (equal? on? (search-on? i vec)) - (error #f "did not pass on ~s" i)) - (f (+ i 1) ls))))) - - -(define (cat fields) - (let ([num (car fields)] - [cat (caddr fields)]) - (cons - (read (open-input-string (format "#x~a" num))) - (string->symbol cat)))) - -(define categories - ;;; 30 categories - '([Lu "Letter, Uppercase"] - [Ll "Letter, Lowercase"] - [Lt "Letter, Titlecase"] - [Lm "Letter, Modifier"] - [Lo "Letter, Other"] - [Mn "Mark, Nonspacing"] - [Mc "Mark, Spacing Combining"] - [Me "Mark, Enclosing"] - [Nd "Number, Decimal Digit"] - [Nl "Number, Letter"] - [No "Number, Other"] - [Pc "Punctuation, Connector"] - [Pd "Punctuation, Dash"] - [Ps "Punctuation, Open"] - [Pe "Punctuation, Close"] - [Pi "Punctuation, Initial quote"] - [Pf "Punctuation, Final quote"] - [Po "Punctuation, Other"] - [Sm "Symbol, Math"] - [Sc "Symbol, Currency"] - [Sk "Symbol, Modifier"] - [So "Symbol, Other"] - [Zs "Separator, Space"] - [Zl "Separator, Line"] - [Zp "Separator, Paragraph"] - [Cc "Other, Control"] - [Cf "Other, Format"] - [Cs "Other, Surrogate"] - [Co "Other, Private Use"] - [Cn "Other, Not Assigned"] - )) - -(define (category-index x) - (let f ([ls categories] [i 0]) - (cond - [(null? ls) (error 'category-index "invalid cat ~s" x)] - [(eq? x (caar ls)) i] - [else (f (cdr ls) (add1 i))]))) - - -(define (insert-missing ls) - (let f ([ls ls] [i 0] [ac '()]) - (cond - [(> i #x10FFFF) (reverse ac)] - [(null? ls) - (f ls (+ i 1) (cons (cons i 'Cn) ac))] - [(= i (caar ls)) - (f (cdr ls) (+ i 1) (cons (car ls) ac))] - [else - (f ls (+ i 1) (cons (cons i 'Cn) ac))]))) - -(define (make-cats-table ls) - (map - (lambda (x) - (cons (car x) - (cons (cadr x) (category-index (cddr x))))) - (let f ([i 1] [st (car ls)] [ls (cdr ls)] [ac '()]) - (cond - [(null? ls) (reverse (cons (cons i st) ac))] - [(eq? (cdar ls) (cdr st)) (f (add1 i) st (cdr ls) ac)] - [else - (f 1 (car ls) (cdr ls) (cons (cons i st) ac))])))) - - -(define (merge-sequences ls) - (define (split ls) - (cond - [(null? ls) (values '() '())] - [(= (caar ls) 1) - (let-values ([(chain no-chain) (split (cdr ls))]) - (values (cons (cdar ls) chain) no-chain))] - [else - (values '() ls)])) - (define (mk-chain a chain) - (cond - [(null? chain) a] - [else - (cons (car a) - (list->vector - (cons (cdr a) - (map cdr chain))))])) - (cond - [(null? ls) '()] - [(= (caar ls) 1) - (let-values ([(chain no-chain) (split (cdr ls))]) - (cons (mk-chain (cdar ls) chain) - (merge-sequences no-chain)))] - [else (cons (cdar ls) (merge-sequences (cdr ls)))])) - - - - -(let ([ls (map cat (get-unicode-data "UNIDATA/UnicodeData.txt"))]) - (let ([wanted - (codes-in-cats ls - '(Lu Ll Lt Lm Lo Mn Mc Me Nd Nl No Pd Pc Po Sc Sm Sk So Co))] - [cats-table (merge-sequences - (make-cats-table - (insert-missing ls)))]) - (let ([xonxoff (list->vector (make-xonxoff wanted))]) - (verify xonxoff wanted) - (with-output-to-file "unicode-constituents.ss" - (lambda () - (printf ";;; DO NOT EDIT\n") - (printf ";;; automatically generated\n") - (printf ";;; ~s elements in vector\n\n" (vector-length xonxoff)) - (pretty-print - `(define unicode-constituents-vector ',xonxoff)) - (printf ";;; ~s elements in cats\n" (length cats-table)) - (pretty-print - `(define unicode-categories-lookup-vector - ',(list->vector (map car cats-table)))) - (pretty-print - `(define unicode-categories-values-vector - ',(list->vector (map cdr cats-table)))) - (pretty-print - `(define unicode-categories-name-vector - ',(list->vector (map car categories))))) - 'replace)))) - - -(printf "Happy Happy Joy Joy\n") diff --git a/src/unicode/extract-info.ss b/src/unicode/extract-info.ss new file mode 100755 index 0000000..e107fc6 --- /dev/null +++ b/src/unicode/extract-info.ss @@ -0,0 +1,301 @@ +#!/usr/bin/env ikarus --r6rs-script + +;;; this file is a mess. + +(import + (ikarus) + (unicode-data)) + + +(define (hex-string->number str) + (or (string->number (string-append "#x" str)) + (error 'hex-string->number "invalid ~s" str))) + +(define (find-char c s) + (let f ([i 0] [n (string-length s)]) + (cond + [(= i n) #f] + [(char=? (string-ref s i) c) i] + [else (f (add1 i) n)]))) + +(define (extract-range str) + (cond + [(find-char #\. str) + => + (lambda (i) + (cons (hex-string->number (substring str 0 i)) + (hex-string->number (substring str (+ i 2) (string-length str)))))] + [else + (let ([n (hex-string->number str)]) + (cons n n))])) + + + +(define (codes-in-cats ls cats) + (let f ([ls ls] [ac '()]) + (cond + [(null? ls) (reverse ac)] + [(memq (cdar ls) cats) + (f (cdr ls) (cons (caar ls) ac))] + [else (f (cdr ls) ac)]))) + +(define (make-xonxoff ls) + ;;; makes a list where if your index is at an odd + ;;; position, then you're ON. If your index is not in + ;;; the list, then look for the index before you. + (cons 0 + (let f ([i 1] [on? #f] + [ls (if (= (car ls) 0) + (error 'make-xonxoff "first is on") + ls)]) + (cond + [(null? ls) (list i)] + [(= i (car ls)) + (if on? + (f (+ i 1) #t (cdr ls)) + (cons i (f (+ i 1) #t (cdr ls))))] + [else + (if on? + (cons i (f (+ i 1) #f ls)) + (f (+ i 1) #f ls))])))) + + +(define (search-on? n v) + (let ([k (- (vector-length v) 1)]) + (let f ([i 0] [k k]) + (cond + [(fx= i k) (odd? i)] + [else + (let ([j (fxsra (+ i k 1) 1)]) + (cond + [(<= (vector-ref v j) n) (f j k)] + [else (f i (- j 1))]))])))) + + +(define (verify vec ls) + (let f ([i 0] [ls ls]) + (unless (> i #x10FFFF) + (let-values ([(on? ls) + (cond + [(null? ls) (values #f '())] + [(= i (car ls)) (values #t (cdr ls))] + [else (values #f ls)])]) + (unless (equal? on? (search-on? i vec)) + (error #f "did not pass on ~s" i)) + (f (+ i 1) ls))))) + + +(define (cat fields) + (let ([num (car fields)] + [cat (caddr fields)]) + (cons + (read (open-input-string (format "#x~a" num))) + (string->symbol cat)))) + + +(define constituent-property #x010000) +(define uppercase-property #x020000) +(define lowercase-property #x040000) +(define titlecase-property #x080000) +(define alphabetic-property #x100000) +(define numeric-property #x200000) +(define whitespace-property #x400000) + +;;; Uppercase = Lu + Other_Uppercase +;;; Lowercase = Ll + Other_Lowercase +;;; Titlecase = Lt +;;; Alphabetic = Lu + Ll + Lt + Lm + Lo + Nl + Other_Alphabetic +;;; Numeric = ??? +;;; White_Space = + +(define proplist-properties + `(["Other_Uppercase" ,uppercase-property] + ["Other_Lowercase" ,lowercase-property] + ["Other_Alphabetic" ,alphabetic-property] + ["White_Space" ,whitespace-property])) + +(define categories + ;;; 30 categories + `([Lu ,(+ 00 constituent-property uppercase-property alphabetic-property) "Letter, Uppercase"] + [Ll ,(+ 01 constituent-property lowercase-property alphabetic-property) "Letter, Lowercase"] + [Lt ,(+ 02 constituent-property titlecase-property alphabetic-property) "Letter, Titlecase"] + [Lm ,(+ 03 constituent-property alphabetic-property) "Letter, Modifier"] + [Lo ,(+ 04 constituent-property alphabetic-property) "Letter, Other"] + [Mn ,(+ 05 constituent-property) "Mark, Nonspacing"] + [Mc ,(+ 06 constituent-property) "Mark, Spacing Combining"] + [Me ,(+ 07 constituent-property) "Mark, Enclosing"] + [Nd ,(+ 08 constituent-property numeric-property) "Number, Decimal Digit"] + [Nl ,(+ 09 constituent-property alphabetic-property numeric-property) "Number, Letter"] + [No ,(+ 10 constituent-property numeric-property) "Number, Other"] + [Pc ,(+ 11 constituent-property) "Punctuation, Connector"] + [Pd ,(+ 12 constituent-property) "Punctuation, Dash"] + [Ps ,(+ 13 ) "Punctuation, Open"] + [Pe ,(+ 14 ) "Punctuation, Close"] + [Pi ,(+ 15 ) "Punctuation, Initial quote"] + [Pf ,(+ 16 ) "Punctuation, Final quote"] + [Po ,(+ 17 constituent-property) "Punctuation, Other"] + [Sm ,(+ 18 constituent-property) "Symbol, Math"] + [Sc ,(+ 19 constituent-property) "Symbol, Currency"] + [Sk ,(+ 20 constituent-property) "Symbol, Modifier"] + [So ,(+ 21 constituent-property) "Symbol, Other"] + [Zs ,(+ 22 ) "Separator, Space"] + [Zl ,(+ 23 ) "Separator, Line"] + [Zp ,(+ 24 ) "Separator, Paragraph"] + [Cc ,(+ 25 ) "Other, Control"] + [Cf ,(+ 26 ) "Other, Format"] + [Cs ,(+ 27 ) "Other, Surrogate"] + [Co ,(+ 28 constituent-property) "Other, Private Use"] + [Cn ,(+ 29 ) "Other, Not Assigned"] + )) + + +(define (category-index x) + (cond + [(assq x categories) => cadr] + [else (error 'category-index "invalid cat ~s" x)])) + + +(define (insert-missing ls) + (let ([Cn-index (category-index 'Cn)]) + (let f ([ls ls] [i 0] [ac '()]) + (cond + [(> i #x10FFFF) (reverse ac)] + [(null? ls) + (f ls (+ i 1) (cons (cons i Cn-index) ac))] + [(= i (caar ls)) + (f (cdr ls) (+ i 1) + (cons (cons (caar ls) (category-index (cdar ls))) ac))] + [else + (f ls (+ i 1) (cons (cons i Cn-index) ac))])))) + +(define (make-cats-table ls) + (let f ([i 1] [st (car ls)] [ls (cdr ls)] [ac '()]) + (cond + [(null? ls) (reverse (cons (cons i st) ac))] + [(equal? (cdar ls) (cdr st)) (f (add1 i) st (cdr ls) ac)] + [else + (f 1 (car ls) (cdr ls) (cons (cons i st) ac))]))) + + +(define (merge-sequences ls) + (define (split ls) + (cond + [(null? ls) (values '() '())] + [(= (caar ls) 1) + (let-values ([(chain no-chain) (split (cdr ls))]) + (values (cons (cdar ls) chain) no-chain))] + [else + (values '() ls)])) + (define (mk-chain a chain) + (cond + [(null? chain) a] + [else + (cons (car a) + (list->vector + (cons (cdr a) + (map cdr chain))))])) + (cond + [(null? ls) '()] + [(= (caar ls) 1) + (let-values ([(chain no-chain) (split (cdr ls))]) + (cons (mk-chain (cdar ls) chain) + (merge-sequences no-chain)))] + [else (cons (cdar ls) (merge-sequences (cdr ls)))])) + +(define (iota i n) + (let f ([i i] [n n] [ac '()]) + (cond + [(= i n) ac] + [else (f i (sub1 n) (cons (sub1 n) ac))]))) + +;;; first, make a big vector for all characters +;;; place all in category Cn, unless proven otherwise +(let ([v (make-vector (+ #x10FFFF 1) (category-index 'Cn))]) + (let ([ls (get-unicode-data "UNIDATA/UnicodeData.txt")]) + ;;; interesting parts of each element in ls are: + ;;; field0: the character index, numeric + ;;; field2: the category, symbolic + (for-each + (lambda (x) + (let ([idx (hex-string->number (list-ref x 0))] + [cat (category-index (string->symbol (list-ref x 2)))]) + (vector-set! v idx cat))) + ls)) + ;;; every element of v now maps to the category-index. + (let ([ls (get-unicode-data "UNIDATA/PropList.txt")]) + ;;; field0 is a range + ;;; field1 is a property name + (for-each + (lambda (x) + (let ([range (extract-range (car x))] + [name (cadr x)]) + (cond + [(assoc name proplist-properties) => + (lambda (a) + (let ([n (cadr a)]) + (let f ([i (car range)] [j (cdr range)]) + (unless (> i j) + (vector-set! v i (fxlogor (vector-ref v i) n)) + (f (add1 i) j)))))]))) + ls)) + (let ([table + (merge-sequences + (make-cats-table + (map cons + (iota 0 (vector-length v)) + (vector->list v))))]) + (with-output-to-file "unicode-charinfo.ss" + (lambda () + (printf ";;; DO NOT EDIT\n") + (printf ";;; automatically generated\n") + (printf ";;; ~s elements in vectors\n\n" (length table)) + (pretty-print + `(begin + (define constituent-property ,constituent-property ) + (define uppercase-property ,uppercase-property ) + (define lowercase-property ,lowercase-property ) + (define titlecase-property ,titlecase-property ) + (define alphabetic-property ,alphabetic-property ) + (define numeric-property ,numeric-property ) + (define whitespace-property ,whitespace-property))) + (pretty-print + `(define unicode-categories-lookup-vector + ',(list->vector (map car table)))) + (pretty-print + `(define unicode-categories-values-vector + ',(list->vector (map cdr table)))) + (pretty-print + `(define unicode-categories-name-vector + ',(list->vector (map car categories))))) + 'replace)) + (exit 0) + (let ([ls (map cat (get-unicode-data "UNIDATA/UnicodeData.txt"))]) + (let ([wanted + (codes-in-cats ls + '(Lu Ll Lt Lm Lo Mn Mc Me Nd Nl No Pd Pc Po Sc Sm Sk So Co))] + [cats-table (merge-sequences + (make-cats-table + (insert-missing ls)))]) + (let ([xonxoff (list->vector (make-xonxoff wanted))]) + (verify xonxoff wanted) + (with-output-to-file "unicode-info.ss" + (lambda () + (printf ";;; DO NOT EDIT\n") + (printf ";;; automatically generated\n") + (printf ";;; ~s elements in vector\n\n" (vector-length xonxoff)) + (pretty-print + `(define unicode-constituents-vector ',xonxoff)) + (printf ";;; ~s elements in cats\n" (length cats-table)) + (pretty-print + `(define unicode-categories-lookup-vector + ',(list->vector (map car cats-table)))) + (pretty-print + `(define unicode-categories-values-vector + ',(list->vector (map cdr cats-table)))) + (pretty-print + `(define unicode-categories-name-vector + ',(list->vector (map car categories))))) + 'replace))))) + + +(printf "Happy Happy Joy Joy\n") diff --git a/src/unicode/unicode-charinfo.ss b/src/unicode/unicode-charinfo.ss new file mode 100644 index 0000000..e2d9e03 --- /dev/null +++ b/src/unicode/unicode-charinfo.ss @@ -0,0 +1,371 @@ +;;; DO NOT EDIT +;;; automatically generated +;;; 1486 elements in vectors + +(begin + (define constituent-property 65536) + (define uppercase-property 131072) + (define lowercase-property 262144) + (define titlecase-property 524288) + (define alphabetic-property 1048576) + (define numeric-property 2097152) + (define whitespace-property 4194304)) +(define unicode-categories-lookup-vector + '#(0 9 14 32 33 36 37 40 46 48 58 60 63 65 91 97 123 127 133 134 160 162 166 + 168 178 180 188 191 192 215 216 223 247 248 256 311 313 328 330 376 378 382 + 385 387 390 392 393 396 398 402 403 405 406 409 412 414 415 417 422 424 426 + 428 430 432 433 436 439 441 443 445 448 452 476 478 495 497 502 505 563 570 + 572 573 575 577 579 583 591 660 661 688 697 704 706 710 722 736 741 750 751 + 768 837 838 880 884 886 890 891 894 895 900 902 904 907 910 912 913 930 931 + 940 975 976 978 981 984 1007 1012 1017 1019 1021 1072 1120 1155 1159 1160 + 1162 1216 1218 1230 1232 1300 1329 1367 1369 1370 1376 1377 1416 1419 1425 + 1456 1470 1473 1475 1476 1478 1480 1488 1515 1520 1523 1525 1536 1540 1547 + 1548 1550 1552 1558 1563 1564 1566 1568 1569 1595 1600 1601 1611 1624 1625 + 1631 1632 1642 1646 1648 1649 1748 1750 1757 1759 1761 1765 1767 1769 1770 + 1773 1774 1776 1786 1789 1791 1792 1806 1810 1840 1856 1867 1869 1902 1920 + 1958 1969 1970 1984 1994 2027 2036 2038 2039 2042 2043 2305 2307 2308 2362 + 2364 2366 2369 2377 2381 2382 2384 2385 2389 2392 2402 2404 2406 2416 2417 + 2427 2432 2434 2436 2437 2445 2447 2449 2451 2473 2474 2481 2483 2486 2490 + 2492 2494 2497 2501 2503 2505 2507 2509 2511 2519 2520 2524 2526 2527 2530 + 2532 2534 2544 2546 2548 2554 2555 2561 2563 2565 2571 2575 2577 2579 2601 + 2602 2609 2610 2612 2613 2615 2616 2618 2620 2622 2625 2627 2631 2633 2635 + 2637 2638 2649 2653 2655 2662 2672 2674 2677 2689 2691 2693 2702 2703 2706 + 2707 2729 2730 2737 2738 2740 2741 2746 2748 2750 2753 2758 2759 2761 2763 + 2765 2766 2768 2769 2784 2786 2788 2790 2800 2802 2817 2818 2820 2821 2829 + 2831 2833 2835 2857 2858 2865 2866 2868 2869 2874 2876 2881 2884 2887 2889 + 2891 2893 2894 2902 2904 2908 2910 2911 2914 2918 2928 2930 2946 2949 2955 + 2958 2961 2962 2966 2969 2971 2974 2976 2979 2981 2984 2987 2990 3002 3006 + 3008 3009 3011 3014 3017 3018 3021 3022 3031 3032 3046 3056 3059 3065 3067 + 3073 3076 3077 3085 3086 3089 3090 3113 3114 3124 3125 3130 3134 3137 3141 + 3142 3145 3146 3149 3150 3157 3159 3168 3170 3174 3184 3202 3204 3205 3213 + 3214 3217 3218 3241 3242 3252 3253 3258 3260 3264 3269 3271 3273 3274 3276 + 3278 3285 3287 3294 3296 3298 3300 3302 3312 3313 3315 3330 3332 3333 3341 + 3342 3345 3346 3369 3370 3386 3390 3393 3396 3398 3401 3402 3405 3406 3415 + 3416 3424 3426 3430 3440 3458 3460 3461 3479 3482 3506 3507 3516 3518 3520 + 3527 3530 3531 3535 3538 3541 3544 3552 3570 3572 3573 3585 3633 3634 3636 + 3643 3647 3648 3654 3655 3661 3664 3674 3676 3713 3715 3717 3719 3721 3723 + 3725 3726 3732 3736 3737 3744 3745 3748 3752 3754 3756 3757 3761 3762 3764 + 3770 3771 3773 3774 3776 3781 3784 3789 3790 3792 3802 3804 3806 3840 3841 + 3844 3859 3864 3866 3872 3882 3892 3902 3904 3912 3913 3947 3953 3967 3968 + 3970 3973 3974 3976 3980 3984 3992 3993 4029 4030 4038 4039 4045 4047 4048 + 4050 4096 4130 4131 4136 4137 4139 4141 4145 4147 4150 4154 4160 4170 4176 + 4182 4184 4186 4256 4294 4304 4347 4349 4352 4442 4447 4515 4520 4602 4608 + 4681 4682 4686 4688 4695 4698 4702 4704 4745 4746 4750 4752 4785 4786 4790 + 4792 4799 4802 4806 4808 4823 4824 4881 4882 4886 4888 4955 4959 4961 4969 + 4989 4992 5008 5018 5024 5109 5121 5741 5743 5751 5760 5761 5787 5789 5792 + 5867 5870 5873 5888 5901 5902 5906 5908 5909 5920 5938 5940 5941 5943 5952 + 5970 5972 5984 5997 5998 6001 6002 6004 6016 6068 6070 6071 6078 6086 6087 + 6089 6100 6103 6104 6107 6110 6112 6122 6128 6138 6144 6150 6151 6155 6158 + 6160 6170 6176 6211 6212 6264 6272 6313 6314 6400 6429 6432 6435 6439 6441 + 6444 6448 6450 6451 6457 6460 6464 6465 6468 6470 6480 6510 6512 6517 6528 + 6570 6576 6593 6600 6602 6608 6618 6622 6624 6656 6679 6681 6684 6686 6688 + 6912 6916 6917 6964 6966 6971 6973 6978 6981 6988 6992 7002 7009 7019 7028 + 7037 7424 7468 7522 7544 7545 7579 7616 7627 7678 7680 7829 7836 7840 7930 + 7936 7944 7952 7958 7960 7966 7968 7976 7984 7992 8000 8006 8008 8014 8016 + 8024 8032 8040 8048 8062 8064 8072 8080 8088 8096 8104 8112 8117 8118 8120 + 8124 8127 8130 8133 8134 8136 8140 8141 8144 8148 8150 8152 8156 8157 8160 + 8168 8173 8176 8178 8181 8182 8184 8188 8189 8191 8192 8203 8208 8214 8216 + 8219 8221 8224 8232 8234 8239 8240 8249 8251 8255 8257 8260 8263 8274 8277 + 8287 8288 8292 8298 8304 8306 8308 8314 8317 8320 8330 8333 8336 8341 8352 + 8374 8400 8413 8417 8418 8421 8432 8448 8450 8451 8455 8456 8458 8459 8462 + 8464 8467 8470 8473 8478 8484 8490 8494 8496 8500 8501 8505 8506 8508 8510 + 8512 8517 8518 8522 8524 8526 8527 8531 8544 8560 8576 8579 8581 8592 8597 + 8602 8604 8608 8609 8611 8612 8614 8615 8622 8623 8654 8656 8658 8661 8692 + 8960 8968 8972 8992 8994 9001 9003 9084 9085 9115 9140 9180 9186 9192 9216 + 9255 9280 9291 9312 9372 9398 9424 9450 9472 9655 9656 9665 9666 9720 9728 + 9839 9840 9885 9888 9907 9985 9989 9990 9994 9996 10024 10025 10060 10063 + 10067 10070 10072 10079 10081 10088 10102 10132 10133 10136 10160 10161 + 10175 10176 10181 10183 10187 10192 10214 10220 10224 10240 10496 10627 + 10649 10712 10716 10748 10750 11008 11035 11040 11044 11264 11311 11312 + 11359 11362 11365 11367 11373 11380 11382 11384 11392 11491 11493 11499 + 11513 11517 11518 11520 11558 11568 11622 11631 11632 11648 11671 11680 + 11687 11688 11695 11696 11703 11704 11711 11712 11719 11720 11727 11728 + 11735 11736 11743 11776 11778 11782 11785 11790 11799 11800 11804 11806 + 11904 11930 11931 12020 12032 12246 12272 12284 12288 12289 12292 12306 + 12308 12318 12320 12321 12330 12336 12337 12342 12344 12347 12350 12352 + 12353 12439 12441 12443 12445 12447 12449 12539 12540 12543 12544 12549 + 12589 12593 12687 12688 12690 12694 12704 12728 12736 12752 12784 12800 + 12831 12832 12842 12868 12880 12881 12896 12928 12938 12977 12992 13055 + 13056 13312 13313 19893 19894 19904 19968 19969 40891 40892 40960 40981 + 40982 42125 42128 42183 42752 42775 42779 42784 42786 43008 43010 43011 + 43014 43015 43019 43020 43043 43045 43047 43048 43052 43072 43124 43128 + 44032 44033 55203 55204 55296 55297 56191 56193 56319 56321 57343 57345 + 63743 63744 64046 64048 64107 64112 64218 64256 64263 64275 64280 64285 + 64287 64297 64298 64311 64312 64317 64320 64322 64323 64325 64326 64434 + 64467 64830 64832 64848 64912 64914 64968 65008 65020 65022 65024 65040 + 65047 65050 65056 65060 65072 65073 65075 65077 65093 65095 65097 65101 + 65104 65107 65108 65112 65119 65122 65124 65127 65130 65132 65136 65141 + 65142 65277 65279 65281 65284 65285 65288 65294 65296 65306 65308 65311 + 65313 65339 65345 65371 65380 65382 65392 65393 65438 65440 65471 65474 + 65480 65482 65488 65490 65496 65498 65501 65504 65506 65509 65511 65513 + 65517 65519 65529 65532 65534 65536 65548 65549 65575 65576 65595 65596 + 65598 65599 65614 65616 65630 65664 65787 65792 65794 65795 65799 65844 + 65847 65856 65909 65913 65930 65931 66304 66335 66336 66340 66352 66369 + 66370 66378 66379 66432 66462 66464 66500 66504 66512 66513 66518 66560 + 66600 66640 66718 66720 66730 67584 67590 67592 67594 67638 67639 67641 + 67644 67645 67647 67648 67840 67862 67866 67871 67872 68096 68097 68100 + 68101 68103 68108 68112 68116 68117 68120 68121 68148 68152 68155 68159 + 68160 68168 68176 68185 73728 74607 74752 74851 74864 74868 118784 119030 + 119040 119079 119082 119141 119143 119146 119149 119155 119163 119171 + 119173 119180 119210 119214 119262 119296 119362 119365 119366 119552 + 119639 119648 119666 119808 119834 119860 119886 119893 119894 119912 + 119938 119964 119966 119968 119970 119971 119973 119975 119977 119981 + 119982 119990 119994 119997 120004 120005 120016 120042 120068 120070 + 120071 120075 120077 120085 120086 120093 120094 120120 120122 120123 + 120127 120128 120133 120135 120138 120145 120146 120172 120198 120224 + 120250 120276 120302 120328 120354 120380 120406 120432 120458 120486 + 120488 120513 120514 120539 120540 120546 120571 120572 120597 120598 + 120604 120629 120630 120655 120656 120662 120687 120688 120713 120714 + 120720 120745 120746 120771 120772 120778 120780 120782 120832 131072 + 131073 173782 173783 194560 195102 917505 917506 917536 917632 917760 + 918000 983040 983041 1048573 1048574 1048576 1048577 1114109 1114110)) +(define unicode-categories-values-vector + '#(25 4194329 25 4194326 65553 65555 65553 #(13 14 65553 65554 65553 65548) + 65553 2162696 65553 65554 65553 1245184 #(13 65553 14 65556 65547 65556) + 1376257 #(13 65554 14 65554) 25 4194329 25 #(4194326 65553) 65555 65557 + #(65556 65557 1376257 15 65554 26 65557 65556 65557 65554) 2162698 + #(65556 1376257 65557 65553 65556 2162698 1376257 16) 2162698 65553 1245184 + 65554 1245184 1376257 65554 1376257 + #(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184) 1376257 + #(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184) 1376257 + #(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257) 1245184 #(1376257 1245184 1376257 1245184) 1376257 1245184 + #(1376257 1245184 1376257) 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + #(1376257 1245184 1376257 1245184 1376257) 1245184 #(1376257 1245184) + 1376257 #(1245184 1376257) 1245184 1376257 1245184 + #(1376257 1245184 1376257) 1245184 1376257 #(1114116 1245184) 1376257 + 1114116 + #(1245184 1638402 1376257 1245184 1638402 1376257 1245184 1638402 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184) 1376257 + #(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184) 1376257 + #(1245184 1638402 1376257 1245184 1376257) 1245184 + #(1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184) 1376257 1245184 1376257 1245184 1376257 + #(1245184 1376257) 1245184 + #(1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184) 1376257 + 1114116 1376257 1376259 1114115 1376259 65556 1114115 65556 1376259 65556 + 1114115 65556 65541 1376261 65541 29 65556 29 1376259 1376257 65553 29 + 65556 #(1245184 65553) 1245184 #(29 1245184 29) 1245184 1376257 1245184 29 + 1245184 1376257 29 1376257 1245184 1376257 + #(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184) 1376257 + #(1245184 1376257 65554 1245184 1376257) 1245184 1376257 1245184 1376257 + #(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 65557) 65541 29 + 65543 + #(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257) + 1245184 + #(1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184) 1376257 + #(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257) 29 1245184 29 1114115 65553 29 + 1376257 #(29 65553 65548) 29 65541 1114117 #(65553 1114117 65553) 1114117 + 65553 1114117 #(65553 1114117) 29 1114116 29 1114116 65553 29 26 29 65555 + 65553 65557 1114117 29 65553 29 65553 29 1114116 29 1114115 1114116 1114117 + 65541 1114117 29 2162696 65553 1114116 1114117 1114116 #(65553 1114116) + 1114117 #(26 65543) 65541 1114117 1114115 1114117 65557 65541 1114117 + 1114116 2162696 1114116 65557 1114116 65553 #(29 26 1114116 1114117) + 1114116 1114117 65541 29 1114116 29 1114116 1114117 1114116 29 2162696 + 1114116 65541 1114115 65557 65553 1114115 29 1114117 1114118 1114116 29 + #(65541 1114116) 1114118 1114117 1114118 65541 29 1114116 65541 29 1114116 + 1114117 65553 2162696 65553 29 1114116 #(29 1114117) 1114118 29 1114116 29 + 1114116 29 1114116 29 1114116 #(29 1114116) 29 1114116 29 #(65541 1114116) + 1114118 1114117 29 1114118 29 1114118 #(65541 1114116) 29 1114118 29 + 1114116 29 1114116 1114117 29 2162696 1114116 65555 2162698 65557 29 + 1114117 #(1114118 29) 1114116 29 1114116 29 1114116 29 1114116 29 1114116 + 29 1114116 29 1114116 29 #(65541 29) 1114118 1114117 29 1114117 29 1114117 + 65541 29 1114116 #(29 1114116) 29 2162696 1114117 1114116 29 1114117 + #(1114118 29) 1114116 29 1114116 29 1114116 29 1114116 29 1114116 29 + 1114116 29 #(65541 1114116) 1114118 1114117 29 1114117 #(1114118 29) + 1114118 65541 29 1114116 29 1114116 1114117 29 2162696 #(29 65555) 29 + 1114117 1114118 29 1114116 29 1114116 29 1114116 29 1114116 29 1114116 29 + 1114116 29 #(65541 1114116 1114118 1114117 1114118) 1114117 29 1114118 29 + 1114118 65541 29 #(1114117 1114118) 29 1114116 29 1114116 29 2162696 + #(65557 1114116) 29 #(1114117 1114116 29) 1114116 29 1114116 29 1114116 29 + 1114116 #(29 1114116 29) 1114116 29 1114116 29 1114116 29 1114116 29 + 1114118 1114117 1114118 29 1114118 29 1114118 65541 29 1114118 29 2162696 + 2162698 65557 #(65555 65557) 29 1114118 29 1114116 29 1114116 29 1114116 29 + 1114116 29 1114116 29 1114117 1114118 29 1114117 29 1114117 65541 29 + 1114117 29 1114116 29 2162696 29 1114118 29 1114116 29 1114116 29 1114116 + 29 1114116 29 1114116 29 #(65541 1114116 1114118 1114117) 1114118 + #(29 1114117) 1114118 29 1114118 #(1114117 65541) 29 1114118 29 + #(1114116 29) 1114116 1114117 29 2162696 29 65557 29 1114118 29 1114116 29 + 1114116 29 1114116 29 1114116 29 1114118 1114117 29 1114118 29 1114118 + 65541 29 1114118 29 1114116 29 2162696 29 1114118 29 1114116 29 1114116 29 + 1114116 #(29 1114116) 29 1114116 29 65541 29 1114118 1114117 + #(29 1114117 29) 1114118 29 1114118 65553 29 1114116 1114117 1114116 + 1114117 29 65555 1114116 1114115 65541 #(1114117 65541 65553) 2162696 65553 + 29 1114116 #(29 1114116) 29 1114116 #(29 1114116) 29 1114116 29 1114116 29 + 1114116 29 1114116 #(29 1114116 29 1114116) 29 1114116 29 1114116 1114117 + 1114116 1114117 29 1114117 1114116 29 1114116 #(29 1114115 29) 65541 + 1114117 29 2162696 29 1114116 29 1114116 65557 65553 65557 65541 65557 + 2162696 2162698 #(65557 65541 65557 65541 65557 65541 13 14 13 14) 65542 + 1114116 29 1114116 29 1114117 1114118 1114117 65541 65553 65541 1114116 29 + 1114117 29 1114117 29 65557 65541 65557 29 65557 65553 29 1114116 29 + 1114116 29 1114116 #(29 1114118) 1114117 #(1114118 1114117) 29 + #(1114117 65541 1114118 65541) 29 2162696 65553 1114116 1114118 1114117 29 + 1245184 29 1114116 #(65553 1114115) 29 1114116 29 1114116 29 1114116 29 + 1114116 29 1114116 29 1114116 #(29 1114116 29) 1114116 29 1114116 29 + 1114116 29 1114116 29 1114116 29 1114116 #(29 1114116 29) 1114116 29 + 1114116 29 1114116 29 1114116 29 1114116 29 #(1114117 65557) 65553 2162698 + 29 1114116 65557 29 1114116 29 1114116 65553 1114116 29 4194326 1114116 + #(13 14) 29 1114116 65553 3211273 29 1114116 29 1114116 1114117 65541 29 + 1114116 1114117 65541 65553 29 1114116 1114117 29 1114116 29 1114116 29 + 1114117 29 1114116 26 1114118 1114117 1114118 1114117 1114118 65541 65553 + 1114115 65553 #(65555 1114116 65541) 29 2162696 29 2162698 29 65553 65548 + 65553 65541 #(4194326 29) 2162696 29 1114116 1114115 1114116 29 1114116 + 1114117 29 1114116 29 1114117 1114118 1114117 1114118 29 1114118 1114117 + 1114118 65541 29 65557 29 65553 2162696 1114116 29 1114116 29 1114116 29 + 1114118 1114116 1114118 29 2162696 29 65553 65557 1114116 1114117 1114118 + 29 65553 29 1114117 1114118 1114116 #(65541 1114118) 1114117 + #(1114118 1114117) 1114118 #(1114117 1114118 65542) 1114116 29 2162696 + 65553 65557 65541 65557 29 1376257 1376259 1376257 1376259 1376257 1376259 + 65541 29 65541 + #(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184) 1376257 29 + #(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257) + 29 1376257 1245184 1376257 29 1245184 29 1376257 1245184 1376257 1245184 + 1376257 29 1245184 29 1376257 + #(29 1245184 29 1245184 29 1245184 29 1245184) 1376257 1245184 1376257 29 + 1376257 1638402 1376257 1638402 1376257 1638402 1376257 29 1376257 1245184 + #(1638402 65556 1376257) 65556 1376257 29 1376257 1245184 1638402 65556 + 1376257 29 1376257 1245184 29 65556 1376257 1245184 65556 29 1376257 29 + 1376257 1245184 1638402 65556 29 4194326 26 65548 65553 #(15 16 13) 15 + #(16 13 15) 65553 #(4194327 4194328) 26 4194326 65553 #(15 16) 65553 65547 + 65553 #(65554 13 14) 65553 #(65554 65553 65547) 65553 4194326 26 29 26 + #(2162698 1376257) 29 2162698 65554 #(13 14 1376257) 2162698 65554 + #(13 14 29) 1376259 29 65555 29 65541 65543 65541 65543 65541 29 65557 + 1245184 65557 1245184 65557 1376257 1245184 1376257 1245184 + #(1376257 65557 1245184) 65557 1245184 65557 + #(1245184 65557 1245184 65557 1245184 65557) 1245184 #(65557 1376257) + 1245184 1376257 1114116 1376257 65557 1376257 1245184 65554 1245184 1376257 + #(65557 65554) 65557 1376257 29 2162698 3342345 3473417 3211273 + #(1245184 1376257) 29 65554 65557 65554 65557 65554 65557 65554 65557 65554 + 65557 65554 65557 65554 65557 #(65554 65557 65554) 65557 65554 65557 65554 + 65557 65554 65557 #(13 14) 65557 65554 65557 65554 65557 65554 65557 29 + 65557 29 65557 29 2162698 65557 1245205 1376277 2162698 65557 65554 65557 + 65554 65557 65554 65557 65554 65557 29 65557 29 65557 29 65557 29 65557 29 + 65557 #(29 65557 29) 65557 29 #(65557 29) 65557 29 65557 + #(13 14 13 14 13 14 13 14 13 14 13 14 13 14) 2162698 65557 29 65557 29 + 65557 29 65554 #(13 14) 65554 29 65554 #(13 14 13 14 13 14) 29 65554 65557 + 65554 #(13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14) + 65554 #(13 14 13 14) 65554 #(13 14) 65554 65557 29 65557 29 1245184 29 + 1376257 #(29 1245184 1376257) 1245184 1376257 + #(1245184 1376257 1245184 1376257 1245184 1376257) 29 #(1376257 1245184) + 1376257 29 + #(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184) + 1376257 65557 29 65553 2162698 65553 1376257 29 1114116 29 1114115 29 + 1114116 29 1114116 29 1114116 29 1114116 29 1114116 29 1114116 29 1114116 + 29 1114116 29 1114116 29 65553 #(15 16 15 16) 65553 #(15 16 65553 15 16) + 65553 65548 29 #(15 16) 29 65557 29 65557 29 65557 29 65557 29 4194326 + 65553 #(65557 1114115 1114116 3211273 13 14 13 14 13 14 13 14 13 14) 65557 + #(13 14 13 14 13 14 13 14 65548 13) 14 65557 3211273 65541 65548 1114115 + 65557 3211273 #(1114115 1114116 65553) 65557 29 1114116 29 65541 65556 + 1114115 #(1114116 65548) 1114116 65553 1114115 1114116 29 1114116 29 + 1114116 29 65557 2162698 65557 1114116 29 65557 29 1114116 65557 29 2162698 + 65557 29 65557 2162698 65557 2162698 65557 2162698 65557 29 65557 1114116 + 29 1114116 29 65557 1114116 29 1114116 29 1114116 1114115 1114116 29 65557 + 29 65556 1114115 29 65556 29 1114116 65542 1114116 65541 1114116 65541 + 1114116 1114118 1114117 1114118 65557 29 1114116 65553 29 1114116 29 + 1114116 29 27 29 27 29 27 29 #(27 65564) 29 65564 1114116 29 1114116 29 + 1114116 29 1376257 29 1376257 29 #(1114116 1114117) 1114116 65554 1114116 + 29 1114116 #(29 1114116 29) 1114116 29 1114116 29 1114116 29 1114116 + #(13 14) 29 1114116 29 1114116 29 1114116 #(65555 65557) 29 65541 65553 + #(13 14 65553) 29 65541 29 65553 65548 65547 + #(13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14) 65553 #(13 14) 65553 + 65547 65553 29 65553 #(65548 13 14 13 14 13 14) 65553 #(65554 65548) 65554 + #(29 65553 65555) 65553 29 1114116 29 1114116 29 #(26 29) 65553 65555 65553 + #(13 14 65553 65554 65553 65548) 65553 2162696 65553 65554 65553 1245184 + #(13 65553 14 65556 65547 65556) 1376257 + #(13 65554 14 65554 13 14 65553 13 14) 65553 1114116 1114115 1114116 + 1114115 1114116 29 1114116 29 1114116 29 1114116 29 1114116 29 65555 + #(65554 65556 65557) 65555 #(29 65557) 65554 65557 29 26 65557 29 1114116 + 29 1114116 29 1114116 29 1114116 29 1114116 29 1114116 29 1114116 29 65553 + 65557 29 2162698 29 65557 3211273 2162698 65557 2162698 29 1114116 29 + 2162698 29 1114116 3211273 1114116 3211273 29 1114116 #(29 65553) 1114116 + 29 1114116 65553 3211273 29 1245184 1376257 1114116 29 2162696 29 1114116 + 29 #(1114116 29) 1114116 29 1114116 29 1114116 29 1114116 29 1114116 + 2162698 29 65553 29 1114116 1114117 29 1114117 29 1114117 1114116 29 + 1114116 29 1114116 29 65541 29 65541 2162698 29 65553 29 1114116 29 3211273 + 29 65553 29 65557 29 65557 29 65557 65542 65541 65557 65542 26 65541 65557 + 65541 65557 65541 65557 29 65557 65541 65557 29 65557 29 2162698 29 1245184 + 1376257 1245184 1376257 29 1376257 1245184 1376257 #(1245184 29) 1245184 29 + 1245184 29 1245184 29 1245184 29 1245184 1376257 #(29 1376257 29) 1376257 + 29 1376257 1245184 1376257 1245184 29 1245184 29 1245184 29 1245184 29 + 1376257 1245184 29 1245184 29 1245184 #(29 1245184) 29 1245184 29 1376257 + 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 + 1376257 1245184 1376257 29 1245184 65554 1376257 65554 1376257 1245184 + 65554 1376257 65554 1376257 1245184 65554 1376257 65554 1376257 1245184 + 65554 1376257 65554 1376257 1245184 65554 1376257 65554 1376257 + #(1245184 1376257) 29 2162696 29 1114116 29 1114116 29 1114116 29 26 29 26 + 29 65541 29 65564 29 65564 29 65564 29 65564 29)) +(define unicode-categories-name-vector + '#(Lu Ll Lt Lm Lo Mn Mc Me Nd Nl No Pc Pd Ps Pe Pi Pf Po Sm Sc Sk So Zs Zl Zp + Cc Cf Cs Co Cn)) diff --git a/src/unicode/unicode-constituents.ss b/src/unicode/unicode-constituents.ss deleted file mode 100644 index f1a3ae7..0000000 --- a/src/unicode/unicode-constituents.ss +++ /dev/null @@ -1,281 +0,0 @@ -;;; DO NOT EDIT -;;; automatically generated -;;; 947 elements in vector - -(define unicode-constituents-vector - '#(0 33 40 42 91 92 93 94 123 124 125 126 127 161 171 172 173 174 187 188 880 - 884 886 890 895 900 907 908 909 910 930 931 975 976 1159 1160 1300 1329 - 1367 1369 1376 1377 1416 1417 1419 1425 1480 1488 1515 1520 1525 1547 1558 - 1563 1564 1566 1568 1569 1595 1600 1631 1632 1757 1758 1806 1808 1867 1869 - 1902 1920 1970 1984 2043 2305 2362 2364 2382 2384 2389 2392 2417 2427 2432 - 2433 2436 2437 2445 2447 2449 2451 2473 2474 2481 2482 2483 2486 2490 2492 - 2501 2503 2505 2507 2511 2519 2520 2524 2526 2527 2532 2534 2555 2561 2564 - 2565 2571 2575 2577 2579 2601 2602 2609 2610 2612 2613 2615 2616 2618 2620 - 2621 2622 2627 2631 2633 2635 2638 2649 2653 2654 2655 2662 2677 2689 2692 - 2693 2702 2703 2706 2707 2729 2730 2737 2738 2740 2741 2746 2748 2758 2759 - 2762 2763 2766 2768 2769 2784 2788 2790 2800 2801 2802 2817 2820 2821 2829 - 2831 2833 2835 2857 2858 2865 2866 2868 2869 2874 2876 2884 2887 2889 2891 - 2894 2902 2904 2908 2910 2911 2914 2918 2930 2946 2948 2949 2955 2958 2961 - 2962 2966 2969 2971 2972 2973 2974 2976 2979 2981 2984 2987 2990 3002 3006 - 3011 3014 3017 3018 3022 3031 3032 3046 3067 3073 3076 3077 3085 3086 3089 - 3090 3113 3114 3124 3125 3130 3134 3141 3142 3145 3146 3150 3157 3159 3168 - 3170 3174 3184 3202 3204 3205 3213 3214 3217 3218 3241 3242 3252 3253 3258 - 3260 3269 3270 3273 3274 3278 3285 3287 3294 3295 3296 3300 3302 3312 3313 - 3315 3330 3332 3333 3341 3342 3345 3346 3369 3370 3386 3390 3396 3398 3401 - 3402 3406 3415 3416 3424 3426 3430 3440 3458 3460 3461 3479 3482 3506 3507 - 3516 3517 3518 3520 3527 3530 3531 3535 3541 3542 3543 3544 3552 3570 3573 - 3585 3643 3647 3676 3713 3715 3716 3717 3719 3721 3722 3723 3725 3726 3732 - 3736 3737 3744 3745 3748 3749 3750 3751 3752 3754 3756 3757 3770 3771 3774 - 3776 3781 3782 3783 3784 3790 3792 3802 3804 3806 3840 3898 3902 3912 3913 - 3947 3953 3980 3984 3992 3993 4029 4030 4045 4047 4050 4096 4130 4131 4136 - 4137 4139 4140 4147 4150 4154 4160 4186 4256 4294 4304 4349 4352 4442 4447 - 4515 4520 4602 4608 4681 4682 4686 4688 4695 4696 4697 4698 4702 4704 4745 - 4746 4750 4752 4785 4786 4790 4792 4799 4800 4801 4802 4806 4808 4823 4824 - 4881 4882 4886 4888 4955 4959 4989 4992 5018 5024 5109 5121 5751 5761 5787 - 5792 5873 5888 5901 5902 5909 5920 5943 5952 5972 5984 5997 5998 6001 6002 - 6004 6016 6068 6070 6110 6112 6122 6128 6138 6144 6158 6160 6170 6176 6264 - 6272 6314 6400 6429 6432 6444 6448 6460 6464 6465 6468 6510 6512 6517 6528 - 6570 6576 6602 6608 6618 6622 6684 6686 6688 6912 6988 6992 7037 7424 7627 - 7678 7836 7840 7930 7936 7958 7960 7966 7968 8006 8008 8014 8016 8024 8025 - 8026 8027 8028 8029 8030 8031 8062 8064 8117 8118 8133 8134 8148 8150 8156 - 8157 8176 8178 8181 8182 8191 8208 8216 8224 8232 8240 8249 8251 8261 8263 - 8287 8304 8306 8308 8317 8319 8333 8336 8341 8352 8374 8400 8432 8448 8527 - 8531 8581 8592 9001 9003 9192 9216 9255 9280 9291 9312 9885 9888 9907 9985 - 9989 9990 9994 9996 10024 10025 10060 10061 10062 10063 10067 10070 10071 - 10072 10079 10081 10088 10102 10133 10136 10160 10161 10175 10176 10181 - 10183 10187 10192 10214 10224 10627 10649 10712 10716 10748 10750 11035 - 11040 11044 11264 11311 11312 11359 11360 11373 11380 11384 11392 11499 - 11513 11558 11568 11622 11631 11632 11648 11671 11680 11687 11688 11695 - 11696 11703 11704 11711 11712 11719 11720 11727 11728 11735 11736 11743 - 11776 11778 11782 11785 11787 11788 11790 11800 11904 11930 11931 12020 - 12032 12246 12272 12284 12289 12296 12306 12308 12316 12317 12320 12352 - 12353 12439 12441 12544 12549 12589 12593 12687 12688 12728 12736 12752 - 12784 12831 12832 12868 12880 13055 13056 13313 19893 19894 19904 19969 - 40891 40892 40960 42125 42128 42183 42752 42779 42784 42786 43008 43052 - 43072 43128 44032 44033 55203 55204 57344 57345 63743 64046 64048 64107 - 64112 64218 64256 64263 64275 64280 64285 64311 64312 64317 64318 64319 - 64320 64322 64323 64325 64326 64434 64467 64830 64848 64912 64914 64968 - 65008 65022 65024 65047 65049 65050 65056 65060 65072 65077 65093 65095 - 65097 65107 65108 65113 65119 65127 65128 65132 65136 65141 65142 65277 - 65281 65288 65290 65339 65340 65341 65342 65371 65372 65373 65374 65375 - 65377 65378 65380 65471 65474 65480 65482 65488 65490 65496 65498 65501 - 65504 65511 65512 65519 65532 65534 65536 65548 65549 65575 65576 65595 - 65596 65598 65599 65614 65616 65630 65664 65787 65792 65795 65799 65844 - 65847 65931 66304 66335 66336 66340 66352 66379 66432 66462 66463 66500 - 66504 66518 66560 66718 66720 66730 67584 67590 67592 67593 67594 67638 - 67639 67641 67644 67645 67647 67648 67840 67866 67871 67872 68096 68100 - 68101 68103 68108 68116 68117 68120 68121 68148 68152 68155 68159 68168 - 68176 68185 73728 74607 74752 74851 74864 74868 118784 119030 119040 119079 - 119082 119155 119163 119262 119296 119366 119552 119639 119648 119666 - 119808 119893 119894 119965 119966 119968 119970 119971 119973 119975 - 119977 119981 119982 119994 119995 119996 119997 120004 120005 120070 - 120071 120075 120077 120085 120086 120093 120094 120122 120123 120127 - 120128 120133 120134 120135 120138 120145 120146 120486 120488 120780 - 120782 120832 131072 131073 173782 173783 194560 195102 917760 918000 - 983040 983041 1048573 1048574 1048576 1048577 1114109 1114110)) -;;; 1464 elements in cats -(define unicode-categories-lookup-vector - '#(0 32 33 36 37 40 46 48 58 60 63 65 91 97 123 127 160 162 166 168 178 180 - 188 191 192 215 216 223 247 248 256 311 313 328 330 376 378 382 385 387 390 - 392 393 396 398 402 403 405 406 409 412 414 415 417 422 424 426 428 430 432 - 433 436 439 441 443 445 448 452 476 478 495 497 502 505 563 570 572 573 575 - 577 579 583 591 660 661 688 706 710 722 736 741 750 751 768 880 884 886 890 - 891 894 895 900 902 904 907 910 912 913 930 931 940 975 976 978 981 984 - 1007 1012 1017 1019 1021 1072 1120 1155 1159 1160 1162 1216 1218 1230 1232 - 1300 1329 1367 1369 1370 1376 1377 1416 1419 1425 1470 1473 1475 1476 1478 - 1480 1488 1515 1520 1523 1525 1536 1540 1547 1548 1550 1552 1558 1563 1564 - 1566 1568 1569 1595 1600 1601 1611 1631 1632 1642 1646 1648 1649 1748 1750 - 1757 1759 1765 1767 1769 1770 1774 1776 1786 1789 1791 1792 1806 1810 1840 - 1867 1869 1902 1920 1958 1969 1970 1984 1994 2027 2036 2038 2039 2042 2043 - 2305 2307 2308 2362 2364 2366 2369 2377 2381 2382 2384 2385 2389 2392 2402 - 2404 2406 2416 2417 2427 2432 2434 2436 2437 2445 2447 2449 2451 2473 2474 - 2481 2483 2486 2490 2492 2494 2497 2501 2503 2505 2507 2509 2511 2519 2520 - 2524 2526 2527 2530 2532 2534 2544 2546 2548 2554 2555 2561 2563 2565 2571 - 2575 2577 2579 2601 2602 2609 2610 2612 2613 2615 2616 2618 2620 2622 2625 - 2627 2631 2633 2635 2638 2649 2653 2655 2662 2672 2674 2677 2689 2691 2693 - 2702 2703 2706 2707 2729 2730 2737 2738 2740 2741 2746 2748 2750 2753 2758 - 2759 2761 2763 2765 2766 2768 2769 2784 2786 2788 2790 2800 2802 2817 2818 - 2820 2821 2829 2831 2833 2835 2857 2858 2865 2866 2868 2869 2874 2876 2881 - 2884 2887 2889 2891 2893 2894 2902 2904 2908 2910 2911 2914 2918 2928 2930 - 2946 2949 2955 2958 2961 2962 2966 2969 2971 2974 2976 2979 2981 2984 2987 - 2990 3002 3006 3008 3009 3011 3014 3017 3018 3021 3022 3031 3032 3046 3056 - 3059 3065 3067 3073 3076 3077 3085 3086 3089 3090 3113 3114 3124 3125 3130 - 3134 3137 3141 3142 3145 3146 3150 3157 3159 3168 3170 3174 3184 3202 3204 - 3205 3213 3214 3217 3218 3241 3242 3252 3253 3258 3260 3264 3269 3271 3273 - 3274 3276 3278 3285 3287 3294 3296 3298 3300 3302 3312 3313 3315 3330 3332 - 3333 3341 3342 3345 3346 3369 3370 3386 3390 3393 3396 3398 3401 3402 3405 - 3406 3415 3416 3424 3426 3430 3440 3458 3460 3461 3479 3482 3506 3507 3516 - 3518 3520 3527 3530 3531 3535 3538 3541 3544 3552 3570 3572 3573 3585 3633 - 3634 3636 3643 3647 3648 3654 3655 3663 3664 3674 3676 3713 3715 3717 3719 - 3721 3723 3725 3726 3732 3736 3737 3744 3745 3748 3752 3754 3756 3757 3761 - 3762 3764 3770 3771 3773 3774 3776 3781 3784 3790 3792 3802 3804 3806 3840 - 3841 3844 3859 3864 3866 3872 3882 3892 3902 3904 3912 3913 3947 3953 3967 - 3968 3973 3974 3976 3980 3984 3992 3993 4029 4030 4038 4039 4045 4047 4048 - 4050 4096 4130 4131 4136 4137 4139 4141 4145 4147 4150 4152 4154 4160 4170 - 4176 4182 4184 4186 4256 4294 4304 4347 4349 4352 4442 4447 4515 4520 4602 - 4608 4681 4682 4686 4688 4695 4698 4702 4704 4745 4746 4750 4752 4785 4786 - 4790 4792 4799 4802 4806 4808 4823 4824 4881 4882 4886 4888 4955 4959 4961 - 4969 4989 4992 5008 5018 5024 5109 5121 5741 5743 5751 5760 5761 5787 5789 - 5792 5867 5870 5873 5888 5901 5902 5906 5909 5920 5938 5941 5943 5952 5970 - 5972 5984 5997 5998 6001 6002 6004 6016 6068 6070 6071 6078 6086 6087 6089 - 6100 6103 6104 6107 6110 6112 6122 6128 6138 6144 6150 6151 6155 6158 6160 - 6170 6176 6211 6212 6264 6272 6313 6314 6400 6429 6432 6435 6439 6441 6444 - 6448 6450 6451 6457 6460 6464 6465 6468 6470 6480 6510 6512 6517 6528 6570 - 6576 6593 6600 6602 6608 6618 6622 6624 6656 6679 6681 6684 6686 6688 6912 - 6916 6917 6964 6966 6971 6973 6978 6979 6981 6988 6992 7002 7009 7019 7028 - 7037 7424 7468 7522 7544 7545 7579 7616 7627 7678 7680 7829 7836 7840 7930 - 7936 7944 7952 7958 7960 7966 7968 7976 7984 7992 8000 8006 8008 8014 8016 - 8024 8032 8040 8048 8062 8064 8072 8080 8088 8096 8104 8112 8117 8118 8120 - 8124 8127 8130 8133 8134 8136 8140 8141 8144 8148 8150 8152 8156 8157 8160 - 8168 8173 8176 8178 8181 8182 8184 8188 8189 8191 8192 8203 8208 8214 8216 - 8219 8221 8224 8232 8234 8239 8240 8249 8251 8255 8257 8260 8263 8274 8277 - 8287 8288 8292 8298 8304 8306 8308 8314 8317 8320 8330 8333 8336 8341 8352 - 8374 8400 8413 8417 8418 8421 8432 8448 8450 8451 8455 8456 8458 8459 8462 - 8464 8467 8470 8473 8478 8484 8490 8494 8496 8500 8501 8505 8506 8508 8510 - 8512 8517 8518 8522 8524 8526 8527 8531 8544 8579 8581 8592 8597 8602 8604 - 8608 8609 8611 8612 8614 8615 8622 8623 8654 8656 8658 8661 8692 8960 8968 - 8972 8992 8994 9001 9003 9084 9085 9115 9140 9180 9186 9192 9216 9255 9280 - 9291 9312 9372 9450 9472 9655 9656 9665 9666 9720 9728 9839 9840 9885 9888 - 9907 9985 9989 9990 9994 9996 10024 10025 10060 10063 10067 10070 10072 - 10079 10081 10088 10102 10132 10133 10136 10160 10161 10175 10176 10181 - 10183 10187 10192 10214 10220 10224 10240 10496 10627 10649 10712 10716 - 10748 10750 11008 11035 11040 11044 11264 11311 11312 11359 11362 11365 - 11367 11373 11380 11382 11384 11392 11491 11493 11499 11513 11517 11518 - 11520 11558 11568 11622 11631 11632 11648 11671 11680 11687 11688 11695 - 11696 11703 11704 11711 11712 11719 11720 11727 11728 11735 11736 11743 - 11776 11778 11782 11785 11790 11799 11800 11804 11806 11904 11930 11931 - 12020 12032 12246 12272 12284 12288 12289 12292 12306 12308 12318 12320 - 12321 12330 12336 12337 12342 12344 12347 12350 12352 12353 12439 12441 - 12443 12445 12447 12449 12539 12540 12543 12544 12549 12589 12593 12687 - 12688 12690 12694 12704 12728 12736 12752 12784 12800 12831 12832 12842 - 12868 12880 12881 12896 12928 12938 12977 12992 13055 13056 13312 13313 - 19893 19894 19904 19968 19969 40891 40892 40960 40981 40982 42125 42128 - 42183 42752 42775 42779 42784 42786 43008 43010 43011 43014 43015 43019 - 43020 43043 43045 43047 43048 43052 43072 43124 43128 44032 44033 55203 - 55204 55296 55297 56191 56193 56319 56321 57343 57345 63743 63744 64046 - 64048 64107 64112 64218 64256 64263 64275 64280 64285 64287 64297 64298 - 64311 64312 64317 64320 64322 64323 64325 64326 64434 64467 64830 64832 - 64848 64912 64914 64968 65008 65020 65022 65024 65040 65047 65050 65056 - 65060 65072 65073 65075 65077 65093 65095 65097 65101 65104 65107 65108 - 65112 65119 65122 65124 65127 65130 65132 65136 65141 65142 65277 65279 - 65281 65284 65285 65288 65294 65296 65306 65308 65311 65313 65339 65345 - 65371 65380 65382 65392 65393 65438 65440 65471 65474 65480 65482 65488 - 65490 65496 65498 65501 65504 65506 65509 65511 65513 65517 65519 65529 - 65532 65534 65536 65548 65549 65575 65576 65595 65596 65598 65599 65614 - 65616 65630 65664 65787 65792 65794 65795 65799 65844 65847 65856 65909 - 65913 65930 65931 66304 66335 66336 66340 66352 66369 66370 66378 66379 - 66432 66462 66464 66500 66504 66512 66513 66518 66560 66600 66640 66718 - 66720 66730 67584 67590 67592 67594 67638 67639 67641 67644 67645 67647 - 67648 67840 67862 67866 67871 67872 68096 68097 68100 68101 68103 68108 - 68112 68116 68117 68120 68121 68148 68152 68155 68159 68160 68168 68176 - 68185 73728 74607 74752 74851 74864 74868 118784 119030 119040 119079 - 119082 119141 119143 119146 119149 119155 119163 119171 119173 119180 - 119210 119214 119262 119296 119362 119365 119366 119552 119639 119648 - 119666 119808 119834 119860 119886 119893 119894 119912 119938 119964 - 119966 119968 119970 119971 119973 119975 119977 119981 119982 119990 - 119994 119997 120004 120005 120016 120042 120068 120070 120071 120075 - 120077 120085 120086 120093 120094 120120 120122 120123 120127 120128 - 120133 120135 120138 120145 120146 120172 120198 120224 120250 120276 - 120302 120328 120354 120380 120406 120432 120458 120486 120488 120513 - 120514 120539 120540 120546 120571 120572 120597 120598 120604 120629 - 120630 120655 120656 120662 120687 120688 120713 120714 120720 120745 - 120746 120771 120772 120778 120780 120782 120832 131072 131073 173782 - 173783 194560 195102 917505 917506 917536 917632 917760 918000 983040 - 983041 1048573 1048574 1048576 1048577 1114109 1114110)) -(define unicode-categories-values-vector - '#(25 22 17 19 17 #(13 14 17 18 17 12) 17 8 17 18 17 0 #(13 17 14 20 11 20) 1 - #(13 18 14 18) 25 #(22 17) 19 21 #(20 21 1 15 18 26 21 20 21 18) 10 - #(20 1 21 17 20 10 1 16) 10 17 0 18 0 1 18 1 - #(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 - 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0) 1 #(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0) 1 - #(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 - 1 0 1 0 1 0 1 0 1) 0 #(1 0 1 0) 1 0 #(1 0 1) 0 1 0 1 0 1 0 1 0 1 0 1 0 - #(1 0 1 0 1) 0 #(1 0) 1 #(0 1) 0 1 0 #(1 0 1) 0 1 #(4 0) 1 4 - #(0 2 1 0 2 1 0 2 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0) 1 - #(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0) 1 #(0 2 1 0 1) 0 - #(1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0) 1 0 1 0 1 #(0 1) 0 - #(1 0 1 0 1 0 1 0) 1 4 1 3 20 3 20 3 20 3 20 5 29 20 29 3 1 17 29 20 - #(0 17) 0 #(29 0 29) 0 1 0 29 0 1 29 1 0 1 - #(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0) 1 #(0 1 18 0 1) 0 1 0 1 - #(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 21) 5 - 29 7 - #(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 - 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1) 0 #(1 0 1 0 1 0 1 0 1 0 1 0) 1 - #(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 - 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1) 29 0 29 3 - 17 29 1 #(29 17 12) 29 5 #(17 5 17) 5 17 5 #(17 5) 29 4 29 4 17 29 26 29 19 - 17 21 5 29 17 29 17 29 4 29 3 4 5 29 8 17 4 5 4 #(17 4) 5 #(26 7) 5 3 5 21 - 5 4 8 4 21 4 17 #(29 26 4 5) 4 5 29 4 29 4 5 4 29 8 4 5 3 21 17 3 29 5 6 4 - 29 #(5 4) 6 5 6 5 29 4 5 29 4 5 17 8 17 29 4 #(29 5) 6 29 4 29 4 29 4 29 4 - #(29 4) 29 4 29 #(5 4) 6 5 29 6 29 6 #(5 4) 29 6 29 4 29 4 5 29 8 4 19 10 - 21 29 5 #(6 29) 4 29 4 29 4 29 4 29 4 29 4 29 4 29 #(5 29) 6 5 29 5 29 5 29 - 4 #(29 4) 29 8 5 4 29 5 #(6 29) 4 29 4 29 4 29 4 29 4 29 4 29 #(5 4) 6 5 29 - 5 #(6 29) 6 5 29 4 29 4 5 29 8 #(29 19) 29 5 6 29 4 29 4 29 4 29 4 29 4 29 - 4 29 #(5 4 6 5 6) 5 29 6 29 6 5 29 #(5 6) 29 4 29 4 29 8 #(21 4) 29 - #(5 4 29) 4 29 4 29 4 29 4 #(29 4 29) 4 29 4 29 4 29 4 29 6 5 6 29 6 29 6 5 - 29 6 29 8 10 21 #(19 21) 29 6 29 4 29 4 29 4 29 4 29 4 29 5 6 29 5 29 5 29 - 5 29 4 29 8 29 6 29 4 29 4 29 4 29 4 29 4 29 #(5 4 6 5) 6 #(29 5) 6 29 6 5 - 29 6 29 #(4 29) 4 5 29 8 29 21 29 6 29 4 29 4 29 4 29 4 29 6 5 29 6 29 6 5 - 29 6 29 4 29 8 29 6 29 4 29 4 29 4 #(29 4) 29 4 29 5 29 6 5 #(29 5 29) 6 29 - 6 17 29 4 5 4 5 29 19 4 3 5 17 8 17 29 4 #(29 4) 29 4 #(29 4) 29 4 29 4 29 - 4 29 4 #(29 4 29 4) 29 4 29 4 5 4 5 29 5 4 29 4 #(29 3 29) 5 29 8 29 4 29 4 - 21 17 21 5 21 8 10 #(21 5 21 5 21 5 13 14 13 14) 6 4 29 4 29 5 6 5 17 5 4 - 29 5 29 5 29 21 5 21 29 21 17 29 4 29 4 29 4 #(29 6) 5 #(6 5) 29 5 #(6 5) - 29 8 17 4 6 5 29 0 29 4 #(17 3) 29 4 29 4 29 4 29 4 29 4 29 4 #(29 4 29) 4 - 29 4 29 4 29 4 29 4 29 4 #(29 4 29) 4 29 4 29 4 29 4 29 4 29 #(5 21) 17 10 - 29 4 21 29 4 29 4 17 4 29 22 4 #(13 14) 29 4 17 9 29 4 29 4 5 29 4 5 17 29 - 4 5 29 4 29 4 29 5 29 4 26 6 5 6 5 6 5 17 3 17 #(19 4 5) 29 8 29 10 29 17 - 12 17 5 #(22 29) 8 29 4 3 4 29 4 5 29 4 29 5 6 5 6 29 6 5 6 5 29 21 29 17 8 - 4 29 4 29 4 29 6 4 6 29 8 29 17 21 4 5 6 29 17 29 5 6 4 #(5 6) 5 #(6 5) 6 5 - 6 4 29 8 17 21 5 21 29 1 3 1 3 1 3 5 29 5 - #(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 - 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 - 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0) 1 29 - #(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 - 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1) 29 1 0 1 29 0 29 1 0 1 0 1 29 0 29 1 - #(29 0 29 0 29 0 29 0) 1 0 1 29 1 2 1 2 1 2 1 29 1 0 #(2 20 1) 20 1 29 1 0 - 2 20 1 29 1 0 29 20 1 0 20 29 1 29 1 0 2 20 29 22 26 12 17 #(15 16 13) 15 - #(16 13 15) 17 #(23 24) 26 22 17 #(15 16) 17 11 17 #(18 13 14) 17 - #(18 17 11) 17 22 26 29 26 #(10 1) 29 10 18 #(13 14 1) 10 18 #(13 14 29) 3 - 29 19 29 5 7 5 7 5 29 21 0 21 0 21 1 0 1 0 #(1 21 0) 21 0 21 - #(0 21 0 21 0 21) 0 #(21 1) 0 1 4 1 21 1 0 18 0 1 #(21 18) 21 1 29 10 9 - #(0 1) 29 18 21 18 21 18 21 18 21 18 21 18 21 18 21 #(18 21 18) 21 18 21 18 - 21 18 21 #(13 14) 21 18 21 18 21 18 21 29 21 29 21 29 10 21 10 21 18 21 18 - 21 18 21 18 21 29 21 29 21 29 21 29 21 29 21 #(29 21 29) 21 29 #(21 29) 21 - 29 21 #(13 14 13 14 13 14 13 14 13 14 13 14 13 14) 10 21 29 21 29 21 29 18 - #(13 14) 18 29 18 #(13 14 13 14 13 14) 29 18 21 18 - #(13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14) 18 - #(13 14 13 14) 18 #(13 14) 18 21 29 21 29 0 29 1 #(29 0 1) 0 1 - #(0 1 0 1 0 1) 29 #(1 0) 1 29 - #(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 - 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0) 1 21 29 17 10 17 1 29 - 4 29 3 29 4 29 4 29 4 29 4 29 4 29 4 29 4 29 4 29 4 29 17 #(15 16 15 16) 17 - #(15 16 17 15 16) 17 12 29 #(15 16) 29 21 29 21 29 21 29 21 29 22 17 - #(21 3 4 9 13 14 13 14 13 14 13 14 13 14) 21 - #(13 14 13 14 13 14 13 14 12 13) 14 21 9 5 12 3 21 9 #(3 4 17) 21 29 4 29 5 - 20 3 #(4 12) 4 17 3 4 29 4 29 4 29 21 10 21 4 29 21 29 4 21 29 10 21 29 21 - 10 21 10 21 10 21 29 21 4 29 4 29 21 4 29 4 29 4 3 4 29 21 29 20 3 29 20 29 - 4 6 4 5 4 5 4 6 5 6 21 29 4 17 29 4 29 4 29 27 29 27 29 27 29 #(27 28) 29 - 28 4 29 4 29 4 29 1 29 1 29 #(4 5) 4 18 4 29 4 #(29 4 29) 4 29 4 29 4 29 4 - #(13 14) 29 4 29 4 29 4 #(19 21) 29 5 17 #(13 14 17) 29 5 29 17 12 11 - #(13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14) 17 #(13 14) 17 11 17 29 - 17 #(12 13 14 13 14 13 14) 17 #(18 12) 18 #(29 17 19) 17 29 4 29 4 29 - #(26 29) 17 19 17 #(13 14 17 18 17 12) 17 8 17 18 17 0 #(13 17 14 20 11 20) - 1 #(13 18 14 18 13 14 17 13 14) 17 4 3 4 3 4 29 4 29 4 29 4 29 4 29 19 - #(18 20 21) 19 #(29 21) 18 21 29 26 21 29 4 29 4 29 4 29 4 29 4 29 4 29 4 - 29 17 21 29 10 29 21 9 10 21 10 29 4 29 10 29 4 9 4 9 29 4 #(29 17) 4 29 4 - 17 9 29 0 1 4 29 8 29 4 29 #(4 29) 4 29 4 29 4 29 4 29 4 10 29 17 29 4 5 29 - 5 29 5 4 29 4 29 4 29 5 29 5 10 29 17 29 4 29 9 29 17 29 21 29 21 29 21 6 5 - 21 6 26 5 21 5 21 5 21 29 21 5 21 29 21 29 10 29 0 1 0 1 29 1 0 1 #(0 29) 0 - 29 0 29 0 29 0 29 0 1 #(29 1 29) 1 29 1 0 1 0 29 0 29 0 29 0 29 1 0 29 0 29 - 0 #(29 0) 29 0 29 1 0 1 0 1 0 1 0 1 0 1 0 1 29 0 18 1 18 1 0 18 1 18 1 0 18 - 1 18 1 0 18 1 18 1 0 18 1 18 1 #(0 1) 29 8 29 4 29 4 29 4 29 26 29 26 29 5 - 29 28 29 28 29 28 29 28 29)) -(define unicode-categories-name-vector - '#(Lu Ll Lt Lm Lo Mn Mc Me Nd Nl No Pc Pd Ps Pe Pi Pf Po Sm Sc Sk So Zs Zl Zp - Cc Cf Cs Co Cn)) diff --git a/src/unicode/unicode-data.ss b/src/unicode/unicode-data.ss index 758045b..94a2c6d 100755 --- a/src/unicode/unicode-data.ss +++ b/src/unicode/unicode-data.ss @@ -21,6 +21,25 @@ [(or (fx= i n) (memv (string-ref str i) '(#\; #\#))) i] [else (find-semi/hash str (+ i 1) n)])) + (define (cleanup str) + (let ([lo + (let f ([i 0] [n (string-length str)]) + (cond + [(= i n) n] + [(char=? #\space (string-ref str i)) + (f (add1 i) n)] + [else i]))] + [hi + (let f ([i (sub1 (string-length str))]) + (cond + [(< i 0) i] + [(char=? #\space (string-ref str i)) + (f (sub1 i))] + [else i]))]) + (if (> hi lo) + (substring str lo (+ hi 1)) + ""))) + (define (split str) (let f ([i 0] [n (string-length str)]) (cond @@ -30,9 +49,9 @@ (let ([j (find-semi/hash str i n)]) (cond [(or (= j n) (memv (string-ref str i) '(#\#))) - (list (substring str i j))] + (list (cleanup (substring str i j)))] [else - (cons (substring str i j) + (cons (cleanup (substring str i j)) (f (+ j 1) n))]))]))) (define (extract-uni-data)