aboutsummaryrefslogtreecommitdiff
path: root/lib/unicode/string/u8wdth.c
blob: 7a58069dd13eaf7c01491c00e459da5b88f5c818 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "mbstring.h"
#include "unicode/prop.h"
#include "unicode/string.h"

size_t
u8wdth(struct u8view sv, int ts)
{
	rune ch;
	size_t n = 0;

	while (ucsnext(&ch, &sv) != 0) {
		if (ch == '\t')
			n += ts - n % ts;
		else {
			int w = uprop_get_wdth(ch);
			if (w > 0)
				n += w;
		}
	}

	return n;
}