1 package jp.sourceforge.moreemacs.utils;
3 import java.util.Arrays;
5 import java.util.Locale;
7 import com.ibm.icu.lang.UCharacter;
8 import com.ibm.icu.lang.UProperty;
10 public final class CharacterUtils {
11 private CharacterUtils() {}
13 private static List<String> EAST_ASIAN_LANGS =
14 Arrays.asList("ja", "vi", "kr", "zh");
16 public static int getWidth(int codePoint) {
17 return getWidth(codePoint, Locale.getDefault());
20 public static int getWidth(int codePoint, Locale locale) {
22 throw new NullPointerException("locale is null");
24 int value = UCharacter.getIntPropertyValue(codePoint,
25 UProperty.EAST_ASIAN_WIDTH);
27 case UCharacter.EastAsianWidth.NARROW:
28 case UCharacter.EastAsianWidth.NEUTRAL:
29 case UCharacter.EastAsianWidth.HALFWIDTH:
31 case UCharacter.EastAsianWidth.FULLWIDTH:
32 case UCharacter.EastAsianWidth.WIDE:
34 case UCharacter.EastAsianWidth.AMBIGUOUS:
35 if(EAST_ASIAN_LANGS.contains(locale.getLanguage())) {