diff --git a/src/com/fsck/k9/mail/BodyPart.java b/src/com/fsck/k9/mail/BodyPart.java
index b0c1b3e81..18e680a77 100644
--- a/src/com/fsck/k9/mail/BodyPart.java
+++ b/src/com/fsck/k9/mail/BodyPart.java
@@ -3,10 +3,15 @@ package com.fsck.k9.mail;
public abstract class BodyPart implements Part
{
- protected Multipart mParent;
+ private Multipart mParent;
public Multipart getParent()
{
return mParent;
}
+
+ public void setParent(Multipart parent)
+ {
+ mParent = parent;
+ }
}
diff --git a/src/com/fsck/k9/mail/Multipart.java b/src/com/fsck/k9/mail/Multipart.java
index 210436847..72e3db7a1 100644
--- a/src/com/fsck/k9/mail/Multipart.java
+++ b/src/com/fsck/k9/mail/Multipart.java
@@ -17,11 +17,13 @@ public abstract class Multipart implements Body
public void addBodyPart(BodyPart part)
{
mParts.add(part);
+ part.setParent(this);
}
public void addBodyPart(BodyPart part, int index)
{
mParts.add(index, part);
+ part.setParent(this);
}
public BodyPart getBodyPart(int index)
@@ -41,11 +43,13 @@ public abstract class Multipart implements Body
public boolean removeBodyPart(BodyPart part)
{
+ part.setParent(null);
return mParts.remove(part);
}
public void removeBodyPart(int index)
{
+ mParts.get(index).setParent(null);
mParts.remove(index);
}
diff --git a/src/com/fsck/k9/mail/internet/Iso2022JpToShiftJisInputStream.java b/src/com/fsck/k9/mail/internet/Iso2022JpToShiftJisInputStream.java
new file mode 100644
index 000000000..f0e630386
--- /dev/null
+++ b/src/com/fsck/k9/mail/internet/Iso2022JpToShiftJisInputStream.java
@@ -0,0 +1,86 @@
+package com.fsck.k9.mail.internet;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.MalformedInputException;
+
+class Iso2022JpToShiftJisInputStream extends InputStream {
+ private enum Charset {
+ ASCII, JISX0201, JISX0208,
+ }
+
+ private InputStream mIn;
+ private Charset charset = Charset.ASCII;
+ private int out;
+ private boolean hasOut = false;
+
+ public Iso2022JpToShiftJisInputStream(InputStream in)
+ {
+ mIn = in;
+ }
+
+ @Override
+ public int read() throws IOException
+ {
+ if (hasOut)
+ {
+ hasOut = false;
+ return out;
+ }
+
+ int in1 = mIn.read();
+ if (in1 == 0x1b)
+ {
+ in1 = mIn.read();
+ if (in1 == '(')
+ {
+ in1 = mIn.read();
+ if (in1 == 'B' || in1 == 'J')
+ charset = Charset.ASCII;
+ else if (in1 == 'I') // Not defined in RFC 1468 but in CP50221.
+ charset = Charset.JISX0201;
+ else
+ throw new MalformedInputException(0);
+ }
+ else if (in1 == '$')
+ {
+ in1 = mIn.read();
+ if (in1 == '@' || in1 == 'B')
+ charset = Charset.JISX0208;
+ else
+ throw new MalformedInputException(0);
+ }
+ else
+ throw new MalformedInputException(0);
+ in1 = mIn.read();
+ }
+
+ if (in1 == '\n' || in1 == '\r')
+ charset = Charset.ASCII;
+
+ if (in1 < 0x21 || in1 >= 0x7e)
+ return in1;
+
+ switch (charset)
+ {
+ case ASCII:
+ return in1;
+ case JISX0201:
+ return in1 + 0x80;
+ case JISX0208:
+ int in2 = mIn.read();
+ if (in2 < 0x21 || in2 >= 0x7e)
+ throw new MalformedInputException(0);
+
+ int out1 = (in1 + 1) / 2 + (in1 < 0x5f ? 0x70 : 0xb0);
+ int out2 = in2 + (in1 % 2 == 0 ? 0x7e : in2 < 0x60 ? 0x1f : 0x20);
+
+ out = out2;
+ hasOut = true;
+
+ return out1;
+ default:
+ throw new RuntimeException();
+ }
+ }
+}
diff --git a/src/com/fsck/k9/mail/internet/MimeUtility.java b/src/com/fsck/k9/mail/internet/MimeUtility.java
index 905a08df6..4eed3f8e5 100644
--- a/src/com/fsck/k9/mail/internet/MimeUtility.java
+++ b/src/com/fsck/k9/mail/internet/MimeUtility.java
@@ -1,6 +1,7 @@
package com.fsck.k9.mail.internet;
+import android.os.Build.VERSION;
import android.util.Log;
import com.fsck.k9.K9;
import com.fsck.k9.mail.*;
@@ -9,7 +10,6 @@ import org.apache.james.mime4j.decoder.Base64InputStream;
import org.apache.james.mime4j.decoder.DecoderUtil;
import org.apache.james.mime4j.decoder.QuotedPrintableInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -1029,40 +1029,15 @@ public class MimeUtility
/*
* We've got a text part, so let's see if it needs to be processed further.
*/
- final String originalCharset = getHeaderParameter(part.getContentType(), "charset");
- String charset = "ASCII"; // No encoding, so use us-ascii, which is the standard.
- if ((originalCharset != null) && (!"0".equals(originalCharset)))
- {
- /*
- * See if there is conversion from the MIME charset to the Java one.
- */
-
- charset = Charset.forName(fixupCharset(originalCharset)).name();
-
- if (charset == null)
- {
- Log.e(K9.LOG_TAG,"I don't know how to deal with the charset "+originalCharset+". Falling back to US-ASCII");
- charset = "US-ASCII";
- }
- }
+ String charset = getHeaderParameter(part.getContentType(), "charset");
+ charset = fixupCharset(charset, getMessageFromPart(part));
/*
* Now we read the part into a buffer for further processing. Because
* the stream is now wrapped we'll remove any transfer encoding at this point.
*/
InputStream in = part.getBody().getInputStream();
- ByteArrayOutputStream out = new ByteArrayOutputStream(in.available());
- IOUtils.copy(in, out);
- in.close();
- in = null; // we want all of our memory back, and close might not release
- // Cargo culted from AOSP - This disagrees with the platform docs
-
- /*
- * Convert and return as new String
- */
- final String result = out.toString(charset);
- out.close();
- return result;
+ return readToString(in, charset);
}
}
@@ -1265,18 +1240,681 @@ public class MimeUtility
return DEFAULT_ATTACHMENT_MIME_TYPE;
}
-
- private static String fixupCharset(String charset)
+ private static Message getMessageFromPart(Part part)
{
- charset = charset.toLowerCase();
- if (charset.equals("cp932"))
- return "shift-jis";
- else if (charset.equals("koi8-u"))
- return "koi8-r";
+ while (part != null)
+ {
+ if (part instanceof Message)
+ return (Message)part;
- return charset;
+ if (!(part instanceof BodyPart))
+ return null;
+ Multipart multipart = ((BodyPart)part).getParent();
+ if (multipart == null)
+ return null;
+
+ part = multipart.getParent();
+ }
+ return null;
}
+ private static String fixupCharset(String charset, Message message) throws MessagingException
+ {
+ if (charset == null || "0".equals(charset))
+ charset = "US-ASCII"; // No encoding, so use us-ascii, which is the standard.
+ charset = charset.toLowerCase();
+ if (charset.equals("cp932"))
+ charset = "shift_jis";
+ else if (charset.equals("koi8-u"))
+ charset = "koi8-r";
+
+ if (charset.equals("shift_jis") || charset.equals("iso-2022-jp"))
+ {
+ String variant = getJisVariantFromMessage(message);
+ if (variant != null)
+ charset = "x-" + variant + "-" + charset + "-2007";
+ }
+ return charset;
+ }
+
+ private static String getJisVariantFromMessage(Message message) throws MessagingException
+ {
+ if (message == null)
+ return null;
+
+ // If a receiver is known to use a JIS variant, the sender transfers the message after converting the
+ // charset as a convention.
+ String variant = getJisVariantFromReceivedHeaders(message);
+ if (variant != null)
+ return variant;
+
+ // If a receiver is not known to use any JIS variants, the sender transfers the message without converting
+ // the charset.
+ variant = getJisVariantFromFromHeaders(message);
+ if (variant != null)
+ return variant;
+
+ return getJisVariantFromMailerHeaders(message);
+ }
+
+ private static String getJisVariantFromReceivedHeaders(Message message) throws MessagingException
+ {
+ String receivedHeaders[] = message.getHeader("Received");
+ if (receivedHeaders == null)
+ return null;
+
+ for (String receivedHeader : receivedHeaders)
+ {
+ String address = getAddressFromReceivedHeader(receivedHeader);
+ if (address == null)
+ continue;
+ String variant = getJisVariantFromAddress(address);
+ if (variant != null)
+ return variant;
+ }
+ return null;
+ }
+
+ private static String getAddressFromReceivedHeader(String receivedHeader)
+ {
+ // Not implemented yet! Extract an address from the FOR clause of the given Received header.
+ return null;
+ }
+
+ private static String getJisVariantFromFromHeaders(Message message) throws MessagingException
+ {
+ Address addresses[] = message.getFrom();
+ if (addresses == null || addresses.length == 0)
+ return null;
+
+ return getJisVariantFromAddress(addresses[0].getAddress());
+ }
+
+ private static String getJisVariantFromAddress(String address)
+ {
+ if (isInDomain(address, "docomo.ne.jp") || isInDomain(address, "dwmail.jp") ||
+ isInDomain(address, "pdx.ne.jp") || isInDomain(address, "willcom.com"))
+ return "docomo";
+ else if (isInDomain(address, "softbank.ne.jp") || isInDomain(address, "vodafone.ne.jp") ||
+ isInDomain(address, "disney.ne.jp") || isInDomain(address, "vertuclub.ne.jp"))
+ return "softbank";
+ else if (isInDomain(address, "ezweb.ne.jp") || isInDomain(address, "ido.ne.jp"))
+ return "kddi";
+ return null;
+ }
+
+ private static boolean isInDomain(String address, String domain)
+ {
+ int index = address.length() - domain.length() - 1;
+ if (index < 0)
+ return false;
+
+ char c = address.charAt(index);
+ if (c != '@' && c != '.')
+ return false;
+
+ return address.endsWith(domain);
+ }
+
+ private static String getJisVariantFromMailerHeaders(Message message) throws MessagingException
+ {
+ String mailerHeaders[] = message.getHeader("X-Mailer");
+ if (mailerHeaders == null || mailerHeaders.length == 0)
+ return null;
+
+ if (mailerHeaders[0].startsWith("iPhone Mail "))
+ return "iphone";
+
+ return null;
+ }
+
+ private static String readToString(InputStream in, String charset) throws IOException
+ {
+ boolean isIphoneString = false;
+
+ // iso-2022-jp variants are supported by no versions as of Dec 2010.
+ if (charset.length() > 19 && charset.startsWith("x-") &&
+ charset.endsWith("-iso-2022-jp-2007") && !Charset.isSupported(charset))
+ {
+ in = new Iso2022JpToShiftJisInputStream(in);
+ charset = "x-" + charset.substring(2, charset.length() - 17) + "-shift_jis-2007";
+ }
+
+ // shift_jis variants are supported by Eclair and later.
+ if (charset.length() > 17 && charset.startsWith("x-") &&
+ charset.endsWith("-shift_jis-2007") && !Charset.isSupported(charset))
+ {
+ // If the JIS variant is iPhone, map the Unicode private use area in iPhone to the one in Android after
+ // converting the character set from the standard Shift JIS to Unicode.
+ if (charset.substring(2, charset.length() - 15).equals("iphone"))
+ isIphoneString = true;
+
+ charset = "shift_jis";
+ }
+
+ /*
+ * See if there is conversion from the MIME charset to the Java one.
+ */
+ if (!Charset.isSupported(charset))
+ {
+ Log.e(K9.LOG_TAG, "I don't know how to deal with the charset " + charset +
+ ". Falling back to US-ASCII");
+ charset = "US-ASCII";
+ }
+
+ /*
+ * Convert and return as new String
+ */
+ String str = IOUtils.toString(in, charset);
+
+ if (isIphoneString)
+ str = importStringFromIphone(str);
+ return str;
+ }
+
+ static private String importStringFromIphone(String str)
+ {
+ StringBuilder buff = new StringBuilder(str.length());
+ for (int i = 0; i < str.length(); i = str.offsetByCodePoints(i, 1))
+ {
+ int codePoint = str.codePointAt(i);
+ buff.appendCodePoint(importCodePointFromIphone(codePoint));
+ }
+ return buff.toString();
+ }
+
+ static private int importCodePointFromIphone(int codePoint)
+ {
+ switch (codePoint)
+ {
+ case 0xE001: return 0xFE19B;
+ case 0xE002: return 0xFE19C;
+ case 0xE003: return 0xFE823;
+ case 0xE004: return 0xFE19D;
+ case 0xE005: return 0xFE19E;
+ case 0xE006: return 0xFE4CF;
+ case 0xE007: return 0xFE4CD;
+ case 0xE008: return 0xFE4EF;
+ case 0xE009: return 0xFE523;
+ case 0xE00A: return 0xFE525;
+ case 0xE00B: return 0xFE528;
+ case 0xE00C: return 0xFE538;
+ case 0xE00D: return 0xFEB96;
+ case 0xE00E: return 0xFEB97;
+ case 0xE00F: return 0xFEB98;
+ case 0xE010: return 0xFEB93;
+ case 0xE011: return 0xFEB94;
+ case 0xE012: return 0xFEB95;
+ case 0xE013: return 0xFE7D5;
+ case 0xE014: return 0xFE7D2;
+ case 0xE015: return 0xFE7D3;
+ case 0xE016: return 0xFE7D1;
+ case 0xE017: return 0xFE7DA;
+ case 0xE018: return 0xFE7D4;
+ case 0xE019: return 0xFE1BD;
+ case 0xE01A: return 0xFE1BE;
+ case 0xE01B: return 0xFE7E4;
+ case 0xE01C: return 0xFE7EA;
+ case 0xE01D: return 0xFE7E9;
+ case 0xE01E: return 0xFE7DF;
+ case 0xE01F: return 0xFE7E3;
+ case 0xE020: return 0xFEB09;
+ case 0xE021: return 0xFEB04;
+ case 0xE022: return 0xFEB0C;
+ case 0xE023: return 0xFEB0E;
+ case 0xE024: return 0xFE01E;
+ case 0xE025: return 0xFE01F;
+ case 0xE026: return 0xFE020;
+ case 0xE027: return 0xFE021;
+ case 0xE028: return 0xFE022;
+ case 0xE029: return 0xFE023;
+ case 0xE02A: return 0xFE024;
+ case 0xE02B: return 0xFE025;
+ case 0xE02C: return 0xFE026;
+ case 0xE02D: return 0xFE027;
+ case 0xE02E: return 0xFE028;
+ case 0xE02F: return 0xFE029;
+ case 0xE030: return 0xFE040;
+ case 0xE031: return 0xFE4D2;
+ case 0xE032: return 0xFE041;
+ case 0xE033: return 0xFE512;
+ case 0xE034: return 0xFE825;
+ case 0xE035: return 0xFE826;
+ case 0xE036: return 0xFE4B0;
+ case 0xE037: return 0xFE4BB;
+ case 0xE038: return 0xFE4B2;
+ case 0xE039: return 0xFE7EC;
+ case 0xE03A: return 0xFE7F5;
+ case 0xE03B: return 0xFE4C3;
+ case 0xE03C: return 0xFE800;
+ case 0xE03D: return 0xFE801;
+ case 0xE03E: return 0xFE813;
+ case 0xE03F: return 0xFEB82;
+ case 0xE040: return 0xFE815;
+ case 0xE041: return 0xFE816;
+ case 0xE042: return 0xFE818;
+ case 0xE043: return 0xFE980;
+ case 0xE044: return 0xFE982;
+ case 0xE045: return 0xFE981;
+ case 0xE046: return 0xFE962;
+ case 0xE047: return 0xFE983;
+ case 0xE048: return 0xFE003;
+ case 0xE049: return 0xFE001;
+ case 0xE04A: return 0xFE000;
+ case 0xE04B: return 0xFE002;
+ case 0xE04C: return 0xFE014;
+ case 0xE04D: return 0xFE009;
+ case 0xE04E: return 0xFE1AF;
+ case 0xE04F: return 0xFE1B8;
+ case 0xE050: return 0xFE1C0;
+ case 0xE051: return 0xFE1C1;
+ case 0xE052: return 0xFE1B7;
+ case 0xE053: return 0xFE1C2;
+ case 0xE054: return 0xFE1C3;
+ case 0xE055: return 0xFE1BC;
+ case 0xE056: return 0xFE335;
+ case 0xE057: return 0xFE330;
+ case 0xE058: return 0xFE323;
+ case 0xE059: return 0xFE320;
+ case 0xE05A: return 0xFE4F4;
+ case 0xE101: return 0xFE52D;
+ case 0xE102: return 0xFE52E;
+ case 0xE103: return 0xFE52B;
+ case 0xE104: return 0xFE526;
+ case 0xE105: return 0xFE329;
+ case 0xE106: return 0xFE327;
+ case 0xE107: return 0xFE341;
+ case 0xE108: return 0xFE344;
+ case 0xE109: return 0xFE1C4;
+ case 0xE10A: return 0xFE1C5;
+ case 0xE10B: return 0xFE1BF;
+ case 0xE10C: return 0xFE1B0;
+ case 0xE10D: return 0xFE7ED;
+ case 0xE10E: return 0xFE4D1;
+ case 0xE10F: return 0xFEB56;
+ case 0xE110: return 0xFE03C;
+ case 0xE111: return 0xFE827;
+ case 0xE112: return 0xFE510;
+ case 0xE113: return 0xFE4F5;
+ case 0xE114: return 0xFEB85;
+ case 0xE115: return 0xFE7D9;
+ case 0xE116: return 0xFE4CA;
+ case 0xE117: return 0xFE515;
+ case 0xE118: return 0xFE03F;
+ case 0xE119: return 0xFE042;
+ case 0xE11A: return 0xFE1B2;
+ case 0xE11B: return 0xFE1AE;
+ case 0xE11C: return 0xFE1B3;
+ case 0xE11D: return 0xFE4F6;
+ case 0xE11E: return 0xFE53B;
+ case 0xE11F: return 0xFE537;
+ case 0xE120: return 0xFE960;
+ case 0xE121: return 0xFE4BC;
+ case 0xE122: return 0xFE7FB;
+ case 0xE123: return 0xFE7FA;
+ case 0xE124: return 0xFE7FD;
+ case 0xE125: return 0xFE807;
+ case 0xE126: return 0xFE81D;
+ case 0xE127: return 0xFE81E;
+ case 0xE128: return 0xFE81F;
+ case 0xE129: return 0xFE820;
+ case 0xE12A: return 0xFE81C;
+ case 0xE12B: return 0xFE1B1;
+ case 0xE12C: return 0xFE81B;
+ case 0xE12D: return 0xFE80B;
+ case 0xE12E: return 0xFEB32;
+ case 0xE12F: return 0xFE4DD;
+ case 0xE130: return 0xFE80C;
+ case 0xE131: return 0xFE7DB;
+ case 0xE132: return 0xFE7D7;
+ case 0xE133: return 0xFE80D;
+ case 0xE134: return 0xFE7DC;
+ case 0xE135: return 0xFE7EE;
+ case 0xE136: return 0xFE7EB;
+ case 0xE137: return 0xFE7F8;
+ case 0xE138: return 0xFEB33;
+ case 0xE139: return 0xFEB34;
+ case 0xE13A: return 0xFEB35;
+ case 0xE13B: return 0xFE509;
+ case 0xE13C: return 0xFEB59;
+ case 0xE13D: return 0xFE004;
+ case 0xE13E: return 0xFE4D6;
+ case 0xE13F: return 0xFE505;
+ case 0xE140: return 0xFE507;
+ case 0xE141: return 0xFE821;
+ case 0xE142: return 0xFE52F;
+ case 0xE143: return 0xFE514;
+ case 0xE144: return 0xFEB86;
+ case 0xE145: return 0xFEB87;
+ case 0xE146: return 0xFE00B;
+ case 0xE147: return 0xFE965;
+ case 0xE148: return 0xFE546;
+ case 0xE149: return 0xFE4DE;
+ case 0xE14A: return 0xFE4DF;
+ case 0xE14B: return 0xFE531;
+ case 0xE14C: return 0xFEB5E;
+ case 0xE14D: return 0xFE4B5;
+ case 0xE14E: return 0xFE7F7;
+ case 0xE14F: return 0xFE7F6;
+ case 0xE150: return 0xFE7E7;
+ case 0xE151: return 0xFE506;
+ case 0xE152: return 0xFE1A1;
+ case 0xE153: return 0xFE4B3;
+ case 0xE154: return 0xFE4B6;
+ case 0xE155: return 0xFE4B4;
+ case 0xE156: return 0xFE4B9;
+ case 0xE157: return 0xFE4BA;
+ case 0xE158: return 0xFE4B7;
+ case 0xE159: return 0xFE7E6;
+ case 0xE15A: return 0xFE7EF;
+ case 0xE201: return 0xFE7F0;
+ case 0xE202: return 0xFE7E8;
+ case 0xE203: return 0xFEB24;
+ case 0xE204: return 0xFEB19;
+ case 0xE205: return 0xFEB61;
+ case 0xE206: return 0xFEB62;
+ case 0xE207: return 0xFEB25;
+ case 0xE208: return 0xFEB1F;
+ case 0xE209: return 0xFE044;
+ case 0xE20A: return 0xFEB20;
+ case 0xE20B: return 0xFE838;
+ case 0xE20C: return 0xFEB1A;
+ case 0xE20D: return 0xFEB1C;
+ case 0xE20E: return 0xFEB1B;
+ case 0xE20F: return 0xFEB1D;
+ case 0xE210: return 0xFE82C;
+ case 0xE211: return 0xFE82B;
+ case 0xE212: return 0xFEB36;
+ case 0xE213: return 0xFEB37;
+ case 0xE214: return 0xFEB38;
+ case 0xE215: return 0xFEB39;
+ case 0xE216: return 0xFEB3A;
+ case 0xE217: return 0xFEB3B;
+ case 0xE218: return 0xFEB3C;
+ case 0xE219: return 0xFEB63;
+ case 0xE21A: return 0xFEB64;
+ case 0xE21B: return 0xFEB67;
+ case 0xE21C: return 0xFE82E;
+ case 0xE21D: return 0xFE82F;
+ case 0xE21E: return 0xFE830;
+ case 0xE21F: return 0xFE831;
+ case 0xE220: return 0xFE832;
+ case 0xE221: return 0xFE833;
+ case 0xE222: return 0xFE834;
+ case 0xE223: return 0xFE835;
+ case 0xE224: return 0xFE836;
+ case 0xE225: return 0xFE837;
+ case 0xE226: return 0xFEB3D;
+ case 0xE227: return 0xFEB3E;
+ case 0xE228: return 0xFEB3F;
+ case 0xE229: return 0xFEB81;
+ case 0xE22A: return 0xFEB31;
+ case 0xE22B: return 0xFEB2F;
+ case 0xE22C: return 0xFEB40;
+ case 0xE22D: return 0xFEB41;
+ case 0xE22E: return 0xFEB99;
+ case 0xE22F: return 0xFEB9A;
+ case 0xE230: return 0xFEB9B;
+ case 0xE231: return 0xFEB9C;
+ case 0xE232: return 0xFEAF8;
+ case 0xE233: return 0xFEAF9;
+ case 0xE234: return 0xFEAFA;
+ case 0xE235: return 0xFEAFB;
+ case 0xE236: return 0xFEAF0;
+ case 0xE237: return 0xFEAF2;
+ case 0xE238: return 0xFEAF1;
+ case 0xE239: return 0xFEAF3;
+ case 0xE23A: return 0xFEAFC;
+ case 0xE23B: return 0xFEAFD;
+ case 0xE23C: return 0xFEAFE;
+ case 0xE23D: return 0xFEAFF;
+ case 0xE23E: return 0xFE4F8;
+ case 0xE23F: return 0xFE02B;
+ case 0xE240: return 0xFE02C;
+ case 0xE241: return 0xFE02D;
+ case 0xE242: return 0xFE02E;
+ case 0xE243: return 0xFE02F;
+ case 0xE244: return 0xFE030;
+ case 0xE245: return 0xFE031;
+ case 0xE246: return 0xFE032;
+ case 0xE247: return 0xFE033;
+ case 0xE248: return 0xFE034;
+ case 0xE249: return 0xFE035;
+ case 0xE24A: return 0xFE036;
+ case 0xE24B: return 0xFE037;
+ case 0xE24C: return 0xFEB42;
+ case 0xE24D: return 0xFEB27;
+ case 0xE24E: return 0xFEB29;
+ case 0xE24F: return 0xFEB2D;
+ case 0xE250: return 0xFE839;
+ case 0xE251: return 0xFE83A;
+ case 0xE252: return 0xFEB23;
+ case 0xE253: return 0xFE1B4;
+ case 0xE254: return 0xFEE77;
+ case 0xE255: return 0xFEE78;
+ case 0xE256: return 0xFEE79;
+ case 0xE257: return 0xFEE7A;
+ case 0xE258: return 0xFEE7B;
+ case 0xE259: return 0xFEE7C;
+ case 0xE25A: return 0xFEE7D;
+ case 0xE301: return 0xFE527;
+ case 0xE302: return 0xFE4D3;
+ case 0xE303: return 0xFE045;
+ case 0xE304: return 0xFE03D;
+ case 0xE305: return 0xFE046;
+ case 0xE306: return 0xFE828;
+ case 0xE307: return 0xFE047;
+ case 0xE308: return 0xFE048;
+ case 0xE309: return 0xFE508;
+ case 0xE30A: return 0xFE803;
+ case 0xE30B: return 0xFE985;
+ case 0xE30C: return 0xFE987;
+ case 0xE30D: return 0xFEB43;
+ case 0xE30E: return 0xFEB1E;
+ case 0xE30F: return 0xFE50A;
+ case 0xE310: return 0xFE516;
+ case 0xE311: return 0xFEB58;
+ case 0xE312: return 0xFE517;
+ case 0xE313: return 0xFE53E;
+ case 0xE314: return 0xFE50F;
+ case 0xE315: return 0xFEB2B;
+ case 0xE316: return 0xFE53C;
+ case 0xE317: return 0xFE530;
+ case 0xE318: return 0xFE4D4;
+ case 0xE319: return 0xFE4D5;
+ case 0xE31A: return 0xFE4D7;
+ case 0xE31B: return 0xFE4D8;
+ case 0xE31C: return 0xFE195;
+ case 0xE31D: return 0xFE196;
+ case 0xE31E: return 0xFE197;
+ case 0xE31F: return 0xFE198;
+ case 0xE320: return 0xFE199;
+ case 0xE321: return 0xFE4D9;
+ case 0xE322: return 0xFE4DA;
+ case 0xE323: return 0xFE4F0;
+ case 0xE324: return 0xFE808;
+ case 0xE325: return 0xFE4F2;
+ case 0xE326: return 0xFE814;
+ case 0xE327: return 0xFEB0D;
+ case 0xE328: return 0xFEB11;
+ case 0xE329: return 0xFEB12;
+ case 0xE32A: return 0xFEB13;
+ case 0xE32B: return 0xFEB14;
+ case 0xE32C: return 0xFEB15;
+ case 0xE32D: return 0xFEB16;
+ case 0xE32E: return 0xFEB60;
+ case 0xE32F: return 0xFEB68;
+ case 0xE330: return 0xFEB5D;
+ case 0xE331: return 0xFEB5B;
+ case 0xE332: return 0xFEB44;
+ case 0xE333: return 0xFEB45;
+ case 0xE334: return 0xFEB57;
+ case 0xE335: return 0xFEB69;
+ case 0xE336: return 0xFEB0A;
+ case 0xE337: return 0xFEB0B;
+ case 0xE338: return 0xFE984;
+ case 0xE339: return 0xFE964;
+ case 0xE33A: return 0xFE966;
+ case 0xE33B: return 0xFE967;
+ case 0xE33C: return 0xFE968;
+ case 0xE33D: return 0xFE969;
+ case 0xE33E: return 0xFE96A;
+ case 0xE33F: return 0xFE96B;
+ case 0xE340: return 0xFE963;
+ case 0xE341: return 0xFE96C;
+ case 0xE342: return 0xFE961;
+ case 0xE343: return 0xFE96D;
+ case 0xE344: return 0xFE96E;
+ case 0xE345: return 0xFE051;
+ case 0xE346: return 0xFE052;
+ case 0xE347: return 0xFE053;
+ case 0xE348: return 0xFE054;
+ case 0xE349: return 0xFE055;
+ case 0xE34A: return 0xFE056;
+ case 0xE34B: return 0xFE511;
+ case 0xE34C: return 0xFE96F;
+ case 0xE34D: return 0xFE970;
+ case 0xE401: return 0xFE345;
+ case 0xE402: return 0xFE343;
+ case 0xE403: return 0xFE340;
+ case 0xE404: return 0xFE333;
+ case 0xE405: return 0xFE347;
+ case 0xE406: return 0xFE33C;
+ case 0xE407: return 0xFE33F;
+ case 0xE408: return 0xFE342;
+ case 0xE409: return 0xFE32A;
+ case 0xE40A: return 0xFE33E;
+ case 0xE40B: return 0xFE33B;
+ case 0xE40C: return 0xFE32E;
+ case 0xE40D: return 0xFE32F;
+ case 0xE40E: return 0xFE326;
+ case 0xE40F: return 0xFE325;
+ case 0xE410: return 0xFE322;
+ case 0xE411: return 0xFE33A;
+ case 0xE412: return 0xFE334;
+ case 0xE413: return 0xFE339;
+ case 0xE414: return 0xFE336;
+ case 0xE415: return 0xFE338;
+ case 0xE416: return 0xFE33D;
+ case 0xE417: return 0xFE32D;
+ case 0xE418: return 0xFE32C;
+ case 0xE419: return 0xFE190;
+ case 0xE41A: return 0xFE192;
+ case 0xE41B: return 0xFE191;
+ case 0xE41C: return 0xFE193;
+ case 0xE41D: return 0xFE35B;
+ case 0xE41E: return 0xFEB9D;
+ case 0xE41F: return 0xFEB9E;
+ case 0xE420: return 0xFEB9F;
+ case 0xE421: return 0xFEBA0;
+ case 0xE422: return 0xFEBA1;
+ case 0xE423: return 0xFE351;
+ case 0xE424: return 0xFE352;
+ case 0xE425: return 0xFE829;
+ case 0xE426: return 0xFE353;
+ case 0xE427: return 0xFE358;
+ case 0xE428: return 0xFE1A0;
+ case 0xE429: return 0xFE1A2;
+ case 0xE42A: return 0xFE7D6;
+ case 0xE42B: return 0xFE7DD;
+ case 0xE42C: return 0xFE80E;
+ case 0xE42D: return 0xFE7DE;
+ case 0xE42E: return 0xFE7E5;
+ case 0xE42F: return 0xFE7F1;
+ case 0xE430: return 0xFE7F2;
+ case 0xE431: return 0xFE7F3;
+ case 0xE432: return 0xFE7F4;
+ case 0xE433: return 0xFE7FE;
+ case 0xE434: return 0xFE7E0;
+ case 0xE435: return 0xFE7E2;
+ case 0xE436: return 0xFE518;
+ case 0xE437: return 0xFEB17;
+ case 0xE438: return 0xFE519;
+ case 0xE439: return 0xFE51A;
+ case 0xE43A: return 0xFE51B;
+ case 0xE43B: return 0xFE51C;
+ case 0xE43C: return 0xFE007;
+ case 0xE43D: return 0xFE82A;
+ case 0xE43E: return 0xFE038;
+ case 0xE43F: return 0xFE971;
+ case 0xE440: return 0xFE51D;
+ case 0xE441: return 0xFE1C6;
+ case 0xE442: return 0xFE51E;
+ case 0xE443: return 0xFE005;
+ case 0xE444: return 0xFE049;
+ case 0xE445: return 0xFE51F;
+ case 0xE446: return 0xFE017;
+ case 0xE447: return 0xFE043;
+ case 0xE448: return 0xFE513;
+ case 0xE449: return 0xFE00A;
+ case 0xE44A: return 0xFE00C;
+ case 0xE44B: return 0xFE008;
+ case 0xE44C: return 0xFE00D;
+ case 0xE501: return 0xFE4B8;
+ case 0xE502: return 0xFE804;
+ case 0xE503: return 0xFE805;
+ case 0xE504: return 0xFE4BD;
+ case 0xE505: return 0xFE4BE;
+ case 0xE506: return 0xFE4BF;
+ case 0xE507: return 0xFE802;
+ case 0xE508: return 0xFE4C0;
+ case 0xE509: return 0xFE4C4;
+ case 0xE50A: return 0xFE4C5;
+ case 0xE50B: return 0xFE4E5;
+ case 0xE50C: return 0xFE4E6;
+ case 0xE50D: return 0xFE4E7;
+ case 0xE50E: return 0xFE4E8;
+ case 0xE50F: return 0xFE4E9;
+ case 0xE510: return 0xFE4EA;
+ case 0xE511: return 0xFE4EB;
+ case 0xE512: return 0xFE4EC;
+ case 0xE513: return 0xFE4ED;
+ case 0xE514: return 0xFE4EE;
+ case 0xE515: return 0xFE1A4;
+ case 0xE516: return 0xFE1A5;
+ case 0xE517: return 0xFE1A6;
+ case 0xE518: return 0xFE1A7;
+ case 0xE519: return 0xFE1A8;
+ case 0xE51A: return 0xFE1A9;
+ case 0xE51B: return 0xFE1AA;
+ case 0xE51C: return 0xFE1AB;
+ case 0xE51D: return 0xFE4C6;
+ case 0xE51E: return 0xFE1B5;
+ case 0xE51F: return 0xFE1B6;
+ case 0xE520: return 0xFE1C7;
+ case 0xE521: return 0xFE1C8;
+ case 0xE522: return 0xFE1C9;
+ case 0xE523: return 0xFE1BA;
+ case 0xE524: return 0xFE1CA;
+ case 0xE525: return 0xFE1CB;
+ case 0xE526: return 0xFE1CC;
+ case 0xE527: return 0xFE1CD;
+ case 0xE528: return 0xFE1CE;
+ case 0xE529: return 0xFE1CF;
+ case 0xE52A: return 0xFE1D0;
+ case 0xE52B: return 0xFE1D1;
+ case 0xE52C: return 0xFE1D2;
+ case 0xE52D: return 0xFE1D3;
+ case 0xE52E: return 0xFE1D4;
+ case 0xE52F: return 0xFE1D5;
+ case 0xE530: return 0xFE1D6;
+ case 0xE531: return 0xFE1D7;
+ case 0xE532: return 0xFE50B;
+ case 0xE533: return 0xFE50C;
+ case 0xE534: return 0xFE50D;
+ case 0xE535: return 0xFE50E;
+ case 0xE536: return 0xFE553;
+ case 0xE537: return 0xFEB2A;
+ case 0xE538: return 0xFEE70;
+ case 0xE539: return 0xFEE71;
+ case 0xE53A: return 0xFEE72;
+ case 0xE53B: return 0xFEE73;
+ case 0xE53C: return 0xFEE74;
+ case 0xE53D: return 0xFEE75;
+ case 0xE53E: return 0xFEE76;
+ default: return codePoint;
+ }
+ }
}
diff --git a/src/com/fsck/k9/mail/store/LocalStore.java b/src/com/fsck/k9/mail/store/LocalStore.java
index 3a51a6cfb..e1127d588 100644
--- a/src/com/fsck/k9/mail/store/LocalStore.java
+++ b/src/com/fsck/k9/mail/store/LocalStore.java
@@ -3142,7 +3142,7 @@ public class LocalStore extends Store implements Serializable
html = htmlifyString(text);
}
- html = convertEmoji2ImgForDocomo(html);
+ html = convertEmoji2Img(html);
return html;
}
@@ -3257,2041 +3257,442 @@ public class LocalStore extends Store implements Serializable
}
}
- public String convertEmoji2ImgForDocomo(String html)
+ public String convertEmoji2Img(String html)
{
- StringReader reader = new StringReader(html);
StringBuilder buff = new StringBuilder(html.length() + 512);
- int c;
- try
- {
- while ((c = reader.read()) != -1)
- {
- switch (c)
- {
- // These emoji codepoints are generated by tools/make_emoji in the K-9 source tree
+ 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);
- case 0xE6F9: //docomo kissmark
- buff.append("");
- break;
- case 0xE729: //docomo wink
- buff.append("");
- break;
- case 0xE6D2: //docomo info02
- buff.append("");
- break;
- case 0xE753: //docomo smile
- buff.append("");
- break;
- case 0xE68D: //docomo heart
- buff.append("");
- break;
- case 0xE6A5: //docomo downwardleft
- buff.append("");
- break;
- case 0xE6AD: //docomo pouch
- buff.append("");
- break;
- case 0xE6D4: //docomo by-d
- buff.append("");
- break;
- case 0xE6D7: //docomo free
- buff.append("");
- break;
- case 0xE6E8: //docomo seven
- buff.append("");
- break;
- case 0xE74E: //docomo snail
- buff.append("");
- break;
- case 0xE658: //docomo basketball
- buff.append("");
- break;
- case 0xE65A: //docomo pocketbell
- buff.append("");
- break;
- case 0xE6E3: //docomo two
- buff.append("");
- break;
- case 0xE74A: //docomo cake
- buff.append("");
- break;
- case 0xE6D0: //docomo faxto
- buff.append("");
- break;
- case 0xE661: //docomo ship
- buff.append("");
- break;
- case 0xE64B: //docomo virgo
- buff.append("");
- break;
- case 0xE67E: //docomo ticket
- buff.append("");
- break;
- case 0xE6D6: //docomo yen
- buff.append("");
- break;
- case 0xE6E0: //docomo sharp
- buff.append("");
- break;
- case 0xE6FE: //docomo bomb
- buff.append("");
- break;
- case 0xE6E1: //docomo mobaq
- buff.append("");
- break;
- case 0xE70A: //docomo sign05
- buff.append("");
- break;
- case 0xE667: //docomo bank
- buff.append("");
- break;
- case 0xE731: //docomo copyright
- buff.append("");
- break;
- case 0xE678: //docomo upwardright
- buff.append("");
- break;
- case 0xE694: //docomo scissors
- buff.append("");
- break;
- case 0xE682: //docomo bag
- buff.append("");
- break;
- case 0xE64D: //docomo scorpius
- buff.append("");
- break;
- case 0xE6D9: //docomo key
- buff.append("");
- break;
- case 0xE734: //docomo secret
- buff.append("");
- break;
- case 0xE74F: //docomo chick
- buff.append("");
- break;
- case 0xE691: //docomo eye
- buff.append("");
- break;
- case 0xE70B: //docomo ok
- buff.append("");
- break;
- case 0xE714: //docomo door
- buff.append("");
- break;
- case 0xE64F: //docomo capricornus
- buff.append("");
- break;
- case 0xE674: //docomo boutique
- buff.append("");
- break;
- case 0xE726: //docomo lovely
- buff.append("");
- break;
- case 0xE68F: //docomo diamond
- buff.append("");
- break;
- case 0xE69B: //docomo wheelchair
- buff.append("");
- break;
- case 0xE747: //docomo maple
- buff.append("");
- break;
- case 0xE64C: //docomo libra
- buff.append("");
- break;
- case 0xE647: //docomo taurus
- buff.append("");
- break;
- case 0xE645: //docomo sprinkle
- buff.append("");
- break;
- case 0xE6FC: //docomo annoy
- buff.append("");
- break;
- case 0xE6E6: //docomo five
- buff.append("");
- break;
- case 0xE676: //docomo karaoke
- buff.append("");
- break;
- case 0xE69D: //docomo moon1
- buff.append("");
- break;
- case 0xE709: //docomo sign04
- buff.append("");
- break;
- case 0xE72A: //docomo happy02
- buff.append("");
- break;
- case 0xE669: //docomo hotel
- buff.append("");
- break;
- case 0xE71B: //docomo ring
- buff.append("");
- break;
- case 0xE644: //docomo mist
- buff.append("");
- break;
- case 0xE73B: //docomo full
- buff.append("");
- break;
- case 0xE683: //docomo book
- buff.append("");
- break;
- case 0xE707: //docomo sweat02
- buff.append("");
- break;
- case 0xE716: //docomo pc
- buff.append("");
- break;
- case 0xE671: //docomo bar
- buff.append("");
- break;
- case 0xE72B: //docomo bearing
- buff.append("");
- break;
- case 0xE65C: //docomo subway
- buff.append("");
- break;
- case 0xE725: //docomo gawk
- buff.append("");
- break;
- case 0xE745: //docomo apple
- buff.append("");
- break;
- case 0xE65F: //docomo rvcar
- buff.append("");
- break;
- case 0xE664: //docomo building
- buff.append("");
- break;
- case 0xE737: //docomo danger
- buff.append("");
- break;
- case 0xE702: //docomo sign01
- buff.append("");
- break;
- case 0xE6EC: //docomo heart01
- buff.append("");
- break;
- case 0xE660: //docomo bus
- buff.append("");
- break;
- case 0xE72D: //docomo crying
- buff.append("");
- break;
- case 0xE652: //docomo sports
- buff.append("");
- break;
- case 0xE6B8: //docomo on
- buff.append("");
- break;
- case 0xE73C: //docomo leftright
- buff.append("");
- break;
- case 0xE6BA: //docomo clock
- buff.append("");
- break;
- case 0xE6F0: //docomo happy01
- buff.append("");
- break;
- case 0xE701: //docomo sleepy
- buff.append("");
- break;
- case 0xE63E: //docomo sun
- buff.append("");
- break;
- case 0xE67D: //docomo event
- buff.append("");
- break;
- case 0xE689: //docomo memo
- buff.append("");
- break;
- case 0xE68B: //docomo game
- buff.append("");
- break;
- case 0xE718: //docomo wrench
- buff.append("");
- break;
- case 0xE741: //docomo clover
- buff.append("");
- break;
- case 0xE693: //docomo rock
- buff.append("");
- break;
- case 0xE6F6: //docomo note
- buff.append("");
- break;
- case 0xE67A: //docomo music
- buff.append("");
- break;
- case 0xE743: //docomo tulip
- buff.append("");
- break;
- case 0xE656: //docomo soccer
- buff.append("");
- break;
- case 0xE69C: //docomo newmoon
- buff.append("");
- break;
- case 0xE73E: //docomo school
- buff.append("");
- break;
- case 0xE750: //docomo penguin
- buff.append("");
- break;
- case 0xE696: //docomo downwardright
- buff.append("");
- break;
- case 0xE6CE: //docomo phoneto
- buff.append("");
- break;
- case 0xE728: //docomo bleah
- buff.append("");
- break;
- case 0xE662: //docomo airplane
- buff.append("");
- break;
- case 0xE74C: //docomo noodle
- buff.append("");
- break;
- case 0xE704: //docomo sign03
- buff.append("");
- break;
- case 0xE68E: //docomo spade
- buff.append("");
- break;
- case 0xE698: //docomo foot
- buff.append("");
- break;
- case 0xE712: //docomo snowboard
- buff.append("");
- break;
- case 0xE684: //docomo ribbon
- buff.append("");
- break;
- case 0xE6DA: //docomo enter
- buff.append("");
- break;
- case 0xE6EA: //docomo nine
- buff.append("");
- break;
- case 0xE722: //docomo coldsweats01
- buff.append("");
- break;
- case 0xE6F7: //docomo spa
- buff.append("");
- break;
- case 0xE710: //docomo rouge
- buff.append("");
- break;
- case 0xE73F: //docomo wave
- buff.append("");
- break;
- case 0xE686: //docomo birthday
- buff.append("");
- break;
- case 0xE721: //docomo confident
- buff.append("");
- break;
- case 0xE6FF: //docomo notes
- buff.append("");
- break;
- case 0xE724: //docomo pout
- buff.append("");
- break;
- case 0xE6A4: //docomo xmas
- buff.append("");
- break;
- case 0xE6FB: //docomo flair
- buff.append("");
- break;
- case 0xE71D: //docomo bicycle
- buff.append("");
- break;
- case 0xE6DC: //docomo search
- buff.append("");
- break;
- case 0xE757: //docomo shock
- buff.append("");
- break;
- case 0xE680: //docomo nosmoking
- buff.append("");
- break;
- case 0xE66D: //docomo signaler
- buff.append("");
- break;
- case 0xE66A: //docomo 24hours
- buff.append("");
- break;
- case 0xE6F4: //docomo wobbly
- buff.append("");
- break;
- case 0xE641: //docomo snow
- buff.append("");
- break;
- case 0xE6AE: //docomo pen
- buff.append("");
- break;
- case 0xE70D: //docomo appli02
- buff.append("");
- break;
- case 0xE732: //docomo tm
- buff.append("");
- break;
- case 0xE755: //docomo pig
- buff.append("");
- break;
- case 0xE648: //docomo gemini
- buff.append("");
- break;
- case 0xE6DE: //docomo flag
- buff.append("");
- break;
- case 0xE6A1: //docomo dog
- buff.append("");
- break;
- case 0xE6EF: //docomo heart04
- buff.append("");
- break;
- case 0xE643: //docomo typhoon
- buff.append("");
- break;
- case 0xE65B: //docomo train
- buff.append("");
- break;
- case 0xE746: //docomo bud
- buff.append("");
- break;
- case 0xE653: //docomo baseball
- buff.append("");
- break;
- case 0xE6B2: //docomo chair
- buff.append("");
- break;
- case 0xE64A: //docomo leo
- buff.append("");
- break;
- case 0xE6E7: //docomo six
- buff.append("");
- break;
- case 0xE6E4: //docomo three
- buff.append("");
- break;
- case 0xE6DF: //docomo freedial
- buff.append("");
- break;
- case 0xE744: //docomo banana
- buff.append("");
- break;
- case 0xE6DB: //docomo clear
- buff.append("");
- break;
- case 0xE6AC: //docomo slate
- buff.append("");
- break;
- case 0xE666: //docomo hospital
- buff.append("");
- break;
- case 0xE663: //docomo house
- buff.append("");
- break;
- case 0xE695: //docomo paper
- buff.append("");
- break;
- case 0xE67F: //docomo smoking
- buff.append("");
- break;
- case 0xE65D: //docomo bullettrain
- buff.append("");
- break;
- case 0xE6B1: //docomo shadow
- buff.append("");
- break;
- case 0xE670: //docomo cafe
- buff.append("");
- break;
- case 0xE654: //docomo golf
- buff.append("");
- break;
- case 0xE708: //docomo dash
- buff.append("");
- break;
- case 0xE748: //docomo cherryblossom
- buff.append("");
- break;
- case 0xE6F1: //docomo angry
- buff.append("");
- break;
- case 0xE736: //docomo r-mark
- buff.append("");
- break;
- case 0xE6A2: //docomo cat
- buff.append("");
- break;
- case 0xE6D1: //docomo info01
- buff.append("");
- break;
- case 0xE687: //docomo telephone
- buff.append("");
- break;
- case 0xE68C: //docomo cd
- buff.append("");
- break;
- case 0xE70E: //docomo t-shirt
- buff.append("");
- break;
- case 0xE733: //docomo run
- buff.append("");
- break;
- case 0xE679: //docomo carouselpony
- buff.append("");
- break;
- case 0xE646: //docomo aries
- buff.append("");
- break;
- case 0xE690: //docomo club
- buff.append("");
- break;
- case 0xE64E: //docomo sagittarius
- buff.append("");
- break;
- case 0xE6F5: //docomo up
- buff.append("");
- break;
- case 0xE720: //docomo think
- buff.append("");
- break;
- case 0xE6E2: //docomo one
- buff.append("");
- break;
- case 0xE6D8: //docomo id
- buff.append("");
- break;
- case 0xE675: //docomo hairsalon
- buff.append("");
- break;
- case 0xE6B7: //docomo soon
- buff.append("");
- break;
- case 0xE717: //docomo loveletter
- buff.append("");
- break;
- case 0xE673: //docomo fastfood
- buff.append("");
- break;
- case 0xE719: //docomo pencil
- buff.append("");
- break;
- case 0xE697: //docomo upwardleft
- buff.append("");
- break;
- case 0xE730: //docomo clip
- buff.append("");
- break;
- case 0xE6ED: //docomo heart02
- buff.append("");
- break;
- case 0xE69A: //docomo eyeglass
- buff.append("");
- break;
- case 0xE65E: //docomo car
- buff.append("");
- break;
- case 0xE742: //docomo cherry
- buff.append("");
- break;
- case 0xE71C: //docomo sandclock
- buff.append("");
- break;
- case 0xE735: //docomo recycle
- buff.append("");
- break;
- case 0xE752: //docomo delicious
- buff.append("");
- break;
- case 0xE69E: //docomo moon2
- buff.append("");
- break;
- case 0xE68A: //docomo tv
- buff.append("");
- break;
- case 0xE706: //docomo sweat01
- buff.append("");
- break;
- case 0xE738: //docomo ban
- buff.append("");
- break;
- case 0xE672: //docomo beer
- buff.append("");
- break;
- case 0xE640: //docomo rain
- buff.append("");
- break;
- case 0xE69F: //docomo moon3
- buff.append("");
- break;
- case 0xE657: //docomo ski
- buff.append("");
- break;
- case 0xE70C: //docomo appli01
- buff.append("");
- break;
- case 0xE6E5: //docomo four
- buff.append("");
- break;
- case 0xE699: //docomo shoe
- buff.append("");
- break;
- case 0xE63F: //docomo cloud
- buff.append("");
- break;
- case 0xE72F: //docomo ng
- buff.append("");
- break;
- case 0xE6A3: //docomo yacht
- buff.append("");
- break;
- case 0xE73A: //docomo pass
- buff.append("");
- break;
- case 0xE67C: //docomo drama
- buff.append("");
- break;
- case 0xE727: //docomo good
- buff.append("");
- break;
- case 0xE6EB: //docomo zero
- buff.append("");
- break;
- case 0xE72C: //docomo catface
- buff.append("");
- break;
- case 0xE6D5: //docomo d-point
- buff.append("");
- break;
- case 0xE6F2: //docomo despair
- buff.append("");
- break;
- case 0xE700: //docomo down
- buff.append("");
- break;
- case 0xE655: //docomo tennis
- buff.append("");
- break;
- case 0xE703: //docomo sign02
- buff.append("");
- break;
- case 0xE711: //docomo denim
- buff.append("");
- break;
- case 0xE705: //docomo impact
- buff.append("");
- break;
- case 0xE642: //docomo thunder
- buff.append("");
- break;
- case 0xE66C: //docomo parking
- buff.append("");
- break;
- case 0xE6F3: //docomo sad
- buff.append("");
- break;
- case 0xE71E: //docomo japanesetea
- buff.append("");
- break;
- case 0xE6FD: //docomo punch
- buff.append("");
- break;
- case 0xE73D: //docomo updown
- buff.append("");
- break;
- case 0xE66F: //docomo restaurant
- buff.append("");
- break;
- case 0xE66E: //docomo toilet
- buff.append("");
- break;
- case 0xE739: //docomo empty
- buff.append("");
- break;
- case 0xE723: //docomo coldsweats02
- buff.append("");
- break;
- case 0xE6B9: //docomo end
- buff.append("");
- break;
- case 0xE67B: //docomo art
- buff.append("");
- break;
- case 0xE72E: //docomo weep
- buff.append("");
- break;
- case 0xE715: //docomo dollar
- buff.append("");
- break;
- case 0xE6CF: //docomo mailto
- buff.append("");
- break;
- case 0xE6F8: //docomo cute
- buff.append("");
- break;
- case 0xE6DD: //docomo new
- buff.append("");
- break;
- case 0xE651: //docomo pisces
- buff.append("");
- break;
- case 0xE756: //docomo wine
- buff.append("");
- break;
- case 0xE649: //docomo cancer
- buff.append("");
- break;
- case 0xE650: //docomo aquarius
- buff.append("");
- break;
- case 0xE740: //docomo fuji
- buff.append("");
- break;
- case 0xE681: //docomo camera
- buff.append("");
- break;
- case 0xE71F: //docomo watch
- buff.append("");
- break;
- case 0xE6EE: //docomo heart03
- buff.append("");
- break;
- case 0xE71A: //docomo crown
- buff.append("");
- break;
- case 0xE6B3: //docomo night
- buff.append("");
- break;
- case 0xE66B: //docomo gasstation
- buff.append("");
- break;
- case 0xE692: //docomo ear
- buff.append("");
- break;
- case 0xE685: //docomo present
- buff.append("");
- break;
- case 0xE6E9: //docomo eight
- buff.append("");
- break;
- case 0xE70F: //docomo moneybag
- buff.append("");
- break;
- case 0xE749: //docomo riceball
- buff.append("");
- break;
- case 0xE6A0: //docomo fullmoon
- buff.append("");
- break;
- case 0xE74D: //docomo bread
- buff.append("");
- break;
- case 0xE665: //docomo postoffice
- buff.append("");
- break;
- case 0xE677: //docomo movie
- buff.append("");
- break;
- case 0xE668: //docomo atm
- buff.append("");
- break;
- case 0xE688: //docomo mobilephone
- buff.append("");
- break;
- case 0xE6FA: //docomo shine
- buff.append("");
- break;
- case 0xE713: //docomo bell
- buff.append("");
- break;
- case 0xE74B: //docomo bottle
- buff.append("");
- break;
- case 0xE754: //docomo horse
- buff.append("");
- break;
- case 0xE751: //docomo fish
- buff.append("");
- break;
- case 0xE659: //docomo motorsports
- buff.append("");
- break;
- case 0xE6D3: //docomo mail
- buff.append("");
- break;
- // These emoji codepoints are generated by tools/make_emoji in the K-9 source tree
- // The spaces between the < and the img are a hack to avoid triggering
- // K-9's 'load images' button
-
- case 0xE223: //softbank eight
- buff.append("");
- break;
- case 0xE415: //softbank coldsweats01
- buff.append("");
- break;
- case 0xE21F: //softbank four
- buff.append("");
- break;
- case 0xE125: //softbank ticket
- buff.append("");
- break;
- case 0xE148: //softbank book
- buff.append("");
- break;
- case 0xE242: //softbank cancer
- buff.append("");
- break;
- case 0xE31C: //softbank rouge
- buff.append("");
- break;
- case 0xE252: //softbank danger
- buff.append("");
- break;
- case 0xE011: //softbank scissors
- buff.append("");
- break;
- case 0xE342: //softbank riceball
- buff.append("");
- break;
- case 0xE04B: //softbank rain
- buff.append("");
- break;
- case 0xE03E: //softbank note
- buff.append("");
- break;
- case 0xE43C: //softbank sprinkle
- buff.append("");
- break;
- case 0xE20A: //softbank wheelchair
- buff.append("");
- break;
- case 0xE42A: //softbank basketball
- buff.append("");
- break;
- case 0xE03D: //softbank movie
- buff.append("");
- break;
- case 0xE30E: //softbank smoking
- buff.append("");
- break;
- case 0xE003: //softbank kissmark
- buff.append("");
- break;
- case 0xE21C: //softbank one
- buff.append("");
- break;
- case 0xE237: //softbank upwardleft
- buff.append("");
- break;
- case 0xE407: //softbank sad
- buff.append("");
- break;
- case 0xE03B: //softbank fuji
- buff.append("");
- break;
- case 0xE40E: //softbank gawk
- buff.append("");
- break;
- case 0xE245: //softbank libra
- buff.append("");
- break;
- case 0xE24A: //softbank pisces
- buff.append("");
- break;
- case 0xE443: //softbank typhoon
- buff.append("");
- break;
- case 0xE052: //softbank dog
- buff.append("");
- break;
- case 0xE244: //softbank virgo
- buff.append("");
- break;
- case 0xE523: //softbank chick
- buff.append("");
- break;
- case 0xE023: //softbank heart03
- buff.append("");
- break;
- case 0xE325: //softbank bell
- buff.append("");
- break;
- case 0xE239: //softbank downwardleft
- buff.append("");
- break;
- case 0xE20C: //softbank heart
- buff.append("");
- break;
- case 0xE211: //softbank freedial
- buff.append("");
- break;
- case 0xE11F: //softbank chair
- buff.append("");
- break;
- case 0xE108: //softbank coldsweats02
- buff.append("");
- break;
- case 0xE330: //softbank dash
- buff.append("");
- break;
- case 0xE404: //softbank smile
- buff.append("");
- break;
- case 0xE304: //softbank tulip
- buff.append("");
- break;
- case 0xE419: //softbank eye
- buff.append("");
- break;
- case 0xE13D: //softbank thunder
- buff.append("");
- break;
- case 0xE013: //softbank ski
- buff.append("");
- break;
- case 0xE136: //softbank bicycle
- buff.append("");
- break;
- case 0xE059: //softbank angry
- buff.append("");
- break;
- case 0xE01D: //softbank airplane
- buff.append("");
- break;
- case 0xE048: //softbank snow
- buff.append("");
- break;
- case 0xE435: //softbank bullettrain
- buff.append("");
- break;
- case 0xE20E: //softbank spade
- buff.append("");
- break;
- case 0xE247: //softbank sagittarius
- buff.append("");
- break;
- case 0xE157: //softbank school
- buff.append("");
- break;
- case 0xE10F: //softbank flair
- buff.append("");
- break;
- case 0xE502: //softbank art
- buff.append("");
- break;
- case 0xE338: //softbank japanesetea
- buff.append("");
- break;
- case 0xE34B: //softbank birthday
- buff.append("");
- break;
- case 0xE22B: //softbank empty
- buff.append("");
- break;
- case 0xE311: //softbank bomb
- buff.append("");
- break;
- case 0xE012: //softbank paper
- buff.append("");
- break;
- case 0xE151: //softbank toilet
- buff.append("");
- break;
- case 0xE01A: //softbank horse
- buff.append("");
- break;
- case 0xE03A: //softbank gasstation
- buff.append("");
- break;
- case 0xE03F: //softbank key
- buff.append("");
- break;
- case 0xE00D: //softbank punch
- buff.append("");
- break;
- case 0xE24D: //softbank ok
- buff.append("");
- break;
- case 0xE105: //softbank bleah
- buff.append("");
- break;
- case 0xE00E: //softbank good
- buff.append("");
- break;
- case 0xE154: //softbank atm
- buff.append("");
- break;
- case 0xE405: //softbank wink
- buff.append("");
- break;
- case 0xE030: //softbank cherryblossom
- buff.append("");
- break;
- case 0xE057: //softbank happy01
- buff.append("");
- break;
- case 0xE229: //softbank id
- buff.append("");
- break;
- case 0xE016: //softbank baseball
- buff.append("");
- break;
- case 0xE044: //softbank wine
- buff.append("");
- break;
- case 0xE115: //softbank run
- buff.append("");
- break;
- case 0xE14F: //softbank parking
- buff.append("");
- break;
- case 0xE327: //softbank heart04
- buff.append("");
- break;
- case 0xE014: //softbank golf
- buff.append("");
- break;
- case 0xE021: //softbank sign01
- buff.append("");
- break;
- case 0xE30A: //softbank music
- buff.append("");
- break;
- case 0xE411: //softbank crying
- buff.append("");
- break;
- case 0xE536: //softbank foot
- buff.append("");
- break;
- case 0xE047: //softbank beer
- buff.append("");
- break;
- case 0xE43E: //softbank wave
- buff.append("");
- break;
- case 0xE022: //softbank heart01
- buff.append("");
- break;
- case 0xE007: //softbank shoe
- buff.append("");
- break;
- case 0xE010: //softbank rock
- buff.append("");
- break;
- case 0xE32E: //softbank shine
- buff.append("");
- break;
- case 0xE055: //softbank penguin
- buff.append("");
- break;
- case 0xE03C: //softbank karaoke
- buff.append("");
- break;
- case 0xE018: //softbank soccer
- buff.append("");
- break;
- case 0xE159: //softbank bus
- buff.append("");
- break;
- case 0xE107: //softbank shock
- buff.append("");
- break;
- case 0xE04A: //softbank sun
- buff.append("");
- break;
- case 0xE156: //softbank 24hours
- buff.append("");
- break;
- case 0xE110: //softbank clover
- buff.append("");
- break;
- case 0xE034: //softbank ring
- buff.append("");
- break;
- case 0xE24F: //softbank r-mark
- buff.append("");
- break;
- case 0xE112: //softbank present
- buff.append("");
- break;
- case 0xE14D: //softbank bank
- buff.append("");
- break;
- case 0xE42E: //softbank rvcar
- buff.append("");
- break;
- case 0xE13E: //softbank boutique
- buff.append("");
- break;
- case 0xE413: //softbank weep
- buff.append("");
- break;
- case 0xE241: //softbank gemini
- buff.append("");
- break;
- case 0xE212: //softbank new
- buff.append("");
- break;
- case 0xE324: //softbank slate
- buff.append("");
- break;
- case 0xE220: //softbank five
- buff.append("");
- break;
- case 0xE503: //softbank drama
- buff.append("");
- break;
- case 0xE248: //softbank capricornus
- buff.append("");
- break;
- case 0xE049: //softbank cloud
- buff.append("");
- break;
- case 0xE243: //softbank leo
- buff.append("");
- break;
- case 0xE326: //softbank notes
- buff.append("");
- break;
- case 0xE00B: //softbank faxto
- buff.append("");
- break;
- case 0xE221: //softbank six
- buff.append("");
- break;
- case 0xE240: //softbank taurus
- buff.append("");
- break;
- case 0xE24E: //softbank copyright
- buff.append("");
- break;
- case 0xE224: //softbank nine
- buff.append("");
- break;
- case 0xE008: //softbank camera
- buff.append("");
- break;
- case 0xE01E: //softbank train
- buff.append("");
- break;
- case 0xE20D: //softbank diamond
- buff.append("");
- break;
- case 0xE009: //softbank telephone
- buff.append("");
- break;
- case 0xE019: //softbank fish
- buff.append("");
- break;
- case 0xE01C: //softbank yacht
- buff.append("");
- break;
- case 0xE40A: //softbank confident
- buff.append("");
- break;
- case 0xE246: //softbank scorpius
- buff.append("");
- break;
- case 0xE120: //softbank fastfood
- buff.append("");
- break;
- case 0xE323: //softbank bag
- buff.append("");
- break;
- case 0xE345: //softbank apple
- buff.append("");
- break;
- case 0xE339: //softbank bread
- buff.append("");
- break;
- case 0xE13C: //softbank sleepy
- buff.append("");
- break;
- case 0xE106: //softbank lovely
- buff.append("");
- break;
- case 0xE340: //softbank noodle
- buff.append("");
- break;
- case 0xE20F: //softbank club
- buff.append("");
- break;
- case 0xE114: //softbank search
- buff.append("");
- break;
- case 0xE10E: //softbank crown
- buff.append("");
- break;
- case 0xE406: //softbank wobbly
- buff.append("");
- break;
- case 0xE331: //softbank sweat02
- buff.append("");
- break;
- case 0xE04F: //softbank cat
- buff.append("");
- break;
- case 0xE301: //softbank memo
- buff.append("");
- break;
- case 0xE01B: //softbank car
- buff.append("");
- break;
- case 0xE314: //softbank ribbon
- buff.append("");
- break;
- case 0xE315: //softbank secret
- buff.append("");
- break;
- case 0xE236: //softbank up
- buff.append("");
- break;
- case 0xE208: //softbank nosmoking
- buff.append("");
- break;
- case 0xE006: //softbank t-shirt
- buff.append("");
- break;
- case 0xE12A: //softbank tv
- buff.append("");
- break;
- case 0xE238: //softbank downwardright
- buff.append("");
- break;
- case 0xE10B: //softbank pig
- buff.append("");
- break;
- case 0xE126: //softbank cd
- buff.append("");
- break;
- case 0xE402: //softbank catface
- buff.append("");
- break;
- case 0xE416: //softbank pout
- buff.append("");
- break;
- case 0xE045: //softbank cafe
- buff.append("");
- break;
- case 0xE41B: //softbank ear
- buff.append("");
- break;
- case 0xE23F: //softbank aries
- buff.append("");
- break;
- case 0xE21E: //softbank three
- buff.append("");
- break;
- case 0xE056: //softbank delicious
- buff.append("");
- break;
- case 0xE14E: //softbank signaler
- buff.append("");
- break;
- case 0xE155: //softbank hospital
- buff.append("");
- break;
- case 0xE033: //softbank xmas
- buff.append("");
- break;
- case 0xE22A: //softbank full
- buff.append("");
- break;
- case 0xE123: //softbank spa
- buff.append("");
- break;
- case 0xE132: //softbank motorsports
- buff.append("");
- break;
- case 0xE434: //softbank subway
- buff.append("");
- break;
- case 0xE403: //softbank think
- buff.append("");
- break;
- case 0xE043: //softbank restaurant
- buff.append("");
- break;
- case 0xE537: //softbank tm
- buff.append("");
- break;
- case 0xE058: //softbank despair
- buff.append("");
- break;
- case 0xE04C: //softbank moon3
- buff.append("");
- break;
- case 0xE21D: //softbank two
- buff.append("");
- break;
- case 0xE202: //softbank ship
- buff.append("");
- break;
- case 0xE30B: //softbank bottle
- buff.append("");
- break;
- case 0xE118: //softbank maple
- buff.append("");
- break;
- case 0xE103: //softbank loveletter
- buff.append("");
- break;
- case 0xE225: //softbank zero
- buff.append("");
- break;
- case 0xE00C: //softbank pc
- buff.append("");
- break;
- case 0xE210: //softbank sharp
- buff.append("");
- break;
- case 0xE015: //softbank tennis
- buff.append("");
- break;
- case 0xE038: //softbank building
- buff.append("");
- break;
- case 0xE02D: //softbank clock
- buff.append("");
- break;
- case 0xE334: //softbank annoy
- buff.append("");
- break;
- case 0xE153: //softbank postoffice
- buff.append("");
- break;
- case 0xE222: //softbank seven
- buff.append("");
- break;
- case 0xE12F: //softbank dollar
- buff.append("");
- break;
- case 0xE00A: //softbank mobilephone
- buff.append("");
- break;
- case 0xE158: //softbank hotel
- buff.append("");
- break;
- case 0xE249: //softbank aquarius
- buff.append("");
- break;
- case 0xE036: //softbank house
- buff.append("");
- break;
- case 0xE046: //softbank cake
- buff.append("");
- break;
- case 0xE104: //softbank phoneto
- buff.append("");
- break;
- case 0xE44B: //softbank night
- buff.append("");
- break;
- case 0xE313: //softbank hairsalon
- buff.append("");
- break;
- // These emoji codepoints are generated by tools/make_emoji in the K-9 source tree
- // The spaces between the < and the img are a hack to avoid triggering
- // K-9's 'load images' button
-
- case 0xE488: //kddi sun
- buff.append("");
- break;
- case 0xEA88: //kddi id
- buff.append("");
- break;
- case 0xE4BA: //kddi baseball
- buff.append("");
- break;
- case 0xE525: //kddi four
- buff.append("");
- break;
- case 0xE578: //kddi free
- buff.append("");
- break;
- case 0xE4C1: //kddi wine
- buff.append("");
- break;
- case 0xE512: //kddi bell
- buff.append("");
- break;
- case 0xEB83: //kddi rock
- buff.append("");
- break;
- case 0xE4D0: //kddi cake
- buff.append("");
- break;
- case 0xE473: //kddi crying
- buff.append("");
- break;
- case 0xE48C: //kddi rain
- buff.append("");
- break;
- case 0xEAC2: //kddi bearing
- buff.append("");
- break;
- case 0xE47E: //kddi nosmoking
- buff.append("");
- break;
- case 0xEAC0: //kddi despair
- buff.append("");
- break;
- case 0xE559: //kddi r-mark
- buff.append("");
- break;
- case 0xEB2D: //kddi up
- buff.append("");
- break;
- case 0xEA89: //kddi full
- buff.append("");
- break;
- case 0xEAC9: //kddi gawk
- buff.append("");
- break;
- case 0xEB79: //kddi recycle
- buff.append("");
- break;
- case 0xE5AC: //kddi zero
- buff.append("");
- break;
- case 0xEAAE: //kddi japanesetea
- buff.append("");
- break;
- case 0xEB30: //kddi sign03
- buff.append("");
- break;
- case 0xE4B6: //kddi soccer
- buff.append("");
- break;
- case 0xE556: //kddi downwardleft
- buff.append("");
- break;
- case 0xE4BE: //kddi slate
- buff.append("");
- break;
- case 0xE4A5: //kddi toilet
- buff.append("");
- break;
- // Skipping kddi codepoint E523 two
- // It conflicts with an earlier definition from another carrier:
- // softbank chick
-
- case 0xE496: //kddi scorpius
- buff.append("");
- break;
- case 0xE4C6: //kddi game
- buff.append("");
- break;
- case 0xE5A0: //kddi birthday
- buff.append("");
- break;
- case 0xE5B8: //kddi pc
- buff.append("");
- break;
- case 0xE516: //kddi hairsalon
- buff.append("");
- break;
- case 0xE475: //kddi sleepy
- buff.append("");
- break;
- case 0xE4A3: //kddi atm
- buff.append("");
- break;
- case 0xE59A: //kddi basketball
- buff.append("");
- break;
- case 0xE497: //kddi sagittarius
- buff.append("");
- break;
- case 0xEACD: //kddi delicious
- buff.append("");
- break;
- case 0xE5A8: //kddi newmoon
- buff.append("");
- break;
- case 0xE49E: //kddi ticket
- buff.append("");
- break;
- case 0xE5AE: //kddi wobbly
- buff.append("");
- break;
- case 0xE4E6: //kddi sweat02
- buff.append("");
- break;
- case 0xE59E: //kddi event
- buff.append("");
- break;
- case 0xE4AB: //kddi house
- buff.append("");
- break;
- case 0xE491: //kddi gemini
- buff.append("");
- break;
- case 0xE4C9: //kddi xmas
- buff.append("");
- break;
- case 0xE5BE: //kddi note
- buff.append("");
- break;
- case 0xEB2F: //kddi sign02
- buff.append("");
- break;
- case 0xE508: //kddi music
- buff.append("");
- break;
- case 0xE5DF: //kddi hospital
- buff.append("");
- break;
- case 0xE5BC: //kddi subway
- buff.append("");
- break;
- case 0xE5C9: //kddi crown
- buff.append("");
- break;
- case 0xE4BC: //kddi spa
- buff.append("");
- break;
- case 0xE514: //kddi ring
- buff.append("");
- break;
- // Skipping kddi codepoint E502 tv
- // It conflicts with an earlier definition from another carrier:
- // softbank art
-
- case 0xE4AC: //kddi restaurant
- buff.append("");
- break;
- case 0xE529: //kddi eight
- buff.append("");
- break;
- case 0xE518: //kddi search
- buff.append("");
- break;
- case 0xE505: //kddi notes
- buff.append("");
- break;
- case 0xE498: //kddi capricornus
- buff.append("");
- break;
- case 0xEB7E: //kddi snail
- buff.append("");
- break;
- case 0xEA97: //kddi bottle
- buff.append("");
- break;
- case 0xEB08: //kddi phoneto
- buff.append("");
- break;
- case 0xE4D2: //kddi cherry
- buff.append("");
- break;
- case 0xE54D: //kddi downwardright
- buff.append("");
- break;
- case 0xE5C3: //kddi wink
- buff.append("");
- break;
- case 0xEAAC: //kddi ski
- buff.append("");
- break;
- case 0xE515: //kddi camera
- buff.append("");
- break;
- case 0xE5B6: //kddi t-shirt
- buff.append("");
- break;
- case 0xE5C4: //kddi lovely
- buff.append("");
- break;
- case 0xE4AD: //kddi building
- buff.append("");
- break;
- case 0xE4CE: //kddi maple
- buff.append("");
- break;
- case 0xE5AA: //kddi moon2
- buff.append("");
- break;
- case 0xE5B4: //kddi noodle
- buff.append("");
- break;
- case 0xE5A6: //kddi scissors
- buff.append("");
- break;
- case 0xE4AA: //kddi bank
- buff.append("");
- break;
- case 0xE4B5: //kddi train
- buff.append("");
- break;
- case 0xE477: //kddi heart03
- buff.append("");
- break;
- case 0xE481: //kddi danger
- buff.append("");
- break;
- case 0xE597: //kddi cafe
- buff.append("");
- break;
- case 0xEB2B: //kddi shoe
- buff.append("");
- break;
- case 0xEB7C: //kddi wave
- buff.append("");
- break;
- case 0xE471: //kddi happy01
- buff.append("");
- break;
- case 0xE4CA: //kddi cherryblossom
- buff.append("");
- break;
- case 0xE4D5: //kddi riceball
- buff.append("");
- break;
- case 0xE587: //kddi wrench
- buff.append("");
- break;
- case 0xEB2A: //kddi foot
- buff.append("");
- break;
- case 0xE47D: //kddi smoking
- buff.append("");
- break;
- case 0xE4DC: //kddi penguin
- buff.append("");
- break;
- case 0xE4B3: //kddi airplane
- buff.append("");
- break;
- case 0xE4DE: //kddi pig
- buff.append("");
- break;
- case 0xE59B: //kddi pocketbell
- buff.append("");
- break;
- case 0xE4AF: //kddi bus
- buff.append("");
- break;
- case 0xE4A6: //kddi parking
- buff.append("");
- break;
- case 0xE486: //kddi moon3
- buff.append("");
- break;
- case 0xE5A4: //kddi eye
- buff.append("");
- break;
- case 0xE50C: //kddi cd
- buff.append("");
- break;
- case 0xE54C: //kddi upwardleft
- buff.append("");
- break;
- case 0xEA82: //kddi ship
- buff.append("");
- break;
- case 0xE4B1: //kddi car
- buff.append("");
- break;
- case 0xEB80: //kddi smile
- buff.append("");
- break;
- case 0xE5B0: //kddi impact
- buff.append("");
- break;
- case 0xE504: //kddi moneybag
- buff.append("");
- break;
- case 0xE4B9: //kddi motorsports
- buff.append("");
- break;
- case 0xE494: //kddi virgo
- buff.append("");
- break;
- case 0xE595: //kddi heart01
- buff.append("");
- break;
- case 0xEB03: //kddi pen
- buff.append("");
- break;
- case 0xE57D: //kddi yen
- buff.append("");
- break;
- case 0xE598: //kddi mist
- buff.append("");
- break;
- case 0xE5A2: //kddi diamond
- buff.append("");
- break;
- case 0xE4A4: //kddi 24hours
- buff.append("");
- break;
- case 0xE524: //kddi three
- buff.append("");
- break;
- case 0xEB7B: //kddi updown
- buff.append("");
- break;
- case 0xE5A1: //kddi spade
- buff.append("");
- break;
- case 0xE495: //kddi libra
- buff.append("");
- break;
- case 0xE588: //kddi mobilephone
- buff.append("");
- break;
- case 0xE599: //kddi golf
- buff.append("");
- break;
- case 0xE520: //kddi faxto
- buff.append("");
- break;
- // Skipping kddi codepoint E503 karaoke
- // It conflicts with an earlier definition from another carrier:
- // softbank drama
-
- case 0xE4D6: //kddi fastfood
- buff.append("");
- break;
- case 0xE4A1: //kddi pencil
- buff.append("");
- break;
- case 0xE522: //kddi one
- buff.append("");
- break;
- case 0xEB84: //kddi sharp
- buff.append("");
- break;
- case 0xE476: //kddi flair
- buff.append("");
- break;
- case 0xE46B: //kddi run
- buff.append("");
- break;
- case 0xEAF5: //kddi drama
- buff.append("");
- break;
- case 0xEAB9: //kddi apple
- buff.append("");
- break;
- case 0xE4EB: //kddi kissmark
- buff.append("");
- break;
- case 0xE55D: //kddi enter
- buff.append("");
- break;
- case 0xE59F: //kddi ribbon
- buff.append("");
- break;
- case 0xE526: //kddi five
- buff.append("");
- break;
- case 0xE571: //kddi gasstation
- buff.append("");
- break;
- case 0xE517: //kddi movie
- buff.append("");
- break;
- case 0xE4B8: //kddi snowboard
- buff.append("");
- break;
- case 0xEAE8: //kddi sprinkle
- buff.append("");
- break;
- case 0xEA80: //kddi school
- buff.append("");
- break;
- case 0xE47C: //kddi sandclock
- buff.append("");
- break;
- case 0xEB31: //kddi sign05
- buff.append("");
- break;
- case 0xE5AB: //kddi clear
- buff.append("");
- break;
- case 0xE5DE: //kddi postoffice
- buff.append("");
- break;
- case 0xEB62: //kddi mailto
- buff.append("");
- break;
- case 0xE528: //kddi seven
- buff.append("");
- break;
- case 0xE4C2: //kddi bar
- buff.append("");
- break;
- case 0xE487: //kddi thunder
- buff.append("");
- break;
- case 0xE5A9: //kddi moon1
- buff.append("");
- break;
- case 0xEB7A: //kddi leftright
- buff.append("");
- break;
- case 0xE513: //kddi clover
- buff.append("");
- break;
- case 0xE492: //kddi cancer
- buff.append("");
- break;
- case 0xEB78: //kddi loveletter
- buff.append("");
- break;
- case 0xE4E0: //kddi chick
- buff.append("");
- break;
- case 0xE4CF: //kddi present
- buff.append("");
- break;
- case 0xE478: //kddi heart04
- buff.append("");
- break;
- case 0xEAC3: //kddi sad
- buff.append("");
- break;
- case 0xE52A: //kddi nine
- buff.append("");
- break;
- case 0xE482: //kddi sign01
- buff.append("");
- break;
- case 0xEABF: //kddi catface
- buff.append("");
- break;
- case 0xE527: //kddi six
- buff.append("");
- break;
- case 0xE52C: //kddi mobaq
- buff.append("");
- break;
- case 0xE485: //kddi snow
- buff.append("");
- break;
- case 0xE4B7: //kddi tennis
- buff.append("");
- break;
- case 0xE5BD: //kddi fuji
- buff.append("");
- break;
- case 0xE558: //kddi copyright
- buff.append("");
- break;
- case 0xE4D8: //kddi horse
- buff.append("");
- break;
- case 0xE4B0: //kddi bullettrain
- buff.append("");
- break;
- case 0xE596: //kddi telephone
- buff.append("");
- break;
- case 0xE48F: //kddi aries
- buff.append("");
- break;
- case 0xE46A: //kddi signaler
- buff.append("");
- break;
- case 0xE472: //kddi angry
- buff.append("");
- break;
- case 0xE54E: //kddi tm
- buff.append("");
- break;
- case 0xE51A: //kddi boutique
- buff.append("");
- break;
- case 0xE493: //kddi leo
- buff.append("");
- break;
- case 0xE5A3: //kddi club
- buff.append("");
- break;
- case 0xE499: //kddi aquarius
- buff.append("");
- break;
- case 0xE4AE: //kddi bicycle
- buff.append("");
- break;
- case 0xE4E7: //kddi bleah
- buff.append("");
- break;
- case 0xE49F: //kddi book
- buff.append("");
- break;
- case 0xE5AD: //kddi ok
- buff.append("");
- break;
- case 0xE5A7: //kddi paper
- buff.append("");
- break;
- case 0xE4E5: //kddi annoy
- buff.append("");
- break;
- case 0xE4A0: //kddi clip
- buff.append("");
- break;
- case 0xE509: //kddi rouge
- buff.append("");
- break;
- case 0xEAAF: //kddi bread
- buff.append("");
- break;
- case 0xE519: //kddi key
- buff.append("");
- break;
- case 0xE594: //kddi clock
- buff.append("");
- break;
- case 0xEB7D: //kddi bud
- buff.append("");
- break;
- case 0xEA8A: //kddi empty
- buff.append("");
- break;
- case 0xE5B5: //kddi new
- buff.append("");
- break;
- case 0xE47A: //kddi bomb
- buff.append("");
- break;
- case 0xE5C6: //kddi coldsweats02
- buff.append("");
- break;
- case 0xE49A: //kddi pisces
- buff.append("");
- break;
- case 0xE4F3: //kddi punch
- buff.append("");
- break;
- case 0xEB5D: //kddi pout
- buff.append("");
- break;
- case 0xE469: //kddi typhoon
- buff.append("");
- break;
- case 0xE5B1: //kddi sweat01
- buff.append("");
- break;
- case 0xE4C7: //kddi dollar
- buff.append("");
- break;
- case 0xE5C5: //kddi shock
- buff.append("");
- break;
- case 0xE4F9: //kddi good
- buff.append("");
- break;
- case 0xE4F1: //kddi secret
- buff.append("");
- break;
- case 0xE4E4: //kddi tulip
- buff.append("");
- break;
- case 0xEA81: //kddi hotel
- buff.append("");
- break;
- case 0xE4FE: //kddi eyeglass
- buff.append("");
- break;
- case 0xEAF1: //kddi night
- buff.append("");
- break;
- case 0xE555: //kddi upwardright
- buff.append("");
- break;
- case 0xEB2E: //kddi down
- buff.append("");
- break;
- case 0xE4DB: //kddi cat
- buff.append("");
- break;
- case 0xE59C: //kddi art
- buff.append("");
- break;
- case 0xEB69: //kddi weep
- buff.append("");
- break;
- case 0xE4F4: //kddi dash
- buff.append("");
- break;
- case 0xE490: //kddi taurus
- buff.append("");
- break;
- case 0xE57A: //kddi watch
- buff.append("");
- break;
- case 0xEB2C: //kddi flag
- buff.append("");
- break;
- case 0xEB77: //kddi denim
- buff.append("");
- break;
- case 0xEAC5: //kddi confident
- buff.append("");
- break;
- case 0xE4B4: //kddi yacht
- buff.append("");
- break;
- case 0xE49C: //kddi bag
- buff.append("");
- break;
- case 0xE5A5: //kddi ear
- buff.append("");
- break;
- case 0xE4E1: //kddi dog
- buff.append("");
- break;
- case 0xE521: //kddi mail
- buff.append("");
- break;
- case 0xEB35: //kddi banana
- buff.append("");
- break;
- case 0xEAA5: //kddi heart
- buff.append("");
- break;
- case 0xE47F: //kddi wheelchair
- buff.append("");
- break;
- case 0xEB75: //kddi heart02
- buff.append("");
- break;
- case 0xE48D: //kddi cloud
- buff.append("");
- break;
- case 0xE4C3: //kddi beer
- buff.append("");
- break;
- case 0xEAAB: //kddi shine
- buff.append("");
- break;
- case 0xEA92: //kddi memo
- buff.append("");
- break;
- default:
- buff.append((char)c);
- }//switch
- }
}
- catch (IOException e)
- {
- //Should never happen
- Log.e(K9.LOG_TAG, null, e);
- }
-
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()