commit - dcbfbf59b89f824c58843aadab7038108bf4a2a9
commit + 3cfc831e45f4d4749e2748f94443f54c8bb48ffc
blob - 9479dfd9fe9aeb9e15948bb1acc1b8b1af7d0c0f
blob + d97985eb080d528a1eace62384c81917e36d7b47
--- utf8.c
+++ utf8.c
return decode(state, codep, byte);
}
-/* encode cp in s. s must be at least 4 bytes wide */
-size_t
-utf8_encode(uint32_t cp, char *s)
-{
- if (cp <= 0x7F) {
- *s = (uint8_t)cp;
- return 1;
- } else if (cp <= 0x7FF) {
- s[1] = (uint8_t)(( cp & 0x3F ) + 0x80);
- s[0] = (uint8_t)(((cp >> 6) & 0x1F) + 0xC0);
- return 2;
- } else if (cp <= 0xFFFF) {
- s[2] = (uint8_t)(( cp & 0x3F) + 0x80);
- s[1] = (uint8_t)(((cp >> 6) & 0x3F) + 0x80);
- s[0] = (uint8_t)(((cp >> 12) & 0x0F) + 0xE0);
- return 3;
- } else if (cp <= 0x10FFFF) {
- s[3] = (uint8_t)(( cp & 0x3F) + 0x80);
- s[2] = (uint8_t)(((cp >> 6) & 0x3F) + 0x80);
- s[1] = (uint8_t)(((cp >> 12) & 0x3F) + 0x80);
- s[0] = (uint8_t)(((cp >> 18) & 0x07) + 0xF0);
- return 4;
- } else {
- s[0] = '\0';
- return 0;
- }
-}
-
/* returns only 0, 1, 2 or 8. assumes sizeof(wchar_t) is 4 */
size_t
utf8_chwidth(uint32_t cp)
blob - 3dcbe2bf50a08b51e2e3028c80cef47f6a7880be
blob + 168560fa3f66e8f31ca3586eda6a944954b7da96
--- utf8.h
+++ utf8.h
/* utf8.c */
uint32_t utf8_decode(uint32_t*restrict, uint32_t*restrict, uint8_t);
-size_t utf8_encode(uint32_t, char*);
size_t utf8_chwidth(uint32_t);
size_t utf8_snwidth(const char*, size_t);
size_t utf8_swidth(const char*);