X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Fbits%2FStringUtils.java;h=fffce206875cf663480d2041aac121f88b58d01a;hb=5ffeabccc177e9fdadb62002c6d3bf1f6ae650fa;hp=f5e2d47362a62e9c76bc0f731141a7cf43810d62;hpb=e820d5dd4e52a787e7f53f6409bb6ff334c3ef7b;p=fanfix.git diff --git a/src/jexer/bits/StringUtils.java b/src/jexer/bits/StringUtils.java index f5e2d47..fffce20 100644 --- a/src/jexer/bits/StringUtils.java +++ b/src/jexer/bits/StringUtils.java @@ -449,7 +449,8 @@ public class StringUtils { || ((ch >= 0xffe0) && (ch <= 0xffe6)) || ((ch >= 0x20000) && (ch <= 0x2fffd)) || ((ch >= 0x30000) && (ch <= 0x3fffd)) - // TODO: emoji / twemoji + // emoji + || ((ch >= 0x1f004) && (ch <= 0x1fffd)) ) ) { return 2; @@ -466,10 +467,32 @@ public class StringUtils { */ public static int width(final String str) { int n = 0; - for (int i = 0; i < str.length(); i++) { - n += width(str.charAt(i)); + for (int i = 0; i < str.length();) { + int ch = str.codePointAt(i); + n += width(ch); + i += Character.charCount(ch); } return n; } + /** + * Check if character is in the CJK range. + * + * @param ch character to check + * @return true if this character is in the CJK range + */ + public static boolean isCjk(final int ch) { + return ((ch >= 0x2e80) && (ch <= 0x9fff)); + } + + /** + * Check if character is in the emoji range. + * + * @param ch character to check + * @return true if this character is in the emoji range + */ + public static boolean isEmoji(final int ch) { + return ((ch >= 0x1f004) && (ch <= 0x1fffd)); + } + }