From e9b19895c2322f1b9753f67fbe3124eb99bcfe16 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sun, 25 Jan 2026 09:57:16 +0100 Subject: Add braille MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- libcharconv_latin.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'libcharconv_latin.c') diff --git a/libcharconv_latin.c b/libcharconv_latin.c index de5b618..5124c53 100644 --- a/libcharconv_latin.c +++ b/libcharconv_latin.c @@ -8,7 +8,7 @@ libcharconv_latin(const char *s, size_t slen, size_t *n, uint_least32_t *cp, siz enum libcharconv_result ret = LIBCHARCONV_CONVERTED; uint_least32_t c; char c1, c2, c3, c4, c5; - size_t clen; + size_t i, clen; unsigned num; *n = 0; @@ -355,6 +355,33 @@ libcharconv_latin(const char *s, size_t slen, size_t *n, uint_least32_t *cp, siz c = (uint_least32_t)"SdYAIXC/P_\\"[c - UINT32_C(0x2440)]; goto conv; + } else if (UINT32_C(0x2800) <= c && c <= UINT32_C(0x28FF)) { + /* braille */ + if (*n) + goto no_conv; + *n += clen; + i = 0u; + if ((c & 0x01u) && *ncp > i) + cp[i++] = '1'; + if ((c & 0x02u) && *ncp > i) + cp[i++] = '2'; + if ((c & 0x04u) && *ncp > i) + cp[i++] = '3'; + if ((c & 0x08u) && *ncp > i) + cp[i++] = '4'; + if ((c & 0x10u) && *ncp > i) + cp[i++] = '5'; + if ((c & 0x20u) && *ncp > i) + cp[i++] = '6'; + if ((c & 0x40u) && *ncp > i) + cp[i++] = '7'; + if ((c & 0x80u) && *ncp > i) + cp[i++] = '8'; + if (*ncp > i) + cp[i++] = '0'; + *ncp = i; + return ret; + } else { switch (c) { /* shogi */ -- cgit v1.2.3-70-g09d2