mirror of
https://github.com/systemd/systemd.git
synced 2024-12-23 21:35:11 +03:00
utf8: add helper call for counting display width of strings
This commit is contained in:
parent
b77f5e2773
commit
3f536d5bae
@ -35,6 +35,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "gunicode.h"
|
||||
#include "hexdecoct.h"
|
||||
#include "macro.h"
|
||||
#include "utf8.h"
|
||||
@ -414,3 +415,23 @@ size_t utf8_n_codepoints(const char *str) {
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
size_t utf8_console_width(const char *str) {
|
||||
size_t n = 0;
|
||||
|
||||
/* Returns the approximate width a string will take on screen when printed on a character cell
|
||||
* terminal/console. */
|
||||
|
||||
while (*str != 0) {
|
||||
char32_t c;
|
||||
|
||||
if (utf8_encoded_to_unichar(str, &c) < 0)
|
||||
return (size_t) -1;
|
||||
|
||||
str = utf8_next_char(str);
|
||||
|
||||
n += unichar_iswide(c) ? 2 : 1;
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
@ -48,3 +48,4 @@ static inline char32_t utf16_surrogate_pair_to_unichar(char16_t lead, char16_t t
|
||||
}
|
||||
|
||||
size_t utf8_n_codepoints(const char *str);
|
||||
size_t utf8_console_width(const char *str);
|
||||
|
Loading…
Reference in New Issue
Block a user