aboutsummaryrefslogtreecommitdiffstats
path: root/libcharconv_latin.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--libcharconv_latin.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/libcharconv_latin.c b/libcharconv_latin.c
index d3c1817..60a2fb5 100644
--- a/libcharconv_latin.c
+++ b/libcharconv_latin.c
@@ -299,6 +299,34 @@ libcharconv_latin(const char *s, size_t slen, size_t *n, uint_least32_t *cp, siz
goto conv3;
}
+ } else if (UINT32_C(0x2070) <= c && c <= UINT32_C(0x2079)) {
+ /* superscript */
+ c -= (uint_least32_t)UINT32_C(0x2070) - (uint_least32_t)'0';
+ goto conv;
+ } else if (UINT32_C(0x00B2) <= c && c <= UINT32_C(0x00B3)) {
+ /* superscript */
+ c -= (uint_least32_t)UINT32_C(0x00B2) - (uint_least32_t)'2';
+ goto conv;
+ } else if (c == UINT32_C(0x00B9)) {
+ /* superscript */
+ c -= (uint_least32_t)UINT32_C(0x00B9) - (uint_least32_t)'1';
+ goto conv;
+
+ } else if (UINT32_C(0x2080) <= c && c <= UINT32_C(0x2089)) {
+ /* subscript */
+ c -= (uint_least32_t)UINT32_C(0x2080) - (uint_least32_t)'0';
+ goto conv;
+
+ } else if (UINT32_C(0x10920) <= c && c <= UINT32_C(0x10939)) {
+ /* lydian */
+ c = (uint_least32_t)"abgdeviyklmnorStufqsTAELNc"[c - UINT32_C(0x10920)];
+ goto conv;
+
+ } else if (UINT32_C(0x10280) <= c && c <= UINT32_C(0x1029C)) {
+ /* lycian */
+ c = (uint_least32_t)"aebBgdiwzDjkqlmnMNupKrstTAEhx"[c - UINT32_C(0x10280)];
+ goto conv;
+
} else {
switch (c) {
/* shogi */
@@ -428,6 +456,9 @@ libcharconv_latin(const char *s, size_t slen, size_t *n, uint_least32_t *cp, siz
c = (uint_least32_t)'?';
goto conv;
+ /* lydian */
+ case UINT32_C(0x1093F): c = (uint_least32_t)'"'; goto conv;
+
default:
no_match:
*n += clen;