diff --git a/Makefile b/Makefile index 1210c94f..07c44743 100644 --- a/Makefile +++ b/Makefile @@ -197,8 +197,11 @@ lib/chibi/char-set/full.scm: build-lib/chibi/char-set/derived.scm chibi-scheme$( lib/chibi/show/width.scm: build-lib/chibi/char-set/width.scm chibi-scheme$(EXE) $(CHIBI) -Abuild-lib tools/optimize-char-sets.scm --predicate chibi.char-set.width > $@ -lib/scheme/char/case-offsets.scm: data/UnicodeData.txt chibi-scheme$(EXE) all-libs - $(CHIBI) tools/extract-case-offsets.scm $< > $@ +lib/scheme/char/case-offsets.scm: data/UnicodeData.txt data/CaseFolding.txt chibi-scheme$(EXE) all-libs + $(CHIBI) tools/extract-case-offsets.scm data/UnicodeData.txt data/CaseFolding.txt > $@ + +lib/scheme/char/special-casing.scm: data/CaseFolding.txt data/SpecialCasing.txt chibi-scheme$(EXE) all-libs + $(CHIBI) tools/extract-special-casing.scm data/CaseFolding.txt data/SpecialCasing.txt > $@ ######################################################################## # Tests diff --git a/lib/chibi/char-set/ascii.scm b/lib/chibi/char-set/ascii.scm index 8096ea07..123ec097 100644 --- a/lib/chibi/char-set/ascii.scm +++ b/lib/chibi/char-set/ascii.scm @@ -1,42 +1,42 @@ ;; char-set:lower-case -(define char-set:lower-case (immutable-char-set (%make-iset 97 122 #f #f #f))) +(define char-set:lower-case (immutable-char-set (%make-iset 97 127 67108863 #f #f))) ;; char-set:upper-case -(define char-set:upper-case (immutable-char-set (%make-iset 65 90 #f #f #f))) +(define char-set:upper-case (immutable-char-set (%make-iset 65 127 67108863 #f #f))) ;; char-set:title-case (define char-set:title-case (immutable-char-set (%make-iset 0 0 0 #f #f))) ;; char-set:letter -(define char-set:letter (immutable-char-set (%make-iset 97 122 #f (%make-iset 65 90 #f #f #f) #f))) +(define char-set:letter (immutable-char-set (%make-iset 65 127 288230371923853311 #f #f))) ;; char-set:punctuation -(define char-set:punctuation (immutable-char-set (%make-iset 63 64 #f (%make-iset 44 47 #f (%make-iset 37 42 #f (%make-iset 33 35 #f #f #f) #f) (%make-iset 58 59 #f #f #f)) (%make-iset 123 123 #f (%make-iset 95 95 #f (%make-iset 91 93 #f #f #f) #f) (%make-iset 125 125 #f #f #f))))) +(define char-set:punctuation (immutable-char-set (%make-iset 33 127 6189700203056200029306911735 #f #f))) ;; char-set:symbol -(define char-set:symbol (immutable-char-set (%make-iset 94 94 #f (%make-iset 43 43 #f (%make-iset 36 36 #f #f #f) (%make-iset 60 62 #f #f #f)) (%make-iset 124 124 #f (%make-iset 96 96 #f #f #f) (%make-iset 126 126 #f #f #f))))) +(define char-set:symbol (immutable-char-set (%make-iset 36 127 1547425050547877224499904641 #f #f))) ;; char-set:blank -(define char-set:blank (immutable-char-set (%make-iset 32 32 #f (%make-iset 9 9 #f #f #f) #f))) +(define char-set:blank (immutable-char-set (%make-iset 9 32 8388609 #f #f))) ;; char-set:whitespace -(define char-set:whitespace (immutable-char-set (%make-iset 32 32 #f (%make-iset 9 13 #f #f #f) #f))) +(define char-set:whitespace (immutable-char-set (%make-iset 9 127 8388639 #f #f))) ;; char-set:digit (define char-set:digit (immutable-char-set (%make-iset 48 57 #f #f #f))) ;; char-set:letter+digit -(define char-set:letter+digit (immutable-char-set (%make-iset 65 90 #f (%make-iset 48 57 #f #f #f) (%make-iset 97 122 #f #f #f)))) +(define char-set:letter+digit (immutable-char-set (%make-iset 48 127 37778931308803301180415 #f #f))) ;; char-set:hex-digit -(define char-set:hex-digit (immutable-char-set (%make-iset 65 70 #f (%make-iset 48 57 #f #f #f) (%make-iset 97 102 #f #f #f)))) +(define char-set:hex-digit (immutable-char-set (%make-iset 48 102 35465847073801215 #f #f))) ;; char-set:iso-control -(define char-set:iso-control (immutable-char-set (%make-iset 127 127 #f (%make-iset 0 31 #f #f #f) #f))) +(define char-set:iso-control (immutable-char-set (%make-iset 0 127 170141183460469231731687303720179073023 #f #f))) ;; char-set:graphic -(define char-set:graphic (immutable-char-set (%make-iset 33 126 #f #f #f))) +(define char-set:graphic (immutable-char-set (%make-iset 33 127 19807040628566084398385987583 #f #f))) ;; char-set:printing -(define char-set:printing (immutable-char-set (%make-iset 32 126 #f (%make-iset 9 13 #f #f #f) #f))) +(define char-set:printing (immutable-char-set (%make-iset 9 127 332306998946228968225951765061697567 #f #f))) diff --git a/lib/chibi/char-set/full.scm b/lib/chibi/char-set/full.scm index 8f6a693d..ad85e6df 100644 --- a/lib/chibi/char-set/full.scm +++ b/lib/chibi/char-set/full.scm @@ -1,20 +1,20 @@ ;; char-set:lower-case -(define char-set:lower-case (immutable-char-set (%make-iset 64256 64279 16253055 (%make-iset 11312 11565 14813245791101562895267998279354650425217582479237920755663472014512630005759 (%make-iset 7296 8580 353869376993705717983666309814247618351190174287678113276459176043923094227865988986914434975807859791714357516504109381611932394839876701874288198180298337191664934087293199631509530263991609647354664759117309216275933169802354453425934447010675612796307264925743345630387158608790178835119053596807714113213355697266571877429942286292795920673611252159132584840710559133279524688495103 (%make-iset 5112 5117 #f (%make-iset 97 1415 11443642469116873672215172198767169709318059615749161859229310781975531012446013434929130871498220907528004074052292415237567538784033280478395556085993633366140952946776035037285445263400255230507875144154570515268568252742874610097922565849826168132900690411482754651364064523989544957966778989369604184587777585454803471118927529105510296442652812382185669265672528581600981644034129051133149183 #f #f) #f) (%make-iset 9424 9449 #f #f #f)) (%make-iset 42787 43002 92148255209987538361124318164621041077755613642250439970855941461 (%make-iset 42561 42653 9078226948610564114271786325 #f #f) (%make-iset 43824 43967 22300745198530623141535699843909890212888575 #f #f))) (%make-iset 68800 68850 #f (%make-iset 66600 66639 #f (%make-iset 65345 65370 #f #f #f) (%make-iset 66776 66811 #f #f #f)) (%make-iset 119834 120779 444943340548964340940982866068660715456164728186757437058474177871977147067683376302316343027410373945633715465679204654161745979246848264691892028767797102719485080582973803125834121219760150486448398965912256998809341410059616155617458881261948177837849096551872892480552662288302079 (%make-iset 71872 71903 #f #f #f) (%make-iset 125218 125251 #f #f #f)))))) +(define char-set:lower-case (immutable-char-set (%make-iset 64256 64279 16253055 (%make-iset 9424 9449 #f (%make-iset 5112 5117 #f (%make-iset 4304 4351 255086697644031 (%make-iset 97 1416 22887284938264971141014337570129179755609992399777111528780675890296546513071386367119974077546410416721559693053691423771947703344694730376769202575254659187795822093995337104723444869821736322171885794863427640450815392440474344301956790374649495763021348229578900579095778939172095805392163251055446497310782080664548038554460621185826295668252739466996314711438475834770016901314285482341826559 #f #f) #f) (%make-iset 7296 8580 353869376993705717983666309814247618351190174287678113276459176043923094227865988986914434975807859791714357516504109381611932394839876701874288198180298337191664934087293199631509530263991609647354664759117309216275933169802354453425934447010675612796307264925743345630387158608790178835119053596807714113213355697266571877429942286292795920673611252159132584840710559133279524688495103 #f #f)) (%make-iset 42787 43002 95439264324630185868515314481687070934879806080682891417820165461 (%make-iset 42561 42653 9078226948610564114271786325 (%make-iset 11312 11565 14813245791101562895267998279354650425217582479237920755663472014512630005759 #f #f) #f) (%make-iset 43824 43967 22300745198530623141535699970010679779262463 #f #f))) (%make-iset 71872 71903 #f (%make-iset 66776 66811 #f (%make-iset 66600 66639 #f (%make-iset 65345 65370 #f #f #f) #f) (%make-iset 68800 68850 #f #f #f)) (%make-iset 119834 120779 444943340548964340940982866068660715456164728186757437058474177871977147067683376302316343027410373945633715465679204654161745979246848264691892028767797102719485080582973803125834121219760150486448398965912256998809341410059616155617458881261948177837849096551872892480552662288302079 (%make-iset 93792 93823 #f #f #f) (%make-iset 125218 125251 #f #f #f)))))) ;; char-set:upper-case -(define char-set:upper-case (immutable-char-set (%make-iset 42786 42934 532372216736633424396660427248670624795923797 (%make-iset 7680 8187 785638520274487101740880943033910323429537180842953092253950843167132795415686008267132284209196677306151002524092736330931731967175255188976147426006357 (%make-iset 4256 4301 36009005809663 (%make-iset 880 1366 399583814439235607743018433929276414122672359131438942585227326377434536714801543103782834684532481120859187908224234736290921166870036097089437765 (%make-iset 65 590 146697655316552278449038744596633924335560211931196454814958098841138186316207211745962752862798165970965843222598226754321060902474197038539022666396029943807 #f #f) #f) (%make-iset 5024 5109 #f #f #f)) (%make-iset 11264 11506 7343601899367384673242818461543219328086099067985129140121553034817830911 (%make-iset 9398 9423 #f (%make-iset 8450 8579 680566031896284520156124052577604718113 #f #f) #f) (%make-iset 42560 42650 1650586712898282464877040981 #f #f))) (%make-iset 71840 71871 #f (%make-iset 66736 66771 #f (%make-iset 66560 66599 #f (%make-iset 65313 65338 #f #f #f) #f) (%make-iset 68736 68786 #f #f #f)) (%make-iset 125184 125217 #f (%make-iset 119808 120778 9979201548835330983407821194518788858685384005950863288577259825767119409708821569492393868869389710160130617212357964177254210485259643182013052386309627039473266559202968869934463502548157012678634651947849515675211415254343522399366454253278991292965520319119131951761218093820825227493375 #f #f) (%make-iset 127280 127369 1237940021126866573113425919 #f #f)))))) +(define char-set:upper-case (immutable-char-set (%make-iset 42786 42997 3291009114642688429967820002509464820749822939213631915277227349 (%make-iset 7680 8187 785638520274487101740880943033910323429537180842953092253950843167132795415686008267132284209196677306151002524092736330931731967175255188976147426006357 (%make-iset 4256 4301 36009005809663 (%make-iset 880 1366 399583814439235607743018433929276414122672359131438942585227326377434536714801543103782834684532481120859187908224234736290921166870036097089437765 (%make-iset 65 590 146697655316552278449038744596633924335560211931196454814958098841138186316207211745962752862798165970965843222598226754321060902474197038539022666396029943807 #f #f) #f) (%make-iset 7312 7359 255086697644031 (%make-iset 5024 5109 #f #f #f) #f)) (%make-iset 11264 11506 7343601899367384673242818461543219328086099067985129140121553034817830911 (%make-iset 9398 9423 #f (%make-iset 8450 8579 680566031896284520156124052577604718113 #f #f) #f) (%make-iset 42560 42650 1650586712898282464877040981 #f #f))) (%make-iset 71840 71871 #f (%make-iset 66736 66771 #f (%make-iset 66560 66599 #f (%make-iset 65313 65338 #f #f #f) #f) (%make-iset 68736 68786 #f #f #f)) (%make-iset 125184 125217 #f (%make-iset 119808 120778 9979201548835330983407821194518788858685384005950863288577259825767119409708821569492393868869389710160130617212357964177254210485259643182013052386309627039473266559202968869934463502548157012678634651947849515675211415254343522399366454253278991292965520319119131951761218093820825227493375 (%make-iset 93760 93791 #f #f #f) #f) (%make-iset 127280 127369 1237940021126866573113425919 #f #f)))))) ;; char-set:title-case (define char-set:title-case (immutable-char-set (%make-iset 8072 8188 83076749736557537208897815481090303 (%make-iset 453 498 35184372088905 #f #f) #f))) ;; char-set:letter -(define char-set:letter (immutable-char-set (%make-iset 71840 71935 39614081275578912870481526783 (%make-iset 40960 42124 #f (%make-iset 9398 9449 #f (%make-iset 4348 4680 #f (%make-iset 248 705 #f (%make-iset 65 247 6129982162036307573327818073199315324831337964722192383 #f #f) (%make-iset 710 4347 701607511345343921325031293267326763426824502396082961530637227137669919481202718423074133871589228736158712292351850922375141418716855304595816956528472161211948966814424446017061973420453360757923483349307131509873184434215599253952077285389081472377420236594567569942089332718589703351477788822168398558360578525825034639230426142076112434920946735188682934045271365977660623231327290895145146900527462350571210709206895179958020080838484827723129044145236454474819337924722529329664497558285408812470604637117238407939062919804798655987325036493093178952549171925737834925384233512470723242439016397297819174936854498729808788720064381496749053562732745690385778489668613630594703403305599719242657315911625499887507339896556687311396902035941839765961791730894304801290255969229563577272463660314999065787835723644620432296752308251735474722423139460947132770123916523694755977247873654504896448133049036543201515468805100520665377021598543546815099481575393645077462987993612908420826545720571856918129332325207653678331352228908675761024037534274585574317423193800645935727293107844157439 #f #f)) (%make-iset 5121 5740 #f (%make-iset 4682 5120 175371358153141539868334697138091201974727802274027399498558092470023760163944801752101860757735502854323147826360646039096332869583 #f #f) (%make-iset 5743 8584 3367035357982338758268784949622510722982916612191244812161692820429431498581716593706634248384701102743990071526614800323777767740278248696525074079514063595020633018906444191487414743032272333744129304280152701119977616044923401668787129083479601456287183857518297935131388733746125291080234184827791547325211117363585662225920273183412115269430455150344496407374971081465561562339972714069231458841042901902567445069998088272133256748245398223160794809107578936943109483975349902997139395825512084928367614730323037704911724094706532794891990752153194931302371373262755401519421886750716114495987093212858592066664372503794678489422730730231510469672638768575709314479203749936702557400247089573146056272462752192960483837303899810859815213327362977103092765891571941426655190096747190065828114782509917091373507187037337332043939287364960116762931494911 #f #f))) (%make-iset 19894 19967 0 (%make-iset 12293 12799 418987604469675112210308215119212596280520439111988135530498955900174841866872033970495332863352529218181287230351520401429615780535935148566991159164935 (%make-iset 11264 11823 1886981212410784083928705666095883272632456313103710654885189572511501930284137370407319780920664817179896547747080111900838593355006827656846764529454777915054888058879 #f #f) (%make-iset 13312 19893 #f #f #f)) (%make-iset 40918 40959 0 (%make-iset 19968 40917 #f #f #f) #f))) (%make-iset 64848 65908 24707306311927562973795307731929743709876635468550316716286562646635209317018505901886645743090075701165699335868370569943297768343227044512391661031435599163201783518292129339643124256032593358050626073246121036551216466234902521295499597808381385809829803642306045788839544115843261035043556920140009003018915969761279 (%make-iset 63744 64109 #f (%make-iset 44032 55203 #f (%make-iset 42192 44031 37459511778596727480858760720167552238063399379388723347880160336545287363545396768226153516509113619081760244047068500151913570504618907654561086048760641320099660982698748012206564745402830737513404158794025650280420385112085273360772418313677739531928932841761210623650359199667599552173120307427040143500955001484950685445381667109293280144057440997112012630007193533163283444712406034752037843364095563764310585894557069418011860052262366192001718669755397618286042568992114658745394434367427755998365345369120015015576422268695704481350811647 #f #f) (%make-iset 55216 55291 75557863725914197590015 #f #f)) (%make-iset 64467 64829 #f (%make-iset 64112 64466 8543948143683640329580086824678193390956197043536818577375087558533063846144990195973890412380159 #f #f) #f)) (%make-iset 69632 70499 1952917402390585718352743347767493422588001296703758689800517381097191547935533638696334024208121867601514922823732049172973002308575295865936242717035652575996991015617086895132081900617564557133373879982686988775273291587944525729522914602467168898506555391999 (%make-iset 67072 67431 2339377547286709837873638165922360609460209085825506813695393791198559449985557282922321722445852588225069055 (%make-iset 66176 66915 5783580587434428154555364829985543440241851299287575309621253419388298741108011764505350721575533745177520690683316465295070463038815470211559473797447776255685878443766814763847801056957245600313545816403865922261881978879 #f #f) (%make-iset 67584 68850 2540999070962986928818132558752405884059538599802432110676570286437587469981851766055600992664054335993764638025217723629426317800686967235291345767082946292983675134814339469164148668003093586121352544682785487708395321572881174795835827275505550854643503165906055297329453815092181396926006622533576506855315472674631932206179778552330860687242134809853463119361477796999813135679 #f #f)) (%make-iset 71040 71466 346565202197936328480334724910048268386264135243562628829698659578899955015143336133466432421969414698987069356430457275091517439 (%make-iset 70656 70855 1129878312369602537490101813810459016471485158662039356309503 #f #f) #f)))) (%make-iset 113664 113822 388189245597642319451802680075071113378809249791 (%make-iset 92160 92728 #f (%make-iset 74752 75075 34175792574734561318320347298712833833643272357706444319152325445384743103294199240025209787383807 (%make-iset 72704 72886 12259590182441051920103355017026551662798901302448356863 (%make-iset 72384 72440 #f #f #f) (%make-iset 73728 74649 #f #f #f)) (%make-iset 82944 83526 #f (%make-iset 77824 78894 #f #f #f) #f)) (%make-iset 100333 100351 0 (%make-iset 93952 94207 26959946667150639796128338318559086530316164992906837813312910000127 (%make-iset 92736 93071 139983787731428653526245311327725776889980832813553458425955913262039589765056085324578801157197004799 #f #f) (%make-iset 94208 100332 #f #f #f)) (%make-iset 110592 110593 #f (%make-iset 100352 101106 #f #f #f) #f))) (%make-iset 127280 127369 1237940021126866573113425919 (%make-iset 122880 122922 8641373536127 (%make-iset 120146 120485 #f (%make-iset 119808 120145 277984795434575462634999469953131284498641899033547154778380155978829522737042218261318709224765652991 #f #f) (%make-iset 120488 120779 7941630431187196263390207990109633018430881962027637362032835744559633884717312603324415 #f #f)) (%make-iset 126464 126651 392317335668304952608886359756720284316824500695881220079 (%make-iset 124928 125255 307582133172611051864767333599178188307566747489881684748963466803276645273688056993521476493639679 #f #f) #f)) (%make-iset 177984 178207 6739986666787659948666753771754907668409286105635143120275902562303 (%make-iset 173783 173823 0 (%make-iset 131072 173782 #f #f #f) (%make-iset 173824 177972 #f #f #f)) (%make-iset 194560 195101 #f (%make-iset 178208 183969 #f #f #f) #f))))))) +(define char-set:letter (immutable-char-set (%make-iset 73728 74649 #f (%make-iset 44032 55203 #f (%make-iset 11264 11823 1886981212410784083928705666095883272632456313103710654885189572511501930284137370407319780920664817179896547747080111900838593355006827656846764529454777915054888058879 (%make-iset 4682 5120 175371358153141539868334697138091201974727802273784565887029876336158827425591861888771559902853985414166671275143283003445681807311 (%make-iset 710 4347 701607511345343921325031293280613295650363563584047519978490729359383077358884297550410308932270036416365768425677842382207322276287293659713177006227413612894587944924061823803906564559484667579925882867323561215321797968201943303393297853835679525560301154693380732024352514516646010125756963940775342237201353991829475787525337686827954407680805444296780523762057963137841378308027556874860821117801947295487165311713463777236520827639127339456080232314140432322994795399634425232687070095724698726984961548522873167285006463326215490150101100618504607995951410883161833051248149619166626455122820960241782396673158691992696607860025522306930417464131556922762792263471898532562125178042450781343251780404645472930242099490273526189375829842090820138753430860705557278357284053426278588683671793447768339721468940834067458756347114577234723722062630640575347016805880063763446477961429397827834853726802723865207765578343120520076069361948623471138480543509102294810113204259795824992525112720505293417369213971871396716915330186157421611383906399146133147628778972410167575791541393188458495 (%make-iset 248 705 #f (%make-iset 65 247 6129982162036307573327818073199315324831337964722192383 #f #f) #f) (%make-iset 4348 4680 #f #f #f)) (%make-iset 5743 8584 3367035357982338758268784949622510722982916612191244812161692820429431498581716593706634248384701102743990071526614800323777767740278248696525074079514063595020633018906444191487414743032272333744129304280152701119977616044923401668787129083479601456287183857518297935131388733746125291080234184827791547325211117363585662225920273183412115269430455152024239009925530804779327888691801682756235662479545761917359070480326189336127760678095859475917639050900757900684843609350343765609140046845435360248523208026904525955921437514939898590483829713806373594248687114412525927744074092335234180060489844018346640805554108473580318380863968226764585569120529898833132830545680610499629611893918690501961111799203658376893592897111788504412409743756134575645529801120357162841972255362273756553344620624601478535302888338174841229784041774449902080905195683839 (%make-iset 5121 5740 #f #f #f) (%make-iset 9398 9449 #f #f #f))) (%make-iset 19968 40956 #f (%make-iset 13312 19903 #f (%make-iset 12293 12799 418987604469675112232312121811755383006134734077347647800970521294245813332857242272920100715614784556927171741920066081763180938618621305852994894430215 #f #f) (%make-iset 19904 19967 0 #f #f)) (%make-iset 40960 42124 #f (%make-iset 40957 40959 0 #f #f) (%make-iset 42192 44031 37459511778596727480858760720167552238115001072139076542418113902677615115541885077928706295080038689350262401791311326449803427934415799670666025777339054315082570400533199907124236605223126960129700591011011954076661863729617875052837157583863503193178741006770284923346852998869657639429210156471214495795242910940362361587072383117763669927655024071278293749186899816268439854840270815702956921293895118585212038793225737641646132394620269432753279682332107877633567799287280136873047541948794844979664017035633388359770146648212238509285572607 #f #f)))) (%make-iset 67584 68903 22887284938254565749818744109383247949406967978307322349652263199852865228419417869730462952756096116221174605317764324377581230307880994958071799805856727308232796094333200600513577145799338614078042970309408534034848202935840583244996219449338508685150725537482981115643930082246807415866882383094211475269967982871416244918568287190458887553578663656428702320234122561042399762605982220531268927 (%make-iset 64467 64829 #f (%make-iset 63744 64109 #f (%make-iset 55216 55291 75557863725914197590015 #f #f) (%make-iset 64112 64466 8543948143683640329580086824678193390956197043536818577375087558533063846144990195973890412380159 #f #f)) (%make-iset 66176 66915 5783580587434428154555364829985543440241851299287575309621253419388298741108011764505350721575533745177520690683316465295070463038815470211559473797447776255685878443766898572197692160254187072416593098937345072057626394623 (%make-iset 64848 65908 24707306311927562973795307731929743709876635468550316716286562646635209317018505901886645743090075701165699335868370569943297768343227044512391661031435599163201783518292129339643124256032593358050626073246121036551216466234902521295499597808381385809829803642306045788839544115843261035043556920140009003018915969761279 #f #f) (%make-iset 67072 67431 2339377547286709837873638165922360609460209085825506813695393791198559449985557282922321722445852588225069055 #f #f))) (%make-iset 71680 72440 12129047596099288471689227831365311804146276076693352780019511307249129439735396723377194758471270365058665007119634759274170402554101182525962969347665090539000269657825686093903031244286834770249713375934826821970310148277665791 (%make-iset 70656 70855 1129878312369602537490101813810736315040285083843616760135679 (%make-iset 69248 70499 76948863590040469005144971740262077915138709871707804427711938909307679261270041663803351594606286294848609693580364667132017133774916458246925566432697057953241079384431833825622986657155549747901766097222088554076441369092143700337545607987940217487707717889589239882856842941820124069730022246919097465694185004383876577265794553266861112191605356870609308102150475588042751 #f #f) (%make-iset 71040 71466 346567846421811489474730532571280407814122807928349495310129337898894000305122821834524615784442454115672263551905705895720386559 #f #f)) (%make-iset 73440 73462 #f (%make-iset 72704 73112 979963828733976516379616055801500234789666513031835840361074903439886793726136230135343017269202321545632968341499542502911 #f #f) (%make-iset 73648 73727 1 #f #f))))) (%make-iset 120488 120779 7941630431187196263390207990109633018430881962027637362032835744559633884717312603324415 (%make-iset 100344 100351 0 (%make-iset 92736 93071 139983787731428653526245311103336199663126022956474675831605261751949134861852477643134813593034293247 (%make-iset 82944 83526 #f (%make-iset 77824 78894 #f (%make-iset 74752 75075 34175792574734561318320347298712833833643272357706444319152325445384743103294199240025209787383807 #f #f) #f) (%make-iset 92160 92728 #f #f #f)) (%make-iset 93952 94207 5300837753748491645787635300885286834009446351575649617730364394006642687 (%make-iset 93760 93823 #f #f #f) (%make-iset 94208 100343 #f #f #f))) (%make-iset 110960 111355 #f (%make-iset 101632 101640 #f (%make-iset 100352 101589 #f #f #f) (%make-iset 110592 110959 2201759651238793353935978839989206105180151758945528329367307032632076306562609289056077994868130232108318719 #f #f)) (%make-iset 119808 120145 277984795434575462634999469953131284498641899033547154778380155978829522737042218261318709224765652991 (%make-iset 113664 113822 388189245597642319451802680075071113378809249791 #f #f) (%make-iset 120146 120485 #f #f #f)))) (%make-iset 173790 173823 0 (%make-iset 124928 125259 4682083582738634900609771787834420919013905609276306557600504679623182643672439903440547830539747327 (%make-iset 123136 123214 302236030596063074189311 (%make-iset 122880 122922 8641373536127 #f #f) (%make-iset 123584 123627 #f #f #f)) (%make-iset 127280 127369 1237940021126866573113425919 (%make-iset 126464 126651 392317335668304952608886359756720284316824500695881220079 #f #f) (%make-iset 131072 173789 #f #f #f))) (%make-iset 183970 183983 0 (%make-iset 177984 178207 6739986666787659948666753771754907668409286105635143120275902562303 (%make-iset 173824 177972 #f #f #f) (%make-iset 178208 183969 #f #f #f)) (%make-iset 194560 195101 #f (%make-iset 183984 191456 #f #f #f) (%make-iset 196608 201546 #f #f #f)))))))) ;; char-set:punctuation -(define char-set:punctuation (immutable-char-set (%make-iset 12289 12539 1809251394333065553493296641491499378872794969502476229475819322195851214727 (%make-iset 6100 6154 36011204832919671 (%make-iset 3572 3675 15214283082817323578510236712961 (%make-iset 2039 2142 10141204806548057579655195000839 (%make-iset 894 903 513 (%make-iset 33 191 390352614522577604377617624462440613025570388983 #f #f) (%make-iset 1370 1805 177440029682739492195629626423414285791075425806584367987188710887245779556727828964224741026149370230681856791701409903272452423743 #f #f)) (%make-iset 2800 2800 #f (%make-iset 2404 2416 4099 #f #f) #f)) (%make-iset 4960 4968 #f (%make-iset 4347 4347 #f (%make-iset 3844 4175 8612299728833109452216727519275634166367255279803428156814546022481552546661143084834195942383124479 #f #f) #f) (%make-iset 5741 5942 4820814132776970826626481771165599449877669887122490332807171 (%make-iset 5120 5120 #f #f #f) #f))) (%make-iset 8208 8334 127607834706674478748244504138880122879 (%make-iset 6816 6829 16255 (%make-iset 6686 6687 #f (%make-iset 6468 6469 #f #f #f) #f) (%make-iset 7164 7379 52681756409358971006475467946070306489686807156907791211684691983 (%make-iset 7002 7008 #f #f #f) #f)) (%make-iset 10627 10749 7975367975289779630837864365545226239 (%make-iset 10088 10223 87027215340059722591700904977272299077631 (%make-iset 8968 9002 25769803791 #f #f) #f) (%make-iset 11776 11844 590295669621217296383 (%make-iset 11513 11632 664613997892457936451903530140172399 #f #f) #f)))) (%make-iset 68176 68508 16404380435872589432793766705135203812233573933707706872919585037667841040900352577131267021439238655 (%make-iset 65281 65381 2521683860030948918624327334903 (%make-iset 44011 44011 #f (%make-iset 42509 42743 54351252480975689826048702415431575448442147475312362296571857733681159 (%make-iset 42238 42239 #f #f #f) (%make-iset 43124 43761 855460879115989469712274024898745681784726670116734735081144902996232559536857409148837563689361766642268455105314774829212585106777411750165469842705887573520069114837090257203067989633531919 #f #f)) (%make-iset 65040 65131 4037812089938908849547248639 (%make-iset 64830 64831 #f #f #f) #f)) (%make-iset 66927 66927 #f (%make-iset 66463 66512 562949953421313 (%make-iset 65792 65794 #f #f #f) #f) (%make-iset 67871 67903 4294967297 (%make-iset 67671 67671 #f #f #f) #f))) (%make-iset 74864 74868 #f (%make-iset 71105 71276 5985579955691094878071637801633780729252894115627007 (%make-iset 70731 70854 10633823966279326983230456482243084319 (%make-iset 69703 70313 4249103942534136789516705652419774796587782123933481739464416821113322711213107435278494029578275251536770596841453694727564346274744083566942716451616402907664154915916774567875444863 #f #f) #f) (%make-iset 72769 72817 422212465066015 (%make-iset 71484 71486 #f #f #f) #f)) (%make-iset 113823 113823 #f (%make-iset 92917 92996 606750306072454571753473 (%make-iset 92782 92783 #f #f #f) #f) (%make-iset 125278 125279 #f (%make-iset 121479 121483 #f #f #f) #f))))))) +(define char-set:punctuation (immutable-char-set (%make-iset 44011 44011 #f (%make-iset 6468 6469 #f (%make-iset 3572 3675 15214283082817323578510236712961 (%make-iset 2039 2142 10141204806548057579655195000839 (%make-iset 894 903 513 (%make-iset 33 191 390352614522577604377617624462440613025570388983 #f #f) (%make-iset 1370 1805 177440029682739492195629626423414285791075425806584367987188710887245779556727828964224741026149370230681856791701409903272452423743 #f #f)) (%make-iset 2557 2800 14134776518227074636666380005943348129278327166574783410780463730901647361 (%make-iset 2404 2416 4099 #f #f) (%make-iset 3191 3204 8193 #f #f))) (%make-iset 5120 5120 #f (%make-iset 4347 4347 #f (%make-iset 3844 4175 8612299728833109452216727519275634166367255279803428156814546022481552546661143084834195942383124479 #f #f) (%make-iset 4960 4968 #f #f #f)) (%make-iset 6100 6154 36011204832919671 (%make-iset 5742 5942 2410407066388485413313240885582799724938834943561245166403585 #f #f) #f))) (%make-iset 10627 10749 7975367975289779630837864365545226239 (%make-iset 7164 7379 52681756409358971006475467946070306489686807156907791211684691983 (%make-iset 6816 6829 16255 (%make-iset 6686 6687 #f #f #f) (%make-iset 7002 7008 #f #f #f)) (%make-iset 8968 9002 25769803791 (%make-iset 8208 8334 127607834706674478748244504138880122879 #f #f) (%make-iset 10088 10223 87027215340059722591700904977272299077631 #f #f))) (%make-iset 42238 42239 #f (%make-iset 11776 11858 6044629097932408385175551 (%make-iset 11513 11632 664613997892457936451903530140172399 #f #f) (%make-iset 12289 12539 1809251394333065553493296641491499378872794969502476229475819322195851214727 #f #f)) (%make-iset 43124 43761 855460879115989469712274024898745681784726670116734735081144902996232559536857409148837563689361766642268455105314774829212585106777411750165469842705887573520069114837090257203067989633531919 (%make-iset 42509 42743 54351252480975689826048702415431575448442147475312362296571857733681159 #f #f) #f)))) (%make-iset 71484 71486 #f (%make-iset 67871 67903 4294967297 (%make-iset 65792 65794 #f (%make-iset 65040 65131 4037812089938908849547248639 (%make-iset 64830 64831 #f #f #f) (%make-iset 65281 65381 2521683860030948918624327334903 #f #f)) (%make-iset 66927 66927 #f (%make-iset 66463 66512 562949953421313 #f #f) (%make-iset 67671 67671 #f #f #f))) (%make-iset 69703 70313 4249103942534136789516705652419774796587782123933481739464416821113165103188321857361644913417874677081550277884371832940892553101127100679856727609170745842644615253353548055914217599 (%make-iset 69293 69293 #f (%make-iset 68176 68508 16404380435872589432793766705135203812233573933707706872919585037667841040900352577131267021439238655 #f #f) (%make-iset 69461 69465 #f #f #f)) (%make-iset 71105 71276 5985579955691094878071637801633780729252894115627007 (%make-iset 70731 70854 10633823966279326983230456482243117087 #f #f) #f))) (%make-iset 92782 92783 #f (%make-iset 72769 72817 422212465066015 (%make-iset 72004 72006 #f (%make-iset 71739 71739 #f #f #f) (%make-iset 72162 72354 12333524112888673532067976877031085989905788216127843729409 #f #f)) (%make-iset 73727 73727 #f (%make-iset 73463 73464 #f #f #f) (%make-iset 74864 74868 #f #f #f))) (%make-iset 113823 113823 #f (%make-iset 93847 93850 #f (%make-iset 92917 92996 606750306072454571753473 #f #f) (%make-iset 94178 94178 #f #f #f)) (%make-iset 125278 125279 #f (%make-iset 121479 121483 #f #f #f) #f))))))) ;; char-set:symbol -(define char-set:symbol (immutable-char-set (%make-iset 11493 11498 #f (%make-iset 4254 4255 #f (%make-iset 2801 2928 170141183460469231731687303715884105729 (%make-iset 1421 1551 2145373985196854218866744595292476145671 (%make-iset 706 1014 521481209941628438084722096232800884555162981189081790621504207040293760564100563907364454415 (%make-iset 36 247 3291009115408659855127328282852688335858940725263447471358476417 #f #f) (%make-iset 1154 1154 #f #f #f)) (%make-iset 2038 2038 #f (%make-iset 1758 1790 6442452993 #f #f) (%make-iset 2546 2555 771 #f #f))) (%make-iset 3647 3647 #f (%make-iset 3199 3199 #f (%make-iset 3059 3066 #f #f #f) (%make-iset 3407 3449 4398046511105 #f #f)) (%make-iset 4030 4056 126058239 (%make-iset 3841 3896 47287798208921607 #f #f) #f))) (%make-iset 8972 9471 780437137578998057845396725198413489528559879748138256739680964964447323310207955095392059688393657165419751583253290221634385138896826389233663 (%make-iset 6622 6655 #f (%make-iset 6107 6107 #f (%make-iset 5008 5017 #f #f #f) (%make-iset 6464 6464 #f #f #f)) (%make-iset 8125 8591 17862788488288834957320686410958146518834882629703662689457631505354787230474029798455655432880054833242371377625013310614695429757724983325 (%make-iset 7009 7036 267912191 #f #f) (%make-iset 8592 8967 #f #f #f))) (%make-iset 10649 10749 633825299975764120195529965567 (%make-iset 10132 10223 4835703276769666838560767 (%make-iset 9472 10087 #f #f #f) (%make-iset 10224 10626 #f #f #f)) (%make-iset 11126 11247 4984604989135521207938544273895456767 (%make-iset 10750 11123 #f #f #f) #f)))) (%make-iset 67703 67704 #f (%make-iset 43867 43867 #f (%make-iset 42128 42182 #f (%make-iset 12688 13311 69617318994479297159441705409245167921344429126717528237597542082203295398081324546856912446254930486095298280322182798349727829705428544765389292305236390473386649029915063404331301666755 (%make-iset 11904 12444 5398696553451835659372646209770436684359687811328183845267792257295023176452092420475003921481315786487896126398670762818211597324224996310509463898345534476255231 #f #f) (%make-iset 19904 19967 #f #f #f)) (%make-iset 43048 43065 245775 (%make-iset 42752 42890 522673715590561479879743397015208866086911 #f #f) (%make-iset 43639 43641 #f #f #f))) (%make-iset 65284 65374 1547425050547877224499904641 (%make-iset 64434 64449 #f (%make-iset 64297 64297 #f #f #f) (%make-iset 65020 65129 796084576943328064139929612976131 #f #f)) (%make-iset 65847 66044 401734511064736150903948875449341966251251673063031299899903 (%make-iset 65504 65533 805339007 #f #f) #f))) (%make-iset 120513 120831 463168363851011130091785795673740600836767278013411671357985905734243019915265 (%make-iset 113820 113820 #f (%make-iset 71487 71487 #f (%make-iset 68296 68296 #f #f #f) (%make-iset 92988 92997 527 #f #f)) (%make-iset 119552 119638 #f (%make-iset 118784 119365 8903894453031763226164682950375691501926942562513420334034182902046561102655861722202313153585672295538116768616297201430994412729251427960653880031895069202084170385141530623 #f #f) #f)) (%make-iset 126976 127569 48753536866126984717626988384245919885836326665607240725343075944210693215186630012426450513064798905869735309540395113968289839759134932987304558966714824542769068304351199494143 (%make-iset 121399 121478 1057805462462383590998031 (%make-iset 120832 121343 #f #f #f) (%make-iset 126704 126705 #f #f #f)) (%make-iset 128736 129472 361473786714656976441356754395347316832407688129084625185426525121473251170914082475149884300284363294703647064981963487321300512898504300348234909211350823127413425310482754243670403431812501079424098560469472000746659839 (%make-iset 127744 128722 #f #f #f) #f))))))) +(define char-set:symbol (immutable-char-set (%make-iset 12688 12991 994646472817765799763495797754640258220159467383567101207357820271567867180691654508483 (%make-iset 5741 5741 #f (%make-iset 3059 3066 #f (%make-iset 1758 1790 6442452993 (%make-iset 1154 1154 #f (%make-iset 706 1014 521481209941628438084722096232800884555162981189081790621504207040293760564100563907364454415 (%make-iset 36 247 3291009115408659855127328282852688335858940725263447471358476417 #f #f) #f) (%make-iset 1421 1551 2145373985196854218866744595292476145671 #f #f)) (%make-iset 2546 2555 771 (%make-iset 2038 2047 769 #f #f) (%make-iset 2801 2928 170141183460469231731687303715884105729 #f #f))) (%make-iset 3841 3896 47287798208921607 (%make-iset 3407 3449 4398046511105 (%make-iset 3199 3199 #f #f #f) (%make-iset 3647 3647 #f #f #f)) (%make-iset 4254 4255 #f (%make-iset 4030 4056 126058239 #f #f) (%make-iset 5008 5017 #f #f #f)))) (%make-iset 9472 10087 #f (%make-iset 7009 7036 267912191 (%make-iset 6464 6464 #f (%make-iset 6107 6107 #f #f #f) (%make-iset 6622 6655 #f #f #f)) (%make-iset 8592 8967 #f (%make-iset 8125 8591 17862788488288834957320686410958146518834882629703662689457631968523144179738811492739595467631686246322310040187269468445031461410243543069 #f #f) (%make-iset 8972 9471 780437137578998057845396725198413489528559879748138256739680964964447337444984473322466696354773663108767878203124465226586050111746436730191871 #f #f))) (%make-iset 10750 11123 #f (%make-iset 10224 10626 #f (%make-iset 10132 10223 4835703276769666838560767 #f #f) (%make-iset 10649 10749 633825299975764120195529965567 #f #f)) (%make-iset 11493 11498 #f (%make-iset 11126 11263 348449143727040986586495598010126353563647 #f #f) (%make-iset 11856 12444 1519597986650754257267727489298751896090282154421411377217581357937730647911548469687721828563943632274327638030901128998131571341096875963145178876601089332553757864357093441539 #f #f))))) (%make-iset 71487 71487 #f (%make-iset 64297 64297 #f (%make-iset 42752 42890 522673715590561479879743397015208866086911 (%make-iset 19904 19967 #f (%make-iset 12992 13311 #f #f #f) (%make-iset 42128 42182 #f #f #f)) (%make-iset 43639 43641 #f (%make-iset 43048 43065 245775 #f #f) (%make-iset 43867 43883 98305 #f #f))) (%make-iset 65504 65533 805339007 (%make-iset 65020 65129 796084576943328064139929612976131 (%make-iset 64434 64449 #f #f #f) (%make-iset 65284 65374 1547425050547877224499904641 #f #f)) (%make-iset 67703 67704 #f (%make-iset 65847 66044 401734511064736150903948875451877267451708131866024706310655 #f #f) (%make-iset 68296 68296 #f #f #f)))) (%make-iset 121399 121478 1057805462462383590998031 (%make-iset 118784 119365 8903894453031763226164682950375691501926942562513420334034182902046561102655861722202313153585672295538116768616297201430994412729251427960653880031895069202084170385141530623 (%make-iset 92988 92997 527 (%make-iset 73685 73713 #f #f #f) (%make-iset 113820 113820 #f #f #f)) (%make-iset 120513 120831 463168363851011130091785795673740600836767278013411671357985905734243019915265 (%make-iset 119552 119638 #f #f #f) (%make-iset 120832 121343 #f #f #f))) (%make-iset 126704 126705 #f (%make-iset 123647 123647 #f (%make-iset 123215 123215 #f #f #f) (%make-iset 126124 126254 1361129467683753853853498429727072845841 #f #f)) (%make-iset 127744 128727 #f (%make-iset 126976 127589 66923435848449520561872831652599431289448618669932687931757021603387200183513455083701749538297393227813626429413144495791734667559393462525515277714480404638844354082830588746888380415 #f #f) (%make-iset 128736 129994 9925777620949171960340658008280684297457039992464063994099317723966361011338590828312964124827475737928311999622519470623485876432710514825865764706522442988059718235454884809834410270926503441573806780806285385447513658060201828304459750125262505360366372605107841440375991737220680591608098201303438673867062542425370103497325051563265419116747628212365759869081739546347905023 #f #f)))))))) ;; char-set:blank (define char-set:blank (immutable-char-set (%make-iset 5760 5760 #f (%make-iset 160 160 #f (%make-iset 9 32 8388609 #f #f) #f) (%make-iset 12288 12288 #f (%make-iset 8192 8287 39614081257132309534260332543 #f #f) #f)))) @@ -23,10 +23,10 @@ (define char-set:whitespace (immutable-char-set (%make-iset 5760 5760 #f (%make-iset 160 160 #f (%make-iset 9 133 21267647932558653966460912964493901855 #f #f) #f) (%make-iset 12288 12288 #f (%make-iset 8192 8287 39614081257132312832795215871 #f #f) #f)))) ;; char-set:digit -(define char-set:digit (immutable-char-set (%make-iset 44016 44025 #f (%make-iset 6470 6479 #f (%make-iset 1984 1993 #f (%make-iset 1632 1641 #f (%make-iset 48 57 #f #f #f) (%make-iset 1776 1785 #f #f #f)) (%make-iset 4160 4249 1236731113465765645724419071 (%make-iset 2406 3881 2088571161670495152870603613773632013905882285922748744142705593254390818318357331195163165688762717573196191694721634141284507822074404237950632351194253443338221100251829324587958567340176572531256437724477962020286729316609007823056573991956917606602799969471953511414751680873262969402052815928736994258639922750546801548893686346998208607418105240981129887982908516154418831792397178702030090099899895596423897954730407437607496771843392511 #f #f) (%make-iset 6112 6169 287948901175002111 #f #f))) (%make-iset 7232 7257 67044351 (%make-iset 6784 6809 67044351 (%make-iset 6608 6617 #f #f #f) (%make-iset 6992 7097 81050410252092417358195461194751 #f #f)) (%make-iset 43216 43273 287948901175002111 (%make-iset 42528 42537 #f #f #f) (%make-iset 43472 43609 348108861360120048123032223407092631864319 #f #f)))) (%make-iset 71248 71481 27580025440495104509944356434021087490850485025387669634866738077107199 (%make-iset 69872 69951 1207745227993911763403775 (%make-iset 66720 66729 #f (%make-iset 65296 65305 #f #f #f) (%make-iset 69734 69743 #f #f #f)) (%make-iset 70384 70393 #f (%make-iset 70096 70105 #f #f #f) (%make-iset 70736 70873 348108861360120048123032223402698880320511 #f #f))) (%make-iset 93008 93017 #f (%make-iset 72784 72793 #f (%make-iset 71904 71913 #f #f #f) (%make-iset 92768 92777 #f #f #f)) (%make-iset 125264 125273 #f (%make-iset 120782 120831 #f #f #f) #f)))))) +(define char-set:digit (immutable-char-set (%make-iset 66720 66729 #f (%make-iset 6608 6617 #f (%make-iset 2406 3881 2088571161670495152870603613773632013905882285922748744142705593254390818318357331195163165688762717573196191694721634141284507822074404237950632351194253443338221100251829324587958567340176572531256437724477962020286729316609007823056573991956917606602799969471953511414751680873262969402052815928736994258639922750546801548893686346998208607418105240981129887982908516154418831792397178702030090099899895596423897954730407437607496771843392511 (%make-iset 1776 1785 #f (%make-iset 1632 1641 #f (%make-iset 48 57 #f #f #f) #f) (%make-iset 1984 1993 #f #f #f)) (%make-iset 6112 6169 287948901175002111 (%make-iset 4160 4249 1236731113465765645724419071 #f #f) (%make-iset 6470 6479 #f #f #f))) (%make-iset 43216 43273 287948901175002111 (%make-iset 7232 7257 67044351 (%make-iset 6992 7097 81050410252092417358195461194751 (%make-iset 6784 6809 67044351 #f #f) #f) (%make-iset 42528 42537 #f #f #f)) (%make-iset 44016 44025 #f (%make-iset 43472 43609 348108861360120048123032223407092631864319 #f #f) (%make-iset 65296 65305 #f #f #f)))) (%make-iset 72784 72793 #f (%make-iset 70384 70393 #f (%make-iset 69872 69951 1207745227993911763403775 (%make-iset 69734 69743 #f (%make-iset 68912 68921 #f #f #f) #f) (%make-iset 70096 70105 #f #f #f)) (%make-iset 71248 71481 27580025440495104509944356434021087490850485025387669634866738077107199 (%make-iset 70736 70873 348108861360120048123032223402698880320511 #f #f) (%make-iset 71904 72025 5311719686281128663986697744792159231 #f #f))) (%make-iset 123200 123209 #f (%make-iset 93008 93017 #f (%make-iset 92768 92777 #f (%make-iset 73040 73129 1236731113465765645724419071 #f #f) #f) (%make-iset 120782 120831 #f #f #f)) (%make-iset 125264 125273 #f (%make-iset 123632 123641 #f #f #f) (%make-iset 130032 130041 #f #f #f))))))) ;; char-set:letter+digit -(define char-set:letter+digit (immutable-char-set (%make-iset 71467 71481 32736 (%make-iset 40960 42124 #f (%make-iset 9398 9449 #f (%make-iset 4348 4680 #f (%make-iset 248 705 #f (%make-iset 48 247 803469021942422906251223770490380658256293129712067200025599 #f #f) (%make-iset 710 4347 701607511345343921325031293271750205328773953061165018731860231275315504048389953722118835022507612325815365798802811878081472914065950269876351396606125728738421985545481995435344681822152762064897233855538311859330056102382512044148623797711503675603554418194950896011028581620923400637764475802606111624032013537746339429556484880897422420684500381652231680181469792149645228273545018356377426754714173081258466044979574729049575733636915054118717995599166561466714806346832247484088409177505486640033723727426262663957623461750769780150403400793046904502078986138921939590106309465588461239035294075768276681256035613133318983019938539978553296947542340751901757722764886879566188724002186610316129078743860644123694218315782368699983846147786254912878185029002920719364521758334780709840944431445844061631630480264731468042636938980594839128834146425680940675968276229610236552123777827450800335093983995411275358569284649689765623592552751955223039518648278552446953983176386026239968419778131330679315551426479133230635112099149967671934335859686541147513640254527195004403489717658587135 #f #f)) (%make-iset 5121 5740 #f (%make-iset 4682 5120 175371358153141539868334697138091201974727802274027399498558092470023760163944801752101860757735502854323147826360646039096332869583 #f #f) (%make-iset 5743 8584 3367035357982338758268784949622510722982916612191244812161692820429431498581716593706634248384701102743990071526614800323777767740278248696525074079514063595020633018906444191487414743032272333744129304280152701119977616044923401668787129083479601456287183857518297935131388733746125291080234184827791547325211117363585662225920273183412115269430455150344496407374971081465561562339972714069231458842191123561619369120849428323154957872219509476877632240991735670294605215187383152800484433038775622000172396242135511586525136840994971526518805398866382146203239013557395438047777438885453365606824217596209748371754408341869696033135191780612435601945789341308466414012974139049770541125670344205122346591419785235944766397144297167950695899249367151325020993011926077153335028416612988950849880832869890576782185484272358298847244234386873927664215654399 #f #f))) (%make-iset 19894 19967 0 (%make-iset 12293 12799 418987604469675112210308215119212596280520439111988135530498955900174841866872033970495332863352529218181287230351520401429615780535935148566991159164935 (%make-iset 11264 11823 1886981212410784083928705666095883272632456313103710654885189572511501930284137370407319780920664817179896547747080111900838593355006827656846764529454777915054888058879 #f #f) (%make-iset 13312 19893 #f #f #f)) (%make-iset 40918 40959 0 (%make-iset 19968 40917 #f #f #f) #f))) (%make-iset 66176 66915 5783580587434428154555364829985543440241851299287575309680163996179565171823086079940394042428317107123413307843790999065078909055160200980665120157566564695549802815966390772949139375994310158161298917588186723846558056447 (%make-iset 63744 64109 #f (%make-iset 44032 55203 #f (%make-iset 42192 44031 1226312037095921067540873249696125157732687252017415813767915101996414971306329560454637236587498967425440368028639877692921482478856472795932625073381722381593907237586152174112020871270519384783198823825735601382598585113316956929399652039494562625223199569499267437599336829992902102757652964792741425412522628343505905855572464199390023270238244629463528883455361804887259681066344504968326833270207218573450575498388401312768434861384582558416940186793003019592337640038270858556719212664190434260229920040184985669352817412296522630464682185457663 #f #f) (%make-iset 55216 55291 75557863725914197590015 #f #f)) (%make-iset 64467 64829 #f (%make-iset 64112 64466 8543948143683640329580086824678193390956197043536818577375087558533063846144990195973890412380159 #f #f) (%make-iset 64848 65908 24707306311927562973795307731929743709876635468550316716286562646635209317018505901886645743090075701165699335868370569943297768343227044512391661031435599163201783518292129339643124999588608312456475105204376505979855110010014504421875265772855147603821543648381608482284424295970829695103160130440035008916382042554367 #f #f))) (%make-iset 70656 70855 1129878312369602537490101813810460253202598624427685080727551 (%make-iset 67584 68850 2540999070962986928818132558752405884059538599802432110676570286437587469981851766055600992664054335993764638025217723629426317800686967235291345767082946292983675134814339469164148668003093586121352544682785487708395321572881174795835827275505550854643503165906055297329453815092181396926006622533576506855315472674631932206179778552330860687242134809853463119361477796999813135679 (%make-iset 67072 67431 2339377547286709837873638165922360609460209085825506813695393791198559449985557282922321722445852588225069055 #f #f) (%make-iset 69632 70499 1952917402390585718352743347767517656993647409149447431957754581111138505247476851291445035716833120197410280543988343298427416253890899528837199918669854301875912975169627148589933489663981967773074032993446036638098998152559553543953616801342733137800559853567 #f #f)) (%make-iset 71040 71466 346565202197936328480334724912233383124011226257852736035110111812976312276412637198255624425813937127795362274891997541434392575 (%make-iset 70856 70873 261888 #f #f) #f)))) (%make-iset 113664 113822 388189245597642319451802680075071113378809249791 (%make-iset 92160 92728 #f (%make-iset 73728 74649 #f (%make-iset 72384 72440 #f (%make-iset 71840 71935 39614100146598100275352829951 #f #f) (%make-iset 72704 72886 12259590182441051920103355018263282776264666948172774911 #f #f)) (%make-iset 77824 78894 #f (%make-iset 74752 75075 34175792574734561318320347298712833833643272357706444319152325445384743103294199240025209787383807 #f #f) (%make-iset 82944 83526 #f #f #f))) (%make-iset 100333 100351 0 (%make-iset 93952 94207 26959946667150639796128338318559086530316164992906837813312910000127 (%make-iset 92736 93071 139983787731428661289332329870385306384549312034099714266511367755550254767415832054653351507699695615 #f #f) (%make-iset 94208 100332 #f #f #f)) (%make-iset 110592 110593 #f (%make-iset 100352 101106 #f #f #f) #f))) (%make-iset 127280 127369 1237940021126866573113425919 (%make-iset 122880 122922 8641373536127 (%make-iset 120146 120485 #f (%make-iset 119808 120145 277984795434575462634999469953131284498641899033547154778380155978829522737042218261318709224765652991 #f #f) (%make-iset 120488 120831 35835915874844843481862377449946273895690436668853644560088136612804115782023798523520115807522283061247 #f #f)) (%make-iset 126464 126651 392317335668304952608886359756720284316824500695881220079 (%make-iset 124928 125273 143203987035126529323568330581178505210591016546187894519352802106339246040226814133346848247529873604607 #f #f) #f)) (%make-iset 177984 178207 6739986666787659948666753771754907668409286105635143120275902562303 (%make-iset 173783 173823 0 (%make-iset 131072 173782 #f #f #f) (%make-iset 173824 177972 #f #f #f)) (%make-iset 194560 195101 #f (%make-iset 178208 183969 #f #f #f) #f))))))) +(define char-set:letter+digit (immutable-char-set (%make-iset 73648 73727 1 (%make-iset 55216 55291 75557863725914197590015 (%make-iset 11264 11823 1886981212410784083928705666095883272632456313103710654885189572511501930284137370407319780920664817179896547747080111900838593355006827656846764529454777915054888058879 (%make-iset 4682 5120 175371358153141539868334697138091201974727802273784565887029876336158827425591861888771559902853985414166671275143283003445681807311 (%make-iset 710 4347 701607511345343921325031293285036737552313014249129577179713733497028661926071532849455010083188420006022421932128803337913653771636388624993711446305067180421060963655119373222189272961184068886899633373554741564778669636368856093589844366158101728786435336293764058093291763418979707412043650921213055302872789003750780577851396425649264393444359090760329269898256389309825983350245284336093100971988658026174420647486143326328076480437557565851669183768070539314890263821744143387110981714944776554548080638831897423303567005272186614313179464918458333545481225096345937715970225572284364451719098638712239902992339806396206802159899680788734660848941151984278771496568171781533610498739037672416723543236880617166428977909499207577962773953935235285669824158814173196431549842531495721252152564578613335565263697454178494502231745306094088128473637605309154922650239769678927052837333570773738740687737682733281608678822669689176315932902831879546420580581987202179604199442568942811666986778064767178555433073142876269219090056398713522294204724558088720824996033136716644467738003002888191 (%make-iset 248 705 #f (%make-iset 48 247 803469021942422906251223770490380658256293129712067200025599 #f #f) #f) (%make-iset 4348 4680 #f #f #f)) (%make-iset 5743 8584 3367035357982338758268784949622510722982916612191244812161692820429431498581716593706634248384701102743990071526614800323777767740278248696525074079514063595020633018906444191487414743032272333744129304280152701119977616044923401668787129083479601456287183857518297935131388733746125291080234184827791547325211117363585662225920273183412115269430455152024239009925530804779327888691801682756235662480693983576410994531177529387149461802069970729634476482784914634036339340562377015412485084058698897320327989538716999837534850261228337322110644360519560809149554754707165964272429644469971431171326968401697797110644144311655335924576429277145510701393680471565889930079450999612697595619341945133937402118160691419877875456952185861503290429678138749867458028240711298568652093682139555438366386674961452020711566635409862196587346721471815891806479843327 (%make-iset 5121 5740 #f #f #f) (%make-iset 9398 9449 #f #f #f))) (%make-iset 40957 40959 0 (%make-iset 19904 19967 0 (%make-iset 13312 19903 #f (%make-iset 12293 12799 418987604469675112232312121811755383006134734077347647800970521294245813332857242272920100715614784556927171741920066081763180938618621305852994894430215 #f #f) #f) (%make-iset 19968 40956 #f #f #f)) (%make-iset 42192 44031 1226312037095921067540873249696125157732687303619108564121109639949981103634081556942946939140277538350510636530797621935747780368713902592824641178321450960006902220495570008563915788942379205079421440122167818368902381354795574462001344104233832810986860819307432446673636526486701304815740220882590469586874922631415361267248605890106031740628028227046603049736480984593542786222754632833107784189285148373005396399841299981436658495656924916320180938354015596302596987563501153722197340317298015627318901338856652182726161606020902146998710120218623 (%make-iset 40960 42124 #f #f #f) (%make-iset 44032 55203 #f #f #f)))) (%make-iset 70656 70855 1129878312369602537490101813810737551771398549609262484553727 (%make-iset 66176 66915 5783580587434428154555364829985543440241851299287575309680163996179565171823086079940394042428317107123413307843790999065078909055160200980665120157566564695549802815966474581299030479291251630264346200121665873642302472191 (%make-iset 64467 64829 #f (%make-iset 64112 64466 8543948143683640329580086824678193390956197043536818577375087558533063846144990195973890412380159 (%make-iset 63744 64109 #f #f #f) #f) (%make-iset 64848 65908 24707306311927562973795307731929743709876635468550316716286562646635209317018505901886645743090075701165699335868370569943297768343227044512391661031435599163201783518292129339643124999588608312456475105204376505979855110010014504421875265772855147603821543648381608482284424295970829695103160130440035008916382042554367 #f #f)) (%make-iset 67584 68921 5993928165200000729290308920001083082576847341587927925842461097663037244330338752133997347590597605737647219240442060635157365165018379744170231264203263029768113730890110144017096347154335784723870575042920134214533925911895718155593840628866290440177627285834102009654969354882609461783254174323557180822731174564605791964206027276205503269528834393612903427731478081568316899762041796912072485764415 (%make-iset 67072 67431 2339377547286709837873638165922360609460209085825506813695393791198559449985557282922321722445852588225069055 #f #f) (%make-iset 69248 70499 76948863590040469005144971740263032799340143931645394288838262570479031585755203100836865234311410972138120833615813704113843365310437095359939338705835846998334606291229527259659092785190174281851724901836758117056118904225369779725030342341211810458681479084048346688606278118033814824005834527307005823491884312779402119273753193761131135248581757721718387151007836788490239 #f #f))) (%make-iset 71680 72440 12129047596099288471689227831365311804146276076693352780019511307249129439735396723377194758471270365058665007119634759274170545757780635519319681864130904383933882085975160638817613268773998724871607756219531117473205194942578687 (%make-iset 71040 71466 346567846421811489474730532573465522551869898942639602515540790132970357566392122899313807788286976544480556470367246162063261695 (%make-iset 70856 70873 261888 #f #f) (%make-iset 71467 71481 32736 #f #f)) (%make-iset 73113 73129 130944 (%make-iset 72704 73112 979963828733976516522819735254493591502182978845680746393477612419327198363804283278215460032785098722036288833198646885887 #f #f) (%make-iset 73440 73462 #f #f #f))))) (%make-iset 120488 120831 35835915874844843481862377449946273895690436668853644560088136612804115782023798523520115807522283061247 (%make-iset 94208 100343 #f (%make-iset 92160 92728 #f (%make-iset 77824 78894 #f (%make-iset 74752 75075 34175792574734561318320347298712833833643272357706444319152325445384743103294199240025209787383807 (%make-iset 73728 74649 #f #f #f) #f) (%make-iset 82944 83526 #f #f #f)) (%make-iset 93760 93823 #f (%make-iset 92736 93071 139983787731428661289332329645995729157694502177020931672160716245459799864212224373209363943536984063 #f #f) (%make-iset 93952 94207 5300837753748491645787635300885286834009446351575649617730364394006642687 #f #f))) (%make-iset 110960 111355 #f (%make-iset 101632 101640 #f (%make-iset 100352 101589 #f (%make-iset 100344 100351 0 #f #f) #f) (%make-iset 110592 110959 2201759651238793353935978839989206105180151758945528329367307032632076306562609289056077994868130232108318719 #f #f)) (%make-iset 119808 120145 277984795434575462634999469953131284498641899033547154778380155978829522737042218261318709224765652991 (%make-iset 113664 113822 388189245597642319451802680075071113378809249791 #f #f) (%make-iset 120146 120485 #f #f #f)))) (%make-iset 173790 173823 0 (%make-iset 126464 126651 392317335668304952608886359756720284316824500695881220079 (%make-iset 123584 123641 287966493361045503 (%make-iset 123136 123214 321107049783467945492479 (%make-iset 122880 122922 8641373536127 #f #f) #f) (%make-iset 124928 125273 143208361536576095347417075585632740453321722885049680944225653647552065946225212885193295273883919712255 #f #f)) (%make-iset 130032 130041 #f (%make-iset 127280 127369 1237940021126866573113425919 #f #f) (%make-iset 131072 173789 #f #f #f))) (%make-iset 183970 183983 0 (%make-iset 177984 178207 6739986666787659948666753771754907668409286105635143120275902562303 (%make-iset 173824 177972 #f #f #f) (%make-iset 178208 183969 #f #f #f)) (%make-iset 194560 195101 #f (%make-iset 183984 191456 #f #f #f) (%make-iset 196608 201546 #f #f #f)))))))) ;; char-set:hex-digit (define char-set:hex-digit (immutable-char-set (%make-iset 48 102 35465847073801215 #f #f))) @@ -35,8 +35,8 @@ (define char-set:iso-control (immutable-char-set (%make-iset 0 159 1461501637160761734743215600984595715944343404543 #f #f))) ;; char-set:graphic -(define char-set:graphic (immutable-char-set (%make-iset 67584 68850 2540999070962986928818132558752405884059538599802432110676570286437587469981851766055600992664054335994030537369032177063678710301023520630027568932450871601109908370987223698347786008531292798136512966411598899308971496282261799789132971209909879128158822596673328210962399491558451532135304602655280793112634113563948340903560492503112930518542696475587742730830757188771740908863 (%make-iset 11904 12284 2462024160382423828429811516068427561660749306784056468848805869416245321611661291646414375862022918616033934704639 (%make-iset 8968 9002 #f (%make-iset 4682 5119 175371358153141539868334697138231049317943616347117917341541314196032287031137076845823307154793663064128493268596771847817630015439 (%make-iset 191 767 #f (%make-iset 48 190 1215446068961133357718048828666669009207295 (%make-iset 33 47 #f #f #f) #f) (%make-iset 4304 4680 #f (%make-iset 837 4303 59974454434182454078642062439847999215745883739952307967347512636879935229869793053237791383517098357084416791028119790599615044618861527403313847576531489462833656379410840830029744924028668519786331483950613186160946047846083207781690221512718726393200514422568139185736979384606396956411017986900154618100908441792677004423555316883414726442480973792583220432735926865595226998735879196052747721866727499264207754645351913884704954720881635919446207402709776400546501957786544416963929802651147396908767121253406766536468415709079855485649740770530364165670570110176408098261741153451008382232219661582640119707879977039931238167213425856625158356964508082211628469796366423303618867326940454994133244486389801248255324198709661696764547430832323166811184579122688565565969901615725636089938533342003723000182654327762103059355109449319522054525435753218789471853698647894576658793183559751741721354986014843404380695456754725033081244461157659638035200189007023917023150311106284073239672144913198406627133578131900896236607723146078846977 #f #f) #f)) (%make-iset 8586 8591 3 (%make-iset 5761 8584 12844220573357920743703553228504741980325751284216587726781420129008760055848510849663153079081079500317623138824462832207455183653158631908034397835729701274969029605768319968639715301067517819649084120062041259113178872243403165283993511492298955161556802997913928418686740297996036344965205316388358785655802096299332792989028989427928727640854771735558182224762258347891558957480033938398644753518202951175934161415009063044193528417117932929362792458628890268472262824395567755444150207698162960423198860223455869062202970135698666039660708808899844035607805416315254096173376926690949252261141101164164063160114632632352681075351414245650523046792214415462071801344478971611002590996671316383410774494191997734047932220972757852478900042280920366167120646237817563552298907886114885979595831003842962356373439340436937462738222340073268122222591 (%make-iset 5120 5759 #f #f #f) #f) (%make-iset 8592 8967 #f #f #f))) (%make-iset 10627 10749 #f (%make-iset 9472 10087 #f (%make-iset 9398 9449 #f (%make-iset 9003 9397 80695307487762091046544861445680552597065553504995368577893935301564236763759573038841534126695071005069056095698288639 #f #f) #f) (%make-iset 10224 10626 #f (%make-iset 10088 10223 87112285931760246646623899484940476104703 #f #f) #f)) (%make-iset 11264 11823 3773962424821541352241553013992918144065918717465803389708073357142126389225107781719131140341939080545590717440503200418501905217430712860489709121948925827947184521215 (%make-iset 11126 11247 4984604989135521207938544273895456767 (%make-iset 10750 11123 #f #f #f) #f) (%make-iset 11824 11844 #f #f #f)))) (%make-iset 42560 44031 2039744885300701967380788869810137116530743271713526081378714954817569603699446452372660056687361665079942175961441355410376071257107055356984070842045929531316442801739629515011358136542929864362481024439486013242989107582436276288733283759653564694200941240144106861798746644653473015227091042544009719453936312249238337042436878898521090940901522210798738477021350802322659095897307596363127442315403765207379707285338746918518023295860735 (%make-iset 19904 40917 #f (%make-iset 12800 13055 57896044618658097705508582330899881050797636342791734320376087254693299879935 (%make-iset 12293 12799 418987606030549387345590620681057021183929108611903356032773776385516428757808116781151167904355829697384921138988383127987367523725910954794251938955263 (%make-iset 12289 12292 #f #f #f) #f) (%make-iset 19894 19903 0 (%make-iset 13056 19893 #f #f #f) #f)) (%make-iset 42128 42191 36028797018963967 (%make-iset 40960 42124 #f (%make-iset 40918 40959 0 #f #f) #f) (%make-iset 42192 42539 #f #f #f))) (%make-iset 64467 64831 #f (%make-iset 63744 64109 #f (%make-iset 55216 55291 75557863725914197590015 (%make-iset 44032 55203 #f #f #f) #f) (%make-iset 64112 64466 559936185544451052639360570142111069515343919736656351240203305629542316848793152649014907269841682431 #f #f)) (%make-iset 66176 66927 11850556623653145908478190378124225009206278969194006593399371616221299748631119399029147004368405474322148214158758350982674075430842744979186328703758147415527737299423276131801381456277914783016208435314767826124566125608959 (%make-iset 65909 66044 87112285931757770766545328751328639320048 (%make-iset 64848 65908 24707306311927565711499799092842749774014471751303086659319605259203968427682889349709702706342170192446017222254590367237187741038281354388781066220198317953972091472727637273566418199072511052074254187067684745097639277784211416469632732296911495940122572454701590984291284166349092358466881661964830798265908799209471 #f #f) #f) (%make-iset 67072 67431 2339377547286709837873638165922360609460209085825506813695393791198559449985557282922321722445852588225069055 #f #f))))) (%make-iset 118784 119365 8903894453031763226164682950375691501926942562513420334034182902046561102655861722202313153585672295538116768616297201430994412729251427960653880031895069202084170385141530623 (%make-iset 77824 78894 #f (%make-iset 71840 71935 39614100146598100275352829951 (%make-iset 70856 70873 261888 (%make-iset 70656 70855 1531612823434350106375592336895763284404689114427804293791743 (%make-iset 69632 70499 1952917402390585718352743347767517656993647409149447431967787494131364742558346048913515654493360638410038790984386663353981612082924527851462038644503122338302424866634136655704146215328349201664087856726660464829357611972077220683421980352693423773097910075391 #f #f) #f) (%make-iset 71467 71487 1998816 (%make-iset 71040 71466 346565202197936328480334724912233383124011226257852736035330940736127031046395050132364095921713623885399702509988796630774579199 #f #f) #f)) (%make-iset 73728 74649 #f (%make-iset 72704 72886 12259590182441051920118931908838888402848391007152635391 (%make-iset 72384 72440 #f #f #f) #f) (%make-iset 74752 75075 34175792574734561318320347298712833833643272357706444319152325606345945717873855724470595993206783 #f #f))) (%make-iset 94208 100332 #f (%make-iset 92736 93071 139983787731428661289338003456601510586491872828768050960634385675597626409275157203941834836196458495 (%make-iset 92160 92728 #f (%make-iset 82944 83526 #f #f #f) #f) (%make-iset 93952 94207 26959946667150639796128338318559086530316164992906837813312910000127 #f #f)) (%make-iset 110592 110593 #f (%make-iset 100352 101106 #f (%make-iset 100333 100351 0 #f #f) #f) (%make-iset 113664 113823 1210283916596275210941375398477980311935271305215 #f #f)))) (%make-iset 127280 127369 1237940021991557705796419583 (%make-iset 121399 121483 38534505870515888006889487 (%make-iset 120146 120485 #f (%make-iset 119808 120145 277984795434575462634999469953131284498641899033547154778380155978829522737042218261318709224765652991 (%make-iset 119552 119638 #f #f #f) #f) (%make-iset 120832 121343 #f (%make-iset 120488 120831 35835915874844843497403728819336284991598416908354067736504587342730232796611684254438183290743688265727 #f #f) #f)) (%make-iset 126464 126705 5300541194335153381067228170533708156368811447347141191189319299759079407 (%make-iset 124928 125279 7023699835005341064156031016487439327600285984051031265732119320267107874305681238343402507577906933268479 (%make-iset 122880 122922 8641373536127 #f #f) #f) (%make-iset 126976 127279 16296287803087338442969023469401091891637706652481864683374388888857068713697889690908098559 #f #f))) (%make-iset 173783 173823 0 (%make-iset 128736 129472 361473786714656976441356754395347316832407688129084625185426525121473251170914082475149884300284363294703647064981963487321300512898504300348234909211350823127413425310482754243670403431812501079424098560469472000746659839 (%make-iset 127744 128722 #f (%make-iset 127370 127569 1208336337203657799933395207139170527850197544005040613621759 #f #f) #f) (%make-iset 131072 173782 #f #f #f)) (%make-iset 178208 183969 #f (%make-iset 177984 178207 6739986666787659948666753771754907668409286105635143120275902562303 (%make-iset 173824 177972 #f #f #f) #f) (%make-iset 194560 195101 #f #f #f)))))))) +(define char-set:graphic (immutable-char-set (%make-iset 71680 72440 12129047596099288471689227985373955882936478938241399805618182562237619198624379309670199854652352860465249331584918315770795606344464854369703857841276727779926948487630207054953758776109729070470213324736565298720109485698842623 (%make-iset 12293 12799 418987606030549387367594527373599807909543403577262868303245341779587400223793325083575935756618085036130805650556928808320932681808597112080255674220543 (%make-iset 9003 9397 80695307487762091046544861445680552597065553504995368584475953530849060932379449769070936146626014467603375549092724735 (%make-iset 4682 5119 175371358153141539868334697138231049317943616346875083730013098062167354292784136982493006299912145623972016717379408812166978953167 (%make-iset 191 767 #f (%make-iset 48 190 1215446068961133357718048828666669009207295 (%make-iset 33 47 #f #f #f) #f) (%make-iset 4304 4680 #f (%make-iset 837 4303 59974454434182532169859916382112511200130958697007503554262355183645647793598949377682516493667437923007427361162146335088305369509613116197890312982343248446873327788074346913645983245974540173325131173355062425787106492250118042419078658225390109790569126015338217902821936234701966060589729655153946272240376421489722833812843753374671752960799558967080222679291599590970969275517936885607281950757495834475947776911483174729895051496732117595864585503072339290263342019866656863327547873142700295219286192408918857375464627876188783109999288049082375685010784932525133532603417669654850685834963288668075665940656917034328341833756393789262218171406347858189123810977150389869073820261007490538842324573453517898132002756296824616540962221741369700687567203709418178974900248486333508599097762439019714345884123250284102532580517062859017605271547701358717135852043420021746256623051902392206027867430282555017576367026167536147634770375548092920289554757969682138566382695156519600549822042227193291435051048402318548574438335917540245505 #f #f) #f)) (%make-iset 8586 8591 3 (%make-iset 5761 8584 12844220573357920743703553228504741980325751284216587726781422127253281562375543599103966896871343020375829895974694551887678840316398582189601943285194282909966981707893808902666518089590015539865117379685061819660930351399943612028532154915285303544940547630002681944958985870880326608253395878332278563164458044603052848444557687198869767671241061363802592479728399115959500132272988816033548016710373534017633788713264956561177639802208470916535835522972826529183317417982131297106313800192842495772672356726235996089065724462410983010176131420305174934862477845522133159362661461416435514993309685073367387640364533729132676010424506638427320326158979284079129606233063458249142186606404367769929254519970588695774849326276537625021898243467486236927963361095045865056424506612281761446583310923195365972310351044867395039467136915865067960926207 (%make-iset 5120 5759 #f #f #f) #f) (%make-iset 8968 9002 #f (%make-iset 8592 8967 #f #f #f) #f))) (%make-iset 10750 11123 #f (%make-iset 10088 10223 87112285931760246646623899484940476104703 (%make-iset 9472 10087 #f (%make-iset 9398 9449 #f #f #f) #f) (%make-iset 10627 10749 #f (%make-iset 10224 10626 #f #f #f) #f)) (%make-iset 11824 11858 #f (%make-iset 11264 11823 3773962424821541352241553013992918144065918717465803389708073357142126389225107781719131140341939080545590717440503200418501905217430712860489709121948925827947184521215 (%make-iset 11126 11263 348449143727040986586495598010126353563647 #f #f) #f) (%make-iset 12289 12292 #f (%make-iset 11859 12284 86624774150589392456230137798312549379915298566080048889224101706101721230828234832695031726011516877687483029771255189390491648 #f #f) #f)))) (%make-iset 64467 64831 #f (%make-iset 42192 42539 #f (%make-iset 40957 40959 0 (%make-iset 12992 40956 #f (%make-iset 12800 12991 191561942607887998433433179118716749650695200769572863 #f #f) #f) (%make-iset 42128 42191 36028797018963967 (%make-iset 40960 42124 #f #f #f) #f)) (%make-iset 55216 55291 75557863725914197590015 (%make-iset 44032 55203 #f (%make-iset 42560 44031 2039744885300701967380788869810137116530743632188263859215935357859350230522117840256574059101395495159041886705878311481585634790213371830890708624108181863881758088754636831636731095473034302414935793693748647393155985431047310355444857924546463125621390338569852392255727610172691218466286306306072529586242931924633871846979795910394331961614999870579765509694242374050732945798149083553005480248845474672032101049443137144558599754743807 #f #f) #f) (%make-iset 64112 64466 559936185544451052639360570142111069515343919736656351240203305629542316848793152649014907269841682431 (%make-iset 63744 64109 #f #f #f) #f))) (%make-iset 69248 70499 76948863590040469005144971740263032799340143931645394289233579471469872637224920574897252997903446296677234589246833796642649857642601273004997210888415738695621029554820215996621291398282028165694932018608258905952824024935829987195331873067833808862509874893671707839241889210243356313957942845010655184710396639630282360817411708846108349067713936575867087655189676195577855 (%make-iset 66176 66927 11850556623653145908478190378124225009206278969194006593399371616221299748631119399029147004368405474322148214158758350982674075430842744979186328703758147415527737299423276215609731347381211724488311482597301305274361870024703 (%make-iset 65909 66044 87112285931757770766545328751878395133936 (%make-iset 64848 65908 24707306311927565711499799092842749774014471751303086659319605259203968427682889349709702706342170192446017222254590367237187741038281354388781066220198317953972091472727637273566418199072511052074254187067684745097639277784211416469632732296911495940122572454701590984291284166349092358466881661964830798265908799209471 #f #f) #f) (%make-iset 67584 68921 5993928165200000729290308920001083082576847341587927925842461097663037244330338752133997347590597605737647219240442060635157631064362194197604483656703599583162849954055478069325222580390508668953054212383448333426549086333624531567194416803575671065170924429768506337928484674313376734696887120000023450957940472544727496250463345917094819678226215107563685497562778643234051179373511076303844413537599 (%make-iset 67072 67431 2339377547286709837873638165922360609460209085825506813695393791198559449985557282922321722445852588225069055 #f #f) #f)) (%make-iset 71040 71466 346567846421811489474730532573465522551869898942639602515761619056121076336374535833422279284186663302084896705464045251403448319 (%make-iset 70856 70873 261888 (%make-iset 70656 70855 1531612823434350106375592336896041820913528324989656596742143 #f #f) #f) (%make-iset 71467 71487 1998816 #f #f))))) (%make-iset 120488 120831 35835915874844843497403728819336284991598416908354067736504587342730232796611684254438183290743688265727 (%make-iset 93952 94207 5300945593535160248346813968945634912532140900153339780020288808447639551 (%make-iset 74752 75075 34175792574734561318320347298712833833643272357706444319152325606345945717873855724470595993206783 (%make-iset 73440 73464 #f (%make-iset 73113 73129 130944 (%make-iset 72704 73112 979963828733976516522819735254493591502182978845680746393477612419327198363804283278215475609675674327662872557257626746367 #f #f) #f) (%make-iset 73727 74649 #f (%make-iset 73648 73726 73786976157399252993 #f #f) #f)) (%make-iset 92160 92728 #f (%make-iset 82944 83526 #f (%make-iset 77824 78894 #f #f #f) #f) (%make-iset 93760 93850 2321137592106832089145409535 (%make-iset 92736 93071 139983787731428661289338003232211933359637062971689268366283734165507171506071549522497847272033746943 #f #f) #f))) (%make-iset 110960 111355 #f (%make-iset 100352 101589 #f (%make-iset 100344 100351 0 (%make-iset 94208 100343 #f #f #f) #f) (%make-iset 110592 110959 2201759651238793353935978839989206105180151758945528329367307032632076306562609289056077994868130232108318719 (%make-iset 101632 101640 #f #f #f) #f)) (%make-iset 119552 119638 #f (%make-iset 118784 119365 8903894453031763226164682950375691501926942562513420334034182902046561102655861722202313153585672295538116768616297201430994412729251427960653880031895069202084170385141530623 (%make-iset 113664 113823 1210283916596275210941375398477980311935271305215 #f #f) #f) (%make-iset 120146 120485 #f (%make-iset 119808 120145 277984795434575462634999469953131284498641899033547154778380155978829522737042218261318709224765652991 #f #f) #f)))) (%make-iset 127744 128727 #f (%make-iset 124928 125279 7023704209506790630179879761491893562843016690389893052156992171808320694211679637095248954604260979376127 (%make-iset 122880 122922 8641373536127 (%make-iset 121399 121483 38534505870515888006889487 (%make-iset 120832 121343 #f #f #f) #f) (%make-iset 123584 123647 9511338530215821311 (%make-iset 123136 123215 925569959590782532845567 #f #f) #f)) (%make-iset 126976 127279 32592575620403208698341248887045371744387653189747268689130004987970774809154353846447767551 (%make-iset 126464 126705 5300541194335153381067228170533708156368811447347141191189319299759079407 (%make-iset 126124 126254 1361129467683753853853498429727072845841 #f #f) #f) (%make-iset 127370 127589 1658669802116112894150008869413016448193125602756192507330371256319 (%make-iset 127280 127369 #f #f #f) #f))) (%make-iset 178208 183969 #f (%make-iset 173790 173823 0 (%make-iset 131072 173789 #f (%make-iset 128736 130041 1395564823857300240922446466664555865028887665983335044524363252017914154373973301004635972404022510017571028632990405531056190531062782501742259967422408421904571830067909218330125344715810304357797273628378989117428119550443841642815730889863001220726100371562061441349510755262818835534689304533007067005401304757757932225110105305219425344132172538339933651336053275812227221363033527754751 #f #f) #f) (%make-iset 177984 178207 6739986666787659948666753771754907668409286105635143120275902562303 (%make-iset 173824 177972 #f #f #f) #f)) (%make-iset 194560 195101 #f (%make-iset 183984 191456 #f (%make-iset 183970 183983 0 #f #f) #f) (%make-iset 196608 201546 #f #f #f)))))))) ;; char-set:printing -(define char-set:printing (immutable-char-set (%make-iset 69632 70499 1952917402390585718352743347767517656993647409149447431967787494131364742558346048913515654493360638410038790984386663353981612082924527851462038644503122338302424866634136655704146215328349201664087856726660464829357611972077220683421980352693423773097910075391 (%make-iset 11904 13055 30586163746423534732700139542542539704885791662294245300538852264813658478327874182517403208754747416291915474948922429830426201346841848273147305988842523230806758486886767688469267380819903605926050237942808362237590146625238159247864961052746125526415279581166233898362919021619980339421270812787054835568990187930897556306964542013381439127551 (%make-iset 5761 8191 317998695923525198570228967423572822521434991261588284764071767201569992401390165584581045178704204301490054127468062408631708885943108667358225677011972469234926954246777340386522121844100246550392068253339466603215320800359061129333119129878300350008288682706496030029703973265257467088638635353392005152761745158447863990796046166876379784732432049885122914716995383895817459972930753357792600930372773633093501687033993073737383633847734313364265239490034119907663831699533871504860350243934885680493386590123398815708529548926770086584628921031504736580980304791590633615637058909617267935698360335736367516150565018106722436817156117061448356877500828433768711751908024299727138792571315303570810835139630048774569437440245759 (%make-iset 837 4303 59974454434182454078642062439847999215745883739952307967347512636879935229869793053237791383517098357084416791028119790599615044618861527403313847576531489462833656379410840830029744924028668519786331483950613186160946047846083207781690221512718726393200514422568139185736979384606396956411017986900154618100908441792677004423555316883414726442480973792583220432735926865595226998735879196052747721866727499264207754645351913884704954720881635919446207402709776400546501957786544416963929802651147396908767121253406766536468415709079855485649740770530364165670570110176408098261741153451008382232219661582640119707879977039931238167213425856625158356964508082211628469796366423303618867326940454994133244486389801248255324198709661696764547430832323166811184579122688565565969901615725636089938533342003723000182654327762103059355109449319522054525435753218789471853698647894576658793183559751741721354986014843404380695456754725033081244461157659638035200189007023917023150311106284073239672144913198406627133578131900896236607723146078846977 (%make-iset 161 190 117043199 (%make-iset 160 160 #f (%make-iset 9 133 21599954931504882934686864729547210783 #f #f) #f) (%make-iset 191 767 #f #f #f)) (%make-iset 5120 5759 #f (%make-iset 4682 5119 175371358153141539868334697138231049317943616347117917341541314196032287031137076845823307154793663064128493268596771847817630015439 (%make-iset 4304 4680 #f #f #f) #f) (%make-iset 5760 5760 #f #f #f))) (%make-iset 9472 10101 #f (%make-iset 8592 9214 #f (%make-iset 8305 8591 13598682245579220086383817489175160595079972807244278978321250804335873890217749413377 (%make-iset 8192 8287 79228162514264201254102042623 #f #f) #f) (%make-iset 9216 9471 27606985387162255149738932105255768628372048158417261938080801607385087 #f #f)) (%make-iset 10132 11123 #f (%make-iset 10102 10131 0 #f #f) (%make-iset 11126 11844 2757826131550993649364364103714910879615864560055001890179617067635774180636290599365259983501536883339872560891749438722419968697342417596523602263051320959968063980417947916921964074305083214660335756154646059548671 #f #f)))) (%make-iset 44032 55203 #f (%make-iset 40960 42124 #f (%make-iset 19904 40917 #f (%make-iset 19894 19903 0 (%make-iset 13056 19893 #f #f #f) #f) (%make-iset 40918 40959 0 #f #f)) (%make-iset 42192 42539 #f (%make-iset 42128 42191 36028797018963967 #f #f) (%make-iset 42560 44031 2039744885300701967380788869810137116530743271713526081378714954817569603699446452372660056687361665079942175961441355410376071257107055356984070842045929531316442801739629515011358136542929864362481024439486013242989107582436276288733283759653564694200941240144106861798746644653473015227091042544009719453936312249238337042436878898521090940901522210798738477021350802322659095897307596363127442315403765207379707285338746918518023295860735 #f #f))) (%make-iset 64848 66044 2152309932048157654930929365168016339467606738733607495379921694439597638342904818610938054225487781429598671037845338056008157173035364549526121195399882433117058523682236042495043621217423806814661993075875877516145864087441093951971482104917966472031961916516764950328219348328323796325850590850574711304772180876920260325333205877599028521254101716637319167 (%make-iset 64112 64466 559936185544451052639360570142111069515343919736656351240203305629542316848793152649014907269841682431 (%make-iset 63744 64109 #f (%make-iset 55216 55291 75557863725914197590015 #f #f) #f) (%make-iset 64467 64831 #f #f #f)) (%make-iset 67072 67431 2339377547286709837873638165922360609460209085825506813695393791198559449985557282922321722445852588225069055 (%make-iset 66176 66927 11850556623653145908478190378124225009206278969194006593399371616221299748631119399029147004368405474322148214158758350982674075430842744979186328703758147415527737299423276131801381456277914783016208435314767826124566125608959 #f #f) (%make-iset 67584 68850 2540999070962986928818132558752405884059538599802432110676570286437587469981851766055600992664054335994030537369032177063678710301023520630027568932450871601109908370987223698347786008531292798136512966411598899308971496282261799789132971209909879128158822596673328210962399491558451532135304602655280793112634113563948340903560492503112930518542696475587742730830757188771740908863 #f #f))))) (%make-iset 119552 119638 #f (%make-iset 92160 92728 #f (%make-iset 72704 72886 12259590182441051920118931908838888402848391007152635391 (%make-iset 71840 71935 39614100146598100275352829951 (%make-iset 71040 71487 692757414980676032231714421071242661704383800168024780792230699506665099124882219562833817678027403580413274240831115217409482055221247 (%make-iset 70656 70873 420839322147721879631239744031379287412619102324902477855700549631 #f #f) #f) (%make-iset 72384 72440 #f #f #f)) (%make-iset 77824 78894 #f (%make-iset 74752 75075 34175792574734561318320347298712833833643272357706444319152325606345945717873855724470595993206783 (%make-iset 73728 74649 #f #f #f) #f) (%make-iset 82944 83526 #f #f #f))) (%make-iset 100352 101106 #f (%make-iset 94208 100332 #f (%make-iset 93952 94207 26959946667150639796128338318559086530316164992906837813312910000127 (%make-iset 92736 93071 139983787731428661289338003456601510586491872828768050960634385675597626409275157203941834836196458495 #f #f) #f) (%make-iset 100333 100351 0 #f #f)) (%make-iset 113664 113823 1210283916596275210941375398477980311935271305215 (%make-iset 110592 110593 #f #f #f) (%make-iset 118784 119365 8903894453031763226164682950375691501926942562513420334034182902046561102655861722202313153585672295538116768616297201430994412729251427960653880031895069202084170385141530623 #f #f)))) (%make-iset 126976 127569 48753536866126984717626988384245919885836326665607240725343075944210693215186630012426450513064798905869735309540395113968289839759134932987304558966714824542769068304351199494143 (%make-iset 121399 121483 38534505870515888006889487 (%make-iset 120488 120781 7957171782556586274486115970349133441607298412757563479047423630290551952200534008528895 (%make-iset 120146 120485 #f (%make-iset 119808 120145 277984795434575462634999469953131284498641899033547154778380155978829522737042218261318709224765652991 #f #f) #f) (%make-iset 120782 121343 #f #f #f)) (%make-iset 124928 125279 7023699835005341064156031016487439327600285984051031265732119320267107874305681238343402507577906933268479 (%make-iset 122880 122922 8641373536127 #f #f) (%make-iset 126464 126705 5300541194335153381067228170533708156368811447347141191189319299759079407 #f #f))) (%make-iset 173824 177972 #f (%make-iset 131072 173782 #f (%make-iset 128736 129472 361473786714656976441356754395347316832407688129084625185426525121473251170914082475149884300284363294703647064981963487321300512898504300348234909211350823127413425310482754243670403431812501079424098560469472000746659839 (%make-iset 127744 128722 #f #f #f) #f) (%make-iset 173783 173823 0 #f #f)) (%make-iset 178208 183969 #f (%make-iset 177984 178207 6739986666787659948666753771754907668409286105635143120275902562303 #f #f) (%make-iset 194560 195101 #f #f #f)))))))) +(define char-set:printing (immutable-char-set (%make-iset 73648 73726 73786976157399252993 (%make-iset 40957 40959 0 (%make-iset 8192 8287 79228162514264201254102042623 (%make-iset 4304 4680 #f (%make-iset 161 190 117043199 (%make-iset 160 160 #f (%make-iset 9 133 21599954931504882934686864729547210783 #f #f) #f) (%make-iset 837 4303 59974454434182532169859916382112511200130958697007503554262355183645647793598949377682516493667437923007427361162146335088305369509613116197890312982343248446873327788074346913645983245974540173325131173355062425787106492250118042419078658225390109790569126015338217902821936234701966060589729655153946272240376421489722833812843753374671752960799558967080222679291599590970969275517936885607281950757495834475947776911483174729895051496732117595864585503072339290263342019866656863327547873142700295219286192408918857375464627876188783109999288049082375685010784932525133532603417669654850685834963288668075665940656917034328341833756393789262218171406347858189123810977150389869073820261007490538842324573453517898132002756296824616540962221741369700687567203709418178974900248486333508599097762439019714345884123250284102532580517062859017605271547701358717135852043420021746256623051902392206027867430282555017576367026167536147634770375548092920289554757969682138566382695156519600549822042227193291435051048402318548574438335917540245505 (%make-iset 191 767 #f #f #f) #f)) (%make-iset 5760 5760 #f (%make-iset 5120 5759 #f (%make-iset 4682 5119 175371358153141539868334697138231049317943616346875083730013098062167354292784136982493006299912145623972016717379408812166978953167 #f #f) #f) (%make-iset 5761 8191 317998695923525198570228967423572822521434991261588284764071767201569992401390165584581045178704204301490054127468062408631708885943108667358225677011972469234926954246777340386522121844100246550392068253339466603215320800359061129339526839391203791335626963675550553378271951947350144624705803113898933028524663645729092862152082712598552250872193914071886654732452539699573881158691844945990619913263893450522980774083827664502967353722865217528197164410019518030773718119076194620420836269702745085895706078234670626226920490926006731826394605220601099116697037024613978040566925912206459014586044620174721583737664454029073402692943611855259335657924248635129515609663748275260019810042359390603653486116726997348959627427971071 #f #f))) (%make-iset 10102 10131 0 (%make-iset 9280 9471 1496577676626844588240568316941316670606575327512575 (%make-iset 8592 9254 #f (%make-iset 8305 8591 13598682245579220086383817489175160595079972807244278978321251106567328793875043089921 #f #f) #f) (%make-iset 9472 10101 #f #f #f)) (%make-iset 11904 12991 101201126653471405168551216586934141089629089514047441366871545389923157825027550043170695180534984277528398078305989977323866645665899006226360749475593738789952109427102360326204918479078287989993880535456896636095183507274125308899710052513115391193329498777546143052392166201920346619858582232973056581764685992002846719 (%make-iset 11126 11858 45184223339331479951185741475274045267603474397630752840648161876172628960516100181183283665906209584123788828086660026723286846290656013213461581462303713490545644203395787287117886857108389922857050643280606935023353855 (%make-iset 10132 11123 #f #f #f) #f) (%make-iset 12992 40956 #f #f #f)))) (%make-iset 64848 66044 2152309932048157654930929365181599324758100597226381009663514362225632576812222264108423250922765912357141089525050730139215717765333942812479968578874921158660293453653391590837844249939309570314068383407658741660310544818207931112497705281430764907804091873070120236360422428709099556058170789835669595308841297000004408200770389536066493670202892269381484543 (%make-iset 44032 55203 #f (%make-iset 42192 42539 #f (%make-iset 42128 42191 36028797018963967 (%make-iset 40960 42124 #f #f #f) #f) (%make-iset 42560 44031 2039744885300701967380788869810137116530743632188263859215935357859350230522117840256574059101395495159041886705878311481585634790213371830890708624108181863881758088754636831636731095473034302414935793693748647393155985431047310355444857924546463125621390338569852392255727610172691218466286306306072529586242931924633871846979795910394331961614999870579765509694242374050732945798149083553005480248845474672032101049443137144558599754743807 #f #f)) (%make-iset 64112 64466 559936185544451052639360570142111069515343919736656351240203305629542316848793152649014907269841682431 (%make-iset 63744 64109 #f (%make-iset 55216 55291 75557863725914197590015 #f #f) #f) (%make-iset 64467 64831 #f #f #f))) (%make-iset 70656 70873 420839322147721879631239744031379287691155611164113039708003500031 (%make-iset 67584 68921 5993928165200000729290308920001083082576847341587927925842461097663037244330338752133997347590597605737647219240442060635157631064362194197604483656703599583162849954055478069325222580390508668953054212383448333426549086333624531567194416803575671065170924429768506337928484674313376734696887120000023450957940472544727496250463345917094819678226215107563685497562778643234051179373511076303844413537599 (%make-iset 67072 67431 2339377547286709837873638165922360609460209085825506813695393791198559449985557282922321722445852588225069055 (%make-iset 66176 66927 11850556623653145908478190378124225009206278969194006593399371616221299748631119399029147004368405474322148214158758350982674075430842744979186328703758147415527737299423276215609731347381211724488311482597301305274361870024703 #f #f) #f) (%make-iset 69248 70499 76948863590040469005144971740263032799340143931645394289233579471469872637224920574897252997903446296677234589246833796642649857642601273004997210888415738695621029554820215996621291398282028165694932018608258905952824024935829987195331873067833808862509874893671707839241889210243356313957942845010655184710396639630282360817411708846108349067713936575867087655189676195577855 #f #f)) (%make-iset 72704 73129 173123605518369359058835719009821596572172747795128525636764497174436003182493469539750430159111766193840294997681874517211741695 (%make-iset 71680 72440 12129047596099288471689227985373955882936478938241399805618182562237619198624379309670199854652352860465249331584918315770795606344464854369703857841276727779926948487630207054953758776109729070470213324736565298720109485698842623 (%make-iset 71040 71487 692757414983320256106875415467050322936523228026697465579097179937343419118927509542319518736210766053452690926025310692658102684090367 #f #f) #f) (%make-iset 73440 73464 #f #f #f))))) (%make-iset 120782 121343 #f (%make-iset 100352 101589 #f (%make-iset 92160 92728 #f (%make-iset 77824 78894 #f (%make-iset 74752 75075 34175792574734561318320347298712833833643272357706444319152325606345945717873855724470595993206783 (%make-iset 73727 74649 #f #f #f) #f) (%make-iset 82944 83526 #f #f #f)) (%make-iset 94208 100343 #f (%make-iset 93760 94207 33274574784369932869560954738424869031804371793173578871583216373135890848662921739630567712991033888744523960811913145058414559231 (%make-iset 92736 93071 139983787731428661289338003232211933359637062971689268366283734165507171506071549522497847272033746943 #f #f) #f) (%make-iset 100344 100351 0 #f #f))) (%make-iset 118784 119365 8903894453031763226164682950375691501926942562513420334034182902046561102655861722202313153585672295538116768616297201430994412729251427960653880031895069202084170385141530623 (%make-iset 110960 111355 #f (%make-iset 110592 110959 2201759651238793353935978839989206105180151758945528329367307032632076306562609289056077994868130232108318719 (%make-iset 101632 101640 #f #f #f) #f) (%make-iset 113664 113823 1210283916596275210941375398477980311935271305215 #f #f)) (%make-iset 120146 120485 #f (%make-iset 119808 120145 277984795434575462634999469953131284498641899033547154778380155978829522737042218261318709224765652991 (%make-iset 119552 119638 #f #f #f) #f) (%make-iset 120488 120781 7957171782556586274486115970349133441607298412757563479047423630290551952200534008528895 #f #f)))) (%make-iset 128736 130041 1395564823857300240922446466664555865028887665983335044524363252017914154373973301004635972404022510017571028632990405531056190531062782501742259967422408421904571830067909218330125344715810304357797273628378989117428119550443841642815730889863001220726100371562061441349510755262818835534689304533007067005401304757757932225110105305219425344132172538339933651336053275812227221363033527754751 (%make-iset 124928 125279 7023704209506790630179879761491893562843016690389893052156992171808320694211679637095248954604260979376127 (%make-iset 123136 123215 925569959590782532845567 (%make-iset 122880 122922 8641373536127 (%make-iset 121399 121483 38534505870515888006889487 #f #f) #f) (%make-iset 123584 123647 9511338530215821311 #f #f)) (%make-iset 126976 127589 66923435848449520561872831652599431289448618669932687931757021603387200183513455083701749538297393227813626429413144495791734667559393462525515277714480404638844354082830588746888380415 (%make-iset 126464 126705 5300541194335153381067228170533708156368811447347141191189319299759079407 (%make-iset 126124 126254 1361129467683753853853498429727072845841 #f #f) #f) (%make-iset 127744 128727 #f #f #f))) (%make-iset 178208 183969 #f (%make-iset 173824 177972 #f (%make-iset 173790 173823 0 (%make-iset 131072 173789 #f #f #f) #f) (%make-iset 177984 178207 6739986666787659948666753771754907668409286105635143120275902562303 #f #f)) (%make-iset 194560 195101 #f (%make-iset 183984 191456 #f (%make-iset 183970 183983 0 #f #f) #f) (%make-iset 196608 201546 #f #f #f)))))))) diff --git a/lib/chibi/show.sld b/lib/chibi/show.sld index f0628720..f87471ae 100644 --- a/lib/chibi/show.sld +++ b/lib/chibi/show.sld @@ -8,8 +8,7 @@ padded padded/left padded/right padded/both trimmed trimmed/left trimmed/right trimmed/both trimmed/lazy fitted fitted/left fitted/right fitted/both - joined joined/prefix joined/suffix joined/last joined/dot joined/range - upcased downcased) + joined joined/prefix joined/suffix joined/last joined/dot joined/range) (import (scheme base) (scheme char) (scheme write) (chibi show base)) (include "show/show.scm")) diff --git a/lib/chibi/show/show.scm b/lib/chibi/show/show.scm index 5c61d58c..c28e442a 100644 --- a/lib/chibi/show/show.scm +++ b/lib/chibi/show/show.scm @@ -82,21 +82,6 @@ (fn (col pad-char) (displayed (make-string (max 0 (- where col)) pad-char)))) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; String transformations - -(define (with-string-transformer proc . ls) - (fn ((orig-output output)) - (let ((output* (lambda (str) (orig-output (proc str))))) - (with ((output output*)) - (each-in-list ls))))) - -;;> Show each of \var{ls}, uppercasing all generated text. -(define (upcased . ls) (apply with-string-transformer string-upcase ls)) - -;;> Show each of \var{ls}, lowercasing all generated text. -(define (downcased . ls) (apply with-string-transformer string-downcase ls)) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Padding and trimming diff --git a/lib/chibi/show/unicode.scm b/lib/chibi/show/unicode.scm index d4c665f9..1ef761f1 100644 --- a/lib/chibi/show/unicode.scm +++ b/lib/chibi/show/unicode.scm @@ -68,3 +68,18 @@ unicode-terminal-width/wide unicode-terminal-width))) (each-in-list args)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; String transformations + +(define (with-string-transformer proc . ls) + (fn ((orig-output output)) + (let ((output* (lambda (str) (orig-output (proc str))))) + (with ((output output*)) + (each-in-list ls))))) + +;;> Show each of \var{ls}, uppercasing all generated text. +(define (upcased . ls) (apply with-string-transformer string-upcase ls)) + +;;> Show each of \var{ls}, lowercasing all generated text. +(define (downcased . ls) (apply with-string-transformer string-downcase ls)) diff --git a/lib/chibi/show/unicode.sld b/lib/chibi/show/unicode.sld index 435e9ba9..44687324 100644 --- a/lib/chibi/show/unicode.sld +++ b/lib/chibi/show/unicode.sld @@ -1,5 +1,11 @@ (define-library (chibi show unicode) - (import (scheme base) (chibi show base) (srfi 130) (srfi 151)) - (export as-unicode unicode-terminal-width unicode-terminal-width/wide) + (import (scheme base) + (scheme char) + (chibi show base) + (srfi 130) + (srfi 151)) + (export as-unicode + unicode-terminal-width unicode-terminal-width/wide + upcased downcased) (include "width.scm" "unicode.scm")) diff --git a/lib/scheme/char.sld b/lib/scheme/char.sld index 7c0c7c93..ac686ead 100644 --- a/lib/scheme/char.sld +++ b/lib/scheme/char.sld @@ -24,4 +24,5 @@ char-downcase char-foldcase char-lower-case? char-numeric? char-upcase char-upper-case? char-whitespace? digit-value string-ci<=? string-ci=? string-ci>? + char-get-special-case string-downcase string-foldcase string-upcase)) diff --git a/lib/scheme/char/case-offsets.scm b/lib/scheme/char/case-offsets.scm index 0be386a2..06c51563 100644 --- a/lib/scheme/char/case-offsets.scm +++ b/lib/scheme/char/case-offsets.scm @@ -1,9 +1,12 @@ ;; auto-generated by extract-case-offsets.scm -(define char-downcase-offsets (list (cons (%make-iset 8579 8579 #f (%make-iset 880 1326 242279574765202296849774602627805799045871610517108506109792008705054922007599484790559595901393133839376706840989092433857043480182853 (%make-iset 256 590 46620119969431228644100221389637723687450896370752335113822859777025626952209321538335201863828591957 #f #f) (%make-iset 7680 7934 38597363079105398474523661669075944487877262569105979164236916827797859947861 #f #f)) (%make-iset 42560 42650 1650586712898282464877040981 (%make-iset 11360 11506 92689287070683147437146300401934387177065089 #f #f) (%make-iset 42786 42934 446043941378096758217146850907508628813845845 #f #f))) 1) (cons (%make-iset 65313 65338 #f (%make-iset 913 1071 730750818495310275641373184626454206112216252415 (%make-iset 65 222 363948161469878586209393690477933956061783392255 #f #f) #f) (%make-iset 71840 71871 #f #f #f)) 32) (cons (%make-iset 11264 11310 #f (%make-iset 1329 1366 #f #f #f) #f) 48) (cons (%make-iset 5024 5103 #f #f #f) 38864) (cons (%make-iset 7944 8169 80881074129870198004135178138284625259741180096154048608512860160255 #f #f) -8) (cons (%make-iset 66736 66771 #f (%make-iset 66560 66599 #f #f #f) #f) 40) (cons (%make-iset 68736 68786 #f (%make-iset 908 908 #f #f #f) #f) 64) (cons (%make-iset 4256 4301 36009005809663 #f #f) 7264) (cons (%make-iset 125184 125217 #f #f #f) 34) (cons (%make-iset 9398 9423 #f #f #f) 26))) +(define char-downcase-offsets (list (cons (%make-iset 8579 8579 #f (%make-iset 880 1326 242279574765202296849774602627805799045871610517108506109792008705054922007599484790559595901393133839376706840989092433857043480182853 (%make-iset 256 590 46620119969431228644100221389637723687450896370752335113822859777025626952209321538335201863828591957 #f #f) (%make-iset 7680 7934 38597363079105398474523661669075944487877262569105979164236916827797859947861 #f #f)) (%make-iset 42560 42650 1650586712898282464877040981 (%make-iset 11360 11506 92689287070683147437146300401934387177065089 #f #f) (%make-iset 42786 42997 3291009114642647507835646461869218451394993306947919553183946069 #f #f))) 1) (cons (%make-iset 65313 65338 #f (%make-iset 913 1071 730750818495310275641373184626454206112216252415 (%make-iset 65 222 363948161469878586209393690477933956061783392255 #f #f) #f) (%make-iset 93760 93791 #f (%make-iset 71840 71871 #f #f #f) #f)) 32) (cons (%make-iset 11264 11310 #f (%make-iset 1329 1366 #f #f #f) #f) 48) (cons (%make-iset 5024 5103 #f #f #f) 38864) (cons (%make-iset 7944 8169 80881074129870198004135178138284625259741180096154048608512860160255 #f #f) -8) (cons (%make-iset 66736 66771 #f (%make-iset 66560 66599 #f #f #f) #f) 40) (cons (%make-iset 68736 68786 #f (%make-iset 908 908 #f #f #f) #f) 64) (cons (%make-iset 7312 7359 255086697644031 #f #f) -3008) (cons (%make-iset 4256 4301 36009005809663 #f #f) 7264) (cons (%make-iset 125184 125217 #f #f #f) 34) (cons (%make-iset 9398 9423 #f #f #f) 26))) -(define char-downcase-map (quote #(73 305 83 383 304 105 376 255 385 595 390 596 393 598 394 599 398 477 399 601 400 603 403 608 404 611 406 617 407 616 412 623 413 626 415 629 422 640 425 643 430 648 433 650 434 651 439 658 452 454 453 454 455 457 456 457 458 460 459 460 497 499 498 499 502 405 503 447 544 414 570 11365 573 410 574 11366 579 384 580 649 581 652 895 1011 902 940 904 941 905 942 906 943 910 973 911 974 914 976 917 1013 920 977 921 837 921 8126 922 1008 924 181 928 982 929 1009 931 962 934 981 975 983 1012 952 1017 1010 1021 891 1022 892 1023 893 1024 1104 1025 1105 1026 1106 1027 1107 1028 1108 1029 1109 1030 1110 1031 1111 1032 1112 1033 1113 1034 1114 1035 1115 1036 1116 1037 1117 1038 1118 1039 1119 1042 7296 1044 7297 1054 7298 1057 7299 1058 7300 1058 7301 1066 7302 1122 7303 1216 1231 5104 5112 5105 5113 5106 5114 5107 5115 5108 5116 5109 5117 7776 7835 7838 223 8072 8064 8073 8065 8074 8066 8075 8067 8076 8068 8077 8069 8078 8070 8079 8071 8088 8080 8089 8081 8090 8082 8091 8083 8092 8084 8093 8085 8094 8086 8095 8087 8104 8096 8105 8097 8106 8098 8107 8099 8108 8100 8109 8101 8110 8102 8111 8103 8122 8048 8123 8049 8124 8115 8124 8115 8136 8050 8137 8051 8138 8052 8139 8053 8140 8131 8140 8131 8154 8054 8155 8055 8170 8058 8171 8059 8172 8165 8184 8056 8185 8057 8186 8060 8187 8061 8188 8179 8188 8179 8486 969 8490 107 8491 229 8498 8526 8544 8560 8545 8561 8546 8562 8547 8563 8548 8564 8549 8565 8550 8566 8551 8567 8552 8568 8553 8569 8554 8570 8555 8571 8556 8572 8557 8573 8558 8574 8559 8575 11362 619 11363 7549 11364 637 11373 593 11374 625 11375 592 11376 594 11390 575 11391 576 42570 7304 42877 7545 42893 613 42922 614 42923 604 42924 609 42925 620 42926 618 42928 670 42929 647 42930 669 42931 43859))) +(define char-downcase-map + '#(#x49 #x131 #x53 #x17f #x130 #x69 #x178 #xff #x181 #x253 #x186 #x254 #x189 #x256 #x18a #x257 #x18e #x1dd #x18f #x259 #x190 #x25b #x193 #x260 #x194 #x263 #x196 #x269 #x197 #x268 #x19c #x26f #x19d #x272 #x19f #x275 #x1a6 #x280 #x1a9 #x283 #x1ae #x288 #x1b1 #x28a #x1b2 #x28b #x1b7 #x292 #x1c4 #x1c6 #x1c5 #x1c6 #x1c7 #x1c9 #x1c8 #x1c9 #x1ca #x1cc #x1cb #x1cc #x1f1 #x1f3 #x1f2 #x1f3 #x1f6 #x195 #x1f7 #x1bf #x220 #x19e #x23a #x2c65 #x23d #x19a #x23e #x2c66 #x243 #x180 #x244 #x289 #x245 #x28c #x37f #x3f3 #x386 #x3ac #x388 #x3ad #x389 #x3ae #x38a #x3af #x38e #x3cd #x38f #x3ce #x392 #x3d0 #x395 #x3f5 #x398 #x3d1 #x399 #x345 #x399 #x1fbe #x39a #x3f0 #x39c #xb5 #x3a0 #x3d6 #x3a1 #x3f1 #x3a3 #x3c2 #x3a6 #x3d5 #x3cf #x3d7 #x3f4 #x3b8 #x3f9 #x3f2 #x3fd #x37b #x3fe #x37c #x3ff #x37d #x400 #x450 #x401 #x451 #x402 #x452 #x403 #x453 #x404 #x454 #x405 #x455 #x406 #x456 #x407 #x457 #x408 #x458 #x409 #x459 #x40a #x45a #x40b #x45b #x40c #x45c #x40d #x45d #x40e #x45e #x40f #x45f #x412 #x1c80 #x414 #x1c81 #x41e #x1c82 #x421 #x1c83 #x422 #x1c84 #x422 #x1c85 #x42a #x1c86 #x462 #x1c87 #x4c0 #x4cf #x13f0 #x13f8 #x13f1 #x13f9 #x13f2 #x13fa #x13f3 #x13fb #x13f4 #x13fc #x13f5 #x13fd #x1e60 #x1e9b #x1e9e #xdf #x1f88 #x1f80 #x1f89 #x1f81 #x1f8a #x1f82 #x1f8b #x1f83 #x1f8c #x1f84 #x1f8d #x1f85 #x1f8e #x1f86 #x1f8f #x1f87 #x1f98 #x1f90 #x1f99 #x1f91 #x1f9a #x1f92 #x1f9b #x1f93 #x1f9c #x1f94 #x1f9d #x1f95 #x1f9e #x1f96 #x1f9f #x1f97 #x1fa8 #x1fa0 #x1fa9 #x1fa1 #x1faa #x1fa2 #x1fab #x1fa3 #x1fac #x1fa4 #x1fad #x1fa5 #x1fae #x1fa6 #x1faf #x1fa7 #x1fba #x1f70 #x1fbb #x1f71 #x1fbc #x1fb3 #x1fbc #x1fb3 #x1fc8 #x1f72 #x1fc9 #x1f73 #x1fca #x1f74 #x1fcb #x1f75 #x1fcc #x1fc3 #x1fcc #x1fc3 #x1fda #x1f76 #x1fdb #x1f77 #x1fea #x1f7a #x1feb #x1f7b #x1fec #x1fe5 #x1ff8 #x1f78 #x1ff9 #x1f79 #x1ffa #x1f7c #x1ffb #x1f7d #x1ffc #x1ff3 #x1ffc #x1ff3 #x2126 #x3c9 #x212a #x6b #x212b #xe5 #x2132 #x214e #x2160 #x2170 #x2161 #x2171 #x2162 #x2172 #x2163 #x2173 #x2164 #x2174 #x2165 #x2175 #x2166 #x2176 #x2167 #x2177 #x2168 #x2178 #x2169 #x2179 #x216a #x217a #x216b #x217b #x216c #x217c #x216d #x217d #x216e #x217e #x216f #x217f #x2c62 #x26b #x2c63 #x1d7d #x2c64 #x27d #x2c6d #x251 #x2c6e #x271 #x2c6f #x250 #x2c70 #x252 #x2c7e #x23f #x2c7f #x240 #xa64a #x1c88 #xa77d #x1d79 #xa78d #x265 #xa7aa #x266 #xa7ab #x25c #xa7ac #x261 #xa7ad #x26c #xa7ae #x26a #xa7b0 #x29e #xa7b1 #x287 #xa7b2 #x29d #xa7b3 #xab53 #xa7c4 #xa794 #xa7c5 #x282 #xa7c6 #x1d8e)) -(define char-upcase-map (quote #(105 304 107 8490 181 924 223 7838 229 8491 255 376 305 73 383 83 384 579 405 502 410 573 414 544 447 503 453 452 454 452 456 455 457 455 459 458 460 458 477 398 498 497 499 497 575 11390 576 11391 592 11375 593 11373 594 11376 595 385 596 390 598 393 599 394 601 399 603 400 604 42923 608 403 609 42924 611 404 613 42893 614 42922 616 407 617 406 618 42926 619 11362 620 42925 623 412 625 11374 626 413 629 415 637 11364 640 422 643 425 647 42929 648 430 649 580 650 433 651 434 652 581 658 439 669 42930 670 42928 837 921 891 1021 892 1022 893 1023 940 902 941 904 942 905 943 906 952 1012 962 931 969 8486 973 910 974 911 976 914 977 920 981 934 982 928 983 975 1008 922 1009 929 1010 1017 1011 895 1013 917 1104 1024 1105 1025 1106 1026 1107 1027 1108 1028 1109 1029 1110 1030 1111 1031 1112 1032 1113 1033 1114 1034 1115 1035 1116 1036 1117 1037 1118 1038 1119 1039 1231 1216 5112 5104 5113 5105 5114 5106 5115 5107 5116 5108 5117 5109 7296 1042 7297 1044 7298 1054 7299 1057 7300 1058 7301 1058 7302 1066 7303 1122 7304 42570 7545 42877 7549 11363 7835 7776 8048 8122 8049 8123 8050 8136 8051 8137 8052 8138 8053 8139 8054 8154 8055 8155 8056 8184 8057 8185 8058 8170 8059 8171 8060 8186 8061 8187 8115 8124 8126 921 8131 8140 8165 8172 8179 8188 8526 8498 8560 8544 8561 8545 8562 8546 8563 8547 8564 8548 8565 8549 8566 8550 8567 8551 8568 8552 8569 8553 8570 8554 8571 8555 8572 8556 8573 8557 8574 8558 8575 8559 11365 570 11366 574 43859 42931))) +(define char-upcase-map + '#(#x69 #x130 #x6b #x212a #xb5 #x39c #xdf #x1e9e #xe5 #x212b #xff #x178 #x131 #x49 #x17f #x53 #x180 #x243 #x195 #x1f6 #x19a #x23d #x19e #x220 #x1bf #x1f7 #x1c5 #x1c4 #x1c6 #x1c4 #x1c8 #x1c7 #x1c9 #x1c7 #x1cb #x1ca #x1cc #x1ca #x1dd #x18e #x1f2 #x1f1 #x1f3 #x1f1 #x23f #x2c7e #x240 #x2c7f #x250 #x2c6f #x251 #x2c6d #x252 #x2c70 #x253 #x181 #x254 #x186 #x256 #x189 #x257 #x18a #x259 #x18f #x25b #x190 #x25c #xa7ab #x260 #x193 #x261 #xa7ac #x263 #x194 #x265 #xa78d #x266 #xa7aa #x268 #x197 #x269 #x196 #x26a #xa7ae #x26b #x2c62 #x26c #xa7ad #x26f #x19c #x271 #x2c6e #x272 #x19d #x275 #x19f #x27d #x2c64 #x280 #x1a6 #x282 #xa7c5 #x283 #x1a9 #x287 #xa7b1 #x288 #x1ae #x289 #x244 #x28a #x1b1 #x28b #x1b2 #x28c #x245 #x292 #x1b7 #x29d #xa7b2 #x29e #xa7b0 #x345 #x399 #x37b #x3fd #x37c #x3fe #x37d #x3ff #x3ac #x386 #x3ad #x388 #x3ae #x389 #x3af #x38a #x3b8 #x3f4 #x3c2 #x3a3 #x3c9 #x2126 #x3cd #x38e #x3ce #x38f #x3d0 #x392 #x3d1 #x398 #x3d5 #x3a6 #x3d6 #x3a0 #x3d7 #x3cf #x3f0 #x39a #x3f1 #x3a1 #x3f2 #x3f9 #x3f3 #x37f #x3f5 #x395 #x450 #x400 #x451 #x401 #x452 #x402 #x453 #x403 #x454 #x404 #x455 #x405 #x456 #x406 #x457 #x407 #x458 #x408 #x459 #x409 #x45a #x40a #x45b #x40b #x45c #x40c #x45d #x40d #x45e #x40e #x45f #x40f #x4cf #x4c0 #x13f8 #x13f0 #x13f9 #x13f1 #x13fa #x13f2 #x13fb #x13f3 #x13fc #x13f4 #x13fd #x13f5 #x1c80 #x412 #x1c81 #x414 #x1c82 #x41e #x1c83 #x421 #x1c84 #x422 #x1c85 #x422 #x1c86 #x42a #x1c87 #x462 #x1c88 #xa64a #x1d79 #xa77d #x1d7d #x2c63 #x1d8e #xa7c6 #x1e9b #x1e60 #x1f70 #x1fba #x1f71 #x1fbb #x1f72 #x1fc8 #x1f73 #x1fc9 #x1f74 #x1fca #x1f75 #x1fcb #x1f76 #x1fda #x1f77 #x1fdb #x1f78 #x1ff8 #x1f79 #x1ff9 #x1f7a #x1fea #x1f7b #x1feb #x1f7c #x1ffa #x1f7d #x1ffb #x1fb3 #x1fbc #x1fbe #x399 #x1fc3 #x1fcc #x1fe5 #x1fec #x1ff3 #x1ffc #x214e #x2132 #x2170 #x2160 #x2171 #x2161 #x2172 #x2162 #x2173 #x2163 #x2174 #x2164 #x2175 #x2165 #x2176 #x2166 #x2177 #x2167 #x2178 #x2168 #x2179 #x2169 #x217a #x216a #x217b #x216b #x217c #x216c #x217d #x216d #x217e #x216e #x217f #x216f #x2c65 #x23a #x2c66 #x23e #xa794 #xa7c4 #xab53 #xa7b3)) -(define char-foldcase-map (quote #(160 32 170 97 178 50 179 51 181 956 185 49 186 111 383 115 688 104 689 614 690 106 691 114 692 633 693 635 694 641 695 119 696 121 736 611 737 108 739 120 740 661 832 768 833 769 835 787 884 697 894 59 903 183 976 946 977 952 978 933 981 966 982 960 1008 954 1009 961 1010 962 1012 920 1013 949 1017 931 3852 3851 4348 4316 7468 65 7469 198 7470 66 7472 68 7473 69 7474 398 7475 71 7476 72 7477 73 7478 74 7479 75 7480 76 7481 77 7482 78 7484 79 7485 546 7486 80 7487 82 7488 84 7489 85 7490 87 7492 592 7493 593 7494 7426 7495 98 7496 100 7497 101 7498 601 7499 603 7500 604 7501 103 7503 107 7504 109 7505 331 7507 596 7508 7446 7509 7447 7510 112 7511 116 7512 117 7513 7453 7514 623 7515 118 7516 7461 7518 947 7519 948 7521 967 7522 105 7544 1085 7579 594 7580 99 7581 597 7582 240 7584 102 7585 607 7586 609 7587 613 7588 616 7589 617 7590 618 7591 7547 7592 669 7593 621 7594 7557 7595 671 7596 625 7597 624 7598 626 7599 627 7600 628 7601 629 7602 632 7603 642 7604 643 7605 427 7606 649 7607 650 7608 7452 7609 651 7610 652 7611 122 7612 656 7613 657 7614 658 8049 940 8051 941 8053 942 8055 943 8057 972 8059 973 8061 974 8123 902 8126 953 8137 904 8139 905 8147 912 8155 906 8163 944 8171 910 8174 901 8175 96 8185 908 8187 911 8189 180 8192 8194 8193 8195 8209 8208 8228 46 8304 48 8308 52 8309 53 8310 54 8311 55 8312 56 8313 57 8314 43 8315 8722 8316 61 8317 40 8318 41 8319 110 8450 67 8455 400 8463 295 8474 81 8484 90 8486 937 8491 197 8497 70 8501 1488 8502 1489 8503 1490 8504 1491 8510 915 8511 928 8512 8721 8548 86 8553 88 9001 12296 9002 12297 9416 83 9422 89 9440 113 11631 11617 11935 27597 12019 40863 12032 19968 12033 20008 12034 20022 12035 20031 12036 20057 12037 20101 12038 20108 12039 20128 12040 20154 12041 20799 12042 20837 12043 20843 12044 20866 12045 20886 12046 20907 12047 20960 12048 20981 12049 20992 12050 21147 12051 21241 12052 21269 12053 21274 12054 21304 12055 21313 12056 21340 12057 21353 12058 21378 12059 21430 12060 21448 12061 21475 12062 22231 12063 22303 12064 22763 12065 22786 12066 22794 12067 22805 12068 22823 12069 22899 12070 23376 12071 23424 12072 23544 12073 23567 12074 23586 12075 23608 12076 23662 12077 23665 12078 24027 12079 24037 12080 24049 12081 24062 12082 24178 12083 24186 12084 24191 12085 24308 12086 24318 12087 24331 12088 24339 12089 24400 12090 24417 12091 24435 12092 24515 12093 25096 12094 25142 12095 25163 12096 25903 12097 25908 12098 25991 12099 26007 12100 26020 12101 26041 12102 26080 12103 26085 12104 26352 12105 26376 12106 26408 12107 27424 12108 27490 12109 27513 12110 27571 12111 27595 12112 27604 12113 27611 12114 27663 12115 27668 12116 27700 12117 28779 12118 29226 12119 29238 12120 29243 12121 29247 12122 29255 12123 29273 12124 29275 12125 29356 12126 29572 12127 29577 12128 29916 12129 29926 12130 29976 12131 29983 12132 29992 12133 30000 12134 30091 12135 30098 12136 30326 12137 30333 12138 30382 12139 30399 12140 30446 12141 30683 12142 30690 12143 30707 12144 31034 12145 31160 12146 31166 12147 31348 12148 31435 12149 31481 12150 31859 12151 31992 12152 32566 12153 32593 12154 32650 12155 32701 12156 32769 12157 32780 12158 32786 12159 32819 12160 32895 12161 32905 12162 33251 12163 33258 12164 33267 12165 33276 12166 33292 12167 33307 12168 33311 12169 33390 12170 33394 12171 33400 12172 34381 12173 34411 12174 34880 12175 34892 12176 34915 12177 35198 12178 35211 12179 35282 12180 35328 12181 35895 12182 35910 12183 35925 12184 35960 12185 35997 12186 36196 12187 36208 12188 36275 12189 36523 12190 36554 12191 36763 12192 36784 12193 36789 12194 37009 12195 37193 12196 37318 12197 37324 12198 37329 12199 38263 12200 38272 12201 38428 12202 38582 12203 38585 12204 38632 12205 38737 12206 38750 12207 38754 12208 38761 12209 38859 12210 38893 12211 38899 12212 38913 12213 39080 12214 39131 12215 39135 12216 39318 12217 39321 12218 39340 12219 39592 12220 39640 12221 39647 12222 39717 12223 39727 12224 39730 12225 39740 12226 39770 12227 40165 12228 40565 12229 40575 12230 40613 12231 40635 12232 40643 12233 40653 12234 40657 12235 40697 12236 40701 12237 40718 12238 40723 12239 40736 12240 40763 12241 40778 12242 40786 12243 40845 12244 40860 12245 40864 12342 12306 12345 21316 12346 21317 12593 4352 12594 4353 12595 4522 12596 4354 12597 4524 12598 4525 12599 4355 12600 4356 12601 4357 12602 4528 12603 4529 12604 4530 12605 4531 12606 4532 12607 4533 12608 4378 12609 4358 12610 4359 12611 4360 12612 4385 12613 4361 12614 4362 12615 4363 12616 4364 12617 4365 12618 4366 12619 4367 12620 4368 12621 4369 12622 4370 12623 4449 12624 4450 12625 4451 12626 4452 12627 4453 12628 4454 12629 4455 12630 4456 12631 4457 12632 4458 12633 4459 12634 4460 12635 4461 12636 4462 12637 4463 12638 4464 12639 4465 12640 4466 12641 4467 12642 4468 12643 4469 12644 4448 12645 4372 12646 4373 12647 4551 12648 4552 12649 4556 12650 4558 12651 4563 12652 4567 12653 4569 12654 4380 12655 4573 12656 4575 12657 4381 12658 4382 12659 4384 12660 4386 12661 4387 12662 4391 12663 4393 12664 4395 12665 4396 12666 4397 12667 4398 12668 4399 12669 4402 12670 4406 12671 4416 12672 4423 12673 4428 12674 4593 12675 4594 12676 4439 12677 4440 12678 4441 12679 4484 12680 4485 12681 4488 12682 4497 12683 4498 12684 4500 12685 4510 12686 4513 12692 19977 12693 22235 12694 19978 12695 20013 12696 19979 12697 30002 12699 19993 12700 19969 12701 22825 12702 22320 12868 21839 12869 24188 12871 31631 12932 20116 12933 20845 12934 19971 12936 20061 12945 26666 12946 26377 12947 31038 12948 21517 12949 29305 12950 36001 12951 31069 12952 21172 12953 31192 12954 30007 12956 36969 12957 20778 12958 21360 12959 27880 12960 38917 12961 20241 12962 20889 12963 27491 12967 24038 12968 21491 12969 21307 12970 23447 12971 23398 12972 30435 12973 20225 12974 36039 12975 21332 12976 22812 13008 12450 13009 12452 13010 12454 13011 12456 13012 12458 13013 12459 13014 12461 13015 12463 13016 12465 13017 12467 13018 12469 13019 12471 13020 12473 13021 12475 13022 12477 13023 12479 13024 12481 13025 12484 13026 12486 13027 12488 13028 12490 13029 12491 13030 12492 13031 12493 13032 12494 13033 12495 13034 12498 13035 12501 13036 12504 13037 12507 13038 12510 13039 12511 13040 12512 13041 12513 13042 12514 13043 12516 13044 12518 13045 12520 13046 12521 13047 12522 13048 12523 13049 12524 13050 12525 13051 12527 13052 12528 13053 12529 13054 12530 42652 1098 42653 1100 42864 42863 43000 294 43001 339 43868 42791 43869 43831 43870 619 43871 43858 63744 35912 63745 26356 63747 36040 63748 28369 63749 20018 63750 21477 63753 22865 63755 21895 63756 22856 63757 25078 63758 30313 63759 32645 63760 34367 63761 34746 63762 35064 63763 37007 63764 27138 63765 27931 63766 28889 63767 29662 63768 33853 63769 37226 63770 39409 63771 20098 63772 21365 63773 27396 63774 29211 63775 34349 63776 40478 63777 23888 63778 28651 63779 34253 63780 35172 63781 25289 63782 33240 63783 34847 63784 24266 63785 26391 63786 28010 63787 29436 63788 37070 63789 20358 63790 20919 63791 21214 63792 25796 63793 27347 63794 29200 63795 30439 63797 34310 63798 34396 63799 36335 63800 38706 63801 39791 63802 40442 63803 30860 63804 31103 63805 32160 63806 33737 63807 37636 63809 35542 63810 22751 63811 24324 63812 31840 63813 32894 63814 29282 63815 30922 63816 36034 63817 38647 63818 22744 63819 23650 63820 27155 63821 28122 63822 28431 63823 32047 63824 32311 63825 38475 63826 21202 63827 32907 63828 20956 63829 20940 63830 31260 63831 32190 63832 33777 63833 38517 63834 35712 63835 25295 63837 35582 63838 20025 63839 23527 63840 24594 63841 29575 63842 30064 63843 21271 63844 30971 63845 20415 63846 24489 63847 19981 63848 27852 63849 25976 63850 32034 63851 21443 63852 22622 63853 30465 63854 33865 63855 35498 63856 27578 63858 27784 63859 25342 63860 33509 63861 25504 63862 30053 63863 20142 63864 20841 63865 20937 63866 26753 63867 31975 63868 33391 63869 35538 63870 37327 63871 21237 63872 21570 63874 24300 63875 26053 63876 28670 63877 31018 63878 38317 63879 39530 63880 40599 63881 40654 63883 26310 63884 27511 63885 36706 63886 24180 63887 24976 63888 25088 63889 25754 63890 28451 63891 29001 63892 29833 63893 31178 63894 32244 63895 32879 63896 36646 63897 34030 63898 36899 63899 37706 63900 21015 63901 21155 63902 21693 63903 28872 63904 35010 63906 24265 63907 24565 63908 25467 63909 27566 63910 31806 63911 29557 63912 20196 63913 22265 63915 23994 63916 24604 63917 29618 63918 29801 63919 32666 63920 32838 63921 37428 63922 38646 63923 38728 63924 38936 63925 20363 63926 31150 63927 37300 63928 38584 63929 24801 63930 20102 63931 20698 63932 23534 63933 23615 63934 26009 63936 29134 63937 30274 63938 34044 63939 36988 63941 26248 63942 38446 63943 21129 63944 26491 63945 26611 63946 27969 63947 28316 63948 29705 63949 30041 63950 30827 63951 32016 63952 39006 63954 25134 63955 38520 63956 20523 63957 23833 63958 28138 63959 36650 63960 24459 63961 24900 63962 26647 63964 38534 63965 21033 63966 21519 63967 23653 63968 26131 63969 26446 63970 26792 63971 27877 63972 29702 63973 30178 63974 32633 63975 35023 63976 35041 63978 38626 63979 21311 63980 28346 63981 21533 63982 29136 63983 29848 63984 34298 63985 38563 63986 40023 63987 40607 63988 26519 63989 28107 63990 33256 63992 31520 63993 31890 63994 29376 63995 28825 63996 35672 63997 20160 63998 33590 63999 21050 64000 20999 64001 24230 64002 25299 64003 31958 64004 23429 64005 27934 64006 26292 64007 36667 64009 38477 64011 24275 64012 20800 64013 21952 64016 22618 64018 26228 64021 20958 64022 29482 64023 30410 64024 31036 64025 31070 64026 31077 64027 31119 64028 38742 64029 31934 64032 34322 64034 35576 64037 36920 64038 37117 64042 39151 64043 39164 64044 39208 64045 40372 64046 37086 64047 38583 64048 20398 64049 20711 64050 20813 64051 21193 64052 21220 64053 21329 64054 21917 64055 22022 64056 22120 64057 22592 64058 22696 64059 23652 64061 24724 64062 24936 64063 24974 64064 25074 64065 25935 64066 26082 64067 26257 64068 26757 64069 28023 64070 28186 64071 28450 64072 29038 64073 29227 64074 29730 64075 30865 64077 31049 64078 31048 64079 31056 64080 31062 64082 31117 64083 31118 64084 31296 64085 31361 64086 31680 64088 32265 64089 32321 64090 32626 64091 32773 64092 33261 64093 33401 64095 33879 64096 35088 64097 35222 64098 35585 64099 35641 64100 36051 64101 36104 64102 36790 64104 38627 64105 38911 64106 38971 64107 24693 64108 148206 64109 33304 64112 20006 64113 20917 64114 20840 64115 20352 64116 20805 64117 20864 64118 21191 64119 21242 64121 21845 64122 21913 64123 21986 64125 22707 64126 22852 64127 22868 64128 23138 64129 23336 64130 24274 64131 24281 64132 24425 64133 24493 64134 24792 64135 24910 64136 24840 64138 24928 64140 25140 64141 25540 64142 25628 64143 25682 64144 25942 64147 26395 64148 26454 64152 28379 64153 28363 64155 28702 64157 30631 64158 29237 64159 29359 64161 29809 64162 29958 64163 30011 64164 30237 64165 30239 64167 30427 64168 30452 64169 30538 64170 30528 64171 30924 64172 31409 64174 31867 64175 32091 64177 32574 64179 33618 64180 33775 64181 34681 64182 35137 64183 35206 64185 35519 64187 35531 64190 35565 64192 35722 64194 36664 64195 36978 64196 37273 64197 37494 64198 38524 64201 38875 64203 38923 64205 39698 64207 141386 64208 141380 64209 144341 64210 15261 64211 16408 64212 16441 64213 152137 64214 154832 64215 163539 64216 40771 64217 40846 64288 1506 64291 1492 64292 1499 64293 1500 64294 1501 64295 1512 64296 1514 64336 1649 64338 1659 64342 1662 64346 1664 64350 1658 64354 1663 64358 1657 64362 1700 64366 1702 64370 1668 64374 1667 64378 1670 64382 1671 64386 1677 64388 1676 64390 1678 64392 1672 64394 1688 64396 1681 64398 1705 64402 1711 64406 1715 64410 1713 64414 1722 64416 1723 64420 1728 64422 1729 64426 1726 64430 1746 64432 1747 64467 1709 64471 1735 64473 1734 64475 1736 64477 1655 64478 1739 64480 1733 64482 1737 64484 1744 64488 1609 64508 1740 65040 44 65041 12289 65042 12290 65043 58 65045 33 65046 63 65047 12310 65048 12311 65049 8230 65072 8229 65073 8212 65074 8211 65075 95 65079 123 65080 125 65081 12308 65082 12309 65083 12304 65084 12305 65085 12298 65086 12299 65089 12300 65090 12301 65091 12302 65092 12303 65095 91 65096 93 65097 8254 65119 35 65120 38 65121 42 65123 45 65124 60 65125 62 65128 92 65129 36 65130 37 65131 64 65152 1569 65153 1570 65155 1571 65157 1572 65159 1573 65161 1574 65165 1575 65167 1576 65171 1577 65173 1578 65177 1579 65181 1580 65185 1581 65189 1582 65193 1583 65195 1584 65197 1585 65199 1586 65201 1587 65205 1588 65209 1589 65213 1590 65217 1591 65221 1592 65225 1593 65229 1594 65233 1601 65237 1602 65241 1603 65245 1604 65249 1605 65253 1606 65257 1607 65261 1608 65265 1610 65282 34 65287 39 65295 47 65342 94 65372 124 65374 126 65375 10629 65376 10630 65381 12539 65383 12449 65384 12451 65385 12453 65386 12455 65387 12457 65388 12515 65389 12517 65390 12519 65391 12483 65392 12540 65437 12531 65438 12441 65439 12442 65440 12644 65441 12593 65442 12594 65443 12595 65444 12596 65445 12597 65446 12598 65447 12599 65448 12600 65449 12601 65450 12602 65451 12603 65452 12604 65453 12605 65454 12606 65455 12607 65456 12608 65457 12609 65458 12610 65459 12611 65460 12612 65461 12613 65462 12614 65463 12615 65464 12616 65465 12617 65466 12618 65467 12619 65468 12620 65469 12621 65470 12622 65474 12623 65475 12624 65476 12625 65477 12626 65478 12627 65479 12628 65482 12629 65483 12630 65484 12631 65485 12632 65486 12633 65487 12634 65490 12635 65491 12636 65492 12637 65493 12638 65494 12639 65495 12640 65498 12641 65499 12642 65500 12643 65504 162 65505 163 65506 172 65507 175 65508 166 65509 165 65510 8361 65512 9474 65513 8592 65514 8593 65515 8594 65516 8595 65517 9632 65518 9675 120484 305 120485 567 120488 913 120489 914 120491 916 120492 917 120493 918 120494 919 120496 921 120497 922 120498 923 120499 924 120500 925 120501 926 120502 927 120504 929 120505 1012 120507 932 120509 934 120510 935 120511 936 120513 8711 120514 945 120519 950 120520 951 120524 955 120526 957 120527 958 120528 959 120532 963 120533 964 120534 965 120537 968 120538 969 120539 8706 120540 1013 120541 977 120542 1008 120543 981 120544 1009 120545 982 120778 988 120779 989 126492 1646 126494 1697 126495 1647 127505 23383 127506 21452 127507 12487 127509 22810 127510 35299 127512 20132 127513 26144 127514 28961 127516 21069 127517 24460 127518 20877 127519 26032 127520 21021 127521 32066 127523 36009 127524 22768 127525 21561 127526 28436 127527 25237 127528 25429 127531 36938 127535 25351 127537 25171 127538 31105 127539 31354 127540 21512 127541 28288 127544 30003 127545 21106 127546 21942 127547 37197 127568 24471 127569 21487 194560 20029 194561 20024 194562 20033 194563 131362 194564 20320 194566 20411 194567 20482 194568 20602 194569 20633 194571 20687 194572 13470 194573 132666 194575 20820 194576 20836 194577 20855 194578 132380 194579 13497 194580 20839 194582 132427 194583 20887 194584 20900 194585 20172 194586 20908 194588 168415 194590 20995 194591 13535 194592 21051 194593 21062 194595 21111 194596 13589 194601 21253 194602 21254 194604 21321 194606 21338 194607 21363 194608 21373 194609 21375 194612 133676 194613 28784 194614 21450 194615 21471 194616 133987 194617 21483 194618 21489 194619 21510 194620 21662 194621 21560 194622 21576 194623 21608 194624 21666 194625 21750 194626 21776 194627 21843 194628 21859 194629 21892 194632 21931 194633 21939 194634 21954 194635 22294 194637 22295 194638 22097 194639 22132 194641 22766 194642 22478 194643 22516 194644 22541 194645 22411 194646 22578 194647 22577 194648 22700 194649 136420 194650 22770 194651 22775 194652 22790 194654 22818 194655 22882 194656 136872 194657 136938 194658 23020 194659 23067 194660 23079 194661 23000 194662 23142 194663 14062 194664 14076 194665 23304 194666 23358 194668 137672 194669 23491 194670 23512 194672 23539 194673 138008 194674 23551 194675 23558 194676 24403 194678 14209 194679 23648 194681 23744 194682 23693 194683 138724 194684 23875 194685 138726 194686 23918 194687 23915 194688 23932 194689 24033 194690 24034 194691 14383 194692 24061 194693 24104 194694 24125 194695 24169 194696 14434 194697 139651 194698 14460 194699 24240 194700 24243 194701 24246 194703 172946 194705 140081 194707 33281 194708 24354 194710 14535 194711 144056 194712 156122 194713 24418 194714 24427 194715 14563 194716 24474 194717 24525 194718 24535 194719 24569 194720 24705 194721 14650 194722 14620 194724 141012 194725 24775 194726 24904 194727 24908 194730 24954 194732 25010 194733 24996 194734 25007 194735 25054 194738 25104 194739 25115 194740 25181 194741 25265 194742 25300 194743 25424 194744 142092 194745 25405 194746 25340 194747 25448 194748 25475 194749 25572 194750 142321 194751 25634 194752 25541 194753 25513 194754 14894 194755 25705 194756 25726 194757 25757 194758 25719 194759 14956 194761 25964 194762 143370 194763 26083 194764 26360 194765 26185 194766 15129 194768 15112 194769 15076 194770 20882 194771 20885 194772 26368 194773 26268 194774 32941 194775 17369 194778 26401 194779 26462 194780 26451 194781 144323 194782 15177 194783 26618 194784 26501 194785 26706 194787 144493 194788 26766 194789 26655 194790 26900 194792 26946 194793 27043 194794 27114 194795 27304 194796 145059 194797 27355 194798 15384 194799 27425 194800 145575 194801 27476 194802 15438 194803 27506 194804 27551 194806 27579 194807 146061 194808 138507 194809 146170 194810 27726 194811 146620 194812 27839 194813 27853 194814 27751 194815 27926 194816 27966 194819 28009 194820 28024 194821 28037 194822 146718 194823 27956 194824 28207 194825 28270 194826 15667 194828 28359 194829 147153 194830 28153 194831 28526 194832 147294 194833 147342 194834 28614 194835 28729 194837 28699 194838 15766 194839 28746 194840 28797 194841 28791 194842 28845 194843 132389 194844 28997 194845 148067 194846 29084 194847 148395 194848 29224 194850 29264 194851 149000 194852 29312 194853 29333 194854 149301 194855 149524 194856 29562 194857 29579 194858 16044 194859 29605 194860 16056 194862 29767 194863 29788 194865 29829 194866 29898 194867 16155 194868 29988 194869 150582 194870 30014 194871 150674 194873 139679 194874 30224 194875 151457 194876 151480 194877 151620 194878 16380 194879 16392 194881 151795 194882 151794 194883 151833 194884 151859 194885 30494 194886 30495 194890 30603 194891 16454 194892 16534 194893 152605 194894 30798 194897 16611 194898 153126 194900 153242 194901 153285 194903 31211 194904 16687 194906 31306 194907 31311 194908 153980 194909 154279 194911 31470 194912 16898 194913 154539 194914 31686 194915 31689 194916 16935 194917 154752 194918 31954 194919 17056 194920 31976 194921 31971 194922 32000 194923 155526 194924 32099 194925 17153 194926 32199 194927 32258 194928 32325 194929 17204 194930 156200 194931 156231 194932 17241 194933 156377 194934 32634 194935 156478 194936 32661 194937 32762 194939 156890 194940 156963 194941 32864 194942 157096 194943 32880 194944 144223 194945 17365 194946 32946 194947 33027 194948 17419 194949 33086 194950 23221 194951 157607 194952 157621 194953 144275 194954 144284 194956 33284 194957 36766 194958 17515 194959 33425 194960 33419 194961 33437 194962 21171 194963 33457 194964 33459 194965 33469 194966 33510 194967 158524 194969 33565 194970 33635 194971 33709 194972 33571 194973 33725 194974 33767 194976 33619 194977 33738 194978 33740 194979 33756 194980 158774 194981 159083 194982 158933 194983 17707 194984 34033 194985 34035 194986 34070 194987 160714 194988 34148 194989 159532 194990 17757 194991 17761 194992 159665 194993 159954 194994 17771 194995 34384 194997 34407 194998 34409 194999 34473 195000 34440 195001 34574 195002 34530 195004 34600 195005 34667 195006 34694 195007 17879 195008 34785 195009 34817 195010 17913 195011 34912 195013 161383 195014 35031 195015 35038 195016 17973 195017 35066 195018 13499 195019 161966 195020 162150 195021 18110 195022 18119 195023 35488 195027 162984 195028 36011 195029 36033 195030 36123 195031 36215 195032 163631 195033 133124 195034 36299 195035 36284 195036 36336 195037 133342 195038 36564 195040 165330 195041 165357 195042 37012 195043 37105 195044 37137 195045 165678 195046 37147 195047 37432 195048 37591 195049 37592 195050 37500 195051 37881 195052 37909 195053 166906 195054 38283 195055 18837 195056 38327 195057 167287 195058 18918 195059 38595 195060 23986 195061 38691 195062 168261 195063 168474 195064 19054 195065 19062 195066 38880 195067 168970 195068 19122 195069 169110 195072 38953 195073 169398 195074 39138 195075 19251 195076 39209 195077 39335 195078 39362 195079 39422 195080 19406 195081 170800 195083 40000 195084 40189 195085 19662 195086 19693 195087 40295 195088 172238 195089 19704 195090 172293 195091 172558 195092 172689 195094 19798 195096 40702 195097 40709 195098 40719 195099 40726 195101 173568))) +(define char-foldcase-map + '#(#x41 #x61 #x42 #x62 #x43 #x63 #x44 #x64 #x45 #x65 #x46 #x66 #x47 #x67 #x48 #x68 #x49 #x69 #x4a #x6a #x4b #x6b #x4c #x6c #x4d #x6d #x4e #x6e #x4f #x6f #x50 #x70 #x51 #x71 #x52 #x72 #x53 #x73 #x54 #x74 #x55 #x75 #x56 #x76 #x57 #x77 #x58 #x78 #x59 #x79 #x5a #x7a #xb5 #x3bc #xc0 #xe0 #xc1 #xe1 #xc2 #xe2 #xc3 #xe3 #xc4 #xe4 #xc5 #xe5 #xc6 #xe6 #xc7 #xe7 #xc8 #xe8 #xc9 #xe9 #xca #xea #xcb #xeb #xcc #xec #xcd #xed #xce #xee #xcf #xef #xd0 #xf0 #xd1 #xf1 #xd2 #xf2 #xd3 #xf3 #xd4 #xf4 #xd5 #xf5 #xd6 #xf6 #xd8 #xf8 #xd9 #xf9 #xda #xfa #xdb #xfb #xdc #xfc #xdd #xfd #xde #xfe #x100 #x101 #x102 #x103 #x104 #x105 #x106 #x107 #x108 #x109 #x10a #x10b #x10c #x10d #x10e #x10f #x110 #x111 #x112 #x113 #x114 #x115 #x116 #x117 #x118 #x119 #x11a #x11b #x11c #x11d #x11e #x11f #x120 #x121 #x122 #x123 #x124 #x125 #x126 #x127 #x128 #x129 #x12a #x12b #x12c #x12d #x12e #x12f #x132 #x133 #x134 #x135 #x136 #x137 #x139 #x13a #x13b #x13c #x13d #x13e #x13f #x140 #x141 #x142 #x143 #x144 #x145 #x146 #x147 #x148 #x14a #x14b #x14c #x14d #x14e #x14f #x150 #x151 #x152 #x153 #x154 #x155 #x156 #x157 #x158 #x159 #x15a #x15b #x15c #x15d #x15e #x15f #x160 #x161 #x162 #x163 #x164 #x165 #x166 #x167 #x168 #x169 #x16a #x16b #x16c #x16d #x16e #x16f #x170 #x171 #x172 #x173 #x174 #x175 #x176 #x177 #x178 #xff #x179 #x17a #x17b #x17c #x17d #x17e #x17f #x73 #x181 #x253 #x182 #x183 #x184 #x185 #x186 #x254 #x187 #x188 #x189 #x256 #x18a #x257 #x18b #x18c #x18e #x1dd #x18f #x259 #x190 #x25b #x191 #x192 #x193 #x260 #x194 #x263 #x196 #x269 #x197 #x268 #x198 #x199 #x19c #x26f #x19d #x272 #x19f #x275 #x1a0 #x1a1 #x1a2 #x1a3 #x1a4 #x1a5 #x1a6 #x280 #x1a7 #x1a8 #x1a9 #x283 #x1ac #x1ad #x1ae #x288 #x1af #x1b0 #x1b1 #x28a #x1b2 #x28b #x1b3 #x1b4 #x1b5 #x1b6 #x1b7 #x292 #x1b8 #x1b9 #x1bc #x1bd #x1c4 #x1c6 #x1c5 #x1c6 #x1c7 #x1c9 #x1c8 #x1c9 #x1ca #x1cc #x1cb #x1cc #x1cd #x1ce #x1cf #x1d0 #x1d1 #x1d2 #x1d3 #x1d4 #x1d5 #x1d6 #x1d7 #x1d8 #x1d9 #x1da #x1db #x1dc #x1de #x1df #x1e0 #x1e1 #x1e2 #x1e3 #x1e4 #x1e5 #x1e6 #x1e7 #x1e8 #x1e9 #x1ea #x1eb #x1ec #x1ed #x1ee #x1ef #x1f1 #x1f3 #x1f2 #x1f3 #x1f4 #x1f5 #x1f6 #x195 #x1f7 #x1bf #x1f8 #x1f9 #x1fa #x1fb #x1fc #x1fd #x1fe #x1ff #x200 #x201 #x202 #x203 #x204 #x205 #x206 #x207 #x208 #x209 #x20a #x20b #x20c #x20d #x20e #x20f #x210 #x211 #x212 #x213 #x214 #x215 #x216 #x217 #x218 #x219 #x21a #x21b #x21c #x21d #x21e #x21f #x220 #x19e #x222 #x223 #x224 #x225 #x226 #x227 #x228 #x229 #x22a #x22b #x22c #x22d #x22e #x22f #x230 #x231 #x232 #x233 #x23a #x2c65 #x23b #x23c #x23d #x19a #x23e #x2c66 #x241 #x242 #x243 #x180 #x244 #x289 #x245 #x28c #x246 #x247 #x248 #x249 #x24a #x24b #x24c #x24d #x24e #x24f #x345 #x3b9 #x370 #x371 #x372 #x373 #x376 #x377 #x37f #x3f3 #x386 #x3ac #x388 #x3ad #x389 #x3ae #x38a #x3af #x38c #x3cc #x38e #x3cd #x38f #x3ce #x391 #x3b1 #x392 #x3b2 #x393 #x3b3 #x394 #x3b4 #x395 #x3b5 #x396 #x3b6 #x397 #x3b7 #x398 #x3b8 #x399 #x3b9 #x39a #x3ba #x39b #x3bb #x39c #x3bc #x39d #x3bd #x39e #x3be #x39f #x3bf #x3a0 #x3c0 #x3a1 #x3c1 #x3a3 #x3c3 #x3a4 #x3c4 #x3a5 #x3c5 #x3a6 #x3c6 #x3a7 #x3c7 #x3a8 #x3c8 #x3a9 #x3c9 #x3aa #x3ca #x3ab #x3cb #x3c2 #x3c3 #x3cf #x3d7 #x3d0 #x3b2 #x3d1 #x3b8 #x3d5 #x3c6 #x3d6 #x3c0 #x3d8 #x3d9 #x3da #x3db #x3dc #x3dd #x3de #x3df #x3e0 #x3e1 #x3e2 #x3e3 #x3e4 #x3e5 #x3e6 #x3e7 #x3e8 #x3e9 #x3ea #x3eb #x3ec #x3ed #x3ee #x3ef #x3f0 #x3ba #x3f1 #x3c1 #x3f4 #x3b8 #x3f5 #x3b5 #x3f7 #x3f8 #x3f9 #x3f2 #x3fa #x3fb #x3fd #x37b #x3fe #x37c #x3ff #x37d #x400 #x450 #x401 #x451 #x402 #x452 #x403 #x453 #x404 #x454 #x405 #x455 #x406 #x456 #x407 #x457 #x408 #x458 #x409 #x459 #x40a #x45a #x40b #x45b #x40c #x45c #x40d #x45d #x40e #x45e #x40f #x45f #x410 #x430 #x411 #x431 #x412 #x432 #x413 #x433 #x414 #x434 #x415 #x435 #x416 #x436 #x417 #x437 #x418 #x438 #x419 #x439 #x41a #x43a #x41b #x43b #x41c #x43c #x41d #x43d #x41e #x43e #x41f #x43f #x420 #x440 #x421 #x441 #x422 #x442 #x423 #x443 #x424 #x444 #x425 #x445 #x426 #x446 #x427 #x447 #x428 #x448 #x429 #x449 #x42a #x44a #x42b #x44b #x42c #x44c #x42d #x44d #x42e #x44e #x42f #x44f #x460 #x461 #x462 #x463 #x464 #x465 #x466 #x467 #x468 #x469 #x46a #x46b #x46c #x46d #x46e #x46f #x470 #x471 #x472 #x473 #x474 #x475 #x476 #x477 #x478 #x479 #x47a #x47b #x47c #x47d #x47e #x47f #x480 #x481 #x48a #x48b #x48c #x48d #x48e #x48f #x490 #x491 #x492 #x493 #x494 #x495 #x496 #x497 #x498 #x499 #x49a #x49b #x49c #x49d #x49e #x49f #x4a0 #x4a1 #x4a2 #x4a3 #x4a4 #x4a5 #x4a6 #x4a7 #x4a8 #x4a9 #x4aa #x4ab #x4ac #x4ad #x4ae #x4af #x4b0 #x4b1 #x4b2 #x4b3 #x4b4 #x4b5 #x4b6 #x4b7 #x4b8 #x4b9 #x4ba #x4bb #x4bc #x4bd #x4be #x4bf #x4c0 #x4cf #x4c1 #x4c2 #x4c3 #x4c4 #x4c5 #x4c6 #x4c7 #x4c8 #x4c9 #x4ca #x4cb #x4cc #x4cd #x4ce #x4d0 #x4d1 #x4d2 #x4d3 #x4d4 #x4d5 #x4d6 #x4d7 #x4d8 #x4d9 #x4da #x4db #x4dc #x4dd #x4de #x4df #x4e0 #x4e1 #x4e2 #x4e3 #x4e4 #x4e5 #x4e6 #x4e7 #x4e8 #x4e9 #x4ea #x4eb #x4ec #x4ed #x4ee #x4ef #x4f0 #x4f1 #x4f2 #x4f3 #x4f4 #x4f5 #x4f6 #x4f7 #x4f8 #x4f9 #x4fa #x4fb #x4fc #x4fd #x4fe #x4ff #x500 #x501 #x502 #x503 #x504 #x505 #x506 #x507 #x508 #x509 #x50a #x50b #x50c #x50d #x50e #x50f #x510 #x511 #x512 #x513 #x514 #x515 #x516 #x517 #x518 #x519 #x51a #x51b #x51c #x51d #x51e #x51f #x520 #x521 #x522 #x523 #x524 #x525 #x526 #x527 #x528 #x529 #x52a #x52b #x52c #x52d #x52e #x52f #x531 #x561 #x532 #x562 #x533 #x563 #x534 #x564 #x535 #x565 #x536 #x566 #x537 #x567 #x538 #x568 #x539 #x569 #x53a #x56a #x53b #x56b #x53c #x56c #x53d #x56d #x53e #x56e #x53f #x56f #x540 #x570 #x541 #x571 #x542 #x572 #x543 #x573 #x544 #x574 #x545 #x575 #x546 #x576 #x547 #x577 #x548 #x578 #x549 #x579 #x54a #x57a #x54b #x57b #x54c #x57c #x54d #x57d #x54e #x57e #x54f #x57f #x550 #x580 #x551 #x581 #x552 #x582 #x553 #x583 #x554 #x584 #x555 #x585 #x556 #x586 #x10a0 #x2d00 #x10a1 #x2d01 #x10a2 #x2d02 #x10a3 #x2d03 #x10a4 #x2d04 #x10a5 #x2d05 #x10a6 #x2d06 #x10a7 #x2d07 #x10a8 #x2d08 #x10a9 #x2d09 #x10aa #x2d0a #x10ab #x2d0b #x10ac #x2d0c #x10ad #x2d0d #x10ae #x2d0e #x10af #x2d0f #x10b0 #x2d10 #x10b1 #x2d11 #x10b2 #x2d12 #x10b3 #x2d13 #x10b4 #x2d14 #x10b5 #x2d15 #x10b6 #x2d16 #x10b7 #x2d17 #x10b8 #x2d18 #x10b9 #x2d19 #x10ba #x2d1a #x10bb #x2d1b #x10bc #x2d1c #x10bd #x2d1d #x10be #x2d1e #x10bf #x2d1f #x10c0 #x2d20 #x10c1 #x2d21 #x10c2 #x2d22 #x10c3 #x2d23 #x10c4 #x2d24 #x10c5 #x2d25 #x10c7 #x2d27 #x10cd #x2d2d #x13f8 #x13f0 #x13f9 #x13f1 #x13fa #x13f2 #x13fb #x13f3 #x13fc #x13f4 #x13fd #x13f5 #x1c80 #x432 #x1c81 #x434 #x1c82 #x43e #x1c83 #x441 #x1c84 #x442 #x1c85 #x442 #x1c86 #x44a #x1c87 #x463 #x1c88 #xa64b #x1c90 #x10d0 #x1c91 #x10d1 #x1c92 #x10d2 #x1c93 #x10d3 #x1c94 #x10d4 #x1c95 #x10d5 #x1c96 #x10d6 #x1c97 #x10d7 #x1c98 #x10d8 #x1c99 #x10d9 #x1c9a #x10da #x1c9b #x10db #x1c9c #x10dc #x1c9d #x10dd #x1c9e #x10de #x1c9f #x10df #x1ca0 #x10e0 #x1ca1 #x10e1 #x1ca2 #x10e2 #x1ca3 #x10e3 #x1ca4 #x10e4 #x1ca5 #x10e5 #x1ca6 #x10e6 #x1ca7 #x10e7 #x1ca8 #x10e8 #x1ca9 #x10e9 #x1caa #x10ea #x1cab #x10eb #x1cac #x10ec #x1cad #x10ed #x1cae #x10ee #x1caf #x10ef #x1cb0 #x10f0 #x1cb1 #x10f1 #x1cb2 #x10f2 #x1cb3 #x10f3 #x1cb4 #x10f4 #x1cb5 #x10f5 #x1cb6 #x10f6 #x1cb7 #x10f7 #x1cb8 #x10f8 #x1cb9 #x10f9 #x1cba #x10fa #x1cbd #x10fd #x1cbe #x10fe #x1cbf #x10ff #x1e00 #x1e01 #x1e02 #x1e03 #x1e04 #x1e05 #x1e06 #x1e07 #x1e08 #x1e09 #x1e0a #x1e0b #x1e0c #x1e0d #x1e0e #x1e0f #x1e10 #x1e11 #x1e12 #x1e13 #x1e14 #x1e15 #x1e16 #x1e17 #x1e18 #x1e19 #x1e1a #x1e1b #x1e1c #x1e1d #x1e1e #x1e1f #x1e20 #x1e21 #x1e22 #x1e23 #x1e24 #x1e25 #x1e26 #x1e27 #x1e28 #x1e29 #x1e2a #x1e2b #x1e2c #x1e2d #x1e2e #x1e2f #x1e30 #x1e31 #x1e32 #x1e33 #x1e34 #x1e35 #x1e36 #x1e37 #x1e38 #x1e39 #x1e3a #x1e3b #x1e3c #x1e3d #x1e3e #x1e3f #x1e40 #x1e41 #x1e42 #x1e43 #x1e44 #x1e45 #x1e46 #x1e47 #x1e48 #x1e49 #x1e4a #x1e4b #x1e4c #x1e4d #x1e4e #x1e4f #x1e50 #x1e51 #x1e52 #x1e53 #x1e54 #x1e55 #x1e56 #x1e57 #x1e58 #x1e59 #x1e5a #x1e5b #x1e5c #x1e5d #x1e5e #x1e5f #x1e60 #x1e61 #x1e62 #x1e63 #x1e64 #x1e65 #x1e66 #x1e67 #x1e68 #x1e69 #x1e6a #x1e6b #x1e6c #x1e6d #x1e6e #x1e6f #x1e70 #x1e71 #x1e72 #x1e73 #x1e74 #x1e75 #x1e76 #x1e77 #x1e78 #x1e79 #x1e7a #x1e7b #x1e7c #x1e7d #x1e7e #x1e7f #x1e80 #x1e81 #x1e82 #x1e83 #x1e84 #x1e85 #x1e86 #x1e87 #x1e88 #x1e89 #x1e8a #x1e8b #x1e8c #x1e8d #x1e8e #x1e8f #x1e90 #x1e91 #x1e92 #x1e93 #x1e94 #x1e95 #x1e9b #x1e61 #x1e9e #xdf #x1ea0 #x1ea1 #x1ea2 #x1ea3 #x1ea4 #x1ea5 #x1ea6 #x1ea7 #x1ea8 #x1ea9 #x1eaa #x1eab #x1eac #x1ead #x1eae #x1eaf #x1eb0 #x1eb1 #x1eb2 #x1eb3 #x1eb4 #x1eb5 #x1eb6 #x1eb7 #x1eb8 #x1eb9 #x1eba #x1ebb #x1ebc #x1ebd #x1ebe #x1ebf #x1ec0 #x1ec1 #x1ec2 #x1ec3 #x1ec4 #x1ec5 #x1ec6 #x1ec7 #x1ec8 #x1ec9 #x1eca #x1ecb #x1ecc #x1ecd #x1ece #x1ecf #x1ed0 #x1ed1 #x1ed2 #x1ed3 #x1ed4 #x1ed5 #x1ed6 #x1ed7 #x1ed8 #x1ed9 #x1eda #x1edb #x1edc #x1edd #x1ede #x1edf #x1ee0 #x1ee1 #x1ee2 #x1ee3 #x1ee4 #x1ee5 #x1ee6 #x1ee7 #x1ee8 #x1ee9 #x1eea #x1eeb #x1eec #x1eed #x1eee #x1eef #x1ef0 #x1ef1 #x1ef2 #x1ef3 #x1ef4 #x1ef5 #x1ef6 #x1ef7 #x1ef8 #x1ef9 #x1efa #x1efb #x1efc #x1efd #x1efe #x1eff #x1f08 #x1f00 #x1f09 #x1f01 #x1f0a #x1f02 #x1f0b #x1f03 #x1f0c #x1f04 #x1f0d #x1f05 #x1f0e #x1f06 #x1f0f #x1f07 #x1f18 #x1f10 #x1f19 #x1f11 #x1f1a #x1f12 #x1f1b #x1f13 #x1f1c #x1f14 #x1f1d #x1f15 #x1f28 #x1f20 #x1f29 #x1f21 #x1f2a #x1f22 #x1f2b #x1f23 #x1f2c #x1f24 #x1f2d #x1f25 #x1f2e #x1f26 #x1f2f #x1f27 #x1f38 #x1f30 #x1f39 #x1f31 #x1f3a #x1f32 #x1f3b #x1f33 #x1f3c #x1f34 #x1f3d #x1f35 #x1f3e #x1f36 #x1f3f #x1f37 #x1f48 #x1f40 #x1f49 #x1f41 #x1f4a #x1f42 #x1f4b #x1f43 #x1f4c #x1f44 #x1f4d #x1f45 #x1f59 #x1f51 #x1f5b #x1f53 #x1f5d #x1f55 #x1f5f #x1f57 #x1f68 #x1f60 #x1f69 #x1f61 #x1f6a #x1f62 #x1f6b #x1f63 #x1f6c #x1f64 #x1f6d #x1f65 #x1f6e #x1f66 #x1f6f #x1f67 #x1f88 #x1f80 #x1f89 #x1f81 #x1f8a #x1f82 #x1f8b #x1f83 #x1f8c #x1f84 #x1f8d #x1f85 #x1f8e #x1f86 #x1f8f #x1f87 #x1f98 #x1f90 #x1f99 #x1f91 #x1f9a #x1f92 #x1f9b #x1f93 #x1f9c #x1f94 #x1f9d #x1f95 #x1f9e #x1f96 #x1f9f #x1f97 #x1fa8 #x1fa0 #x1fa9 #x1fa1 #x1faa #x1fa2 #x1fab #x1fa3 #x1fac #x1fa4 #x1fad #x1fa5 #x1fae #x1fa6 #x1faf #x1fa7 #x1fb8 #x1fb0 #x1fb9 #x1fb1 #x1fba #x1f70 #x1fbb #x1f71 #x1fbc #x1fb3 #x1fbe #x3b9 #x1fc8 #x1f72 #x1fc9 #x1f73 #x1fca #x1f74 #x1fcb #x1f75 #x1fcc #x1fc3 #x1fd8 #x1fd0 #x1fd9 #x1fd1 #x1fda #x1f76 #x1fdb #x1f77 #x1fe8 #x1fe0 #x1fe9 #x1fe1 #x1fea #x1f7a #x1feb #x1f7b #x1fec #x1fe5 #x1ff8 #x1f78 #x1ff9 #x1f79 #x1ffa #x1f7c #x1ffb #x1f7d #x1ffc #x1ff3 #x2126 #x3c9 #x212a #x6b #x212b #xe5 #x2132 #x214e #x2160 #x2170 #x2161 #x2171 #x2162 #x2172 #x2163 #x2173 #x2164 #x2174 #x2165 #x2175 #x2166 #x2176 #x2167 #x2177 #x2168 #x2178 #x2169 #x2179 #x216a #x217a #x216b #x217b #x216c #x217c #x216d #x217d #x216e #x217e #x216f #x217f #x2183 #x2184 #x24b6 #x24d0 #x24b7 #x24d1 #x24b8 #x24d2 #x24b9 #x24d3 #x24ba #x24d4 #x24bb #x24d5 #x24bc #x24d6 #x24bd #x24d7 #x24be #x24d8 #x24bf #x24d9 #x24c0 #x24da #x24c1 #x24db #x24c2 #x24dc #x24c3 #x24dd #x24c4 #x24de #x24c5 #x24df #x24c6 #x24e0 #x24c7 #x24e1 #x24c8 #x24e2 #x24c9 #x24e3 #x24ca #x24e4 #x24cb #x24e5 #x24cc #x24e6 #x24cd #x24e7 #x24ce #x24e8 #x24cf #x24e9 #x2c00 #x2c30 #x2c01 #x2c31 #x2c02 #x2c32 #x2c03 #x2c33 #x2c04 #x2c34 #x2c05 #x2c35 #x2c06 #x2c36 #x2c07 #x2c37 #x2c08 #x2c38 #x2c09 #x2c39 #x2c0a #x2c3a #x2c0b #x2c3b #x2c0c #x2c3c #x2c0d #x2c3d #x2c0e #x2c3e #x2c0f #x2c3f #x2c10 #x2c40 #x2c11 #x2c41 #x2c12 #x2c42 #x2c13 #x2c43 #x2c14 #x2c44 #x2c15 #x2c45 #x2c16 #x2c46 #x2c17 #x2c47 #x2c18 #x2c48 #x2c19 #x2c49 #x2c1a #x2c4a #x2c1b #x2c4b #x2c1c #x2c4c #x2c1d #x2c4d #x2c1e #x2c4e #x2c1f #x2c4f #x2c20 #x2c50 #x2c21 #x2c51 #x2c22 #x2c52 #x2c23 #x2c53 #x2c24 #x2c54 #x2c25 #x2c55 #x2c26 #x2c56 #x2c27 #x2c57 #x2c28 #x2c58 #x2c29 #x2c59 #x2c2a #x2c5a #x2c2b #x2c5b #x2c2c #x2c5c #x2c2d #x2c5d #x2c2e #x2c5e #x2c60 #x2c61 #x2c62 #x26b #x2c63 #x1d7d #x2c64 #x27d #x2c67 #x2c68 #x2c69 #x2c6a #x2c6b #x2c6c #x2c6d #x251 #x2c6e #x271 #x2c6f #x250 #x2c70 #x252 #x2c72 #x2c73 #x2c75 #x2c76 #x2c7e #x23f #x2c7f #x240 #x2c80 #x2c81 #x2c82 #x2c83 #x2c84 #x2c85 #x2c86 #x2c87 #x2c88 #x2c89 #x2c8a #x2c8b #x2c8c #x2c8d #x2c8e #x2c8f #x2c90 #x2c91 #x2c92 #x2c93 #x2c94 #x2c95 #x2c96 #x2c97 #x2c98 #x2c99 #x2c9a #x2c9b #x2c9c #x2c9d #x2c9e #x2c9f #x2ca0 #x2ca1 #x2ca2 #x2ca3 #x2ca4 #x2ca5 #x2ca6 #x2ca7 #x2ca8 #x2ca9 #x2caa #x2cab #x2cac #x2cad #x2cae #x2caf #x2cb0 #x2cb1 #x2cb2 #x2cb3 #x2cb4 #x2cb5 #x2cb6 #x2cb7 #x2cb8 #x2cb9 #x2cba #x2cbb #x2cbc #x2cbd #x2cbe #x2cbf #x2cc0 #x2cc1 #x2cc2 #x2cc3 #x2cc4 #x2cc5 #x2cc6 #x2cc7 #x2cc8 #x2cc9 #x2cca #x2ccb #x2ccc #x2ccd #x2cce #x2ccf #x2cd0 #x2cd1 #x2cd2 #x2cd3 #x2cd4 #x2cd5 #x2cd6 #x2cd7 #x2cd8 #x2cd9 #x2cda #x2cdb #x2cdc #x2cdd #x2cde #x2cdf #x2ce0 #x2ce1 #x2ce2 #x2ce3 #x2ceb #x2cec #x2ced #x2cee #x2cf2 #x2cf3 #xa640 #xa641 #xa642 #xa643 #xa644 #xa645 #xa646 #xa647 #xa648 #xa649 #xa64a #xa64b #xa64c #xa64d #xa64e #xa64f #xa650 #xa651 #xa652 #xa653 #xa654 #xa655 #xa656 #xa657 #xa658 #xa659 #xa65a #xa65b #xa65c #xa65d #xa65e #xa65f #xa660 #xa661 #xa662 #xa663 #xa664 #xa665 #xa666 #xa667 #xa668 #xa669 #xa66a #xa66b #xa66c #xa66d #xa680 #xa681 #xa682 #xa683 #xa684 #xa685 #xa686 #xa687 #xa688 #xa689 #xa68a #xa68b #xa68c #xa68d #xa68e #xa68f #xa690 #xa691 #xa692 #xa693 #xa694 #xa695 #xa696 #xa697 #xa698 #xa699 #xa69a #xa69b #xa722 #xa723 #xa724 #xa725 #xa726 #xa727 #xa728 #xa729 #xa72a #xa72b #xa72c #xa72d #xa72e #xa72f #xa732 #xa733 #xa734 #xa735 #xa736 #xa737 #xa738 #xa739 #xa73a #xa73b #xa73c #xa73d #xa73e #xa73f #xa740 #xa741 #xa742 #xa743 #xa744 #xa745 #xa746 #xa747 #xa748 #xa749 #xa74a #xa74b #xa74c #xa74d #xa74e #xa74f #xa750 #xa751 #xa752 #xa753 #xa754 #xa755 #xa756 #xa757 #xa758 #xa759 #xa75a #xa75b #xa75c #xa75d #xa75e #xa75f #xa760 #xa761 #xa762 #xa763 #xa764 #xa765 #xa766 #xa767 #xa768 #xa769 #xa76a #xa76b #xa76c #xa76d #xa76e #xa76f #xa779 #xa77a #xa77b #xa77c #xa77d #x1d79 #xa77e #xa77f #xa780 #xa781 #xa782 #xa783 #xa784 #xa785 #xa786 #xa787 #xa78b #xa78c #xa78d #x265 #xa790 #xa791 #xa792 #xa793 #xa796 #xa797 #xa798 #xa799 #xa79a #xa79b #xa79c #xa79d #xa79e #xa79f #xa7a0 #xa7a1 #xa7a2 #xa7a3 #xa7a4 #xa7a5 #xa7a6 #xa7a7 #xa7a8 #xa7a9 #xa7aa #x266 #xa7ab #x25c #xa7ac #x261 #xa7ad #x26c #xa7ae #x26a #xa7b0 #x29e #xa7b1 #x287 #xa7b2 #x29d #xa7b3 #xab53 #xa7b4 #xa7b5 #xa7b6 #xa7b7 #xa7b8 #xa7b9 #xa7ba #xa7bb #xa7bc #xa7bd #xa7be #xa7bf #xa7c2 #xa7c3 #xa7c4 #xa794 #xa7c5 #x282 #xa7c6 #x1d8e #xa7c7 #xa7c8 #xa7c9 #xa7ca #xa7f5 #xa7f6 #xab70 #x13a0 #xab71 #x13a1 #xab72 #x13a2 #xab73 #x13a3 #xab74 #x13a4 #xab75 #x13a5 #xab76 #x13a6 #xab77 #x13a7 #xab78 #x13a8 #xab79 #x13a9 #xab7a #x13aa #xab7b #x13ab #xab7c #x13ac #xab7d #x13ad #xab7e #x13ae #xab7f #x13af #xab80 #x13b0 #xab81 #x13b1 #xab82 #x13b2 #xab83 #x13b3 #xab84 #x13b4 #xab85 #x13b5 #xab86 #x13b6 #xab87 #x13b7 #xab88 #x13b8 #xab89 #x13b9 #xab8a #x13ba #xab8b #x13bb #xab8c #x13bc #xab8d #x13bd #xab8e #x13be #xab8f #x13bf #xab90 #x13c0 #xab91 #x13c1 #xab92 #x13c2 #xab93 #x13c3 #xab94 #x13c4 #xab95 #x13c5 #xab96 #x13c6 #xab97 #x13c7 #xab98 #x13c8 #xab99 #x13c9 #xab9a #x13ca #xab9b #x13cb #xab9c #x13cc #xab9d #x13cd #xab9e #x13ce #xab9f #x13cf #xaba0 #x13d0 #xaba1 #x13d1 #xaba2 #x13d2 #xaba3 #x13d3 #xaba4 #x13d4 #xaba5 #x13d5 #xaba6 #x13d6 #xaba7 #x13d7 #xaba8 #x13d8 #xaba9 #x13d9 #xabaa #x13da #xabab #x13db #xabac #x13dc #xabad #x13dd #xabae #x13de #xabaf #x13df #xabb0 #x13e0 #xabb1 #x13e1 #xabb2 #x13e2 #xabb3 #x13e3 #xabb4 #x13e4 #xabb5 #x13e5 #xabb6 #x13e6 #xabb7 #x13e7 #xabb8 #x13e8 #xabb9 #x13e9 #xabba #x13ea #xabbb #x13eb #xabbc #x13ec #xabbd #x13ed #xabbe #x13ee #xabbf #x13ef #xff21 #xff41 #xff22 #xff42 #xff23 #xff43 #xff24 #xff44 #xff25 #xff45 #xff26 #xff46 #xff27 #xff47 #xff28 #xff48 #xff29 #xff49 #xff2a #xff4a #xff2b #xff4b #xff2c #xff4c #xff2d #xff4d #xff2e #xff4e #xff2f #xff4f #xff30 #xff50 #xff31 #xff51 #xff32 #xff52 #xff33 #xff53 #xff34 #xff54 #xff35 #xff55 #xff36 #xff56 #xff37 #xff57 #xff38 #xff58 #xff39 #xff59 #xff3a #xff5a #x10400 #x10428 #x10401 #x10429 #x10402 #x1042a #x10403 #x1042b #x10404 #x1042c #x10405 #x1042d #x10406 #x1042e #x10407 #x1042f #x10408 #x10430 #x10409 #x10431 #x1040a #x10432 #x1040b #x10433 #x1040c #x10434 #x1040d #x10435 #x1040e #x10436 #x1040f #x10437 #x10410 #x10438 #x10411 #x10439 #x10412 #x1043a #x10413 #x1043b #x10414 #x1043c #x10415 #x1043d #x10416 #x1043e #x10417 #x1043f #x10418 #x10440 #x10419 #x10441 #x1041a #x10442 #x1041b #x10443 #x1041c #x10444 #x1041d #x10445 #x1041e #x10446 #x1041f #x10447 #x10420 #x10448 #x10421 #x10449 #x10422 #x1044a #x10423 #x1044b #x10424 #x1044c #x10425 #x1044d #x10426 #x1044e #x10427 #x1044f #x104b0 #x104d8 #x104b1 #x104d9 #x104b2 #x104da #x104b3 #x104db #x104b4 #x104dc #x104b5 #x104dd #x104b6 #x104de #x104b7 #x104df #x104b8 #x104e0 #x104b9 #x104e1 #x104ba #x104e2 #x104bb #x104e3 #x104bc #x104e4 #x104bd #x104e5 #x104be #x104e6 #x104bf #x104e7 #x104c0 #x104e8 #x104c1 #x104e9 #x104c2 #x104ea #x104c3 #x104eb #x104c4 #x104ec #x104c5 #x104ed #x104c6 #x104ee #x104c7 #x104ef #x104c8 #x104f0 #x104c9 #x104f1 #x104ca #x104f2 #x104cb #x104f3 #x104cc #x104f4 #x104cd #x104f5 #x104ce #x104f6 #x104cf #x104f7 #x104d0 #x104f8 #x104d1 #x104f9 #x104d2 #x104fa #x104d3 #x104fb #x10c80 #x10cc0 #x10c81 #x10cc1 #x10c82 #x10cc2 #x10c83 #x10cc3 #x10c84 #x10cc4 #x10c85 #x10cc5 #x10c86 #x10cc6 #x10c87 #x10cc7 #x10c88 #x10cc8 #x10c89 #x10cc9 #x10c8a #x10cca #x10c8b #x10ccb #x10c8c #x10ccc #x10c8d #x10ccd #x10c8e #x10cce #x10c8f #x10ccf #x10c90 #x10cd0 #x10c91 #x10cd1 #x10c92 #x10cd2 #x10c93 #x10cd3 #x10c94 #x10cd4 #x10c95 #x10cd5 #x10c96 #x10cd6 #x10c97 #x10cd7 #x10c98 #x10cd8 #x10c99 #x10cd9 #x10c9a #x10cda #x10c9b #x10cdb #x10c9c #x10cdc #x10c9d #x10cdd #x10c9e #x10cde #x10c9f #x10cdf #x10ca0 #x10ce0 #x10ca1 #x10ce1 #x10ca2 #x10ce2 #x10ca3 #x10ce3 #x10ca4 #x10ce4 #x10ca5 #x10ce5 #x10ca6 #x10ce6 #x10ca7 #x10ce7 #x10ca8 #x10ce8 #x10ca9 #x10ce9 #x10caa #x10cea #x10cab #x10ceb #x10cac #x10cec #x10cad #x10ced #x10cae #x10cee #x10caf #x10cef #x10cb0 #x10cf0 #x10cb1 #x10cf1 #x10cb2 #x10cf2 #x118a0 #x118c0 #x118a1 #x118c1 #x118a2 #x118c2 #x118a3 #x118c3 #x118a4 #x118c4 #x118a5 #x118c5 #x118a6 #x118c6 #x118a7 #x118c7 #x118a8 #x118c8 #x118a9 #x118c9 #x118aa #x118ca #x118ab #x118cb #x118ac #x118cc #x118ad #x118cd #x118ae #x118ce #x118af #x118cf #x118b0 #x118d0 #x118b1 #x118d1 #x118b2 #x118d2 #x118b3 #x118d3 #x118b4 #x118d4 #x118b5 #x118d5 #x118b6 #x118d6 #x118b7 #x118d7 #x118b8 #x118d8 #x118b9 #x118d9 #x118ba #x118da #x118bb #x118db #x118bc #x118dc #x118bd #x118dd #x118be #x118de #x118bf #x118df #x16e40 #x16e60 #x16e41 #x16e61 #x16e42 #x16e62 #x16e43 #x16e63 #x16e44 #x16e64 #x16e45 #x16e65 #x16e46 #x16e66 #x16e47 #x16e67 #x16e48 #x16e68 #x16e49 #x16e69 #x16e4a #x16e6a #x16e4b #x16e6b #x16e4c #x16e6c #x16e4d #x16e6d #x16e4e #x16e6e #x16e4f #x16e6f #x16e50 #x16e70 #x16e51 #x16e71 #x16e52 #x16e72 #x16e53 #x16e73 #x16e54 #x16e74 #x16e55 #x16e75 #x16e56 #x16e76 #x16e57 #x16e77 #x16e58 #x16e78 #x16e59 #x16e79 #x16e5a #x16e7a #x16e5b #x16e7b #x16e5c #x16e7c #x16e5d #x16e7d #x16e5e #x16e7e #x16e5f #x16e7f #x1e900 #x1e922 #x1e901 #x1e923 #x1e902 #x1e924 #x1e903 #x1e925 #x1e904 #x1e926 #x1e905 #x1e927 #x1e906 #x1e928 #x1e907 #x1e929 #x1e908 #x1e92a #x1e909 #x1e92b #x1e90a #x1e92c #x1e90b #x1e92d #x1e90c #x1e92e #x1e90d #x1e92f #x1e90e #x1e930 #x1e90f #x1e931 #x1e910 #x1e932 #x1e911 #x1e933 #x1e912 #x1e934 #x1e913 #x1e935 #x1e914 #x1e936 #x1e915 #x1e937 #x1e916 #x1e938 #x1e917 #x1e939 #x1e918 #x1e93a #x1e919 #x1e93b #x1e91a #x1e93c #x1e91b #x1e93d #x1e91c #x1e93e #x1e91d #x1e93f #x1e91e #x1e940 #x1e91f #x1e941 #x1e920 #x1e942 #x1e921 #x1e943)) diff --git a/lib/scheme/char/full.scm b/lib/scheme/char/full.scm index 960d2319..e896e9f0 100644 --- a/lib/scheme/char/full.scm +++ b/lib/scheme/char/full.scm @@ -44,7 +44,7 @@ (define (char-foldcase ch) (or (bsearch-kv char-foldcase-map (char->integer ch) 0 (- (vector-length char-foldcase-map) 2)) - (char-downcase ch))) + ch)) (define (char-cmp-ci op a ls) (let lp ((op op) (a (char->integer (char-foldcase a))) (ls ls)) @@ -83,17 +83,20 @@ (let ((ch (read-char in))) (cond ((not (eof-object? ch)) - (write-string - (cond - ((and (not fold?) (eqv? ch #\x03A3)) - (let ((ch2 (peek-char in))) + (cond + ((and (not fold?) (eqv? ch #\x03A3)) ;; sigma + (let ((ch2 (peek-char in))) + (write-char (if (or (eof-object? ch2) (not (char-set-contains? char-set:letter ch2))) #\x03C2 - #\x03C3))) - ((char-get-special-case ch (if fold? 4 1))) - (else (if fold? (char-foldcase ch) (char-downcase ch)))) - out) + #\x03C3) + out))) + ((char-get-special-case ch (if fold? 4 1)) + => (lambda (s) (write-string s out))) + (else + (write-char (if fold? (char-foldcase ch) (char-downcase ch)) + out))) (lp))))))))) (define (string-downcase str) (string-down-or-fold-case str #f)) diff --git a/lib/scheme/char/special-casing.scm b/lib/scheme/char/special-casing.scm index 580b28d5..bc3dec65 100644 --- a/lib/scheme/char/special-casing.scm +++ b/lib/scheme/char/special-casing.scm @@ -1,109 +1,109 @@ - -;; Unconditional non-1-to-1 case mappings derived from Unicode data -;; file SpecialCasing.txt. +;; auto-generated by extract-special-casing.scm (define special-cases ;; <upper> [<fold>] - #(#(223 "ß" "Ss" "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 "ﬗ" "Մխ" "ՄԽ"))) + '#(#(#xdf "ß" "Ss" "SS" "ss") + #(#x130 "i̇" "İ" "İ" "i̇") + #(#x149 "ʼn" "ʼN" "ʼN" "ʼn") + #(#x1f0 "ǰ" "J̌" "J̌" "ǰ") + #(#x390 "ΐ" "Ϊ́" "Ϊ́" "ΐ") + #(#x3b0 "ΰ" "Ϋ́" "Ϋ́" "ΰ") + #(#x587 "և" "Եւ" "ԵՒ" "եւ") + #(#x1e96 "ẖ" "H̱" "H̱" "ẖ") + #(#x1e97 "ẗ" "T̈" "T̈" "ẗ") + #(#x1e98 "ẘ" "W̊" "W̊" "ẘ") + #(#x1e99 "ẙ" "Y̊" "Y̊" "ẙ") + #(#x1e9a "ẚ" "Aʾ" "Aʾ" "aʾ") + #(#x1e9e "ß" "Ss" "SS" "ss") ;; TODO: this had to be added by hand + #(#x1f50 "ὐ" "Υ̓" "Υ̓" "ὐ") + #(#x1f52 "ὒ" "Υ̓̀" "Υ̓̀" "ὒ") + #(#x1f54 "ὔ" "Υ̓́" "Υ̓́" "ὔ") + #(#x1f56 "ὖ" "Υ̓͂" "Υ̓͂" "ὖ") + #(#x1f80 "ᾀ" "ᾈ" "ἈΙ" "ἀι") + #(#x1f81 "ᾁ" "ᾉ" "ἉΙ" "ἁι") + #(#x1f82 "ᾂ" "ᾊ" "ἊΙ" "ἂι") + #(#x1f83 "ᾃ" "ᾋ" "ἋΙ" "ἃι") + #(#x1f84 "ᾄ" "ᾌ" "ἌΙ" "ἄι") + #(#x1f85 "ᾅ" "ᾍ" "ἍΙ" "ἅι") + #(#x1f86 "ᾆ" "ᾎ" "ἎΙ" "ἆι") + #(#x1f87 "ᾇ" "ᾏ" "ἏΙ" "ἇι") + #(#x1f88 "ᾀ" "ᾈ" "ἈΙ" "ἀι") + #(#x1f89 "ᾁ" "ᾉ" "ἉΙ" "ἁι") + #(#x1f8a "ᾂ" "ᾊ" "ἊΙ" "ἂι") + #(#x1f8b "ᾃ" "ᾋ" "ἋΙ" "ἃι") + #(#x1f8c "ᾄ" "ᾌ" "ἌΙ" "ἄι") + #(#x1f8d "ᾅ" "ᾍ" "ἍΙ" "ἅι") + #(#x1f8e "ᾆ" "ᾎ" "ἎΙ" "ἆι") + #(#x1f8f "ᾇ" "ᾏ" "ἏΙ" "ἇι") + #(#x1f90 "ᾐ" "ᾘ" "ἨΙ" "ἠι") + #(#x1f91 "ᾑ" "ᾙ" "ἩΙ" "ἡι") + #(#x1f92 "ᾒ" "ᾚ" "ἪΙ" "ἢι") + #(#x1f93 "ᾓ" "ᾛ" "ἫΙ" "ἣι") + #(#x1f94 "ᾔ" "ᾜ" "ἬΙ" "ἤι") + #(#x1f95 "ᾕ" "ᾝ" "ἭΙ" "ἥι") + #(#x1f96 "ᾖ" "ᾞ" "ἮΙ" "ἦι") + #(#x1f97 "ᾗ" "ᾟ" "ἯΙ" "ἧι") + #(#x1f98 "ᾐ" "ᾘ" "ἨΙ" "ἠι") + #(#x1f99 "ᾑ" "ᾙ" "ἩΙ" "ἡι") + #(#x1f9a "ᾒ" "ᾚ" "ἪΙ" "ἢι") + #(#x1f9b "ᾓ" "ᾛ" "ἫΙ" "ἣι") + #(#x1f9c "ᾔ" "ᾜ" "ἬΙ" "ἤι") + #(#x1f9d "ᾕ" "ᾝ" "ἭΙ" "ἥι") + #(#x1f9e "ᾖ" "ᾞ" "ἮΙ" "ἦι") + #(#x1f9f "ᾗ" "ᾟ" "ἯΙ" "ἧι") + #(#x1fa0 "ᾠ" "ᾨ" "ὨΙ" "ὠι") + #(#x1fa1 "ᾡ" "ᾩ" "ὩΙ" "ὡι") + #(#x1fa2 "ᾢ" "ᾪ" "ὪΙ" "ὢι") + #(#x1fa3 "ᾣ" "ᾫ" "ὫΙ" "ὣι") + #(#x1fa4 "ᾤ" "ᾬ" "ὬΙ" "ὤι") + #(#x1fa5 "ᾥ" "ᾭ" "ὭΙ" "ὥι") + #(#x1fa6 "ᾦ" "ᾮ" "ὮΙ" "ὦι") + #(#x1fa7 "ᾧ" "ᾯ" "ὯΙ" "ὧι") + #(#x1fa8 "ᾠ" "ᾨ" "ὨΙ" "ὠι") + #(#x1fa9 "ᾡ" "ᾩ" "ὩΙ" "ὡι") + #(#x1faa "ᾢ" "ᾪ" "ὪΙ" "ὢι") + #(#x1fab "ᾣ" "ᾫ" "ὫΙ" "ὣι") + #(#x1fac "ᾤ" "ᾬ" "ὬΙ" "ὤι") + #(#x1fad "ᾥ" "ᾭ" "ὭΙ" "ὥι") + #(#x1fae "ᾦ" "ᾮ" "ὮΙ" "ὦι") + #(#x1faf "ᾧ" "ᾯ" "ὯΙ" "ὧι") + #(#x1fb2 "ᾲ" "Ὰͅ" "ᾺΙ" "ὰι") + #(#x1fb3 "ᾳ" "ᾼ" "ΑΙ" "αι") + #(#x1fb4 "ᾴ" "Άͅ" "ΆΙ" "άι") + #(#x1fb6 "ᾶ" "Α͂" "Α͂" "ᾶ") + #(#x1fb7 "ᾷ" "ᾼ͂" "Α͂Ι" "ᾶι") + #(#x1fbc "ᾳ" "ᾼ" "ΑΙ" "αι") + #(#x1fc2 "ῂ" "Ὴͅ" "ῊΙ" "ὴι") + #(#x1fc3 "ῃ" "ῌ" "ΗΙ" "ηι") + #(#x1fc4 "ῄ" "Ήͅ" "ΉΙ" "ήι") + #(#x1fc6 "ῆ" "Η͂" "Η͂" "ῆ") + #(#x1fc7 "ῇ" "ῌ͂" "Η͂Ι" "ῆι") + #(#x1fcc "ῃ" "ῌ" "ΗΙ" "ηι") + #(#x1fd2 "ῒ" "Ϊ̀" "Ϊ̀" "ῒ") + #(#x1fd3 "ΐ" "Ϊ́" "Ϊ́" "ΐ") + #(#x1fd6 "ῖ" "Ι͂" "Ι͂" "ῖ") + #(#x1fd7 "ῗ" "Ϊ͂" "Ϊ͂" "ῗ") + #(#x1fe2 "ῢ" "Ϋ̀" "Ϋ̀" "ῢ") + #(#x1fe3 "ΰ" "Ϋ́" "Ϋ́" "ΰ") + #(#x1fe4 "ῤ" "Ρ̓" "Ρ̓" "ῤ") + #(#x1fe6 "ῦ" "Υ͂" "Υ͂" "ῦ") + #(#x1fe7 "ῧ" "Ϋ͂" "Ϋ͂" "ῧ") + #(#x1ff2 "ῲ" "Ὼͅ" "ῺΙ" "ὼι") + #(#x1ff3 "ῳ" "ῼ" "ΩΙ" "ωι") + #(#x1ff4 "ῴ" "Ώͅ" "ΏΙ" "ώι") + #(#x1ff6 "ῶ" "Ω͂" "Ω͂" "ῶ") + #(#x1ff7 "ῷ" "ῼ͂" "Ω͂Ι" "ῶι") + #(#x1ffc "ῳ" "ῼ" "ΩΙ" "ωι") + #(#xfb00 "ff" "Ff" "FF" "ff") + #(#xfb01 "fi" "Fi" "FI" "fi") + #(#xfb02 "fl" "Fl" "FL" "fl") + #(#xfb03 "ffi" "Ffi" "FFI" "ffi") + #(#xfb04 "ffl" "Ffl" "FFL" "ffl") + #(#xfb05 "ſt" "St" "ST" "st") + #(#xfb06 "st" "St" "ST" "st") + #(#xfb13 "ﬓ" "Մն" "ՄՆ" "մն") + #(#xfb14 "ﬔ" "Մե" "ՄԵ" "մե") + #(#xfb15 "ﬕ" "Մի" "ՄԻ" "մի") + #(#xfb16 "ﬖ" "Վն" "ՎՆ" "վն") + #(#xfb17 "ﬗ" "Մխ" "ՄԽ" "մխ") + )) diff --git a/lib/srfi/166/base.sld b/lib/srfi/166/base.sld index 177ea01b..fa1e5d93 100644 --- a/lib/srfi/166/base.sld +++ b/lib/srfi/166/base.sld @@ -42,7 +42,6 @@ joined/range padded padded/right padded/both trimmed trimmed/right trimmed/both trimmed/lazy fitted fitted/right fitted/both output-default - upcased downcased ;; computations fn with with! forked call-with-output ;; state variables diff --git a/lib/srfi/166/unicode.sld b/lib/srfi/166/unicode.sld index 56729106..0c06dc13 100644 --- a/lib/srfi/166/unicode.sld +++ b/lib/srfi/166/unicode.sld @@ -1,6 +1,12 @@ (define-library (srfi 166 unicode) - (import (scheme base) (srfi 130) (srfi 151) (srfi 166 base)) - (export as-unicode unicode-terminal-width unicode-terminal-width/wide) + (import (scheme base) + (scheme char) + (srfi 130) + (srfi 151) + (srfi 166 base)) + (export as-unicode + unicode-terminal-width unicode-terminal-width/wide + upcased downcased) (include "../../chibi/show/width.scm" "../../chibi/show/unicode.scm")) diff --git a/tools/extract-case-offsets.scm b/tools/extract-case-offsets.scm index e8fbeac6..277de21e 100644 --- a/tools/extract-case-offsets.scm +++ b/tools/extract-case-offsets.scm @@ -3,7 +3,7 @@ ;; Extract sets of char case offsets. ;; ;; Usage: -;; extract-case-offsets.scm options UnicodeData.txt > out +;; extract-case-offsets.scm [options] UnicodeData.txt CaseFolding.txt > out ;; ;; Recognized options are: ;; @@ -23,7 +23,17 @@ (for-each (lambda (x) (display x err)) args) (newline err))) -(define (write-offsets offset-map title-ups title-downs folds out min-count max-char-sets name) +(define (write-hex-list hex-ls out) + (let lp ((ls hex-ls)) + (cond + ((pair? ls) + (if (not (eq? ls hex-ls)) + (write-char #\space out)) + (write-string "#x" out) + (write-string (number->string (car ls) 16) out) + (lp (cdr ls)))))) + +(define (write-offsets offset-map title-ups title-downs out min-count max-char-sets name) (let lp ((ls (sort (hash-table->alist offset-map) (lambda (a b) (> (iset-size (cdr a)) (iset-size (cdr b)))))) (i 0) @@ -50,50 +60,61 @@ (map (lambda (y) (list y (+ y (car x)))) (iset->list (cdr x)))) ls))) - (write `(define char-downcase-map - ',(list->vector - (append-map (lambda (x) x) - (sort (append pairs title-downs) < car)))) - out) - (newline out) - (newline out) - (write `(define char-upcase-map - ',(list->vector - (append-map (lambda (x) (list (cadr x) (car x))) - (delete-duplicates - (sort (append pairs title-ups) < cadr) - (lambda (a b) (eqv? (cadr a) (cadr b))))))) - out) - (newline out) - (newline out) - (write `(define char-foldcase-map - ',(list->vector - (append-map (lambda (x) x) - (delete-duplicates - (sort folds < car) - (lambda (a b) (eqv? (cadr a) (cadr b))))))) - out) - (newline out)))))) + (write-string "(define char-downcase-map\n '#(" out) + (write-hex-list + (append-map (lambda (x) x) (sort (append pairs title-downs) < car)) + out) + (write-string "))\n\n" out) + (write-string "(define char-upcase-map\n '#(" out) + (write-hex-list + (append-map (lambda (x) (list (cadr x) (car x))) + (delete-duplicates + (sort (append pairs title-ups) < cadr) + (lambda (a b) (eqv? (cadr a) (cadr b))))) + out) + (write-string "))\n\n" out)))))) + +(define (extract-case-folding in out) + (define (write-folds folds out) + (write-string "(define char-foldcase-map\n '#(" out) + (write-hex-list + (append-map (lambda (x) x) (sort folds < car)) + out) + (write-string "))\n" out)) + (let lp ((folds '())) + (let ((line (read-line in))) + (cond + ((eof-object? line) + (write-folds folds out)) + ((or (equal? line "") (eqv? #\# (string-ref line 0))) + (lp folds)) + (else + (let* ((line (substring-cursor line + (string-cursor-start line) + (string-find line #\#))) + (ls (map string-trim (string-split line #\;)))) + (if (and (>= (length ls) 3) + (member (second ls) '("C" "S"))) + (let ((base (string->number (first ls) 16)) + (folded (string->number (third ls) 16))) + (if (and base folded) + (lp (cons (list base folded) folds)) + (lp folds))) + (lp folds)))))))) ;; value;char;name;category;combining_class;bidi_class;decomposition;numeric1;numeric2;numeric3;bidi_mirrored;unicode1_name;ISO_comment;uppercase_mapping;lowercase_mapping;titlecase_mapping (define (extract-case-mapping in out min-count max-char-sets name) (define (string-trim-comment str comment-ch) (car (string-split str comment-ch 2))) - (define (extract-single-decomposition str) - (and (not (equal? "" str)) - (let ((s (string-trim (last (string-split str #\>))))) - (and (not (string-contains s " ")) - (string->number s 16))))) (let ((offset-map (make-hash-table eq?)) (title-ups '()) - (title-downs '()) - (folds '())) + (title-downs '())) (let lp () (let ((line (read-line in))) (cond ((eof-object? line) - (write-offsets offset-map title-ups title-downs folds out + (write-offsets offset-map title-ups title-downs out min-count max-char-sets name)) ((or (equal? line "") (eqv? #\# (string-ref line 0))) (lp)) @@ -106,8 +127,7 @@ (else (let ((base (string->number (list-ref ls 0) 16)) (upper (string->number (list-ref ls 12) 16)) - (lower (string->number (list-ref ls 13) 16)) - (folded (extract-single-decomposition (list-ref ls 5)))) + (lower (string->number (list-ref ls 13) 16))) (cond ((or upper lower) (cond @@ -121,12 +141,7 @@ offset-map (- (or lower base) (or upper base)) (lambda (is) (iset-adjoin! is (or upper base))) - (lambda () (make-iset))))))) - (cond - ((and folded (not (eqv? folded (or lower base)))) - ;; (write `(fold: ,line ,base ,folded) (current-error-port)) - ;; (newline (current-error-port)) - (set! folds (cons (list base folded) folds))))))) + (lambda () (make-iset)))))))))) (lp)))))))) (let ((args (command-line))) @@ -150,8 +165,8 @@ (open-output-file (cadr ls)))) (else (error "unknown option: " (car ls))))) - ((null? ls) - (error "usage: extract-case-offsets <UnicodeData.txt>")) + ((not (= 2 (length ls))) + (error "usage: extract-case-offsets <UnicodeData.txt> <CaseFolding.txt>")) (else (if (equal? "-" (car ls)) (extract-case-mapping @@ -159,4 +174,8 @@ (call-with-input-file (car ls) (lambda (in) (extract-case-mapping in out min-count max-char-sets name)))) + (if (equal? "-" (cadr ls)) + (extract-case-folding (current-input-port) out) + (call-with-input-file (cadr ls) + (lambda (in) (extract-case-folding in out)))) (close-output-port out))))) diff --git a/tools/extract-special-casing.scm b/tools/extract-special-casing.scm new file mode 100644 index 00000000..e9c2d2e3 --- /dev/null +++ b/tools/extract-special-casing.scm @@ -0,0 +1,117 @@ +#!/usr/bin/env chibi-scheme + +;; Build a table of special case (non 1:1) case mappings. +;; +;; Usage: +;; extract-special-casing.scm [options] CaseFolding.txt SpecialCasing.txt > out + +(import (chibi) (srfi 1) (srfi 125) (srfi 95) (chibi io) (chibi string)) + +(define (warn . args) + (let ((err (current-error-port))) + (for-each (lambda (x) (display x err)) args) + (newline err))) + +(define (useq->string str) + (let ((ls (map (lambda (s) (string->number s 16)) + (map string-trim (string-split str #\space))))) + (and ls + (every integer? ls) + (list->string (map integer->char ls))))) + +(define (extract-full-folds in) + (let ((res (make-hash-table equal?))) + (let lp () + (let ((line (read-line in))) + (cond + ((eof-object? line) + res) + (else + (let* ((line (substring-cursor line + (string-cursor-start line) + (string-find line #\#))) + (ls (map string-trim (string-split line #\;)))) + (if (and (>= (length ls) 3) + (member (second ls) '("F"))) + (let ((base (string->number (first ls) 16)) + (folded (useq->string (third ls)))) + (if (and base folded) + (hash-table-set! res base folded)))) + (lp)))))))) + +(define (extract-special-cases in out folds) + ;; TODO: handle folds not in cases (currently only #\x1e9e) + (define (write-cases cases out) + (write-string "(define special-cases\n ;; <code> <lower> <title> <upper> [<fold>]\n '#(" out) + (for-each + (lambda (x) + (if (not (eq? x (car cases))) + (write-string " " out)) + (write-string "#(#x" out) + (write-string (number->string (first x) 16) out) + (write-char #\space out) + (write (second x) out) + (write-char #\space out) + (write (third x) out) + (write-char #\space out) + (write (fourth x) out) + (cond + ((hash-table-ref/default folds (first x) #f) + => (lambda (fold) + (write-char #\space out) + (write fold out)))) + (write-string ")\n" out)) + cases) + (write-string " ))\n" out)) + (let lp ((cases '())) + (let ((line (read-line in))) + (cond + ((eof-object? line) + (write-cases (sort cases < car) out)) + ((or (equal? line "") (eqv? #\# (string-ref line 0))) + (lp cases)) + (else + (let* ((line (substring-cursor line + (string-cursor-start line) + (string-find line #\#))) + (ls (map string-trim (string-split line #\;)))) + (if (and (>= (length ls) 4) + (or (= 4 (length ls)) + (string-null? (list-ref ls 4)))) + (let ((base (string->number (first ls) 16)) + (lower (useq->string (second ls))) + (title (useq->string (third ls))) + (upper (useq->string (fourth ls)))) + (if (and base lower title upper) + (lp (cons (list base lower title upper) cases)) + (lp cases))) + (lp cases)))))))) + +(let ((args (command-line))) + (let lp ((ls (cdr args)) + (min-count 26) + (max-char-sets #f) + (name "char-downcase-offsets") + (out (current-output-port))) + (cond + ((and (pair? ls) (not (equal? "" (car ls))) + (eqv? #\- (string-ref (car ls) 0))) + (cond + ((member (car ls) '("-o" "--output")) + (lp (cddr ls) min-count max-char-sets name + (open-output-file (cadr ls)))) + (else + (error "unknown option: " (car ls))))) + ((not (= 2 (length ls))) + (error "usage: extract-special-casing <CaseFolding.txt> <SpecialCasing.txt>")) + (else + (display ";; auto-generated by extract-special-casing.scm\n\n" out) + (let ((folds + (if (equal? "-" (car ls)) + (extract-full-folds (current-input-port)) + (call-with-input-file (car ls) extract-full-folds)))) + (if (equal? "-" (cadr ls)) + (extract-special-cases (current-input-port) out folds) + (call-with-input-file (cadr ls) + (lambda (in) (extract-special-cases in out folds))))) + (close-output-port out)))))