OSDN Git Service

change whitespace chars
[moreemacs/moreemacs.git] / jp.sourceforge.moreemacs / src / jp / sourceforge / moreemacs / utils / CharacterUtils.java
1 package jp.sourceforge.moreemacs.utils;
2
3 import java.util.Arrays;
4 import java.util.List;
5 import java.util.Locale;
6
7 import com.ibm.icu.lang.UCharacter;
8 import com.ibm.icu.lang.UProperty;
9
10 public final class CharacterUtils {
11     private CharacterUtils() {}
12
13     private static List<String> EAST_ASIAN_LANGS =
14         Arrays.asList("ja", "vi", "kr", "zh");
15
16     public static int getWidth(int codePoint) {
17         return getWidth(codePoint, Locale.getDefault());
18     }
19
20     public static int getWidth(int codePoint, Locale locale) {
21         if(locale == null) {
22             throw new NullPointerException("locale is null");
23         }
24         int value = UCharacter.getIntPropertyValue(codePoint, 
25                 UProperty.EAST_ASIAN_WIDTH);
26         switch(value) {
27         case UCharacter.EastAsianWidth.NARROW:
28         case UCharacter.EastAsianWidth.NEUTRAL:
29         case UCharacter.EastAsianWidth.HALFWIDTH:
30             return 1;
31         case UCharacter.EastAsianWidth.FULLWIDTH:
32         case UCharacter.EastAsianWidth.WIDE:
33             return 2;
34         case UCharacter.EastAsianWidth.AMBIGUOUS:
35             if(EAST_ASIAN_LANGS.contains(locale.getLanguage())) {
36                 return 2;
37             } else {
38                 return 1;
39             }
40         default:
41             return 1;
42         }
43     }
44 }