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

ptrdiff_t
u8wdth(u8view_t sv, ptrdiff_t n, int ts)
{
	rune ch;

	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;
}