tr51-29.html
4366 lines<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><base href="https://www.unicode.org/reports/tr51/tr51-29.html">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>UTS #51: Unicode Emoji</title>
<link rel="stylesheet" type="text/css"
href="https://www.unicode.org/reports/reports-v2.css">
<style type="text/css">
<!--
.green {
color: #00B800;
}
.nowrap {
white-space: nowrap;
}
.indent {
margin-left: 1em;
margin-right: 1em;
}
td > p, th > p {
margin:0pt;
}
-->
</style>
</head>
<body>
<table class="header">
<tr>
<td class="icon" style="width:38px; height:35px">
<a href="https://www.unicode.org/">
<img border="0" src="https://www.unicode.org/webscripts/logo60s2.gif" align="middle"
alt="[Unicode]" width="34" height="33"></a>
</td>
<td class="icon" style="vertical-align:middle">
<a class="bar"> </a>
<a class="bar" href="https://www.unicode.org/reports/"><font size="3">Technical Reports</font></a>
</td>
</tr>
<tr>
<td colspan="2" class="gray"> </td>
</tr>
</table>
<div class="body">
<h2 align="center">
<span class="uaxtitle">Unicode® Technical Standard #51</span>
</h2>
<h1>Unicode Emoji</h1>
<table class="simple" width="90%">
<tr>
<td width="20%">Version</td>
<td>17.0</td>
</tr>
<tr>
<td>Editors</td>
<td>Mark Davis (Google LLC), Ned Holbrook (Apple Inc.)</td>
</tr>
<tr>
<td>Date</td>
<td>2025-09-04</td>
</tr>
<tr>
<td>This Version</td>
<td><a href="https://www.unicode.org/reports/tr51/tr51-29.html">https://www.unicode.org/reports/tr51/tr51-29.html</a></td>
</tr>
<tr>
<td>Previous Version</td>
<td><a href="https://www.unicode.org/reports/tr51/tr51-27.html">https://www.unicode.org/reports/tr51/tr51-27.html</a></td>
</tr>
<tr>
<td>Latest Version</td>
<td><a href="https://www.unicode.org/reports/tr51/">https://www.unicode.org/reports/tr51/</a></td>
</tr>
<tr>
<td valign="top">Latest Proposed Update</td>
<td valign="top"><a
href="https://www.unicode.org/reports/tr51/proposed.html">https://www.unicode.org/reports/tr51/proposed.html</a></td>
</tr>
<tr>
<td>Revision</td>
<td><a href="#Modifications">29</a></td>
</tr>
</table>
<p> </p>
<h3>
<i>Summary</i>
</h3>
<p><i>This document defines the structure of Unicode emoji characters and
sequences, and provides data to support that structure, such as which
characters are considered to be emoji, which emoji should be displayed by
default with a text style versus an emoji style, and which can be
displayed with a variety of skin tones.
It also provides design guidelines for improving the interoperability of
emoji characters across platforms and implementations.</i></p>
<p><i>Starting with Version 11.0 of this specification, the repertoire of
emoji characters is synchronized with the Unicode Standard, and has the same
version numbering system. For details, see <em>Section 1.5.2,
<a href="#Versioning">Versioning</a></em>.</i></p>
<h3>
<i>Status</i>
</h3>
<!-- NOT YET APPROVED
<p class="changed">
<i>This is a<b><font color="#ff3333"> draft </font></b>document
which may be updated, replaced, or superseded by other documents at
any time. Publication does not imply endorsement by the Unicode
Consortium. This is not a stable document; it is inappropriate to
cite this document as other than a work in progress.
</i>
</p>
END NOT YET APPROVED -->
<!-- APPROVED -->
<p>
<i>This document has been reviewed by Unicode members and other
interested parties, and has been approved for publication by the
Unicode Consortium. This is a stable document and may be used as
reference material or cited as a normative reference by other
specifications.</i>
</p>
<!-- END APPROVED -->
<blockquote>
<p><i><b>A Unicode Technical Standard (UTS)</b> is an independent specification.
Conformance to the Unicode Standard does not imply conformance to any UTS.</i></p>
</blockquote>
<p> <em>Please submit corrigenda and other comments with the online reporting form [<a href="https://www.unicode.org/reporting.html">Feedback</a>].
Related information that is useful in understanding this document is
found in the <a href="#References">References</a>. For the latest
version of the Unicode Standard, see [<a href="https://www.unicode.org/versions/latest/">Unicode</a>]. For a
list of current Unicode Technical Reports, see [<a href="https://www.unicode.org/reports/">Reports</a>]. For more
information about versions of the Unicode Standard, see [<a href="https://www.unicode.org/versions/">Versions</a>]. </em> </p>
<h3>
<i><a name="Contents" href="#Contents">Contents</a></i>
</h3>
<!-- START Generated TOC: CheckHtmlFiles -->
<ul class="toc">
<li>1 <a href="#Introduction">Introduction</a>
<ul class="toc">
<li>Table: <a href="#Proposals">Emoji Proposals</a></li>
<li>Table: <a href="#Major_Sources">Major Sources</a></li>
<li>1.1 <a href="#Emoticons">Emoticons and Emoji</a></li>
<li>1.2 <a href="#Encoding">Encoding Considerations</a></li>
<li>1.3 <a href="#Goals">Goals</a></li>
<li>1.4 <a href="#Definitions">Definitions</a>
<ul class="toc">
<li>1.4.1 <a href="#Emoji_Characters">Emoji Characters</a></li>
<li>1.4.2 <a href="#Emoji_Presentation">Emoji Presentation</a></li>
<li>1.4.3 <a href="#Emoji_Variation_Sequences">Emoji and Text Presentation Sequences</a></li>
<li>1.4.4 <a href="#Emoji_Modifiers">Emoji Modifiers</a></li>
<li>1.4.5 <a href="#Emoji_Sequences">Emoji Sequences</a></li>
<li>1.4.6 <a href="#Emoji_Sets">Emoji Sets</a></li>
<li>1.4.7 <a href="#Notation">Notation</a></li>
<li>1.4.8 <a href="#Property_Stability">Property Stability</a></li>
<li>1.4.9 <a href="#EBNF_and_Regex">EBNF and Regex</a></li>
</ul>
</li>
<li>1.5 <a href="#Conformance">Conformance</a>
<ul class="toc">
<li>Table: <a href="#Emoji_Capabilities">Emoji Capabilities</a></li>
<li>1.5.1 <a href="#Collation_Conformance">Collation Conformance</a></li>
<li>1.5.2 <a href="#Versioning">Versioning</a>
<ul class="toc">
<li>Table: <a href="#EmojiVersions">Emoji Versions</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>2 <a href="#Design_Guidelines">Design Guidelines</a>
<ul class="toc">
<li>2.1 <a href="#Names">Names</a></li>
<li>2.2 <a href="#Display">Display</a></li>
<li>2.3 <a href="#Gender">Gender</a>
<ul class="toc">
<li>Table: <a href="#ExplicitGenderApperance">Emoji
With Explicit Gender Appearance</a></li>
<li>Table: <a href="#Emoji13NewGenderNeutral">Emoji
Changed to Gender-Neutral in Emoji 13.0+</a></li>
<li>2.3.1 <a href="#gender-neutral">Gender-Neutral Emoji</a></li>
<li>2.3.2 <a href="#marking-gender-in-input">Marking Gender in Emoji Input</a></li>
</ul>
</li>
<li>2.4 <a href="#Diversity">Diversity</a>
<ul class="toc">
<li>Table: <a href="#Emoji_Modifiers_Table">Emoji Modifiers</a></li>
<li>2.4.1 <a href="#Diversity_Implementations">Implementations</a>
<ul class="toc">
<li>Table: <a href="#Subject_Emoji_Modifiers">Sample Emoji Modifier Bases</a></li>
<li>Table: <a href="#Emoji_Modifiers_Display">Expected Emoji Modifiers Display</a></li>
</ul>
</li>
<li>2.4.2 <a href="#Emoji_Modifiers_in_Text">Emoji Modifiers in Text</a>
<ul class="toc">
<li>Table: <a href="#Minipalette">Minipalettes</a></li>
</ul>
</li>
</ul>
</li>
<li>2.5 <a href="#Emoji_ZWJ_Sequences">Emoji ZWJ Sequences</a>
<ul class="toc">
<li>Table: <a href="#ZWJ_Display">ZWJ Sequence Display</a></li>
</ul>
</li>
<li>2.6 <a href="#Multi_Person_Groupings">Multi-Person Groupings</a>
<ul class="toc">
<li>Table: <a href="#MultiPersonGroupingsTable">Multi-Person Groupings</a></li>
<li>2.6.1 <a href="#multiperson_gender">Multi-Person Gender</a>
<ul class="toc">
<li>Table: <a href="#NonGenderedFamilySequences">Non-Gendered Family Sequences</a></li>
<li>Table: <a href="#GenderWithMultiPersonGroupings">
Examples of Gender with Multi-Person Groupings</a></li>
</ul>
</li>
<li>2.6.2 <a href="#multiperson_skintones">Multi-Person Skin Tones</a>
<ul class="toc">
<li>Table: <a href="#SkinTonesForGroupingsUsingSequences">
Examples of Skin
Tones for Multi-Person Groupings Using RGI Sequences</a></li>
<li>Table: <a href="#SkinTonesForGroupingsUsingCharacters">
Examples of Skin
Tones for Multi-Person Groupings Using Single Characters</a></li>
</ul>
</li>
</ul>
</li>
<li>2.7 <a href="#Emoji_Implementation_Notes">Emoji Implementation Notes</a>
<ul class="toc">
<li>2.7.1 <a href="#Emoji_Variation_Selector_Notes">Emoji and Text Presentation Selectors</a></li>
<li>2.7.2 <a href="#Emoji_With_Tags_Notes">Handling Tag Characters</a></li>
</ul>
</li>
<li>2.8 <a href="#hair_components">Hair Components</a></li>
<li>2.9 <a href="#color">Color</a>
<ul class="toc">
<li>Table: <a href="#EmojiGlyphColorExamples">Emoji
Glyph Color Examples</a></li>
</ul>
</li>
<li>2.10 <a href="#Direction">Emoji Glyph Facing Direction</a>
<ul class="toc">
<li>Table: <a href="#EmojiGlyphDirectionExamples">Emoji
Glyph Direction Examples</a></li>
</ul>
</li>
<li>2.11 <a href="#composing_zwj_seq">Order of Emoji ZWJ Sequences</a></li>
</ul>
</li>
<li>3 <a href="#Identification">Which Characters are Emoji</a>
</li>
<li>4 <a href="#Presentation_Style">Presentation Style</a>
<ul class="toc">
<li>Table: <a href="#Emoji_vs_Text_Display">Emoji versus Text Display</a></li>
<li>4.1 <a href="#Emoji_Variation_Selectors">Emoji and Text Presentation Selectors</a></li>
<li>4.2 <a href="#Emoji_Locale_Extension">Emoji Locale Extension</a></li>
<li>4.3 <a href="#Emoji_Script">Emoji Script Codes</a></li>
<li>4.4 <a href="#Other_Emoji_Presentation_Approaches">Other Approaches for Control of Emoji Presentation</a></li>
</ul>
</li>
<li>5 <a href="#Sorting">Ordering and Grouping</a></li>
<li>6 <a href="#Input">Input</a>
<ul class="toc">
<li>Table: <a href="#Palette_Input">Palette Input</a></li>
</ul>
</li>
<li>7 <a href="#Searching">Searching</a></li>
<li>8 <a href="#Longer_Term">Longer Term Solutions</a></li>
<li>Annex A: <a href="#Emoji_Properties_and_Data_Files">Emoji Properties and Data Files</a>
<ul class="toc">
<li>Table: <a href="#Emoji_Properties">Emoji Character Properties</a></li>
<li>A.1 <a href="#Data_Files">Data Files</a>
<ul class="toc">
<li>Table: <a href="#Data_Files_Table">Data Files</a></li>
</ul>
</li>
</ul>
</li>
<li>Annex B: <a href="#Flags">Valid Emoji Flag Sequences</a>
<ul class="toc">
<li>B.1 <a href="#Flag_Presentation">Presentation</a></li>
<li>B.2 <a href="#Flag_Ordering">Ordering</a></li>
</ul>
</li>
<li>Annex C: <a href="#valid-emoji-tag-sequences">Valid Emoji Tag Sequences</a>
<ul class="toc">
<li>C.1 <a href="#flag-emoji-tag-sequences">Flag Emoji Tag Sequences</a>
<ul class="toc">
<li>C.1.1 <a href="#Sample_Valid_Emoji_Tag_Sequences">Sample Valid Emoji Tag Sequences</a>
<ul class="toc">
<li>Table: <a href="#DisplayValidEmojiTagSeqs">Display
of Valid Emoji Tag Sequences</a></li>
</ul>
</li>
<li>C.1.2 <a href="#Sample_Invalid_Emoji_Tag_Sequences">Sample Invalid Emoji Tag Sequences</a>
<ul class="toc">
<li>Table: <a href="#DisplayInvalidEmojiTagSeqs">Display
of Invalid Emoji Tag Sequences</a></li>
</ul>
</li>
<li>C.1.3 <a href="#Sample_Ill_formed_Emoji_Tag_Sequences">Sample Ill-formed Emoji Tag Sequences</a>
<ul class="toc">
<li>Table: <a href="#DisplayIllformedEmojiTagSeqs">Display
of Ill-formed Emoji Tag Sequences</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="#Acknowledgements">Acknowledgments</a></li>
<li><a href="#Rights_to_Emoji_Images">Rights to Emoji Images</a></li>
<li><a href="#References">References</a></li>
<li><a href="#Modifications">Modifications</a></li>
</ul>
<!-- END Generated TOC: CheckHtmlFiles -->
<br>
<hr>
<br>
<h2>
1 <a name="Introduction" href="#Introduction">Introduction</a>
</h2>
<p>Emoji are pictographs (pictorial symbols) that are typically
presented in a colorful cartoon form and used inline in text. They
represent things such as faces, weather, vehicles and buildings, food
and drink, animals and plants, or icons that represent emotions,
feelings, or activities.</p>
<p>
Emoji on smartphones and in chat and email applications have become
extremely popular worldwide. As of March 2015, for example, Instagram
reported that “nearly half of text [on Instagram] contained emoji.”
Individual emoji also vary greatly in popularity (and even by country),
as described in the SwiftKey Emoji Report. See
<a href='https://www.unicode.org/press/emoji.html'>emoji press page</a> for details
about these reports and others.
</p>
<p>Emoji are most often used in quick, short social media messages, where
they connect with the reader and add flavor, color,
and emotion. Emoji do not have the grammar or vocabulary to
substitute for written language. In social media, emoji make up for
the lack of gestures, facial expressions, and intonation that are
found in speech. They also add useful ambiguity to messages, allowing
the writer to convey many different possible concepts at the same
time. Many people are also attracted by the challenge of composing
messages in emoji, and puzzling out emoji messages.</p>
<p>
The word <em>emoji</em> comes from Japanese:
</p>
<p align="center">
<a
href="https://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=%E7%B5%B5"
target='unihan'>絵</a> (e ≅ picture) <a
href="https://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=%E6%96%87"
target='unihan'>文</a><a
href="https://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=%E5%AD%97"
target='unihan'>字</a> (moji ≅ written
character).
</p>
<p>
Emoji may be represented internally as graphics or they may be
represented by normal glyphs encoded in fonts like other characters.
These latter are called <em>emoji characters</em> for clarity. Some
Unicode characters are normally displayed as emoji; some are normally
displayed as ordinary text, and some can be displayed both ways.
</p>
<p>
<a name="Media" href="#Media"></a>There’s been considerable media
attention to emoji since they appeared in the Unicode Standard, with
increased attention starting in late 2013. For example, there were
some 6,000 articles on the emoji appearing in Unicode 7.0, according
to Google News. See the <a href='https://www.unicode.org/press/emoji.html'>emoji
press page</a> for many samples of such articles, and also the <a
href='https://www.unicode.org/press/emoji.html#keynote'>Keynote</a> from the 38th
Internationalization & Unicode Conference.
</p>
<p>Emoji became available in 1999 on Japanese mobile phones. There
was an early proposal in 2000 to encode DoCoMo emoji in the Unicode
standard. At that time, it was unclear whether these characters would
come into widespread use—and there was not support from the Japanese
mobile phone carriers to add them to Unicode—so no action was taken.</p>
<p>The emoji turned out to be quite popular in Japan, but each
mobile phone carrier developed different (but partially overlapping)
sets, and each mobile phone vendor used their own text encoding
extensions, which were incompatible with one another. The vendors
developed cross-mapping tables to allow limited interchange of emoji
characters with phones from other vendors, including email.
Characters from other platforms that could not be displayed were
represented with 〓 (U+3013 GETA MARK), but it was all too easy for
the characters to get corrupted or dropped.</p>
<p>
When non-Japanese email and mobile phone vendors started to support
email exchange with the Japanese carriers, they ran into those
problems. Moreover, there was no way to represent these characters in
Unicode, which was the basis for text in all modern programs. In
2006, Google started work on converting Japanese emoji to Unicode
private-use codes, leading to the development of internal mapping
tables for supporting the carrier emoji via Unicode characters in <a
href="https://gmailblog.blogspot.com/2007/11/group-chat-and-rich-emoticons-now.html">2007<img src="https://www.unicode.org/img/external_link.png" alt="external link"></a>.
</p>
<p>There are, however, many problems with a private-use approach,
and thus a proposal was made to the Unicode Consortium to expand the
scope of symbols to encompass emoji. This proposal was approved in
May 2007, leading to the formation of a symbols subcommittee, and in
August 2007 the technical committee agreed to support the encoding of
emoji in Unicode based on a set of principles developed by the
subcommittee. The following are a few of the documents tracking the
progression of Unicode emoji characters.</p>
<p class="caption"><a name="Proposals" href="#Proposals">Emoji Proposals</a></p>
<div align="center">
<table class="subtle">
<tr>
<th>Date</th>
<th>Doc No.</th>
<th>Title</th>
<th>Authors</th>
</tr>
<tr>
<td class="nowrap">2000-04-26</td>
<td class="nowrap"><a href="https://www.unicode.org/cgi-bin/GetDocumentLink?L2/00-152">L2/00-152</a></td>
<td>NTT DoCoMo Pictographs</td>
<td>Graham Asher (Symbian)</td>
</tr>
<tr>
<td class="nowrap">2006-11-01</td>
<td class="nowrap"><a href="https://www.unicode.org/cgi-bin/GetDocumentLink?L2/06-369">L2/06-369</a></td>
<td>Symbols (scope extension)</td>
<td>Mark Davis (Google)</td>
</tr>
<tr>
<td class="nowrap">2007-08-03</td>
<td class="nowrap"><a href="https://www.unicode.org/cgi-bin/GetDocumentLink?L2/07-257">L2/07-257</a></td>
<td>Working Draft Proposal for Encoding Emoji Symbols</td>
<td>Kat Momoi, Mark Davis, Markus Scherer (Google)</td>
</tr>
<tr>
<td class="nowrap">2007-08-09</td>
<td class="nowrap"><a href="https://www.unicode.org/cgi-bin/GetDocumentLink?L2/07-274">L2/07-274R</a></td>
<td>Symbols draft resolution</td>
<td>Mark Davis (Google)</td>
</tr>
<tr>
<td class="nowrap">2007-09-18</td>
<td class="nowrap"><a href="https://www.unicode.org/cgi-bin/GetDocumentLink?L2/07-391">L2/07-391</a></td>
<td>Japanese TV Symbols (ARIB)</td>
<td>Michel Suignard (Microsoft)</td>
</tr>
<tr>
<td class="nowrap">2009-01-30</td>
<td class="nowrap"><a href="https://www.unicode.org/cgi-bin/GetDocumentLink?L2/09-026">L2/09-026</a></td>
<td>Emoji Symbols Proposed for New Encoding</td>
<td rowspan="3">Markus Scherer, Mark Davis, Kat Momoi, Darick
Tong (Google);<br> Yasuo Kida, Peter Edberg (Apple)
</td>
</tr>
<tr>
<td class="nowrap">2009-03-05</td>
<td class="nowrap"><a href="https://www.unicode.org/cgi-bin/GetDocumentLink?L2/09-025">L2/09-025R2</a></td>
<td>Proposal for Encoding Emoji Symbols</td>
</tr>
<tr>
<td class="nowrap">2010-04-27</td>
<td class="nowrap"><a href="https://www.unicode.org/cgi-bin/GetDocumentLink?L2/10-132">L2/10-132</a></td>
<td>Emoji Symbols: Background Data</td>
</tr>
<tr>
<td class="nowrap">2011-02-15</td>
<td class="nowrap"><a href="https://www.unicode.org/cgi-bin/GetDocumentLink?L2/11-052">L2/11-052R</a></td>
<td>Wingdings and Webdings Symbols</td>
<td>Michel Suignard</td>
</tr>
</table>
</div>
<p>In 2009, the first Unicode characters explicitly intended as
emoji were added to Unicode 5.2 for interoperability with the ARIB
(Association of Radio Industries and Businesses) set. A set of 722
characters was defined as the union of emoji characters used by
Japanese mobile phone carriers: 114 of these characters were already
in Unicode 5.2. In 2010, the remaining 608 emoji characters were
added to Unicode 6.0, along with some other emoji characters. In
2012, a few more emoji were added to Unicode 6.1, and in 2014 a
larger number were added to Unicode 7.0.
Additional characters have been added since then, based on the
<em>Selection Factors</em> found in <a
href='https://www.unicode.org/emoji/proposals.html'>Guidelines for Submitting Unicode Emoji
Proposals</a>.
</p>
<p>Here is a summary of when some of the major sources of
pictographs used as emoji were encoded in Unicode. Each source
may include other characters in addition to emoji, and
Unicode characters can correspond to multiple sources. The L column
contains single-letter abbreviations of the various sources
for use in charts [<a href="#emoji_charts">emoji-charts</a>] and data
files [<a href="#emoji_data">emoji-data</a>]. Characters that do not
correspond to any of these sources can be marked with Other (x).
</p>
<p class="caption"><a name="Major_Sources" href="#Major_Sources">Major Sources</a></p>
<div align="center">
<table class="subtle">
<tr>
<th rowspan="2">Source</th>
<th rowspan="2"><div align="center">Abbr</div></th>
<th rowspan="2"><div align="center">L</div></th>
<th rowspan="2"><div align="center">
Dev.<br>Starts
</div></th>
<th rowspan="2"><div align="center">Released</div></th>
<th rowspan="2"><div align="center">
Unicode Version
</div></th>
<th colspan="4"><div align="center">Sample Character</div></th>
</tr>
<tr>
<th><div align="center">B&W</div></th>
<th>
<div align="center">Color</div>
</th>
<th><div align="right">Code</div></th>
<th>CLDR Short Name</th>
</tr>
<tr>
<td>Zapf Dingbats</td>
<td><div align="center">ZDings</div></td>
<td><div align="center">z</div></td>
<td><div align="center">1989</div></td>
<td><div align="center" class="nowrap">1991-10</div></td>
<td><div align="center">
<a target="_blank"
href="https://www.unicode.org/versions/Unicode1.0.0/">1.0</a>
</div></td>
<td><div align="center">
<img height='24' alt="✏"
src="images/ref/ref_270f.png">
</div></td>
<td><div align="center">
<img height='24' alt="✏"
src="images/apple/apple_270f.png">
</div></td>
<td><div align="right">U+270F</div></td>
<td><em>pencil</em></td>
</tr>
<tr>
<td>ARIB</td>
<td><div align="center">ARIB</div></td>
<td><div align="center">a</div></td>
<td><div align="center">2007</div></td>
<td><div align="center" class="nowrap">2008-10-01</div></td>
<td><div align="center">
<a target="_blank"
href="https://blog.unicode.org/2009/10/unicode-announcement-unicode-520.html">5.2</a>
</div></td>
<td><div align="center">
<img height='24' alt="☔"
src="images/ref/ref_2614.png">
</div></td>
<td><div align="center">
<img height='24' alt="☔"
src="images/apple/apple_2614.png">
</div></td>
<td><div align="right">U+2614</div></td>
<td><em>umbrella with rain drops</em></td>
</tr>
<tr>
<td>Japanese carriers</td>
<td><div align="center">JCarrier</div></td>
<td><div align="center">j</div></td>
<td><div align="center">2007</div></td>
<td><div align="center" class="nowrap">2010-10-11</div></td>
<td><div align="center">
<a target="_blank"
href="https://blog.unicode.org/2010/10/unicode-version-60-support-for-popular.html">6.0</a>
</div></td>
<td><div align="center">
<img height='24' alt="😎"
src="images/ref/ref_1f60e.png">
</div></td>
<td><div align="center">
<img height='24' alt="😎"
src="images/twitter/twitter_1f60e.png">
</div></td>
<td><div align="right">U+1F60E</div></td>
<td><em>smiling face with sunglasses</em></td>
</tr>
<tr>
<td>Wingdings & Webdings</td>
<td><div align="center">WDings</div></td>
<td><div align="center">w</div></td>
<td><div align="center">2010</div></td>
<td><div align="center" class="nowrap">2014-06-16</div></td>
<td><div align="center">
<a target="_blank"
href="https://blog.unicode.org/2014/06/announcing-unicode-standard-version-70.html">7.0</a>
</div></td>
<td><div align="center">
<img height='24' alt="🌶"
src="images/ref/ref_1f336.png" title="U+1F336 🌶 hot pepper">
</div></td>
<td><div align="center">
<img height='24' alt="🌶"
src="images/other/other_1f336.png" title="U+1F336 🌶 hot pepper">
</div></td>
<td><div align="right">U+1F336</div></td>
<td><em>hot pepper</em></td>
</tr>
</table>
</div>
<p>
For a detailed view of when various source sets of emoji were added
to Unicode, see <b>Emoji Version Sources</b> [<a
href="#emoji_charts">emoji-charts</a>]. The data file [<a href="#JSources">JSources</a>]
shows the correspondence to the original Japanese carrier symbols.
</p>
<p>
People often ask how many emoji are in the Unicode Standard. This
question does not have a simple answer, because there is no clear
line separating which pictographic characters should be displayed
with a typical emoji style. For a complete picture, see <a
href="#Identification"><em>Which Characters are Emoji</em></a>.
</p>
<p>
The colored images used in this document and associated charts [<a href="#emoji_charts">emoji-charts</a>]
are for illustration only. They do not appear in the Unicode
Standard, which has only black and white images. They are either made
available by the respective vendors for use in this document, or are
believed to be available for non-commercial reuse. Inquiries for
permission to use vendor images should be directed to those vendors,
not to the Unicode Consortium. For more information, see <a
href="#Rights_to_Emoji_Images"><em>Rights to Emoji Images</em></a>.
</p>
<h3>
1.1 <a name="Emoticons" href="#Emoticons">Emoticons and Emoji</a>
</h3>
<p>
The term <em>emoticon</em> refers to a series of text characters
(typically punctuation or symbols) that is meant to represent a
facial expression or gesture (sometimes when viewed sideways), such
as the following.
</p>
<p align="center">;-)</p>
<p align="left">
Emoticons <a target="_blank"
href="https://en.wikipedia.org/wiki/Emoticon">predate Unicode and
emoji<img src="https://www.unicode.org/img/external_link.png" alt="external link"></a>,
but were later adapted to include Unicode characters. The
following examples use not only ASCII characters, but also U+203F ( ‿
), U+FE35 ( ︵ ), U+25C9 ( ◉ ), and U+0CA0 ( ಠ ).
</p>
<p align="center">^‿^</p>
<p align="center">◉︵◉</p>
<p align="center">ಠ_ಠ</p>
<p>
Often implementations allow emoticons to be used to input emoji. For
example, the emoticon ;-) can be mapped to <img height='14'
alt="😉" src="images/apple/apple_1f609.png"> in a
chat window. The term <em>emoticon</em> is sometimes used in a
broader sense, to also include the emoji for facial expressions and
gestures. That broad sense is used in the Unicode block name <em>Emoticons</em>,
covering the code points from U+1F600 to U+1F64F.
</p>
<h3>
1.2 <a name="Encoding" href="#Encoding">Encoding Considerations</a>
</h3>
<p>
Unicode is the foundation for text in all modern software: it’s how
all mobile phones, desktops, and other computers represent the text
of every language. People are using Unicode every time they type a
key on their phone or desktop computer, and every time they look at a
web page or text in an application. It is very important that the
standard be stable, and that every character that goes into it be
scrutinized carefully. This requires a formal process with a long
development cycle. For example, the <img height='14'
alt="🕶" src="images/ref/ref_1f576.png"> <em>dark
sunglasses</em> character was first proposed years before it was released
in Unicode 7.0.
</p>
<p>
Characters considered for encoding must normally be in widespread use
as elements of text. The emoji and various symbols were added to
Unicode because of their use as characters for text-messaging in a
number of Japanese manufacturers’ corporate standards, and other
places, or in long-standing use in widely distributed fonts such as
Wingdings and Webdings. In many cases, the characters were added for
complete round-tripping to and from a source set, <em>not</em>
because they were inherently of more importance than other
characters. For example, the <img height='14' alt="🖁"
src="images/ref/ref_1f581.png"
title="U+1F581 🖁 clamshell mobile phone"> <em>clamshell
phone</em> character was included because it was in Wingdings and
Webdings, not because it is more important than, say, a “skunk”
character.
</p>
<p>
In some cases, a character was added to complete a set: for example,
a <img height='14' alt="🏉"
src="images/apple/apple_1f3c9.png"> <em>rugby football</em>
character was added to Unicode 6.0 to complement the <img height='14'
alt="🏈" src="images/apple/apple_1f3c8.png"> <em>american
football</em> character (the <img height='14' alt="⚽"
src="images/apple/apple_26bd.png"> <em>soccer ball</em> had
been added back in Unicode 5.2). Similarly, a mechanism was added
that could be used to represent all country flags (those
corresponding to a two-letter <a target="_blank"
href="https://www.unicode.org/reports/tr35/#unicode_region_subtag">unicode_region_subtag</a>),
such as the <em>flag for Canada</em>,
even though the Japanese carrier set only had 10 country flags.
</p>
<p>The data does not include non-pictographs, except for those in
Unicode that are used to represent characters from emoji sources, for
compatibility, such as:</p>
<p align="center">
<img height="24" alt="🈹"
src="images/apple/apple_1f239.png"> or <img height="24"
alt="🆔" src="images/apple/apple_1f194.png">
</p>
<p>
Game pieces, such as the dominos (🀰 🀱 🀲 ... 🂑 🂒), are currently
not included as emoji, with the exceptions of U+1F0CF ( <img
height="18" alt="🈹" src="images/apple/apple_1f0cf.png">
) PLAYING CARD BLACK JOKER and U+1F004 ( <img height="18"
alt="🈹" src="images/apple/apple_1f004.png"> )
MAHJONG TILE RED DRAGON. These are included because they correspond
each to an emoji character from one of the carrier sets.
</p>
<p>
<a name="Selection_Factors" href="#Selection_Factors"></a> The selection factors used to weigh
the encoding of prospective candidates are found in <em>Selection
Factors</em> in <a href='https://www.unicode.org/emoji/proposals.html'>Guidelines for Submitting
Unicode Emoji Proposals</a>. That document also provides
instructions for submitting proposals for new emoji.</p>
<p>
For a list of frequently asked questions on emoji, see the <a
href="https://www.unicode.org/faq/emoji_dingbats.html" target="_blank">Unicode
Emoji FAQ</a>.
</p>
<h3>
1.3 <a name="Goals" href="#Goals">Goals</a>
</h3>
<p>This document provides:</p>
<ul>
<li>design guidelines for improving interoperability across
platforms and implementations</li>
<li>background information about emoji characters, and long-term
alternatives</li>
<li>data indicating:
<ul>
<li>which characters normally can be considered to be emoji</li>
<li>which emoji characters should be displayed
by default in text style versus emoji style</li>
<li>which emoji characters may be displayed using a
variety of skin tones, with implementation details</li>
</ul>
</li>
<li>pointers to [<a href="#CLDR">CLDR</a>] data for
<ul>
<li>sorting emoji characters more naturally</li>
<li>annotations for searching and grouping emoji characters</li>
</ul>
</li>
</ul>
<p>It also provides background information about emoji, and
discusses longer-term approaches to emoji.</p>
<p>As new Unicode characters are added or the “common practice”
for emoji usage changes, the data and recommendations supplied by
this document may change in accordance. Thus the recommendations and
data will change across versions of this document.</p>
<h3>
1.4 <a name="Definitions" href="#Definitions">Definitions</a>
</h3>
<p>
The following provide more formal definitions of some of the terms
used in this document. Readers who are more interested in other
features of the document may choose to continue from <em>Section
2, <a href="#Design_Guidelines">Design Guidelines</a></em>.</p>
<blockquote>
<p>
<strong><em><a name="def_emoji" href="#def_emoji">ED-1</a>.
emoji</em></strong> — A colorful pictograph that can be used inline in text.
Internally the representation is either (a) an image, (b) an
encoded character, or (c) a sequence of encoded characters.</p>
<ul>
<li>For (a) the term <em>emoji image</em> is used in this document. The term <em>sticker</em> may also be used.</li>
<li>For (b) the term <em>emoji character</em> is used where necessary for clarity.</li>
<li>For (c) the term <em>emoji sequence</em> is used for clarity.</li>
</ul>
<p>
<strong><em><a name="def_emoticon"
href="#def_emoticon">ED-2</a>. emoticon</em></strong> — (1) A series of text
characters (typically punctuation or symbols) that is meant to
represent a facial expression or gesture such as ;-) and
(2) in a broader sense, also includes emoji for facial expressions
and gestures.
</p>
</blockquote>
<h4>
1.4.1 <a name="Emoji_Characters" href="#Emoji_Characters">Emoji
Characters</a>
</h4>
<blockquote>
<p><em><strong><a name="def_emoji_character" href="#def_emoji_character">ED-3</a>.
emoji character</strong></em> — A character that has the <strong>Emoji</strong>
property.</p>
<p class='indent'><code>emoji_character := \p{Emoji}</code></p>
<ul>
<li>These characters are recommended for use as emoji.</li>
</ul>
<p><em><strong><a name="def_level1_emoji" href="#def_level1_emoji">ED-4</a>.
extended pictographic character</strong></em> — a character that has the
<strong>Extended_Pictographic</strong> property.</p>
<ul>
<li>These characters are pictographic, or otherwise similar in kind to characters
with the Emoji property.</li>
<li>The <strong>Extended_Pictographic</strong> property is used to customize segmentation
(as described in [<a href="#UAX29">UAX29</a>] and [<a href="#UAX14">UAX14</a>]) so that
possible future emoji ZWJ sequences will not break grapheme clusters, words, or lines.
Unassigned codepoints with Line_Break=ID in some blocks are also assigned the
<strong>Extended_Pictographic</strong> property. Those blocks are intended for future allocation of emoji
characters.</li>
</ul>
<p>
<em><strong><a name="def_level2_emoji" href="#def_level2_emoji">ED-5</a>.
emoji component</strong></em> — A character that has the <strong>Emoji_Component</strong>
property.</p>
<ul>
<li>These characters are used in emoji sequences but normally do not appear on emoji keyboards
as separate choices, such as keycap base characters or Regional_Indicator characters.</li>
<li>Some <strong>emoji components</strong> are <strong>emoji characters</strong>, and others
(such as tag characters and <strong>ZWJ</strong>) are not.</li>
</ul>
</blockquote>
<p>
For more information, see <em>Section 3, <a href="#Identification">Which Characters are Emoji</a></em>.
For information on data files which define emoji properties, see
<a href="#Emoji_Properties_and_Data_Files">Annex A: Emoji Properties and Data Files</a>.
</p>
<h4>
1.4.2 <a name="Emoji_Presentation" href="#Emoji_Presentation">Emoji
Presentation</a>
</h4>
<blockquote>
<p>
<em><strong><a name="def_emoji_presentation"
href="#def_emoji_presentation">ED-6</a>. default emoji
presentation character </strong></em>— A character that, by default, should
appear with an emoji presentation in well-formed
sequences, rather than a text presentation.</p>
<p class='indent'><code>default_emoji_presentation_character := \p{Emoji_Presentation} </code></p>
<ul>
<li>These characters have the <strong>Emoji_Presentation</strong>
property. See <a href="#Emoji_Properties_and_Data_Files">Annex A: Emoji Properties
and Data Files</a>.
</li>
</ul>
<p>
<em><strong><a name="def_text_presentation"
href="#def_text_presentation">ED-7</a>. default text presentation
character</strong></em> — A character that, by default, should appear with a
text presentation, rather than an emoji presentation.</p>
<p class='indent'><code>default_text_presentation_character := \P{Emoji_Presentation} </code></p>
<ul>
<li>These characters do not have the <strong>Emoji_Presentation</strong>
property; that is, their <strong>Emoji_Presentation</strong>
property value is <strong>No</strong>. See <a href="#Emoji_Properties_and_Data_Files">Annex
A: Emoji Properties and Data Files</a>.
</li>
</ul>
</blockquote>
<p>
For more details about emoji and text presentation, see <em>Section 2, <a
href="#Design_Guidelines">Design Guidelines</a></em> and <em>Section
4, <a href="#Presentation_Style">Presentation Style</a></em>.
</p>
<h4>
1.4.3 <a name="Emoji_Variation_Sequences"
href="#Emoji_Variation_Sequences">Emoji and Text
Presentation Sequences</a>
</h4>
<blockquote>
<p>
<em><strong><a name="def_text_presentation_selector"
href="#def_text_presentation_selector">ED-8</a>. text presentation
selector</strong></em> — The character U+FE0E VARIATION SELECTOR-15 (VS15),
used to request a text presentation for an emoji character.
(Also known as <em>text variation selector</em>
in prior versions of this specification.)
</p>
<p class='indent'><code>text_presentation_selector := \x{FE0E}</code></p>
<p>
<em><strong><a name="def_text_presentation_sequence"
href="#def_text_presentation_sequence">ED-8a</a>. text
presentation sequence</strong></em> — A variation sequence
consisting of an <strong>emoji character</strong>
followed by a <strong>text presentation selector</strong>.</p>
<p class='indent'><code>text_presentation_sequence := emoji_character text_presentation_selector</code></p>
<ul>
<li>The only valid <strong>text presentation sequences</strong>
are those listed in the
<strong>emoji-variation-sequences.txt</strong>
file [<a href="#emoji_data">emoji-data</a>].</li></ul>
<p>
<em><strong><a name="def_emoji_presentation_selector"
href="#def_emoji_presentation_selector">ED-9</a>. emoji presentation
selector</strong></em> — The character U+FE0F VARIATION SELECTOR-16 (VS16),
used to request an emoji presentation for an emoji character.
(Also known as <em>emoji variation selector</em>
in prior versions of this specification.)
</p>
<p class='indent'><code> emoji_presentation_selector := \x{FE0F}</code></p>
<p>
<em><strong><a name="def_emoji_presentation_sequence"
href="#def_emoji_presentation_sequence">ED-9a</a>. emoji
presentation sequence</strong></em> — A variation sequence consisting of an <strong>emoji character</strong> followed by a <strong>emoji presentation selector</strong>.</p>
<p class='indent'><code> emoji_presentation_sequence := emoji_character emoji_presentation_selector</code></p>
<ul>
<li>The only valid <strong>emoji presentation sequences</strong>
are those listed in the
<strong>emoji-variation-sequences.txt</strong>
file [<a href="#emoji_data">emoji-data</a>].</li></ul>
<p>
<em><strong><a
name="def_emoji_base_variation_selector"
href="#def_emoji_base_variation_selector">ED-10</a>.</strong></em>
(This definition has been removed.)
</p>
</blockquote>
<h4>
1.4.4 <a name="Emoji_Modifiers" href="#Emoji_Modifiers">Emoji
Modifiers</a>
</h4>
<blockquote>
<p>
<em><strong><a name="def_emoji_modifier"
href="#def_emoji_modifier">ED-11</a>. emoji modifier</strong></em> —
A character that can be used to modify the appearance of a preceding emoji
in an <em><a href="#def_emoji_modifier_sequence">emoji modifier
sequence</a></em>.
</p>
<p class='indent'><code>emoji_modifier := \p{Emoji_Modifier}</code></p>
<ul>
<li>These characters have the <strong>Emoji_Modifier</strong>
property. See <a href="#Emoji_Properties_and_Data_Files">Annex A: Emoji Properties
and Data Files</a>.
</li>
</ul>
<p>
<em><strong><a name="def_emoji_modifier_base"
href="#def_emoji_modifier_base">ED-12</a>. emoji modifier base</strong></em> —
A character whose appearance can be modified by a subsequent emoji
modifier in an <em><a href="#def_emoji_modifier_sequence">emoji
modifier sequence</a></em>.
</p>
<p class='indent'><code>emoji_modifier_base := \p{Emoji_Modifier_Base}</code></p>
<ul>
<li>These characters have the <strong>Emoji_Modifier_Base</strong>
property. See <a href="#Emoji_Properties_and_Data_Files">Annex A: Emoji Properties
and Data Files</a>.
</li>
<li>They are also listed in <a href="#Subject_Emoji_Modifiers">Characters
Subject to Emoji Modifiers</a>.
</li>
</ul>
<p>
<em><strong><a name="def_emoji_modifier_sequence"
href="#def_emoji_modifier_sequence">ED-13</a>. emoji modifier
sequence</strong></em> — A sequence of the following form:
</p>
<blockquote>
<p>
<code>emoji_modifier_sequence :=<br>
emoji_modifier_base emoji_modifier</code>
</p>
</blockquote>
</blockquote>
<p>
For more details about emoji modifiers, see <em>Section 2.4, <a
href="#Diversity">Diversity</a>.
</em>
</p>
<h4>
1.4.5 <a name="Emoji_Sequences" href="#Emoji_Sequences">Emoji
Sequences</a>
</h4>
<blockquote>
<p>
<em><strong><a name="def_emoji_flag_sequence"
href="#def_emoji_flag_sequence">ED-14</a>. emoji flag sequence</strong></em> — A
sequence of two Regional Indicator characters.</p>
<p class='indent'>
<code>emoji_flag_sequence :=<br>
regional_indicator regional_indicator</code></p>
<p class='indent'><code>regional_indicator := \p{Regional_Indicator}</code></p>
<ul>
<li>The only valid <strong>emoji flag sequences</strong>
are those listed in the <strong>emoji-sequences.txt</strong> file [<a
href="#emoji_data">emoji-data</a>]. See also
<a href="#Flags">Annex B: Valid Emoji Flag Sequences</a>.</li>
<li>A singleton Regional Indicator character is not a well-formed <strong>emoji flag sequence</strong>.</li>
</ul>
<p>
<em><strong><a name="def_emoji_tag_sequence"
href="#def_emoji_tag_sequence">ED-14a</a>. emoji tag sequence (ETS)</strong></em> —
A sequence of the following form:</p>
<p class='indent'><code>emoji_tag_sequence := tag_base tag_spec tag_end<br>
tag_base := emoji_character<br>
| emoji_modifier_sequence<br>
| emoji_presentation_sequence<br>
tag_spec := [\x{E0020}-\x{E007E}]+<br>
tag_end := \x{E007F}</code><br>
</p>
<ul>
<li>The <code>tag_spec</code> consists of all characters from U+E0020 TAG SPACE to U+E007E TAG TILDE.
Each <code>tag_spec</code> defines a particular visual variant to be applied to the <code>tag_base</code> character(s).
Though <code>tag_spec</code> includes the values U+E0041 TAG LATIN CAPITAL LETTER A .. U+E005A TAG LATIN CAPITAL LETTER Z,
they are not used currently and are reserved for future extensions.</li>
<li>The <code>tag_end</code> consists of the character U+E007F CANCEL TAG, and must be used to terminate the sequence.</li>
<li>A sequence of tag characters that is not part of an <code>emoji_tag_sequence</code> is not a well-formed <strong>emoji tag sequence</strong>.</li>
</ul>
<p>The meaning and validity criteria for an <strong>emoji tag sequence</strong> and expected visual variants for a <code>tag_spec</code> are determined by <a href='#valid-emoji-tag-sequences'>Annex C: Valid Emoji Tag Sequences</a>. </p>
<p>
<em><strong><a
name="def_emoji_combining_sequence" href="#def_emoji_combining_sequence">ED-14b</a>.</strong></em>
(This definition has been removed.)
</p>
<p>
<em><strong><a name="def_emoji_keycap_sequence"
href="#def_emoji_keycap_sequence">ED-14c</a>. emoji keycap sequence</strong></em> —
A sequence of the following form: </p>
<p class='indent'>
<code>
emoji_keycap_sequence := [0-9#*] \x{FE0F 20E3}</code></p>
<ul>
<li>These sequences are in the <strong>emoji-sequences.txt</strong> file
[<a href="#emoji_data">emoji-data</a>]
listed under the type_field <strong>Emoji_Keycap_Sequence</strong></li>
</ul>
<p>
<em><strong><a name="def_emoji_core_sequence"
href="#def_emoji_core_sequence">ED-15</a>. emoji core sequence</strong></em> —
A sequence of the following form:
</p>
<p class='indent'>
<code>
emoji_core_sequence :=<br>
emoji_character<br>
| emoji_presentation_sequence<br>
| emoji_keycap_sequence<br>
| emoji_modifier_sequence<br>
| emoji_flag_sequence
</code>
</p>
<p>
<em><strong><a name="def_emoji_zwj_element"
href="#def_emoji_zwj_element">ED-15a</a>. emoji ZWJ element</strong></em> —
An element that can be used in an emoji
ZWJ sequence, as follows:
</p>
<p class='indent'>
<code>
emoji_zwj_element :=<br>
emoji_core_sequence<br>
| emoji_tag_sequence
</code></p>
<p>
<em><strong><a name="def_emoji_zwj_sequence"
href="#def_emoji_zwj_sequence">ED-16</a>. emoji ZWJ sequence</strong></em> —
An emoji sequence with at least one joiner character.
</p>
<p class=' indent'>
<code>emoji_zwj_sequence :=<br>
emoji_zwj_element ( ZWJ emoji_zwj_element )+</code>
</p>
<p class='indent'><code> ZWJ := \x{200d}</code></p>
<p>
<em><strong><a name="def_emoji_sequence"
href="#def_emoji_sequence">ED-17</a>. emoji sequence</strong></em> —
A core sequence, tag sequence, or ZWJ sequence, as follows: </p>
<p class=' indent'>
<code>emoji_sequence :=<br>
emoji_core_sequence<br>
| emoji_zwj_sequence<br>
| emoji_tag_sequence
</code></p>
<p>Note that all emoji sequences are single grapheme clusters:
there is never a grapheme cluster boundary within an emoji sequence.
This affects editing operations, such as cursor movement or deletion,
as well as word break, line break, and so on.
For more information, see [<a
href="#UAX29">UAX29</a>].</p>
<p>
<em><strong><a name="def_qualified_emoji_character"
href="#def_qualified_emoji_character">ED-17a</a>. qualified
emoji character</strong></em> — An emoji character in a string that
(a) has default emoji presentation or
(b) is the first character in an emoji modifier sequence or
(c) is not a default emoji presentation character, but is the
first character in an emoji presentation sequence.
</p>
<p>
<em><strong><a name="def_fully_qualified_emoji"
href="#def_fully_qualified_emoji">ED-18</a>. fully-qualified
emoji</strong></em> — A qualified emoji character, or an emoji sequence in which each emoji character is qualified.
</p>
<p> <em><strong><a name="def_minimally_qualified_emoji"
href="#def_minimally_qualified_emoji">ED-18a</a>. minimally-qualified
emoji </strong></em> — An emoji sequence in which the first character is qualified but the sequence is not fully qualified.</p>
<p>
<em><strong><a name="def_unqualified_emoji"
href="#def_unqualified_emoji">ED-19</a>. unqualified
emoji </strong></em> — An emoji that is neither fully-qualified nor minimally qualified.</p>
</blockquote>
<p>For recommendations on the use of variation selectors in
emoji sequences, see <em>Section 2.7, <a href="#Emoji_Implementation_Notes">Emoji
Implementation Notes</a></em>.
</p>
<h4>
1.4.6 <a name="Emoji_Sets" href="#Emoji_Sets">Emoji Sets</a>
</h4>
<p>The following sets are defined based on the data files and properties described in <a href="#Emoji_Properties_and_Data_Files">Annex A: Emoji Properties and Data Files</a>. The composition of these sets may change from one release to the next.</p>
<p>Each of these sets can be conceived of as a binary property; they are properties of strings. See <em>UTS #18: Unicode Regular Expressions</em> [<a href="#UTS18">UTS18</a>] and <em>UTR #23: The Unicode Character Property Model</em> [<a href="#UTR23">UTR23</a>] for more discussion.</p>
<p><em><strong><a name="def_basic_emoji_set"
href="#def_basic_emoji_set">ED-20</a>. basic emoji set</strong></em> — The set of emoji characters and emoji presentation sequences listed in the <strong>emoji-sequences.txt</strong> file [<a
href="#emoji_data">emoji-data</a>] under the type_field <strong>Basic_Emoji</strong>.</p>
<ul>
<li>This is the set of emoji intended for general-purpose input.</li>
<li>This set excludes all those instances of an <strong>emoji component</strong> that are not intended for independent, direct input. Implementations should support independent display of <strong>emoji components</strong> in this set even if they are not made available for direct input.
<ul>
<li>Skin tone modifiers and hair components should be displayed even in isolation, but they should not (typically) be on the keyboard palette. These are included in Basic_Emoji.</li>
<li>Other components (U+20E3 COMBINING ENCLOSING KEYCAP, Regional Indicators, tag characters, ZWJ, and VS16) should never have an emoji presentation in isolation, but do occur as part of emoji sequences. These are not included in Basic_Emoji.</li>
</ul>
</li>
<li>This set otherwise includes all instances of an <strong>emoji character</strong> with the property value <strong>Emoji_Presentation</strong> = Yes and all instances of a valid<strong> emoji presentation sequence</strong> whose base character has the property value <strong>Emoji_Presentation</strong> = No.</li>
</ul>
<p><em><strong><a name="def_std_emoji_keycap_sequence_set"
href="#def_std_emoji_keycap_sequence_set">ED-21</a>. emoji keycap sequence set</strong></em> — The specific set of emoji sequences listed in the <strong>emoji-sequences.txt</strong> file [<a
href="#emoji_data">emoji-data</a>] under the type_field <strong>Emoji_Keycap_Sequence</strong>.</p>
<ul>
<li>This is the set of all valid <strong>emoji keycap sequences.</strong></li>
</ul>
<p><strong>Note:</strong> The following definitions use the acronym “<a name="def_RGI"
href="#def_RGI">RGI</a>”
to mean “recommended for general interchange”, referring to that subset of some
larger set that is intended to be widely supported
across multiple platforms.</p>
<p><em><strong><a name="def_std_emoji_modifier_sequence_set"
href="#def_std_emoji_modifier_sequence_set">ED-22</a>. RGI emoji modifier sequence set</strong></em> — The specific set of emoji sequences listed in the <strong>emoji-sequences.txt</strong> file [<a
href="#emoji_data">emoji-data</a>] under the type_field <strong>RGI_Emoji_Modifier_Sequence</strong>.</p>
<ul>
<li>This is the <em>subset</em> of all valid
<strong>emoji modifier sequences</strong> recommended for
general interchange.</li>
</ul>
<p><em><strong><a name="def_std_emoji_flag_sequence_set"
href="#def_std_emoji_flag_sequence_set">ED-23</a>. RGI emoji flag sequence set</strong></em> — The specific set of emoji sequences listed in the <strong>emoji-sequences.txt</strong> file [<a
href="#emoji_data">emoji-data</a>] under the type_field <strong>RGI_Emoji_Flag_Sequence</strong>.</p>
<ul>
<li>This is the <em>subset</em> of all valid <strong>emoji flag sequences</strong> recommended for general interchange. See <a href="#Flags">Annex B: Valid Emoji Flag Sequences</a></li>
</ul>
<p><em><strong><a name="def_std_emoji_tag_sequence_set"
href="#def_std_emoji_tag_sequence_set">ED-24</a>. RGI emoji tag sequence set</strong></em> — The specific set of emoji sequences listed in the <strong>emoji-sequences.txt</strong> file [<a
href="#emoji_data">emoji-data</a>] under the type_field <strong>RGI_Emoji_Tag_Sequence</strong>.</p>
<ul>
<li>This is the <em>subset</em> of all valid <strong> emoji tag sequences</strong> recommended for general interchange. See <a href='#valid-emoji-tag-sequences'>Annex C: Valid Emoji Tag Sequences</a>.</li>
</ul>
<p><em><strong><a name="def_emoji_ZWJ_sequences"
href="#def_emoji_ZWJ_sequences">ED-25</a>. RGI emoji ZWJ sequence set </strong></em> — The specific set of emoji sequences listed in the <strong>emoji-zwj-sequences.txt</strong> file [<a
href="#emoji_data">emoji-data</a>] under the type_field <strong>RGI_Emoji_ZWJ_Sequence</strong>.</p>
<ul>
<li>This is the <em>subset</em> of all valid <strong>emoji ZWJ sequences</strong> recommended for general interchange.</li>
</ul>
<p><em><strong><a name="def_rgi_sequences"
href="#def_rgi_sequences">ED-26</a>. </strong></em>(This definition has been removed.)</p>
<p><em><strong><a name="def_rgi_set"
href="#def_rgi_set">ED-27</a>. RGI emoji set</strong></em> — The
set of all emoji (characters and sequences) covered by
<em><strong><a href="#def_basic_emoji_set">ED-20</a></strong></em>,
<em><strong><a href="#def_std_emoji_keycap_sequence_set">ED-21</a></strong></em>,
<em><strong><a href="#def_std_emoji_modifier_sequence_set">ED-22</a></strong></em>,
<em><strong><a href="#def_std_emoji_flag_sequence_set">ED-23</a></strong></em>,
<em><strong><a href="#def_std_emoji_tag_sequence_set">ED-24</a></strong></em>, and
<em><strong><a href="#def_emoji_ZWJ_sequences">ED-25</a></strong></em>.</p>
<ul>
<li>This is the subset of all valid emoji (characters and sequences) recommended
for general interchange.</li>
<li>This corresponds to the <strong>RGI_Emoji</strong> property.
This property is not subject to any
<a href="https://www.unicode.org/policies/stability_policy.html#Property_Value">stability policies</a>
at this time.
</li>
</ul>
<p><em><strong><a name="def_rgi_emoji_qualification"
href="#def_rgi_emoji_qualification">ED-28</a>.
RGI_Emoji_Qualification</strong></em> — the status of emoji sequences<br>
This is an enumerated property of strings, defined by the <strong>emoji-test.txt</strong>
file [<a href="#emoji_data">emoji-data</a>].
It assigns one of four values to each emoji in
<a href="#def_rgi_set">ED-27 RGI emoji set</a>
and related sequences with missing variation selectors.
The property value names and short aliases are:</p>
<div align='center'><table class='subtle'>
<tr>
<th>Value Name</th>
<th>Alias</th>
<th>Description</th>
</tr>
<tr>
<td>Standalone_Component</td>
<td>component</td>
<td>an <strong>emoji component</strong></td>
</tr>
<tr>
<td>Fully_Qualified</td>
<td>FQE</td>
<td><a href="#def_fully_qualified_emoji">ED-18</a>, excluding <strong>emoji components</strong></td>
</tr>
<tr>
<td>Minimally_Qualified</td>
<td>MQE</td>
<td><a href="#def_minimally_qualified_emoji">ED-18a</a></td>
</tr>
<tr>
<td>Unqualified</td>
<td>UQE</td>
<td><a href="#def_unqualified_emoji">ED-19</a></td>
</tr>
</table></div>
<p>The property values are defined by the corresponding status values in [<a href="#emoji_data">emoji-data</a>]:
component,
fully-qualified, minimally-qualified, and unqualified.
</p>
<h4>1.4.7 <a name="Notation" href="#Notation">Notation</a></h4>
<p>Character names in all capitals are the formal Unicode Name property values, such as U+1F473 MAN WITH TURBAN. The formal names are immutable internal identifiers, but often do not reflect the current practice for interpretation of the character.</p>
<p>Lowercase character names for existing characters or sequences are CLDR short names, such as U+1F473 <em>person wearing turban</em>.</p>
<h4>1.4.8 <a name="Property_Stability" href="#Property_Stability">Property Stability</a></h4>
<p>The emoji properties are stable for each version of the data—they will not change for that version. They may, however, change between that version and a subsequent version. For example, isEmoji(♟)=false for Emoji Version 5.0, but true for Version 11.0.</p>
<p>Some emoji properties are not closed over certain string operations. For example:</p>
<blockquote>
<p>isEmoji(toLowercase(X)) ≠ isEmoji(X) for the case of X=Ⓜ️, because:</p>
<blockquote>
<p>isEmoji(Ⓜ️) = true<br>
toLowercase(Ⓜ️) = ⓜ<br>
isEmoji(ⓜ) = false</p>
</blockquote>
</blockquote>
<p>Casing operations may produce invalid variation sequences. While the following strings form a case pair, the <em><strong>emoji presentation
selector</strong></em> is not defined for ⓜ, and thus has no effect on its rendering:</p>
<div align='center'>
<table class="simple">
<tr><td>Ⓜ️ = <U+24C2 CIRCLED LATIN CAPITAL LETTER M, U+FE0F VS16></td>
<td>valid variation sequence</td>
</tr>
<tr><td>ⓜ = <U+24DC CIRCLED LATIN SMALL LETTER M, U+FE0F VS16></td>
<td>invalid variation sequence</td>
</tr>
</table>
</div>
<!-- consider adding the following text for Unicode 14, but in a different section such as implementation notes:
<p>There are certain features of the emoji definitions that are important for optimizing the parsing of emoji.</p>
<ul>
<li><em>All of the emoji sequences start either with an <a href="#def_emoji_character">emoji character</a>
or a regional indicator character. </em>This means that parsers can quickly check for possible starting characters
for emoji sequences, and only then do deeper analysis.</li>
<li><em>Two adjacent emoji never “merge” to form a single emoji,
unless the second of the two is an <a href="#def_emoji_modifier">emoji_modifier</a>,
or unless both are regional_indicators.</em>
This means that only a limited number of characters can “extend” an emoji sequence.
Parsing can stop unless they are encountered.</li>
<li>Note that while a regional_indicator has the <strong>Emoji</strong> property, it is an
<a href="#def_level2_emoji"><strong>emoji component</strong></a>. In isolation, it is thus not
considered to be part of the <a href="#def_basic_emoji_set"><strong>basic emoji set</strong></a>,
nor an element of the <a href="#def_rgi_set"><strong>RGI emoji set</strong></a>.</li>
</ul>
-->
<h4>1.4.9 <a name="EBNF_and_Regex" href="#EBNF_and_Regex">EBNF and Regex</a></h4>
<p>The following EBNF can be used to quickly scan for <em>possible emoji</em>. Those possible emoji can then be
verified where necessary by performing validity tests according to the definitions, or checking against the <a
href="#def_rgi_set"><em><strong>RGI emoji set</strong></em></a>. It is much simpler
than the expressions currently in the definitions. It includes a superset of emoji
as a by-product of that simplicity, but the extras can be weeded out by validity tests.</p>
<div align='center'>
<table class="subtle">
<tr>
<th>EBNF</th>
<th>Notes</th>
</tr>
<tr>
<td><pre>possible_emoji :=
zwj_element (\x{200D} zwj_element)*</pre></td>
<td>\x{200D} = zero-width joiner</td>
</tr>
<tr>
<td><pre>flag_sequence :=
\p{RI} \p{RI}</pre></td>
<td>\p{RI} = Regional_Indicator</td>
</tr>
<tr>
<td><pre>zwj_element :=
\p{Emoji} emoji_modification?
| flag_sequence</pre></td>
<td> </td>
</tr>
<tr>
<td><pre>emoji_modification :=
\p{EMod}
| \x{FE0F} \x{20E3}?
| tag_modifier</pre></td>
<td>\p{EMod} = Emoji_Modifier<br>
\x{FE0F} = emoji VS<br>
\x{20E3} = enclosing keycap <br></td>
</tr>
<tr>
<td><pre>tag_modifier :=
[\x{E0020}-\x{E007E}]+ \x{E007F}</pre></td>
<td>\x{E00xx} are tags <br>
\x{E007F} = TERM tag</td>
</tr>
</table>
</div>
<strong><br>
</strong>
<p>From these EBNF rules a regex can be generated, as below. While this regex may seem
complex, it is far simpler than what would result from the definitions. Direct use of
the definitions would result in regex expressions which are many times more complicated,
and yet still require verification with validity tests.</p>
<div align='center'>
<table class="subtle">
<tr>
<th>Regex</th>
</tr>
<tr>
<td><pre>\p{RI} \p{RI}
| \p{Emoji}
( \p{EMod}
| \x{FE0F} \x{20E3}?
| [\x{E0020}-\x{E007E}]+ \x{E007F}
)?
(\x{200D}
( \p{RI} \p{RI}
| \p{Emoji}
( \p{EMod}
| \x{FE0F} \x{20E3}?
| [\x{E0020}-\x{E007E}]+ \x{E007F}
)?
)
)*</pre>
</td>
</tr>
</table>
</div>
<h3>1.5 <a name="Conformance" href="#Conformance">Conformance</a></h3>
<p>Conformance to this specification is specified by the following clauses.</p>
<p>
<em><strong><a name="C1" href="#C1">C1</a>.</strong></em> An
implementation claiming conformance to this specification shall identify the
version of this specification to which conformance is claimed.</p>
<ul>
<li>Each version of this specification has a minimum version of the Unicode Standard, which contains all the characters with <strong>Emoji=Yes</strong>. For example, an implementation that claims conformance to Emoji 5.0 must also have support for the Unicode 9.0 repertoire.</li>
</ul>
<p>
<em><strong><a name="C2" href="#C2">C2</a>.</strong></em> An implementation
claiming conformance to this specification shall identify which of the
capabilities specified below are supported for which emoji sets
<strong><a href="#def_basic_emoji_set">ED-20</a></strong> through
<strong><a href="#def_basic_emoji_set">ED-25</a></strong>. This must include at
least the <strong><a href="#C2a">C2a</a> display</strong> capability for
set <strong><a href="#def_basic_emoji_set">ED-20</a> basic emoji set</strong>.
For example, an implementation can declare that it supports the <strong>display</strong>,
<strong>editing</strong> and <strong>input</strong> capabilities for the
<strong>basic emoji set</strong>, and the <strong>display</strong> and
<strong>editing</strong> capabilities for the <strong>emoji
modifier sequence set</strong>, and may make no claim of capabilities for any
other sets.
</p>
<p class="caption"><a name="Emoji_Capabilities" href="#Emoji_Capabilities">Emoji Capabilities</a></p>
<div align="center">
<table class="simple">
<tr>
<td class="nowrap"><em><strong><a name="C2a" href="#C2a">C2a</a>
display</strong></em></td>
<td>The implementation is capable of displaying each of the characters
and sequences in the specified set as a single glyph with emoji
presentation.</td>
</tr>
<tr>
<td class="nowrap"><em><strong><a name="C2b" href="#C2b">C2b</a>
editing</strong></em></td>
<td>The implementation treats each of the characters and sequences in the
specified set as an indivisible unit for editing purposes (cursor
movement, deletion, line breaking, and so on).</td>
</tr>
<tr>
<td class="nowrap"><em><strong><a name="C2c" href="#C2c">C2c</a>
input</strong></em></td>
<td>The implementation provides a mechanism for inputting each of the characters
and sequences in the specified set as a single glyph with emoji
presentation.</td>
</tr>
</table>
</div>
<p>An implementation may claim <i>partial conformance</i> to C2, specifying the set of characters that it does not support. For example, an implementation could claim conformance to C2 for all emoji sets and capabilities except for the set [⏏ {🇺🇳}], that is:</p>
<ul>
<li>U+23CF <em>eject button</em></li>
<li>U+1F1FA U+1F1F3 <em>United Nations</em></li>
</ul>
<p>
<em><strong><a name="C3" href="#C3">C3</a>.</strong></em> An implementation claiming conformance to this specification must not support an invalid emoji_flag_sequence or invalid or ill-formed emoji_tag_sequence for <strong>display</strong> or <strong>input</strong>, except for a fallback <strong>display</strong> depiction indicating the presence of an invalid sequence, such as <img alt="" src="images/other/unknownTag2.png"
title="unsupported flag" height='18'>.</p>
<ul>
<li>A singleton emoji Regional Indicator may be displayed as a capital A..Z character with a special display</li>
</ul>
<p>
An implementation <em>may</em> support any of the following for <strong>display</strong>, <strong>editing</strong>, or <strong>input</strong>:</p>
<ul>
<li>a single code point outside of the <strong>basic emoji set</strong></li>
<li>an emoji sequence that would be in one of the emoji sets <strong><a
href="#def_basic_emoji_set">ED-20</a></strong> through <strong><a
href="#def_basic_emoji_set">ED-25</a></strong> except that it is missing one or more <strong>emoji presentation selectors</strong></li>
<li> an emoji ZWJ sequence that is not in <strong><a
href="#def_basic_emoji_set">ED-25</a></strong></li>
</ul>
<h4>
1.5.1 <a name="Collation_Conformance" href="#Collation_Conformance">Collation Conformance</a></h4>
<p>Implementations can claim conformance for emoji collation or short names by conforming to a particular version of CLDR.</p>
<h4>1.5.2 <a name="Versioning" href="#Versioning">Versioning</a></h4>
<p>Starting with Version 11.0 of this specification, the repertoire of emoji characters is
synchronized with the Unicode Standard, and has the same version numbering system. </p>
<p>As of version 13.0, data file comments use the labeling convention “Ex.x”.
This label corresponds to the Emoji version when the emoji character or emoji sequence
was first defined in associated data files. For example, the label “E5.0” is associated with
<a href="https://www.unicode.org/reports/tr51/tr51-12.html">Unicode Emoji, Version 5.0</a>.
There are three special values used primarily for emoji characters before the official
release of Emoji 1.0 in 2015:</p>
<div align="center">
<table class="subtle">
<tr>
<th>Label</th>
<th>Intended Coverage</th>
</tr>
<tr>
<td>E0.0</td>
<td>This label is used for special characters, including:
<ul>
<li>Most emoji component characters, regardless of when they were first encoded.</li>
<li>Other non-emoji characters in the data files.</li>
</ul>
</td>
</tr>
<tr>
<td>E0.6</td>
<td>Emoji characters added to Unicode 6.0. This includes the emoji characters deriving
from Japanese carrier sets, as well as some characters from the ARIB Japanese
television standard.</td>
</tr>
<tr>
<td>E0.7</td>
<td>Emoji characters added to Unicode 7.0. This consists largely of emoji deriving
from the Windows Wingding and Webdings sets, but also includes more characters from
the ARIB Japanese television standard.</td>
</tr>
</table>
</div>
<p>The following table shows the corresponding Emoji version and
Unicode Standard version, up through Version 17.0, including the labels used in data file comments.</p>
<p class="caption"><a name="EmojiVersions" href="#EmojiVersions">Emoji Versions</a></p>
<div align='center'>
<table class="subtle">
<tbody>
<tr>
<th>Emoji Version</th>
<th>Date</th>
<th>Unicode Version</th>
<th>Data File Comment</th>
</tr>
<tr>
<td>N/A</td>
<td>various</td>
<td>various</td>
<td>E0.0</td>
</tr>
<tr>
<td>N/A</td>
<td>2010-10-11</td>
<td>Unicode 6.0</td>
<td>E0.6</td>
</tr>
<tr>
<td>N/A</td>
<td>2014-06-16</td>
<td>Unicode 7.0</td>
<td>E0.7</td>
</tr>
<tr>
<td>Emoji 1.0</td>
<td>2015-06-09</td>
<td>Unicode 8.0</td>
<td>E1.0</td>
</tr>
<tr>
<td>Emoji 2.0</td>
<td>2015-11-12</td>
<td>Unicode 8.0</td>
<td>E2.0</td>
</tr>
<tr>
<td>Emoji 3.0</td>
<td>2016-06-03</td>
<td>Unicode 9.0</td>
<td>E3.0</td>
</tr>
<tr>
<td>Emoji 4.0</td>
<td>2016-11-22</td>
<td>Unicode 9.0</td>
<td>E4.0</td>
</tr>
<tr>
<td>Emoji 5.0</td>
<td>2017-06-20</td>
<td>Unicode 10.0</td>
<td>E5.0</td>
</tr>
<tr>
<td>Emoji 11.0</td>
<td>2018-05-21</td>
<td>Unicode 11.0</td>
<td>E11.0</td>
</tr>
<tr>
<td>Emoji 12.0</td>
<td>2019-03-05</td>
<td>Unicode 12.0</td>
<td>E12.0</td>
</tr>
<tr>
<td>Emoji 12.1</td>
<td>2019-10-21</td>
<td>Unicode 12.1</td>
<td>E12.1</td>
</tr>
<tr>
<td>Emoji 13.0</td>
<td>2020-03-10</td>
<td>Unicode 13.0</td>
<td>E13.0</td>
</tr>
<tr>
<td>Emoji 13.1</td>
<td>2020-09-15</td>
<td>Unicode 13.0</td>
<td>E13.1</td>
</tr>
<tr>
<td>Emoji 14.0</td>
<td>2021-09-14</td>
<td>Unicode 14.0</td>
<td>E14.0</td>
</tr>
<tr>
<td>Emoji 15.0</td>
<td>2022-09-13</td>
<td>Unicode 15.0</td>
<td>E15.0</td>
</tr>
<tr>
<td>Emoji 15.1</td>
<td>2023-09-12</td>
<td>Unicode 15.1</td>
<td>E15.1</td>
</tr>
<tr>
<td>Emoji 16.0</td>
<td>2024-09-10</td>
<td>Unicode 16.0</td>
<td>E16.0</td>
</tr>
<tr>
<td>Emoji 17.0</td>
<td>2025-09-09</td>
<td>Unicode 17.0</td>
<td>E17.0</td>
</tr>
</tbody>
</table>
</div>
<br>
<h2>
2 <a name="Design_Guidelines" href="#Design_Guidelines">Design
Guidelines</a>
</h2>
<p>Unicode characters can have many different presentations as
text. An “a” for example, can look quite different
depending on the font. Emoji characters can have two main kinds of
presentation:</p>
<ul>
<li>the primary <em>emoji presentation, </em>with colorful and perhaps
whimsical shapes, even animated
</li>
<li>a <em>text presentation, </em>such as black & white
</li>
</ul>
<p>
More precisely, a text presentation is a simple foreground shape
whose color is determined by other information, such as setting
a <span class="green">color</span> on the text, while an emoji
presentation determines the color(s) of the character, and is
typically multicolored. In other words, when someone changes the text
color in a word processor, a character with an emoji presentation
will not change color.
</p>
<p>Any Unicode character can be presented with a text
presentation, as in the Unicode charts. For the emoji presentation,
both the name and the representative glyph in the Unicode chart
should be taken into account when designing the appearance of the
emoji, along with the images used by other vendors. The shape of the
character can vary significantly. For example, here are just a few of
the possible images for U+1F36D LOLLIPOP, U+1F36E CUSTARD, U+1F36F
HONEY POT, and U+1F370 SHORTCAKE:</p>
<p align="center">
<img width='50%'
src="images/other/emoji-examples.png" alt="emoji examples">
</p>
<p>
While the shape of the character can vary significantly, designers
should maintain the same “core” shape, based on the shapes used
mostly commonly in industry practice. For example, a U+1F36F HONEY
POT encodes for a pictorial representation of a pot of honey, not for
some semantic like “sweet”. It would be unexpected to
represent U+1F36F HONEY POT as a sugar cube, for example. Deviating
too far from that core shape can cause interoperability problems: see
<a target="_blank"
href="https://web.archive.org/web/20140502051433/http://www.tuaw.com/2014/04/30/you-may-be-accidentally-sending-friends-a-hairy-heart-emoji/">accidentally-sending-friends-a-hairy-heart-emoji<img src="https://www.unicode.org/img/external_link.png" alt="external link"></a>.
Direction (whether a person or object faces to the right or left, up
or down) should also be maintained where possible, because a change
in direction can change the meaning: when sending
<img
height='14' alt="🏊" src="images/apple/apple_1f3ca.png"><img
height='14' alt="🐊" src="images/apple/apple_1f40a.png">
“person escaping from crocodile”,
people expect any recipient to see the person swimming in
the same direction as when they composed it.
See <em>Section 2.10, <a href="#Direction">Emoji Glyph Facing Direction</a></em>.</p>
<p>
Emoji should have a generic appearance.
For certain emoji, specific modifiers for skin tone and gender can be applied.
See Section 2.4 <a href="#Diversity">Diversity</a>.
</p>
<p> Flag emoji characters are discussed in <a href="#Flags"> Annex B:
Valid Emoji Flag Sequences</a>.</p>
<h3>
2.1 <a name="Names" href="#Names">Names</a>
</h3>
<p>Every emoji has a CLDR short name, which may change over time.
Every emoji character also has a formal Unicode name, like every other Unicode
character; this is a permanent identifier which cannot be changed.</p>
<p>The formal Unicode name of a Unicode character does not
determine its appearance. Formal names of symbols such as BLACK MEDIUM
SQUARE or WHITE MEDIUM SQUARE are not meant to indicate that the corresponding
character must be presented in black or white, respectively; rather, the use
of “black” and “white” in the names is generally just to contrast
<strong>filled</strong> versus <strong>outline</strong> shapes, or a darker
color fill versus a lighter color fill. Similarly, in other symbols such as
the hands U+261A BLACK LEFT POINTING INDEX and U+261C WHITE LEFT POINTING
INDEX, the words “white” and “black” also refer to outlined versus filled,
and do not indicate skin color.
</p>
<p>However, other color words in the name, such as YELLOW,
typically provide a recommendation as to the emoji presentation,
which should be followed to avoid interoperability problems.</p>
<p>In many cases the consensus for the best depiction has evolved
in the time since the original formal name was standardized, and the preferred
depiction is now better reflected by the CLDR short name. For example,
U+1F483 DANCER should be designed in accordance with the CLDR short name
<em>woman dancing</em> (an additional character was added for <em>man dancing</em>).
In addition, only emoji characters have formal Unicode names; the emoji
sequences just have CLDR short names.</p>
<p>The formal Unicode name of each character must be unique, and
sometimes distinguishing words are included in the name to maintain that
uniqueness when two contrasting characters are added, such as:</p>
<p style='margin-left:4em'> 🐶 U+1F436 DOG FACE<br>
🐕 U+1F415 DOG<br><br>
🐮 U+1F42E COW FACE<br>🐄 U+1F404 COW</p>
<p>In cases such as these, the images must also contrast. However,
in some cases additional terms like FACE were added to the name when they were
not needed for uniqueness. There is no requirement that an image contrast be
maintained where there are not contrasting emoji. Consider the following emoji:</p>
<p style='margin-left:4em'> 🦌 U+1F98C DEER<br><br> 🦓 U+1F993 ZEBRA FACE</p>
<p> Because there are no other contrasting DEER or ZEBRA emoji,
each of these two could be depicted with a face only, face and shoulders,
full body, or other choices.</p>
<h3>
2.2 <a name="Display" href="#Display">Display</a>
</h3>
<p>Emoji characters may not always be displayed on a white
background. They are often best given a faint, narrow contrasting
border to keep the character visually distinct from a similarly
colored background. Thus a Japanese flag would have a border so that
it would be visible on a white background, and a Swiss flag have a
border so that it is visible on a red background.</p>
<p>Current practice is for emoji to have a square aspect ratio,
deriving from their origin in Japanese. For interoperability, it is
recommended that this practice be continued with current and future
emoji. They will typically have about the same vertical placement and advance
width as CJK ideographs. For example:</p>
<p align='center'><img src="images/emoji_advance_width.png" height="49" alt="emoji_advance_width"></p>
<p>They should use transparency for proper display for selection and with colored
backgrounds:</p>
<p align='center'><img src="images/emoji_transparency.png" height="49" alt="emoji_transparency"></p>
<p>The set of supported emoji sequences may vary by platform. For example,
take the following emoji ZWJ sequence:</p>
<p align='center'><img src="images/black_flag.png" height="49" alt="black_flag"><img src="images/ZWJ.png" height="49" alt="apple_1f3f4"><img src="images/skull_and_crossbones.png" height="49" alt="skull_and_crossbones"></p>
<p>On a particular platform, it can be shown as a single image:</p>
<p align='center'><img src="images/PirateFlagEmoji.png" height="49" alt="PirateFlagEmoji"></p>
<p>However, if that combination is not supported as a single unit,
it may show up as a sequence like the following, and the user sees no indication
that it was meant to be composed into a single image:</p>
<p align='center'><img src="images/black_flag.png" height="49" alt="black_flag"><img src="images/skull_and_crossbones.png" height="49" alt="skull_and_crossbones"></p>
<p>Implementations could provide an indication of the composed nature
of an unsupported emoji sequence where possible. This gives users the additional
information that that sequence was intended to have a composed form. It also
explains why the sequence will not behave as separate elements: The arrow key
will not move between the flag and the skull & crossbones, and line breaks
will not occur between apparently separate emoji.</p>
<p>The following is an example of an approach that implementations can use. There are other approaches that could have a more intuitive appearance, but that could be difficult to implement with current text display mechanisms.</p>
<p>Display the ZWJ as a visible “glue” character, with zero or very narrow width.</p>
<blockquote>
<p align="center"><img src="images/bridged-zwj.png" height="49" alt="bridged ZWJ"></p>
</blockquote>
<h3>
2.3 <a name="Gender" href="#Gender">Gender</a>
</h3>
<p>
The following human-form emoji are currently considered to have explicit
gender appearance based on the name and/or practice. They intentionally
contrast with other characters. This list may change in the future if new
explicit-gender characters are added, or if some of these are changed to be
gender-neutral. The names below are the CLDR short names,
followed by the formal Unicode name in capital letters if it differs.</p>
<p class="caption"><a name="ExplicitGenderApperance" href="#ExplicitGenderApperance">Emoji
With Explicit Gender Appearance</a></p>
<div align="center">
<table class="subtle">
<tr>
<th colspan='2'>Female</th>
<th colspan='2'>Male</th>
</tr>
<tr><td>U+1F467</td><td>girl</td><td>U+1F466</td><td>boy</td></tr>
<tr><td>U+1F469</td><td>woman</td><td>U+1F468</td><td>man</td></tr>
<tr><td>U+1F475</td><td>old woman<br>OLDER WOMAN</td>
<td>U+1F474</td><td>old man<br>OLDER MAN</td></tr>
<tr><td>U+1F46D</td><td>women holding hands<br>TWO WOMEN HOLDING HANDS</td>
<td>U+1F46C</td><td>men holding hands<br>TWO MEN HOLDING HANDS</td></tr>
<tr><td>U+1F936</td><td>Mrs. Claus<br>MOTHER CHRISTMAS</td>
<td>U+1F385</td><td>Santa Claus<br>FATHER CHRISTMAS</td></tr>
<tr><td>U+1F478</td><td>princess</td><td>U+1F934</td><td>prince</td></tr>
<tr><td>U+1F483</td><td>woman dancing<br>DANCER</td>
<td>U+1F57A</td><td>man dancing</td></tr>
<tr><td>U+1F930</td><td>pregnant woman</td>
<td>U+1FAC3</td><td>pregnant man</td></tr>
<tr><td>U+1F931</td><td>breast-feeding</td><td></td><td></td></tr>
<tr><td>U+1F9D5</td><td>woman with headscarf<br>PERSON WITH HEADSCARF</td>
<td></td><td></td></tr>
<tr>
<th colspan='4'>Explicit Gender Combination</th>
</tr>
<tr><td>U+1F46B</td><td colspan='3'>woman and man holding hands<br>MAN AND WOMAN HOLDING HANDS</td></tr>
</table>
</div>
<p>The emoji in the table <a href="#Emoji13NewGenderNeutral">Emoji
Changed to Gender-Neutral in Emoji 13.0+</a> below have been removed from the
table <a href="#ExplicitGenderApperance">Emoji With Explicit Gender Appearance</a>,
and the CLDR names for most have been changed to use <em>person</em> (along with
some other changes). The <em>person with veil</em> and <em>person in tuxedo</em>
emoji also have RGI man and woman gender variants. The others do not; for
<em>person in suit levitating</em> and <em>person with skullcap</em>, the visual
distinctions would be unclear at emoji sizes.</p>
<p class="caption"><a name="Emoji13NewGenderNeutral" href="#Emoji13NewGenderNeutral">Emoji
Changed to Gender-Neutral in Emoji 13.0+</a></p>
<div align="center">
<table class="subtle">
<tr>
<th colspan='3'>Gender-Neutral</th>
</tr>
<tr>
<td rowspan="4">E13.0</td>
<td>U+1F470</td>
<td>person with veil<br>
BRIDE WITH VEIL</td>
</tr>
<tr>
<td>U+1F935</td>
<td>person in tuxedo<br>
MAN IN TUXEDO</td>
</tr>
<tr>
<td>U+1F574</td>
<td>person in suit levitating<br>
MAN IN BUSINESS SUIT LEVITATING</td>
</tr>
<tr>
<td>U+1F472</td>
<td>person with skullcap<br>
MAN WITH GUA PI MAO</td>
</tr>
<tr>
<td>E13.1</td>
<td>U+1F9D4</td>
<td>person: beard<br>
BEARDED PERSON</td>
</tr>
</table>
</div>
<p> </p>
<h4>
2.3.1 <a name="gender-neutral" href="#gender-neutral">Gender-Neutral Emoji</a>
</h4>
<p>It is often the case that gender is unknown or irrelevant, as in the usage
“Is there a doctor on the plane?,” or a gendered appearance may not be desired.
Such cases are known as “gender-neutral,” “gender-inclusive,”
“unspecified-gender,” or many other terms. Except for the emoji
shown in the table <a href="#ExplicitGenderApperance">Emoji With Explicit Gender Appearance</a>,
human-form emoji should normally be depicted in a gender-neutral way unless
gender appearance is explicitly specified using an
<a href="#Emoji_ZWJ_Sequences">emoji ZWJ sequence</a> in one of the ways shown
in the following table.</p>
<p class='caption'><a name="GendAppearMech_Table" href="#GendAppearMech_Table">Gender Appearance Mechanisms</a></p>
<table class="subtle">
<tr>
<th>Type</th>
<th>Description</th>
<th>Examples</th>
</tr>
<tr>
<th nowrap>Sign Format</th>
<td>A human-form emoji can be given explicit gender using a ZWJ
sequence. The sequence contains the base emoji followed by ZWJ and either
FEMALE SIGN or MALE SIGN. The human-form emoji alone should be gender-neutral
in form.</td>
<td nowrap>man runner = RUNNER + ZWJ + MALE SIGN<br>
woman runner = RUNNER + ZWJ + FEMALE SIGN<br>runner = RUNNER</td>
</tr>
<tr>
<th nowrap>Object Format</th>
<td>A profession or role emoji can be formed using a ZWJ sequence.
The sequence starts with MAN or WOMAN followed by ZWJ and ending with an object.
The ADULT character can be used for a gender-neutral version.</td>
<td nowrap>man astronaut = MAN + ZWJ + ROCKET SHIP<br>
woman astronaut = WOMAN + ZWJ + ROCKET SHIP<br>
astronaut = ADULT + ZWJ + ROCKET SHIP</td>
</tr>
</table>
<p>Although the human-form emoji used in sign format type ZWJ
sequences are supposed to have gender-neutral appearance by themselves (when
not used in a sign format type ZWJ sequence), many
vendors previously depicted these human-form emoji as a
man or woman. As a result, they had
the same appearance as one of the sign format type ZWJ sequences.
For example, most vendors depicted
<em>detective</em> as <em>man detective</em> and <em>person getting haircut</em>
as <em>woman getting haircut</em>, but some vendors depicted
<em>police officer</em> as <em>man police officer</em> while others
depicted it as <em>woman police officer</em>.</p>
<p>Gender-neutral versions of the profession or role emoji using
object format type ZWJ sequences are promulgated by adding them to the
<em><strong><a href="#def_emoji_ZWJ_sequences">RGI emoji ZWJ sequence set</a></strong></em>.</p>
<h4>
2.3.2 <a name="marking-gender-in-input" href="#marking-gender-in-input">Marking
Gender in Emoji Input</a>
</h4>
<p>Emoji input systems such as keyboards or palettes typically
provide for input of some emoji whose appearance is explicitly gendered—for
example, emoji that appear specifically as a woman or man. When such emoji
are not included in the table
<em><strong><a href="#ExplicitGenderApperance">Emoji With Explicit Gender
Appearance</a></strong></em>, the input system should generate a sequence for
them that explicitly indicates the gendered appearance, rather than
relying on a particular system’s default appearance. This principle is shown
with the following example:</p>
<p>Assume on some system that the default appearance of
<em>detective</em> is as <em>man detective</em>. On that system, when entering
<em>man detective</em>, an input system should still use the explicit sequence</p>
<p class="indent"><code>U+1F575 U+FE0F U+200D U+2642 U+FE0F</code> (<em>man detective</em>)</p>
<p>rather than just</p>
<p class="indent"><code>U+1F575 U+FE0F</code> (<em>detective</em>)</p>
<h3>
2.4 <a name="Diversity" href="#Diversity">Diversity</a>
</h3>
<p>
Five symbol modifier characters that provide for a range of skin
tones for human emoji were released in Unicode Version 8.0.
These characters are based on the six tones of the
<a
href="https://en.wikipedia.org/wiki/Fitzpatrick_scale">Fitzpatrick scale<img src="https://www.unicode.org/img/external_link.png" alt="external link"></a>,
a recognized standard for dermatology.
The exact shades may vary between implementations.
</p>
<p class="caption"><a name="Emoji_Modifiers_Table" href="#Emoji_Modifiers_Table">Emoji
Modifiers</a></p>
<div align="center">
<table class="subtle">
<tbody>
<tr>
<th>Code</th>
<th>CLDR Short Name</th>
<th>Unicode Character Name</th>
<th colspan="2">Samples</th>
</tr>
<tr>
<td>U+1F3FB</td>
<td><em>light skin tone</em></td>
<td>EMOJI MODIFIER FITZPATRICK TYPE-1-2</td>
<td><img src="images/other/swatch-type-1-2.png" height='20'
alt=""></td>
<td><img src="images/other/swatch-type-1-2-bw.png"
height='20' alt=""></td>
</tr>
<tr>
<td>U+1F3FC</td>
<td><em>medium-light skin tone</em></td>
<td>EMOJI MODIFIER FITZPATRICK TYPE-3</td>
<td><img src="images/other/swatch-type-3.png" height='20'
alt=""></td>
<td><img src="images/other/swatch-type-3-bw.png" height='20'
alt=""></td>
</tr>
<tr>
<td>U+1F3FD</td>
<td><em>medium skin tone</em></td>
<td>EMOJI MODIFIER FITZPATRICK TYPE-4</td>
<td><img src="images/other/swatch-type-4.png" height='20'
alt=""></td>
<td><img src="images/other/swatch-type-4-bw.png" height='20'
alt=""></td>
</tr>
<tr>
<td>U+1F3FE</td>
<td><em>medium-dark skin tone</em></td>
<td>EMOJI MODIFIER FITZPATRICK TYPE-5</td>
<td><img src="images/other/swatch-type-5.png" height='20'
alt=""></td>
<td><img src="images/other/swatch-type-5-bw.png" height='20'
alt=""></td>
</tr>
<tr>
<td>U+1F3FF</td>
<td><em>dark skin tone</em></td>
<td>EMOJI MODIFIER FITZPATRICK TYPE-6</td>
<td><img src="images/other/swatch-type-6.png" height='20'
alt=""></td>
<td><img src="images/other/swatch-type-6-bw.png" height='20'
alt=""></td>
</tr>
</tbody>
</table>
</div>
<p>These characters have been designed so that even where diverse
color images for human emoji are not available, readers can see the
intended meaning.</p>
<p>
When used alone, the default representation of these modifier characters
is a color swatch. Whenever one of these characters <em>immediately</em>
follows certain characters (such as WOMAN), then a font should show
the sequence as a single glyph corresponding to the image for the
person(s) or body part with the specified skin tone, such as the
following:
</p>
<p align="center">
<img src="images/other/person.png" height='36' alt=""><font
size="36"> + </font><img src="images/other/swatch-type-5.png"
height='36' alt=""><font size='36'> → </font><img
src="images/other/person-5.png" height='36' alt="">
</p>
<p>However, even if the font doesn’t show the combined character,
the user can still see that a skin tone was intended:</p>
<p align="center">
<img src="images/other/person.png" height='36' alt=""><img
src="images/other/swatch-type-5.png" height='36' alt="">
</p>
<p>
When a human emoji is not <em>immediately</em> followed by an emoji
modifier character, it should use a generic, <em><a
href="#non-realistic" name="non-realistic">non-realistic</a></em> skin
tone, such as <img src="images/other/swatch-generic.png" height='18'
alt=""> <code>RGB #FFCC22</code> (one of the
colors typically used for the smiley faces).
</p>
<p>No particular hair color is required, however, dark hair is generally
regarded as more neutral because black or dark brown hair
is widespread among people of every skin tone. This does not apply to emoji that
already have an explicit hair color such as
PERSON WITH BLOND HAIR (originally added for compatibility
with Japanese mobile phone emoji), which needs to have blond hair
regardless of skin tone.</p>
<p>
To have an effect on an emoji, an emoji modifier must immediately follow that
base emoji character.
Emoji presentation selectors are neither needed nor recommended for emoji
characters when they are followed by emoji modifiers, and should not be used
in newly generated emoji modifier sequences; the emoji modifier automatically
implies the emoji presentation style. See
<em><a href="#def_emoji_modifier_sequence">ED-13</a>. emoji modifier sequence</em>.
However, some older data may include <em>defective</em> emoji modifier
sequences in which an emoji presentation selector does occur between the
base emoji character and the emoji modifier; this is the only exception
to the rule that an emoji modifier must immediately follow the character
that it modifies. In this case the emoji presentation selector should be
ignored. For handling text presentation selectors in sequences, see
<em>Section 4, <a href="#Presentation_Style">Presentation Style</a></em>.</p>
<p align="center"><U+270C VICTORY HAND, FE0F, TYPE-3></p>
<p align="left">Any other intervening character causes the emoji
modifier to appear as a free-standing character. Thus</p>
<p align="center">
<img src="images/other/person.png" height='36' alt=""><font
size="36"> + </font><img src="images/other/zwsp.png"
height="36" alt=""><font size="36"> + </font><img
src="images/other/swatch-type-5.png" height='36' alt=""><font
size='36'> → </font><img src="images/other/person.png"
height='36' alt=""><img
src="images/other/swatch-type-5.png" height='36' alt="">
</p>
<h4>
2.4.1 <a name="Diversity_Implementations"
href="#Diversity_Implementations">Implementations</a>
</h4>
<p>Implementations can present the emoji modifiers as separate
characters in an input palette, or present the combined characters
using mechanisms such as long press.</p>
<p>The emoji modifiers are not intended for combination with
arbitrary emoji characters. Instead, they are restricted to the
emoji modifier base characters: no other characters are to be combined with
emoji modifiers. This set may change over time, with successive
versions of this document.
To find the exact list of emoji modifier
bases for each version, use the Emoji_Modifier_Base character
property, as described in <a href="#Emoji_Properties_and_Data_Files">Annex A: Emoji Properties and Data Files</a>.</p>
<p class="caption"><a href="#Subject_Emoji_Modifiers" name="Subject_Emoji_Modifiers">
Sample Emoji Modifier Bases</a></p>
<div align="center">
<table width="100%" class="simple">
<tr>
<td><img
alt="👦 👧 👨 👩 👴 👵 👶 👱 👮 👲 👳 👷 👸 💂 🕵 🎅 👼 💆 💇 👰 🙍 🙎 🙅 🙆 💁 🙋 🙇 🙌 🙏 🚶 🏃 💃 💪 👈 👉 ☝ 👆 🖕 👇 ✌ 🖖 🤘 🖐 ✊ ✋ 👊 👌 👍 👎 👋 👏 👐 ✍ 💅 👂 👃 🚣 🛀 🏄 🏊 ⛹ 🏋 🚴 🚵"
width="100%"
src="images/other/modifier-bases-v2.png"></td>
</tr>
</table>
</div>
<p>The following chart shows the expected display with emoji
modifiers, depending on the preceding character and the level of
support for the emoji modifier. The “Unsupported” rows show how the
character would typically appear on a system that does not have a
font with that character in it: with a missing glyph indicator.
In some circumstances, display of an emoji modifier
following an Emoji_Modifier_Base character should be suppressed:</p>
<blockquote><p>If an emoji modifier base has no skin visible on a particular system,
then any following emoji modifier should be suppressed.</p></blockquote>
<p>In other circumstances, display of an emoji modifier
following an Emoji_Modifier_Base character may be suppressed:</p>
<blockquote><p> If a particular emoji modifier base uses a non-realistic
skin tone that differs from the default skin tone used for other Emoji_Modifier_Base
characters, then any following emoji modifier may be suppressed. For example,
suppose <em>vampire</em> is shown with gray skin in a particular implementation
while other Emoji_Modifier_Base characters are shown with neon yellow skin in the
absence of emoji modifiers; any emoji modifier following <em>vampire</em> may be
suppressed.</p></blockquote>
<p class="caption"><a name="Emoji_Modifiers_Display" href="#Emoji_Modifiers_Display">Expected
Emoji Modifiers Display</a></p>
<div align="center">
<table class="subtle">
<tr>
<th>Support Level</th>
<th>Emoji Modifier Base</th>
<th>Sequence</th>
<th>Display</th>
</tr>
<tr>
<td rowspan="5">Fully supported</td>
<td>Yes</td>
<td><img src="images/other/person.png"
height='36' alt=""><font size="36"> + </font><img
src="images/other/swatch-type-5.png" height='36'
alt=""></td>
<td><img src="images/other/person-5.png"
height='36' alt=""><font size="36"> </font></td>
</tr>
<tr>
<td>Yes</td>
<td><img src="images/apple/apple_1f9db.png"
alt="🧛" height='36'><font size="36"> + </font><img
src="images/other/swatch-type-5.png" height='36'
alt=""></td>
<td><img src="images/apple/apple_1f9db_1f3ff.png"
alt="🧛" height='36'><font size="36"> </font></td>
</tr>
<tr>
<td>Yes, but no skin visible</td>
<td><img src="images/apple/apple_1f3c2.png"
alt="🏂" height='36'><font size="36"> + </font><img
src="images/other/swatch-type-5.png" height='36'
alt=""></td>
<td><img src="images/apple/apple_1f3c2.png"
alt="🏂" height='36'><font size="36"> </font></td>
</tr>
<tr>
<td>Yes, but unusual default skin tone</td>
<td><img src="images/fb/fb_1f9db.png"
alt="🧛" height='36'><font size="36"> + </font><img
src="images/other/swatch-type-5.png" height='36'
alt=""></td>
<td><img src="images/fb/fb_1f9db.png"
alt="🧛" height='36'><font size="36"> </font><font size="36"> </font></td>
</tr>
<tr>
<td>No</td>
<td><img src="images/twitter/twitter_26fd.png"
alt="⛽" height='36'><font size="36"> + </font><img
src="images/other/swatch-type-5.png" height='36'
alt=""></td>
<td><img src="images/twitter/twitter_26fd.png"
alt="⛽" height='36'><img
src="images/other/swatch-type-5.png" height='36'
alt=""><font size="36"> </font></td>
</tr>
<tr>
<td rowspan="2">Fallback</td>
<td>Yes</td>
<td><img src="images/other/person.png"
height='36' alt=""><font size="36"> + </font><img
src="images/other/swatch-type-5.png" height='36'
alt=""></td>
<td><img src="images/other/person.png"
height='36' alt=""><img
src="images/other/swatch-type-5.png" height='36'
alt=""><font size="36"> </font></td>
</tr>
<tr>
<td>No</td>
<td><img src="images/twitter/twitter_26fd.png"
alt="⛽" height='36'><font size="36"> + </font><img
src="images/other/swatch-type-5.png" height='36'
alt=""></td>
<td><img src="images/twitter/twitter_26fd.png"
alt="⛽" height='36'><img
src="images/other/swatch-type-5.png" height='36'
alt=""><font size="36"> </font></td>
</tr>
<tr>
<td rowspan="2">Unsupported</td>
<td>Yes</td>
<td><img src="images/other/person.png"
height='36' alt=""><font size="36"> + </font><img
src="images/other/swatch-type-5.png" height='36'
alt=""></td>
<td><img src="images/other/person.png"
height='36' alt=""><img
src="images/other/unsupported.png" height='36' alt=""><font
size="36"> </font></td>
</tr>
<tr>
<td>No</td>
<td><img src="images/twitter/twitter_26fd.png"
alt="⛽" height='36'><font size="36"> + </font><img
src="images/other/swatch-type-5.png" height='36'
alt=""></td>
<td><img src="images/twitter/twitter_26fd.png"
alt="⛽" height='36'><img
src="images/other/unsupported.png" height='36' alt=""><font
size="36"> </font></td>
</tr>
</table>
</div>
<p>
As noted above at the end of
<em>Section 2.4, <a href="#Diversity">Diversity</a>,</em> emoji presentation selectors
are neither needed nor recommended for use in emoji modifier sequences. See
<em><a href="#def_emoji_modifier_sequence">ED-13</a>. emoji modifier sequence</em>.
However, older data may include <em>defective</em> emoji modifier sequences which
do include emoji presentation selectors.</p>
<h4>
2.4.2 <a name="Emoji_Modifiers_in_Text"
href="#Emoji_Modifiers_in_Text">Emoji Modifiers in Text</a>
</h4>
<p>
For input, the composition of
an emoji sequence does not need to be apparent to the user: it appears on
the screen as a single image. On a phone, for example, a long press
on a human figure can bring up a minipalette of different skin tones,
without the user having to separately find the human figure and then
the modifier. The following shows some possible appearances:
</p>
<p class="caption"><a name="Minipalette" href="#Minipalette">Minipalettes</a></p>
<div align="center">
<table class="noborder" cellspacing="0" cellpadding="1">
<tr>
<td><img src="images/other/person-1-2.png"
height='36' alt=""> <img
src="images/other/person-3.png" height='36' alt="">
<img src="images/other/person-4.png" height='36'
alt=""> <img src="images/other/person-5.png" height='36'
alt=""><img src="images/other/person-6.png"
height='36' alt=""></td>
<td class="noborder" width="30%"><div
align="center">
<em>or</em>
</div></td>
<td><img src="images/other/person-6.png"
height='36' alt=""><img
src="images/other/person-5.png" height='36' alt=""><img
src="images/other/person-4.png" height='36' alt=""><img
src="images/other/person-3.png" height='36' alt=""><img
src="images/other/person-1-2.png" height='36' alt=""></td>
</tr>
<tr>
<td class="noborder"><div align="center">
<img src="images/other/person.png" height='36'
alt="">
</div></td>
<td class="noborder"> </td>
<td class="noborder"><div align="center">
<img src="images/other/person.png" height='36'
alt="">
</div></td>
</tr>
</table>
</div>
<p>
Of course, there are many other types of diversity in human
appearance besides different skin tones: Different hair styles and
color, use of eyeglasses, various kinds of facial hair, different
body shapes, different headwear, and so on. It is beyond the scope of
Unicode to provide an encoding-based mechanism for representing every
aspect of human appearance diversity that emoji users might want to
indicate. The best approach for communicating very specific human
images—or any type of image in which preservation of specific
appearance is very important—is the use of embedded graphics, as
described in <a href="#Longer_Term">Longer Term Solutions</a>.
</p>
<h3>
2.5 <a href="#Emoji_ZWJ_Sequences" name="Emoji_ZWJ_Sequences">Emoji
ZWJ Sequences</a>
</h3>
<p>The U+200D ZERO WIDTH JOINER (ZWJ) can be used between the
elements of a sequence of characters to indicate that a single glyph
should be presented if available. An implementation uses this
mechanism to handle such an emoji ZWJ sequence as a single glyph,
with a palette or keyboard that generates the appropriate sequences
for the glyphs shown. To the user of such a system, these behave like
single emoji characters, even though internally they are sequences.</p>
<p>When an emoji ZWJ sequence is sent to a system that does not
have a corresponding single glyph, the ZWJ characters are
ignored and a fallback sequence of separate emoji is displayed.
Thus an emoji ZWJ sequence should only be defined and supported by
implementations where the fallback sequence would also make sense to
a recipient.</p>
<p>For example, the following are possible displays:</p>
<p class="caption"><a name="ZWJ_Display" href="#ZWJ_Display">ZWJ Sequence Display</a></p>
<div align="center">
<table class="subtle">
<tr>
<th>Sequence</th>
<th>Display</th>
<th>Combined glyph?</th>
</tr>
<tr>
<td rowspan="2" style="vertical-align: center"><img
height='36' alt="👩"
src="images/apple/apple_1f469.png"><img height='36'
alt="❤️" src="images/ZWJ.png"><img
height='36' alt="❤️"
src="images/apple/apple_2764.png"><img height='36'
alt="❤️" src="images/ZWJ.png"><img
height='36' alt="👩"
src="images/apple/apple_1f469.png"></td>
<td><div align="center">
<img height='36' alt="👩❤️👩"
src="images/apple/apple_1f469_200d_2764_200d_1f469.png">
</div></td>
<td><div align="center">Yes</div></td>
</tr>
<tr>
<td><div align="center">
<img height='36' alt="👩"
src="images/apple/apple_1f469.png"><img height='36'
alt="❤️" src="images/apple/apple_2764.png"><img
height='36' alt="👩"
src="images/apple/apple_1f469.png">
</div></td>
<td><div align="center">No</div></td>
</tr>
</table>
</div>
<p>
See also the <b>Emoji ZWJ Sequences</b> [<a href="#emoji_charts">emoji-charts</a>].
</p>
<p>The use of ZWJ sequences may be difficult in some
implementations, so caution should be taken before adding new sequences.
</p>
<p>For recommendations on the use of variation selectors in ZWJ
sequences, see <em>Section 2.7, <a href="#Emoji_Implementation_Notes">Emoji
Implementation Notes</a></em> below.
</p>
<h3>
2.6 <a name="Multi_Person_Groupings" href="#Multi_Person_Groupings">Multi-Person
Groupings</a>
</h3>
<p>There are several emoji that depict more than one person interacting.
When implemented with a choice of
genders or skin tones, special handling is
required on a case-by-case basis. These emoji are listed below:
</p>
<p class="caption"><a name="MultiPersonGroupingsTable" href="#MultiPersonGroupingsTable">Multi-Person Groupings</a></p>
<div align='center'>
<table class="subtle">
<tr>
<th>Hex</th>
<th>Char</th>
<th>CLDR Name</th>
</tr>
<tr>
<td>U+1F91D</td>
<td><span style="vertical-align: center">
<img height='36' alt="🤝" src="images/apple/apple_1f91d.png">
</span></td>
<td>handshake</td>
</tr>
<tr>
<td>U+1F46F</td>
<td><span style="vertical-align: center">
<img height='36' alt="👯️" src="images/apple/apple_1f46f.png">
</span></td>
<td>people with bunny ears</td>
</tr>
<tr>
<td>U+1F93C</td>
<td><span style="vertical-align: center">
<img height='36' alt="🤼️" src="images/apple/apple_1f93c.png">
</span></td>
<td>people wrestling</td>
</tr>
<tr>
<td>U+1F46B</td>
<td><span style="vertical-align: center">
<img height='36' alt="👫" src="images/apple/apple_1f46b.png">
</span></td>
<td>woman and man holding hands</td>
</tr>
<tr>
<td>U+1F46C</td>
<td><span style="vertical-align: center">
<img height='36' alt="👬" src="images/apple/apple_1f46c.png">
</span></td>
<td>men holding hands</td>
</tr>
<tr>
<td>U+1F46D</td>
<td><span style="vertical-align: center">
<img height='36' alt="👫" src="images/apple/apple_1f46d.png">
</span></td>
<td>women holding hands</td>
</tr>
<tr>
<td>U+1F48F</td>
<td><span style="vertical-align: center">
<img height='36' alt="💏" src="images/android/android_1f48f.png">
</span></td>
<td>kiss</td>
</tr>
<tr>
<td>U+1F491</td>
<td><span style="vertical-align: center">
<img height='36' alt="💑" src="images/android/android_1f491.png">
</span></td>
<td>couple with heart</td>
</tr>
</table>
<br>
</div>
<p>U+1F46A <em>family</em> is a similar case that also requires special
consideration: see section 2.6.1 for further discussion.</p>
<p>There are some other emoji that would share the same gender and skin tone,
such as folded hands. As far as gender and skin tone are concerned, these behave just
like a single person and so need no special treatment. Other examples include:</p>
<ul>
<li>For U+1F486 <em>person getting massage</em>, the
hands of the person providing the massage should be depicted
with no skin tone showing, perhaps in gloves.</li>
<li>For the following emoji and their skin-tone
variants, the infant should be depicted with no skin tone showing, perhaps
covered in a blanket, so that the emoji is treated as a single
person for purposes of skin tone modification:
<ul>
<li>U+1F931 <em>breast-feeding</em></li>
<li>U+1F469 U+200D U+1F37C <em>woman feeding baby</em></li>
<li>U+1F468 U+200D U+1F37C <em>man feeding baby</em></li>
<li>U+1F9D1 U+200D U+1F37C <em>person feeding baby</em></li>
</ul>
</li>
</ul>
<h4>2.6.1 <a name="multiperson_gender" href="#multiperson_gender">Multi-Person Gender</a></h4>
<p>The emoji for multi-person groupings have unspecified gender (unless
modified) with the exception of the three characters for people holding hands.
The handshake itself does not provide for gender differences.</p>
<p>Family sequences can depict combinations of one or two adults
along with one or two children. RGI sequences allow specifying gender of
family members but vendors are encouraged to use
maximally-generic depictions of families, such as silhouettes; visible
gender distinctions are not required. In addition, gendered family sequences
need not be available for input and any such sequence may be treated the same
as the corresponding non-gendered sequence.
</p>
<p class="caption"><a name="NonGenderedFamilySequences" href="#NonGenderedFamilySequences">
Non-Gendered Family Sequences</a></p>
<div align='center'>
<table class="subtle">
<tr>
<th>Description</th>
<th>Sample<br>Display</th>
<th>Internal Representation</th>
</tr>
<tr>
<td>family:<br>adult, child</td>
<td><span style="vertical-align: center">
<img height='36' alt="🧑🧒" src="images/android/android_1f9d1_200d_1f9d2.png">
</span></td>
<td><span style="vertical-align: center">
<img height='36' alt="🧑" src="images/apple/apple_1f9d1.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="🧒" src="images/apple/apple_1f9d2.png">
</span></td>
</tr>
<tr>
<td>family:<br>adult, child, child</td>
<td><span style="vertical-align: center">
<img height='36' alt="🧑🧒🧒" src="images/android/android_1f9d1_200d_1f9d2_200d_1f9d2.png">
</span></td>
<td><span style="vertical-align: center">
<img height='36' alt="🧑" src="images/apple/apple_1f9d1.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="🧒" src="images/apple/apple_1f9d2.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="🧒" src="images/apple/apple_1f9d2.png">
</span></td>
</tr>
<tr>
<td>family:<br>adult, adult, child</td>
<td><span style="vertical-align: center">
<img height='36' alt="🧑🧑🧒" src="images/android/android_1f9d1_200d_1f9d1_200d_1f9d2.png">
</span></td>
<td><span style="vertical-align: center">
<img height='36' alt="🧑" src="images/apple/apple_1f9d1.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="🧑" src="images/apple/apple_1f9d1.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="🧒" src="images/apple/apple_1f9d2.png">
</span></td>
</tr>
<tr>
<td>family:<br>adult, adult, child, child</td>
<td><span style="vertical-align: center">
<img height='36' alt="🧑🧑🧒🧒" src="images/android/android_1f9d1_200d_1f9d1_200d_1f9d2_200d_1f9d2.png">
</span></td>
<td><span style="vertical-align: center">
<img height='36' alt="🧑" src="images/apple/apple_1f9d1.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="🧑" src="images/apple/apple_1f9d1.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="🧒" src="images/apple/apple_1f9d2.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="🧒" src="images/apple/apple_1f9d2.png">
</span></td>
</tr>
</table>
</div>
<br>
<p>Gender is applied to other multi-person groupings by using
either a sign format type ZWJ sequence as described in
the table <a href="#GendAppearMech_Table">Gender Appearance Mechanisms</a>, or
ZWJ sequences with MAN, WOMAN, and ADULT.
The data files list the RGI versions of these, such as the following:
</p>
<p class="caption"><a name="GenderWithMultiPersonGroupings" href="#GenderWithMultiPersonGroupings">
Examples of Gender with Multi-Person Groupings</a></p>
<div align='center'>
<table class="subtle">
<tr>
<th>Description</th>
<th>Sample<br>Display</th>
<th>Internal Representation</th>
</tr>
<tr>
<td>men with bunny ears</td>
<td><span style="vertical-align: center">
<img height='36' alt="👯♂️" src="images/android/android_1f46f_200d_2642.png">
</span></td>
<td><span style="vertical-align: center">
<img height='36' alt="👯️" src="images/apple/apple_1f46f.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="♂️" src="images/android/android_2642.png">
</span></td>
</tr>
<tr>
<td nowrap>women with bunny ears</td>
<td><span style="vertical-align: center">
<img height='36' alt="👯♀️" src="images/android/android_1f46f_200d_2640.png">
</span></td>
<td><span style="vertical-align: center">
<img height='36' alt="👯️" src="images/apple/apple_1f46f.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="♀" src="images/android/android_2640.png">
</span></td>
</tr>
<tr>
<td>kiss:<br>woman, man</td>
<td><span style="vertical-align: center">
<img height='36' alt="👩❤️💋👨" src="images/android/android_1f469_200d_2764_200d_1f48b_200d_1f468.png">
</span></td>
<td><span style="vertical-align: center">
<img height='36' alt="👩" src="images/apple/apple_1f469.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="❤️" src="images/apple/apple_2764.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="💋" src="images/apple/apple_1f48b.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="👨" src="images/apple/apple_1f468.png">
</span></td>
</tr>
<tr>
<td>couple with heart:<br>man, man</td>
<td><span style="vertical-align: center">
<img height='36' alt="👨❤️👨" src="images/android/android_1f468_200d_2764_200d_1f468.png">
</span></td>
<td><span style="vertical-align: center">
<img height='36' alt="👨" src="images/apple/apple_1f468.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="❤️" src="images/apple/apple_2764.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="👨" src="images/apple/apple_1f468.png">
</span></td>
</tr>
</table>
</div>
<br>
<h4>2.6.2 <a name="multiperson_skintones"
href="#multiperson_skintones">Multi-Person Skin Tones</a></h4>
<p>As with gender, skin tones can be applied to multi-person groupings
in a similar manner. Emoji represented internally by sequences may have skin
tone modifiers (<strong>Emoji_Modifier</strong> characters) added after each
of the characters that take them (those with
<strong>Emoji_Modifier_Base</strong>). This is illustrated by the table
<a href="#SkinTonesForGroupingsUsingSequences">
Examples of Skin Tones for Multi-Person
Groupings Using RGI Sequences</a> below.</p>
<p>Multi-person sequences that mix people characters without skin tones and
people characters with skin tones should not be generated. That is, for
an input system, if one person character in a multi-person emoji sequence
has a skin tone modifier, then all people characters in that sequence should
have skin tone modifiers.</p>
<p>In Emoji 12.0, the Emoji_Modifier_Base property, emoji modifier sequences and
<a href="https://www.unicode.org/Public/emoji/12.0/emoji-zwj-sequences.txt">RGI
ZWJ sequences</a> were updated to add 25 skin tone
combinations for woman and man holding hands, and 15 combinations each for women
holding hands, men holding hands, and people holding hands. These sequences
appear as 70 different images.</p>
<p>In Emoji 12.1, the RGI ZWJ sequences for women holding hands,
men holding hands, and people holding hands were further updated to add 10
more sequences each, so their sequences correspond to those for woman and man
holding hands. The new sequences are for people of different skin tones, but
with the darker skin tone later in the sequence instead of earlier. For example:</p>
<blockquote>
<p>Emoji 12.0 sequence: 1F468 <strong>1F3FD</strong> 200D 1F91D 200D
1F468 <strong>1F3FB</strong> ; men holding hands: <strong>medium</strong> skin tone, <strong>light</strong> skin tone </p>
<p>Emoji 12.1 addition: 1F468 <strong>1F3FB</strong> 200D 1F91D 200D
1F468 <strong>1F3FD</strong> ; men holding hands: <strong>light</strong> skin tone, <strong>medium</strong> skin tone </p>
</blockquote>
<p>The only difference between the above sequences is that the inferred
positions of the medium-skin-tone man and the light-skin-tone man are swapped, left
and right.</p>
<p>Implementations can use the same image for both sequences. For the
multi-person emoji, implementations are not required to have different images for
people of the same gender depending solely on position. The choice of whether to
do so may depend on design considerations specific to particular vendor images.</p>
<p>Other multi-person groups with different skin tone combinations can be represented
as valid sequences, but not all such sequences are RGI. The following table
provides examples of RGI sequences for multi-person groupings with
skin-tone modifications.</p>
<p class="caption"><a name="SkinTonesForGroupingsUsingSequences" href="#SkinTonesForGroupingsUsingSequences">
Examples of Skin
Tones for Multi-Person Groupings Using RGI Sequences</a></p>
<div align='center'>
<table class="subtle">
<tr>
<th>Description</th>
<th>Internal Representation</th>
</tr>
<tr>
<td>women holding hands:<br>medium, dark skin tones</td>
<td><span style="vertical-align: center">
<img height='36' alt="👩" src="images/apple/apple_1f469.png">
<img height='36' alt="🏽" src="images/apple/apple_1f3fd.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="🤝" src="images/apple/apple_1f91d.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="👩" src="images/apple/apple_1f469.png">
<img height='36' alt="🏿" src="images/apple/apple_1f3ff.png">
</span></td>
</tr>
<tr>
<td>people holding hands:<br>medium, dark skin tones</td>
<td><span style="vertical-align: center">
<img height='36' alt="🧑" src="images/apple/apple_1f9d1.png">
<img height='36' alt="🏽" src="images/apple/apple_1f3fd.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="🤝" src="images/apple/apple_1f91d.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="🧑" src="images/apple/apple_1f9d1.png">
<img height='36' alt="🏿" src="images/apple/apple_1f3ff.png">
</span></td>
</tr>
<tr>
<td>handshake:<br>medium, dark skin tones</td>
<td><span style="vertical-align: center">
<img height='36' alt="🫱" src="images/apple/apple_1faf1.png">
<img height='36' alt="🏽" src="images/apple/apple_1f3fd.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="🫲" src="images/apple/apple_1faf2.png">
<img height='36' alt="🏿" src="images/apple/apple_1f3ff.png">
</span></td>
</tr>
</table>
</div>
<br>
<p>Skin tone modifiers can be applied to each of the eight characters listed
in the table <strong><a href="#MultiPersonGroupingsTable">Multi-Person Groupings</a></strong>,
and as of Emoji 17.0 all of the resulting emoji modifier sequences have RGI status;
examples for some of these characters are illustrated in the following table.
This gives all of the people in the group the same skin tone, which is similar
to how the gender marker works.</p>
<p class="caption"><a name="SkinTonesForGroupingsUsingCharacters" href="#SkinTonesForGroupingsUsingCharacters">
Examples of Skin
Tones for Multi-Person Groupings Using Single Characters</a></p>
<div align='center'>
<table class="subtle">
<tr>
<th>Description</th>
<th>Internal Representation</th>
</tr>
<tr>
<td>kiss:<br>medium skin tone</td>
<td><span style="vertical-align: center">
<img height='36' alt="💏" src="images/apple/apple_1f48f.png">
<img height='36' alt="🏽" src="images/apple/apple_1f3fd.png">
</span></td>
</tr>
<tr>
<td>handshake:<br>medium skin tone</td>
<td><span style="vertical-align: center">
<img height='36' alt="🤝" src="images/apple/apple_1f91d.png">
<img height='36' alt="🏽" src="images/apple/apple_1f3fd.png">
</span></td>
</tr>
<tr>
<td>people with bunny ears:<br>medium skin tone</td>
<td><span style="vertical-align: center">
<img height='36' alt="👯️" src="images/apple/apple_1f46f.png">
<img height='36' alt="🏽" src="images/apple/apple_1f3fd.png">
</span></td>
</tr>
<tr>
<td>women with bunny ears:<br>medium skin tone</td>
<td><span style="vertical-align: center">
<img height='36' alt="👯️" src="images/apple/apple_1f46f.png">
<img height='36' alt="🏽" src="images/apple/apple_1f3fd.png">
<img height='36' alt="ZWJ️" src="images/ZWJ.png">
<img height='36' alt="♀" src="images/android/android_2640.png">
</span></td>
</tr>
<tr>
<td>woman and man holding hands:<br>medium skin tone</td>
<td><span style="vertical-align: center">
<img height='36' alt="👫" src="images/apple/apple_1f46b.png">
<img height='36' alt="🏽" src="images/apple/apple_1f3fd.png">
</span></td>
</tr>
</table>
</div>
<br>
<h3>2.7 <a href="#Emoji_Implementation_Notes" name="Emoji_Implementation_Notes">Emoji
Implementation Notes </a></h3>
<p>This section describes important implementation features of emoji,
including the use of emoji and text presentation selectors, how to do segmentation,
and handling of tag characters.</p>
<h4>2.7.1
<a name="Emoji_Variation_Selector_Notes" href="#Emoji_Variation_Selector_Notes">Emoji
and Text Presentation Selectors</a>
</h4>
<p>This section describes where the emoji presentation selectors can be used. The
text presentation selector only occurs in text presentation sequences, which
are not displayed as emoji.</p>
<table class="subtle">
<tbody>
<tr>
<th>Characters</th>
<th>Variation / Behavior</th>
</tr>
<tr>
<td rowspan="2">emoji character</td>
<td><em>may</em> have an emoji or text presentation
selector added if the result is a valid <em>emoji
presentation sequence</em> or <em>text
presentation sequence</em></td>
</tr>
<tr>
<td><em>should</em> have an emoji presentation
selector added if Emoji_Presentation=No whenever
an emoji presentation is desired</td>
</tr>
<tr>
<td rowspan="2">emoji flag sequence</td>
<td><em>does not</em> contain an emoji or text presentation
selector</td>
</tr>
<tr>
<td><em>should</em> be displayed with an emoji presentation by default</td>
</tr>
<tr>
<td rowspan="2">emoji modifier sequence</td>
<td><em>does not</em> contain an emoji or text presentation
selector</td>
</tr>
<tr>
<td><em>should</em> be displayed with an emoji
presentation by default, whether or not the modifier base has Emoji_Presentation=Yes
<ul>
<li>Implementations <em>may</em> choose to support old data that contains
<em>defective</em> emoji_modifier_sequences, that is, having emoji presentation
selectors.</li>
</ul></td>
</tr>
<tr>
<td>emoji ZWJ sequence</td>
<td><em>may have</em> an emoji presentation selector<br><br>
The recommended behavior is:<br><br>
<b>User Input:</b>
<ul>
<li>only <a href="#def_fully_qualified_emoji">fully-qualified emoji</a> ZWJ sequences
should be generated by keyboards and other user input devices.</li>
</ul>
<b>Processing and Display:</b>
<ul>
<li><a href="#def_fully_qualified_emoji">fully-qualified emoji</a> ZWJ
sequences should be handled appropriately in processing,
such as display, editing, segmentation, and so on.</li>
<li><a href="#def_minimally_qualified_emoji">minimally-qualified</a> or
<a href="#def_unqualified_emoji">unqualified</a>
emoji ZWJ sequences may be handled in the same way as their
fully-qualified forms; the choice is up to the implementation.</li>
</ul>
A text presentation selector applied to any element of an emoji ZWJ sequence
breaks that sequence, preventing it from displaying as a single image. The
partial sequences should
be displayed as separate images, each with presentation style as specified by any
presentation selectors present, or by default style for those emoji that do not
have any variation selectors.
</td>
</tr>
</tbody>
</table>
<h4>2.7.2 <a name="Emoji_With_Tags_Notes" href="#Emoji_With_Tags_Notes">Handling Tag Characters</a></h4>
<p>The properties for tag characters U+E0020..U+E007F (TAG SPACE..CANCEL TAG)
have been modified for use in indicating variants or extensions of emoji characters.
For detailed information on handling TAG sequences correctly, see <a href='#valid-emoji-tag-sequences'>Annex C: Valid Emoji Tag Sequences</a>.</p>
<h3>
2.8 <a name="hair_components" href="#hair_components">Hair Components</a>
</h3>
<p>Emoji Version 11.0 introduced hair components, which can be used in ZWJ sequences to
indicate hair colors or styles. The sequences recommended for general interchange (RGI)
are listed in the data files. The components include:</p>
<ul>
<li>Red-haired (ginger)</li>
<li>Curly-haired</li>
<li>White-haired</li>
<li>Bald</li>
</ul>
<p>There are hundreds of possible distinctions among hair colors and styles, but to limit
the number of combinations—and because emoji are presented with a “cartoon” style—there
is a small number of hair components. Note that the hair color blond has already been
provided for by an explicit blond man/woman/person emoji. Brown/black-haired are already
typical defaults for hair color in human-form emoji.</p>
<h3>2.9 <a name="color" href="#color">Color</a> </h3>
<p>Nine large colored square emoji may be used in ZWJ sequences to
indicate that a base emoji should be displayed with that color if possible. The color
of the resulting image may not be exactly the same as the color square. The color
squares used for this purpose are:</p>
<ul>
<li> U+2B1B BLACK LARGE SQUARE</li>
<li>U+2B1C WHITE LARGE SQUARE</li>
<li> U+1F7E5 LARGE RED SQUARE … U+1F7EB LARGE BROWN SQUARE</li>
</ul>
<p>Where the implementation does not provide a single emoji image in that color, the user should see the
fallback appearance showing an indication of the desired color. Where color ZWJ
sequences are supported and the base emoji already has that color, the color square
should be ignored.</p>
<p class="caption"><a name="EmojiGlyphColorExamples" href="#EmojiGlyphColorExamples">Emoji
Glyph Color Examples</a></p>
<div align='center'>
<table class="subtle">
<tbody>
<tr>
<th> </th>
<th colspan="3">Internal Representation</th>
<th>Sample<br>Display</th>
<th>Fallback<br>Appearance</th>
</tr>
<tr>
<td rowspan="2">black cat</td>
<td><img
height='36' alt="🐈"
src="images/orange_cat.png"><br></td>
<td><img height='36'
alt="‍️" src="images/ZWJ.png"></td>
<td><img
height='36' alt="⬛"
src="images/black_square.png"></td>
<td rowspan="2"><img
height='36' alt="🐈⬛️"
src="images/black_cat.png"></td>
<td rowspan="2"><img
height='36' alt="🐈"
src="images/orange_cat.png"><img
height='36' alt="⬛"
src="images/black_square.png"></td>
</tr>
<tr>
<td>U+1F408</td>
<td>U+200D</td>
<td>U+2B1B</td>
</tr>
<tr>
<td rowspan="2">orange cat</td>
<td><img
height='36' alt="🐈"
src="images/orange_cat.png"><br></td>
<td><img height='36'
alt="‍️" src="images/ZWJ.png"></td>
<td><img
height='36' alt="🟧"
src="images/orange_square.png"></td>
<td rowspan="2"><img
height='36' alt="🐈🟧"
src="images/orange_cat.png"></td>
<td rowspan="2"><img
height='36' alt="🐈"
src="images/orange_cat.png"><img
height='36' alt="🟧"
src="images/orange_square.png"></td>
</tr>
<tr>
<td>U+1F408</td>
<td>U+200D</td>
<td>U+1F7E7</td>
</tr>
</tbody>
</table></div>
<p>The squares require a ZWJ; they do not behave like the five skin-tone modifiers
listed in <span class="caption"><a href="#Emoji_Modifiers_Table">Emoji
Modifiers</a></span>.</p>
<p>The <em>white square</em> emoji is often presented as a light gray, to set
it off from white backgrounds.</p>
<p>In Emoji Version 17.0 there are four RGI emoji ZWJ sequences of this form.</p>
<h3>2.10 <a name="Direction" href="#Direction">Emoji Glyph Facing Direction</a></h3>
<p>Emoji with glyphs that face to the right or left may face either direction, according to
vendor practice. However, that inconsistency can cause a change in meaning when exchanging
text across platforms. The following ZWJ mechanism can be used to explicitly indicate direction. If the base emoji image is not available facing in that direction, the user should see the fallback appearance showing an indication of the desired direction. If direction ZWJ sequences are supported and the base emoji already faces that direction, the direction emoji should be ignored.</p>
<p class="caption"><a name="EmojiGlyphDirectionExamples" href="#EmojiGlyphDirectionExamples">Emoji
Glyph Direction Examples</a></p>
<div align='center'>
<table class="subtle">
<tbody>
<tr>
<th colspan="3">Internal Representation</th>
<th>Intended<br>Display</th>
<th>Fallback<br>Appearance</th>
</tr>
<tr>
<td><img
height='36' alt="🏃"
src="images/leftwards-runner.png"><br></td>
<td><img height='36'
alt="‍️" src="images/ZWJ.png"></td>
<td><img
height='36' alt="⬅️"
src="images/leftwards-arrow.png"></td>
<td rowspan="2"><img
height='36' alt="🏃"
src="images/leftwards-runner.png"></td>
<td rowspan="2"><img
height='36' alt="🏃"
src="images/leftwards-runner.png"><img
height='36' alt="⬅️"
src="images/leftwards-arrow.png"></td>
</tr>
<tr>
<td>U+1F3C3</td>
<td>U+200D</td>
<td>U+2B05 U+FE0F</td>
</tr>
<tr>
<td><img
height='36' alt="🏃"
src="images/leftwards-runner.png"><br></td>
<td><img height='36'
alt="‍️" src="images/ZWJ.png"></td>
<td><img
height='36' alt="➡️"
src="images/rightwards-arrow.png"></td>
<td rowspan="2"><img
height='36' alt="🏃➡️"
src="images/rightwards-runner.png"></td>
<td rowspan="2"><img
height='36' alt="🏃"
src="images/leftwards-runner.png"><img
height='36' alt="➡️"
src="images/rightwards-arrow.png"></td>
</tr>
<tr>
<td>U+1F3C3</td>
<td>U+200D</td>
<td>U+27A1 U+FE0F</td>
</tr>
</tbody>
</table></div>
<p>A direction RGI sequence can also exist for emoji where there is no
inconsistency across vendors: in this case there will be an RGI sequence for only one
direction; vendors may choose to handle the non-RGI sequence for the opposite direction
(corresponding to the unmodified emoji) to suppress the arrow of the fallback appearance.</p>
<p>In Emoji Version 17.0 there are 108 RGI emoji ZWJ sequences of this form.</p>
<h3>2.11 <a name="composing_zwj_seq" href="#composing_zwj_seq">Order of Emoji ZWJ Sequences</a>
</h3>
<p>When representing emoji ZWJ sequences for an individual person, the following order should be used:</p>
<div align="center">
<table class='subtle'>
<tr>
<th>Order</th><th>Category</th>
<th>Section</th>
</tr>
<tr>
<td>1</td><td>Base</td>
<td><em>Section 1.4.1, <a href="#Emoji_Characters">Emoji Characters</a></em></td></tr>
<tr>
<td>2</td><td>Emoji modifier or emoji presentation selector</td>
<td><em>Section 2.4, <a href="#Diversity">Diversity</a></em></td>
</tr>
<tr>
<td>3</td><td>Hair component</td>
<td><em>Section 2.8, <a href="#hair_components">Hair Component</a></em></td>
</tr>
<tr>
<td>4</td><td>Color</td>
<td><em>Section 2.9, <a href="#color">Color</a></em></td>
</tr>
<tr>
<td>5</td><td>Gender sign or object</td>
<td><em>Section 2.3.1, <a href="#gender-neutral">Gender-Neutral Emoji</a></em></td>
</tr>
<tr>
<td>6</td><td>Direction indicator</td>
<td><em>Section 2.10, <a href="#Direction">Emoji Glyph Facing Direction</a></em></td>
</tr>
</table>
</div>
<h2>
3 <a name="Identification" href="#Identification">Which Characters are Emoji</a>
</h2>
<p>There are different ways to count the emoji in Unicode, especially
because an emoji sequence may display as a single
emoji image. The following provides an overview of the ways to count
emoji; it can be (for example):</p>
<ul>
<li>The count of code points that can be used in emoji, though this includes some code
points that are only used as part of sequences and don’t have emoji appearance by
themselves;</li>
<li>All sequences of one or more characters that can appear as a single glyph (which is
probably closer to what users think of as the number of emoji), though typically only a
subset of possible sequences are displayed as a single glyph on any platform, and some
sequences may be platform-specific extensions.</li>
</ul>
<p>It is recommended that any font or keyboard whose goal is to support Unicode emoji
should support the characters and sequences listed in the [<a href="#emoji_data">emoji-data</a>]
data files. The best definition of the full set is in the <strong>emoji-test.txt</strong> file
[<a href="#emoji_data">emoji-data</a>].</p>
<p>
<b>Emoji Counts</b> [<a href="#emoji_charts">emoji-charts</a>] provides more detail about the various counts as of
the current version of this specification. The various column
and row headers are described in
<a href="https://www.unicode.org/emoji/format.html#col-totals">Emoji Counts Key</a>.</p>
<ul>
<li>The “<strong>Subtotal</strong>” row in the chart
indicates the count of what users typically think of as emoji. For example,
the 26 Regional Indicator (RI) code points are not included there; even though
they have Emoji status, they are typically only used in pairs to represent
flags.</li>
<li>Typical
keyboards may normally present even fewer emoji, since they may use
mechanisms like a long press to display modifier
sequences for specific emoji, and would thus not
simultaneously display all of the images associated with the chart rows that count
emoji with explicit skin tones.</li>
</ul>
<p>Separate [<a href="#emoji_charts">emoji-charts</a>] provide more information on many of these subsets and others.</p>
<h2>
4 <a name="Presentation_Style" href="#Presentation_Style">Presentation
Style</a>
</h2>
<p>Certain emoji have defined variation sequences, in which an emoji character
can be followed by an invisible <a href='#def_emoji_presentation_selector'>emoji presentation selector</a> or <a href='#def_text_presentation_selector'>text presentation selector</a>.</p>
<p>
This capability was added in <a
href="https://blog.unicode.org/2012/01/announcing-unicode-standard-version-61.html">Unicode
6.1</a>. Some systems may also provide this distinction with higher-level
markup, rather than variation sequences. For more information on these selectors,
see <b>Emoji Presentation Sequences</b>
[<a href="#emoji_charts">emoji-charts</a>]. For details
regarding the use of emoji or text presentation selectors in emoji sequences
specifically, see <em>Section 2.7, <a href="#Emoji_Implementation_Notes">Emoji
Implementation Notes</a></em>.
</p>
<p>
Implementations should support both styles of presentation for the
characters with emoji and text presentation sequences,
if possible. Most of these characters are emoji that were unified with
preexisting characters. Because people are now using emoji presentation for
a broader set of characters, Unicode 9.0 added emoji and text
presentation sequences for all emoji with default text presentation
(see discussion below). These are the characters shown in the column labeled
“Default Text Style; no VS in U8.0” in the <b>Text
vs Emoji</b> chart [<a href="#emoji_charts">emoji-charts</a>].
</p>
<p>
However, even for cases in which the emoji
and text presentation selectors are available, it had
not been clear for implementers whether the <em>default</em> presentation for
pictographs should be emoji or text. That means that a piece of text
may show up in a different style than intended when shared across
platforms. While this is all perfectly legitimate for Unicode
characters—<em>presentation style is never guaranteed</em>—a shared
sense among developers of when to use emoji presentation by default
is important, so that there are fewer unexpected or jarring presentations.
Implementations need to know what the generally expected default presentation is,
to promote interoperability across platforms and applications.
</p>
<p>There had been no clear line for implementers between three
categories of Unicode characters:
</p>
<ol>
<li><strong>emoji-default:</strong> those expected to have an
emoji presentation by default, but can also have a text presentation</li>
<li><strong>text-default:</strong> those expected to have a text
presentation by default, but could also have an emoji presentation</li>
<li><strong>text-only:</strong> those that should only have a
text presentation</li>
</ol>
<p>
These categories can be distinguished using properties listed in <a
href="#Emoji_Properties_and_Data_Files">Annex A: Emoji Properties and Data Files</a>. The
first category are characters with <strong>Emoji=Yes</strong> and <strong>Emoji_Presentation=Yes</strong>.
The second category are characters with <strong>Emoji=Yes</strong>
and <strong>Emoji_Presentation=No</strong>. The third category are
characters with <strong>Emoji=No</strong>.
</p>
<p>The presentation of a given emoji character depends on the
environment, whether or not there is an emoji or text presentation
selector, and the default presentation style (emoji versus text). In
informal environments like texting and chats, it is more appropriate
for most emoji characters to appear with a colorful emoji
presentation, and only get a text presentation with a text presentation
selector. Conversely, in formal environments such as word processing,
it is generally better for emoji characters to appear with a text
presentation, and only get the colorful emoji presentation with the
emoji presentation selector.
</p>
<p>Based on those factors, here is typical presentation behavior.
However, these guidelines may change with changing user expectations.
</p>
<p class="caption"><a name="Emoji_vs_Text_Display" href="#Emoji_vs_Text_Display">Emoji
versus Text Display</a></p>
<div align="center">
<table class="subtle">
<tr>
<th rowspan="2">Example Environment</th>
<th rowspan="2"><div align="center">with Emoji presentation selector</div></th>
<th rowspan="2"><div align="center">with Text presentation selector</div></th>
<th colspan="2"><div align="center">with neither</div></th>
</tr>
<tr>
<th><div align="center">text-default</div></th>
<th><div align="center">emoji-default</div></th>
</tr>
<tr>
<td>word processing</td>
<td><div align="center">
<img height='18' alt="⎈"
src="images/apple/apple_2615.png">
</div></td>
<td><div align="center">
<img height='18' alt="⎈"
src="images/ref/ref_2615.png">
</div></td>
<td><div align="center">
<img height='18' alt="⎈"
src="images/ref/ref_2615.png">
</div></td>
<td><div align="center">
<img height='18' alt="⎈"
src="images/ref/ref_2615.png">
</div></td>
</tr>
<tr>
<td>plain web pages</td>
<td><div align="center">
<img height='18' alt="⎈"
src="images/apple/apple_2615.png">
</div></td>
<td><div align="center">
<img height='18' alt="⎈"
src="images/ref/ref_2615.png">
</div></td>
<td><div align="center">
<img height='18' alt="⎈"
src="images/ref/ref_2615.png">
</div></td>
<td><div align="center">
<img height='18' alt="⎈"
src="images/apple/apple_2615.png">
</div></td>
</tr>
<tr>
<td>texting, chats</td>
<td><div align="center">
<img height='18' alt="⎈"
src="images/apple/apple_2615.png">
</div></td>
<td><div align="center">
<img height='18' alt="⎈"
src="images/ref/ref_2615.png">
</div></td>
<td><div align="center">
<img height='18' alt="⎈"
src="images/apple/apple_2615.png">
</div></td>
<td><div align="center">
<img height='18' alt="⎈"
src="images/apple/apple_2615.png">
</div></td>
</tr>
</table>
<br>
</div>
<p>
Computer languages use the Pattern_Syntax property to identify code points that have been reserved for
syntactic use. Some of the code points with the Pattern_Syntax property have default emoji presentation.
When emoji are used as part of computer language syntax, text presentation
sequences can be used to unambiguously express that they should be displayed
and interpreted as syntactic characters, rather than emoji.
See <em>Section 7.2, Emoji Profile</em>, in Unicode Standard Annex #31,
“Unicode Identifiers and Syntax” [<a href="#UAX31">UAX31</a>].</p>
<h3>
4.1 <a name="Emoji_Variation_Selectors"
href="#Emoji_Variation_Selectors">Emoji and
Text Presentation Selectors</a>
</h3>
<p>
Every emoji character with a
default text presentation allows for an emoji or text
presentation selector. Thus the presentation of these characters
can be controlled on a character-by-character basis. The characters that can
have these selectors applied to them
are listed in <b>Emoji Presentation Sequences</b>
[<a href="#emoji_charts">emoji-charts</a>].
</p>
<p>
In addition, the next two sections describe two other
mechanisms for globally controlling the emoji presentation: using
language tags with locale extensions, or using special script codes.
Though these are new mechanisms and not yet widely supported, vendors
are encouraged to support the locale extension for most general usage
such as in browsers; the special script codes may be appropriate for
more specific usage such as OpenType font selection, or in APIs.
For more information, see [<a href="#CLDR">CLDR</a>].
</p>
<h3>
4.2 <a name="Emoji_Locale_Extension" href="#Emoji_Locale_Extension">Emoji
Locale Extension</a>
</h3>
<p>
The locale extension “-em” can be used to specify desired
presentation for characters that may have both text-style and emoji-style
presentations available. There are three values that can be used, here
illustrated with “sr-Latn”:
</p>
<div align="center">
<table class="subtle">
<tbody>
<tr>
<th>Locale Code</th>
<th>Description</th>
</tr>
<tr>
<td>sr-Latn-u-em-<strong>emoji</strong></td>
<td>use an emoji presentation for emoji characters where
possible</td>
</tr>
<tr>
<td>sr-Latn-u-em-<strong>text</strong></td>
<td>use a text presentation for emoji characters where
possible</td>
</tr>
<tr>
<td nowrap>sr-Latn-u-em-<strong>default</strong></td>
<td>use the default presentation (only needed to reset an
inherited -em setting).</td>
</tr>
</tbody>
</table>
</div>
<p>
This can be used in HTML, for example, with
<code><html lang="sr-Latn-u-em-emoji"></code>.
Note that this approach does not have the disadvantages listed below
for the script-tag approach.
</p>
<h3>
4.3 <a name="Emoji_Script" href="#Emoji_Script">Emoji Script Codes</a>
</h3>
<p>
Two script subtags can be used to control the presentation style.
These use script codes defined by ISO 15924 but given more
specific semantics by CLDR, see <a
href='https://www.unicode.org/reports/tr35/#unicode_script_subtag_validity'>unicode_script_subtag</a>:
</p>
<ul>
<li>Zsye—prefer emoji style for characters that have both text and
emoji styles available.</li>
<li>Zsym—prefer text style for characters that have both text and
emoji styles available.</li>
</ul>
<p>
These script codes are not suitable for use in general language tags:</p>
<ul>
<li>They cannot be used with language-script combinations; for example,
if the language is sr-Latn (Serbian in Latin script), then Zsye
cannot be used.</li>
<li>They may confuse processes that depend on language tags, such as
spell checkers.</li>
</ul>
<p>
However, they may be useful by themselves in specific contexts such as
OpenType font selection, or in APIs that take script codes.</p>
<h3>
4.4 <a name="Other_Emoji_Presentation_Approaches" href="#Other_Emoji_Presentation_Approaches">Other
Approaches for Control of Emoji Presentation</a>
</h3>
<p>
Other approaches for control of emoji presentation are also in use.
For example, in some CSS implementations, if any font in the lookup
list is an emoji font, then emoji presentation is used whenever possible.
</p>
<h2>
5 <a name="Sorting" href="#Sorting">Ordering and Grouping</a>
</h2>
<p>
Neither the Unicode code point order, nor the default
collation provided by the Unicode Collation Algorithm (DUCET), are
currently well suited for emoji, because they
separate conceptually-related characters. From the user's perspective, the
ordering in the following selection of characters sorted by DUCET appears
quite random, as illustrated by the following example:</p>
<p align="center">
<img height='36' alt="↪"
src="images/apple/apple_21aa.png"
title="U+21AA ↪ rightwards arrow with hook"> <img
height='36' alt="⌚" src="images/apple/apple_231a.png"
title="U+231A ⌚ watch"> <img height='36' alt="⌛"
src="images/apple/apple_231b.png" title="U+231B ⌛ hourglass"><img
height='36' alt="⏩" src="images/apple/apple_23e9.png"
title="U+23E9 ⏩ black right-pointing double triangle"> <img
height='36' alt="⏰" src="images/apple/apple_23f0.png"
title="U+23F0 ⏰ alarm clock"> <img height='36'
alt="⏲" src="images/ref/ref_23f2.png" title="U+23F2 ⏲ timer clock">
<img height='36' alt="⏳"
src="images/apple/apple_23f3.png"
title="U+23F3 ⏳ hourglass with flowing sand"> <img
height='36' alt="▶" src="images/apple/apple_25b6.png"
title="U+25B6 ▶ black right-pointing triangle"> <img
height='36' alt="☀" src="images/apple/apple_2600.png"
title="U+2600 ☀ black sun with rays"> <img
height='36' alt="☝" src="images/apple/apple_261d.png"
title="U+261D ☝ white up pointing index"> <img
height='36' alt="☺" src="images/apple/apple_263a.png"
title="U+263A ☺ white smiling face"> <img
height='36' alt="🌞" src="images/apple/apple_1f31e.png"
title="U+1F31E 🌞 sun with face"> <img
height='36' alt="👇" src="images/apple/apple_1f447.png"
title="U+1F447 👇 white down pointing backhand index"> <img
height='36' alt="🕐" src="images/apple/apple_1f550.png"
title="U+1F550 🕐 clock face one oclock"> <img
height='36' alt="😀" src="images/apple/apple_1f600.png"
title="U+1F600 😀 grinning face">
</p>
<p>
<b>Emoji Ordering</b> [<a href="#emoji_charts">emoji-charts</a>] shows an ordering for emoji characters that groups them
together in a more natural fashion. This data has been incorporated
into [<a href="#CLDR">CLDR]</a>.
</p>
<p align="center">
<img height='36' alt="☺"
src="images/apple/apple_263a.png"
title="U+263A ☺ white smiling face"> <img
height='36' alt="😀" src="images/apple/apple_1f600.png"
title="U+1F600 😀 grinning face"> <img
height='36' alt="☝" src="images/apple/apple_261d.png"
title="U+261D ☝ white up pointing index"> <img
height='36' alt="👇" src="images/apple/apple_1f447.png"
title="U+1F447 👇 white down pointing backhand index"><img
height='36' alt="⌛" src="images/apple/apple_231b.png"
title="U+231B ⌛ hourglass"> <img height='36'
alt="⏳" src="images/apple/apple_23f3.png"
title="U+23F3 ⏳ hourglass with flowing sand"> <img
height='36' alt="⌚" src="images/apple/apple_231a.png"
title="U+231A ⌚ watch"> <img height='36' alt="⏰"
src="images/apple/apple_23f0.png" title="U+23F0 ⏰ alarm clock">
<img height='36' alt="⏲" src="images/ref/ref_23f2.png"
title="U+23F2 ⏲ timer clock"> <img height='36'
alt="🕐" src="images/apple/apple_1f550.png"
title="U+1F550 🕐 clock face one oclock"> <img
height='36' alt="☀" src="images/apple/apple_2600.png"
title="U+2600 ☀ black sun with rays"> <img
height='36' alt="🌞" src="images/apple/apple_1f31e.png"
title="U+1F31E 🌞 sun with face"> <img
height='36' alt="▶" src="images/apple/apple_25b6.png"
title="U+25B6 ▶ black right-pointing triangle"> <img
height='36' alt="⏩" src="images/apple/apple_23e9.png"
title="U+23E9 ⏩ black right-pointing double triangle"> <img
height='36' alt="↪" src="images/apple/apple_21aa.png"
title="U+21AA ↪ rightwards arrow with hook">
</p>
<p>
This ordering presents a cleaner and more expected
ordering for sorted lists of characters. The groupings include:
faces, people, body-parts, emotion, clothing, animals, plants, food,
places, transport, and so on. The ordering also groups more naturally
for the purpose of selection in input palettes. However, for sorting,
each character must occur in only one position, which is not a
restriction for input palettes. See <em>Section 6, <a
href="#Input">Input</a></em>.
</p>
<h2>
6 <a name="Input" href="#Input">Input</a>
</h2>
<p>
Emoji are not typically typed on a keyboard. Instead, they are
generally picked from a palette, or recognized via a dictionary. The
mobile keyboards typically have a <img src="images/ref/ref_263a.png"
alt="☺" height='14'> button to select a palette
of emoji, such as in the left image below. Clicking on the <img
src="images/ref/ref_263a.png" alt="☺" height='14'>
button reveals a palette, as in the right image.
</p>
<p class="caption"><a name="Palette_Input" href="#Palette_Input">Palette Input</a></p>
<div align="center">
<table style='border-width: 0px'>
<tr>
<td style='border-width: 0px'><div align="center">
<img alt="palette1" src="images/other/open-emoji-palette.png"
height="220">
</div></td>
<td style='border-width: 0px'> </td>
<td style='border-width: 0px'><div
align="center">
<img alt="palette1" src="images/other/emoji-palette.png"
height="220">
</div></td>
</tr>
</table>
</div>
<p>
The palettes need to be organized in a meaningful way for
users. They typically provide a small number of broad categories,
such as People, Nature, and so on. These categories typically have
100-200 emoji.
</p>
<p>
Many characters can be categorized in multiple ways: an orange
is both a plant and a food. Unlike a sort order, an input palette can
have multiple instances of a single character. It can thus extend the
sort ordering to add characters in any groupings where people might
reasonably be expected to look for them.
</p>
<p>
More advanced palettes will have long-press enabled, so that
people can press-and-hold on an emoji and have a set of related emoji
pop up. This allows for faster navigation, with less scrolling
through the palette.
</p>
<p>
Annotations for emoji characters are much more finely grained
keywords. They can be used for searching characters, and are often
easier than palettes for entering emoji characters. For example, when
someone types “hourglass” on their mobile phone, they could see and
pick from either of the matching emoji characters <img
src="images/apple/apple_23f3.png" alt="⏳" height='14'>
or <img alt="⌛" src="images/apple/apple_231b.png"
height='14'>. That is often much easier than scrolling through
the palette and visually inspecting the screen. Input mechanisms may
also map <em>emoticons</em> to emoji as keyboard shortcuts: typing
:-) can result in <img height='14' alt="😄"
src="images/twitter/twitter_1f604.png">.
</p>
<p>
In some input systems, a word or phrase bracketed by colons is used
to explicitly pick emoji characters. Thus typing in “I saw an <em>:ambulance:</em>”
is converted to “I saw an <img height='14' alt="🚑"
src="images/android/android_1f691.png">”. For completeness,
such systems might support all of the full Unicode names, such as <em>:first
quarter moon with face:</em> for <img height='14' alt="🌛"
src="images/apple/apple_1f31b.png">. Spaces within the phrase
may be represented by _, as in the following:
</p>
<p align="center">
“my <em>:alarm_clock:</em> didn’t work”
</p>
<p align="center">
<font size='36'> → </font>
</p>
<p align="center">
“my <img height='14' alt="⏰"
src="images/android/android_23f0.png"> didn’t work”.
</p>
<p>However, in general the full Unicode names are not especially
suitable for that sort of use; they were designed to be unique
identifiers, and tend to be overly long or confusing.</p>
<p>For emoji that have gender and/or skin tone variants, input
systems should fully specify the intended appearance, rather than relying
on a particular system’s default appearance; see for example
<em>Section 2.3.2, <a href="#marking-gender-in-input">Marking Gender in Emoji
Input</a></em>.</p>
<h2>
7 <a name="Searching" href="#Searching">Searching</a>
</h2>
<p>
Searching includes both searching for emoji characters in queries,
and finding emoji characters in the target. These are most useful
when they include the annotations as synonyms or hints. For example,
when someone searches for <img src="images/twitter/twitter_26fd.png"
alt="⛽" height='14'> on a recommendations site,
they see matches for “gas station”. Conversely, searching for “gas
pump” in a search engine could find pages containing <img
src="images/twitter/twitter_26fd.png" alt="⛽"
height='14'>. Similarly, searching for “gas pump” in an email
program can bring up all the emails containing <img
src="images/twitter/twitter_26fd.png" alt="⛽"
height='14'>.
</p>
<p>
There is no requirement for uniqueness in both palette categories and
annotations: an emoji should show up wherever users would expect it.
A gas pump <img src="images/twitter/twitter_26fd.png" alt="⛽"
height='14'> might show up under “object” and
“travel”; a heart <img src="images/android/android_1f494.png"
alt="💔" height='14'> under “heart” and
“emotion”, a <img src="images/twitter/twitter_1f63b.png" alt="😻"
height='14'> under “animal”, “cat”, and “heart”.
</p>
<p>
Annotations are language-specific: a German user would expect a search for <img
src="images/twitter/twitter_26fd.png" alt="⛽"
height='14'> to result in matches for “Tankstelle”. Thus
annotations need to be in multiple languages to be useful across
languages. They should also include regional annotations within a
given language, like “petrol station” for British English.
An English annotation cannot simply be translated into different
languages, because different words may have different associations in
different languages. The emoji <img height='14' alt="🌵"
src="images/apple/apple_1f335.png" title="U+1F335 🌵 cactus">
may be associated with Mexican or Southwestern restaurants in the US,
but not be associated with them in, say, Greece.
</p>
<p>
As noted in <em>Section 2.1 <a href="#Names">Names</a></em>,
there is one further kind of annotation, called a CLDR
short name. This is also referred to as the <em>TTS name</em>, for
use in text-to-speech processing
such as providing a short, descriptive emoji name when reading text
for accessibility purposes. In this case the CLDR names
provide several advantages over formal Unicode character names:
</p>
<ul>
<li>They can be shorter and less cumbersome than the formal
name, whose requirement for name uniqueness often
results in names that are overly long, such as
<em>BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR</em> for
<img alt="⏯" src="images/windows/windows_23ef.png" height='14'>.</li>
<li>They can apply to emoji that are represented by
sequences as well as those represented by single characters.</li>
<li>They can be updated to better reflect current emoji
depictions and usage.</li>
</ul>
<p>
TTS names are also outside the current scope of this document.
</p>
<h2>
8 <a name="Longer_Term" href="#Longer_Term">Longer Term Solutions</a>
</h2>
<p>
The longer-term goal for implementations should be to support
embedded graphics, in addition to the emoji characters. Embedded
graphics allow arbitrary emoji symbols, and are not dependent on
additional Unicode encoding. Some examples of this are found in Skype
and LINE.
</p>
<p>
However, to be as effective and simple to use as emoji
characters, a full solution requires significant infrastructure
changes to allow simple, reliable input and transport of images
(stickers) in texting, chat, mobile phones, email programs, virtual
and mobile keyboards, and so on. (Even so, such images will never
interchange in environments that only support plain text, such as
email addresses.) Until that time, many implementations will need to
use Unicode emoji instead.</p>
<p>
For example, mobile keyboards need to be enhanced. Enabling embedded
graphics would involve adding an additional custom mechanism for
users to add in their own graphics or purchase additional sets, such
as a <img height='14' alt="➕"
src="images/android/android_2795.png"> sign to add an image to
the palette above. This would prompt the user to paste or otherwise
select a graphic, and add annotations for dictionary selection.
</p>
<p>
With such an enhanced mobile keyboard, the user could then
select those graphics in the same way as selecting the Unicode emoji.
If users started adding many custom graphics, the mobile keyboard
might even be enhanced to allow ordering or organization of those
graphics so that they can be quickly accessed. The extra graphics
would need to be disabled if the target of the mobile keyboard (such
as an email header line) would only accept text.</p>
<p>
Other features required to make embedded graphics work well
include the ability of images to scale with font size, inclusion of
embedded images in more transport protocols, switching services and
applications to use protocols that do permit inclusion of embedded
images (for example, MMS versus SMS for text messages). There will always,
however, be places where embedded graphics cannot be used—such as
email headers, SMS messages, or file names. There are also privacy
aspects to implementations of embedded graphics: if the graphic
itself is not packaged with the text, but instead is just a reference
to an image on a server, then that server could track usage.</p>
<h2>
Annex A: <a name="Emoji_Properties_and_Data_Files" href="#Emoji_Properties_and_Data_Files">Emoji Properties
and Data Files</a>
</h2>
<p>
The following binary character properties are available for
emoji characters.</p>
<p class="caption"><a name="Emoji_Properties" href="#Emoji_Properties">Emoji
Character Properties</a></p>
<div align="center">
<table class="subtle">
<tr>
<th>Property</th>
<th>Abbr</th>
<th>Property Values</th>
</tr>
<tr>
<th>Emoji</th>
<td>Emoji</td>
<td><strong>=Yes</strong> for characters that are emoji</td>
</tr>
<tr>
<th>Emoji_Presentation</th>
<td>EPres</td>
<td><strong>=Yes</strong> for characters that have emoji
presentation by default</td>
</tr>
<tr>
<th>Emoji_Modifier</th>
<td>EMod</td>
<td><strong>=Yes</strong> for characters that are emoji
modifiers</td>
</tr>
<tr>
<th>Emoji_Modifier_Base</th>
<td>EBase</td>
<td><strong>=Yes</strong> for characters that can serve as a
base for emoji modifiers</td>
</tr>
<tr>
<th>Emoji_Component</th>
<td>EComp</td>
<td><strong>=Yes</strong> for characters used in
emoji sequences that normally do not appear on emoji keyboards as
separate choices, such as keycap base characters or Regional_Indicator characters.
All characters in emoji sequences are either <strong>Emoji</strong>
or <strong>Emoji_Component</strong>. Implementations must not,
however, assume that all <strong>Emoji_Component</strong> characters are also
<strong>Emoji</strong>. There are some non-emoji characters that are used in
various emoji sequences, such as tag characters and <strong>ZWJ</strong>.</td>
</tr>
<tr>
<th style='white-space:nowrap'>Extended_Pictographic</th>
<td>ExtPict</td>
<td><strong>=Yes</strong> for characters that are used to future-proof
segmentation. The <strong>Extended_Pictographic</strong> characters contain all the <strong>Emoji</strong> characters
except for some <strong>Emoji_Component</strong> characters.</td>
</tr>
</table>
</div>
<p>If <strong>Emoji=No</strong>, then <strong>Emoji_Presentation=No</strong>,
<strong>Emoji_Modifier=No</strong>, and <strong>Emoji_Modifier_Base=No</strong>.
</p>
<h3>A.1
<a name="Data_Files" href="#Data_Files">Data Files</a>
</h3>
<p>The emoji properties are specified in the emoji data files (see [<a
href="#emoji_data">emoji-data</a>]):</p>
<p class="caption"><a name="Data_Files_Table" href="#Data_Files_Table">Data
Files</a></p>
<div align="center">
<table class="subtle">
<tr>
<th>emoji-data.txt</th>
<td>Property value for the properties listed in the <a href="#Emoji_Properties">Emoji
Character Properties</a> table</td>
</tr>
<tr>
<th style='white-space:nowrap'>emoji-variation-sequences.txt</th>
<td>All
permissible <strong>emoji presentation
sequences</strong> and <strong>text presentation
sequences</strong></td>
</tr>
<tr>
<th>emoji-zwj-sequences.txt</th>
<td>ZWJ sequences used to represent emoji</td>
</tr>
<tr>
<th>emoji-sequences.txt</th>
<td>Other sequences used to represent emoji</td>
</tr>
<tr>
<th>emoji-test.txt</th>
<td>Test file for emoji characters and sequences</td>
</tr>
</table>
</div>
<p>
See [<a href="#emoji_charts">emoji-charts</a>] for a collection of
charts that have been generated from the emoji data files and the related [<a href="#CLDR">CLDR]</a>
emoji data (annotations and ordering). They are purely illustrative; the data to use for
implementation is in [<a href="#emoji_data">emoji-data</a>].</p>
<p>The data file comments and their structure are purely informative,
and may change across releases without notice. For version conventions used in the data files,
see <em>Section 1.5.2, <a href="#Versioning">Versioning</a></em>.</p>
<h2>
Annex B: <a name="Flags" href="#Flags">Valid Emoji Flag Sequences</a>
</h2>
<p>While the syntax of a well-formed <em><strong>emoji flag sequence</strong></em> is defined in <em><strong><a
href="#def_emoji_flag_sequence">ED-14</a></strong></em>,
only valid sequences are displayed as flags by conformant implementations, where:
</p>
<ul>
<li>The valid region sequences correspond to two-letter
<a href="https://www.unicode.org/reports/tr35/#unicode_region_subtag">Unicode
region subtags</a> as defined in [<a href="#CLDR">CLDR</a>], with
idStatus = “regular”, “deprecated”, or “macroregion”. For macroregions,
only <strong>UN</strong> and <strong>EU</strong> are valid.
<ol>
<li>Deprecated regions are included in the list of valid region
sequences so that deprecations in the future do not invalidate previously valid emoji flag sequences. RGI emoji flag sequences with deprecated regions are recommended for support.
Non-RGI emoji flag sequences with deprecated regions should not be
generated.</li>
<li>Macroregion region
sequences generally do not have official flags, with the exception of <strong>UN</strong> and <strong>EU</strong>.</li>
</ol></li>
</ul>
<p> Some region sequences represent countries (as recognized by the United
Nations, for example); others represent territories that are
associated with a country. Such territories may have flags of their own,
or may use the flag of the country with which they are associated. Depictions
of images for flags may be subject to constraints by the administration of
that region.</p>
<p>Caveats:</p>
<ul>
<li>Although a pair of REGIONAL INDICATOR symbols is referred to as an
emoji_flag_sequence, it really represents a specific region, not a
specific flag for that region. The actual flag displayed for the pair may be
different on different platforms, for example for territories which do
not have an official flag. The displayed flag may change over time as
regions change their flags and platforms update their software.</li>
<li>For some territories (especially those without separate official flags),
the displayed flag may be the same as the flag for the country
with which they are associated. For more about cases where characters
have the same appearance, see <em>UTR #36: Unicode Security
Considerations</em> [<a href="#UTR36">UTR36</a>].</li>
</ul>
<p>
For additional information see the sub-section on Regional Indicator Symbols
in <i>Section 22.10, Enclosed and Square</i> of
[<a href="#Unicode">Unicode</a>].
</p>
<h3>B.1
<a name="Flag_Presentation" href="#Flag_Presentation">Presentation</a>
</h3>
<p>
Emoji are generally presented with a square aspect ratio, which
presents a problem for flags. The flag for Qatar
is over 150% wider than tall; for Switzerland
it is square; for Nepal it is over 20% taller
than wide. To avoid a ransom-note effect, implementations may want to
use a fixed ratio across all flags, such as 150%, with a blank band
on the top and bottom. (The average width for flags is between 150%
and 165%.)
Presentation as a waving flag, or clipping to a
circle, can help to present a uniform appearance, masking the aspect
differences.
</p>
<p>Flags should have a visible edge. One option is to use a one-pixel gray
line chosen to be contrasting with the adjacent field color.</p>
<p>Options for presenting an emoji_flag_sequence for which
a system does not have a specific flag or other glyph include:</p>
<ul>
<li>Display each REGIONAL INDICATOR symbol separately as a letter in a
dotted square, as shown in the Unicode charts. This provides
information about the specific region indicated, but may be mystifying
to some users.</li>
<li>For all unsupported REGIONAL INDICATOR pairs, display the same
missing flag glyph, such as the image shown below.
This would indicate that the supported pair was intended to represent
the flag of some region, without indicating which one.
<p align="center"><img alt="" src="images/other/black-flag-unknown.png"
title="unsupported flag" height='36'></p></li>
</ul>
<h3>B.2 <a name="Flag_Ordering" href="#Flag_Ordering">Ordering</a>
</h3>
<p>
The code point order of flags is by region code, which will not be
intuitive for users, because that rarely matches the order of
countries in the user’s language. English speakers are surprised
that the flag for Germany comes before the flag for Djibouti. An
alternative is to present the sorted order according to the localized
country name, using [<a href="#CLDR">CLDR]</a> data.
</p>
<h2>Annex C: <a name='valid-emoji-tag-sequences' href='#valid-emoji-tag-sequences'>Valid Emoji Tag Sequences</a></h2>
<p>While the syntax of a well-formed emoji tag sequence is defined in
<em><strong><a href="#def_emoji_tag_sequence">ED-14a</a></strong></em>, not
all possible tag sequences are valid. The only valid sequences in this version
of Unicode Emoji are defined by sections in this annex, which specify valid
combinations of <<code>tag_base</code>> characters and
<<code>tag_spec</code>> sequences and their expected presentation. Conformant implementations only
display valid sequences as emoji, and display invalid sequences with a special presentation to show that they are invalid, such as in the examples below.</p>
<p>There is one common constraint on valid emoji tag sequences:
<em>the entire emoji_tag_sequence, including tag_base and tag_end, must not be
longer than 32 code points</em>. This provides a practical limit needed by
many rendering systems, and is consistent with the 32-code-point buffer limit
specified for the Stream-Safe Text Format as defined in
Unicode Standard Annex #15, “Unicode Normalization Forms” [<a href="#UAX15">UAX15</a>].</p>
<p>If a platform supports tag sequences, but a particular emoji tag sequence is invalid
or cannot be displayed, then to reduce spoofing risk that emoji tag sequence should be
displayed using a <em>missing emoji glyph</em> if feasible. The following are examples,
where the <code>tag_base</code> character is a <em>black flag</em>.</p>
<table class="subtle">
<tbody>
<tr>
<th colspan="2">Sample images</th>
<th >Condition</th>
</tr>
<tr>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="" src="images/other/black-flag-unknown.png"
title="unsupported flag" height='36'></span></td>
<td><span style="white-space: nowrap; text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><img alt="" src="images/sample/sample-ill-formed-no-base.png"
title="unsupported flag" height='32'></span></td>
<td>The implementation supports tag sequences, but this particular sequence is either not supported or simply invalid. (If the font technology permits, the missing emoji glyph can be overlaid on the <code>tag_base</code> character, thus occupying the same physical dimensions as if the sequence were supported.)</td>
</tr>
<tr>
<td colspan="2"><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"></span></td>
<td>The implementation does not support tag sequences at all. (The tag characters are normally invisible, and thus only the base character displays.)</td>
</tr>
</tbody>
</table>
<p>In examples in this section, underlined ASCII characters represent
the corresponding tag characters, while <u>✦</u> represents the <code>tag_end</code>.</p>
<h3>C.1 <a name='flag-emoji-tag-sequences' href='#flag-emoji-tag-sequences'>Flag
Emoji Tag Sequences</a></h3>
<p>A valid flag emoji tag sequence must satisfy the following constraints:</p>
<ol>
<li>The <code>tag_base</code> and <code>tag_spec</code> are limited to the following:
<table class='simple'>
<tbody>
<tr>
<td><code>tag_base</code></td>
<td>U+1F3F4 BLACK FLAG</td>
</tr>
<tr>
<td><code>tag_spec</code></td>
<td>(U+E0030 TAG DIGIT ZERO .. U+E0039 TAG DIGIT NINE,<br>U+E0061 TAG LATIN SMALL LETTER A .. U+E007A TAG LATIN SMALL LETTER Z)+</td>
</tr>
</tbody>
</table>
<p><code>tag_end</code> is U+E007F CANCEL TAG, as described in <em><strong><a href="#def_emoji_tag_sequence">ED-14a</a></strong></em>.</p>
</li>
<li>Let SD be the result of mapping each character in the <code>tag_spec</code> to a character in [0-9a-z] by subtracting 0xE0000.
<ol>
<li>SD must then be a specification as per [<a href="#CLDR">CLDR</a>] of either a Unicode <a href="https://www.unicode.org/reports/tr35/index.html#unicode_subdivision_id">subdivision_id</a> or a 3-digit <a href="https://www.unicode.org/reports/tr35/index.html#unicode_region_subtag">unicode_region_subtag</a>, and</li>
<li>SD must have CLDR idStatus = “regular”, “deprecated”, or “macroregion”.</li>
</ol>
</li>
</ol>
<p>Notes:</p>
<ol>
<li>Deprecated SD values are included in the list of valid region
sequences so that deprecations in the future do not invalidate previously valid emoji tag sequences. RGI emoji tag sequences with deprecated SD values are recommended for support.
Non-RGI emoji tag sequences with deprecated SD values should not be generated.</li>
<li>There is no hyphen in the <code>tag_spec</code>, unlike ISO subdivisions like “GB-SCT”.</li>
<li>These flag emoji tag sequences are used to request an image for whatever is currently the flag of the specified subregion. Like the emoji flag sequences, they are not intended to provide a mechanism for <em>versioned</em> representations of any particular flag image.</li>
<li>Specific platforms and programs decide which emoji extended flag sequences they will support. There is no requirement that any be supported, and no expectation that more than a small number be commonly supported by vendors.</li>
<li>Note that SD cannot be a two-letter code like “US” or “us”.</li>
</ol>
<h4>C.1.1 <a name="Sample_Valid_Emoji_Tag_Sequences" href="#Sample_Valid_Emoji_Tag_Sequences">Sample Valid Emoji Tag Sequences</a></h4>
<p>A completely tag-unaware implementation will display any sequence of tag characters as invisible, without any effect on adjacent characters. The following sections apply to conformant implementations that support at least one tag sequence. </p>
<p>An implementation may support emoji tag sequences, but not support a particular valid emoji tag sequence.</p>
<p>Images for unsupported valid emoji tag sequences must indicate that the sequence image is missing, by showing the base glyph with either a following “missing emoji glyph” or with an overlay “missing” glyph. The overlay glyph approach is recommended, so that the sequence would have the same width as if supported. A tag-unaware implementation (TU) will show just the base character.</p>
<p class="caption"><a name="DisplayValidEmojiTagSeqs" href="#DisplayValidEmojiTagSeqs">Display
of Valid Emoji Tag Sequences</a></p>
<div align='center'>
<table class="subtle">
<tbody>
<tr>
<th rowspan="2">Sequence</th>
<th colspan="4">Sample Images<br></th>
<th rowspan="2">Comments</th>
<th rowspan="2">RGI sequence?</th>
</tr>
<tr>
<th>Supported</th>
<th colspan="2">Unsupported</th>
<th>TU</th>
</tr>
<tr>
<td><img alt="🏴" width="18" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><u>gbeng✦</u></td>
<td style='text-align: center; vertical-align:middle; height:36'><img src="images/sample/sample_gbeng.png" alt="" width="36" title=""></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="" src="images/other/black-flag-unknown.png"
title="unsupported flag" height='36'></span></td>
<td><span style="white-space: nowrap; text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><img alt="" src="images/sample/sample-ill-formed-no-base.png"
title="unsupported flag" height='32'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"></span></td>
<td>England</td>
<td><p><strong>Yes</strong></p></td>
</tr>
<tr>
<td><img alt="🏴" height="18" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><u>gbsct✦</u></td>
<td style='text-align: center; vertical-align:middle; height:36'><img src="images/sample/sample_gbsct.png" alt="" width="36" title=""></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="" src="images/other/black-flag-unknown.png"
title="unsupported flag" height='36'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><img alt="" src="images/sample/sample-ill-formed-no-base.png"
title="unsupported flag" height='32'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"></span></td>
<td>Scotland</td>
<td><strong>Yes</strong></td>
</tr>
<tr>
<td><img alt="🏴" height="18" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><u>gbwls✦</u></td>
<td style='text-align: center; vertical-align:middle; height:36'><img src="images/sample/sample_gbwls.png" alt="" width="36" title=""></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="" src="images/other/black-flag-unknown.png"
title="unsupported flag" height='36'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><img alt="" src="images/sample/sample-ill-formed-no-base.png"
title="unsupported flag" height='32'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"></span></td>
<td>Wales</td>
<td><strong>Yes</strong></td>
</tr>
<tr>
<td><img alt="🏴" height="20" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><u>usca✦</u></td>
<td style='text-align: center; vertical-align:middle; height:36'><img src="images/sample/sample_usca.png" alt="" width="36" title=""></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="" src="images/other/black-flag-unknown.png"
title="unsupported flag" height='36'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><img alt="" src="images/sample/sample-ill-formed-no-base.png"
title="unsupported flag" height='32'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"></span></td>
<td>California</td>
<td>No</td>
</tr>
<tr>
<td><img alt="🏴" height="18" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><u>caon✦</u></td>
<td style='text-align: center; vertical-align:middle; height:36'><img src="images/sample/sample_caon.png" alt="" width="36" title=""></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="" src="images/other/black-flag-unknown.png"
title="unsupported flag" height='36'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><img alt="" src="images/sample/sample-ill-formed-no-base.png"
title="unsupported flag" height='32'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"></span></td>
<td>Ontario</td>
<td>No</td>
</tr>
<tr>
<td><img alt="🏴" height="18" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><u>chzh✦</u></td>
<td style='text-align: center; vertical-align:middle; height:36'><img src="images/sample/sample_chzh.png" alt="" width="24" title=""></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="" src="images/other/black-flag-unknown.png"
title="unsupported flag" height='36'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><img alt="" src="images/sample/sample-ill-formed-no-base.png"
title="unsupported flag" height='32'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"></span></td>
<td>Canton Zürich</td>
<td>No</td>
</tr>
<tr>
<td><img alt="🏴" height="18" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><u>frnor✦</u></td>
<td style='text-align: center; vertical-align:middle; height:36'><img src="images/other/frnor.png" alt="" width="36" title=""></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="" src="images/other/black-flag-unknown.png"
title="unsupported flag" height='36'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><img alt="" src="images/sample/sample-ill-formed-no-base.png"
title="unsupported flag" height='32'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"></span></td>
<td>Normandy</td>
<td>No</td>
</tr>
</tbody>
</table>
</div>
<br>
<h4>C.1.2 <a name="Sample_Invalid_Emoji_Tag_Sequences" href="#Sample_Invalid_Emoji_Tag_Sequences">Sample Invalid Emoji Tag Sequences</a></h4>
<p>Images for invalid (but well-formed) emoji tag sequences must not be interpreted as if they were regular emoji tag sequences for a different appearance. They must instead indicate that there is something wrong with the sequence. The recommended approach is to also show the base glyph with either a following “missing emoji glyph” or with an overlay “missing” glyph.</p>
<p class="caption"><a name="DisplayInvalidEmojiTagSeqs" href="#DisplayInvalidEmojiTagSeqs">Display
of Invalid Emoji Tag Sequences</a></p>
<div align='center'>
<table class="subtle">
<tbody>
<tr>
<th>Sequence</th>
<th colspan="2">Rec. Images</th>
<th>TU</th>
<th>Comments</th>
</tr>
<tr>
<td style='text-align: center; vertical-align:middle; height:36'><img alt="🏴" height="18" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><u>ushuh✦</u></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="" src="images/other/black-flag-unknown.png"
title="unsupported flag" height='36'></span></td>
<td><span style="white-space: nowrap; text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><img alt="" src="images/sample/sample-ill-formed-no-base.png"
title="unsupported flag" height='32'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"></span></td>
<td><em>Incorrect subregion with “us” region</em></td>
</tr>
<tr>
<td style='text-align: center; vertical-align:middle; height:36'><img alt="🏴" height="18" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><u>uksct✦</u></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="" src="images/other/black-flag-unknown.png"
title="unsupported flag" height='36'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><img alt="" src="images/sample/sample-ill-formed-no-base.png"
title="unsupported flag" height='32'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"></span></td>
<td><em>No “uk” region so incorrect subregion</em></td>
</tr>
<tr>
<td style='text-align: center; vertical-align:middle; height:36'><span style="vertical-align: center"><img
height='18' alt="👨"
src="images/other/man.png"></span><u>usca✦</u></td>
<td style='text-align: center; vertical-align:middle; height:36'><span style="vertical-align: center"><img
height='29' width="29" alt="👨"
src="images/other/man-unknown.png"></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><span style="vertical-align: center"><img
height='29' width="29" alt="👨"
src="images/other/man.png"></span><img alt="" src="images/sample/sample-ill-formed-no-base.png"
title="unsupported flag" height='32'></span></td>
<td><span style="vertical-align: center"><img
height='29' alt="👨"
src="images/other/man.png"></span></td>
<td><em>Base invalid for flag tag emoji sequence</em></td>
</tr>
<tr>
<td style='white-space: nowrap; text-align: center; height:36'><span style="vertical-align: center"><img
height='18' alt="👨"
src="images/other/man.png"></span><u>olvikan✦</u></td>
<td style='text-align: center; height:36'><span style="vertical-align: center"><img
height='29' width="29" alt="👨"
src="images/other/man-unknown.png"></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><span style="vertical-align: center"><img
height='29' width="29" alt="👨"
src="images/other/man.png"></span><img alt="" src="images/sample/sample-ill-formed-no-base.png"
title="unsupported flag" height='32'></span></td>
<td><span style="vertical-align: center"><img
height='29' alt="👨"
src="images/other/man.png"></span></td>
<td><em>Invalid base and tag_spec — not conformant to show as a “demon” or other non-missing image</em></td>
</tr>
</tbody>
</table>
</div>
<br>
<h4>C.1.3 <a name="Sample_Ill_formed_Emoji_Tag_Sequences" href="#Sample_Ill_formed_Emoji_Tag_Sequences">Sample Ill-formed Emoji Tag Sequences</a></h4>
<p>Images for an ill-formed tag sequence should indicate that
there is something wrong with the sequence. The recommended approach is to
show the ill-formed tag sequence as a “missing emoji glyph”.</p>
<p class="caption"><a name="DisplayIllformedEmojiTagSeqs" href="#DisplayIllformedEmojiTagSeqs">Display
of Ill-formed Emoji Tag Sequences</a></p>
<div align='center'>
<table class="subtle">
<tbody>
<tr>
<th>Sequence</th>
<th>Rec. Images</th>
<th>TU</th>
<th>Comments</th>
</tr>
<tr>
<td style='text-align: center; vertical-align:middle; height:36'>A<u>usca✦</u></td>
<td style='text-align: center; vertical-align:middle; height:36'><span style='font-size:24pt'>A</span><img alt="" src="images/sample/sample-ill-formed-no-base.png"
title="unsupported flag" height='32'></td>
<td><span style="font-size:24pt">A</span></td>
<td><em>No emoji base</em></td>
</tr>
<tr>
<td style='text-align: center;'><u>usca✦</u></td>
<td style='text-align: center; vertical-align:middle; height:36'><img alt="" src="images/sample/sample-ill-formed-no-base.png"
title="unsupported flag" height='32'></td>
<td> </td>
<td><em>No base</em></td>
</tr>
<tr>
<td style='text-align: center;'><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" height="18" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><u>usca</u></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"><img alt="" src="images/sample/sample-ill-formed-no-base.png"
title="unsupported flag" height='32'></span></td>
<td><span style="text-align: center; vertical-align:middle; height:36"><img alt="🏴" width="36" src="images/apple/apple_1f3f4.png" title="U+1F3F4 🏴 black flag"></span></td>
<td><em>No terminator</em></td>
</tr>
<tr>
<td style='text-align: center;'><span style="text-align: center; vertical-align:middle; height:36"><u>usca</u></span></td>
<td style='text-align: center; vertical-align:middle; height:36'><img alt="" src="images/sample/sample-ill-formed-no-base.png"
title="unsupported flag" height='32'></td>
<td> </td>
<td><em>No base, no terminator</em></td>
</tr>
</tbody>
</table>
</div>
<h2>
<a name="Acknowledgements" href="#Acknowledgements">Acknowledgments</a>
</h2>
<p>Mark Davis and Peter Edberg created the initial versions of
this document and maintained the text for many versions. Mark Davis and Ned Holbrook now maintain the text.</p>
<p>Thanks to
Shervin Afshar, Julie Allen,
Deborah Anderson,
Rachel Been, Nicole Bleuel,
Charlotte Buff,
Jeremy Burge,
Mathias Bynens, Charles Carson,
Christopher Chapman,
Chenjintao (陈锦涛), Chenshiwei,
Michele Coady, Peter Constable,
David Corbett, Craig Cummings,
Jennifer Daniel,
Kamilé Demir,
Monica Dinculescu,
Behnam Esfahbod, Doug Ewell,
Kara Fong,
Agustin Fonts, Asmus Freytag,
Claudia Galvan, Andrew Glass,
Seb Grubb, Bryan Haggerty,
Casey Henson,
Paul Hunt,
Olli Jones,
Tayfun Karadeniz, Hiroyuki Komatsu,
Mike LaJoie, Jennifer 8. Lee,
Robin Leroy,
Norbert Lindenberg,
Ken Lunde, Gwyneth Marshall,
Rick McGowan, Katsuhiko Momoi,
Lisa Moore,
Sarah Neufeld,
Katsuhiro Ogata,
Christoph Päper,
Katrina Parrott, Michelle Perham,
Addison Phillips, Roozbeh Pournader,
Alexander Robertson,
Judy Safran-Aasen, Markus Scherer,
Alolita Sharma, Jane Solomon,
Sean Stewart,
Michel Suignard,
Richard Tunnicliffe,
Yifán Wáng,
Wilder Wells,
and Ken Whistler
for feedback on and contributions to this document and related data and
charts, including earlier versions.</p>
<p>Thanks to Adobe / Paul Hunt, Apple,
Emojination, EmojiOne, Emojipedia, EmojiXpress,
Michael Everson, Facebook, Google, iDiversicons,
Microsoft, Samsung, and Twitter for supplying images
for illustration in this document,
or earlier versions of this document.</p>
<h2>
<a href="#Rights_to_Emoji_Images" name="Rights_to_Emoji_Images">Rights
to Emoji Images</a>
</h2>
<p>The content for this section, discussing rights and acknowledgments, has been
moved to <a href='https://www.unicode.org/emoji/images.html'>Emoji Images and
Rights</a>.
</p>
<h2>
<a name="References" href="#References">References</a>
</h2>
<table cellspacing="0" cellpadding="4" border="0" class="noborder"
style="border-collapse: collapse">
<!-- nocaption -->
<tbody>
<tr>
<td class="noborder" valign="top">[<a
name="CLDR" href="#CLDR">CLDR</a>]
</td>
<td class="noborder" valign="top">CLDR - Unicode Common Locale
Data Repository<br> <a target="_blank" href="https://cldr.unicode.org">https://cldr.unicode.org/</a>
<em><br> For the latest version of the associated
specification (LDML), see:</em><br> <a
href='https://www.unicode.org/reports/tr35/'>https://www.unicode.org/reports/tr35/</a>
</td>
</tr>
<tr>
<td class="noborder nowrap" valign="top">[<a
name="emoji_charts" href="#emoji_charts">emoji-charts</a>]
</td>
<td class="noborder" valign="top">The illustrative charts of
emoji.<br>
<em>For the 17.0 versions, see:</em><br>
<a href="https://www.unicode.org/emoji/charts-17.0/">https://www.unicode.org/emoji/charts-17.0/</a><br>
<em>For the latest versions, see:</em><br>
<a href="https://www.unicode.org/emoji/charts/index.html">https://www.unicode.org/emoji/charts/</a></td>
</tr>
<tr>
<td class="noborder nowrap" valign="top">[<a
name="emoji_data" href="#emoji_data">emoji-data</a>]
</td>
<td valign="top">The associated data files for emoji characters.<br>
<em>For the 17.0 versions, see:</em><br>
<a href="https://www.unicode.org/Public/17.0.0/ucd/emoji/emoji-data.txt">https://www.unicode.org/Public/17.0.0/ucd/emoji/emoji-data.txt</a><br>
<a href="https://www.unicode.org/Public/17.0.0/ucd/emoji/emoji-variation-sequences.txt">https://www.unicode.org/Public/17.0.0/ucd/emoji/emoji-variation-sequences.txt</a><br>
<a href="https://www.unicode.org/Public/17.0.0/emoji/emoji-sequences.txt">https://www.unicode.org/Public/17.0.0/emoji/emoji-sequences.txt</a><br>
<a href="https://www.unicode.org/Public/17.0.0/emoji/emoji-zwj-sequences.txt">https://www.unicode.org/Public/17.0.0/emoji/emoji-zwj-sequences.txt</a><br>
<a href="https://www.unicode.org/Public/17.0.0/emoji/emoji-test.txt">https://www.unicode.org/Public/17.0.0/emoji/emoji-test.txt</a><br>
<em>For the latest versions, see:</em><br>
<a href="https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-data.txt">https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-data.txt</a><br>
<a href="https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-variation-sequences.txt">https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-variation-sequences.txt</a><br>
<a href="https://www.unicode.org/Public/emoji/latest/emoji-sequences.txt">https://www.unicode.org/Public/emoji/latest/emoji-sequences.txt</a><br>
<a href="https://www.unicode.org/Public/emoji/latest/emoji-zwj-sequences.txt">https://www.unicode.org/Public/emoji/latest/emoji-zwj-sequences.txt</a><br>
<a href="https://www.unicode.org/Public/emoji/latest/emoji-test.txt">https://www.unicode.org/Public/emoji/latest/emoji-test.txt</a>
</td>
</tr>
<tr>
<td class="noborder nowrap" valign="top">[<a
name="JSources" href="#JSources">JSources</a>]
</td>
<td class="noborder" valign="top">The UCD sources for the
JCarrier symbols<br>
<em>For the latest version, see:</em><br>
<a
href='https://www.unicode.org/Public/UCD/latest/ucd/EmojiSources.txt'
target="_blank">https://www.unicode.org/Public/UCD/latest/ucd/EmojiSources.txt</a>
</td>
</tr>
<tr>
<td class="noborder" valign="top">[<a
name="UAX14" href="#UAX14">UAX14</a>]
</td>
<td class="noborder" valign="top">UAX #14: Unicode Line Breaking Algorithm<br>
<a href="https://www.unicode.org/reports/tr14/">https://www.unicode.org/reports/tr14/</a></td>
</tr>
<tr>
<td class="noborder" valign="top">[<a
name="UAX15" href="#UAX15">UAX15</a>]
</td>
<td class="noborder" valign="top">UAX #15: Unicode Normalization Forms<br>
<a href="https://www.unicode.org/reports/tr15/">https://www.unicode.org/reports/tr15/</a></td>
</tr>
<tr>
<td class="noborder" valign="top">[<a
name="UAX29" href="#UAX29">UAX29</a>]
</td>
<td class="noborder" valign="top">UAX #29: Unicode Text Segmentation<br>
<a href="https://www.unicode.org/reports/tr29/">https://www.unicode.org/reports/tr29/</a></td>
</tr>
<tr>
<td class="noborder" valign="top">[<a
name="UAX31" href="#UAX31">UAX31</a>]
</td>
<td class="noborder" valign="top">UAX #31: Unicode Identifiers and Syntax<br>
<a href="https://www.unicode.org/reports/tr31/">https://www.unicode.org/reports/tr31/</a></td>
</tr>
<tr>
<td class="noborder" valign="top">[<a
name="Unicode" href="#Unicode">Unicode</a>]
</td>
<td class="noborder" valign="top">The Unicode Standard<br>
<em>For the latest version, see:</em><br>
<a href="https://www.unicode.org/versions/latest/">https://www.unicode.org/versions/latest/</a></td>
</tr>
<tr>
<td class="noborder" valign="top">[<a
name="UTR36" href="#UTR36">UTR36</a>]
</td>
<td class="noborder" valign="top">UTR #36: Unicode Security Considerations<br>
<a href="https://www.unicode.org/reports/tr36/">
https://www.unicode.org/reports/tr36/</a></td>
</tr>
<tr>
<td class="noborder" valign="top">[<a
name="UTS18" href="#UTS18">UTS18</a>]
</td>
<td class="noborder" valign="top">UTS #18: Unicode Regular Expressions<br>
<a href="https://www.unicode.org/reports/tr18/">
https://www.unicode.org/reports/tr18/</a></td>
</tr>
<tr>
<td class="noborder" valign="top">[<a
name="UTR23" href="#UTR23">UTR23</a>]
</td>
<td class="noborder" valign="top">UTR #23: The Unicode Character Property Model<br>
<a href="https://www.unicode.org/reports/tr23/">
https://www.unicode.org/reports/tr23/</a></td>
</tr>
</tbody>
</table>
<h2>
<a name="Modifications" href="#Modifications">Modifications</a>
</h2>
<p>The following summarizes modifications from the previous
revision of this document.</p>
<p><strong>Revision 29</Strong></p>
<ul>
<li><em>Section 1 <a href="#Introduction">Introduction</a></em>
<ul>
<li>Link directly to referenced L2 documents.</li>
</ul>
</li>
<li><em>Section 1.4.6 <a href="#Emoji_Sets">Emoji Sets</a></em>
<ul>
<li>Added Standalone_Component to <a href="#def_rgi_emoji_qualification">ED-28. RGI_Emoji_Qualification</a>.</li>
</ul>
</li>
<li><em>Section 1.5.2 <a href="#Versioning">Versioning</a></em>
<ul>
<li>Added version 17.0.</li>
</ul>
</li>
<li><em>Section 2.6.1 <a href="#multiperson_gender">Multi-Person Gender</a></em>
<ul>
<li>Consolidated discussion and examples of multi-person groupings.</li>
</ul>
</li>
<li><em>Section 2.6.2 <a href="#multiperson_skintones">Multi-Person Skin Tones</a></em>
<ul>
<li>Updated for version 17.0.</li>
<li>Added examples of newly-RGI sequences to table.</li>
</ul>
</li>
<li><em>Section 2.9 <a href="#color">Color</a></em>
<ul>
<li>Updated for version 17.0.</li>
</ul>
</li>
<li><em>Section 2.10 <a href="#Direction">Emoji Glyph Facing Direction</a></em>
<ul>
<li>Updated for version 17.0.</li>
</ul>
</li>
<li><a href="#References">References</a>
<ul>
<li>Changed file versions and directory structure for version 17.0.</li>
</ul>
</li>
</ul>
<p>Modifications for prior versions can be found in
those prior versions.</p>
<hr width="50%">
<p class="copyright">© 2001–2025 Unicode, Inc.
This publication is protected by copyright, and permission must be obtained from Unicode, Inc. prior to any reproduction, modification, or other use not permitted by the <a href="https://www.unicode.org/copyright.html">Terms of Use</a>. Specifically, you may make copies of this publication and may annotate and translate it solely for personal or internal business purposes and not for public distribution, provided that any such permitted copies and modifications fully reproduce all copyright and other legal notices contained in the original. You may not make copies of or modifications to this publication for public distribution, or incorporate it in whole or in part into any product or publication without the express written permission of Unicode.</p>
<p class="copyright">Use of all Unicode Products, including this publication, is governed by the Unicode <a href="https://www.unicode.org/copyright.html">Terms of Use</a>. The authors, contributors, and publishers have taken care in the preparation of this publication, but make no express or implied representation or warranty of any kind and assume no responsibility or liability for errors or omissions or for consequential or incidental damages that may arise therefrom. This publication is provided “AS-IS” without charge as a convenience to users.</p>
<p class="copyright">Unicode and the Unicode Logo are registered trademarks of Unicode, Inc., in the United States and other countries.</p>
</div>
</body>
</html>
Rendered documentLive HTML preview