The implementation of emojis on different platforms took place across a three-decade period, starting in the 1990s. Today, the exact appearance of emoji is not prescribed but can vary between fonts and platforms, much like different typefaces.

For example, the Apple Color Emoji typeface is proprietary to Apple, and can only be used on Apple devices (without additional hacking). Different computing companies have developed their own fonts to display emoji, some of which have been open-sourced to permit their reuse. Both color and monochrome emoji typefaces exist, as well as at least one animated design.

Implementation of emojis

Technical aspects

JIS, Shift JIS and Private Use Area encodings

Various, often incompatible, character encoding schemes were developed by the different mobile providers in Japan for their own emoji sets. When transmitted in Shift JIS on NTT DoCoMo, emoji symbols are specified as a two-byte sequence in the range F89F through F9FC (as expressed in hexadecimal). Emoji pictograms on au by KDDI are specified using the IMG tag, encoded in Shift JIS between F340 and F7FC, or encoded in extended JIS X 0208 between 7521 and 7B73. SoftBank Mobile emoji support colors and animation, and use different formats on 2G versus 3G: in the 2G format, they are encoded in sequences using the and control characters, whereas in the 3G format, they are encoded in Shift JIS between F741 and FBDE. The SoftBank 3G format collides with the overlapping Shift JIS ranges used by the other vendors: for example, the Shift JIS representation F797 is used for a convenience store (🏪) by SoftBank, but for a wristwatch (⌚️) by KDDI.

Implementation of emojis

DoCoMo and SoftBank also developed their own schemes for representing their emoji sets in extended JIS X 0208 between 7522 and 7E38. These often matched the encodings of similar KDDI emoji where they existed: for example, the camera (📷) was represented in Shift JIS as F8E2 by DoCoMo, F6EE by KDDI, and F948 by SoftBank, but as 7670 in JIS by all three.

Implementation of emojis

All three vendors and Google (for Gmail) each developed at least one scheme for encoding their emoji in the Unicode Private Use Area (with au developing two); DoCoMo, for example, used the range U+E63E through U+E757. Mostly, these five schemes do not overlap, but au's primary private use scheme partly collides with SoftBank's. Versions of iOS prior to 5.1 encoded emoji in the SoftBank private use area scheme, with later versions using standard Unicode.

Supplementary Multilingual Plane support

Most, but not all, emoji are included in the Supplementary Multilingual Plane (SMP) of Unicode. The SMP also includes, for example, ancient scripts such as Cuneiform or Egyptian hieroglyphs, some modern scripts such as Adlam or Osage, and special-use characters such as Musical Symbols or Mathematical Alphanumeric Symbols.

Unicode was originally designed as a 16-bit encoding, which could be represented in a pure 16-bit form known as UCS-2. This corresponds to the Basic Multilingual Plane (BMP) of the Universal Coded Character Set. In Unicode 2.0, this was expanded to 17 planes (numbered 0 through 16, where the BMP is plane 0), and the first non-BMP characters were allocated in Unicode 3.1. UCS-2 is now obsolete and deprecated in favour of UTF-16, a variable-width encoding which follows UCS-2 for the BMP, but extends it with four-byte codes representing non-BMP characters. Non-BMP characters (in the SMP and in other supplementary planes, such as additional hanzi in the Supplementary Ideographic Plane, including some of the Cantonese characters from HKSCS) now number in the tens of thousands.

Some systems introduced prior to the advent of Unicode emoji were only designed to support characters in the BMP, on the assumption that non-BMP characters would rarely be encountered, although failure to properly handle characters outside of the BMP precludes Unicode compliance. For example, earlier versions of MySQL supported UCS-2 and a variant of UTF-8 excluding four-byte codes, thus not handling non-BMP characters correctly. Support for UTF-32 and full support for UTF-16 and UTF-8 (under the name ) was added in version 5.5, with retained as an alias for the up-to-three-byte version, although this is intended to be changed in the future.

The introduction of Unicode emoji created an incentive for vendors to improve their support for non-BMP characters. The Unicode Consortium notes that "[b]ecause of the demand for emoji, many implementations have upgraded their Unicode support substantially."