diff --git a/src/com/fsck/k9/helper/HtmlConverter.java b/src/com/fsck/k9/helper/HtmlConverter.java
index b9e430812..975c767f5 100644
--- a/src/com/fsck/k9/helper/HtmlConverter.java
+++ b/src/com/fsck/k9/helper/HtmlConverter.java
@@ -225,6 +225,879 @@ public class HtmlConverter
return text;
}
+ /*
+ * Lightweight method to check whether the message contains emoji or not.
+ * Useful to avoid calling the heavyweight convertEmoji2Img method.
+ * We don't use String.codePointAt here for performance reasons.
+ */
+ private static boolean hasEmoji(String html)
+ {
+ for (int i = 0; i < html.length(); ++i)
+ {
+ char c = html.charAt(i);
+ if (c >= 0xDBB8 && c < 0xDBBC)
+ return true;
+ }
+ return false;
+ }
+
+ public static String convertEmoji2Img(String html)
+ {
+ if (!hasEmoji(html))
+ {
+ return html;
+
+ }
+ StringBuilder buff = new StringBuilder(html.length() + 512);
+ for (int i = 0; i < html.length(); i = html.offsetByCodePoints(i, 1))
+ {
+ int codePoint = html.codePointAt(i);
+ String emoji = getEmojiForCodePoint(codePoint);
+ if (emoji != null)
+ buff.append("");
+ else
+ buff.appendCodePoint(codePoint);
+
+ }
+ return buff.toString();
+ }
+ private static String getEmojiForCodePoint(int codePoint)
+ {
+ // Derived from http://code.google.com/p/emoji4unicode/source/browse/trunk/data/emoji4unicode.xml
+ // XXX: This doesn't cover all the characters. More emoticons are wanted.
+ switch (codePoint)
+ {
+ case 0xFE000:
+ return "sun";
+ case 0xFE001:
+ return "cloud";
+ case 0xFE002:
+ return "rain";
+ case 0xFE003:
+ return "snow";
+ case 0xFE004:
+ return "thunder";
+ case 0xFE005:
+ return "typhoon";
+ case 0xFE006:
+ return "mist";
+ case 0xFE007:
+ return "sprinkle";
+ case 0xFE008:
+ return "night";
+ case 0xFE009:
+ return "sun";
+ case 0xFE00A:
+ return "sun";
+ case 0xFE00C:
+ return "sun";
+ case 0xFE010:
+ return "night";
+ case 0xFE011:
+ return "newmoon";
+ case 0xFE012:
+ return "moon1";
+ case 0xFE013:
+ return "moon2";
+ case 0xFE014:
+ return "moon3";
+ case 0xFE015:
+ return "fullmoon";
+ case 0xFE016:
+ return "moon2";
+ case 0xFE018:
+ return "soon";
+ case 0xFE019:
+ return "on";
+ case 0xFE01A:
+ return "end";
+ case 0xFE01B:
+ return "sandclock";
+ case 0xFE01C:
+ return "sandclock";
+ case 0xFE01D:
+ return "watch";
+ case 0xFE01E:
+ return "clock";
+ case 0xFE01F:
+ return "clock";
+ case 0xFE020:
+ return "clock";
+ case 0xFE021:
+ return "clock";
+ case 0xFE022:
+ return "clock";
+ case 0xFE023:
+ return "clock";
+ case 0xFE024:
+ return "clock";
+ case 0xFE025:
+ return "clock";
+ case 0xFE026:
+ return "clock";
+ case 0xFE027:
+ return "clock";
+ case 0xFE028:
+ return "clock";
+ case 0xFE029:
+ return "clock";
+ case 0xFE02A:
+ return "clock";
+ case 0xFE02B:
+ return "aries";
+ case 0xFE02C:
+ return "taurus";
+ case 0xFE02D:
+ return "gemini";
+ case 0xFE02E:
+ return "cancer";
+ case 0xFE02F:
+ return "leo";
+ case 0xFE030:
+ return "virgo";
+ case 0xFE031:
+ return "libra";
+ case 0xFE032:
+ return "scorpius";
+ case 0xFE033:
+ return "sagittarius";
+ case 0xFE034:
+ return "capricornus";
+ case 0xFE035:
+ return "aquarius";
+ case 0xFE036:
+ return "pisces";
+ case 0xFE038:
+ return "wave";
+ case 0xFE03B:
+ return "night";
+ case 0xFE03C:
+ return "clover";
+ case 0xFE03D:
+ return "tulip";
+ case 0xFE03E:
+ return "bud";
+ case 0xFE03F:
+ return "maple";
+ case 0xFE040:
+ return "cherryblossom";
+ case 0xFE042:
+ return "maple";
+ case 0xFE04E:
+ return "clover";
+ case 0xFE04F:
+ return "cherry";
+ case 0xFE050:
+ return "banana";
+ case 0xFE051:
+ return "apple";
+ case 0xFE05B:
+ return "apple";
+ case 0xFE190:
+ return "eye";
+ case 0xFE191:
+ return "ear";
+ case 0xFE193:
+ return "kissmark";
+ case 0xFE194:
+ return "bleah";
+ case 0xFE195:
+ return "rouge";
+ case 0xFE198:
+ return "hairsalon";
+ case 0xFE19A:
+ return "shadow";
+ case 0xFE19B:
+ return "happy01";
+ case 0xFE19C:
+ return "happy01";
+ case 0xFE19D:
+ return "happy01";
+ case 0xFE19E:
+ return "happy01";
+ case 0xFE1B7:
+ return "dog";
+ case 0xFE1B8:
+ return "cat";
+ case 0xFE1B9:
+ return "snail";
+ case 0xFE1BA:
+ return "chick";
+ case 0xFE1BB:
+ return "chick";
+ case 0xFE1BC:
+ return "penguin";
+ case 0xFE1BD:
+ return "fish";
+ case 0xFE1BE:
+ return "horse";
+ case 0xFE1BF:
+ return "pig";
+ case 0xFE1C8:
+ return "chick";
+ case 0xFE1C9:
+ return "fish";
+ case 0xFE1CF:
+ return "aries";
+ case 0xFE1D0:
+ return "dog";
+ case 0xFE1D8:
+ return "dog";
+ case 0xFE1D9:
+ return "fish";
+ case 0xFE1DB:
+ return "foot";
+ case 0xFE1DD:
+ return "chick";
+ case 0xFE1E0:
+ return "pig";
+ case 0xFE1E3:
+ return "cancer";
+ case 0xFE320:
+ return "angry";
+ case 0xFE321:
+ return "sad";
+ case 0xFE322:
+ return "wobbly";
+ case 0xFE323:
+ return "despair";
+ case 0xFE324:
+ return "wobbly";
+ case 0xFE325:
+ return "coldsweats02";
+ case 0xFE326:
+ return "gawk";
+ case 0xFE327:
+ return "lovely";
+ case 0xFE328:
+ return "smile";
+ case 0xFE329:
+ return "bleah";
+ case 0xFE32A:
+ return "bleah";
+ case 0xFE32B:
+ return "delicious";
+ case 0xFE32C:
+ return "lovely";
+ case 0xFE32D:
+ return "lovely";
+ case 0xFE32F:
+ return "happy02";
+ case 0xFE330:
+ return "happy01";
+ case 0xFE331:
+ return "coldsweats01";
+ case 0xFE332:
+ return "happy02";
+ case 0xFE333:
+ return "smile";
+ case 0xFE334:
+ return "happy02";
+ case 0xFE335:
+ return "delicious";
+ case 0xFE336:
+ return "happy01";
+ case 0xFE337:
+ return "happy01";
+ case 0xFE338:
+ return "coldsweats01";
+ case 0xFE339:
+ return "weep";
+ case 0xFE33A:
+ return "crying";
+ case 0xFE33B:
+ return "shock";
+ case 0xFE33C:
+ return "bearing";
+ case 0xFE33D:
+ return "pout";
+ case 0xFE33E:
+ return "confident";
+ case 0xFE33F:
+ return "sad";
+ case 0xFE340:
+ return "think";
+ case 0xFE341:
+ return "shock";
+ case 0xFE342:
+ return "sleepy";
+ case 0xFE343:
+ return "catface";
+ case 0xFE344:
+ return "coldsweats02";
+ case 0xFE345:
+ return "coldsweats02";
+ case 0xFE346:
+ return "bearing";
+ case 0xFE347:
+ return "wink";
+ case 0xFE348:
+ return "happy01";
+ case 0xFE349:
+ return "smile";
+ case 0xFE34A:
+ return "happy02";
+ case 0xFE34B:
+ return "lovely";
+ case 0xFE34C:
+ return "lovely";
+ case 0xFE34D:
+ return "weep";
+ case 0xFE34E:
+ return "pout";
+ case 0xFE34F:
+ return "smile";
+ case 0xFE350:
+ return "sad";
+ case 0xFE351:
+ return "ng";
+ case 0xFE352:
+ return "ok";
+ case 0xFE357:
+ return "paper";
+ case 0xFE359:
+ return "sad";
+ case 0xFE35A:
+ return "angry";
+ case 0xFE4B0:
+ return "house";
+ case 0xFE4B1:
+ return "house";
+ case 0xFE4B2:
+ return "building";
+ case 0xFE4B3:
+ return "postoffice";
+ case 0xFE4B4:
+ return "hospital";
+ case 0xFE4B5:
+ return "bank";
+ case 0xFE4B6:
+ return "atm";
+ case 0xFE4B7:
+ return "hotel";
+ case 0xFE4B9:
+ return "24hours";
+ case 0xFE4BA:
+ return "school";
+ case 0xFE4C1:
+ return "ship";
+ case 0xFE4C2:
+ return "bottle";
+ case 0xFE4C3:
+ return "fuji";
+ case 0xFE4C9:
+ return "wrench";
+ case 0xFE4CC:
+ return "shoe";
+ case 0xFE4CD:
+ return "shoe";
+ case 0xFE4CE:
+ return "eyeglass";
+ case 0xFE4CF:
+ return "t-shirt";
+ case 0xFE4D0:
+ return "denim";
+ case 0xFE4D1:
+ return "crown";
+ case 0xFE4D2:
+ return "crown";
+ case 0xFE4D6:
+ return "boutique";
+ case 0xFE4D7:
+ return "boutique";
+ case 0xFE4DB:
+ return "t-shirt";
+ case 0xFE4DC:
+ return "moneybag";
+ case 0xFE4DD:
+ return "dollar";
+ case 0xFE4E0:
+ return "dollar";
+ case 0xFE4E2:
+ return "yen";
+ case 0xFE4E3:
+ return "dollar";
+ case 0xFE4EF:
+ return "camera";
+ case 0xFE4F0:
+ return "bag";
+ case 0xFE4F1:
+ return "pouch";
+ case 0xFE4F2:
+ return "bell";
+ case 0xFE4F3:
+ return "door";
+ case 0xFE4F9:
+ return "movie";
+ case 0xFE4FB:
+ return "flair";
+ case 0xFE4FD:
+ return "sign05";
+ case 0xFE4FF:
+ return "book";
+ case 0xFE500:
+ return "book";
+ case 0xFE501:
+ return "book";
+ case 0xFE502:
+ return "book";
+ case 0xFE503:
+ return "book";
+ case 0xFE505:
+ return "spa";
+ case 0xFE506:
+ return "toilet";
+ case 0xFE507:
+ return "toilet";
+ case 0xFE508:
+ return "toilet";
+ case 0xFE50F:
+ return "ribbon";
+ case 0xFE510:
+ return "present";
+ case 0xFE511:
+ return "birthday";
+ case 0xFE512:
+ return "xmas";
+ case 0xFE522:
+ return "pocketbell";
+ case 0xFE523:
+ return "telephone";
+ case 0xFE524:
+ return "telephone";
+ case 0xFE525:
+ return "mobilephone";
+ case 0xFE526:
+ return "phoneto";
+ case 0xFE527:
+ return "memo";
+ case 0xFE528:
+ return "faxto";
+ case 0xFE529:
+ return "mail";
+ case 0xFE52A:
+ return "mailto";
+ case 0xFE52B:
+ return "mailto";
+ case 0xFE52C:
+ return "postoffice";
+ case 0xFE52D:
+ return "postoffice";
+ case 0xFE52E:
+ return "postoffice";
+ case 0xFE535:
+ return "present";
+ case 0xFE536:
+ return "pen";
+ case 0xFE537:
+ return "chair";
+ case 0xFE538:
+ return "pc";
+ case 0xFE539:
+ return "pencil";
+ case 0xFE53A:
+ return "clip";
+ case 0xFE53B:
+ return "bag";
+ case 0xFE53E:
+ return "hairsalon";
+ case 0xFE540:
+ return "memo";
+ case 0xFE541:
+ return "memo";
+ case 0xFE545:
+ return "book";
+ case 0xFE546:
+ return "book";
+ case 0xFE547:
+ return "book";
+ case 0xFE548:
+ return "memo";
+ case 0xFE54D:
+ return "book";
+ case 0xFE54F:
+ return "book";
+ case 0xFE552:
+ return "memo";
+ case 0xFE553:
+ return "foot";
+ case 0xFE7D0:
+ return "sports";
+ case 0xFE7D1:
+ return "baseball";
+ case 0xFE7D2:
+ return "golf";
+ case 0xFE7D3:
+ return "tennis";
+ case 0xFE7D4:
+ return "soccer";
+ case 0xFE7D5:
+ return "ski";
+ case 0xFE7D6:
+ return "basketball";
+ case 0xFE7D7:
+ return "motorsports";
+ case 0xFE7D8:
+ return "snowboard";
+ case 0xFE7D9:
+ return "run";
+ case 0xFE7DA:
+ return "snowboard";
+ case 0xFE7DC:
+ return "horse";
+ case 0xFE7DF:
+ return "train";
+ case 0xFE7E0:
+ return "subway";
+ case 0xFE7E1:
+ return "subway";
+ case 0xFE7E2:
+ return "bullettrain";
+ case 0xFE7E3:
+ return "bullettrain";
+ case 0xFE7E4:
+ return "car";
+ case 0xFE7E5:
+ return "rvcar";
+ case 0xFE7E6:
+ return "bus";
+ case 0xFE7E8:
+ return "ship";
+ case 0xFE7E9:
+ return "airplane";
+ case 0xFE7EA:
+ return "yacht";
+ case 0xFE7EB:
+ return "bicycle";
+ case 0xFE7EE:
+ return "yacht";
+ case 0xFE7EF:
+ return "car";
+ case 0xFE7F0:
+ return "run";
+ case 0xFE7F5:
+ return "gasstation";
+ case 0xFE7F6:
+ return "parking";
+ case 0xFE7F7:
+ return "signaler";
+ case 0xFE7FA:
+ return "spa";
+ case 0xFE7FC:
+ return "carouselpony";
+ case 0xFE7FF:
+ return "fish";
+ case 0xFE800:
+ return "karaoke";
+ case 0xFE801:
+ return "movie";
+ case 0xFE802:
+ return "movie";
+ case 0xFE803:
+ return "music";
+ case 0xFE804:
+ return "art";
+ case 0xFE805:
+ return "drama";
+ case 0xFE806:
+ return "event";
+ case 0xFE807:
+ return "ticket";
+ case 0xFE808:
+ return "slate";
+ case 0xFE809:
+ return "drama";
+ case 0xFE80A:
+ return "game";
+ case 0xFE813:
+ return "note";
+ case 0xFE814:
+ return "notes";
+ case 0xFE81A:
+ return "notes";
+ case 0xFE81C:
+ return "tv";
+ case 0xFE81D:
+ return "cd";
+ case 0xFE81E:
+ return "cd";
+ case 0xFE823:
+ return "kissmark";
+ case 0xFE824:
+ return "loveletter";
+ case 0xFE825:
+ return "ring";
+ case 0xFE826:
+ return "ring";
+ case 0xFE827:
+ return "kissmark";
+ case 0xFE829:
+ return "heart02";
+ case 0xFE82B:
+ return "freedial";
+ case 0xFE82C:
+ return "sharp";
+ case 0xFE82D:
+ return "mobaq";
+ case 0xFE82E:
+ return "one";
+ case 0xFE82F:
+ return "two";
+ case 0xFE830:
+ return "three";
+ case 0xFE831:
+ return "four";
+ case 0xFE832:
+ return "five";
+ case 0xFE833:
+ return "six";
+ case 0xFE834:
+ return "seven";
+ case 0xFE835:
+ return "eight";
+ case 0xFE836:
+ return "nine";
+ case 0xFE837:
+ return "zero";
+ case 0xFE960:
+ return "fastfood";
+ case 0xFE961:
+ return "riceball";
+ case 0xFE962:
+ return "cake";
+ case 0xFE963:
+ return "noodle";
+ case 0xFE964:
+ return "bread";
+ case 0xFE96A:
+ return "noodle";
+ case 0xFE973:
+ return "typhoon";
+ case 0xFE980:
+ return "restaurant";
+ case 0xFE981:
+ return "cafe";
+ case 0xFE982:
+ return "bar";
+ case 0xFE983:
+ return "beer";
+ case 0xFE984:
+ return "japanesetea";
+ case 0xFE985:
+ return "bottle";
+ case 0xFE986:
+ return "wine";
+ case 0xFE987:
+ return "beer";
+ case 0xFE988:
+ return "bar";
+ case 0xFEAF0:
+ return "upwardright";
+ case 0xFEAF1:
+ return "downwardright";
+ case 0xFEAF2:
+ return "upwardleft";
+ case 0xFEAF3:
+ return "downwardleft";
+ case 0xFEAF4:
+ return "up";
+ case 0xFEAF5:
+ return "down";
+ case 0xFEAF6:
+ return "leftright";
+ case 0xFEAF7:
+ return "updown";
+ case 0xFEB04:
+ return "sign01";
+ case 0xFEB05:
+ return "sign02";
+ case 0xFEB06:
+ return "sign03";
+ case 0xFEB07:
+ return "sign04";
+ case 0xFEB08:
+ return "sign05";
+ case 0xFEB0B:
+ return "sign01";
+ case 0xFEB0C:
+ return "heart01";
+ case 0xFEB0D:
+ return "heart02";
+ case 0xFEB0E:
+ return "heart03";
+ case 0xFEB0F:
+ return "heart04";
+ case 0xFEB10:
+ return "heart01";
+ case 0xFEB11:
+ return "heart02";
+ case 0xFEB12:
+ return "heart01";
+ case 0xFEB13:
+ return "heart01";
+ case 0xFEB14:
+ return "heart01";
+ case 0xFEB15:
+ return "heart01";
+ case 0xFEB16:
+ return "heart01";
+ case 0xFEB17:
+ return "heart01";
+ case 0xFEB18:
+ return "heart02";
+ case 0xFEB19:
+ return "cute";
+ case 0xFEB1A:
+ return "heart";
+ case 0xFEB1B:
+ return "spade";
+ case 0xFEB1C:
+ return "diamond";
+ case 0xFEB1D:
+ return "club";
+ case 0xFEB1E:
+ return "smoking";
+ case 0xFEB1F:
+ return "nosmoking";
+ case 0xFEB20:
+ return "wheelchair";
+ case 0xFEB21:
+ return "free";
+ case 0xFEB22:
+ return "flag";
+ case 0xFEB23:
+ return "danger";
+ case 0xFEB26:
+ return "ng";
+ case 0xFEB27:
+ return "ok";
+ case 0xFEB28:
+ return "ng";
+ case 0xFEB29:
+ return "copyright";
+ case 0xFEB2A:
+ return "tm";
+ case 0xFEB2B:
+ return "secret";
+ case 0xFEB2C:
+ return "recycle";
+ case 0xFEB2D:
+ return "r-mark";
+ case 0xFEB2E:
+ return "ban";
+ case 0xFEB2F:
+ return "empty";
+ case 0xFEB30:
+ return "pass";
+ case 0xFEB31:
+ return "full";
+ case 0xFEB36:
+ return "new";
+ case 0xFEB44:
+ return "fullmoon";
+ case 0xFEB48:
+ return "ban";
+ case 0xFEB55:
+ return "cute";
+ case 0xFEB56:
+ return "flair";
+ case 0xFEB57:
+ return "annoy";
+ case 0xFEB58:
+ return "bomb";
+ case 0xFEB59:
+ return "sleepy";
+ case 0xFEB5A:
+ return "impact";
+ case 0xFEB5B:
+ return "sweat01";
+ case 0xFEB5C:
+ return "sweat02";
+ case 0xFEB5D:
+ return "dash";
+ case 0xFEB5F:
+ return "sad";
+ case 0xFEB60:
+ return "shine";
+ case 0xFEB61:
+ return "cute";
+ case 0xFEB62:
+ return "cute";
+ case 0xFEB63:
+ return "newmoon";
+ case 0xFEB64:
+ return "newmoon";
+ case 0xFEB65:
+ return "newmoon";
+ case 0xFEB66:
+ return "newmoon";
+ case 0xFEB67:
+ return "newmoon";
+ case 0xFEB77:
+ return "shine";
+ case 0xFEB81:
+ return "id";
+ case 0xFEB82:
+ return "key";
+ case 0xFEB83:
+ return "enter";
+ case 0xFEB84:
+ return "clear";
+ case 0xFEB85:
+ return "search";
+ case 0xFEB86:
+ return "key";
+ case 0xFEB87:
+ return "key";
+ case 0xFEB8A:
+ return "key";
+ case 0xFEB8D:
+ return "search";
+ case 0xFEB90:
+ return "key";
+ case 0xFEB91:
+ return "recycle";
+ case 0xFEB92:
+ return "mail";
+ case 0xFEB93:
+ return "rock";
+ case 0xFEB94:
+ return "scissors";
+ case 0xFEB95:
+ return "paper";
+ case 0xFEB96:
+ return "punch";
+ case 0xFEB97:
+ return "good";
+ case 0xFEB9D:
+ return "paper";
+ case 0xFEB9F:
+ return "ok";
+ case 0xFEBA0:
+ return "down";
+ case 0xFEBA1:
+ return "paper";
+ case 0xFEE10:
+ return "info01";
+ case 0xFEE11:
+ return "info02";
+ case 0xFEE12:
+ return "by-d";
+ case 0xFEE13:
+ return "d-point";
+ case 0xFEE14:
+ return "appli01";
+ case 0xFEE15:
+ return "appli02";
+ case 0xFEE1C:
+ return "movie";
+ default:
+ return null;
+ }
+ }
+
+
+
private static String htmlifyMessageHeader()
{
if (K9.messageViewFixedWidthFont())
diff --git a/src/com/fsck/k9/mail/store/LocalStore.java b/src/com/fsck/k9/mail/store/LocalStore.java
index 5ee82cfb4..a22631469 100644
--- a/src/com/fsck/k9/mail/store/LocalStore.java
+++ b/src/com/fsck/k9/mail/store/LocalStore.java
@@ -3218,877 +3218,11 @@ public class LocalStore extends Store implements Serializable
html = HtmlConverter.textToHtml(text);
}
- if (hasEmoji(html))
- html = convertEmoji2Img(html);
+ html = HtmlConverter.convertEmoji2Img(html);
return html;
}
- /*
- * Lightweight method to check whether the message contains emoji or not.
- * Useful to avoid calling the heavyweight convertEmoji2Img method.
- * We don't use String.codePointAt here for performance reasons.
- */
- private boolean hasEmoji(String html)
- {
- for (int i = 0; i < html.length(); ++i)
- {
- char c = html.charAt(i);
- if (c >= 0xDBB8 && c < 0xDBBC)
- return true;
- }
- return false;
- }
-
- public String convertEmoji2Img(String html)
- {
- StringBuilder buff = new StringBuilder(html.length() + 512);
- for (int i = 0; i < html.length(); i = html.offsetByCodePoints(i, 1))
- {
- int codePoint = html.codePointAt(i);
- String emoji = getEmojiForCodePoint(codePoint);
- if (emoji != null)
- buff.append("");
- else
- buff.appendCodePoint(codePoint);
-
- }
- return buff.toString();
- }
- private String getEmojiForCodePoint(int codePoint)
- {
- // Derived from http://code.google.com/p/emoji4unicode/source/browse/trunk/data/emoji4unicode.xml
- // XXX: This doesn't cover all the characters. More emoticons are wanted.
- switch (codePoint)
- {
- case 0xFE000:
- return "sun";
- case 0xFE001:
- return "cloud";
- case 0xFE002:
- return "rain";
- case 0xFE003:
- return "snow";
- case 0xFE004:
- return "thunder";
- case 0xFE005:
- return "typhoon";
- case 0xFE006:
- return "mist";
- case 0xFE007:
- return "sprinkle";
- case 0xFE008:
- return "night";
- case 0xFE009:
- return "sun";
- case 0xFE00A:
- return "sun";
- case 0xFE00C:
- return "sun";
- case 0xFE010:
- return "night";
- case 0xFE011:
- return "newmoon";
- case 0xFE012:
- return "moon1";
- case 0xFE013:
- return "moon2";
- case 0xFE014:
- return "moon3";
- case 0xFE015:
- return "fullmoon";
- case 0xFE016:
- return "moon2";
- case 0xFE018:
- return "soon";
- case 0xFE019:
- return "on";
- case 0xFE01A:
- return "end";
- case 0xFE01B:
- return "sandclock";
- case 0xFE01C:
- return "sandclock";
- case 0xFE01D:
- return "watch";
- case 0xFE01E:
- return "clock";
- case 0xFE01F:
- return "clock";
- case 0xFE020:
- return "clock";
- case 0xFE021:
- return "clock";
- case 0xFE022:
- return "clock";
- case 0xFE023:
- return "clock";
- case 0xFE024:
- return "clock";
- case 0xFE025:
- return "clock";
- case 0xFE026:
- return "clock";
- case 0xFE027:
- return "clock";
- case 0xFE028:
- return "clock";
- case 0xFE029:
- return "clock";
- case 0xFE02A:
- return "clock";
- case 0xFE02B:
- return "aries";
- case 0xFE02C:
- return "taurus";
- case 0xFE02D:
- return "gemini";
- case 0xFE02E:
- return "cancer";
- case 0xFE02F:
- return "leo";
- case 0xFE030:
- return "virgo";
- case 0xFE031:
- return "libra";
- case 0xFE032:
- return "scorpius";
- case 0xFE033:
- return "sagittarius";
- case 0xFE034:
- return "capricornus";
- case 0xFE035:
- return "aquarius";
- case 0xFE036:
- return "pisces";
- case 0xFE038:
- return "wave";
- case 0xFE03B:
- return "night";
- case 0xFE03C:
- return "clover";
- case 0xFE03D:
- return "tulip";
- case 0xFE03E:
- return "bud";
- case 0xFE03F:
- return "maple";
- case 0xFE040:
- return "cherryblossom";
- case 0xFE042:
- return "maple";
- case 0xFE04E:
- return "clover";
- case 0xFE04F:
- return "cherry";
- case 0xFE050:
- return "banana";
- case 0xFE051:
- return "apple";
- case 0xFE05B:
- return "apple";
- case 0xFE190:
- return "eye";
- case 0xFE191:
- return "ear";
- case 0xFE193:
- return "kissmark";
- case 0xFE194:
- return "bleah";
- case 0xFE195:
- return "rouge";
- case 0xFE198:
- return "hairsalon";
- case 0xFE19A:
- return "shadow";
- case 0xFE19B:
- return "happy01";
- case 0xFE19C:
- return "happy01";
- case 0xFE19D:
- return "happy01";
- case 0xFE19E:
- return "happy01";
- case 0xFE1B7:
- return "dog";
- case 0xFE1B8:
- return "cat";
- case 0xFE1B9:
- return "snail";
- case 0xFE1BA:
- return "chick";
- case 0xFE1BB:
- return "chick";
- case 0xFE1BC:
- return "penguin";
- case 0xFE1BD:
- return "fish";
- case 0xFE1BE:
- return "horse";
- case 0xFE1BF:
- return "pig";
- case 0xFE1C8:
- return "chick";
- case 0xFE1C9:
- return "fish";
- case 0xFE1CF:
- return "aries";
- case 0xFE1D0:
- return "dog";
- case 0xFE1D8:
- return "dog";
- case 0xFE1D9:
- return "fish";
- case 0xFE1DB:
- return "foot";
- case 0xFE1DD:
- return "chick";
- case 0xFE1E0:
- return "pig";
- case 0xFE1E3:
- return "cancer";
- case 0xFE320:
- return "angry";
- case 0xFE321:
- return "sad";
- case 0xFE322:
- return "wobbly";
- case 0xFE323:
- return "despair";
- case 0xFE324:
- return "wobbly";
- case 0xFE325:
- return "coldsweats02";
- case 0xFE326:
- return "gawk";
- case 0xFE327:
- return "lovely";
- case 0xFE328:
- return "smile";
- case 0xFE329:
- return "bleah";
- case 0xFE32A:
- return "bleah";
- case 0xFE32B:
- return "delicious";
- case 0xFE32C:
- return "lovely";
- case 0xFE32D:
- return "lovely";
- case 0xFE32F:
- return "happy02";
- case 0xFE330:
- return "happy01";
- case 0xFE331:
- return "coldsweats01";
- case 0xFE332:
- return "happy02";
- case 0xFE333:
- return "smile";
- case 0xFE334:
- return "happy02";
- case 0xFE335:
- return "delicious";
- case 0xFE336:
- return "happy01";
- case 0xFE337:
- return "happy01";
- case 0xFE338:
- return "coldsweats01";
- case 0xFE339:
- return "weep";
- case 0xFE33A:
- return "crying";
- case 0xFE33B:
- return "shock";
- case 0xFE33C:
- return "bearing";
- case 0xFE33D:
- return "pout";
- case 0xFE33E:
- return "confident";
- case 0xFE33F:
- return "sad";
- case 0xFE340:
- return "think";
- case 0xFE341:
- return "shock";
- case 0xFE342:
- return "sleepy";
- case 0xFE343:
- return "catface";
- case 0xFE344:
- return "coldsweats02";
- case 0xFE345:
- return "coldsweats02";
- case 0xFE346:
- return "bearing";
- case 0xFE347:
- return "wink";
- case 0xFE348:
- return "happy01";
- case 0xFE349:
- return "smile";
- case 0xFE34A:
- return "happy02";
- case 0xFE34B:
- return "lovely";
- case 0xFE34C:
- return "lovely";
- case 0xFE34D:
- return "weep";
- case 0xFE34E:
- return "pout";
- case 0xFE34F:
- return "smile";
- case 0xFE350:
- return "sad";
- case 0xFE351:
- return "ng";
- case 0xFE352:
- return "ok";
- case 0xFE357:
- return "paper";
- case 0xFE359:
- return "sad";
- case 0xFE35A:
- return "angry";
- case 0xFE4B0:
- return "house";
- case 0xFE4B1:
- return "house";
- case 0xFE4B2:
- return "building";
- case 0xFE4B3:
- return "postoffice";
- case 0xFE4B4:
- return "hospital";
- case 0xFE4B5:
- return "bank";
- case 0xFE4B6:
- return "atm";
- case 0xFE4B7:
- return "hotel";
- case 0xFE4B9:
- return "24hours";
- case 0xFE4BA:
- return "school";
- case 0xFE4C1:
- return "ship";
- case 0xFE4C2:
- return "bottle";
- case 0xFE4C3:
- return "fuji";
- case 0xFE4C9:
- return "wrench";
- case 0xFE4CC:
- return "shoe";
- case 0xFE4CD:
- return "shoe";
- case 0xFE4CE:
- return "eyeglass";
- case 0xFE4CF:
- return "t-shirt";
- case 0xFE4D0:
- return "denim";
- case 0xFE4D1:
- return "crown";
- case 0xFE4D2:
- return "crown";
- case 0xFE4D6:
- return "boutique";
- case 0xFE4D7:
- return "boutique";
- case 0xFE4DB:
- return "t-shirt";
- case 0xFE4DC:
- return "moneybag";
- case 0xFE4DD:
- return "dollar";
- case 0xFE4E0:
- return "dollar";
- case 0xFE4E2:
- return "yen";
- case 0xFE4E3:
- return "dollar";
- case 0xFE4EF:
- return "camera";
- case 0xFE4F0:
- return "bag";
- case 0xFE4F1:
- return "pouch";
- case 0xFE4F2:
- return "bell";
- case 0xFE4F3:
- return "door";
- case 0xFE4F9:
- return "movie";
- case 0xFE4FB:
- return "flair";
- case 0xFE4FD:
- return "sign05";
- case 0xFE4FF:
- return "book";
- case 0xFE500:
- return "book";
- case 0xFE501:
- return "book";
- case 0xFE502:
- return "book";
- case 0xFE503:
- return "book";
- case 0xFE505:
- return "spa";
- case 0xFE506:
- return "toilet";
- case 0xFE507:
- return "toilet";
- case 0xFE508:
- return "toilet";
- case 0xFE50F:
- return "ribbon";
- case 0xFE510:
- return "present";
- case 0xFE511:
- return "birthday";
- case 0xFE512:
- return "xmas";
- case 0xFE522:
- return "pocketbell";
- case 0xFE523:
- return "telephone";
- case 0xFE524:
- return "telephone";
- case 0xFE525:
- return "mobilephone";
- case 0xFE526:
- return "phoneto";
- case 0xFE527:
- return "memo";
- case 0xFE528:
- return "faxto";
- case 0xFE529:
- return "mail";
- case 0xFE52A:
- return "mailto";
- case 0xFE52B:
- return "mailto";
- case 0xFE52C:
- return "postoffice";
- case 0xFE52D:
- return "postoffice";
- case 0xFE52E:
- return "postoffice";
- case 0xFE535:
- return "present";
- case 0xFE536:
- return "pen";
- case 0xFE537:
- return "chair";
- case 0xFE538:
- return "pc";
- case 0xFE539:
- return "pencil";
- case 0xFE53A:
- return "clip";
- case 0xFE53B:
- return "bag";
- case 0xFE53E:
- return "hairsalon";
- case 0xFE540:
- return "memo";
- case 0xFE541:
- return "memo";
- case 0xFE545:
- return "book";
- case 0xFE546:
- return "book";
- case 0xFE547:
- return "book";
- case 0xFE548:
- return "memo";
- case 0xFE54D:
- return "book";
- case 0xFE54F:
- return "book";
- case 0xFE552:
- return "memo";
- case 0xFE553:
- return "foot";
- case 0xFE7D0:
- return "sports";
- case 0xFE7D1:
- return "baseball";
- case 0xFE7D2:
- return "golf";
- case 0xFE7D3:
- return "tennis";
- case 0xFE7D4:
- return "soccer";
- case 0xFE7D5:
- return "ski";
- case 0xFE7D6:
- return "basketball";
- case 0xFE7D7:
- return "motorsports";
- case 0xFE7D8:
- return "snowboard";
- case 0xFE7D9:
- return "run";
- case 0xFE7DA:
- return "snowboard";
- case 0xFE7DC:
- return "horse";
- case 0xFE7DF:
- return "train";
- case 0xFE7E0:
- return "subway";
- case 0xFE7E1:
- return "subway";
- case 0xFE7E2:
- return "bullettrain";
- case 0xFE7E3:
- return "bullettrain";
- case 0xFE7E4:
- return "car";
- case 0xFE7E5:
- return "rvcar";
- case 0xFE7E6:
- return "bus";
- case 0xFE7E8:
- return "ship";
- case 0xFE7E9:
- return "airplane";
- case 0xFE7EA:
- return "yacht";
- case 0xFE7EB:
- return "bicycle";
- case 0xFE7EE:
- return "yacht";
- case 0xFE7EF:
- return "car";
- case 0xFE7F0:
- return "run";
- case 0xFE7F5:
- return "gasstation";
- case 0xFE7F6:
- return "parking";
- case 0xFE7F7:
- return "signaler";
- case 0xFE7FA:
- return "spa";
- case 0xFE7FC:
- return "carouselpony";
- case 0xFE7FF:
- return "fish";
- case 0xFE800:
- return "karaoke";
- case 0xFE801:
- return "movie";
- case 0xFE802:
- return "movie";
- case 0xFE803:
- return "music";
- case 0xFE804:
- return "art";
- case 0xFE805:
- return "drama";
- case 0xFE806:
- return "event";
- case 0xFE807:
- return "ticket";
- case 0xFE808:
- return "slate";
- case 0xFE809:
- return "drama";
- case 0xFE80A:
- return "game";
- case 0xFE813:
- return "note";
- case 0xFE814:
- return "notes";
- case 0xFE81A:
- return "notes";
- case 0xFE81C:
- return "tv";
- case 0xFE81D:
- return "cd";
- case 0xFE81E:
- return "cd";
- case 0xFE823:
- return "kissmark";
- case 0xFE824:
- return "loveletter";
- case 0xFE825:
- return "ring";
- case 0xFE826:
- return "ring";
- case 0xFE827:
- return "kissmark";
- case 0xFE829:
- return "heart02";
- case 0xFE82B:
- return "freedial";
- case 0xFE82C:
- return "sharp";
- case 0xFE82D:
- return "mobaq";
- case 0xFE82E:
- return "one";
- case 0xFE82F:
- return "two";
- case 0xFE830:
- return "three";
- case 0xFE831:
- return "four";
- case 0xFE832:
- return "five";
- case 0xFE833:
- return "six";
- case 0xFE834:
- return "seven";
- case 0xFE835:
- return "eight";
- case 0xFE836:
- return "nine";
- case 0xFE837:
- return "zero";
- case 0xFE960:
- return "fastfood";
- case 0xFE961:
- return "riceball";
- case 0xFE962:
- return "cake";
- case 0xFE963:
- return "noodle";
- case 0xFE964:
- return "bread";
- case 0xFE96A:
- return "noodle";
- case 0xFE973:
- return "typhoon";
- case 0xFE980:
- return "restaurant";
- case 0xFE981:
- return "cafe";
- case 0xFE982:
- return "bar";
- case 0xFE983:
- return "beer";
- case 0xFE984:
- return "japanesetea";
- case 0xFE985:
- return "bottle";
- case 0xFE986:
- return "wine";
- case 0xFE987:
- return "beer";
- case 0xFE988:
- return "bar";
- case 0xFEAF0:
- return "upwardright";
- case 0xFEAF1:
- return "downwardright";
- case 0xFEAF2:
- return "upwardleft";
- case 0xFEAF3:
- return "downwardleft";
- case 0xFEAF4:
- return "up";
- case 0xFEAF5:
- return "down";
- case 0xFEAF6:
- return "leftright";
- case 0xFEAF7:
- return "updown";
- case 0xFEB04:
- return "sign01";
- case 0xFEB05:
- return "sign02";
- case 0xFEB06:
- return "sign03";
- case 0xFEB07:
- return "sign04";
- case 0xFEB08:
- return "sign05";
- case 0xFEB0B:
- return "sign01";
- case 0xFEB0C:
- return "heart01";
- case 0xFEB0D:
- return "heart02";
- case 0xFEB0E:
- return "heart03";
- case 0xFEB0F:
- return "heart04";
- case 0xFEB10:
- return "heart01";
- case 0xFEB11:
- return "heart02";
- case 0xFEB12:
- return "heart01";
- case 0xFEB13:
- return "heart01";
- case 0xFEB14:
- return "heart01";
- case 0xFEB15:
- return "heart01";
- case 0xFEB16:
- return "heart01";
- case 0xFEB17:
- return "heart01";
- case 0xFEB18:
- return "heart02";
- case 0xFEB19:
- return "cute";
- case 0xFEB1A:
- return "heart";
- case 0xFEB1B:
- return "spade";
- case 0xFEB1C:
- return "diamond";
- case 0xFEB1D:
- return "club";
- case 0xFEB1E:
- return "smoking";
- case 0xFEB1F:
- return "nosmoking";
- case 0xFEB20:
- return "wheelchair";
- case 0xFEB21:
- return "free";
- case 0xFEB22:
- return "flag";
- case 0xFEB23:
- return "danger";
- case 0xFEB26:
- return "ng";
- case 0xFEB27:
- return "ok";
- case 0xFEB28:
- return "ng";
- case 0xFEB29:
- return "copyright";
- case 0xFEB2A:
- return "tm";
- case 0xFEB2B:
- return "secret";
- case 0xFEB2C:
- return "recycle";
- case 0xFEB2D:
- return "r-mark";
- case 0xFEB2E:
- return "ban";
- case 0xFEB2F:
- return "empty";
- case 0xFEB30:
- return "pass";
- case 0xFEB31:
- return "full";
- case 0xFEB36:
- return "new";
- case 0xFEB44:
- return "fullmoon";
- case 0xFEB48:
- return "ban";
- case 0xFEB55:
- return "cute";
- case 0xFEB56:
- return "flair";
- case 0xFEB57:
- return "annoy";
- case 0xFEB58:
- return "bomb";
- case 0xFEB59:
- return "sleepy";
- case 0xFEB5A:
- return "impact";
- case 0xFEB5B:
- return "sweat01";
- case 0xFEB5C:
- return "sweat02";
- case 0xFEB5D:
- return "dash";
- case 0xFEB5F:
- return "sad";
- case 0xFEB60:
- return "shine";
- case 0xFEB61:
- return "cute";
- case 0xFEB62:
- return "cute";
- case 0xFEB63:
- return "newmoon";
- case 0xFEB64:
- return "newmoon";
- case 0xFEB65:
- return "newmoon";
- case 0xFEB66:
- return "newmoon";
- case 0xFEB67:
- return "newmoon";
- case 0xFEB77:
- return "shine";
- case 0xFEB81:
- return "id";
- case 0xFEB82:
- return "key";
- case 0xFEB83:
- return "enter";
- case 0xFEB84:
- return "clear";
- case 0xFEB85:
- return "search";
- case 0xFEB86:
- return "key";
- case 0xFEB87:
- return "key";
- case 0xFEB8A:
- return "key";
- case 0xFEB8D:
- return "search";
- case 0xFEB90:
- return "key";
- case 0xFEB91:
- return "recycle";
- case 0xFEB92:
- return "mail";
- case 0xFEB93:
- return "rock";
- case 0xFEB94:
- return "scissors";
- case 0xFEB95:
- return "paper";
- case 0xFEB96:
- return "punch";
- case 0xFEB97:
- return "good";
- case 0xFEB9D:
- return "paper";
- case 0xFEB9F:
- return "ok";
- case 0xFEBA0:
- return "down";
- case 0xFEBA1:
- return "paper";
- case 0xFEE10:
- return "info01";
- case 0xFEE11:
- return "info02";
- case 0xFEE12:
- return "by-d";
- case 0xFEE13:
- return "d-point";
- case 0xFEE14:
- return "appli01";
- case 0xFEE15:
- return "appli02";
- case 0xFEE1C:
- return "movie";
- default:
- return null;
- }
- }
@Override
public boolean isInTopGroup()