From e4a49d5256373111eb04ea7d31f3c89d1ec9f6ea Mon Sep 17 00:00:00 2001 From: Jules Aguillon Date: Wed, 11 Dec 2024 11:18:44 +0100 Subject: Move numpad script maps to the compose system This removes the Map_char interface, which required a lot of boilerplate to use. --- srcs/juloo.keyboard2/ComposeKey.java | 2 +- srcs/juloo.keyboard2/ComposeKeyData.java | 24 ++-- srcs/juloo.keyboard2/Config.java | 12 +- srcs/juloo.keyboard2/KeyModifier.java | 195 ++++--------------------------- 4 files changed, 45 insertions(+), 188 deletions(-) (limited to 'srcs/juloo.keyboard2') diff --git a/srcs/juloo.keyboard2/ComposeKey.java b/srcs/juloo.keyboard2/ComposeKey.java index 9575486..9a4d399 100644 --- a/srcs/juloo.keyboard2/ComposeKey.java +++ b/srcs/juloo.keyboard2/ComposeKey.java @@ -27,7 +27,7 @@ public final class ComposeKey } /** Apply the pending compose sequence to char [c]. */ - static KeyValue apply(int prev, char c) + public static KeyValue apply(int prev, char c) { char[] states = ComposeKeyData.states; char[] edges = ComposeKeyData.edges; diff --git a/srcs/juloo.keyboard2/ComposeKeyData.java b/srcs/juloo.keyboard2/ComposeKeyData.java index b51c9a3..a6a9d64 100644 --- a/srcs/juloo.keyboard2/ComposeKeyData.java +++ b/srcs/juloo.keyboard2/ComposeKeyData.java @@ -112,9 +112,11 @@ public final class ComposeKeyData "\u203a\uFFFF\u0072\u0065\u006d\u006f\u0076\u0065\u0064\u2213\u2219\u03f4\u220f\u2211\u03d0\u0263\u03f5\u03d1\u03f0\u03d6\u03f1\u03c2\u03d2\u03d5\u0465\uFFFF\ua641\u0456\u0458\u046b\u0467\u047b\u0455\uFFFF\ua64b\u044c\uFFFF\ua651\u044a\u0454\u0438\uFFFF\ua66f\uFFFF\u0068\u0061\u0074\u0061\u0066\u005f\u0073\u0065\u0067\u006f\u006c\uFFFF\u0064\u0061\u0067\u0065\u0073\u0068\uFFFF\u0068\u006f\u006c\u0061\u006d\uFFFF\u0071\u0075\u0062" + "\u0075\u0074\u0073\uFFFF\u0068\u0069\u0072\u0069\u0071\uFFFF\u0072\u0061\u0066\u0065\uFFFF\u0073\u0065\u0067\u006f\u006c\uFFFF\u0068\u0061\u0074\u0061\u0066\u005f\u0070\u0061\u0074\u0061\u0068\uFFFF\u0070\u0061\u0074\u0061\u0068\uFFFF\u0074\u0073\u0065\u0072\u0065\uFFFF\u0071\u0061\u006d\u0061\u0074\u0073\uFFFF\u0068\u0061\u0074\u0061\u0066\u005f\u0071\u0061\u006d\u0061\u0074\u0073\uFFFF\u0073\u0068\u0065\u0076\u0061\u066e\u067e" + "\u06c1\u0698\u0640\u0636\u0638\u0621\u06a4\u063a\u06a9\u06ba\u06be\u06cc\u0643\u064a\u0900\u0955\u0972\u0911\u0973\u0974\u0976\u0977\u0960\u0961\u090d\u090e\u0912\u0975\u097b\u097c\uFFFF\u0936\u094d\u091a\u0979\u0978\u097e\uFFFF\u0924\u094d\u0930\uFFFF\u0926\u094d\u0930\uFFFF\u092a\u094d\u0930\u097f\u097a\uFFFF\u0936\u094d\u0930\uFFFF\u0915\u094d\u0937\u094e\u097d\u0949\u093a\u093b\u0904\u0944\u0945\u0946\u094a\u094f\u0954\u0957" + - "\u0963\u0965\u0971\u21d4\u21d5\u21d6\u21d7\u21d8\u21d9\u22c0\u22c1\u22c2\u22c3\u222e\u22b6\u044b\u0483\u0000\u00df\u0131\u01f0\u0237\u02b0\u02b2\u02b3\u02b7\u02e1\u0a85\u0a87\u0a89\u0a8f\u0a93\u0a95\u0a97\u0a9a\u0a9c\u0a9f\u0aa1\u0aa4\u0aa6\u0aa8\u0aaa\u0aac\u0aae\u0ab2\u0ab8\u0ab9\u0abf\u0ac1\u0ac7\u0acb\u1d43\u1d47\u1d48\u1d49\u1d4d\u1d4f\u1d50\u1d52\u1d56\u1d57\u1d58\u1d5b\u1d60\u1d9c\u1da0\u1dbe\u1e97\u1e98\u1e99\u2071\u207f" + - "\u20b9\u2190\u2191\u2192\u2193\u2196\u2197\u2198\u2199\u2500\u2502\u250c\u2510\u2514\u2518\u251c\u2524\u252c\u2534\u253c\uFFFF\u004a\u030c\uFFFF\u004a\u0307\u1d34\u1d36\u1d3f\u1d42\u1d38\u0a86\u0a88\u0a8a\u0a90\u0a94\u0a96\u0a98\u0a9b\u0a9d\u0aa0\u0aa2\u0aa5\u0aa7\u0aa3\u0aab\u0aad\u0a82\u0ab3\u0ab6\u0a83\u0ac0\u0ac2\u0ac8\u0acc\u1d2c\u1d2e\u1d30\u1d31\u1d33\u1d37\u1d39\u1d3c\u1d3e\u1d40\u1d41\u2c7d\u1db2\uFFFF\ua7f2\uFFFF\ua7f3" + - "\u1d23\uFFFF\u0054\u0308\uFFFF\u0057\u030a\uFFFF\u0059\u030a\u1d35\u1d3a\u2550\u2551\u2554\u2557\u255a\u255d\u2560\u2563\u2566\u2569\u256c").toCharArray(); + "\u0963\u0965\u0971\u21d4\u21d5\u21d6\u21d7\u21d8\u21d9\u22c0\u22c1\u22c2\u22c3\u222e\u22b6\u044b\u0483\u00000123456789\u09e6\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u00000123456789\u0966\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u00000123456789\u0ae6\u0ae7" + + "\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u00000123456789\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u00000123456789\u0ce6\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u00000123456789\u06f0\u06f1\u06f2\u06f3\u06f4\u06f5\u06f6\u06f7\u06f8\u06f9\u0000" + + "\u00df\u0131\u01f0\u0237\u02b0\u02b2\u02b3\u02b7\u02e1\u0a85\u0a87\u0a89\u0a8f\u0a93\u0a95\u0a97\u0a9a\u0a9c\u0a9f\u0aa1\u0aa4\u0aa6\u0aa8\u0aaa\u0aac\u0aae\u0ab2\u0ab8\u0ab9\u0abf\u0ac1\u0ac7\u0acb\u1d43\u1d47\u1d48\u1d49\u1d4d\u1d4f\u1d50\u1d52\u1d56\u1d57\u1d58\u1d5b\u1d60\u1d9c\u1da0\u1dbe\u1e97\u1e98\u1e99\u2071\u207f\u20b9\u2190\u2191\u2192\u2193\u2196\u2197\u2198\u2199\u2500\u2502\u250c\u2510\u2514\u2518\u251c\u2524\u252c" + + "\u2534\u253c\uFFFF\u004a\u030c\uFFFF\u004a\u0307\u1d34\u1d36\u1d3f\u1d42\u1d38\u0a86\u0a88\u0a8a\u0a90\u0a94\u0a96\u0a98\u0a9b\u0a9d\u0aa0\u0aa2\u0aa5\u0aa7\u0aa3\u0aab\u0aad\u0a82\u0ab3\u0ab6\u0a83\u0ac0\u0ac2\u0ac8\u0acc\u1d2c\u1d2e\u1d30\u1d31\u1d33\u1d37\u1d39\u1d3c\u1d3e\u1d40\u1d41\u2c7d\u1db2\uFFFF\ua7f2\uFFFF\ua7f3\u1d23\uFFFF\u0054\u0308\uFFFF\u0057\u030a\uFFFF\u0059\u030a\u1d35\u1d3a\u2550\u2551\u2554\u2557\u255a\u255d" + + "\u2560\u2563\u2566\u2569\u256c").toCharArray(); public static final char[] edges = ("\u0001\u0036\u0037\u0038\u0039\u003a\u003b\u003c\u003f\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004a\u004b\u004c\u004d\u004e\u004f\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0059\u005a\u005b\\\u005d\u005e\u005f\u0060\u0061\u0062\u0063\u0064\u0067\u0068\u006b\u006e\u006f\u0072\u0075\u0078\u007b\u007e\u0081\u0001\u0001\u0001\u0001\u0001\u0003\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001" + @@ -224,9 +226,11 @@ public final class ComposeKeyData "\u0001\u0008\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0000\u0001\u0002\u0000\u0001\u0001\u0001\u0002\u0000\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0007\u0000\u0000\u0000" + "\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0005\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0007\u0000\u0000\u0000\u0000\u0000\u0000\r\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0001\u0001" + "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0004\u0000\u0000\u0000\u0001\u0001\u0001\u0004\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0001\u0001\u0004\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001" + - "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u004b\u0e75\u0e03\u1e74\u1e77\u1e7a\u1e7b\u1e7c\u1e7d\u1e7e\u1e7f\u1e80\u1e81\u1e82\u1e83\u1e84\u1e85\u1e86\u1e87\u1e88\u1e89\u1e8a\u1e8b\u1e8c\u1e8d\u1e8e\u1e8f\u1e90\u1e91\u1e92\u1e93\u1e94\u1e95\u1e96\u1e97\u1e98\u1e99\u1e9a\u1e9b\u1e9c\u1e9d\u1e9e\u1e9f\u1ea0\u1ea1\u1ea2\u1ea3\u1ea4\u1ea6\u1ea8\u1ea9\u1eac\u1eaf\u1eb2\u1eb3" + - "\u0e66\u0d15\u0d21\u0d16\u0d24\u1e1d\u1e1e\u1e1f\u1e20\u1eb4\u1eb5\u1eb6\u1eb7\u1eb8\u1eb9\u1eba\u1ebb\u1ebc\u1ebd\u1ebe\u0003\u0000\u0000\u0003\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0000\u0002\u0000" + - "\u0001\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001").toCharArray(); + "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u000b\u1e34\u1e35\u1e36\u1e37\u1e38\u1e39\u1e3a\u1e3b\u1e3c\u1e3d\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u000b\u1e49\u1e4a\u1e4b\u1e4c\u1e4d\u1e4e\u1e4f\u1e50\u1e51\u1e52\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u000b\u1e5e\u1e5f\u1e60\u1e61\u1e62\u1e63\u1e64\u1e65\u1e66\u1e67\u0001\u0001" + + "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u000b\u1e73\u1e74\u1e75\u1e76\u1e77\u1e78\u1e79\u1e7a\u1e7b\u1e7c\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u000b\u1e88\u1e89\u1e8a\u1e8b\u1e8c\u1e8d\u1e8e\u1e8f\u1e90\u1e91\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u000b\u1e9d\u1e9e\u1e9f\u1ea0\u1ea1\u1ea2\u1ea3\u1ea4\u1ea5\u1ea6\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u004b" + + "\u0e75\u0e03\u1ef2\u1ef5\u1ef8\u1ef9\u1efa\u1efb\u1efc\u1efd\u1efe\u1eff\u1f00\u1f01\u1f02\u1f03\u1f04\u1f05\u1f06\u1f07\u1f08\u1f09\u1f0a\u1f0b\u1f0c\u1f0d\u1f0e\u1f0f\u1f10\u1f11\u1f12\u1f13\u1f14\u1f15\u1f16\u1f17\u1f18\u1f19\u1f1a\u1f1b\u1f1c\u1f1d\u1f1e\u1f1f\u1f20\u1f21\u1f22\u1f24\u1f26\u1f27\u1f2a\u1f2d\u1f30\u1f31\u0e66\u0d15\u0d21\u0d16\u0d24\u1e1d\u1e1e\u1e1f\u1e20\u1f32\u1f33\u1f34\u1f35\u1f36\u1f37\u1f38\u1f39\u1f3a" + + "\u1f3b\u1f3c\u0003\u0000\u0000\u0003\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0000\u0002\u0000\u0001\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001" + + "\u0001\u0001\u0001\u0001\u0001").toCharArray(); public static final int accent_aigu = 1; public static final int accent_arrows = 130; @@ -253,5 +257,11 @@ public final class ComposeKeyData public static final int accent_trema = 1172; public static final int compose = 1270; public static final int fn = 7207; - public static final int shift = 7721; + public static final int numpad_bengali = 7721; + public static final int numpad_devanagari = 7742; + public static final int numpad_gujarati = 7763; + public static final int numpad_hindu = 7784; + public static final int numpad_kannada = 7805; + public static final int numpad_persian = 7826; + public static final int shift = 7847; } diff --git a/srcs/juloo.keyboard2/Config.java b/srcs/juloo.keyboard2/Config.java index 321ed9c..56843c4 100644 --- a/srcs/juloo.keyboard2/Config.java +++ b/srcs/juloo.keyboard2/Config.java @@ -319,7 +319,7 @@ public final class Config public KeyboardData modify_numpad(KeyboardData kw, KeyboardData main_kw) { final KeyValue action_key = action_key(); - final KeyModifier.Map_char map_digit = KeyModifier.modify_numpad_script(main_kw.numpad_script); + final int map_digit = KeyModifier.modify_numpad_script(main_kw.numpad_script); return kw.mapKeys(new KeyboardData.MapKeyValues() { public KeyValue apply(KeyValue key, boolean localized) { @@ -345,9 +345,9 @@ public final class Config char c = prev_c; if (inverse_numpad) c = inverse_numpad_char(c); - String modified = map_digit.apply(c); + KeyValue modified = ComposeKey.apply(map_digit, c); if (modified != null) // Was modified by script - return KeyValue.makeStringKey(modified); + return modified; if (prev_c != c) // Was inverted return key.withChar(c); break; @@ -359,16 +359,16 @@ public final class Config static KeyboardData.MapKeyValues numpad_script_map(String numpad_script) { - final KeyModifier.Map_char map_digit = KeyModifier.modify_numpad_script(numpad_script); + final int map_digit = KeyModifier.modify_numpad_script(numpad_script); return new KeyboardData.MapKeyValues() { public KeyValue apply(KeyValue key, boolean localized) { switch (key.getKind()) { case Char: - String modified = map_digit.apply(key.getChar()); + KeyValue modified = ComposeKey.apply(map_digit, key.getChar()); if (modified != null) - return KeyValue.makeStringKey(modified); + return modified; break; } return key; diff --git a/srcs/juloo.keyboard2/KeyModifier.java b/srcs/juloo.keyboard2/KeyModifier.java index 34590a2..3fd2dd6 100644 --- a/srcs/juloo.keyboard2/KeyModifier.java +++ b/srcs/juloo.keyboard2/KeyModifier.java @@ -81,7 +81,7 @@ public final class KeyModifier case HORN: return apply_compose(k, ComposeKeyData.accent_horn); case HOOK_ABOVE: return apply_compose(k, ComposeKeyData.accent_hook_above); case DOUBLE_GRAVE: return apply_compose(k, ComposeKeyData.accent_double_grave); - case ARROW_RIGHT: return apply_map_char(k, map_char_arrow_right); + case ARROW_RIGHT: return apply_combining_char(k, "\u20D7"); default: return k; } } @@ -104,35 +104,23 @@ public final class KeyModifier return k; } - public static Map_char modify_numpad_script(String numpad_script) + /** Return the compose state that modifies the numpad script. */ + public static int modify_numpad_script(String numpad_script) { if (numpad_script == null) - return map_char_none; + return -1; switch (numpad_script) { - case "hindu-arabic": return map_char_numpad_hindu; - case "bengali": return map_char_numpad_bengali; - case "devanagari": return map_char_numpad_devanagari; - case "persian": return map_char_numpad_persian; - case "gujarati": return map_char_numpad_gujarati; - case "kannada": return map_char_numpad_kannada; - default: return map_char_none; + case "hindu-arabic": return ComposeKeyData.numpad_hindu; + case "bengali": return ComposeKeyData.numpad_bengali; + case "devanagari": return ComposeKeyData.numpad_devanagari; + case "persian": return ComposeKeyData.numpad_persian; + case "gujarati": return ComposeKeyData.numpad_gujarati; + case "kannada": return ComposeKeyData.numpad_kannada; + default: return -1; } } - private static KeyValue apply_map_char(KeyValue k, Map_char map) - { - switch (k.getKind()) - { - case Char: - char kc = k.getChar(); - String modified = map.apply(kc); - if (modified != null) - return KeyValue.makeStringKey(modified, k.getFlags()); - } - return k; - } - /** Apply the given compose state or fallback to the dead_char. */ private static KeyValue apply_compose_or_dead_char(KeyValue k, int state, char dead_char) { @@ -172,6 +160,16 @@ public final class KeyModifier return k; } + private static KeyValue apply_combining_char(KeyValue k, String combining) + { + switch (k.getKind()) + { + case Char: + return KeyValue.makeStringKey(k.getChar() + combining, k.getFlags()); + } + return k; + } + private static KeyValue apply_shift(KeyValue k) { if (_modmap != null) @@ -346,157 +344,6 @@ public final class KeyModifier return shifted; } - public static abstract class Map_char - { - /** Modify a char or return [null] if the modifier do not apply. Return a - [String] that can contains combining diacritics. */ - public abstract String apply(char c); - } - - private static final Map_char map_char_none = - new Map_char() { - public String apply(char _c) { return null; } - }; - - private static final Map_char map_char_arrow_right = - new Map_char() { - public String apply(char c) - { - switch (c) - { - default: return c + "\u20D7"; - } - } - }; - - // Used with Arabic despite the name; called "Hindi numerals" in Arabic - // map_char_numpad_devanagari is used in Hindi - private static final Map_char map_char_numpad_hindu = - new Map_char() { - public String apply(char c) - { - switch (c) - { - case '0': return "٠"; - case '1': return "١"; - case '2': return "٢"; - case '3': return "٣"; - case '4': return "٤"; - case '5': return "٥"; - case '6': return "٦"; - case '7': return "٧"; - case '8': return "٨"; - case '9': return "٩"; - default: return null; - } - } - }; - - private static final Map_char map_char_numpad_bengali = - new Map_char() { - public String apply(char c) - { - switch (c) - { - case '0': return "০"; - case '1': return "১"; - case '2': return "২"; - case '3': return "৩"; - case '4': return "৪"; - case '5': return "৫"; - case '6': return "৬"; - case '7': return "৭"; - case '8': return "৮"; - case '9': return "৯"; - default: return null; - } - } - }; - - private static final Map_char map_char_numpad_devanagari = - new Map_char() { - public String apply(char c) - { - switch (c) - { - case '0': return "०"; - case '1': return "१"; - case '2': return "२"; - case '3': return "३"; - case '4': return "४"; - case '5': return "५"; - case '6': return "६"; - case '7': return "७"; - case '8': return "८"; - case '9': return "९"; - default: return null; - } - } - }; - - private static final Map_char map_char_numpad_persian = - new Map_char() { - public String apply(char c) - { - switch (c) - { - case '0': return "۰"; - case '1': return "۱"; - case '2': return "۲"; - case '3': return "۳"; - case '4': return "۴"; - case '5': return "۵"; - case '6': return "۶"; - case '7': return "۷"; - case '8': return "۸"; - case '9': return "۹"; - default: return null; - } - } - }; - - private static final Map_char map_char_numpad_gujarati = - new Map_char() { - public String apply(char c) - { - switch (c) - { - case '0': return "૦"; - case '1': return "૧"; - case '2': return "૨"; - case '3': return "૩"; - case '4': return "૪"; - case '5': return "૫"; - case '6': return "૬"; - case '7': return "૭"; - case '8': return "૮"; - case '9': return "૯"; - default: return null; - } - } - }; - - private static final Map_char map_char_numpad_kannada = - new Map_char() { - public String apply(char c) - { - switch (c) - { - case '0': return "೦"; - case '1': return "೧"; - case '2': return "೨"; - case '3': return "೩"; - case '4': return "೪"; - case '5': return "೫"; - case '6': return "೬"; - case '7': return "೭"; - case '8': return "೮"; - case '9': return "೯"; - default: return null; - } - } - }; - /** Compose the precomposed initial with the medial [kv]. */ private static KeyValue combine_hangul_initial(KeyValue kv, int precomposed) { -- cgit v1.2.3