From 079d5d6a214f169fa8b73f2d6f6f741810dbe9fe Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Fri, 29 Oct 2021 08:42:39 -0700 Subject: Exposed some unicode values to library users. I was hiding too many important constants. This commit moves them to the main exported header. --- include/libunicode.h | 10 ++++++++-- sys/cmd/term/term.c | 2 -- sys/libunicode/internal.h | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/include/libunicode.h b/include/libunicode.h index 00e5bc0..773f9ab 100644 --- a/include/libunicode.h +++ b/include/libunicode.h @@ -4,12 +4,18 @@ typedef uint32 rune; #define UTFmax 4 #define RuneErr 0xFFFDu +#define RuneMax 0x10FFFFu + +#define utf8·onebyte(c) (((c)&0x80u)==0x00u) +#define utf8·twobyte(c) (((c)&0xE0u)==0xC0u) +#define utf8·threebyte(c) (((c)&0xF0u)==0xE0u) +#define utf8·fourbyte(c) (((c)&0xF8u)==0xF0u) /* * UTF-8 functions. */ -int utf8·len(char *s); // returns number of runes -int utf8·runelen(rune r); // returns number of bytes for rune +int utf8·len(char *s); // returns number of runes for s +int utf8·runelen(rune r); // returns number of bytes for rune int utf8·decode(char *, rune *); // decode 1 rune from char stream, store into rune, return number of bytes int utf8·encode(rune *, char *); // encode 1 rune from rune stream, store into char, return number of bytes diff --git a/sys/cmd/term/term.c b/sys/cmd/term/term.c index b08915e..f92db28 100644 --- a/sys/cmd/term/term.c +++ b/sys/cmd/term/term.c @@ -2104,8 +2104,6 @@ tputc(rune u) else return; - printf("%d + %d\n", gp->u, u); - if(!hb_unicode_compose(hb_unicode_funcs_get_default(),gp->u, u, &nu)) { return; } diff --git a/sys/libunicode/internal.h b/sys/libunicode/internal.h index 6b0657b..df69310 100644 --- a/sys/libunicode/internal.h +++ b/sys/libunicode/internal.h @@ -25,13 +25,13 @@ #define TByte3 0xF0u // 0b11110000 #define TByte4 0xF8u // 0b11111000 +#define RuneMask 0x1FFFFFu + #define Rune1Byte 0x000080u // 1 << 8 (1 byte) #define Rune2Byte 0x001000u // 1 << 12 (2 bytes) #define Rune3Byte 0x020000u // 1 << 17 (3 bytes) #define Rune4Byte 0x400000u // 1 << 22 (4 bytes) -#define RuneMax 0x10FFFFu -#define RuneMask 0x1FFFFFu /* UTF-16 nonsense */ #define RuneSurrogateMin 0x0D8000 -- cgit v1.2.1