diff options
| author | Mattias Andrée <m@maandree.se> | 2026-01-24 21:10:12 +0100 |
|---|---|---|
| committer | Mattias Andrée <m@maandree.se> | 2026-01-24 21:10:12 +0100 |
| commit | 80350b43c77a7835546a8c29e0d93eeb3cddfadd (patch) | |
| tree | fc9db67a19eb38daacac5b18b409d1008ad81165 /libcharconv_latin.c | |
| parent | Add README (diff) | |
| download | charconv-80350b43c77a7835546a8c29e0d93eeb3cddfadd.tar.gz charconv-80350b43c77a7835546a8c29e0d93eeb3cddfadd.tar.bz2 charconv-80350b43c77a7835546a8c29e0d93eeb3cddfadd.tar.xz | |
Add superscript and subscript (so far only with digits) and lycian and lydian
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to 'libcharconv_latin.c')
| -rw-r--r-- | libcharconv_latin.c | 31 |
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; |
