static boolean isFullWidth(int codePoint) {
        int value = UCharacter.getIntPropertyValue(codePoint, UProperty.EAST_ASIAN_WIDTH);
        switch (value) {
            case UCharacter.EastAsianWidth.NEUTRAL:
            case UCharacter.EastAsianWidth.AMBIGUOUS:
            case UCharacter.EastAsianWidth.HALFWIDTH:
            case UCharacter.EastAsianWidth.NARROW:
                return false;
            case UCharacter.EastAsianWidth.FULLWIDTH:
            case UCharacter.EastAsianWidth.WIDE:
                return true;
            default:
                throw new RuntimeException("unknown UProperty.EAST_ASIAN_WIDTH: " + value);
        }
    }
@Test
    void testCharFullWidth() {
        char[] chars = new char[] {'A', 'a', ',', '中', '，', 'こ'};
        boolean[] expected = new boolean[] {false, false, false, true, true, true};

        for (int i = 0; i < chars.length; i++) {
            assertThat(TableauStyle.isFullWidth(Character.codePointAt(chars, i)))
                    .isEqualTo(expected[i]);
        }
    }