* [9fans] quote file name
@ 2006-07-09 10:24 arisawa
2006-07-09 10:53 ` quanstro
0 siblings, 1 reply; 15+ messages in thread
From: arisawa @ 2006-07-09 10:24 UTC (permalink / raw)
To: Fans of the OS Plan 9 from Bell Labs
Hello,
I noticed that a file named '音楽' is quoted in the output of ls
command.
more experiments:
term% ls -l
term% touch 音
term% touch 楽
term% ls -l
--rw-rw-r-- M 8 arisawa arisawa 0 Jul 9 19:10 '楽'
--rw-rw-r-- M 8 arisawa arisawa 0 Jul 9 19:10 音
How to understand that 楽 is quoted but 音 is not quoted ?
Kenji Arisawa
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] quote file name
2006-07-09 10:24 [9fans] quote file name arisawa
@ 2006-07-09 10:53 ` quanstro
2006-07-10 0:46 ` quanstro
0 siblings, 1 reply; 15+ messages in thread
From: quanstro @ 2006-07-09 10:53 UTC (permalink / raw)
To: 9fans
interesting. quick guess is that isalpharune is returning quirky results. that table was generated
against older unicode. i worked up a replacement table from unicode 4.1. i'll try it tonight.
- erik
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] quote file name
2006-07-09 10:53 ` quanstro
@ 2006-07-10 0:46 ` quanstro
2006-07-28 12:41 ` arisawa
0 siblings, 1 reply; 15+ messages in thread
From: quanstro @ 2006-07-10 0:46 UTC (permalink / raw)
To: 9fans
this is wrong. the real answer is this
; diff -c /n/sources/plan9/sys/src/libc/port/needsrcquote.c needsrcquote.c
/n/sources/plan9/sys/src/libc/port/needsrcquote.c:6,12 - needsrcquote.c:6,12
{
if(c <= ' ')
return 1;
- if(strchr("`^#*[]=|\\?${}()'<>&;", c))
+ if(c < 0x80 && strchr("`^#*[]=|\\?${}()'<>&;", c))
return 1;
return 0;
}
- erik
On Sun Jul 9 06:04:31 CDT 2006, quanstro@quanstro.net wrote:
> interesting. quick guess is that isalpharune is returning quirky results. that table was generated
> against older unicode. i worked up a replacement table from unicode 4.1. i'll try it tonight.
>
> - erik
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] quote file name
2006-07-10 0:46 ` quanstro
@ 2006-07-28 12:41 ` arisawa
2006-07-28 12:48 ` erik quanstrom
2006-07-28 13:23 ` "Nils O. Selåsdal"
0 siblings, 2 replies; 15+ messages in thread
From: arisawa @ 2006-07-28 12:41 UTC (permalink / raw)
To: Fans of the OS Plan 9 from Bell Labs
Hello,
> ; diff -c /n/sources/plan9/sys/src/libc/port/needsrcquote.c
> needsrcquote.c
> /n/sources/plan9/sys/src/libc/port/needsrcquote.c:6,12 -
> needsrcquote.c:6,12
> {
> if(c <= ' ')
> return 1;
> - if(strchr("`^#*[]=|\\?${}()'<>&;", c))
> + if(c < 0x80 && strchr("`^#*[]=|\\?${}()'<>&;", c))
> return 1;
> return 0;
> }
>
> - erik
Thanks eric. That works.
I think kanji space (0x3000) should be quoted. Therefore
- if(c <= ' ')
+ if(c <= ' ' || c == 0x3000)
is desirable
I hope official needsrcquote.c is to be changed along the patch by
eric and me.
Kenji Arisawa
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] quote file name
2006-07-28 12:41 ` arisawa
@ 2006-07-28 12:48 ` erik quanstrom
2006-07-28 15:09 ` Micah Stetson
2006-07-28 15:26 ` arisawa
2006-07-28 13:23 ` "Nils O. Selåsdal"
1 sibling, 2 replies; 15+ messages in thread
From: erik quanstrom @ 2006-07-28 12:48 UTC (permalink / raw)
To: 9fans
you're welcome.
however, i don't think kanji space shouldn't be quoted.
the purpose of the function is to determine if the string needs quoting for
rc's benefit. (there are a number of space characters and other potentially-confusing
stuff in unicode that rc does not interpret as whitespace.)
the function you're looking for could be called "needshumanquote" and
could be written like this
int
needshumanquote(int r)
{
if(r <= ' ')
return 1;
if(r < 0x80 && strchr("`^#*[]=|\\?${}()'<>&;", r))
return 1;
if(!isalpharune(r))
return 1;
return 0;
}
a better version of this function could be written with the a function
isspacerune. (i've got a script which generates this table from UnicodeData.txt.)
there's a patch for needsrcquote in /n/sources/patch/needsrcquote.
- erik
On Fri Jul 28 07:42:06 CDT 2006, arisawa@ar.aichi-u.ac.jp wrote:
> Hello,
>
> > ; diff -c /n/sources/plan9/sys/src/libc/port/needsrcquote.c
> > needsrcquote.c
> > /n/sources/plan9/sys/src/libc/port/needsrcquote.c:6,12 -
> > needsrcquote.c:6,12
> > {
> > if(c <= ' ')
> > return 1;
> > - if(strchr("`^#*[]=|\\?${}()'<>&;", c))
> > + if(c < 0x80 && strchr("`^#*[]=|\\?${}()'<>&;", c))
> > return 1;
> > return 0;
> > }
> >
> > - erik
>
> Thanks eric. That works.
>
> I think kanji space (0x3000) should be quoted. Therefore
> - if(c <= ' ')
> + if(c <= ' ' || c == 0x3000)
> is desirable
>
> I hope official needsrcquote.c is to be changed along the patch by
> eric and me.
>
> Kenji Arisawa
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] quote file name
2006-07-28 12:41 ` arisawa
2006-07-28 12:48 ` erik quanstrom
@ 2006-07-28 13:23 ` "Nils O. Selåsdal"
2006-07-28 19:37 ` geoff
1 sibling, 1 reply; 15+ messages in thread
From: "Nils O. Selåsdal" @ 2006-07-28 13:23 UTC (permalink / raw)
To: Fans of the OS Plan 9 from Bell Labs
arisawa@ar.aichi-u.ac.jp wrote:
> Hello,
>
>> ; diff -c /n/sources/plan9/sys/src/libc/port/needsrcquote.c
>> needsrcquote.c
>> /n/sources/plan9/sys/src/libc/port/needsrcquote.c:6,12 -
>> needsrcquote.c:6,12
>> {
>> if(c <= ' ')
>> return 1;
>> - if(strchr("`^#*[]=|\\?${}()'<>&;", c))
>> + if(c < 0x80 && strchr("`^#*[]=|\\?${}()'<>&;", c))
>> return 1;
>> return 0;
>> }
>>
>> - erik
>
> Thanks eric. That works.
>
> I think kanji space (0x3000) should be quoted. Therefore
> - if(c <= ' ')
> + if(c <= ' ' || c == 0x3000)
> is desirable
>
> I hope official needsrcquote.c is to be changed along the patch by eric
> and me.
Surly the only space that needs concern is the "ascii"/U+0020 space, as
that's
used as a separator, not all the other unicode "space" characters. ?
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] quote file name
2006-07-28 12:48 ` erik quanstrom
@ 2006-07-28 15:09 ` Micah Stetson
2006-07-28 15:33 ` erik quanstrom
2006-07-28 15:26 ` arisawa
1 sibling, 1 reply; 15+ messages in thread
From: Micah Stetson @ 2006-07-28 15:09 UTC (permalink / raw)
To: Fans of the OS Plan 9 from Bell Labs
> if(r < 0x80 && strchr("`^#*[]=|\\?${}()'<>&;", r))
> return 1;
Wouldn't this be clearer as
if(utfrune("`^#*[]=|\\?${}()'<>&;", r))
return 1;
That's essentially what the r<0x80 (Runesync) does, isn't it?
Micah
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] quote file name
2006-07-28 12:48 ` erik quanstrom
2006-07-28 15:09 ` Micah Stetson
@ 2006-07-28 15:26 ` arisawa
2006-07-28 15:49 ` erik quanstrom
2006-07-28 15:51 ` erik quanstrom
1 sibling, 2 replies; 15+ messages in thread
From: arisawa @ 2006-07-28 15:26 UTC (permalink / raw)
To: Fans of the OS Plan 9 from Bell Labs
Hello,
> the purpose of the function is to determine if the string needs
> quoting for
> rc's benefit.
I agree current quote is designed for rc benefit.
But I want something that helps for human reading.
needshumanquote(int r) or the improved version will be nice
if it is available in ls command.
Kenji Arisawa
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] quote file name
2006-07-28 15:09 ` Micah Stetson
@ 2006-07-28 15:33 ` erik quanstrom
2006-07-28 17:52 ` Micah Stetson
0 siblings, 1 reply; 15+ messages in thread
From: erik quanstrom @ 2006-07-28 15:33 UTC (permalink / raw)
To: 9fans
i think my code clearly noted it's provinçial nature. ☺
in addition, one would need to change the string from
"`^#*[]=|\\?${}()'<>&;" (char*)
to
L"`^#*[]=|\\?${}()'<>&;" (Rune*)
i was trying to avoid that. i think it would make p9p harder.
(i dont trust gcc with L"".)
- erik
On Fri Jul 28 10:11:26 CDT 2006, micah@stetsonnet.org wrote:
> > if(r < 0x80 && strchr("`^#*[]=|\\?${}()'<>&;", r))
> > return 1;
>
> Wouldn't this be clearer as
>
> if(utfrune("`^#*[]=|\\?${}()'<>&;", r))
> return 1;
>
> That's essentially what the r<0x80 (Runesync) does, isn't it?
>
> Micah
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] quote file name
2006-07-28 15:26 ` arisawa
@ 2006-07-28 15:49 ` erik quanstrom
2006-07-28 15:51 ` erik quanstrom
1 sibling, 0 replies; 15+ messages in thread
From: erik quanstrom @ 2006-07-28 15:49 UTC (permalink / raw)
To: 9fans
[-- Attachment #1: Type: text/plain, Size: 566 bytes --]
here are the basics of what you need to implement needshumanquote.
you will also need to add these prototypes to libc.h:
int isspacerune(Rune);
int isdigitrune(Rune); // recognizes (super|sub)script/indic/tamil/thai/... digits
int digitrunevalue(Rune); // converts a rune to it's numeric value. -1 if not a digit.
my utf tables are a little bit different than the distribution. i believe that
most of the differences are due to the fact that i generated my tables from unicode-4.1.
i'll be happy to submit a patch, if there's any interest.
- erik
[-- Attachment #2: runetype.c --]
[-- Type: text/plain, Size: 2388 bytes --]
#include <u.h>
#include <libc.h>
#include "utf-tables.h"
static Rune*
bsearch(Rune c, Rune *t, int n, int ne)
{
Rune *p;
int m;
while(n > 1) {
m = n/2;
p = t + m*ne;
if(c >= p[0]) {
t = p;
n = n-m;
} else
n = m;
}
if(n && c >= t[0])
return t;
return 0;
}
Rune
tolowerrune(Rune c)
{
Rune *p;
p = bsearch(c, __tolower2, nelem(__tolower2)/3, 3);
if(p && c >= p[0] && c <= p[1])
return p[2] + (c - p[0]);
p = bsearch(c, __tolower1, nelem(__tolower1)/2, 2);
if(p && c == p[0] && p[2])
return p[2] + (c - p[0]);
return c;
}
Rune
toupperrune(Rune c)
{
Rune *p;
p = bsearch(c, __toupper2, nelem(__toupper2)/3, 3);
if(p && c >= p[0] && c <= p[1])
return p[2] + (c - p[0]);
p = bsearch(c, __toupper1, nelem(__toupper1)/2, 2);
if(p && c == p[0] && p[2])
return p[2] + (c - p[0]);
return c;
}
Rune
totitlerune(Rune c)
{
Rune *p;
p = bsearch(c, __totitle1, nelem(__totitle1)/2, 2);
if(p && c == p[0])
return p[2] + (c - p[0]);
return c;
}
int
islowerrune(Rune c)
{
Rune *p;
p = bsearch(c, __toupper2, nelem(__toupper2)/3, 3);
if(p && c >= p[0] && c <= p[1])
return 1;
p = bsearch(c, __toupper1, nelem(__toupper1)/2, 2);
if(p && c == p[0])
return 1;
return 0;
}
int
isupperrune(Rune c)
{
Rune *p;
p = bsearch(c, __tolower2, nelem(__tolower2)/3, 3);
if(p && c >= p[0] && c <= p[1])
return 1;
p = bsearch(c, __tolower1, nelem(__tolower1)/2, 2);
if(p && c == p[0])
return 1;
return 0;
}
int
isalpharune(Rune c)
{
Rune *p;
if(isupperrune(c) || islowerrune(c))
return 1;
p = bsearch(c, __alpha2, nelem(__alpha2)/2, 2);
if(p && c >= p[0] && c <= p[1])
return 1;
p = bsearch(c, __alpha1, nelem(__alpha1), 1);
if(p && c == p[0])
return 1;
return 0;
}
int
istitlerune(Rune c)
{
return isupperrune(c) && islowerrune(c);
}
int
isspacerune(Rune c)
{
Rune *p;
p = bsearch(c, __space2, nelem(__space2)/2, 2);
if(p && c >= p[0] && c <= p[1])
return 1;
return 0;
}
int
isdigitrune(Rune c)
{
Rune *p;
p = bsearch(c, __digit2, nelem(__digit2)/2, 2);
if(p && c >= p[0] && c <= p[1])
return 1;
return 0;
}
int
digitrunevalue(Rune c){
Rune* p;
p = bsearch(c, __digit2, nelem(__digit2)/2, 2);
if (!p || c < p[0] || c>p[1]){
return -1;
}
return c-p[0];
}
[-- Attachment #3: utf-tables.h --]
[-- Type: text/plain, Size: 51358 bytes --]
static
Rune __space2[] =
{
0x0009, 0x000a, /* tab and newline */
0x0020, 0x0020, /* space */
0x00a0, 0x00a0, /* non-breaking space */
0x1680, 0x1680, /* ogham space mark */
0x180e, 0x180e, /* mongolian vowel separator */
0x2000, 0x200b, /* en quad - zero width space */
0x2028, 0x2029, /* line separator - paragraph separator */
0x202f, 0x202f, /* narrow no-break space */
0x205f, 0x205f, /* medium mathematical space */
0x3000, 0x3000, /* ideographic space */
0xfeff, 0xfeff, /* zero width no-break space */
};
static
Rune __digit2[] =
{
0x0030, 0x0039, /* 0123456789 */
0x0660, 0x0669, /* ٠١٢٣٤٥٦٧٨٩ */
0x06f0, 0x06f9, /* ۰۱۲۳۴۵۶۷۸۹ */
0x0966, 0x096f, /* ०१२३४५६७८९ */
0x09e6, 0x09ef, /* ০১২৩৪৫৬৭৮৯ */
0x0a66, 0x0a6f, /* ੦੧੨੩੪੫੬੭੮੯ */
0x0ae6, 0x0aef, /* ૦૧૨૩૪૫૬૭૮૯ */
0x0b66, 0x0b6f, /* ୦୧୨୩୪୫୬୭୮୯ */
0x0be6, 0x0bef, /* ௦௧௨௩௪௫௬௭௮௯ */
0x0c66, 0x0c6f, /* ౦౧౨౩౪౫౬౭౮౯ */
0x0ce6, 0x0cef, /* ೦೧೨೩೪೫೬೭೮೯ */
0x0d66, 0x0d6f, /* ൦൧൨൩൪൫൬൭൮൯ */
0x0e50, 0x0e59, /* ๐๑๒๓๔๕๖๗๘๙ */
0x0ed0, 0x0ed9, /* ໐໑໒໓໔໕໖໗໘໙ */
0x0f20, 0x0f29, /* ༠༡༢༣༤༥༦༧༨༩ */
0x1040, 0x1049, /* ၀၁၂၃၄၅၆၇၈၉ */
0x17e0, 0x17e9, /* ០១២៣៤៥៦៧៨៩ */
0x1810, 0x1819, /* ᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙ */
0x1946, 0x194f, /* ᥆᥇᥈᥉᥊᥋᥌᥍᥎᥏ */
0x19d0, 0x19d9, /* ᧐᧑᧒᧓᧔᧕᧖᧗᧘᧙ */
0xff10, 0xff19, /* 0123456789 */
};
static
Rune __alpha2[] =
{
0x01c0, 0x01c3, /* ǀ-ǃ */
0x05d0, 0x05ea, /* א-ת */
0x05f0, 0x05f2, /* װ-ײ */
0x0621, 0x063a, /* ء-غ */
0x0641, 0x064a, /* ف-ي */
0x066e, 0x066f, /* ٮ-ٯ */
0x0671, 0x06d3, /* ٱ-ۓ */
0x06ee, 0x06ef, /* ۮ-ۯ */
0x06fa, 0x06fc, /* ۺ-ۼ */
0x0712, 0x072f, /* ܒ-ܯ */
0x074d, 0x076d, /* ݍ-ݭ */
0x0780, 0x07a5, /* ހ-ޥ */
0x0904, 0x0939, /* ऄ-ह */
0x0958, 0x0961, /* क़-ॡ */
0x0985, 0x098c, /* অ-ঌ */
0x098f, 0x0990, /* এ-ঐ */
0x0993, 0x09a8, /* ও-ন */
0x09aa, 0x09b0, /* প-র */
0x09b6, 0x09b9, /* শ-হ */
0x09dc, 0x09dd, /* ড়-ঢ় */
0x09df, 0x09e1, /* য়-ৡ */
0x09f0, 0x09f1, /* ৰ-ৱ */
0x0a05, 0x0a0a, /* ਅ-ਊ */
0x0a0f, 0x0a10, /* ਏ-ਐ */
0x0a13, 0x0a28, /* ਓ-ਨ */
0x0a2a, 0x0a30, /* ਪ-ਰ */
0x0a32, 0x0a33, /* ਲ-ਲ਼ */
0x0a35, 0x0a36, /* ਵ-ਸ਼ */
0x0a38, 0x0a39, /* ਸ-ਹ */
0x0a59, 0x0a5c, /* ਖ਼-ੜ */
0x0a72, 0x0a74, /* ੲ-ੴ */
0x0a85, 0x0a8d, /* અ-ઍ */
0x0a8f, 0x0a91, /* એ-ઑ */
0x0a93, 0x0aa8, /* ઓ-ન */
0x0aaa, 0x0ab0, /* પ-ર */
0x0ab2, 0x0ab3, /* લ-ળ */
0x0ab5, 0x0ab9, /* વ-હ */
0x0ae0, 0x0ae1, /* ૠ-ૡ */
0x0b05, 0x0b0c, /* ଅ-ଌ */
0x0b0f, 0x0b10, /* ଏ-ଐ */
0x0b13, 0x0b28, /* ଓ-ନ */
0x0b2a, 0x0b30, /* ପ-ର */
0x0b32, 0x0b33, /* ଲ-ଳ */
0x0b35, 0x0b39, /* ଵ-ହ */
0x0b5c, 0x0b5d, /* ଡ଼-ଢ଼ */
0x0b5f, 0x0b61, /* ୟ-ୡ */
0x0b85, 0x0b8a, /* அ-ஊ */
0x0b8e, 0x0b90, /* எ-ஐ */
0x0b92, 0x0b95, /* ஒ-க */
0x0b99, 0x0b9a, /* ங-ச */
0x0b9e, 0x0b9f, /* ஞ-ட */
0x0ba3, 0x0ba4, /* ண-த */
0x0ba8, 0x0baa, /* ந-ப */
0x0bae, 0x0bb9, /* ம-ஹ */
0x0c05, 0x0c0c, /* అ-ఌ */
0x0c0e, 0x0c10, /* ఎ-ఐ */
0x0c12, 0x0c28, /* ఒ-న */
0x0c2a, 0x0c33, /* ప-ళ */
0x0c35, 0x0c39, /* వ-హ */
0x0c60, 0x0c61, /* ౠ-ౡ */
0x0c85, 0x0c8c, /* ಅ-ಌ */
0x0c8e, 0x0c90, /* ಎ-ಐ */
0x0c92, 0x0ca8, /* ಒ-ನ */
0x0caa, 0x0cb3, /* ಪ-ಳ */
0x0cb5, 0x0cb9, /* ವ-ಹ */
0x0ce0, 0x0ce1, /* ೠ-ೡ */
0x0d05, 0x0d0c, /* അ-ഌ */
0x0d0e, 0x0d10, /* എ-ഐ */
0x0d12, 0x0d28, /* ഒ-ന */
0x0d2a, 0x0d39, /* പ-ഹ */
0x0d60, 0x0d61, /* ൠ-ൡ */
0x0d85, 0x0d96, /* අ-ඖ */
0x0d9a, 0x0db1, /* ක-න */
0x0db3, 0x0dbb, /* ඳ-ර */
0x0dc0, 0x0dc6, /* ව-ෆ */
0x0e01, 0x0e30, /* ก-ะ */
0x0e32, 0x0e33, /* า-ำ */
0x0e40, 0x0e45, /* เ-ๅ */
0x0e81, 0x0e82, /* ກ-ຂ */
0x0e87, 0x0e88, /* ງ-ຈ */
0x0e94, 0x0e97, /* ດ-ທ */
0x0e99, 0x0e9f, /* ນ-ຟ */
0x0ea1, 0x0ea3, /* ມ-ຣ */
0x0eaa, 0x0eab, /* ສ-ຫ */
0x0ead, 0x0eb0, /* ອ-ະ */
0x0eb2, 0x0eb3, /* າ-ຳ */
0x0ec0, 0x0ec4, /* ເ-ໄ */
0x0edc, 0x0edd, /* ໜ-ໝ */
0x0f40, 0x0f47, /* ཀ-ཇ */
0x0f49, 0x0f6a, /* ཉ-ཪ */
0x0f88, 0x0f8b, /* ྈ-ྋ */
0x1000, 0x1021, /* က-အ */
0x1023, 0x1027, /* ဣ-ဧ */
0x1029, 0x102a, /* ဩ-ဪ */
0x1050, 0x1055, /* ၐ-ၕ */
0x10d0, 0x10fa, /* ა-ჺ */
0x1100, 0x1159, /* ᄀ-ᅙ */
0x115f, 0x11a2, /* ᅟ-ᆢ */
0x11a8, 0x11f9, /* ᆨ-ᇹ */
0x1200, 0x1248, /* ሀ-ቈ */
0x124a, 0x124d, /* ቊ-ቍ */
0x1250, 0x1256, /* ቐ-ቖ */
0x125a, 0x125d, /* ቚ-ቝ */
0x1260, 0x1288, /* በ-ኈ */
0x128a, 0x128d, /* ኊ-ኍ */
0x1290, 0x12b0, /* ነ-ኰ */
0x12b2, 0x12b5, /* ኲ-ኵ */
0x12b8, 0x12be, /* ኸ-ኾ */
0x12c2, 0x12c5, /* ዂ-ዅ */
0x12c8, 0x12d6, /* ወ-ዖ */
0x12d8, 0x1310, /* ዘ-ጐ */
0x1312, 0x1315, /* ጒ-ጕ */
0x1318, 0x135a, /* ጘ-ፚ */
0x1380, 0x138f, /* ᎀ-ᎏ */
0x13a0, 0x13f4, /* Ꭰ-Ᏼ */
0x1401, 0x166c, /* ᐁ-ᙬ */
0x166f, 0x1676, /* ᙯ-ᙶ */
0x1681, 0x169a, /* ᚁ-ᚚ */
0x16a0, 0x16ea, /* ᚠ-ᛪ */
0x1700, 0x170c, /* ᜀ-ᜌ */
0x170e, 0x1711, /* ᜎ-ᜑ */
0x1720, 0x1731, /* ᜠ-ᜱ */
0x1740, 0x1751, /* ᝀ-ᝑ */
0x1760, 0x176c, /* ᝠ-ᝬ */
0x176e, 0x1770, /* ᝮ-ᝰ */
0x1780, 0x17b3, /* ក-ឳ */
0x1820, 0x1842, /* ᠠ-ᡂ */
0x1844, 0x1877, /* ᡄ-ᡷ */
0x1880, 0x18a8, /* ᢀ-ᢨ */
0x1900, 0x191c, /* ᤀ-ᤜ */
0x1950, 0x196d, /* ᥐ-ᥭ */
0x1970, 0x1974, /* ᥰ-ᥴ */
0x1980, 0x19a9, /* ᦀ-ᦩ */
0x19c1, 0x19c7, /* ᧁ-ᧇ */
0x1a00, 0x1a16, /* ᨀ-ᨖ */
0x2135, 0x2138, /* ℵ-ℸ */
0x2d30, 0x2d65, /* ⴰ-ⵥ */
0x2d80, 0x2d96, /* ⶀ-ⶖ */
0x2da0, 0x2da6, /* ⶠ-ⶦ */
0x2da8, 0x2dae, /* ⶨ-ⶮ */
0x2db0, 0x2db6, /* ⶰ-ⶶ */
0x2db8, 0x2dbe, /* ⶸ-ⶾ */
0x2dc0, 0x2dc6, /* ⷀ-ⷆ */
0x2dc8, 0x2dce, /* ⷈ-ⷎ */
0x2dd0, 0x2dd6, /* ⷐ-ⷖ */
0x2dd8, 0x2dde, /* ⷘ-ⷞ */
0x3041, 0x3096, /* ぁ-ゖ */
0x30a1, 0x30fa, /* ァ-ヺ */
0x3105, 0x312c, /* ㄅ-ㄬ */
0x3131, 0x318e, /* ㄱ-ㆎ */
0x31a0, 0x31b7, /* ㆠ-ㆷ */
0x31f0, 0x31ff, /* ㇰ-ㇿ */
0x4e00, 0x9fbb, /* 一-龻 */
0xa000, 0xa014, /* ꀀ-ꀔ */
0xa016, 0xa48c, /* ꀖ-ꒌ */
0xa800, 0xa801, /* ꠀ-ꠁ */
0xa803, 0xa805, /* ꠃ-ꠅ */
0xa807, 0xa80a, /* ꠇ-ꠊ */
0xa80c, 0xa822, /* ꠌ-ꠢ */
0xf900, 0xfa2d, /* 豈-鶴 */
0xfa30, 0xfa6a, /* 侮-頻 */
0xfa70, 0xfad9, /* 並-龎 */
0xfb1f, 0xfb28, /* ײַ-ﬨ */
0xfb2a, 0xfb36, /* שׁ-זּ */
0xfb38, 0xfb3c, /* טּ-לּ */
0xfb40, 0xfb41, /* נּ-סּ */
0xfb43, 0xfb44, /* ףּ-פּ */
0xfb46, 0xfbb1, /* צּ-ﮱ */
0xfbd3, 0xfd3d, /* ﯓ-ﴽ */
0xfd50, 0xfd8f, /* ﵐ-ﶏ */
0xfd92, 0xfdc7, /* ﶒ-ﷇ */
0xfdf0, 0xfdfb, /* ﷰ-ﷻ */
0xfe70, 0xfe74, /* ﹰ-ﹴ */
0xfe76, 0xfefc, /* ﹶ-ﻼ */
0xff66, 0xff6f, /* ヲ-ッ */
0xff71, 0xff9d, /* ア-ン */
0xffa0, 0xffbe, /* ᅠ-ᄒ */
0xffc2, 0xffc7, /* ᅡ-ᅦ */
0xffca, 0xffcf, /* ᅧ-ᅬ */
0xffd2, 0xffd7, /* ᅭ-ᅲ */
0xffda, 0xffdc, /* ᅳ-ᅵ */
};
static
Rune __alpha1[] =
{
0x01bb, /* ƻ */
0x06d5, /* ە */
0x06ff, /* ۿ */
0x0710, /* ܐ */
0x07b1, /* ޱ */
0x093d, /* ऽ */
0x0950, /* ॐ */
0x097d, /* ॽ */
0x09b2, /* ল */
0x09bd, /* ঽ */
0x09ce, /* ৎ */
0x0a5e, /* ਫ਼ */
0x0abd, /* ઽ */
0x0ad0, /* ૐ */
0x0b3d, /* ଽ */
0x0b71, /* ୱ */
0x0b83, /* ஃ */
0x0b9c, /* ஜ */
0x0cbd, /* ಽ */
0x0cde, /* ೞ */
0x0dbd, /* ල */
0x0e84, /* ຄ */
0x0e8a, /* ຊ */
0x0e8d, /* ຍ */
0x0ea5, /* ລ */
0x0ea7, /* ວ */
0x0ebd, /* ຽ */
0x0f00, /* ༀ */
0x1258, /* ቘ */
0x12c0, /* ዀ */
0x17dc, /* ៜ */
0x3006, /* 〆 */
0x303c, /* 〼 */
0x309f, /* ゟ */
0x30ff, /* ヿ */
0x3400, /* 㐀 */
0x4db5, /* 䶵 */
0x4e00, /* 一 */
0x9fbb, /* 龻 */
0xac00, /* 가 */
0xd7a3, /* 힣 */
0xfb1d, /* יִ */
0xfb3e, /* מּ */
};
static
Rune __toupper2[] =
{
0x0061, 0x007a, 0x0041, /* a-z, A-Z */
0x00e0, 0x00f6, 0x00c0, /* à-ö, À-Ö */
0x00f8, 0x00fe, 0x00d8, /* ø-þ, Ø-Þ */
0x0256, 0x0257, 0x0189, /* ɖ-ɗ, Ɖ-Ɗ */
0x028a, 0x028b, 0x01b1, /* ʊ-ʋ, Ʊ-Ʋ */
0x03ad, 0x03af, 0x0388, /* έ-ί, Έ-Ί */
0x03b1, 0x03c1, 0x0391, /* α-ρ, Α-Ρ */
0x03c3, 0x03cb, 0x03a3, /* σ-ϋ, Σ-Ϋ */
0x03cd, 0x03ce, 0x038e, /* ύ-ώ, Ύ-Ώ */
0x0430, 0x044f, 0x0410, /* а-я, А-Я */
0x0450, 0x045f, 0x0400, /* ѐ-џ, Ѐ-Џ */
0x0561, 0x0586, 0x0531, /* ա-ֆ, Ա-Ֆ */
0x1f00, 0x1f07, 0x1f08, /* ἀ-ἇ, Ἀ-Ἇ */
0x1f10, 0x1f15, 0x1f18, /* ἐ-ἕ, Ἐ-Ἕ */
0x1f20, 0x1f27, 0x1f28, /* ἠ-ἧ, Ἠ-Ἧ */
0x1f30, 0x1f37, 0x1f38, /* ἰ-ἷ, Ἰ-Ἷ */
0x1f40, 0x1f45, 0x1f48, /* ὀ-ὅ, Ὀ-Ὅ */
0x1f60, 0x1f67, 0x1f68, /* ὠ-ὧ, Ὠ-Ὧ */
0x1f70, 0x1f71, 0x1fba, /* ὰ-ά, Ὰ-Ά */
0x1f72, 0x1f75, 0x1fc8, /* ὲ-ή, Ὲ-Ή */
0x1f76, 0x1f77, 0x1fda, /* ὶ-ί, Ὶ-Ί */
0x1f78, 0x1f79, 0x1ff8, /* ὸ-ό, Ὸ-Ό */
0x1f7a, 0x1f7b, 0x1fea, /* ὺ-ύ, Ὺ-Ύ */
0x1f7c, 0x1f7d, 0x1ffa, /* ὼ-ώ, Ὼ-Ώ */
0x1f80, 0x1f87, 0x1f88, /* ᾀ-ᾇ, ᾈ-ᾏ */
0x1f90, 0x1f97, 0x1f98, /* ᾐ-ᾗ, ᾘ-ᾟ */
0x1fa0, 0x1fa7, 0x1fa8, /* ᾠ-ᾧ, ᾨ-ᾯ */
0x1fb0, 0x1fb1, 0x1fb8, /* ᾰ-ᾱ, Ᾰ-Ᾱ */
0x1fd0, 0x1fd1, 0x1fd8, /* ῐ-ῑ, Ῐ-Ῑ */
0x1fe0, 0x1fe1, 0x1fe8, /* ῠ-ῡ, Ῠ-Ῡ */
0x2170, 0x217f, 0x2160, /* ⅰ-ⅿ, Ⅰ-Ⅿ */
0x24d0, 0x24e9, 0x24b6, /* ⓐ-ⓩ, Ⓐ-Ⓩ */
0x2c30, 0x2c5e, 0x2c00, /* ⰰ-ⱞ, Ⰰ-Ⱞ */
0x2d00, 0x2d25, 0x10a0, /* ⴀ-ⴥ, Ⴀ-Ⴥ */
0xff41, 0xff5a, 0xff21, /* a-z, A-Z */
};
static
Rune __toupper1[] =
{
0x00aa, 0x0000, /* ª, <nil> */
0x00b5, 0x039c, /* µ, Μ */
0x00ba, 0x0000, /* º, <nil> */
0x00df, 0x0000, /* ß, <nil> */
0x00ff, 0x0178, /* ÿ, Ÿ */
0x0101, 0x0100, /* ā, Ā */
0x0103, 0x0102, /* ă, Ă */
0x0105, 0x0104, /* ą, Ą */
0x0107, 0x0106, /* ć, Ć */
0x0109, 0x0108, /* ĉ, Ĉ */
0x010b, 0x010a, /* ċ, Ċ */
0x010d, 0x010c, /* č, Č */
0x010f, 0x010e, /* ď, Ď */
0x0111, 0x0110, /* đ, Đ */
0x0113, 0x0112, /* ē, Ē */
0x0115, 0x0114, /* ĕ, Ĕ */
0x0117, 0x0116, /* ė, Ė */
0x0119, 0x0118, /* ę, Ę */
0x011b, 0x011a, /* ě, Ě */
0x011d, 0x011c, /* ĝ, Ĝ */
0x011f, 0x011e, /* ğ, Ğ */
0x0121, 0x0120, /* ġ, Ġ */
0x0123, 0x0122, /* ģ, Ģ */
0x0125, 0x0124, /* ĥ, Ĥ */
0x0127, 0x0126, /* ħ, Ħ */
0x0129, 0x0128, /* ĩ, Ĩ */
0x012b, 0x012a, /* ī, Ī */
0x012d, 0x012c, /* ĭ, Ĭ */
0x012f, 0x012e, /* į, Į */
0x0131, 0x0049, /* ı, I */
0x0133, 0x0132, /* ij, IJ */
0x0135, 0x0134, /* ĵ, Ĵ */
0x0137, 0x0136, /* ķ, Ķ */
0x0138, 0x0000, /* ĸ, <nil> */
0x013a, 0x0139, /* ĺ, Ĺ */
0x013c, 0x013b, /* ļ, Ļ */
0x013e, 0x013d, /* ľ, Ľ */
0x0140, 0x013f, /* ŀ, Ŀ */
0x0142, 0x0141, /* ł, Ł */
0x0144, 0x0143, /* ń, Ń */
0x0146, 0x0145, /* ņ, Ņ */
0x0148, 0x0147, /* ň, Ň */
0x0149, 0x0000, /* ʼn, <nil> */
0x014b, 0x014a, /* ŋ, Ŋ */
0x014d, 0x014c, /* ō, Ō */
0x014f, 0x014e, /* ŏ, Ŏ */
0x0151, 0x0150, /* ő, Ő */
0x0153, 0x0152, /* œ, Œ */
0x0155, 0x0154, /* ŕ, Ŕ */
0x0157, 0x0156, /* ŗ, Ŗ */
0x0159, 0x0158, /* ř, Ř */
0x015b, 0x015a, /* ś, Ś */
0x015d, 0x015c, /* ŝ, Ŝ */
0x015f, 0x015e, /* ş, Ş */
0x0161, 0x0160, /* š, Š */
0x0163, 0x0162, /* ţ, Ţ */
0x0165, 0x0164, /* ť, Ť */
0x0167, 0x0166, /* ŧ, Ŧ */
0x0169, 0x0168, /* ũ, Ũ */
0x016b, 0x016a, /* ū, Ū */
0x016d, 0x016c, /* ŭ, Ŭ */
0x016f, 0x016e, /* ů, Ů */
0x0171, 0x0170, /* ű, Ű */
0x0173, 0x0172, /* ų, Ų */
0x0175, 0x0174, /* ŵ, Ŵ */
0x0177, 0x0176, /* ŷ, Ŷ */
0x017a, 0x0179, /* ź, Ź */
0x017c, 0x017b, /* ż, Ż */
0x017e, 0x017d, /* ž, Ž */
0x017f, 0x0053, /* ſ, S */
0x0180, 0x0000, /* ƀ, <nil> */
0x0183, 0x0182, /* ƃ, Ƃ */
0x0185, 0x0184, /* ƅ, Ƅ */
0x0188, 0x0187, /* ƈ, Ƈ */
0x018c, 0x018b, /* ƌ, Ƌ */
0x018d, 0x0000, /* ƍ, <nil> */
0x0192, 0x0191, /* ƒ, Ƒ */
0x0195, 0x01f6, /* ƕ, Ƕ */
0x0199, 0x0198, /* ƙ, Ƙ */
0x019a, 0x023d, /* ƚ, Ƚ */
0x019b, 0x0000, /* ƛ, <nil> */
0x019e, 0x0220, /* ƞ, Ƞ */
0x01a1, 0x01a0, /* ơ, Ơ */
0x01a3, 0x01a2, /* ƣ, Ƣ */
0x01a5, 0x01a4, /* ƥ, Ƥ */
0x01a8, 0x01a7, /* ƨ, Ƨ */
0x01aa, 0x0000, /* ƪ, <nil> */
0x01ab, 0x0000, /* ƫ, <nil> */
0x01ad, 0x01ac, /* ƭ, Ƭ */
0x01b0, 0x01af, /* ư, Ư */
0x01b4, 0x01b3, /* ƴ, Ƴ */
0x01b6, 0x01b5, /* ƶ, Ƶ */
0x01b9, 0x01b8, /* ƹ, Ƹ */
0x01ba, 0x0000, /* ƺ, <nil> */
0x01bd, 0x01bc, /* ƽ, Ƽ */
0x01be, 0x0000, /* ƾ, <nil> */
0x01bf, 0x01f7, /* ƿ, Ƿ */
0x01c5, 0x01c4, /* Dž, DŽ */
0x01c6, 0x01c4, /* dž, DŽ */
0x01c8, 0x01c7, /* Lj, LJ */
0x01c9, 0x01c7, /* lj, LJ */
0x01cb, 0x01ca, /* Nj, NJ */
0x01cc, 0x01ca, /* nj, NJ */
0x01ce, 0x01cd, /* ǎ, Ǎ */
0x01d0, 0x01cf, /* ǐ, Ǐ */
0x01d2, 0x01d1, /* ǒ, Ǒ */
0x01d4, 0x01d3, /* ǔ, Ǔ */
0x01d6, 0x01d5, /* ǖ, Ǖ */
0x01d8, 0x01d7, /* ǘ, Ǘ */
0x01da, 0x01d9, /* ǚ, Ǚ */
0x01dc, 0x01db, /* ǜ, Ǜ */
0x01dd, 0x018e, /* ǝ, Ǝ */
0x01df, 0x01de, /* ǟ, Ǟ */
0x01e1, 0x01e0, /* ǡ, Ǡ */
0x01e3, 0x01e2, /* ǣ, Ǣ */
0x01e5, 0x01e4, /* ǥ, Ǥ */
0x01e7, 0x01e6, /* ǧ, Ǧ */
0x01e9, 0x01e8, /* ǩ, Ǩ */
0x01eb, 0x01ea, /* ǫ, Ǫ */
0x01ed, 0x01ec, /* ǭ, Ǭ */
0x01ef, 0x01ee, /* ǯ, Ǯ */
0x01f0, 0x0000, /* ǰ, <nil> */
0x01f2, 0x01f1, /* Dz, DZ */
0x01f3, 0x01f1, /* dz, DZ */
0x01f5, 0x01f4, /* ǵ, Ǵ */
0x01f9, 0x01f8, /* ǹ, Ǹ */
0x01fb, 0x01fa, /* ǻ, Ǻ */
0x01fd, 0x01fc, /* ǽ, Ǽ */
0x01ff, 0x01fe, /* ǿ, Ǿ */
0x0201, 0x0200, /* ȁ, Ȁ */
0x0203, 0x0202, /* ȃ, Ȃ */
0x0205, 0x0204, /* ȅ, Ȅ */
0x0207, 0x0206, /* ȇ, Ȇ */
0x0209, 0x0208, /* ȉ, Ȉ */
0x020b, 0x020a, /* ȋ, Ȋ */
0x020d, 0x020c, /* ȍ, Ȍ */
0x020f, 0x020e, /* ȏ, Ȏ */
0x0211, 0x0210, /* ȑ, Ȑ */
0x0213, 0x0212, /* ȓ, Ȓ */
0x0215, 0x0214, /* ȕ, Ȕ */
0x0217, 0x0216, /* ȗ, Ȗ */
0x0219, 0x0218, /* ș, Ș */
0x021b, 0x021a, /* ț, Ț */
0x021d, 0x021c, /* ȝ, Ȝ */
0x021f, 0x021e, /* ȟ, Ȟ */
0x0221, 0x0000, /* ȡ, <nil> */
0x0223, 0x0222, /* ȣ, Ȣ */
0x0225, 0x0224, /* ȥ, Ȥ */
0x0227, 0x0226, /* ȧ, Ȧ */
0x0229, 0x0228, /* ȩ, Ȩ */
0x022b, 0x022a, /* ȫ, Ȫ */
0x022d, 0x022c, /* ȭ, Ȭ */
0x022f, 0x022e, /* ȯ, Ȯ */
0x0231, 0x0230, /* ȱ, Ȱ */
0x0233, 0x0232, /* ȳ, Ȳ */
0x0234, 0x0000, /* ȴ, <nil> */
0x0235, 0x0000, /* ȵ, <nil> */
0x0236, 0x0000, /* ȶ, <nil> */
0x0237, 0x0000, /* ȷ, <nil> */
0x0238, 0x0000, /* ȸ, <nil> */
0x0239, 0x0000, /* ȹ, <nil> */
0x023c, 0x023b, /* ȼ, Ȼ */
0x023f, 0x0000, /* ȿ, <nil> */
0x0240, 0x0000, /* ɀ, <nil> */
0x0250, 0x0000, /* ɐ, <nil> */
0x0251, 0x0000, /* ɑ, <nil> */
0x0252, 0x0000, /* ɒ, <nil> */
0x0253, 0x0181, /* ɓ, Ɓ */
0x0254, 0x0186, /* ɔ, Ɔ */
0x0255, 0x0000, /* ɕ, <nil> */
0x0258, 0x0000, /* ɘ, <nil> */
0x0259, 0x018f, /* ə, Ə */
0x025a, 0x0000, /* ɚ, <nil> */
0x025b, 0x0190, /* ɛ, Ɛ */
0x025c, 0x0000, /* ɜ, <nil> */
0x025d, 0x0000, /* ɝ, <nil> */
0x025e, 0x0000, /* ɞ, <nil> */
0x025f, 0x0000, /* ɟ, <nil> */
0x0260, 0x0193, /* ɠ, Ɠ */
0x0261, 0x0000, /* ɡ, <nil> */
0x0262, 0x0000, /* ɢ, <nil> */
0x0263, 0x0194, /* ɣ, Ɣ */
0x0264, 0x0000, /* ɤ, <nil> */
0x0265, 0x0000, /* ɥ, <nil> */
0x0266, 0x0000, /* ɦ, <nil> */
0x0267, 0x0000, /* ɧ, <nil> */
0x0268, 0x0197, /* ɨ, Ɨ */
0x0269, 0x0196, /* ɩ, Ɩ */
0x026a, 0x0000, /* ɪ, <nil> */
0x026b, 0x0000, /* ɫ, <nil> */
0x026c, 0x0000, /* ɬ, <nil> */
0x026d, 0x0000, /* ɭ, <nil> */
0x026e, 0x0000, /* ɮ, <nil> */
0x026f, 0x019c, /* ɯ, Ɯ */
0x0270, 0x0000, /* ɰ, <nil> */
0x0271, 0x0000, /* ɱ, <nil> */
0x0272, 0x019d, /* ɲ, Ɲ */
0x0273, 0x0000, /* ɳ, <nil> */
0x0274, 0x0000, /* ɴ, <nil> */
0x0275, 0x019f, /* ɵ, Ɵ */
0x0276, 0x0000, /* ɶ, <nil> */
0x0277, 0x0000, /* ɷ, <nil> */
0x0278, 0x0000, /* ɸ, <nil> */
0x0279, 0x0000, /* ɹ, <nil> */
0x027a, 0x0000, /* ɺ, <nil> */
0x027b, 0x0000, /* ɻ, <nil> */
0x027c, 0x0000, /* ɼ, <nil> */
0x027d, 0x0000, /* ɽ, <nil> */
0x027e, 0x0000, /* ɾ, <nil> */
0x027f, 0x0000, /* ɿ, <nil> */
0x0280, 0x01a6, /* ʀ, Ʀ */
0x0281, 0x0000, /* ʁ, <nil> */
0x0282, 0x0000, /* ʂ, <nil> */
0x0283, 0x01a9, /* ʃ, Ʃ */
0x0284, 0x0000, /* ʄ, <nil> */
0x0285, 0x0000, /* ʅ, <nil> */
0x0286, 0x0000, /* ʆ, <nil> */
0x0287, 0x0000, /* ʇ, <nil> */
0x0288, 0x01ae, /* ʈ, Ʈ */
0x0289, 0x0000, /* ʉ, <nil> */
0x028c, 0x0000, /* ʌ, <nil> */
0x028d, 0x0000, /* ʍ, <nil> */
0x028e, 0x0000, /* ʎ, <nil> */
0x028f, 0x0000, /* ʏ, <nil> */
0x0290, 0x0000, /* ʐ, <nil> */
0x0291, 0x0000, /* ʑ, <nil> */
0x0292, 0x01b7, /* ʒ, Ʒ */
0x0293, 0x0000, /* ʓ, <nil> */
0x0294, 0x0241, /* ʔ, Ɂ */
0x0295, 0x0000, /* ʕ, <nil> */
0x0296, 0x0000, /* ʖ, <nil> */
0x0297, 0x0000, /* ʗ, <nil> */
0x0298, 0x0000, /* ʘ, <nil> */
0x0299, 0x0000, /* ʙ, <nil> */
0x029a, 0x0000, /* ʚ, <nil> */
0x029b, 0x0000, /* ʛ, <nil> */
0x029c, 0x0000, /* ʜ, <nil> */
0x029d, 0x0000, /* ʝ, <nil> */
0x029e, 0x0000, /* ʞ, <nil> */
0x029f, 0x0000, /* ʟ, <nil> */
0x02a0, 0x0000, /* ʠ, <nil> */
0x02a1, 0x0000, /* ʡ, <nil> */
0x02a2, 0x0000, /* ʢ, <nil> */
0x02a3, 0x0000, /* ʣ, <nil> */
0x02a4, 0x0000, /* ʤ, <nil> */
0x02a5, 0x0000, /* ʥ, <nil> */
0x02a6, 0x0000, /* ʦ, <nil> */
0x02a7, 0x0000, /* ʧ, <nil> */
0x02a8, 0x0000, /* ʨ, <nil> */
0x02a9, 0x0000, /* ʩ, <nil> */
0x02aa, 0x0000, /* ʪ, <nil> */
0x02ab, 0x0000, /* ʫ, <nil> */
0x02ac, 0x0000, /* ʬ, <nil> */
0x02ad, 0x0000, /* ʭ, <nil> */
0x02ae, 0x0000, /* ʮ, <nil> */
0x02af, 0x0000, /* ʯ, <nil> */
0x0345, 0x0399, /* ͅ, Ι */
0x0390, 0x0000, /* ΐ, <nil> */
0x03ac, 0x0386, /* ά, Ά */
0x03b0, 0x0000, /* ΰ, <nil> */
0x03c2, 0x03a3, /* ς, Σ */
0x03cc, 0x038c, /* ό, Ό */
0x03d0, 0x0392, /* ϐ, Β */
0x03d1, 0x0398, /* ϑ, Θ */
0x03d5, 0x03a6, /* ϕ, Φ */
0x03d6, 0x03a0, /* ϖ, Π */
0x03d7, 0x0000, /* ϗ, <nil> */
0x03d9, 0x03d8, /* ϙ, Ϙ */
0x03db, 0x03da, /* ϛ, Ϛ */
0x03dd, 0x03dc, /* ϝ, Ϝ */
0x03df, 0x03de, /* ϟ, Ϟ */
0x03e1, 0x03e0, /* ϡ, Ϡ */
0x03e3, 0x03e2, /* ϣ, Ϣ */
0x03e5, 0x03e4, /* ϥ, Ϥ */
0x03e7, 0x03e6, /* ϧ, Ϧ */
0x03e9, 0x03e8, /* ϩ, Ϩ */
0x03eb, 0x03ea, /* ϫ, Ϫ */
0x03ed, 0x03ec, /* ϭ, Ϭ */
0x03ef, 0x03ee, /* ϯ, Ϯ */
0x03f0, 0x039a, /* ϰ, Κ */
0x03f1, 0x03a1, /* ϱ, Ρ */
0x03f2, 0x03f9, /* ϲ, Ϲ */
0x03f3, 0x0000, /* ϳ, <nil> */
0x03f5, 0x0395, /* ϵ, Ε */
0x03f8, 0x03f7, /* ϸ, Ϸ */
0x03fb, 0x03fa, /* ϻ, Ϻ */
0x03fc, 0x0000, /* ϼ, <nil> */
0x0461, 0x0460, /* ѡ, Ѡ */
0x0463, 0x0462, /* ѣ, Ѣ */
0x0465, 0x0464, /* ѥ, Ѥ */
0x0467, 0x0466, /* ѧ, Ѧ */
0x0469, 0x0468, /* ѩ, Ѩ */
0x046b, 0x046a, /* ѫ, Ѫ */
0x046d, 0x046c, /* ѭ, Ѭ */
0x046f, 0x046e, /* ѯ, Ѯ */
0x0471, 0x0470, /* ѱ, Ѱ */
0x0473, 0x0472, /* ѳ, Ѳ */
0x0475, 0x0474, /* ѵ, Ѵ */
0x0477, 0x0476, /* ѷ, Ѷ */
0x0479, 0x0478, /* ѹ, Ѹ */
0x047b, 0x047a, /* ѻ, Ѻ */
0x047d, 0x047c, /* ѽ, Ѽ */
0x047f, 0x047e, /* ѿ, Ѿ */
0x0481, 0x0480, /* ҁ, Ҁ */
0x048b, 0x048a, /* ҋ, Ҋ */
0x048d, 0x048c, /* ҍ, Ҍ */
0x048f, 0x048e, /* ҏ, Ҏ */
0x0491, 0x0490, /* ґ, Ґ */
0x0493, 0x0492, /* ғ, Ғ */
0x0495, 0x0494, /* ҕ, Ҕ */
0x0497, 0x0496, /* җ, Җ */
0x0499, 0x0498, /* ҙ, Ҙ */
0x049b, 0x049a, /* қ, Қ */
0x049d, 0x049c, /* ҝ, Ҝ */
0x049f, 0x049e, /* ҟ, Ҟ */
0x04a1, 0x04a0, /* ҡ, Ҡ */
0x04a3, 0x04a2, /* ң, Ң */
0x04a5, 0x04a4, /* ҥ, Ҥ */
0x04a7, 0x04a6, /* ҧ, Ҧ */
0x04a9, 0x04a8, /* ҩ, Ҩ */
0x04ab, 0x04aa, /* ҫ, Ҫ */
0x04ad, 0x04ac, /* ҭ, Ҭ */
0x04af, 0x04ae, /* ү, Ү */
0x04b1, 0x04b0, /* ұ, Ұ */
0x04b3, 0x04b2, /* ҳ, Ҳ */
0x04b5, 0x04b4, /* ҵ, Ҵ */
0x04b7, 0x04b6, /* ҷ, Ҷ */
0x04b9, 0x04b8, /* ҹ, Ҹ */
0x04bb, 0x04ba, /* һ, Һ */
0x04bd, 0x04bc, /* ҽ, Ҽ */
0x04bf, 0x04be, /* ҿ, Ҿ */
0x04c2, 0x04c1, /* ӂ, Ӂ */
0x04c4, 0x04c3, /* ӄ, Ӄ */
0x04c6, 0x04c5, /* ӆ, Ӆ */
0x04c8, 0x04c7, /* ӈ, Ӈ */
0x04ca, 0x04c9, /* ӊ, Ӊ */
0x04cc, 0x04cb, /* ӌ, Ӌ */
0x04ce, 0x04cd, /* ӎ, Ӎ */
0x04d1, 0x04d0, /* ӑ, Ӑ */
0x04d3, 0x04d2, /* ӓ, Ӓ */
0x04d5, 0x04d4, /* ӕ, Ӕ */
0x04d7, 0x04d6, /* ӗ, Ӗ */
0x04d9, 0x04d8, /* ә, Ә */
0x04db, 0x04da, /* ӛ, Ӛ */
0x04dd, 0x04dc, /* ӝ, Ӝ */
0x04df, 0x04de, /* ӟ, Ӟ */
0x04e1, 0x04e0, /* ӡ, Ӡ */
0x04e3, 0x04e2, /* ӣ, Ӣ */
0x04e5, 0x04e4, /* ӥ, Ӥ */
0x04e7, 0x04e6, /* ӧ, Ӧ */
0x04e9, 0x04e8, /* ө, Ө */
0x04eb, 0x04ea, /* ӫ, Ӫ */
0x04ed, 0x04ec, /* ӭ, Ӭ */
0x04ef, 0x04ee, /* ӯ, Ӯ */
0x04f1, 0x04f0, /* ӱ, Ӱ */
0x04f3, 0x04f2, /* ӳ, Ӳ */
0x04f5, 0x04f4, /* ӵ, Ӵ */
0x04f7, 0x04f6, /* ӷ, Ӷ */
0x04f9, 0x04f8, /* ӹ, Ӹ */
0x0501, 0x0500, /* ԁ, Ԁ */
0x0503, 0x0502, /* ԃ, Ԃ */
0x0505, 0x0504, /* ԅ, Ԅ */
0x0507, 0x0506, /* ԇ, Ԇ */
0x0509, 0x0508, /* ԉ, Ԉ */
0x050b, 0x050a, /* ԋ, Ԋ */
0x050d, 0x050c, /* ԍ, Ԍ */
0x050f, 0x050e, /* ԏ, Ԏ */
0x0587, 0x0000, /* և, <nil> */
0x1d00, 0x0000, /* ᴀ, <nil> */
0x1d01, 0x0000, /* ᴁ, <nil> */
0x1d02, 0x0000, /* ᴂ, <nil> */
0x1d03, 0x0000, /* ᴃ, <nil> */
0x1d04, 0x0000, /* ᴄ, <nil> */
0x1d05, 0x0000, /* ᴅ, <nil> */
0x1d06, 0x0000, /* ᴆ, <nil> */
0x1d07, 0x0000, /* ᴇ, <nil> */
0x1d08, 0x0000, /* ᴈ, <nil> */
0x1d09, 0x0000, /* ᴉ, <nil> */
0x1d0a, 0x0000, /* ᴊ, <nil> */
0x1d0b, 0x0000, /* ᴋ, <nil> */
0x1d0c, 0x0000, /* ᴌ, <nil> */
0x1d0d, 0x0000, /* ᴍ, <nil> */
0x1d0e, 0x0000, /* ᴎ, <nil> */
0x1d0f, 0x0000, /* ᴏ, <nil> */
0x1d10, 0x0000, /* ᴐ, <nil> */
0x1d11, 0x0000, /* ᴑ, <nil> */
0x1d12, 0x0000, /* ᴒ, <nil> */
0x1d13, 0x0000, /* ᴓ, <nil> */
0x1d14, 0x0000, /* ᴔ, <nil> */
0x1d15, 0x0000, /* ᴕ, <nil> */
0x1d16, 0x0000, /* ᴖ, <nil> */
0x1d17, 0x0000, /* ᴗ, <nil> */
0x1d18, 0x0000, /* ᴘ, <nil> */
0x1d19, 0x0000, /* ᴙ, <nil> */
0x1d1a, 0x0000, /* ᴚ, <nil> */
0x1d1b, 0x0000, /* ᴛ, <nil> */
0x1d1c, 0x0000, /* ᴜ, <nil> */
0x1d1d, 0x0000, /* ᴝ, <nil> */
0x1d1e, 0x0000, /* ᴞ, <nil> */
0x1d1f, 0x0000, /* ᴟ, <nil> */
0x1d20, 0x0000, /* ᴠ, <nil> */
0x1d21, 0x0000, /* ᴡ, <nil> */
0x1d22, 0x0000, /* ᴢ, <nil> */
0x1d23, 0x0000, /* ᴣ, <nil> */
0x1d24, 0x0000, /* ᴤ, <nil> */
0x1d25, 0x0000, /* ᴥ, <nil> */
0x1d26, 0x0000, /* ᴦ, <nil> */
0x1d27, 0x0000, /* ᴧ, <nil> */
0x1d28, 0x0000, /* ᴨ, <nil> */
0x1d29, 0x0000, /* ᴩ, <nil> */
0x1d2a, 0x0000, /* ᴪ, <nil> */
0x1d2b, 0x0000, /* ᴫ, <nil> */
0x1d62, 0x0000, /* ᵢ, <nil> */
0x1d63, 0x0000, /* ᵣ, <nil> */
0x1d64, 0x0000, /* ᵤ, <nil> */
0x1d65, 0x0000, /* ᵥ, <nil> */
0x1d66, 0x0000, /* ᵦ, <nil> */
0x1d67, 0x0000, /* ᵧ, <nil> */
0x1d68, 0x0000, /* ᵨ, <nil> */
0x1d69, 0x0000, /* ᵩ, <nil> */
0x1d6a, 0x0000, /* ᵪ, <nil> */
0x1d6b, 0x0000, /* ᵫ, <nil> */
0x1d6c, 0x0000, /* ᵬ, <nil> */
0x1d6d, 0x0000, /* ᵭ, <nil> */
0x1d6e, 0x0000, /* ᵮ, <nil> */
0x1d6f, 0x0000, /* ᵯ, <nil> */
0x1d70, 0x0000, /* ᵰ, <nil> */
0x1d71, 0x0000, /* ᵱ, <nil> */
0x1d72, 0x0000, /* ᵲ, <nil> */
0x1d73, 0x0000, /* ᵳ, <nil> */
0x1d74, 0x0000, /* ᵴ, <nil> */
0x1d75, 0x0000, /* ᵵ, <nil> */
0x1d76, 0x0000, /* ᵶ, <nil> */
0x1d77, 0x0000, /* ᵷ, <nil> */
0x1d79, 0x0000, /* ᵹ, <nil> */
0x1d7a, 0x0000, /* ᵺ, <nil> */
0x1d7b, 0x0000, /* ᵻ, <nil> */
0x1d7c, 0x0000, /* ᵼ, <nil> */
0x1d7d, 0x0000, /* ᵽ, <nil> */
0x1d7e, 0x0000, /* ᵾ, <nil> */
0x1d7f, 0x0000, /* ᵿ, <nil> */
0x1d80, 0x0000, /* ᶀ, <nil> */
0x1d81, 0x0000, /* ᶁ, <nil> */
0x1d82, 0x0000, /* ᶂ, <nil> */
0x1d83, 0x0000, /* ᶃ, <nil> */
0x1d84, 0x0000, /* ᶄ, <nil> */
0x1d85, 0x0000, /* ᶅ, <nil> */
0x1d86, 0x0000, /* ᶆ, <nil> */
0x1d87, 0x0000, /* ᶇ, <nil> */
0x1d88, 0x0000, /* ᶈ, <nil> */
0x1d89, 0x0000, /* ᶉ, <nil> */
0x1d8a, 0x0000, /* ᶊ, <nil> */
0x1d8b, 0x0000, /* ᶋ, <nil> */
0x1d8c, 0x0000, /* ᶌ, <nil> */
0x1d8d, 0x0000, /* ᶍ, <nil> */
0x1d8e, 0x0000, /* ᶎ, <nil> */
0x1d8f, 0x0000, /* ᶏ, <nil> */
0x1d90, 0x0000, /* ᶐ, <nil> */
0x1d91, 0x0000, /* ᶑ, <nil> */
0x1d92, 0x0000, /* ᶒ, <nil> */
0x1d93, 0x0000, /* ᶓ, <nil> */
0x1d94, 0x0000, /* ᶔ, <nil> */
0x1d95, 0x0000, /* ᶕ, <nil> */
0x1d96, 0x0000, /* ᶖ, <nil> */
0x1d97, 0x0000, /* ᶗ, <nil> */
0x1d98, 0x0000, /* ᶘ, <nil> */
0x1d99, 0x0000, /* ᶙ, <nil> */
0x1d9a, 0x0000, /* ᶚ, <nil> */
0x1e01, 0x1e00, /* ḁ, Ḁ */
0x1e03, 0x1e02, /* ḃ, Ḃ */
0x1e05, 0x1e04, /* ḅ, Ḅ */
0x1e07, 0x1e06, /* ḇ, Ḇ */
0x1e09, 0x1e08, /* ḉ, Ḉ */
0x1e0b, 0x1e0a, /* ḋ, Ḋ */
0x1e0d, 0x1e0c, /* ḍ, Ḍ */
0x1e0f, 0x1e0e, /* ḏ, Ḏ */
0x1e11, 0x1e10, /* ḑ, Ḑ */
0x1e13, 0x1e12, /* ḓ, Ḓ */
0x1e15, 0x1e14, /* ḕ, Ḕ */
0x1e17, 0x1e16, /* ḗ, Ḗ */
0x1e19, 0x1e18, /* ḙ, Ḙ */
0x1e1b, 0x1e1a, /* ḛ, Ḛ */
0x1e1d, 0x1e1c, /* ḝ, Ḝ */
0x1e1f, 0x1e1e, /* ḟ, Ḟ */
0x1e21, 0x1e20, /* ḡ, Ḡ */
0x1e23, 0x1e22, /* ḣ, Ḣ */
0x1e25, 0x1e24, /* ḥ, Ḥ */
0x1e27, 0x1e26, /* ḧ, Ḧ */
0x1e29, 0x1e28, /* ḩ, Ḩ */
0x1e2b, 0x1e2a, /* ḫ, Ḫ */
0x1e2d, 0x1e2c, /* ḭ, Ḭ */
0x1e2f, 0x1e2e, /* ḯ, Ḯ */
0x1e31, 0x1e30, /* ḱ, Ḱ */
0x1e33, 0x1e32, /* ḳ, Ḳ */
0x1e35, 0x1e34, /* ḵ, Ḵ */
0x1e37, 0x1e36, /* ḷ, Ḷ */
0x1e39, 0x1e38, /* ḹ, Ḹ */
0x1e3b, 0x1e3a, /* ḻ, Ḻ */
0x1e3d, 0x1e3c, /* ḽ, Ḽ */
0x1e3f, 0x1e3e, /* ḿ, Ḿ */
0x1e41, 0x1e40, /* ṁ, Ṁ */
0x1e43, 0x1e42, /* ṃ, Ṃ */
0x1e45, 0x1e44, /* ṅ, Ṅ */
0x1e47, 0x1e46, /* ṇ, Ṇ */
0x1e49, 0x1e48, /* ṉ, Ṉ */
0x1e4b, 0x1e4a, /* ṋ, Ṋ */
0x1e4d, 0x1e4c, /* ṍ, Ṍ */
0x1e4f, 0x1e4e, /* ṏ, Ṏ */
0x1e51, 0x1e50, /* ṑ, Ṑ */
0x1e53, 0x1e52, /* ṓ, Ṓ */
0x1e55, 0x1e54, /* ṕ, Ṕ */
0x1e57, 0x1e56, /* ṗ, Ṗ */
0x1e59, 0x1e58, /* ṙ, Ṙ */
0x1e5b, 0x1e5a, /* ṛ, Ṛ */
0x1e5d, 0x1e5c, /* ṝ, Ṝ */
0x1e5f, 0x1e5e, /* ṟ, Ṟ */
0x1e61, 0x1e60, /* ṡ, Ṡ */
0x1e63, 0x1e62, /* ṣ, Ṣ */
0x1e65, 0x1e64, /* ṥ, Ṥ */
0x1e67, 0x1e66, /* ṧ, Ṧ */
0x1e69, 0x1e68, /* ṩ, Ṩ */
0x1e6b, 0x1e6a, /* ṫ, Ṫ */
0x1e6d, 0x1e6c, /* ṭ, Ṭ */
0x1e6f, 0x1e6e, /* ṯ, Ṯ */
0x1e71, 0x1e70, /* ṱ, Ṱ */
0x1e73, 0x1e72, /* ṳ, Ṳ */
0x1e75, 0x1e74, /* ṵ, Ṵ */
0x1e77, 0x1e76, /* ṷ, Ṷ */
0x1e79, 0x1e78, /* ṹ, Ṹ */
0x1e7b, 0x1e7a, /* ṻ, Ṻ */
0x1e7d, 0x1e7c, /* ṽ, Ṽ */
0x1e7f, 0x1e7e, /* ṿ, Ṿ */
0x1e81, 0x1e80, /* ẁ, Ẁ */
0x1e83, 0x1e82, /* ẃ, Ẃ */
0x1e85, 0x1e84, /* ẅ, Ẅ */
0x1e87, 0x1e86, /* ẇ, Ẇ */
0x1e89, 0x1e88, /* ẉ, Ẉ */
0x1e8b, 0x1e8a, /* ẋ, Ẋ */
0x1e8d, 0x1e8c, /* ẍ, Ẍ */
0x1e8f, 0x1e8e, /* ẏ, Ẏ */
0x1e91, 0x1e90, /* ẑ, Ẑ */
0x1e93, 0x1e92, /* ẓ, Ẓ */
0x1e95, 0x1e94, /* ẕ, Ẕ */
0x1e96, 0x0000, /* ẖ, <nil> */
0x1e97, 0x0000, /* ẗ, <nil> */
0x1e98, 0x0000, /* ẘ, <nil> */
0x1e99, 0x0000, /* ẙ, <nil> */
0x1e9a, 0x0000, /* ẚ, <nil> */
0x1e9b, 0x1e60, /* ẛ, Ṡ */
0x1ea1, 0x1ea0, /* ạ, Ạ */
0x1ea3, 0x1ea2, /* ả, Ả */
0x1ea5, 0x1ea4, /* ấ, Ấ */
0x1ea7, 0x1ea6, /* ầ, Ầ */
0x1ea9, 0x1ea8, /* ẩ, Ẩ */
0x1eab, 0x1eaa, /* ẫ, Ẫ */
0x1ead, 0x1eac, /* ậ, Ậ */
0x1eaf, 0x1eae, /* ắ, Ắ */
0x1eb1, 0x1eb0, /* ằ, Ằ */
0x1eb3, 0x1eb2, /* ẳ, Ẳ */
0x1eb5, 0x1eb4, /* ẵ, Ẵ */
0x1eb7, 0x1eb6, /* ặ, Ặ */
0x1eb9, 0x1eb8, /* ẹ, Ẹ */
0x1ebb, 0x1eba, /* ẻ, Ẻ */
0x1ebd, 0x1ebc, /* ẽ, Ẽ */
0x1ebf, 0x1ebe, /* ế, Ế */
0x1ec1, 0x1ec0, /* ề, Ề */
0x1ec3, 0x1ec2, /* ể, Ể */
0x1ec5, 0x1ec4, /* ễ, Ễ */
0x1ec7, 0x1ec6, /* ệ, Ệ */
0x1ec9, 0x1ec8, /* ỉ, Ỉ */
0x1ecb, 0x1eca, /* ị, Ị */
0x1ecd, 0x1ecc, /* ọ, Ọ */
0x1ecf, 0x1ece, /* ỏ, Ỏ */
0x1ed1, 0x1ed0, /* ố, Ố */
0x1ed3, 0x1ed2, /* ồ, Ồ */
0x1ed5, 0x1ed4, /* ổ, Ổ */
0x1ed7, 0x1ed6, /* ỗ, Ỗ */
0x1ed9, 0x1ed8, /* ộ, Ộ */
0x1edb, 0x1eda, /* ớ, Ớ */
0x1edd, 0x1edc, /* ờ, Ờ */
0x1edf, 0x1ede, /* ở, Ở */
0x1ee1, 0x1ee0, /* ỡ, Ỡ */
0x1ee3, 0x1ee2, /* ợ, Ợ */
0x1ee5, 0x1ee4, /* ụ, Ụ */
0x1ee7, 0x1ee6, /* ủ, Ủ */
0x1ee9, 0x1ee8, /* ứ, Ứ */
0x1eeb, 0x1eea, /* ừ, Ừ */
0x1eed, 0x1eec, /* ử, Ử */
0x1eef, 0x1eee, /* ữ, Ữ */
0x1ef1, 0x1ef0, /* ự, Ự */
0x1ef3, 0x1ef2, /* ỳ, Ỳ */
0x1ef5, 0x1ef4, /* ỵ, Ỵ */
0x1ef7, 0x1ef6, /* ỷ, Ỷ */
0x1ef9, 0x1ef8, /* ỹ, Ỹ */
0x1f50, 0x0000, /* ὐ, <nil> */
0x1f51, 0x1f59, /* ὑ, Ὑ */
0x1f52, 0x0000, /* ὒ, <nil> */
0x1f53, 0x1f5b, /* ὓ, Ὓ */
0x1f54, 0x0000, /* ὔ, <nil> */
0x1f55, 0x1f5d, /* ὕ, Ὕ */
0x1f56, 0x0000, /* ὖ, <nil> */
0x1f57, 0x1f5f, /* ὗ, Ὗ */
0x1fb2, 0x0000, /* ᾲ, <nil> */
0x1fb3, 0x1fbc, /* ᾳ, ᾼ */
0x1fb4, 0x0000, /* ᾴ, <nil> */
0x1fb6, 0x0000, /* ᾶ, <nil> */
0x1fb7, 0x0000, /* ᾷ, <nil> */
0x1fbe, 0x0399, /* ι, Ι */
0x1fc2, 0x0000, /* ῂ, <nil> */
0x1fc3, 0x1fcc, /* ῃ, ῌ */
0x1fc4, 0x0000, /* ῄ, <nil> */
0x1fc6, 0x0000, /* ῆ, <nil> */
0x1fc7, 0x0000, /* ῇ, <nil> */
0x1fd2, 0x0000, /* ῒ, <nil> */
0x1fd3, 0x0000, /* ΐ, <nil> */
0x1fd6, 0x0000, /* ῖ, <nil> */
0x1fd7, 0x0000, /* ῗ, <nil> */
0x1fe2, 0x0000, /* ῢ, <nil> */
0x1fe3, 0x0000, /* ΰ, <nil> */
0x1fe4, 0x0000, /* ῤ, <nil> */
0x1fe5, 0x1fec, /* ῥ, Ῥ */
0x1fe6, 0x0000, /* ῦ, <nil> */
0x1fe7, 0x0000, /* ῧ, <nil> */
0x1ff2, 0x0000, /* ῲ, <nil> */
0x1ff3, 0x1ffc, /* ῳ, ῼ */
0x1ff4, 0x0000, /* ῴ, <nil> */
0x1ff6, 0x0000, /* ῶ, <nil> */
0x1ff7, 0x0000, /* ῷ, <nil> */
0x2071, 0x0000, /* ⁱ, <nil> */
0x207f, 0x0000, /* ⁿ, <nil> */
0x210a, 0x0000, /* ℊ, <nil> */
0x210e, 0x0000, /* ℎ, <nil> */
0x210f, 0x0000, /* ℏ, <nil> */
0x2113, 0x0000, /* ℓ, <nil> */
0x212f, 0x0000, /* ℯ, <nil> */
0x2134, 0x0000, /* ℴ, <nil> */
0x2139, 0x0000, /* ℹ, <nil> */
0x213c, 0x0000, /* ℼ, <nil> */
0x213d, 0x0000, /* ℽ, <nil> */
0x2146, 0x0000, /* ⅆ, <nil> */
0x2147, 0x0000, /* ⅇ, <nil> */
0x2148, 0x0000, /* ⅈ, <nil> */
0x2149, 0x0000, /* ⅉ, <nil> */
0x2c81, 0x2c80, /* ⲁ, Ⲁ */
0x2c83, 0x2c82, /* ⲃ, Ⲃ */
0x2c85, 0x2c84, /* ⲅ, Ⲅ */
0x2c87, 0x2c86, /* ⲇ, Ⲇ */
0x2c89, 0x2c88, /* ⲉ, Ⲉ */
0x2c8b, 0x2c8a, /* ⲋ, Ⲋ */
0x2c8d, 0x2c8c, /* ⲍ, Ⲍ */
0x2c8f, 0x2c8e, /* ⲏ, Ⲏ */
0x2c91, 0x2c90, /* ⲑ, Ⲑ */
0x2c93, 0x2c92, /* ⲓ, Ⲓ */
0x2c95, 0x2c94, /* ⲕ, Ⲕ */
0x2c97, 0x2c96, /* ⲗ, Ⲗ */
0x2c99, 0x2c98, /* ⲙ, Ⲙ */
0x2c9b, 0x2c9a, /* ⲛ, Ⲛ */
0x2c9d, 0x2c9c, /* ⲝ, Ⲝ */
0x2c9f, 0x2c9e, /* ⲟ, Ⲟ */
0x2ca1, 0x2ca0, /* ⲡ, Ⲡ */
0x2ca3, 0x2ca2, /* ⲣ, Ⲣ */
0x2ca5, 0x2ca4, /* ⲥ, Ⲥ */
0x2ca7, 0x2ca6, /* ⲧ, Ⲧ */
0x2ca9, 0x2ca8, /* ⲩ, Ⲩ */
0x2cab, 0x2caa, /* ⲫ, Ⲫ */
0x2cad, 0x2cac, /* ⲭ, Ⲭ */
0x2caf, 0x2cae, /* ⲯ, Ⲯ */
0x2cb1, 0x2cb0, /* ⲱ, Ⲱ */
0x2cb3, 0x2cb2, /* ⲳ, Ⲳ */
0x2cb5, 0x2cb4, /* ⲵ, Ⲵ */
0x2cb7, 0x2cb6, /* ⲷ, Ⲷ */
0x2cb9, 0x2cb8, /* ⲹ, Ⲹ */
0x2cbb, 0x2cba, /* ⲻ, Ⲻ */
0x2cbd, 0x2cbc, /* ⲽ, Ⲽ */
0x2cbf, 0x2cbe, /* ⲿ, Ⲿ */
0x2cc1, 0x2cc0, /* ⳁ, Ⳁ */
0x2cc3, 0x2cc2, /* ⳃ, Ⳃ */
0x2cc5, 0x2cc4, /* ⳅ, Ⳅ */
0x2cc7, 0x2cc6, /* ⳇ, Ⳇ */
0x2cc9, 0x2cc8, /* ⳉ, Ⳉ */
0x2ccb, 0x2cca, /* ⳋ, Ⳋ */
0x2ccd, 0x2ccc, /* ⳍ, Ⳍ */
0x2ccf, 0x2cce, /* ⳏ, Ⳏ */
0x2cd1, 0x2cd0, /* ⳑ, Ⳑ */
0x2cd3, 0x2cd2, /* ⳓ, Ⳓ */
0x2cd5, 0x2cd4, /* ⳕ, Ⳕ */
0x2cd7, 0x2cd6, /* ⳗ, Ⳗ */
0x2cd9, 0x2cd8, /* ⳙ, Ⳙ */
0x2cdb, 0x2cda, /* ⳛ, Ⳛ */
0x2cdd, 0x2cdc, /* ⳝ, Ⳝ */
0x2cdf, 0x2cde, /* ⳟ, Ⳟ */
0x2ce1, 0x2ce0, /* ⳡ, Ⳡ */
0x2ce3, 0x2ce2, /* ⳣ, Ⳣ */
0x2ce4, 0x0000, /* ⳤ, <nil> */
0xfb00, 0x0000, /* ff, <nil> */
0xfb01, 0x0000, /* fi, <nil> */
0xfb02, 0x0000, /* fl, <nil> */
0xfb03, 0x0000, /* ffi, <nil> */
0xfb04, 0x0000, /* ffl, <nil> */
0xfb05, 0x0000, /* ſt, <nil> */
0xfb06, 0x0000, /* st, <nil> */
0xfb13, 0x0000, /* ﬓ, <nil> */
0xfb14, 0x0000, /* ﬔ, <nil> */
0xfb15, 0x0000, /* ﬕ, <nil> */
0xfb16, 0x0000, /* ﬖ, <nil> */
0xfb17, 0x0000, /* ﬗ, <nil> */
};
static
Rune __tolower2[] =
{
0x0041, 0x005a, 0x0061, /* A-Z, a-z */
0x00c0, 0x00d6, 0x00e0, /* À-Ö, à-ö */
0x00d8, 0x00de, 0x00f8, /* Ø-Þ, ø-þ */
0x0189, 0x018a, 0x0256, /* Ɖ-Ɗ, ɖ-ɗ */
0x01b1, 0x01b2, 0x028a, /* Ʊ-Ʋ, ʊ-ʋ */
0x0388, 0x038a, 0x03ad, /* Έ-Ί, έ-ί */
0x038e, 0x038f, 0x03cd, /* Ύ-Ώ, ύ-ώ */
0x0391, 0x03a1, 0x03b1, /* Α-Ρ, α-ρ */
0x03a3, 0x03ab, 0x03c3, /* Σ-Ϋ, σ-ϋ */
0x0400, 0x040f, 0x0450, /* Ѐ-Џ, ѐ-џ */
0x0410, 0x042f, 0x0430, /* А-Я, а-я */
0x0531, 0x0556, 0x0561, /* Ա-Ֆ, ա-ֆ */
0x10a0, 0x10c5, 0x2d00, /* Ⴀ-Ⴥ, ⴀ-ⴥ */
0x1f08, 0x1f0f, 0x1f00, /* Ἀ-Ἇ, ἀ-ἇ */
0x1f18, 0x1f1d, 0x1f10, /* Ἐ-Ἕ, ἐ-ἕ */
0x1f28, 0x1f2f, 0x1f20, /* Ἠ-Ἧ, ἠ-ἧ */
0x1f38, 0x1f3f, 0x1f30, /* Ἰ-Ἷ, ἰ-ἷ */
0x1f48, 0x1f4d, 0x1f40, /* Ὀ-Ὅ, ὀ-ὅ */
0x1f68, 0x1f6f, 0x1f60, /* Ὠ-Ὧ, ὠ-ὧ */
0x1f88, 0x1f8f, 0x1f80, /* ᾈ-ᾏ, ᾀ-ᾇ */
0x1f98, 0x1f9f, 0x1f90, /* ᾘ-ᾟ, ᾐ-ᾗ */
0x1fa8, 0x1faf, 0x1fa0, /* ᾨ-ᾯ, ᾠ-ᾧ */
0x1fb8, 0x1fb9, 0x1fb0, /* Ᾰ-Ᾱ, ᾰ-ᾱ */
0x1fba, 0x1fbb, 0x1f70, /* Ὰ-Ά, ὰ-ά */
0x1fc8, 0x1fcb, 0x1f72, /* Ὲ-Ή, ὲ-ή */
0x1fd8, 0x1fd9, 0x1fd0, /* Ῐ-Ῑ, ῐ-ῑ */
0x1fda, 0x1fdb, 0x1f76, /* Ὶ-Ί, ὶ-ί */
0x1fe8, 0x1fe9, 0x1fe0, /* Ῠ-Ῡ, ῠ-ῡ */
0x1fea, 0x1feb, 0x1f7a, /* Ὺ-Ύ, ὺ-ύ */
0x1ff8, 0x1ff9, 0x1f78, /* Ὸ-Ό, ὸ-ό */
0x1ffa, 0x1ffb, 0x1f7c, /* Ὼ-Ώ, ὼ-ώ */
0x2160, 0x216f, 0x2170, /* Ⅰ-Ⅿ, ⅰ-ⅿ */
0x24b6, 0x24cf, 0x24d0, /* Ⓐ-Ⓩ, ⓐ-ⓩ */
0x2c00, 0x2c2e, 0x2c30, /* Ⰰ-Ⱞ, ⰰ-ⱞ */
0xff21, 0xff3a, 0xff41, /* A-Z, a-z */
};
/*
* We allow the target character to be nil so isupperrune() works,
* even for bogus unicode that doesn't have a tolower().
*/
static
Rune __tolower1[] =
{
0x0100, 0x0101, /* Ā, ā */
0x0102, 0x0103, /* Ă, ă */
0x0104, 0x0105, /* Ą, ą */
0x0106, 0x0107, /* Ć, ć */
0x0108, 0x0109, /* Ĉ, ĉ */
0x010a, 0x010b, /* Ċ, ċ */
0x010c, 0x010d, /* Č, č */
0x010e, 0x010f, /* Ď, ď */
0x0110, 0x0111, /* Đ, đ */
0x0112, 0x0113, /* Ē, ē */
0x0114, 0x0115, /* Ĕ, ĕ */
0x0116, 0x0117, /* Ė, ė */
0x0118, 0x0119, /* Ę, ę */
0x011a, 0x011b, /* Ě, ě */
0x011c, 0x011d, /* Ĝ, ĝ */
0x011e, 0x011f, /* Ğ, ğ */
0x0120, 0x0121, /* Ġ, ġ */
0x0122, 0x0123, /* Ģ, ģ */
0x0124, 0x0125, /* Ĥ, ĥ */
0x0126, 0x0127, /* Ħ, ħ */
0x0128, 0x0129, /* Ĩ, ĩ */
0x012a, 0x012b, /* Ī, ī */
0x012c, 0x012d, /* Ĭ, ĭ */
0x012e, 0x012f, /* Į, į */
0x0130, 0x0069, /* İ, i */
0x0132, 0x0133, /* IJ, ij */
0x0134, 0x0135, /* Ĵ, ĵ */
0x0136, 0x0137, /* Ķ, ķ */
0x0139, 0x013a, /* Ĺ, ĺ */
0x013b, 0x013c, /* Ļ, ļ */
0x013d, 0x013e, /* Ľ, ľ */
0x013f, 0x0140, /* Ŀ, ŀ */
0x0141, 0x0142, /* Ł, ł */
0x0143, 0x0144, /* Ń, ń */
0x0145, 0x0146, /* Ņ, ņ */
0x0147, 0x0148, /* Ň, ň */
0x014a, 0x014b, /* Ŋ, ŋ */
0x014c, 0x014d, /* Ō, ō */
0x014e, 0x014f, /* Ŏ, ŏ */
0x0150, 0x0151, /* Ő, ő */
0x0152, 0x0153, /* Œ, œ */
0x0154, 0x0155, /* Ŕ, ŕ */
0x0156, 0x0157, /* Ŗ, ŗ */
0x0158, 0x0159, /* Ř, ř */
0x015a, 0x015b, /* Ś, ś */
0x015c, 0x015d, /* Ŝ, ŝ */
0x015e, 0x015f, /* Ş, ş */
0x0160, 0x0161, /* Š, š */
0x0162, 0x0163, /* Ţ, ţ */
0x0164, 0x0165, /* Ť, ť */
0x0166, 0x0167, /* Ŧ, ŧ */
0x0168, 0x0169, /* Ũ, ũ */
0x016a, 0x016b, /* Ū, ū */
0x016c, 0x016d, /* Ŭ, ŭ */
0x016e, 0x016f, /* Ů, ů */
0x0170, 0x0171, /* Ű, ű */
0x0172, 0x0173, /* Ų, ų */
0x0174, 0x0175, /* Ŵ, ŵ */
0x0176, 0x0177, /* Ŷ, ŷ */
0x0178, 0x00ff, /* Ÿ, ÿ */
0x0179, 0x017a, /* Ź, ź */
0x017b, 0x017c, /* Ż, ż */
0x017d, 0x017e, /* Ž, ž */
0x0181, 0x0253, /* Ɓ, ɓ */
0x0182, 0x0183, /* Ƃ, ƃ */
0x0184, 0x0185, /* Ƅ, ƅ */
0x0186, 0x0254, /* Ɔ, ɔ */
0x0187, 0x0188, /* Ƈ, ƈ */
0x018b, 0x018c, /* Ƌ, ƌ */
0x018e, 0x01dd, /* Ǝ, ǝ */
0x018f, 0x0259, /* Ə, ə */
0x0190, 0x025b, /* Ɛ, ɛ */
0x0191, 0x0192, /* Ƒ, ƒ */
0x0193, 0x0260, /* Ɠ, ɠ */
0x0194, 0x0263, /* Ɣ, ɣ */
0x0196, 0x0269, /* Ɩ, ɩ */
0x0197, 0x0268, /* Ɨ, ɨ */
0x0198, 0x0199, /* Ƙ, ƙ */
0x019c, 0x026f, /* Ɯ, ɯ */
0x019d, 0x0272, /* Ɲ, ɲ */
0x019f, 0x0275, /* Ɵ, ɵ */
0x01a0, 0x01a1, /* Ơ, ơ */
0x01a2, 0x01a3, /* Ƣ, ƣ */
0x01a4, 0x01a5, /* Ƥ, ƥ */
0x01a6, 0x0280, /* Ʀ, ʀ */
0x01a7, 0x01a8, /* Ƨ, ƨ */
0x01a9, 0x0283, /* Ʃ, ʃ */
0x01ac, 0x01ad, /* Ƭ, ƭ */
0x01ae, 0x0288, /* Ʈ, ʈ */
0x01af, 0x01b0, /* Ư, ư */
0x01b3, 0x01b4, /* Ƴ, ƴ */
0x01b5, 0x01b6, /* Ƶ, ƶ */
0x01b7, 0x0292, /* Ʒ, ʒ */
0x01b8, 0x01b9, /* Ƹ, ƹ */
0x01bc, 0x01bd, /* Ƽ, ƽ */
0x01c4, 0x01c6, /* DŽ, dž */
0x01c5, 0x01c6, /* Dž, dž */
0x01c7, 0x01c9, /* LJ, lj */
0x01c8, 0x01c9, /* Lj, lj */
0x01ca, 0x01cc, /* NJ, nj */
0x01cb, 0x01cc, /* Nj, nj */
0x01cd, 0x01ce, /* Ǎ, ǎ */
0x01cf, 0x01d0, /* Ǐ, ǐ */
0x01d1, 0x01d2, /* Ǒ, ǒ */
0x01d3, 0x01d4, /* Ǔ, ǔ */
0x01d5, 0x01d6, /* Ǖ, ǖ */
0x01d7, 0x01d8, /* Ǘ, ǘ */
0x01d9, 0x01da, /* Ǚ, ǚ */
0x01db, 0x01dc, /* Ǜ, ǜ */
0x01de, 0x01df, /* Ǟ, ǟ */
0x01e0, 0x01e1, /* Ǡ, ǡ */
0x01e2, 0x01e3, /* Ǣ, ǣ */
0x01e4, 0x01e5, /* Ǥ, ǥ */
0x01e6, 0x01e7, /* Ǧ, ǧ */
0x01e8, 0x01e9, /* Ǩ, ǩ */
0x01ea, 0x01eb, /* Ǫ, ǫ */
0x01ec, 0x01ed, /* Ǭ, ǭ */
0x01ee, 0x01ef, /* Ǯ, ǯ */
0x01f1, 0x01f3, /* DZ, dz */
0x01f2, 0x01f3, /* Dz, dz */
0x01f4, 0x01f5, /* Ǵ, ǵ */
0x01f6, 0x0195, /* Ƕ, ƕ */
0x01f7, 0x01bf, /* Ƿ, ƿ */
0x01f8, 0x01f9, /* Ǹ, ǹ */
0x01fa, 0x01fb, /* Ǻ, ǻ */
0x01fc, 0x01fd, /* Ǽ, ǽ */
0x01fe, 0x01ff, /* Ǿ, ǿ */
0x0200, 0x0201, /* Ȁ, ȁ */
0x0202, 0x0203, /* Ȃ, ȃ */
0x0204, 0x0205, /* Ȅ, ȅ */
0x0206, 0x0207, /* Ȇ, ȇ */
0x0208, 0x0209, /* Ȉ, ȉ */
0x020a, 0x020b, /* Ȋ, ȋ */
0x020c, 0x020d, /* Ȍ, ȍ */
0x020e, 0x020f, /* Ȏ, ȏ */
0x0210, 0x0211, /* Ȑ, ȑ */
0x0212, 0x0213, /* Ȓ, ȓ */
0x0214, 0x0215, /* Ȕ, ȕ */
0x0216, 0x0217, /* Ȗ, ȗ */
0x0218, 0x0219, /* Ș, ș */
0x021a, 0x021b, /* Ț, ț */
0x021c, 0x021d, /* Ȝ, ȝ */
0x021e, 0x021f, /* Ȟ, ȟ */
0x0220, 0x019e, /* Ƞ, ƞ */
0x0222, 0x0223, /* Ȣ, ȣ */
0x0224, 0x0225, /* Ȥ, ȥ */
0x0226, 0x0227, /* Ȧ, ȧ */
0x0228, 0x0229, /* Ȩ, ȩ */
0x022a, 0x022b, /* Ȫ, ȫ */
0x022c, 0x022d, /* Ȭ, ȭ */
0x022e, 0x022f, /* Ȯ, ȯ */
0x0230, 0x0231, /* Ȱ, ȱ */
0x0232, 0x0233, /* Ȳ, ȳ */
0x023a, 0x0000, /* Ⱥ, <nil> */
0x023b, 0x023c, /* Ȼ, ȼ */
0x023d, 0x019a, /* Ƚ, ƚ */
0x023e, 0x0000, /* Ⱦ, <nil> */
0x0241, 0x0294, /* Ɂ, ʔ */
0x0386, 0x03ac, /* Ά, ά */
0x038c, 0x03cc, /* Ό, ό */
0x03d2, 0x0000, /* ϒ, <nil> */
0x03d3, 0x0000, /* ϓ, <nil> */
0x03d4, 0x0000, /* ϔ, <nil> */
0x03d8, 0x03d9, /* Ϙ, ϙ */
0x03da, 0x03db, /* Ϛ, ϛ */
0x03dc, 0x03dd, /* Ϝ, ϝ */
0x03de, 0x03df, /* Ϟ, ϟ */
0x03e0, 0x03e1, /* Ϡ, ϡ */
0x03e2, 0x03e3, /* Ϣ, ϣ */
0x03e4, 0x03e5, /* Ϥ, ϥ */
0x03e6, 0x03e7, /* Ϧ, ϧ */
0x03e8, 0x03e9, /* Ϩ, ϩ */
0x03ea, 0x03eb, /* Ϫ, ϫ */
0x03ec, 0x03ed, /* Ϭ, ϭ */
0x03ee, 0x03ef, /* Ϯ, ϯ */
0x03f4, 0x03b8, /* ϴ, θ */
0x03f7, 0x03f8, /* Ϸ, ϸ */
0x03f9, 0x03f2, /* Ϲ, ϲ */
0x03fa, 0x03fb, /* Ϻ, ϻ */
0x03fd, 0x0000, /* Ͻ, <nil> */
0x03fe, 0x0000, /* Ͼ, <nil> */
0x03ff, 0x0000, /* Ͽ, <nil> */
0x0460, 0x0461, /* Ѡ, ѡ */
0x0462, 0x0463, /* Ѣ, ѣ */
0x0464, 0x0465, /* Ѥ, ѥ */
0x0466, 0x0467, /* Ѧ, ѧ */
0x0468, 0x0469, /* Ѩ, ѩ */
0x046a, 0x046b, /* Ѫ, ѫ */
0x046c, 0x046d, /* Ѭ, ѭ */
0x046e, 0x046f, /* Ѯ, ѯ */
0x0470, 0x0471, /* Ѱ, ѱ */
0x0472, 0x0473, /* Ѳ, ѳ */
0x0474, 0x0475, /* Ѵ, ѵ */
0x0476, 0x0477, /* Ѷ, ѷ */
0x0478, 0x0479, /* Ѹ, ѹ */
0x047a, 0x047b, /* Ѻ, ѻ */
0x047c, 0x047d, /* Ѽ, ѽ */
0x047e, 0x047f, /* Ѿ, ѿ */
0x0480, 0x0481, /* Ҁ, ҁ */
0x048a, 0x048b, /* Ҋ, ҋ */
0x048c, 0x048d, /* Ҍ, ҍ */
0x048e, 0x048f, /* Ҏ, ҏ */
0x0490, 0x0491, /* Ґ, ґ */
0x0492, 0x0493, /* Ғ, ғ */
0x0494, 0x0495, /* Ҕ, ҕ */
0x0496, 0x0497, /* Җ, җ */
0x0498, 0x0499, /* Ҙ, ҙ */
0x049a, 0x049b, /* Қ, қ */
0x049c, 0x049d, /* Ҝ, ҝ */
0x049e, 0x049f, /* Ҟ, ҟ */
0x04a0, 0x04a1, /* Ҡ, ҡ */
0x04a2, 0x04a3, /* Ң, ң */
0x04a4, 0x04a5, /* Ҥ, ҥ */
0x04a6, 0x04a7, /* Ҧ, ҧ */
0x04a8, 0x04a9, /* Ҩ, ҩ */
0x04aa, 0x04ab, /* Ҫ, ҫ */
0x04ac, 0x04ad, /* Ҭ, ҭ */
0x04ae, 0x04af, /* Ү, ү */
0x04b0, 0x04b1, /* Ұ, ұ */
0x04b2, 0x04b3, /* Ҳ, ҳ */
0x04b4, 0x04b5, /* Ҵ, ҵ */
0x04b6, 0x04b7, /* Ҷ, ҷ */
0x04b8, 0x04b9, /* Ҹ, ҹ */
0x04ba, 0x04bb, /* Һ, һ */
0x04bc, 0x04bd, /* Ҽ, ҽ */
0x04be, 0x04bf, /* Ҿ, ҿ */
0x04c0, 0x0000, /* Ӏ, <nil> */
0x04c1, 0x04c2, /* Ӂ, ӂ */
0x04c3, 0x04c4, /* Ӄ, ӄ */
0x04c5, 0x04c6, /* Ӆ, ӆ */
0x04c7, 0x04c8, /* Ӈ, ӈ */
0x04c9, 0x04ca, /* Ӊ, ӊ */
0x04cb, 0x04cc, /* Ӌ, ӌ */
0x04cd, 0x04ce, /* Ӎ, ӎ */
0x04d0, 0x04d1, /* Ӑ, ӑ */
0x04d2, 0x04d3, /* Ӓ, ӓ */
0x04d4, 0x04d5, /* Ӕ, ӕ */
0x04d6, 0x04d7, /* Ӗ, ӗ */
0x04d8, 0x04d9, /* Ә, ә */
0x04da, 0x04db, /* Ӛ, ӛ */
0x04dc, 0x04dd, /* Ӝ, ӝ */
0x04de, 0x04df, /* Ӟ, ӟ */
0x04e0, 0x04e1, /* Ӡ, ӡ */
0x04e2, 0x04e3, /* Ӣ, ӣ */
0x04e4, 0x04e5, /* Ӥ, ӥ */
0x04e6, 0x04e7, /* Ӧ, ӧ */
0x04e8, 0x04e9, /* Ө, ө */
0x04ea, 0x04eb, /* Ӫ, ӫ */
0x04ec, 0x04ed, /* Ӭ, ӭ */
0x04ee, 0x04ef, /* Ӯ, ӯ */
0x04f0, 0x04f1, /* Ӱ, ӱ */
0x04f2, 0x04f3, /* Ӳ, ӳ */
0x04f4, 0x04f5, /* Ӵ, ӵ */
0x04f6, 0x04f7, /* Ӷ, ӷ */
0x04f8, 0x04f9, /* Ӹ, ӹ */
0x0500, 0x0501, /* Ԁ, ԁ */
0x0502, 0x0503, /* Ԃ, ԃ */
0x0504, 0x0505, /* Ԅ, ԅ */
0x0506, 0x0507, /* Ԇ, ԇ */
0x0508, 0x0509, /* Ԉ, ԉ */
0x050a, 0x050b, /* Ԋ, ԋ */
0x050c, 0x050d, /* Ԍ, ԍ */
0x050e, 0x050f, /* Ԏ, ԏ */
0x1e00, 0x1e01, /* Ḁ, ḁ */
0x1e02, 0x1e03, /* Ḃ, ḃ */
0x1e04, 0x1e05, /* Ḅ, ḅ */
0x1e06, 0x1e07, /* Ḇ, ḇ */
0x1e08, 0x1e09, /* Ḉ, ḉ */
0x1e0a, 0x1e0b, /* Ḋ, ḋ */
0x1e0c, 0x1e0d, /* Ḍ, ḍ */
0x1e0e, 0x1e0f, /* Ḏ, ḏ */
0x1e10, 0x1e11, /* Ḑ, ḑ */
0x1e12, 0x1e13, /* Ḓ, ḓ */
0x1e14, 0x1e15, /* Ḕ, ḕ */
0x1e16, 0x1e17, /* Ḗ, ḗ */
0x1e18, 0x1e19, /* Ḙ, ḙ */
0x1e1a, 0x1e1b, /* Ḛ, ḛ */
0x1e1c, 0x1e1d, /* Ḝ, ḝ */
0x1e1e, 0x1e1f, /* Ḟ, ḟ */
0x1e20, 0x1e21, /* Ḡ, ḡ */
0x1e22, 0x1e23, /* Ḣ, ḣ */
0x1e24, 0x1e25, /* Ḥ, ḥ */
0x1e26, 0x1e27, /* Ḧ, ḧ */
0x1e28, 0x1e29, /* Ḩ, ḩ */
0x1e2a, 0x1e2b, /* Ḫ, ḫ */
0x1e2c, 0x1e2d, /* Ḭ, ḭ */
0x1e2e, 0x1e2f, /* Ḯ, ḯ */
0x1e30, 0x1e31, /* Ḱ, ḱ */
0x1e32, 0x1e33, /* Ḳ, ḳ */
0x1e34, 0x1e35, /* Ḵ, ḵ */
0x1e36, 0x1e37, /* Ḷ, ḷ */
0x1e38, 0x1e39, /* Ḹ, ḹ */
0x1e3a, 0x1e3b, /* Ḻ, ḻ */
0x1e3c, 0x1e3d, /* Ḽ, ḽ */
0x1e3e, 0x1e3f, /* Ḿ, ḿ */
0x1e40, 0x1e41, /* Ṁ, ṁ */
0x1e42, 0x1e43, /* Ṃ, ṃ */
0x1e44, 0x1e45, /* Ṅ, ṅ */
0x1e46, 0x1e47, /* Ṇ, ṇ */
0x1e48, 0x1e49, /* Ṉ, ṉ */
0x1e4a, 0x1e4b, /* Ṋ, ṋ */
0x1e4c, 0x1e4d, /* Ṍ, ṍ */
0x1e4e, 0x1e4f, /* Ṏ, ṏ */
0x1e50, 0x1e51, /* Ṑ, ṑ */
0x1e52, 0x1e53, /* Ṓ, ṓ */
0x1e54, 0x1e55, /* Ṕ, ṕ */
0x1e56, 0x1e57, /* Ṗ, ṗ */
0x1e58, 0x1e59, /* Ṙ, ṙ */
0x1e5a, 0x1e5b, /* Ṛ, ṛ */
0x1e5c, 0x1e5d, /* Ṝ, ṝ */
0x1e5e, 0x1e5f, /* Ṟ, ṟ */
0x1e60, 0x1e61, /* Ṡ, ṡ */
0x1e62, 0x1e63, /* Ṣ, ṣ */
0x1e64, 0x1e65, /* Ṥ, ṥ */
0x1e66, 0x1e67, /* Ṧ, ṧ */
0x1e68, 0x1e69, /* Ṩ, ṩ */
0x1e6a, 0x1e6b, /* Ṫ, ṫ */
0x1e6c, 0x1e6d, /* Ṭ, ṭ */
0x1e6e, 0x1e6f, /* Ṯ, ṯ */
0x1e70, 0x1e71, /* Ṱ, ṱ */
0x1e72, 0x1e73, /* Ṳ, ṳ */
0x1e74, 0x1e75, /* Ṵ, ṵ */
0x1e76, 0x1e77, /* Ṷ, ṷ */
0x1e78, 0x1e79, /* Ṹ, ṹ */
0x1e7a, 0x1e7b, /* Ṻ, ṻ */
0x1e7c, 0x1e7d, /* Ṽ, ṽ */
0x1e7e, 0x1e7f, /* Ṿ, ṿ */
0x1e80, 0x1e81, /* Ẁ, ẁ */
0x1e82, 0x1e83, /* Ẃ, ẃ */
0x1e84, 0x1e85, /* Ẅ, ẅ */
0x1e86, 0x1e87, /* Ẇ, ẇ */
0x1e88, 0x1e89, /* Ẉ, ẉ */
0x1e8a, 0x1e8b, /* Ẋ, ẋ */
0x1e8c, 0x1e8d, /* Ẍ, ẍ */
0x1e8e, 0x1e8f, /* Ẏ, ẏ */
0x1e90, 0x1e91, /* Ẑ, ẑ */
0x1e92, 0x1e93, /* Ẓ, ẓ */
0x1e94, 0x1e95, /* Ẕ, ẕ */
0x1ea0, 0x1ea1, /* Ạ, ạ */
0x1ea2, 0x1ea3, /* Ả, ả */
0x1ea4, 0x1ea5, /* Ấ, ấ */
0x1ea6, 0x1ea7, /* Ầ, ầ */
0x1ea8, 0x1ea9, /* Ẩ, ẩ */
0x1eaa, 0x1eab, /* Ẫ, ẫ */
0x1eac, 0x1ead, /* Ậ, ậ */
0x1eae, 0x1eaf, /* Ắ, ắ */
0x1eb0, 0x1eb1, /* Ằ, ằ */
0x1eb2, 0x1eb3, /* Ẳ, ẳ */
0x1eb4, 0x1eb5, /* Ẵ, ẵ */
0x1eb6, 0x1eb7, /* Ặ, ặ */
0x1eb8, 0x1eb9, /* Ẹ, ẹ */
0x1eba, 0x1ebb, /* Ẻ, ẻ */
0x1ebc, 0x1ebd, /* Ẽ, ẽ */
0x1ebe, 0x1ebf, /* Ế, ế */
0x1ec0, 0x1ec1, /* Ề, ề */
0x1ec2, 0x1ec3, /* Ể, ể */
0x1ec4, 0x1ec5, /* Ễ, ễ */
0x1ec6, 0x1ec7, /* Ệ, ệ */
0x1ec8, 0x1ec9, /* Ỉ, ỉ */
0x1eca, 0x1ecb, /* Ị, ị */
0x1ecc, 0x1ecd, /* Ọ, ọ */
0x1ece, 0x1ecf, /* Ỏ, ỏ */
0x1ed0, 0x1ed1, /* Ố, ố */
0x1ed2, 0x1ed3, /* Ồ, ồ */
0x1ed4, 0x1ed5, /* Ổ, ổ */
0x1ed6, 0x1ed7, /* Ỗ, ỗ */
0x1ed8, 0x1ed9, /* Ộ, ộ */
0x1eda, 0x1edb, /* Ớ, ớ */
0x1edc, 0x1edd, /* Ờ, ờ */
0x1ede, 0x1edf, /* Ở, ở */
0x1ee0, 0x1ee1, /* Ỡ, ỡ */
0x1ee2, 0x1ee3, /* Ợ, ợ */
0x1ee4, 0x1ee5, /* Ụ, ụ */
0x1ee6, 0x1ee7, /* Ủ, ủ */
0x1ee8, 0x1ee9, /* Ứ, ứ */
0x1eea, 0x1eeb, /* Ừ, ừ */
0x1eec, 0x1eed, /* Ử, ử */
0x1eee, 0x1eef, /* Ữ, ữ */
0x1ef0, 0x1ef1, /* Ự, ự */
0x1ef2, 0x1ef3, /* Ỳ, ỳ */
0x1ef4, 0x1ef5, /* Ỵ, ỵ */
0x1ef6, 0x1ef7, /* Ỷ, ỷ */
0x1ef8, 0x1ef9, /* Ỹ, ỹ */
0x1f59, 0x1f51, /* Ὑ, ὑ */
0x1f5b, 0x1f53, /* Ὓ, ὓ */
0x1f5d, 0x1f55, /* Ὕ, ὕ */
0x1f5f, 0x1f57, /* Ὗ, ὗ */
0x1fbc, 0x1fb3, /* ᾼ, ᾳ */
0x1fcc, 0x1fc3, /* ῌ, ῃ */
0x1fec, 0x1fe5, /* Ῥ, ῥ */
0x1ffc, 0x1ff3, /* ῼ, ῳ */
0x2102, 0x0000, /* ℂ, <nil> */
0x2107, 0x0000, /* ℇ, <nil> */
0x210b, 0x0000, /* ℋ, <nil> */
0x210c, 0x0000, /* ℌ, <nil> */
0x210d, 0x0000, /* ℍ, <nil> */
0x2110, 0x0000, /* ℐ, <nil> */
0x2111, 0x0000, /* ℑ, <nil> */
0x2112, 0x0000, /* ℒ, <nil> */
0x2115, 0x0000, /* ℕ, <nil> */
0x2119, 0x0000, /* ℙ, <nil> */
0x211a, 0x0000, /* ℚ, <nil> */
0x211b, 0x0000, /* ℛ, <nil> */
0x211c, 0x0000, /* ℜ, <nil> */
0x211d, 0x0000, /* ℝ, <nil> */
0x2124, 0x0000, /* ℤ, <nil> */
0x2126, 0x03c9, /* Ω, ω */
0x2128, 0x0000, /* ℨ, <nil> */
0x212a, 0x006b, /* K, k */
0x212b, 0x00e5, /* Å, å */
0x212c, 0x0000, /* ℬ, <nil> */
0x212d, 0x0000, /* ℭ, <nil> */
0x2130, 0x0000, /* ℰ, <nil> */
0x2131, 0x0000, /* ℱ, <nil> */
0x2133, 0x0000, /* ℳ, <nil> */
0x213e, 0x0000, /* ℾ, <nil> */
0x213f, 0x0000, /* ℿ, <nil> */
0x2145, 0x0000, /* ⅅ, <nil> */
0x2c80, 0x2c81, /* Ⲁ, ⲁ */
0x2c82, 0x2c83, /* Ⲃ, ⲃ */
0x2c84, 0x2c85, /* Ⲅ, ⲅ */
0x2c86, 0x2c87, /* Ⲇ, ⲇ */
0x2c88, 0x2c89, /* Ⲉ, ⲉ */
0x2c8a, 0x2c8b, /* Ⲋ, ⲋ */
0x2c8c, 0x2c8d, /* Ⲍ, ⲍ */
0x2c8e, 0x2c8f, /* Ⲏ, ⲏ */
0x2c90, 0x2c91, /* Ⲑ, ⲑ */
0x2c92, 0x2c93, /* Ⲓ, ⲓ */
0x2c94, 0x2c95, /* Ⲕ, ⲕ */
0x2c96, 0x2c97, /* Ⲗ, ⲗ */
0x2c98, 0x2c99, /* Ⲙ, ⲙ */
0x2c9a, 0x2c9b, /* Ⲛ, ⲛ */
0x2c9c, 0x2c9d, /* Ⲝ, ⲝ */
0x2c9e, 0x2c9f, /* Ⲟ, ⲟ */
0x2ca0, 0x2ca1, /* Ⲡ, ⲡ */
0x2ca2, 0x2ca3, /* Ⲣ, ⲣ */
0x2ca4, 0x2ca5, /* Ⲥ, ⲥ */
0x2ca6, 0x2ca7, /* Ⲧ, ⲧ */
0x2ca8, 0x2ca9, /* Ⲩ, ⲩ */
0x2caa, 0x2cab, /* Ⲫ, ⲫ */
0x2cac, 0x2cad, /* Ⲭ, ⲭ */
0x2cae, 0x2caf, /* Ⲯ, ⲯ */
0x2cb0, 0x2cb1, /* Ⲱ, ⲱ */
0x2cb2, 0x2cb3, /* Ⲳ, ⲳ */
0x2cb4, 0x2cb5, /* Ⲵ, ⲵ */
0x2cb6, 0x2cb7, /* Ⲷ, ⲷ */
0x2cb8, 0x2cb9, /* Ⲹ, ⲹ */
0x2cba, 0x2cbb, /* Ⲻ, ⲻ */
0x2cbc, 0x2cbd, /* Ⲽ, ⲽ */
0x2cbe, 0x2cbf, /* Ⲿ, ⲿ */
0x2cc0, 0x2cc1, /* Ⳁ, ⳁ */
0x2cc2, 0x2cc3, /* Ⳃ, ⳃ */
0x2cc4, 0x2cc5, /* Ⳅ, ⳅ */
0x2cc6, 0x2cc7, /* Ⳇ, ⳇ */
0x2cc8, 0x2cc9, /* Ⳉ, ⳉ */
0x2cca, 0x2ccb, /* Ⳋ, ⳋ */
0x2ccc, 0x2ccd, /* Ⳍ, ⳍ */
0x2cce, 0x2ccf, /* Ⳏ, ⳏ */
0x2cd0, 0x2cd1, /* Ⳑ, ⳑ */
0x2cd2, 0x2cd3, /* Ⳓ, ⳓ */
0x2cd4, 0x2cd5, /* Ⳕ, ⳕ */
0x2cd6, 0x2cd7, /* Ⳗ, ⳗ */
0x2cd8, 0x2cd9, /* Ⳙ, ⳙ */
0x2cda, 0x2cdb, /* Ⳛ, ⳛ */
0x2cdc, 0x2cdd, /* Ⳝ, ⳝ */
0x2cde, 0x2cdf, /* Ⳟ, ⳟ */
0x2ce0, 0x2ce1, /* Ⳡ, ⳡ */
0x2ce2, 0x2ce3, /* Ⳣ, ⳣ */
};
static
Rune __totitle1[] =
{
0x01C6, 0x01C5, /* dž, Dž */
0x01C5, 0x01C5, /* Dž, Dž */
0x01C9, 0x01C8, /* lj, Lj */
0x01C8, 0x01C8, /* Lj, Lj */
0x01CC, 0x01CB, /* nj, Nj */
0x01CB, 0x01CB, /* Nj, Nj */
0x01F3, 0x01F2, /* dz, Dz */
0x01F2, 0x01F2, /* Dz, Dz */
0x1F80, 0x1F88, /* ᾀ, ᾈ */
0x1F81, 0x1F89, /* ᾁ, ᾉ */
0x1F82, 0x1F8A, /* ᾂ, ᾊ */
0x1F83, 0x1F8B, /* ᾃ, ᾋ */
0x1F84, 0x1F8C, /* ᾄ, ᾌ */
0x1F85, 0x1F8D, /* ᾅ, ᾍ */
0x1F86, 0x1F8E, /* ᾆ, ᾎ */
0x1F87, 0x1F8F, /* ᾇ, ᾏ */
0x1F90, 0x1F98, /* ᾐ, ᾘ */
0x1F91, 0x1F99, /* ᾑ, ᾙ */
0x1F92, 0x1F9A, /* ᾒ, ᾚ */
0x1F93, 0x1F9B, /* ᾓ, ᾛ */
0x1F94, 0x1F9C, /* ᾔ, ᾜ */
0x1F95, 0x1F9D, /* ᾕ, ᾝ */
0x1F96, 0x1F9E, /* ᾖ, ᾞ */
0x1F97, 0x1F9F, /* ᾗ, ᾟ */
0x1FA0, 0x1FA8, /* ᾠ, ᾨ */
0x1FA1, 0x1FA9, /* ᾡ, ᾩ */
0x1FA2, 0x1FAA, /* ᾢ, ᾪ */
0x1FA3, 0x1FAB, /* ᾣ, ᾫ */
0x1FA4, 0x1FAC, /* ᾤ, ᾬ */
0x1FA5, 0x1FAD, /* ᾥ, ᾭ */
0x1FA6, 0x1FAE, /* ᾦ, ᾮ */
0x1FA7, 0x1FAF, /* ᾧ, ᾯ */
0x1FB3, 0x1FBC, /* ᾳ, ᾼ */
0x1FC3, 0x1FCC, /* ῃ, ῌ */
0x1FF3, 0x1FFC, /* ῳ, ῼ */
};
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] quote file name
2006-07-28 15:26 ` arisawa
2006-07-28 15:49 ` erik quanstrom
@ 2006-07-28 15:51 ` erik quanstrom
1 sibling, 0 replies; 15+ messages in thread
From: erik quanstrom @ 2006-07-28 15:51 UTC (permalink / raw)
To: 9fans
[-- Attachment #1: Type: text/plain, Size: 875 bytes --]
here are the basics of what you need to implement needshumanquote.
you will also need to add these prototypes to libc.h:
int isspacerune(Rune);
int isdigitrune(Rune); // recognizes (super|sub)script/indic/tamil/thai/... digits
int digitrunevalue(Rune); // converts a rune to it's numeric value. -1 if not a digit.
my utf tables are a little bit different than the distribution. i believe that
most of the differences are due to the fact that i generated my tables from unicode-4.1.
i'll be happy to submit a patch, if there's any interest.
- erik
> the purpose of the function is to determine if the string needs
> quoting for
> rc's benefit.
>I agree current quote is designed for rc benefit.
>But I want something that helps for human reading.
>
>needshumanquote(int r) or the improved version will be nice
>if it is available in ls command.
[-- Attachment #2: runetype.c --]
[-- Type: text/plain, Size: 2388 bytes --]
#include <u.h>
#include <libc.h>
#include "utf-tables.h"
static Rune*
bsearch(Rune c, Rune *t, int n, int ne)
{
Rune *p;
int m;
while(n > 1) {
m = n/2;
p = t + m*ne;
if(c >= p[0]) {
t = p;
n = n-m;
} else
n = m;
}
if(n && c >= t[0])
return t;
return 0;
}
Rune
tolowerrune(Rune c)
{
Rune *p;
p = bsearch(c, __tolower2, nelem(__tolower2)/3, 3);
if(p && c >= p[0] && c <= p[1])
return p[2] + (c - p[0]);
p = bsearch(c, __tolower1, nelem(__tolower1)/2, 2);
if(p && c == p[0] && p[2])
return p[2] + (c - p[0]);
return c;
}
Rune
toupperrune(Rune c)
{
Rune *p;
p = bsearch(c, __toupper2, nelem(__toupper2)/3, 3);
if(p && c >= p[0] && c <= p[1])
return p[2] + (c - p[0]);
p = bsearch(c, __toupper1, nelem(__toupper1)/2, 2);
if(p && c == p[0] && p[2])
return p[2] + (c - p[0]);
return c;
}
Rune
totitlerune(Rune c)
{
Rune *p;
p = bsearch(c, __totitle1, nelem(__totitle1)/2, 2);
if(p && c == p[0])
return p[2] + (c - p[0]);
return c;
}
int
islowerrune(Rune c)
{
Rune *p;
p = bsearch(c, __toupper2, nelem(__toupper2)/3, 3);
if(p && c >= p[0] && c <= p[1])
return 1;
p = bsearch(c, __toupper1, nelem(__toupper1)/2, 2);
if(p && c == p[0])
return 1;
return 0;
}
int
isupperrune(Rune c)
{
Rune *p;
p = bsearch(c, __tolower2, nelem(__tolower2)/3, 3);
if(p && c >= p[0] && c <= p[1])
return 1;
p = bsearch(c, __tolower1, nelem(__tolower1)/2, 2);
if(p && c == p[0])
return 1;
return 0;
}
int
isalpharune(Rune c)
{
Rune *p;
if(isupperrune(c) || islowerrune(c))
return 1;
p = bsearch(c, __alpha2, nelem(__alpha2)/2, 2);
if(p && c >= p[0] && c <= p[1])
return 1;
p = bsearch(c, __alpha1, nelem(__alpha1), 1);
if(p && c == p[0])
return 1;
return 0;
}
int
istitlerune(Rune c)
{
return isupperrune(c) && islowerrune(c);
}
int
isspacerune(Rune c)
{
Rune *p;
p = bsearch(c, __space2, nelem(__space2)/2, 2);
if(p && c >= p[0] && c <= p[1])
return 1;
return 0;
}
int
isdigitrune(Rune c)
{
Rune *p;
p = bsearch(c, __digit2, nelem(__digit2)/2, 2);
if(p && c >= p[0] && c <= p[1])
return 1;
return 0;
}
int
digitrunevalue(Rune c){
Rune* p;
p = bsearch(c, __digit2, nelem(__digit2)/2, 2);
if (!p || c < p[0] || c>p[1]){
return -1;
}
return c-p[0];
}
[-- Attachment #3: utf-tables.h --]
[-- Type: text/plain, Size: 51358 bytes --]
static
Rune __space2[] =
{
0x0009, 0x000a, /* tab and newline */
0x0020, 0x0020, /* space */
0x00a0, 0x00a0, /* non-breaking space */
0x1680, 0x1680, /* ogham space mark */
0x180e, 0x180e, /* mongolian vowel separator */
0x2000, 0x200b, /* en quad - zero width space */
0x2028, 0x2029, /* line separator - paragraph separator */
0x202f, 0x202f, /* narrow no-break space */
0x205f, 0x205f, /* medium mathematical space */
0x3000, 0x3000, /* ideographic space */
0xfeff, 0xfeff, /* zero width no-break space */
};
static
Rune __digit2[] =
{
0x0030, 0x0039, /* 0123456789 */
0x0660, 0x0669, /* ٠١٢٣٤٥٦٧٨٩ */
0x06f0, 0x06f9, /* ۰۱۲۳۴۵۶۷۸۹ */
0x0966, 0x096f, /* ०१२३४५६७८९ */
0x09e6, 0x09ef, /* ০১২৩৪৫৬৭৮৯ */
0x0a66, 0x0a6f, /* ੦੧੨੩੪੫੬੭੮੯ */
0x0ae6, 0x0aef, /* ૦૧૨૩૪૫૬૭૮૯ */
0x0b66, 0x0b6f, /* ୦୧୨୩୪୫୬୭୮୯ */
0x0be6, 0x0bef, /* ௦௧௨௩௪௫௬௭௮௯ */
0x0c66, 0x0c6f, /* ౦౧౨౩౪౫౬౭౮౯ */
0x0ce6, 0x0cef, /* ೦೧೨೩೪೫೬೭೮೯ */
0x0d66, 0x0d6f, /* ൦൧൨൩൪൫൬൭൮൯ */
0x0e50, 0x0e59, /* ๐๑๒๓๔๕๖๗๘๙ */
0x0ed0, 0x0ed9, /* ໐໑໒໓໔໕໖໗໘໙ */
0x0f20, 0x0f29, /* ༠༡༢༣༤༥༦༧༨༩ */
0x1040, 0x1049, /* ၀၁၂၃၄၅၆၇၈၉ */
0x17e0, 0x17e9, /* ០១២៣៤៥៦៧៨៩ */
0x1810, 0x1819, /* ᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙ */
0x1946, 0x194f, /* ᥆᥇᥈᥉᥊᥋᥌᥍᥎᥏ */
0x19d0, 0x19d9, /* ᧐᧑᧒᧓᧔᧕᧖᧗᧘᧙ */
0xff10, 0xff19, /* 0123456789 */
};
static
Rune __alpha2[] =
{
0x01c0, 0x01c3, /* ǀ-ǃ */
0x05d0, 0x05ea, /* א-ת */
0x05f0, 0x05f2, /* װ-ײ */
0x0621, 0x063a, /* ء-غ */
0x0641, 0x064a, /* ف-ي */
0x066e, 0x066f, /* ٮ-ٯ */
0x0671, 0x06d3, /* ٱ-ۓ */
0x06ee, 0x06ef, /* ۮ-ۯ */
0x06fa, 0x06fc, /* ۺ-ۼ */
0x0712, 0x072f, /* ܒ-ܯ */
0x074d, 0x076d, /* ݍ-ݭ */
0x0780, 0x07a5, /* ހ-ޥ */
0x0904, 0x0939, /* ऄ-ह */
0x0958, 0x0961, /* क़-ॡ */
0x0985, 0x098c, /* অ-ঌ */
0x098f, 0x0990, /* এ-ঐ */
0x0993, 0x09a8, /* ও-ন */
0x09aa, 0x09b0, /* প-র */
0x09b6, 0x09b9, /* শ-হ */
0x09dc, 0x09dd, /* ড়-ঢ় */
0x09df, 0x09e1, /* য়-ৡ */
0x09f0, 0x09f1, /* ৰ-ৱ */
0x0a05, 0x0a0a, /* ਅ-ਊ */
0x0a0f, 0x0a10, /* ਏ-ਐ */
0x0a13, 0x0a28, /* ਓ-ਨ */
0x0a2a, 0x0a30, /* ਪ-ਰ */
0x0a32, 0x0a33, /* ਲ-ਲ਼ */
0x0a35, 0x0a36, /* ਵ-ਸ਼ */
0x0a38, 0x0a39, /* ਸ-ਹ */
0x0a59, 0x0a5c, /* ਖ਼-ੜ */
0x0a72, 0x0a74, /* ੲ-ੴ */
0x0a85, 0x0a8d, /* અ-ઍ */
0x0a8f, 0x0a91, /* એ-ઑ */
0x0a93, 0x0aa8, /* ઓ-ન */
0x0aaa, 0x0ab0, /* પ-ર */
0x0ab2, 0x0ab3, /* લ-ળ */
0x0ab5, 0x0ab9, /* વ-હ */
0x0ae0, 0x0ae1, /* ૠ-ૡ */
0x0b05, 0x0b0c, /* ଅ-ଌ */
0x0b0f, 0x0b10, /* ଏ-ଐ */
0x0b13, 0x0b28, /* ଓ-ନ */
0x0b2a, 0x0b30, /* ପ-ର */
0x0b32, 0x0b33, /* ଲ-ଳ */
0x0b35, 0x0b39, /* ଵ-ହ */
0x0b5c, 0x0b5d, /* ଡ଼-ଢ଼ */
0x0b5f, 0x0b61, /* ୟ-ୡ */
0x0b85, 0x0b8a, /* அ-ஊ */
0x0b8e, 0x0b90, /* எ-ஐ */
0x0b92, 0x0b95, /* ஒ-க */
0x0b99, 0x0b9a, /* ங-ச */
0x0b9e, 0x0b9f, /* ஞ-ட */
0x0ba3, 0x0ba4, /* ண-த */
0x0ba8, 0x0baa, /* ந-ப */
0x0bae, 0x0bb9, /* ம-ஹ */
0x0c05, 0x0c0c, /* అ-ఌ */
0x0c0e, 0x0c10, /* ఎ-ఐ */
0x0c12, 0x0c28, /* ఒ-న */
0x0c2a, 0x0c33, /* ప-ళ */
0x0c35, 0x0c39, /* వ-హ */
0x0c60, 0x0c61, /* ౠ-ౡ */
0x0c85, 0x0c8c, /* ಅ-ಌ */
0x0c8e, 0x0c90, /* ಎ-ಐ */
0x0c92, 0x0ca8, /* ಒ-ನ */
0x0caa, 0x0cb3, /* ಪ-ಳ */
0x0cb5, 0x0cb9, /* ವ-ಹ */
0x0ce0, 0x0ce1, /* ೠ-ೡ */
0x0d05, 0x0d0c, /* അ-ഌ */
0x0d0e, 0x0d10, /* എ-ഐ */
0x0d12, 0x0d28, /* ഒ-ന */
0x0d2a, 0x0d39, /* പ-ഹ */
0x0d60, 0x0d61, /* ൠ-ൡ */
0x0d85, 0x0d96, /* අ-ඖ */
0x0d9a, 0x0db1, /* ක-න */
0x0db3, 0x0dbb, /* ඳ-ර */
0x0dc0, 0x0dc6, /* ව-ෆ */
0x0e01, 0x0e30, /* ก-ะ */
0x0e32, 0x0e33, /* า-ำ */
0x0e40, 0x0e45, /* เ-ๅ */
0x0e81, 0x0e82, /* ກ-ຂ */
0x0e87, 0x0e88, /* ງ-ຈ */
0x0e94, 0x0e97, /* ດ-ທ */
0x0e99, 0x0e9f, /* ນ-ຟ */
0x0ea1, 0x0ea3, /* ມ-ຣ */
0x0eaa, 0x0eab, /* ສ-ຫ */
0x0ead, 0x0eb0, /* ອ-ະ */
0x0eb2, 0x0eb3, /* າ-ຳ */
0x0ec0, 0x0ec4, /* ເ-ໄ */
0x0edc, 0x0edd, /* ໜ-ໝ */
0x0f40, 0x0f47, /* ཀ-ཇ */
0x0f49, 0x0f6a, /* ཉ-ཪ */
0x0f88, 0x0f8b, /* ྈ-ྋ */
0x1000, 0x1021, /* က-အ */
0x1023, 0x1027, /* ဣ-ဧ */
0x1029, 0x102a, /* ဩ-ဪ */
0x1050, 0x1055, /* ၐ-ၕ */
0x10d0, 0x10fa, /* ა-ჺ */
0x1100, 0x1159, /* ᄀ-ᅙ */
0x115f, 0x11a2, /* ᅟ-ᆢ */
0x11a8, 0x11f9, /* ᆨ-ᇹ */
0x1200, 0x1248, /* ሀ-ቈ */
0x124a, 0x124d, /* ቊ-ቍ */
0x1250, 0x1256, /* ቐ-ቖ */
0x125a, 0x125d, /* ቚ-ቝ */
0x1260, 0x1288, /* በ-ኈ */
0x128a, 0x128d, /* ኊ-ኍ */
0x1290, 0x12b0, /* ነ-ኰ */
0x12b2, 0x12b5, /* ኲ-ኵ */
0x12b8, 0x12be, /* ኸ-ኾ */
0x12c2, 0x12c5, /* ዂ-ዅ */
0x12c8, 0x12d6, /* ወ-ዖ */
0x12d8, 0x1310, /* ዘ-ጐ */
0x1312, 0x1315, /* ጒ-ጕ */
0x1318, 0x135a, /* ጘ-ፚ */
0x1380, 0x138f, /* ᎀ-ᎏ */
0x13a0, 0x13f4, /* Ꭰ-Ᏼ */
0x1401, 0x166c, /* ᐁ-ᙬ */
0x166f, 0x1676, /* ᙯ-ᙶ */
0x1681, 0x169a, /* ᚁ-ᚚ */
0x16a0, 0x16ea, /* ᚠ-ᛪ */
0x1700, 0x170c, /* ᜀ-ᜌ */
0x170e, 0x1711, /* ᜎ-ᜑ */
0x1720, 0x1731, /* ᜠ-ᜱ */
0x1740, 0x1751, /* ᝀ-ᝑ */
0x1760, 0x176c, /* ᝠ-ᝬ */
0x176e, 0x1770, /* ᝮ-ᝰ */
0x1780, 0x17b3, /* ក-ឳ */
0x1820, 0x1842, /* ᠠ-ᡂ */
0x1844, 0x1877, /* ᡄ-ᡷ */
0x1880, 0x18a8, /* ᢀ-ᢨ */
0x1900, 0x191c, /* ᤀ-ᤜ */
0x1950, 0x196d, /* ᥐ-ᥭ */
0x1970, 0x1974, /* ᥰ-ᥴ */
0x1980, 0x19a9, /* ᦀ-ᦩ */
0x19c1, 0x19c7, /* ᧁ-ᧇ */
0x1a00, 0x1a16, /* ᨀ-ᨖ */
0x2135, 0x2138, /* ℵ-ℸ */
0x2d30, 0x2d65, /* ⴰ-ⵥ */
0x2d80, 0x2d96, /* ⶀ-ⶖ */
0x2da0, 0x2da6, /* ⶠ-ⶦ */
0x2da8, 0x2dae, /* ⶨ-ⶮ */
0x2db0, 0x2db6, /* ⶰ-ⶶ */
0x2db8, 0x2dbe, /* ⶸ-ⶾ */
0x2dc0, 0x2dc6, /* ⷀ-ⷆ */
0x2dc8, 0x2dce, /* ⷈ-ⷎ */
0x2dd0, 0x2dd6, /* ⷐ-ⷖ */
0x2dd8, 0x2dde, /* ⷘ-ⷞ */
0x3041, 0x3096, /* ぁ-ゖ */
0x30a1, 0x30fa, /* ァ-ヺ */
0x3105, 0x312c, /* ㄅ-ㄬ */
0x3131, 0x318e, /* ㄱ-ㆎ */
0x31a0, 0x31b7, /* ㆠ-ㆷ */
0x31f0, 0x31ff, /* ㇰ-ㇿ */
0x4e00, 0x9fbb, /* 一-龻 */
0xa000, 0xa014, /* ꀀ-ꀔ */
0xa016, 0xa48c, /* ꀖ-ꒌ */
0xa800, 0xa801, /* ꠀ-ꠁ */
0xa803, 0xa805, /* ꠃ-ꠅ */
0xa807, 0xa80a, /* ꠇ-ꠊ */
0xa80c, 0xa822, /* ꠌ-ꠢ */
0xf900, 0xfa2d, /* 豈-鶴 */
0xfa30, 0xfa6a, /* 侮-頻 */
0xfa70, 0xfad9, /* 並-龎 */
0xfb1f, 0xfb28, /* ײַ-ﬨ */
0xfb2a, 0xfb36, /* שׁ-זּ */
0xfb38, 0xfb3c, /* טּ-לּ */
0xfb40, 0xfb41, /* נּ-סּ */
0xfb43, 0xfb44, /* ףּ-פּ */
0xfb46, 0xfbb1, /* צּ-ﮱ */
0xfbd3, 0xfd3d, /* ﯓ-ﴽ */
0xfd50, 0xfd8f, /* ﵐ-ﶏ */
0xfd92, 0xfdc7, /* ﶒ-ﷇ */
0xfdf0, 0xfdfb, /* ﷰ-ﷻ */
0xfe70, 0xfe74, /* ﹰ-ﹴ */
0xfe76, 0xfefc, /* ﹶ-ﻼ */
0xff66, 0xff6f, /* ヲ-ッ */
0xff71, 0xff9d, /* ア-ン */
0xffa0, 0xffbe, /* ᅠ-ᄒ */
0xffc2, 0xffc7, /* ᅡ-ᅦ */
0xffca, 0xffcf, /* ᅧ-ᅬ */
0xffd2, 0xffd7, /* ᅭ-ᅲ */
0xffda, 0xffdc, /* ᅳ-ᅵ */
};
static
Rune __alpha1[] =
{
0x01bb, /* ƻ */
0x06d5, /* ە */
0x06ff, /* ۿ */
0x0710, /* ܐ */
0x07b1, /* ޱ */
0x093d, /* ऽ */
0x0950, /* ॐ */
0x097d, /* ॽ */
0x09b2, /* ল */
0x09bd, /* ঽ */
0x09ce, /* ৎ */
0x0a5e, /* ਫ਼ */
0x0abd, /* ઽ */
0x0ad0, /* ૐ */
0x0b3d, /* ଽ */
0x0b71, /* ୱ */
0x0b83, /* ஃ */
0x0b9c, /* ஜ */
0x0cbd, /* ಽ */
0x0cde, /* ೞ */
0x0dbd, /* ල */
0x0e84, /* ຄ */
0x0e8a, /* ຊ */
0x0e8d, /* ຍ */
0x0ea5, /* ລ */
0x0ea7, /* ວ */
0x0ebd, /* ຽ */
0x0f00, /* ༀ */
0x1258, /* ቘ */
0x12c0, /* ዀ */
0x17dc, /* ៜ */
0x3006, /* 〆 */
0x303c, /* 〼 */
0x309f, /* ゟ */
0x30ff, /* ヿ */
0x3400, /* 㐀 */
0x4db5, /* 䶵 */
0x4e00, /* 一 */
0x9fbb, /* 龻 */
0xac00, /* 가 */
0xd7a3, /* 힣 */
0xfb1d, /* יִ */
0xfb3e, /* מּ */
};
static
Rune __toupper2[] =
{
0x0061, 0x007a, 0x0041, /* a-z, A-Z */
0x00e0, 0x00f6, 0x00c0, /* à-ö, À-Ö */
0x00f8, 0x00fe, 0x00d8, /* ø-þ, Ø-Þ */
0x0256, 0x0257, 0x0189, /* ɖ-ɗ, Ɖ-Ɗ */
0x028a, 0x028b, 0x01b1, /* ʊ-ʋ, Ʊ-Ʋ */
0x03ad, 0x03af, 0x0388, /* έ-ί, Έ-Ί */
0x03b1, 0x03c1, 0x0391, /* α-ρ, Α-Ρ */
0x03c3, 0x03cb, 0x03a3, /* σ-ϋ, Σ-Ϋ */
0x03cd, 0x03ce, 0x038e, /* ύ-ώ, Ύ-Ώ */
0x0430, 0x044f, 0x0410, /* а-я, А-Я */
0x0450, 0x045f, 0x0400, /* ѐ-џ, Ѐ-Џ */
0x0561, 0x0586, 0x0531, /* ա-ֆ, Ա-Ֆ */
0x1f00, 0x1f07, 0x1f08, /* ἀ-ἇ, Ἀ-Ἇ */
0x1f10, 0x1f15, 0x1f18, /* ἐ-ἕ, Ἐ-Ἕ */
0x1f20, 0x1f27, 0x1f28, /* ἠ-ἧ, Ἠ-Ἧ */
0x1f30, 0x1f37, 0x1f38, /* ἰ-ἷ, Ἰ-Ἷ */
0x1f40, 0x1f45, 0x1f48, /* ὀ-ὅ, Ὀ-Ὅ */
0x1f60, 0x1f67, 0x1f68, /* ὠ-ὧ, Ὠ-Ὧ */
0x1f70, 0x1f71, 0x1fba, /* ὰ-ά, Ὰ-Ά */
0x1f72, 0x1f75, 0x1fc8, /* ὲ-ή, Ὲ-Ή */
0x1f76, 0x1f77, 0x1fda, /* ὶ-ί, Ὶ-Ί */
0x1f78, 0x1f79, 0x1ff8, /* ὸ-ό, Ὸ-Ό */
0x1f7a, 0x1f7b, 0x1fea, /* ὺ-ύ, Ὺ-Ύ */
0x1f7c, 0x1f7d, 0x1ffa, /* ὼ-ώ, Ὼ-Ώ */
0x1f80, 0x1f87, 0x1f88, /* ᾀ-ᾇ, ᾈ-ᾏ */
0x1f90, 0x1f97, 0x1f98, /* ᾐ-ᾗ, ᾘ-ᾟ */
0x1fa0, 0x1fa7, 0x1fa8, /* ᾠ-ᾧ, ᾨ-ᾯ */
0x1fb0, 0x1fb1, 0x1fb8, /* ᾰ-ᾱ, Ᾰ-Ᾱ */
0x1fd0, 0x1fd1, 0x1fd8, /* ῐ-ῑ, Ῐ-Ῑ */
0x1fe0, 0x1fe1, 0x1fe8, /* ῠ-ῡ, Ῠ-Ῡ */
0x2170, 0x217f, 0x2160, /* ⅰ-ⅿ, Ⅰ-Ⅿ */
0x24d0, 0x24e9, 0x24b6, /* ⓐ-ⓩ, Ⓐ-Ⓩ */
0x2c30, 0x2c5e, 0x2c00, /* ⰰ-ⱞ, Ⰰ-Ⱞ */
0x2d00, 0x2d25, 0x10a0, /* ⴀ-ⴥ, Ⴀ-Ⴥ */
0xff41, 0xff5a, 0xff21, /* a-z, A-Z */
};
static
Rune __toupper1[] =
{
0x00aa, 0x0000, /* ª, <nil> */
0x00b5, 0x039c, /* µ, Μ */
0x00ba, 0x0000, /* º, <nil> */
0x00df, 0x0000, /* ß, <nil> */
0x00ff, 0x0178, /* ÿ, Ÿ */
0x0101, 0x0100, /* ā, Ā */
0x0103, 0x0102, /* ă, Ă */
0x0105, 0x0104, /* ą, Ą */
0x0107, 0x0106, /* ć, Ć */
0x0109, 0x0108, /* ĉ, Ĉ */
0x010b, 0x010a, /* ċ, Ċ */
0x010d, 0x010c, /* č, Č */
0x010f, 0x010e, /* ď, Ď */
0x0111, 0x0110, /* đ, Đ */
0x0113, 0x0112, /* ē, Ē */
0x0115, 0x0114, /* ĕ, Ĕ */
0x0117, 0x0116, /* ė, Ė */
0x0119, 0x0118, /* ę, Ę */
0x011b, 0x011a, /* ě, Ě */
0x011d, 0x011c, /* ĝ, Ĝ */
0x011f, 0x011e, /* ğ, Ğ */
0x0121, 0x0120, /* ġ, Ġ */
0x0123, 0x0122, /* ģ, Ģ */
0x0125, 0x0124, /* ĥ, Ĥ */
0x0127, 0x0126, /* ħ, Ħ */
0x0129, 0x0128, /* ĩ, Ĩ */
0x012b, 0x012a, /* ī, Ī */
0x012d, 0x012c, /* ĭ, Ĭ */
0x012f, 0x012e, /* į, Į */
0x0131, 0x0049, /* ı, I */
0x0133, 0x0132, /* ij, IJ */
0x0135, 0x0134, /* ĵ, Ĵ */
0x0137, 0x0136, /* ķ, Ķ */
0x0138, 0x0000, /* ĸ, <nil> */
0x013a, 0x0139, /* ĺ, Ĺ */
0x013c, 0x013b, /* ļ, Ļ */
0x013e, 0x013d, /* ľ, Ľ */
0x0140, 0x013f, /* ŀ, Ŀ */
0x0142, 0x0141, /* ł, Ł */
0x0144, 0x0143, /* ń, Ń */
0x0146, 0x0145, /* ņ, Ņ */
0x0148, 0x0147, /* ň, Ň */
0x0149, 0x0000, /* ʼn, <nil> */
0x014b, 0x014a, /* ŋ, Ŋ */
0x014d, 0x014c, /* ō, Ō */
0x014f, 0x014e, /* ŏ, Ŏ */
0x0151, 0x0150, /* ő, Ő */
0x0153, 0x0152, /* œ, Œ */
0x0155, 0x0154, /* ŕ, Ŕ */
0x0157, 0x0156, /* ŗ, Ŗ */
0x0159, 0x0158, /* ř, Ř */
0x015b, 0x015a, /* ś, Ś */
0x015d, 0x015c, /* ŝ, Ŝ */
0x015f, 0x015e, /* ş, Ş */
0x0161, 0x0160, /* š, Š */
0x0163, 0x0162, /* ţ, Ţ */
0x0165, 0x0164, /* ť, Ť */
0x0167, 0x0166, /* ŧ, Ŧ */
0x0169, 0x0168, /* ũ, Ũ */
0x016b, 0x016a, /* ū, Ū */
0x016d, 0x016c, /* ŭ, Ŭ */
0x016f, 0x016e, /* ů, Ů */
0x0171, 0x0170, /* ű, Ű */
0x0173, 0x0172, /* ų, Ų */
0x0175, 0x0174, /* ŵ, Ŵ */
0x0177, 0x0176, /* ŷ, Ŷ */
0x017a, 0x0179, /* ź, Ź */
0x017c, 0x017b, /* ż, Ż */
0x017e, 0x017d, /* ž, Ž */
0x017f, 0x0053, /* ſ, S */
0x0180, 0x0000, /* ƀ, <nil> */
0x0183, 0x0182, /* ƃ, Ƃ */
0x0185, 0x0184, /* ƅ, Ƅ */
0x0188, 0x0187, /* ƈ, Ƈ */
0x018c, 0x018b, /* ƌ, Ƌ */
0x018d, 0x0000, /* ƍ, <nil> */
0x0192, 0x0191, /* ƒ, Ƒ */
0x0195, 0x01f6, /* ƕ, Ƕ */
0x0199, 0x0198, /* ƙ, Ƙ */
0x019a, 0x023d, /* ƚ, Ƚ */
0x019b, 0x0000, /* ƛ, <nil> */
0x019e, 0x0220, /* ƞ, Ƞ */
0x01a1, 0x01a0, /* ơ, Ơ */
0x01a3, 0x01a2, /* ƣ, Ƣ */
0x01a5, 0x01a4, /* ƥ, Ƥ */
0x01a8, 0x01a7, /* ƨ, Ƨ */
0x01aa, 0x0000, /* ƪ, <nil> */
0x01ab, 0x0000, /* ƫ, <nil> */
0x01ad, 0x01ac, /* ƭ, Ƭ */
0x01b0, 0x01af, /* ư, Ư */
0x01b4, 0x01b3, /* ƴ, Ƴ */
0x01b6, 0x01b5, /* ƶ, Ƶ */
0x01b9, 0x01b8, /* ƹ, Ƹ */
0x01ba, 0x0000, /* ƺ, <nil> */
0x01bd, 0x01bc, /* ƽ, Ƽ */
0x01be, 0x0000, /* ƾ, <nil> */
0x01bf, 0x01f7, /* ƿ, Ƿ */
0x01c5, 0x01c4, /* Dž, DŽ */
0x01c6, 0x01c4, /* dž, DŽ */
0x01c8, 0x01c7, /* Lj, LJ */
0x01c9, 0x01c7, /* lj, LJ */
0x01cb, 0x01ca, /* Nj, NJ */
0x01cc, 0x01ca, /* nj, NJ */
0x01ce, 0x01cd, /* ǎ, Ǎ */
0x01d0, 0x01cf, /* ǐ, Ǐ */
0x01d2, 0x01d1, /* ǒ, Ǒ */
0x01d4, 0x01d3, /* ǔ, Ǔ */
0x01d6, 0x01d5, /* ǖ, Ǖ */
0x01d8, 0x01d7, /* ǘ, Ǘ */
0x01da, 0x01d9, /* ǚ, Ǚ */
0x01dc, 0x01db, /* ǜ, Ǜ */
0x01dd, 0x018e, /* ǝ, Ǝ */
0x01df, 0x01de, /* ǟ, Ǟ */
0x01e1, 0x01e0, /* ǡ, Ǡ */
0x01e3, 0x01e2, /* ǣ, Ǣ */
0x01e5, 0x01e4, /* ǥ, Ǥ */
0x01e7, 0x01e6, /* ǧ, Ǧ */
0x01e9, 0x01e8, /* ǩ, Ǩ */
0x01eb, 0x01ea, /* ǫ, Ǫ */
0x01ed, 0x01ec, /* ǭ, Ǭ */
0x01ef, 0x01ee, /* ǯ, Ǯ */
0x01f0, 0x0000, /* ǰ, <nil> */
0x01f2, 0x01f1, /* Dz, DZ */
0x01f3, 0x01f1, /* dz, DZ */
0x01f5, 0x01f4, /* ǵ, Ǵ */
0x01f9, 0x01f8, /* ǹ, Ǹ */
0x01fb, 0x01fa, /* ǻ, Ǻ */
0x01fd, 0x01fc, /* ǽ, Ǽ */
0x01ff, 0x01fe, /* ǿ, Ǿ */
0x0201, 0x0200, /* ȁ, Ȁ */
0x0203, 0x0202, /* ȃ, Ȃ */
0x0205, 0x0204, /* ȅ, Ȅ */
0x0207, 0x0206, /* ȇ, Ȇ */
0x0209, 0x0208, /* ȉ, Ȉ */
0x020b, 0x020a, /* ȋ, Ȋ */
0x020d, 0x020c, /* ȍ, Ȍ */
0x020f, 0x020e, /* ȏ, Ȏ */
0x0211, 0x0210, /* ȑ, Ȑ */
0x0213, 0x0212, /* ȓ, Ȓ */
0x0215, 0x0214, /* ȕ, Ȕ */
0x0217, 0x0216, /* ȗ, Ȗ */
0x0219, 0x0218, /* ș, Ș */
0x021b, 0x021a, /* ț, Ț */
0x021d, 0x021c, /* ȝ, Ȝ */
0x021f, 0x021e, /* ȟ, Ȟ */
0x0221, 0x0000, /* ȡ, <nil> */
0x0223, 0x0222, /* ȣ, Ȣ */
0x0225, 0x0224, /* ȥ, Ȥ */
0x0227, 0x0226, /* ȧ, Ȧ */
0x0229, 0x0228, /* ȩ, Ȩ */
0x022b, 0x022a, /* ȫ, Ȫ */
0x022d, 0x022c, /* ȭ, Ȭ */
0x022f, 0x022e, /* ȯ, Ȯ */
0x0231, 0x0230, /* ȱ, Ȱ */
0x0233, 0x0232, /* ȳ, Ȳ */
0x0234, 0x0000, /* ȴ, <nil> */
0x0235, 0x0000, /* ȵ, <nil> */
0x0236, 0x0000, /* ȶ, <nil> */
0x0237, 0x0000, /* ȷ, <nil> */
0x0238, 0x0000, /* ȸ, <nil> */
0x0239, 0x0000, /* ȹ, <nil> */
0x023c, 0x023b, /* ȼ, Ȼ */
0x023f, 0x0000, /* ȿ, <nil> */
0x0240, 0x0000, /* ɀ, <nil> */
0x0250, 0x0000, /* ɐ, <nil> */
0x0251, 0x0000, /* ɑ, <nil> */
0x0252, 0x0000, /* ɒ, <nil> */
0x0253, 0x0181, /* ɓ, Ɓ */
0x0254, 0x0186, /* ɔ, Ɔ */
0x0255, 0x0000, /* ɕ, <nil> */
0x0258, 0x0000, /* ɘ, <nil> */
0x0259, 0x018f, /* ə, Ə */
0x025a, 0x0000, /* ɚ, <nil> */
0x025b, 0x0190, /* ɛ, Ɛ */
0x025c, 0x0000, /* ɜ, <nil> */
0x025d, 0x0000, /* ɝ, <nil> */
0x025e, 0x0000, /* ɞ, <nil> */
0x025f, 0x0000, /* ɟ, <nil> */
0x0260, 0x0193, /* ɠ, Ɠ */
0x0261, 0x0000, /* ɡ, <nil> */
0x0262, 0x0000, /* ɢ, <nil> */
0x0263, 0x0194, /* ɣ, Ɣ */
0x0264, 0x0000, /* ɤ, <nil> */
0x0265, 0x0000, /* ɥ, <nil> */
0x0266, 0x0000, /* ɦ, <nil> */
0x0267, 0x0000, /* ɧ, <nil> */
0x0268, 0x0197, /* ɨ, Ɨ */
0x0269, 0x0196, /* ɩ, Ɩ */
0x026a, 0x0000, /* ɪ, <nil> */
0x026b, 0x0000, /* ɫ, <nil> */
0x026c, 0x0000, /* ɬ, <nil> */
0x026d, 0x0000, /* ɭ, <nil> */
0x026e, 0x0000, /* ɮ, <nil> */
0x026f, 0x019c, /* ɯ, Ɯ */
0x0270, 0x0000, /* ɰ, <nil> */
0x0271, 0x0000, /* ɱ, <nil> */
0x0272, 0x019d, /* ɲ, Ɲ */
0x0273, 0x0000, /* ɳ, <nil> */
0x0274, 0x0000, /* ɴ, <nil> */
0x0275, 0x019f, /* ɵ, Ɵ */
0x0276, 0x0000, /* ɶ, <nil> */
0x0277, 0x0000, /* ɷ, <nil> */
0x0278, 0x0000, /* ɸ, <nil> */
0x0279, 0x0000, /* ɹ, <nil> */
0x027a, 0x0000, /* ɺ, <nil> */
0x027b, 0x0000, /* ɻ, <nil> */
0x027c, 0x0000, /* ɼ, <nil> */
0x027d, 0x0000, /* ɽ, <nil> */
0x027e, 0x0000, /* ɾ, <nil> */
0x027f, 0x0000, /* ɿ, <nil> */
0x0280, 0x01a6, /* ʀ, Ʀ */
0x0281, 0x0000, /* ʁ, <nil> */
0x0282, 0x0000, /* ʂ, <nil> */
0x0283, 0x01a9, /* ʃ, Ʃ */
0x0284, 0x0000, /* ʄ, <nil> */
0x0285, 0x0000, /* ʅ, <nil> */
0x0286, 0x0000, /* ʆ, <nil> */
0x0287, 0x0000, /* ʇ, <nil> */
0x0288, 0x01ae, /* ʈ, Ʈ */
0x0289, 0x0000, /* ʉ, <nil> */
0x028c, 0x0000, /* ʌ, <nil> */
0x028d, 0x0000, /* ʍ, <nil> */
0x028e, 0x0000, /* ʎ, <nil> */
0x028f, 0x0000, /* ʏ, <nil> */
0x0290, 0x0000, /* ʐ, <nil> */
0x0291, 0x0000, /* ʑ, <nil> */
0x0292, 0x01b7, /* ʒ, Ʒ */
0x0293, 0x0000, /* ʓ, <nil> */
0x0294, 0x0241, /* ʔ, Ɂ */
0x0295, 0x0000, /* ʕ, <nil> */
0x0296, 0x0000, /* ʖ, <nil> */
0x0297, 0x0000, /* ʗ, <nil> */
0x0298, 0x0000, /* ʘ, <nil> */
0x0299, 0x0000, /* ʙ, <nil> */
0x029a, 0x0000, /* ʚ, <nil> */
0x029b, 0x0000, /* ʛ, <nil> */
0x029c, 0x0000, /* ʜ, <nil> */
0x029d, 0x0000, /* ʝ, <nil> */
0x029e, 0x0000, /* ʞ, <nil> */
0x029f, 0x0000, /* ʟ, <nil> */
0x02a0, 0x0000, /* ʠ, <nil> */
0x02a1, 0x0000, /* ʡ, <nil> */
0x02a2, 0x0000, /* ʢ, <nil> */
0x02a3, 0x0000, /* ʣ, <nil> */
0x02a4, 0x0000, /* ʤ, <nil> */
0x02a5, 0x0000, /* ʥ, <nil> */
0x02a6, 0x0000, /* ʦ, <nil> */
0x02a7, 0x0000, /* ʧ, <nil> */
0x02a8, 0x0000, /* ʨ, <nil> */
0x02a9, 0x0000, /* ʩ, <nil> */
0x02aa, 0x0000, /* ʪ, <nil> */
0x02ab, 0x0000, /* ʫ, <nil> */
0x02ac, 0x0000, /* ʬ, <nil> */
0x02ad, 0x0000, /* ʭ, <nil> */
0x02ae, 0x0000, /* ʮ, <nil> */
0x02af, 0x0000, /* ʯ, <nil> */
0x0345, 0x0399, /* ͅ, Ι */
0x0390, 0x0000, /* ΐ, <nil> */
0x03ac, 0x0386, /* ά, Ά */
0x03b0, 0x0000, /* ΰ, <nil> */
0x03c2, 0x03a3, /* ς, Σ */
0x03cc, 0x038c, /* ό, Ό */
0x03d0, 0x0392, /* ϐ, Β */
0x03d1, 0x0398, /* ϑ, Θ */
0x03d5, 0x03a6, /* ϕ, Φ */
0x03d6, 0x03a0, /* ϖ, Π */
0x03d7, 0x0000, /* ϗ, <nil> */
0x03d9, 0x03d8, /* ϙ, Ϙ */
0x03db, 0x03da, /* ϛ, Ϛ */
0x03dd, 0x03dc, /* ϝ, Ϝ */
0x03df, 0x03de, /* ϟ, Ϟ */
0x03e1, 0x03e0, /* ϡ, Ϡ */
0x03e3, 0x03e2, /* ϣ, Ϣ */
0x03e5, 0x03e4, /* ϥ, Ϥ */
0x03e7, 0x03e6, /* ϧ, Ϧ */
0x03e9, 0x03e8, /* ϩ, Ϩ */
0x03eb, 0x03ea, /* ϫ, Ϫ */
0x03ed, 0x03ec, /* ϭ, Ϭ */
0x03ef, 0x03ee, /* ϯ, Ϯ */
0x03f0, 0x039a, /* ϰ, Κ */
0x03f1, 0x03a1, /* ϱ, Ρ */
0x03f2, 0x03f9, /* ϲ, Ϲ */
0x03f3, 0x0000, /* ϳ, <nil> */
0x03f5, 0x0395, /* ϵ, Ε */
0x03f8, 0x03f7, /* ϸ, Ϸ */
0x03fb, 0x03fa, /* ϻ, Ϻ */
0x03fc, 0x0000, /* ϼ, <nil> */
0x0461, 0x0460, /* ѡ, Ѡ */
0x0463, 0x0462, /* ѣ, Ѣ */
0x0465, 0x0464, /* ѥ, Ѥ */
0x0467, 0x0466, /* ѧ, Ѧ */
0x0469, 0x0468, /* ѩ, Ѩ */
0x046b, 0x046a, /* ѫ, Ѫ */
0x046d, 0x046c, /* ѭ, Ѭ */
0x046f, 0x046e, /* ѯ, Ѯ */
0x0471, 0x0470, /* ѱ, Ѱ */
0x0473, 0x0472, /* ѳ, Ѳ */
0x0475, 0x0474, /* ѵ, Ѵ */
0x0477, 0x0476, /* ѷ, Ѷ */
0x0479, 0x0478, /* ѹ, Ѹ */
0x047b, 0x047a, /* ѻ, Ѻ */
0x047d, 0x047c, /* ѽ, Ѽ */
0x047f, 0x047e, /* ѿ, Ѿ */
0x0481, 0x0480, /* ҁ, Ҁ */
0x048b, 0x048a, /* ҋ, Ҋ */
0x048d, 0x048c, /* ҍ, Ҍ */
0x048f, 0x048e, /* ҏ, Ҏ */
0x0491, 0x0490, /* ґ, Ґ */
0x0493, 0x0492, /* ғ, Ғ */
0x0495, 0x0494, /* ҕ, Ҕ */
0x0497, 0x0496, /* җ, Җ */
0x0499, 0x0498, /* ҙ, Ҙ */
0x049b, 0x049a, /* қ, Қ */
0x049d, 0x049c, /* ҝ, Ҝ */
0x049f, 0x049e, /* ҟ, Ҟ */
0x04a1, 0x04a0, /* ҡ, Ҡ */
0x04a3, 0x04a2, /* ң, Ң */
0x04a5, 0x04a4, /* ҥ, Ҥ */
0x04a7, 0x04a6, /* ҧ, Ҧ */
0x04a9, 0x04a8, /* ҩ, Ҩ */
0x04ab, 0x04aa, /* ҫ, Ҫ */
0x04ad, 0x04ac, /* ҭ, Ҭ */
0x04af, 0x04ae, /* ү, Ү */
0x04b1, 0x04b0, /* ұ, Ұ */
0x04b3, 0x04b2, /* ҳ, Ҳ */
0x04b5, 0x04b4, /* ҵ, Ҵ */
0x04b7, 0x04b6, /* ҷ, Ҷ */
0x04b9, 0x04b8, /* ҹ, Ҹ */
0x04bb, 0x04ba, /* һ, Һ */
0x04bd, 0x04bc, /* ҽ, Ҽ */
0x04bf, 0x04be, /* ҿ, Ҿ */
0x04c2, 0x04c1, /* ӂ, Ӂ */
0x04c4, 0x04c3, /* ӄ, Ӄ */
0x04c6, 0x04c5, /* ӆ, Ӆ */
0x04c8, 0x04c7, /* ӈ, Ӈ */
0x04ca, 0x04c9, /* ӊ, Ӊ */
0x04cc, 0x04cb, /* ӌ, Ӌ */
0x04ce, 0x04cd, /* ӎ, Ӎ */
0x04d1, 0x04d0, /* ӑ, Ӑ */
0x04d3, 0x04d2, /* ӓ, Ӓ */
0x04d5, 0x04d4, /* ӕ, Ӕ */
0x04d7, 0x04d6, /* ӗ, Ӗ */
0x04d9, 0x04d8, /* ә, Ә */
0x04db, 0x04da, /* ӛ, Ӛ */
0x04dd, 0x04dc, /* ӝ, Ӝ */
0x04df, 0x04de, /* ӟ, Ӟ */
0x04e1, 0x04e0, /* ӡ, Ӡ */
0x04e3, 0x04e2, /* ӣ, Ӣ */
0x04e5, 0x04e4, /* ӥ, Ӥ */
0x04e7, 0x04e6, /* ӧ, Ӧ */
0x04e9, 0x04e8, /* ө, Ө */
0x04eb, 0x04ea, /* ӫ, Ӫ */
0x04ed, 0x04ec, /* ӭ, Ӭ */
0x04ef, 0x04ee, /* ӯ, Ӯ */
0x04f1, 0x04f0, /* ӱ, Ӱ */
0x04f3, 0x04f2, /* ӳ, Ӳ */
0x04f5, 0x04f4, /* ӵ, Ӵ */
0x04f7, 0x04f6, /* ӷ, Ӷ */
0x04f9, 0x04f8, /* ӹ, Ӹ */
0x0501, 0x0500, /* ԁ, Ԁ */
0x0503, 0x0502, /* ԃ, Ԃ */
0x0505, 0x0504, /* ԅ, Ԅ */
0x0507, 0x0506, /* ԇ, Ԇ */
0x0509, 0x0508, /* ԉ, Ԉ */
0x050b, 0x050a, /* ԋ, Ԋ */
0x050d, 0x050c, /* ԍ, Ԍ */
0x050f, 0x050e, /* ԏ, Ԏ */
0x0587, 0x0000, /* և, <nil> */
0x1d00, 0x0000, /* ᴀ, <nil> */
0x1d01, 0x0000, /* ᴁ, <nil> */
0x1d02, 0x0000, /* ᴂ, <nil> */
0x1d03, 0x0000, /* ᴃ, <nil> */
0x1d04, 0x0000, /* ᴄ, <nil> */
0x1d05, 0x0000, /* ᴅ, <nil> */
0x1d06, 0x0000, /* ᴆ, <nil> */
0x1d07, 0x0000, /* ᴇ, <nil> */
0x1d08, 0x0000, /* ᴈ, <nil> */
0x1d09, 0x0000, /* ᴉ, <nil> */
0x1d0a, 0x0000, /* ᴊ, <nil> */
0x1d0b, 0x0000, /* ᴋ, <nil> */
0x1d0c, 0x0000, /* ᴌ, <nil> */
0x1d0d, 0x0000, /* ᴍ, <nil> */
0x1d0e, 0x0000, /* ᴎ, <nil> */
0x1d0f, 0x0000, /* ᴏ, <nil> */
0x1d10, 0x0000, /* ᴐ, <nil> */
0x1d11, 0x0000, /* ᴑ, <nil> */
0x1d12, 0x0000, /* ᴒ, <nil> */
0x1d13, 0x0000, /* ᴓ, <nil> */
0x1d14, 0x0000, /* ᴔ, <nil> */
0x1d15, 0x0000, /* ᴕ, <nil> */
0x1d16, 0x0000, /* ᴖ, <nil> */
0x1d17, 0x0000, /* ᴗ, <nil> */
0x1d18, 0x0000, /* ᴘ, <nil> */
0x1d19, 0x0000, /* ᴙ, <nil> */
0x1d1a, 0x0000, /* ᴚ, <nil> */
0x1d1b, 0x0000, /* ᴛ, <nil> */
0x1d1c, 0x0000, /* ᴜ, <nil> */
0x1d1d, 0x0000, /* ᴝ, <nil> */
0x1d1e, 0x0000, /* ᴞ, <nil> */
0x1d1f, 0x0000, /* ᴟ, <nil> */
0x1d20, 0x0000, /* ᴠ, <nil> */
0x1d21, 0x0000, /* ᴡ, <nil> */
0x1d22, 0x0000, /* ᴢ, <nil> */
0x1d23, 0x0000, /* ᴣ, <nil> */
0x1d24, 0x0000, /* ᴤ, <nil> */
0x1d25, 0x0000, /* ᴥ, <nil> */
0x1d26, 0x0000, /* ᴦ, <nil> */
0x1d27, 0x0000, /* ᴧ, <nil> */
0x1d28, 0x0000, /* ᴨ, <nil> */
0x1d29, 0x0000, /* ᴩ, <nil> */
0x1d2a, 0x0000, /* ᴪ, <nil> */
0x1d2b, 0x0000, /* ᴫ, <nil> */
0x1d62, 0x0000, /* ᵢ, <nil> */
0x1d63, 0x0000, /* ᵣ, <nil> */
0x1d64, 0x0000, /* ᵤ, <nil> */
0x1d65, 0x0000, /* ᵥ, <nil> */
0x1d66, 0x0000, /* ᵦ, <nil> */
0x1d67, 0x0000, /* ᵧ, <nil> */
0x1d68, 0x0000, /* ᵨ, <nil> */
0x1d69, 0x0000, /* ᵩ, <nil> */
0x1d6a, 0x0000, /* ᵪ, <nil> */
0x1d6b, 0x0000, /* ᵫ, <nil> */
0x1d6c, 0x0000, /* ᵬ, <nil> */
0x1d6d, 0x0000, /* ᵭ, <nil> */
0x1d6e, 0x0000, /* ᵮ, <nil> */
0x1d6f, 0x0000, /* ᵯ, <nil> */
0x1d70, 0x0000, /* ᵰ, <nil> */
0x1d71, 0x0000, /* ᵱ, <nil> */
0x1d72, 0x0000, /* ᵲ, <nil> */
0x1d73, 0x0000, /* ᵳ, <nil> */
0x1d74, 0x0000, /* ᵴ, <nil> */
0x1d75, 0x0000, /* ᵵ, <nil> */
0x1d76, 0x0000, /* ᵶ, <nil> */
0x1d77, 0x0000, /* ᵷ, <nil> */
0x1d79, 0x0000, /* ᵹ, <nil> */
0x1d7a, 0x0000, /* ᵺ, <nil> */
0x1d7b, 0x0000, /* ᵻ, <nil> */
0x1d7c, 0x0000, /* ᵼ, <nil> */
0x1d7d, 0x0000, /* ᵽ, <nil> */
0x1d7e, 0x0000, /* ᵾ, <nil> */
0x1d7f, 0x0000, /* ᵿ, <nil> */
0x1d80, 0x0000, /* ᶀ, <nil> */
0x1d81, 0x0000, /* ᶁ, <nil> */
0x1d82, 0x0000, /* ᶂ, <nil> */
0x1d83, 0x0000, /* ᶃ, <nil> */
0x1d84, 0x0000, /* ᶄ, <nil> */
0x1d85, 0x0000, /* ᶅ, <nil> */
0x1d86, 0x0000, /* ᶆ, <nil> */
0x1d87, 0x0000, /* ᶇ, <nil> */
0x1d88, 0x0000, /* ᶈ, <nil> */
0x1d89, 0x0000, /* ᶉ, <nil> */
0x1d8a, 0x0000, /* ᶊ, <nil> */
0x1d8b, 0x0000, /* ᶋ, <nil> */
0x1d8c, 0x0000, /* ᶌ, <nil> */
0x1d8d, 0x0000, /* ᶍ, <nil> */
0x1d8e, 0x0000, /* ᶎ, <nil> */
0x1d8f, 0x0000, /* ᶏ, <nil> */
0x1d90, 0x0000, /* ᶐ, <nil> */
0x1d91, 0x0000, /* ᶑ, <nil> */
0x1d92, 0x0000, /* ᶒ, <nil> */
0x1d93, 0x0000, /* ᶓ, <nil> */
0x1d94, 0x0000, /* ᶔ, <nil> */
0x1d95, 0x0000, /* ᶕ, <nil> */
0x1d96, 0x0000, /* ᶖ, <nil> */
0x1d97, 0x0000, /* ᶗ, <nil> */
0x1d98, 0x0000, /* ᶘ, <nil> */
0x1d99, 0x0000, /* ᶙ, <nil> */
0x1d9a, 0x0000, /* ᶚ, <nil> */
0x1e01, 0x1e00, /* ḁ, Ḁ */
0x1e03, 0x1e02, /* ḃ, Ḃ */
0x1e05, 0x1e04, /* ḅ, Ḅ */
0x1e07, 0x1e06, /* ḇ, Ḇ */
0x1e09, 0x1e08, /* ḉ, Ḉ */
0x1e0b, 0x1e0a, /* ḋ, Ḋ */
0x1e0d, 0x1e0c, /* ḍ, Ḍ */
0x1e0f, 0x1e0e, /* ḏ, Ḏ */
0x1e11, 0x1e10, /* ḑ, Ḑ */
0x1e13, 0x1e12, /* ḓ, Ḓ */
0x1e15, 0x1e14, /* ḕ, Ḕ */
0x1e17, 0x1e16, /* ḗ, Ḗ */
0x1e19, 0x1e18, /* ḙ, Ḙ */
0x1e1b, 0x1e1a, /* ḛ, Ḛ */
0x1e1d, 0x1e1c, /* ḝ, Ḝ */
0x1e1f, 0x1e1e, /* ḟ, Ḟ */
0x1e21, 0x1e20, /* ḡ, Ḡ */
0x1e23, 0x1e22, /* ḣ, Ḣ */
0x1e25, 0x1e24, /* ḥ, Ḥ */
0x1e27, 0x1e26, /* ḧ, Ḧ */
0x1e29, 0x1e28, /* ḩ, Ḩ */
0x1e2b, 0x1e2a, /* ḫ, Ḫ */
0x1e2d, 0x1e2c, /* ḭ, Ḭ */
0x1e2f, 0x1e2e, /* ḯ, Ḯ */
0x1e31, 0x1e30, /* ḱ, Ḱ */
0x1e33, 0x1e32, /* ḳ, Ḳ */
0x1e35, 0x1e34, /* ḵ, Ḵ */
0x1e37, 0x1e36, /* ḷ, Ḷ */
0x1e39, 0x1e38, /* ḹ, Ḹ */
0x1e3b, 0x1e3a, /* ḻ, Ḻ */
0x1e3d, 0x1e3c, /* ḽ, Ḽ */
0x1e3f, 0x1e3e, /* ḿ, Ḿ */
0x1e41, 0x1e40, /* ṁ, Ṁ */
0x1e43, 0x1e42, /* ṃ, Ṃ */
0x1e45, 0x1e44, /* ṅ, Ṅ */
0x1e47, 0x1e46, /* ṇ, Ṇ */
0x1e49, 0x1e48, /* ṉ, Ṉ */
0x1e4b, 0x1e4a, /* ṋ, Ṋ */
0x1e4d, 0x1e4c, /* ṍ, Ṍ */
0x1e4f, 0x1e4e, /* ṏ, Ṏ */
0x1e51, 0x1e50, /* ṑ, Ṑ */
0x1e53, 0x1e52, /* ṓ, Ṓ */
0x1e55, 0x1e54, /* ṕ, Ṕ */
0x1e57, 0x1e56, /* ṗ, Ṗ */
0x1e59, 0x1e58, /* ṙ, Ṙ */
0x1e5b, 0x1e5a, /* ṛ, Ṛ */
0x1e5d, 0x1e5c, /* ṝ, Ṝ */
0x1e5f, 0x1e5e, /* ṟ, Ṟ */
0x1e61, 0x1e60, /* ṡ, Ṡ */
0x1e63, 0x1e62, /* ṣ, Ṣ */
0x1e65, 0x1e64, /* ṥ, Ṥ */
0x1e67, 0x1e66, /* ṧ, Ṧ */
0x1e69, 0x1e68, /* ṩ, Ṩ */
0x1e6b, 0x1e6a, /* ṫ, Ṫ */
0x1e6d, 0x1e6c, /* ṭ, Ṭ */
0x1e6f, 0x1e6e, /* ṯ, Ṯ */
0x1e71, 0x1e70, /* ṱ, Ṱ */
0x1e73, 0x1e72, /* ṳ, Ṳ */
0x1e75, 0x1e74, /* ṵ, Ṵ */
0x1e77, 0x1e76, /* ṷ, Ṷ */
0x1e79, 0x1e78, /* ṹ, Ṹ */
0x1e7b, 0x1e7a, /* ṻ, Ṻ */
0x1e7d, 0x1e7c, /* ṽ, Ṽ */
0x1e7f, 0x1e7e, /* ṿ, Ṿ */
0x1e81, 0x1e80, /* ẁ, Ẁ */
0x1e83, 0x1e82, /* ẃ, Ẃ */
0x1e85, 0x1e84, /* ẅ, Ẅ */
0x1e87, 0x1e86, /* ẇ, Ẇ */
0x1e89, 0x1e88, /* ẉ, Ẉ */
0x1e8b, 0x1e8a, /* ẋ, Ẋ */
0x1e8d, 0x1e8c, /* ẍ, Ẍ */
0x1e8f, 0x1e8e, /* ẏ, Ẏ */
0x1e91, 0x1e90, /* ẑ, Ẑ */
0x1e93, 0x1e92, /* ẓ, Ẓ */
0x1e95, 0x1e94, /* ẕ, Ẕ */
0x1e96, 0x0000, /* ẖ, <nil> */
0x1e97, 0x0000, /* ẗ, <nil> */
0x1e98, 0x0000, /* ẘ, <nil> */
0x1e99, 0x0000, /* ẙ, <nil> */
0x1e9a, 0x0000, /* ẚ, <nil> */
0x1e9b, 0x1e60, /* ẛ, Ṡ */
0x1ea1, 0x1ea0, /* ạ, Ạ */
0x1ea3, 0x1ea2, /* ả, Ả */
0x1ea5, 0x1ea4, /* ấ, Ấ */
0x1ea7, 0x1ea6, /* ầ, Ầ */
0x1ea9, 0x1ea8, /* ẩ, Ẩ */
0x1eab, 0x1eaa, /* ẫ, Ẫ */
0x1ead, 0x1eac, /* ậ, Ậ */
0x1eaf, 0x1eae, /* ắ, Ắ */
0x1eb1, 0x1eb0, /* ằ, Ằ */
0x1eb3, 0x1eb2, /* ẳ, Ẳ */
0x1eb5, 0x1eb4, /* ẵ, Ẵ */
0x1eb7, 0x1eb6, /* ặ, Ặ */
0x1eb9, 0x1eb8, /* ẹ, Ẹ */
0x1ebb, 0x1eba, /* ẻ, Ẻ */
0x1ebd, 0x1ebc, /* ẽ, Ẽ */
0x1ebf, 0x1ebe, /* ế, Ế */
0x1ec1, 0x1ec0, /* ề, Ề */
0x1ec3, 0x1ec2, /* ể, Ể */
0x1ec5, 0x1ec4, /* ễ, Ễ */
0x1ec7, 0x1ec6, /* ệ, Ệ */
0x1ec9, 0x1ec8, /* ỉ, Ỉ */
0x1ecb, 0x1eca, /* ị, Ị */
0x1ecd, 0x1ecc, /* ọ, Ọ */
0x1ecf, 0x1ece, /* ỏ, Ỏ */
0x1ed1, 0x1ed0, /* ố, Ố */
0x1ed3, 0x1ed2, /* ồ, Ồ */
0x1ed5, 0x1ed4, /* ổ, Ổ */
0x1ed7, 0x1ed6, /* ỗ, Ỗ */
0x1ed9, 0x1ed8, /* ộ, Ộ */
0x1edb, 0x1eda, /* ớ, Ớ */
0x1edd, 0x1edc, /* ờ, Ờ */
0x1edf, 0x1ede, /* ở, Ở */
0x1ee1, 0x1ee0, /* ỡ, Ỡ */
0x1ee3, 0x1ee2, /* ợ, Ợ */
0x1ee5, 0x1ee4, /* ụ, Ụ */
0x1ee7, 0x1ee6, /* ủ, Ủ */
0x1ee9, 0x1ee8, /* ứ, Ứ */
0x1eeb, 0x1eea, /* ừ, Ừ */
0x1eed, 0x1eec, /* ử, Ử */
0x1eef, 0x1eee, /* ữ, Ữ */
0x1ef1, 0x1ef0, /* ự, Ự */
0x1ef3, 0x1ef2, /* ỳ, Ỳ */
0x1ef5, 0x1ef4, /* ỵ, Ỵ */
0x1ef7, 0x1ef6, /* ỷ, Ỷ */
0x1ef9, 0x1ef8, /* ỹ, Ỹ */
0x1f50, 0x0000, /* ὐ, <nil> */
0x1f51, 0x1f59, /* ὑ, Ὑ */
0x1f52, 0x0000, /* ὒ, <nil> */
0x1f53, 0x1f5b, /* ὓ, Ὓ */
0x1f54, 0x0000, /* ὔ, <nil> */
0x1f55, 0x1f5d, /* ὕ, Ὕ */
0x1f56, 0x0000, /* ὖ, <nil> */
0x1f57, 0x1f5f, /* ὗ, Ὗ */
0x1fb2, 0x0000, /* ᾲ, <nil> */
0x1fb3, 0x1fbc, /* ᾳ, ᾼ */
0x1fb4, 0x0000, /* ᾴ, <nil> */
0x1fb6, 0x0000, /* ᾶ, <nil> */
0x1fb7, 0x0000, /* ᾷ, <nil> */
0x1fbe, 0x0399, /* ι, Ι */
0x1fc2, 0x0000, /* ῂ, <nil> */
0x1fc3, 0x1fcc, /* ῃ, ῌ */
0x1fc4, 0x0000, /* ῄ, <nil> */
0x1fc6, 0x0000, /* ῆ, <nil> */
0x1fc7, 0x0000, /* ῇ, <nil> */
0x1fd2, 0x0000, /* ῒ, <nil> */
0x1fd3, 0x0000, /* ΐ, <nil> */
0x1fd6, 0x0000, /* ῖ, <nil> */
0x1fd7, 0x0000, /* ῗ, <nil> */
0x1fe2, 0x0000, /* ῢ, <nil> */
0x1fe3, 0x0000, /* ΰ, <nil> */
0x1fe4, 0x0000, /* ῤ, <nil> */
0x1fe5, 0x1fec, /* ῥ, Ῥ */
0x1fe6, 0x0000, /* ῦ, <nil> */
0x1fe7, 0x0000, /* ῧ, <nil> */
0x1ff2, 0x0000, /* ῲ, <nil> */
0x1ff3, 0x1ffc, /* ῳ, ῼ */
0x1ff4, 0x0000, /* ῴ, <nil> */
0x1ff6, 0x0000, /* ῶ, <nil> */
0x1ff7, 0x0000, /* ῷ, <nil> */
0x2071, 0x0000, /* ⁱ, <nil> */
0x207f, 0x0000, /* ⁿ, <nil> */
0x210a, 0x0000, /* ℊ, <nil> */
0x210e, 0x0000, /* ℎ, <nil> */
0x210f, 0x0000, /* ℏ, <nil> */
0x2113, 0x0000, /* ℓ, <nil> */
0x212f, 0x0000, /* ℯ, <nil> */
0x2134, 0x0000, /* ℴ, <nil> */
0x2139, 0x0000, /* ℹ, <nil> */
0x213c, 0x0000, /* ℼ, <nil> */
0x213d, 0x0000, /* ℽ, <nil> */
0x2146, 0x0000, /* ⅆ, <nil> */
0x2147, 0x0000, /* ⅇ, <nil> */
0x2148, 0x0000, /* ⅈ, <nil> */
0x2149, 0x0000, /* ⅉ, <nil> */
0x2c81, 0x2c80, /* ⲁ, Ⲁ */
0x2c83, 0x2c82, /* ⲃ, Ⲃ */
0x2c85, 0x2c84, /* ⲅ, Ⲅ */
0x2c87, 0x2c86, /* ⲇ, Ⲇ */
0x2c89, 0x2c88, /* ⲉ, Ⲉ */
0x2c8b, 0x2c8a, /* ⲋ, Ⲋ */
0x2c8d, 0x2c8c, /* ⲍ, Ⲍ */
0x2c8f, 0x2c8e, /* ⲏ, Ⲏ */
0x2c91, 0x2c90, /* ⲑ, Ⲑ */
0x2c93, 0x2c92, /* ⲓ, Ⲓ */
0x2c95, 0x2c94, /* ⲕ, Ⲕ */
0x2c97, 0x2c96, /* ⲗ, Ⲗ */
0x2c99, 0x2c98, /* ⲙ, Ⲙ */
0x2c9b, 0x2c9a, /* ⲛ, Ⲛ */
0x2c9d, 0x2c9c, /* ⲝ, Ⲝ */
0x2c9f, 0x2c9e, /* ⲟ, Ⲟ */
0x2ca1, 0x2ca0, /* ⲡ, Ⲡ */
0x2ca3, 0x2ca2, /* ⲣ, Ⲣ */
0x2ca5, 0x2ca4, /* ⲥ, Ⲥ */
0x2ca7, 0x2ca6, /* ⲧ, Ⲧ */
0x2ca9, 0x2ca8, /* ⲩ, Ⲩ */
0x2cab, 0x2caa, /* ⲫ, Ⲫ */
0x2cad, 0x2cac, /* ⲭ, Ⲭ */
0x2caf, 0x2cae, /* ⲯ, Ⲯ */
0x2cb1, 0x2cb0, /* ⲱ, Ⲱ */
0x2cb3, 0x2cb2, /* ⲳ, Ⲳ */
0x2cb5, 0x2cb4, /* ⲵ, Ⲵ */
0x2cb7, 0x2cb6, /* ⲷ, Ⲷ */
0x2cb9, 0x2cb8, /* ⲹ, Ⲹ */
0x2cbb, 0x2cba, /* ⲻ, Ⲻ */
0x2cbd, 0x2cbc, /* ⲽ, Ⲽ */
0x2cbf, 0x2cbe, /* ⲿ, Ⲿ */
0x2cc1, 0x2cc0, /* ⳁ, Ⳁ */
0x2cc3, 0x2cc2, /* ⳃ, Ⳃ */
0x2cc5, 0x2cc4, /* ⳅ, Ⳅ */
0x2cc7, 0x2cc6, /* ⳇ, Ⳇ */
0x2cc9, 0x2cc8, /* ⳉ, Ⳉ */
0x2ccb, 0x2cca, /* ⳋ, Ⳋ */
0x2ccd, 0x2ccc, /* ⳍ, Ⳍ */
0x2ccf, 0x2cce, /* ⳏ, Ⳏ */
0x2cd1, 0x2cd0, /* ⳑ, Ⳑ */
0x2cd3, 0x2cd2, /* ⳓ, Ⳓ */
0x2cd5, 0x2cd4, /* ⳕ, Ⳕ */
0x2cd7, 0x2cd6, /* ⳗ, Ⳗ */
0x2cd9, 0x2cd8, /* ⳙ, Ⳙ */
0x2cdb, 0x2cda, /* ⳛ, Ⳛ */
0x2cdd, 0x2cdc, /* ⳝ, Ⳝ */
0x2cdf, 0x2cde, /* ⳟ, Ⳟ */
0x2ce1, 0x2ce0, /* ⳡ, Ⳡ */
0x2ce3, 0x2ce2, /* ⳣ, Ⳣ */
0x2ce4, 0x0000, /* ⳤ, <nil> */
0xfb00, 0x0000, /* ff, <nil> */
0xfb01, 0x0000, /* fi, <nil> */
0xfb02, 0x0000, /* fl, <nil> */
0xfb03, 0x0000, /* ffi, <nil> */
0xfb04, 0x0000, /* ffl, <nil> */
0xfb05, 0x0000, /* ſt, <nil> */
0xfb06, 0x0000, /* st, <nil> */
0xfb13, 0x0000, /* ﬓ, <nil> */
0xfb14, 0x0000, /* ﬔ, <nil> */
0xfb15, 0x0000, /* ﬕ, <nil> */
0xfb16, 0x0000, /* ﬖ, <nil> */
0xfb17, 0x0000, /* ﬗ, <nil> */
};
static
Rune __tolower2[] =
{
0x0041, 0x005a, 0x0061, /* A-Z, a-z */
0x00c0, 0x00d6, 0x00e0, /* À-Ö, à-ö */
0x00d8, 0x00de, 0x00f8, /* Ø-Þ, ø-þ */
0x0189, 0x018a, 0x0256, /* Ɖ-Ɗ, ɖ-ɗ */
0x01b1, 0x01b2, 0x028a, /* Ʊ-Ʋ, ʊ-ʋ */
0x0388, 0x038a, 0x03ad, /* Έ-Ί, έ-ί */
0x038e, 0x038f, 0x03cd, /* Ύ-Ώ, ύ-ώ */
0x0391, 0x03a1, 0x03b1, /* Α-Ρ, α-ρ */
0x03a3, 0x03ab, 0x03c3, /* Σ-Ϋ, σ-ϋ */
0x0400, 0x040f, 0x0450, /* Ѐ-Џ, ѐ-џ */
0x0410, 0x042f, 0x0430, /* А-Я, а-я */
0x0531, 0x0556, 0x0561, /* Ա-Ֆ, ա-ֆ */
0x10a0, 0x10c5, 0x2d00, /* Ⴀ-Ⴥ, ⴀ-ⴥ */
0x1f08, 0x1f0f, 0x1f00, /* Ἀ-Ἇ, ἀ-ἇ */
0x1f18, 0x1f1d, 0x1f10, /* Ἐ-Ἕ, ἐ-ἕ */
0x1f28, 0x1f2f, 0x1f20, /* Ἠ-Ἧ, ἠ-ἧ */
0x1f38, 0x1f3f, 0x1f30, /* Ἰ-Ἷ, ἰ-ἷ */
0x1f48, 0x1f4d, 0x1f40, /* Ὀ-Ὅ, ὀ-ὅ */
0x1f68, 0x1f6f, 0x1f60, /* Ὠ-Ὧ, ὠ-ὧ */
0x1f88, 0x1f8f, 0x1f80, /* ᾈ-ᾏ, ᾀ-ᾇ */
0x1f98, 0x1f9f, 0x1f90, /* ᾘ-ᾟ, ᾐ-ᾗ */
0x1fa8, 0x1faf, 0x1fa0, /* ᾨ-ᾯ, ᾠ-ᾧ */
0x1fb8, 0x1fb9, 0x1fb0, /* Ᾰ-Ᾱ, ᾰ-ᾱ */
0x1fba, 0x1fbb, 0x1f70, /* Ὰ-Ά, ὰ-ά */
0x1fc8, 0x1fcb, 0x1f72, /* Ὲ-Ή, ὲ-ή */
0x1fd8, 0x1fd9, 0x1fd0, /* Ῐ-Ῑ, ῐ-ῑ */
0x1fda, 0x1fdb, 0x1f76, /* Ὶ-Ί, ὶ-ί */
0x1fe8, 0x1fe9, 0x1fe0, /* Ῠ-Ῡ, ῠ-ῡ */
0x1fea, 0x1feb, 0x1f7a, /* Ὺ-Ύ, ὺ-ύ */
0x1ff8, 0x1ff9, 0x1f78, /* Ὸ-Ό, ὸ-ό */
0x1ffa, 0x1ffb, 0x1f7c, /* Ὼ-Ώ, ὼ-ώ */
0x2160, 0x216f, 0x2170, /* Ⅰ-Ⅿ, ⅰ-ⅿ */
0x24b6, 0x24cf, 0x24d0, /* Ⓐ-Ⓩ, ⓐ-ⓩ */
0x2c00, 0x2c2e, 0x2c30, /* Ⰰ-Ⱞ, ⰰ-ⱞ */
0xff21, 0xff3a, 0xff41, /* A-Z, a-z */
};
/*
* We allow the target character to be nil so isupperrune() works,
* even for bogus unicode that doesn't have a tolower().
*/
static
Rune __tolower1[] =
{
0x0100, 0x0101, /* Ā, ā */
0x0102, 0x0103, /* Ă, ă */
0x0104, 0x0105, /* Ą, ą */
0x0106, 0x0107, /* Ć, ć */
0x0108, 0x0109, /* Ĉ, ĉ */
0x010a, 0x010b, /* Ċ, ċ */
0x010c, 0x010d, /* Č, č */
0x010e, 0x010f, /* Ď, ď */
0x0110, 0x0111, /* Đ, đ */
0x0112, 0x0113, /* Ē, ē */
0x0114, 0x0115, /* Ĕ, ĕ */
0x0116, 0x0117, /* Ė, ė */
0x0118, 0x0119, /* Ę, ę */
0x011a, 0x011b, /* Ě, ě */
0x011c, 0x011d, /* Ĝ, ĝ */
0x011e, 0x011f, /* Ğ, ğ */
0x0120, 0x0121, /* Ġ, ġ */
0x0122, 0x0123, /* Ģ, ģ */
0x0124, 0x0125, /* Ĥ, ĥ */
0x0126, 0x0127, /* Ħ, ħ */
0x0128, 0x0129, /* Ĩ, ĩ */
0x012a, 0x012b, /* Ī, ī */
0x012c, 0x012d, /* Ĭ, ĭ */
0x012e, 0x012f, /* Į, į */
0x0130, 0x0069, /* İ, i */
0x0132, 0x0133, /* IJ, ij */
0x0134, 0x0135, /* Ĵ, ĵ */
0x0136, 0x0137, /* Ķ, ķ */
0x0139, 0x013a, /* Ĺ, ĺ */
0x013b, 0x013c, /* Ļ, ļ */
0x013d, 0x013e, /* Ľ, ľ */
0x013f, 0x0140, /* Ŀ, ŀ */
0x0141, 0x0142, /* Ł, ł */
0x0143, 0x0144, /* Ń, ń */
0x0145, 0x0146, /* Ņ, ņ */
0x0147, 0x0148, /* Ň, ň */
0x014a, 0x014b, /* Ŋ, ŋ */
0x014c, 0x014d, /* Ō, ō */
0x014e, 0x014f, /* Ŏ, ŏ */
0x0150, 0x0151, /* Ő, ő */
0x0152, 0x0153, /* Œ, œ */
0x0154, 0x0155, /* Ŕ, ŕ */
0x0156, 0x0157, /* Ŗ, ŗ */
0x0158, 0x0159, /* Ř, ř */
0x015a, 0x015b, /* Ś, ś */
0x015c, 0x015d, /* Ŝ, ŝ */
0x015e, 0x015f, /* Ş, ş */
0x0160, 0x0161, /* Š, š */
0x0162, 0x0163, /* Ţ, ţ */
0x0164, 0x0165, /* Ť, ť */
0x0166, 0x0167, /* Ŧ, ŧ */
0x0168, 0x0169, /* Ũ, ũ */
0x016a, 0x016b, /* Ū, ū */
0x016c, 0x016d, /* Ŭ, ŭ */
0x016e, 0x016f, /* Ů, ů */
0x0170, 0x0171, /* Ű, ű */
0x0172, 0x0173, /* Ų, ų */
0x0174, 0x0175, /* Ŵ, ŵ */
0x0176, 0x0177, /* Ŷ, ŷ */
0x0178, 0x00ff, /* Ÿ, ÿ */
0x0179, 0x017a, /* Ź, ź */
0x017b, 0x017c, /* Ż, ż */
0x017d, 0x017e, /* Ž, ž */
0x0181, 0x0253, /* Ɓ, ɓ */
0x0182, 0x0183, /* Ƃ, ƃ */
0x0184, 0x0185, /* Ƅ, ƅ */
0x0186, 0x0254, /* Ɔ, ɔ */
0x0187, 0x0188, /* Ƈ, ƈ */
0x018b, 0x018c, /* Ƌ, ƌ */
0x018e, 0x01dd, /* Ǝ, ǝ */
0x018f, 0x0259, /* Ə, ə */
0x0190, 0x025b, /* Ɛ, ɛ */
0x0191, 0x0192, /* Ƒ, ƒ */
0x0193, 0x0260, /* Ɠ, ɠ */
0x0194, 0x0263, /* Ɣ, ɣ */
0x0196, 0x0269, /* Ɩ, ɩ */
0x0197, 0x0268, /* Ɨ, ɨ */
0x0198, 0x0199, /* Ƙ, ƙ */
0x019c, 0x026f, /* Ɯ, ɯ */
0x019d, 0x0272, /* Ɲ, ɲ */
0x019f, 0x0275, /* Ɵ, ɵ */
0x01a0, 0x01a1, /* Ơ, ơ */
0x01a2, 0x01a3, /* Ƣ, ƣ */
0x01a4, 0x01a5, /* Ƥ, ƥ */
0x01a6, 0x0280, /* Ʀ, ʀ */
0x01a7, 0x01a8, /* Ƨ, ƨ */
0x01a9, 0x0283, /* Ʃ, ʃ */
0x01ac, 0x01ad, /* Ƭ, ƭ */
0x01ae, 0x0288, /* Ʈ, ʈ */
0x01af, 0x01b0, /* Ư, ư */
0x01b3, 0x01b4, /* Ƴ, ƴ */
0x01b5, 0x01b6, /* Ƶ, ƶ */
0x01b7, 0x0292, /* Ʒ, ʒ */
0x01b8, 0x01b9, /* Ƹ, ƹ */
0x01bc, 0x01bd, /* Ƽ, ƽ */
0x01c4, 0x01c6, /* DŽ, dž */
0x01c5, 0x01c6, /* Dž, dž */
0x01c7, 0x01c9, /* LJ, lj */
0x01c8, 0x01c9, /* Lj, lj */
0x01ca, 0x01cc, /* NJ, nj */
0x01cb, 0x01cc, /* Nj, nj */
0x01cd, 0x01ce, /* Ǎ, ǎ */
0x01cf, 0x01d0, /* Ǐ, ǐ */
0x01d1, 0x01d2, /* Ǒ, ǒ */
0x01d3, 0x01d4, /* Ǔ, ǔ */
0x01d5, 0x01d6, /* Ǖ, ǖ */
0x01d7, 0x01d8, /* Ǘ, ǘ */
0x01d9, 0x01da, /* Ǚ, ǚ */
0x01db, 0x01dc, /* Ǜ, ǜ */
0x01de, 0x01df, /* Ǟ, ǟ */
0x01e0, 0x01e1, /* Ǡ, ǡ */
0x01e2, 0x01e3, /* Ǣ, ǣ */
0x01e4, 0x01e5, /* Ǥ, ǥ */
0x01e6, 0x01e7, /* Ǧ, ǧ */
0x01e8, 0x01e9, /* Ǩ, ǩ */
0x01ea, 0x01eb, /* Ǫ, ǫ */
0x01ec, 0x01ed, /* Ǭ, ǭ */
0x01ee, 0x01ef, /* Ǯ, ǯ */
0x01f1, 0x01f3, /* DZ, dz */
0x01f2, 0x01f3, /* Dz, dz */
0x01f4, 0x01f5, /* Ǵ, ǵ */
0x01f6, 0x0195, /* Ƕ, ƕ */
0x01f7, 0x01bf, /* Ƿ, ƿ */
0x01f8, 0x01f9, /* Ǹ, ǹ */
0x01fa, 0x01fb, /* Ǻ, ǻ */
0x01fc, 0x01fd, /* Ǽ, ǽ */
0x01fe, 0x01ff, /* Ǿ, ǿ */
0x0200, 0x0201, /* Ȁ, ȁ */
0x0202, 0x0203, /* Ȃ, ȃ */
0x0204, 0x0205, /* Ȅ, ȅ */
0x0206, 0x0207, /* Ȇ, ȇ */
0x0208, 0x0209, /* Ȉ, ȉ */
0x020a, 0x020b, /* Ȋ, ȋ */
0x020c, 0x020d, /* Ȍ, ȍ */
0x020e, 0x020f, /* Ȏ, ȏ */
0x0210, 0x0211, /* Ȑ, ȑ */
0x0212, 0x0213, /* Ȓ, ȓ */
0x0214, 0x0215, /* Ȕ, ȕ */
0x0216, 0x0217, /* Ȗ, ȗ */
0x0218, 0x0219, /* Ș, ș */
0x021a, 0x021b, /* Ț, ț */
0x021c, 0x021d, /* Ȝ, ȝ */
0x021e, 0x021f, /* Ȟ, ȟ */
0x0220, 0x019e, /* Ƞ, ƞ */
0x0222, 0x0223, /* Ȣ, ȣ */
0x0224, 0x0225, /* Ȥ, ȥ */
0x0226, 0x0227, /* Ȧ, ȧ */
0x0228, 0x0229, /* Ȩ, ȩ */
0x022a, 0x022b, /* Ȫ, ȫ */
0x022c, 0x022d, /* Ȭ, ȭ */
0x022e, 0x022f, /* Ȯ, ȯ */
0x0230, 0x0231, /* Ȱ, ȱ */
0x0232, 0x0233, /* Ȳ, ȳ */
0x023a, 0x0000, /* Ⱥ, <nil> */
0x023b, 0x023c, /* Ȼ, ȼ */
0x023d, 0x019a, /* Ƚ, ƚ */
0x023e, 0x0000, /* Ⱦ, <nil> */
0x0241, 0x0294, /* Ɂ, ʔ */
0x0386, 0x03ac, /* Ά, ά */
0x038c, 0x03cc, /* Ό, ό */
0x03d2, 0x0000, /* ϒ, <nil> */
0x03d3, 0x0000, /* ϓ, <nil> */
0x03d4, 0x0000, /* ϔ, <nil> */
0x03d8, 0x03d9, /* Ϙ, ϙ */
0x03da, 0x03db, /* Ϛ, ϛ */
0x03dc, 0x03dd, /* Ϝ, ϝ */
0x03de, 0x03df, /* Ϟ, ϟ */
0x03e0, 0x03e1, /* Ϡ, ϡ */
0x03e2, 0x03e3, /* Ϣ, ϣ */
0x03e4, 0x03e5, /* Ϥ, ϥ */
0x03e6, 0x03e7, /* Ϧ, ϧ */
0x03e8, 0x03e9, /* Ϩ, ϩ */
0x03ea, 0x03eb, /* Ϫ, ϫ */
0x03ec, 0x03ed, /* Ϭ, ϭ */
0x03ee, 0x03ef, /* Ϯ, ϯ */
0x03f4, 0x03b8, /* ϴ, θ */
0x03f7, 0x03f8, /* Ϸ, ϸ */
0x03f9, 0x03f2, /* Ϲ, ϲ */
0x03fa, 0x03fb, /* Ϻ, ϻ */
0x03fd, 0x0000, /* Ͻ, <nil> */
0x03fe, 0x0000, /* Ͼ, <nil> */
0x03ff, 0x0000, /* Ͽ, <nil> */
0x0460, 0x0461, /* Ѡ, ѡ */
0x0462, 0x0463, /* Ѣ, ѣ */
0x0464, 0x0465, /* Ѥ, ѥ */
0x0466, 0x0467, /* Ѧ, ѧ */
0x0468, 0x0469, /* Ѩ, ѩ */
0x046a, 0x046b, /* Ѫ, ѫ */
0x046c, 0x046d, /* Ѭ, ѭ */
0x046e, 0x046f, /* Ѯ, ѯ */
0x0470, 0x0471, /* Ѱ, ѱ */
0x0472, 0x0473, /* Ѳ, ѳ */
0x0474, 0x0475, /* Ѵ, ѵ */
0x0476, 0x0477, /* Ѷ, ѷ */
0x0478, 0x0479, /* Ѹ, ѹ */
0x047a, 0x047b, /* Ѻ, ѻ */
0x047c, 0x047d, /* Ѽ, ѽ */
0x047e, 0x047f, /* Ѿ, ѿ */
0x0480, 0x0481, /* Ҁ, ҁ */
0x048a, 0x048b, /* Ҋ, ҋ */
0x048c, 0x048d, /* Ҍ, ҍ */
0x048e, 0x048f, /* Ҏ, ҏ */
0x0490, 0x0491, /* Ґ, ґ */
0x0492, 0x0493, /* Ғ, ғ */
0x0494, 0x0495, /* Ҕ, ҕ */
0x0496, 0x0497, /* Җ, җ */
0x0498, 0x0499, /* Ҙ, ҙ */
0x049a, 0x049b, /* Қ, қ */
0x049c, 0x049d, /* Ҝ, ҝ */
0x049e, 0x049f, /* Ҟ, ҟ */
0x04a0, 0x04a1, /* Ҡ, ҡ */
0x04a2, 0x04a3, /* Ң, ң */
0x04a4, 0x04a5, /* Ҥ, ҥ */
0x04a6, 0x04a7, /* Ҧ, ҧ */
0x04a8, 0x04a9, /* Ҩ, ҩ */
0x04aa, 0x04ab, /* Ҫ, ҫ */
0x04ac, 0x04ad, /* Ҭ, ҭ */
0x04ae, 0x04af, /* Ү, ү */
0x04b0, 0x04b1, /* Ұ, ұ */
0x04b2, 0x04b3, /* Ҳ, ҳ */
0x04b4, 0x04b5, /* Ҵ, ҵ */
0x04b6, 0x04b7, /* Ҷ, ҷ */
0x04b8, 0x04b9, /* Ҹ, ҹ */
0x04ba, 0x04bb, /* Һ, һ */
0x04bc, 0x04bd, /* Ҽ, ҽ */
0x04be, 0x04bf, /* Ҿ, ҿ */
0x04c0, 0x0000, /* Ӏ, <nil> */
0x04c1, 0x04c2, /* Ӂ, ӂ */
0x04c3, 0x04c4, /* Ӄ, ӄ */
0x04c5, 0x04c6, /* Ӆ, ӆ */
0x04c7, 0x04c8, /* Ӈ, ӈ */
0x04c9, 0x04ca, /* Ӊ, ӊ */
0x04cb, 0x04cc, /* Ӌ, ӌ */
0x04cd, 0x04ce, /* Ӎ, ӎ */
0x04d0, 0x04d1, /* Ӑ, ӑ */
0x04d2, 0x04d3, /* Ӓ, ӓ */
0x04d4, 0x04d5, /* Ӕ, ӕ */
0x04d6, 0x04d7, /* Ӗ, ӗ */
0x04d8, 0x04d9, /* Ә, ә */
0x04da, 0x04db, /* Ӛ, ӛ */
0x04dc, 0x04dd, /* Ӝ, ӝ */
0x04de, 0x04df, /* Ӟ, ӟ */
0x04e0, 0x04e1, /* Ӡ, ӡ */
0x04e2, 0x04e3, /* Ӣ, ӣ */
0x04e4, 0x04e5, /* Ӥ, ӥ */
0x04e6, 0x04e7, /* Ӧ, ӧ */
0x04e8, 0x04e9, /* Ө, ө */
0x04ea, 0x04eb, /* Ӫ, ӫ */
0x04ec, 0x04ed, /* Ӭ, ӭ */
0x04ee, 0x04ef, /* Ӯ, ӯ */
0x04f0, 0x04f1, /* Ӱ, ӱ */
0x04f2, 0x04f3, /* Ӳ, ӳ */
0x04f4, 0x04f5, /* Ӵ, ӵ */
0x04f6, 0x04f7, /* Ӷ, ӷ */
0x04f8, 0x04f9, /* Ӹ, ӹ */
0x0500, 0x0501, /* Ԁ, ԁ */
0x0502, 0x0503, /* Ԃ, ԃ */
0x0504, 0x0505, /* Ԅ, ԅ */
0x0506, 0x0507, /* Ԇ, ԇ */
0x0508, 0x0509, /* Ԉ, ԉ */
0x050a, 0x050b, /* Ԋ, ԋ */
0x050c, 0x050d, /* Ԍ, ԍ */
0x050e, 0x050f, /* Ԏ, ԏ */
0x1e00, 0x1e01, /* Ḁ, ḁ */
0x1e02, 0x1e03, /* Ḃ, ḃ */
0x1e04, 0x1e05, /* Ḅ, ḅ */
0x1e06, 0x1e07, /* Ḇ, ḇ */
0x1e08, 0x1e09, /* Ḉ, ḉ */
0x1e0a, 0x1e0b, /* Ḋ, ḋ */
0x1e0c, 0x1e0d, /* Ḍ, ḍ */
0x1e0e, 0x1e0f, /* Ḏ, ḏ */
0x1e10, 0x1e11, /* Ḑ, ḑ */
0x1e12, 0x1e13, /* Ḓ, ḓ */
0x1e14, 0x1e15, /* Ḕ, ḕ */
0x1e16, 0x1e17, /* Ḗ, ḗ */
0x1e18, 0x1e19, /* Ḙ, ḙ */
0x1e1a, 0x1e1b, /* Ḛ, ḛ */
0x1e1c, 0x1e1d, /* Ḝ, ḝ */
0x1e1e, 0x1e1f, /* Ḟ, ḟ */
0x1e20, 0x1e21, /* Ḡ, ḡ */
0x1e22, 0x1e23, /* Ḣ, ḣ */
0x1e24, 0x1e25, /* Ḥ, ḥ */
0x1e26, 0x1e27, /* Ḧ, ḧ */
0x1e28, 0x1e29, /* Ḩ, ḩ */
0x1e2a, 0x1e2b, /* Ḫ, ḫ */
0x1e2c, 0x1e2d, /* Ḭ, ḭ */
0x1e2e, 0x1e2f, /* Ḯ, ḯ */
0x1e30, 0x1e31, /* Ḱ, ḱ */
0x1e32, 0x1e33, /* Ḳ, ḳ */
0x1e34, 0x1e35, /* Ḵ, ḵ */
0x1e36, 0x1e37, /* Ḷ, ḷ */
0x1e38, 0x1e39, /* Ḹ, ḹ */
0x1e3a, 0x1e3b, /* Ḻ, ḻ */
0x1e3c, 0x1e3d, /* Ḽ, ḽ */
0x1e3e, 0x1e3f, /* Ḿ, ḿ */
0x1e40, 0x1e41, /* Ṁ, ṁ */
0x1e42, 0x1e43, /* Ṃ, ṃ */
0x1e44, 0x1e45, /* Ṅ, ṅ */
0x1e46, 0x1e47, /* Ṇ, ṇ */
0x1e48, 0x1e49, /* Ṉ, ṉ */
0x1e4a, 0x1e4b, /* Ṋ, ṋ */
0x1e4c, 0x1e4d, /* Ṍ, ṍ */
0x1e4e, 0x1e4f, /* Ṏ, ṏ */
0x1e50, 0x1e51, /* Ṑ, ṑ */
0x1e52, 0x1e53, /* Ṓ, ṓ */
0x1e54, 0x1e55, /* Ṕ, ṕ */
0x1e56, 0x1e57, /* Ṗ, ṗ */
0x1e58, 0x1e59, /* Ṙ, ṙ */
0x1e5a, 0x1e5b, /* Ṛ, ṛ */
0x1e5c, 0x1e5d, /* Ṝ, ṝ */
0x1e5e, 0x1e5f, /* Ṟ, ṟ */
0x1e60, 0x1e61, /* Ṡ, ṡ */
0x1e62, 0x1e63, /* Ṣ, ṣ */
0x1e64, 0x1e65, /* Ṥ, ṥ */
0x1e66, 0x1e67, /* Ṧ, ṧ */
0x1e68, 0x1e69, /* Ṩ, ṩ */
0x1e6a, 0x1e6b, /* Ṫ, ṫ */
0x1e6c, 0x1e6d, /* Ṭ, ṭ */
0x1e6e, 0x1e6f, /* Ṯ, ṯ */
0x1e70, 0x1e71, /* Ṱ, ṱ */
0x1e72, 0x1e73, /* Ṳ, ṳ */
0x1e74, 0x1e75, /* Ṵ, ṵ */
0x1e76, 0x1e77, /* Ṷ, ṷ */
0x1e78, 0x1e79, /* Ṹ, ṹ */
0x1e7a, 0x1e7b, /* Ṻ, ṻ */
0x1e7c, 0x1e7d, /* Ṽ, ṽ */
0x1e7e, 0x1e7f, /* Ṿ, ṿ */
0x1e80, 0x1e81, /* Ẁ, ẁ */
0x1e82, 0x1e83, /* Ẃ, ẃ */
0x1e84, 0x1e85, /* Ẅ, ẅ */
0x1e86, 0x1e87, /* Ẇ, ẇ */
0x1e88, 0x1e89, /* Ẉ, ẉ */
0x1e8a, 0x1e8b, /* Ẋ, ẋ */
0x1e8c, 0x1e8d, /* Ẍ, ẍ */
0x1e8e, 0x1e8f, /* Ẏ, ẏ */
0x1e90, 0x1e91, /* Ẑ, ẑ */
0x1e92, 0x1e93, /* Ẓ, ẓ */
0x1e94, 0x1e95, /* Ẕ, ẕ */
0x1ea0, 0x1ea1, /* Ạ, ạ */
0x1ea2, 0x1ea3, /* Ả, ả */
0x1ea4, 0x1ea5, /* Ấ, ấ */
0x1ea6, 0x1ea7, /* Ầ, ầ */
0x1ea8, 0x1ea9, /* Ẩ, ẩ */
0x1eaa, 0x1eab, /* Ẫ, ẫ */
0x1eac, 0x1ead, /* Ậ, ậ */
0x1eae, 0x1eaf, /* Ắ, ắ */
0x1eb0, 0x1eb1, /* Ằ, ằ */
0x1eb2, 0x1eb3, /* Ẳ, ẳ */
0x1eb4, 0x1eb5, /* Ẵ, ẵ */
0x1eb6, 0x1eb7, /* Ặ, ặ */
0x1eb8, 0x1eb9, /* Ẹ, ẹ */
0x1eba, 0x1ebb, /* Ẻ, ẻ */
0x1ebc, 0x1ebd, /* Ẽ, ẽ */
0x1ebe, 0x1ebf, /* Ế, ế */
0x1ec0, 0x1ec1, /* Ề, ề */
0x1ec2, 0x1ec3, /* Ể, ể */
0x1ec4, 0x1ec5, /* Ễ, ễ */
0x1ec6, 0x1ec7, /* Ệ, ệ */
0x1ec8, 0x1ec9, /* Ỉ, ỉ */
0x1eca, 0x1ecb, /* Ị, ị */
0x1ecc, 0x1ecd, /* Ọ, ọ */
0x1ece, 0x1ecf, /* Ỏ, ỏ */
0x1ed0, 0x1ed1, /* Ố, ố */
0x1ed2, 0x1ed3, /* Ồ, ồ */
0x1ed4, 0x1ed5, /* Ổ, ổ */
0x1ed6, 0x1ed7, /* Ỗ, ỗ */
0x1ed8, 0x1ed9, /* Ộ, ộ */
0x1eda, 0x1edb, /* Ớ, ớ */
0x1edc, 0x1edd, /* Ờ, ờ */
0x1ede, 0x1edf, /* Ở, ở */
0x1ee0, 0x1ee1, /* Ỡ, ỡ */
0x1ee2, 0x1ee3, /* Ợ, ợ */
0x1ee4, 0x1ee5, /* Ụ, ụ */
0x1ee6, 0x1ee7, /* Ủ, ủ */
0x1ee8, 0x1ee9, /* Ứ, ứ */
0x1eea, 0x1eeb, /* Ừ, ừ */
0x1eec, 0x1eed, /* Ử, ử */
0x1eee, 0x1eef, /* Ữ, ữ */
0x1ef0, 0x1ef1, /* Ự, ự */
0x1ef2, 0x1ef3, /* Ỳ, ỳ */
0x1ef4, 0x1ef5, /* Ỵ, ỵ */
0x1ef6, 0x1ef7, /* Ỷ, ỷ */
0x1ef8, 0x1ef9, /* Ỹ, ỹ */
0x1f59, 0x1f51, /* Ὑ, ὑ */
0x1f5b, 0x1f53, /* Ὓ, ὓ */
0x1f5d, 0x1f55, /* Ὕ, ὕ */
0x1f5f, 0x1f57, /* Ὗ, ὗ */
0x1fbc, 0x1fb3, /* ᾼ, ᾳ */
0x1fcc, 0x1fc3, /* ῌ, ῃ */
0x1fec, 0x1fe5, /* Ῥ, ῥ */
0x1ffc, 0x1ff3, /* ῼ, ῳ */
0x2102, 0x0000, /* ℂ, <nil> */
0x2107, 0x0000, /* ℇ, <nil> */
0x210b, 0x0000, /* ℋ, <nil> */
0x210c, 0x0000, /* ℌ, <nil> */
0x210d, 0x0000, /* ℍ, <nil> */
0x2110, 0x0000, /* ℐ, <nil> */
0x2111, 0x0000, /* ℑ, <nil> */
0x2112, 0x0000, /* ℒ, <nil> */
0x2115, 0x0000, /* ℕ, <nil> */
0x2119, 0x0000, /* ℙ, <nil> */
0x211a, 0x0000, /* ℚ, <nil> */
0x211b, 0x0000, /* ℛ, <nil> */
0x211c, 0x0000, /* ℜ, <nil> */
0x211d, 0x0000, /* ℝ, <nil> */
0x2124, 0x0000, /* ℤ, <nil> */
0x2126, 0x03c9, /* Ω, ω */
0x2128, 0x0000, /* ℨ, <nil> */
0x212a, 0x006b, /* K, k */
0x212b, 0x00e5, /* Å, å */
0x212c, 0x0000, /* ℬ, <nil> */
0x212d, 0x0000, /* ℭ, <nil> */
0x2130, 0x0000, /* ℰ, <nil> */
0x2131, 0x0000, /* ℱ, <nil> */
0x2133, 0x0000, /* ℳ, <nil> */
0x213e, 0x0000, /* ℾ, <nil> */
0x213f, 0x0000, /* ℿ, <nil> */
0x2145, 0x0000, /* ⅅ, <nil> */
0x2c80, 0x2c81, /* Ⲁ, ⲁ */
0x2c82, 0x2c83, /* Ⲃ, ⲃ */
0x2c84, 0x2c85, /* Ⲅ, ⲅ */
0x2c86, 0x2c87, /* Ⲇ, ⲇ */
0x2c88, 0x2c89, /* Ⲉ, ⲉ */
0x2c8a, 0x2c8b, /* Ⲋ, ⲋ */
0x2c8c, 0x2c8d, /* Ⲍ, ⲍ */
0x2c8e, 0x2c8f, /* Ⲏ, ⲏ */
0x2c90, 0x2c91, /* Ⲑ, ⲑ */
0x2c92, 0x2c93, /* Ⲓ, ⲓ */
0x2c94, 0x2c95, /* Ⲕ, ⲕ */
0x2c96, 0x2c97, /* Ⲗ, ⲗ */
0x2c98, 0x2c99, /* Ⲙ, ⲙ */
0x2c9a, 0x2c9b, /* Ⲛ, ⲛ */
0x2c9c, 0x2c9d, /* Ⲝ, ⲝ */
0x2c9e, 0x2c9f, /* Ⲟ, ⲟ */
0x2ca0, 0x2ca1, /* Ⲡ, ⲡ */
0x2ca2, 0x2ca3, /* Ⲣ, ⲣ */
0x2ca4, 0x2ca5, /* Ⲥ, ⲥ */
0x2ca6, 0x2ca7, /* Ⲧ, ⲧ */
0x2ca8, 0x2ca9, /* Ⲩ, ⲩ */
0x2caa, 0x2cab, /* Ⲫ, ⲫ */
0x2cac, 0x2cad, /* Ⲭ, ⲭ */
0x2cae, 0x2caf, /* Ⲯ, ⲯ */
0x2cb0, 0x2cb1, /* Ⲱ, ⲱ */
0x2cb2, 0x2cb3, /* Ⲳ, ⲳ */
0x2cb4, 0x2cb5, /* Ⲵ, ⲵ */
0x2cb6, 0x2cb7, /* Ⲷ, ⲷ */
0x2cb8, 0x2cb9, /* Ⲹ, ⲹ */
0x2cba, 0x2cbb, /* Ⲻ, ⲻ */
0x2cbc, 0x2cbd, /* Ⲽ, ⲽ */
0x2cbe, 0x2cbf, /* Ⲿ, ⲿ */
0x2cc0, 0x2cc1, /* Ⳁ, ⳁ */
0x2cc2, 0x2cc3, /* Ⳃ, ⳃ */
0x2cc4, 0x2cc5, /* Ⳅ, ⳅ */
0x2cc6, 0x2cc7, /* Ⳇ, ⳇ */
0x2cc8, 0x2cc9, /* Ⳉ, ⳉ */
0x2cca, 0x2ccb, /* Ⳋ, ⳋ */
0x2ccc, 0x2ccd, /* Ⳍ, ⳍ */
0x2cce, 0x2ccf, /* Ⳏ, ⳏ */
0x2cd0, 0x2cd1, /* Ⳑ, ⳑ */
0x2cd2, 0x2cd3, /* Ⳓ, ⳓ */
0x2cd4, 0x2cd5, /* Ⳕ, ⳕ */
0x2cd6, 0x2cd7, /* Ⳗ, ⳗ */
0x2cd8, 0x2cd9, /* Ⳙ, ⳙ */
0x2cda, 0x2cdb, /* Ⳛ, ⳛ */
0x2cdc, 0x2cdd, /* Ⳝ, ⳝ */
0x2cde, 0x2cdf, /* Ⳟ, ⳟ */
0x2ce0, 0x2ce1, /* Ⳡ, ⳡ */
0x2ce2, 0x2ce3, /* Ⳣ, ⳣ */
};
static
Rune __totitle1[] =
{
0x01C6, 0x01C5, /* dž, Dž */
0x01C5, 0x01C5, /* Dž, Dž */
0x01C9, 0x01C8, /* lj, Lj */
0x01C8, 0x01C8, /* Lj, Lj */
0x01CC, 0x01CB, /* nj, Nj */
0x01CB, 0x01CB, /* Nj, Nj */
0x01F3, 0x01F2, /* dz, Dz */
0x01F2, 0x01F2, /* Dz, Dz */
0x1F80, 0x1F88, /* ᾀ, ᾈ */
0x1F81, 0x1F89, /* ᾁ, ᾉ */
0x1F82, 0x1F8A, /* ᾂ, ᾊ */
0x1F83, 0x1F8B, /* ᾃ, ᾋ */
0x1F84, 0x1F8C, /* ᾄ, ᾌ */
0x1F85, 0x1F8D, /* ᾅ, ᾍ */
0x1F86, 0x1F8E, /* ᾆ, ᾎ */
0x1F87, 0x1F8F, /* ᾇ, ᾏ */
0x1F90, 0x1F98, /* ᾐ, ᾘ */
0x1F91, 0x1F99, /* ᾑ, ᾙ */
0x1F92, 0x1F9A, /* ᾒ, ᾚ */
0x1F93, 0x1F9B, /* ᾓ, ᾛ */
0x1F94, 0x1F9C, /* ᾔ, ᾜ */
0x1F95, 0x1F9D, /* ᾕ, ᾝ */
0x1F96, 0x1F9E, /* ᾖ, ᾞ */
0x1F97, 0x1F9F, /* ᾗ, ᾟ */
0x1FA0, 0x1FA8, /* ᾠ, ᾨ */
0x1FA1, 0x1FA9, /* ᾡ, ᾩ */
0x1FA2, 0x1FAA, /* ᾢ, ᾪ */
0x1FA3, 0x1FAB, /* ᾣ, ᾫ */
0x1FA4, 0x1FAC, /* ᾤ, ᾬ */
0x1FA5, 0x1FAD, /* ᾥ, ᾭ */
0x1FA6, 0x1FAE, /* ᾦ, ᾮ */
0x1FA7, 0x1FAF, /* ᾧ, ᾯ */
0x1FB3, 0x1FBC, /* ᾳ, ᾼ */
0x1FC3, 0x1FCC, /* ῃ, ῌ */
0x1FF3, 0x1FFC, /* ῳ, ῼ */
};
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] quote file name
2006-07-28 15:33 ` erik quanstrom
@ 2006-07-28 17:52 ` Micah Stetson
2006-07-28 18:19 ` erik quanstrom
0 siblings, 1 reply; 15+ messages in thread
From: Micah Stetson @ 2006-07-28 17:52 UTC (permalink / raw)
To: Fans of the OS Plan 9 from Bell Labs
> in addition, one would need to change the string from
> "`^#*[]=|\\?${}()'<>&;" (char*)
> to
> L"`^#*[]=|\\?${}()'<>&;" (Rune*)
> i was trying to avoid that. i think it would make p9p harder.
> (i dont trust gcc with L"".)
No, utfrune finds a rune in a UTF-8 string (char *). R is already a
Rune (even though it's declared int), so nothing needs to change,
except to replace strchr with utfrune. Utfrune starts like this:
char*
utfrune(char *s, long c)
{
...
if(c < Runesync) /* not part of utf sequence */
return strchr(s, c);
...
Which is exactly what you were doing (Runesync == 0x80).
Micah
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] quote file name
2006-07-28 17:52 ` Micah Stetson
@ 2006-07-28 18:19 ` erik quanstrom
2006-07-28 19:16 ` Micah Stetson
0 siblings, 1 reply; 15+ messages in thread
From: erik quanstrom @ 2006-07-28 18:19 UTC (permalink / raw)
To: 9fans
On Fri Jul 28 13:26:14 CDT 2006, micah@stetsonnet.org wrote:
> > in addition, one would need to change the string from
> > "`^#*[]=|\\?${}()'<>&;" (char*)
> > to
> > L"`^#*[]=|\\?${}()'<>&;" (Rune*)
> > i was trying to avoid that. i think it would make p9p harder.
> > (i dont trust gcc with L"".)
>
> No, utfrune finds a rune in a UTF-8 string (char *). R is already a
> Rune (even though it's declared int), so nothing needs to change,
you're right about this. but why obfuscate the situation with Runes?
the only characters that rc will treat as special are us-ascii -- that is
< 0x80.
- erik
> except to replace strchr with utfrune. Utfrune starts like this:
>
> char*
> utfrune(char *s, long c)
> {
> ...
> if(c < Runesync) /* not part of utf sequence */
> return strchr(s, c);
> ...
>
> Which is exactly what you were doing (Runesync == 0x80).
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] quote file name
2006-07-28 18:19 ` erik quanstrom
@ 2006-07-28 19:16 ` Micah Stetson
0 siblings, 0 replies; 15+ messages in thread
From: Micah Stetson @ 2006-07-28 19:16 UTC (permalink / raw)
To: Fans of the OS Plan 9 from Bell Labs
> you're right about this. but why obfuscate the situation with Runes?
> the only characters that rc will treat as special are us-ascii -- that is
> < 0x80.
If r weren't a Rune, strchr would work as expected and you wouldn't
need the test for 0x80 (also, it would presumably be named c and not
r). The function deals with Runes, not chars. Isn't it less
obfuscated to do it explicitly? I'm not suggesting you introduce
Runes where they aren't already, just that there's a library function
that does what you want with the Runes you've already got.
Micah
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] quote file name
2006-07-28 13:23 ` "Nils O. Selåsdal"
@ 2006-07-28 19:37 ` geoff
0 siblings, 0 replies; 15+ messages in thread
From: geoff @ 2006-07-28 19:37 UTC (permalink / raw)
To: 9fans
> Surly the only space that needs concern is the "ascii"/U+0020 space,
> as that's used as a separator, not all the other unicode "space"
> characters. ?
rc also treats tab and newline specially, so ascii space is not the
only whitespace character that needs quoting.
; grep -n '\\t' *
lex.c:11: return !strchr("\n \t#;&|^$=`'{}()<>", c) && c!=EOF;
lex.c:118: if(c==' ' || c=='\t')
simple.c:246: while(*s==' ' || *s=='\t' || *s=='\n') s++;
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2006-07-28 19:37 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-07-09 10:24 [9fans] quote file name arisawa
2006-07-09 10:53 ` quanstro
2006-07-10 0:46 ` quanstro
2006-07-28 12:41 ` arisawa
2006-07-28 12:48 ` erik quanstrom
2006-07-28 15:09 ` Micah Stetson
2006-07-28 15:33 ` erik quanstrom
2006-07-28 17:52 ` Micah Stetson
2006-07-28 18:19 ` erik quanstrom
2006-07-28 19:16 ` Micah Stetson
2006-07-28 15:26 ` arisawa
2006-07-28 15:49 ` erik quanstrom
2006-07-28 15:51 ` erik quanstrom
2006-07-28 13:23 ` "Nils O. Selåsdal"
2006-07-28 19:37 ` geoff
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).