/** * Looks up a character in dakuten map and returns the dakuten variant if it exists. * Otherwise return the character being looked up itself * * @param c character to look up * @param map dakuten map * @param offset code point offset from c * @return mapped character or c if no mapping exists */ private char lookup(char c, char[] map, char offset) { if (!inside(c, map, offset)) { return c; } else { return map[c - offset]; } }
/** * Katakana dakuten predicate * * @param c character to check * @return true if c is a hiragana dakuten and otherwise false */ private boolean isKatakanaDakuten(char c) { return inside(c, k2d, '\u30ab') && c == lookupKatakanaDakuten(c); }
/** * Hiragana dakuten predicate * * @param c character to check * @return true if c is a hiragana dakuten and otherwise false */ private boolean isHiraganaDakuten(char c) { return inside(c, h2d, '\u304b') && c == lookupHiraganaDakuten(c); }