1 package com.github.mygreen.supercsv.cellprocessor.conversion;
2
3 import com.github.mygreen.supercsv.util.ArgUtils;
4
5
6
7
8
9
10
11
12
13
14 public class CharWidthPaddingProcessor extends AbstractPaddingOperator {
15
16 @Override
17 public int count(int codePoint) {
18 if(Character.charCount(codePoint) >= 2) {
19
20 return 2;
21 }
22
23 final char c = (char)codePoint;
24 if(c <= '\u007e'
25 || c == '\u00a5'
26 || c == '\u203e'
27 || (c >= '\uff61' && c <= '\uff9f')
28 ) {
29 return 1;
30 } else {
31 return 2;
32 }
33 }
34
35 @Override
36 public int count(final String text) {
37
38 ArgUtils.notNull(text, "text");
39
40 int count=0;
41
42 final int length = text.length();
43 for(int i=0, codePoint=0; i < length; i+=Character.charCount(codePoint)) {
44 codePoint = text.codePointAt(i);
45 count += count(codePoint);
46 }
47
48 return count;
49 }
50
51
52 }