A simple library that provides standard Unicode emoji support across all platforms

Related tags

Text emoji twemoji
Overview

Twitter Emoji (Twemoji) Build Status

A simple library that provides standard Unicode emoji support across all platforms.

Twemoji v13.1 adheres to the Unicode 13.0 spec and supports the Emoji 13.1 spec. We do not support custom emoji.

The Twemoji library offers support for 3,521 Unicode-defined emojis.

Usage

CDN Support

The folks over at MaxCDN have graciously provided CDN support.

Use the following in the tag of your HTML document(s):

">
<script src="https://twemoji.maxcdn.com/v/latest/twemoji.min.js" crossorigin="anonymous">script>

This guarantees that you will always use the latest version of the library.

If, instead, you'd like to include the latest version explicitly, you can add the following tag:

">
<script src="https://twemoji.maxcdn.com/v/13.1.0/twemoji.min.js" integrity="sha384-gPMUf7aEYa6qc3MgqTrigJqf4gzeO6v11iPCKv+AP2S4iWRWCoWyiR+Z7rWHM/hU" crossorigin="anonymous">script>

Download

If instead you want to download a specific version, please look at the gh-pages branch, where you will find the built assets for both our latest and older versions.

API

Following are all the methods exposed in the twemoji namespace.

twemoji.parse( ... ) V1

This is the main parsing utility and has 3 overloads per parsing type.

Although there are two kinds of parsing supported by this utility, we recommend you use DOM parsing, explained below. Each type of parsing accepts a callback to generate an image source or an options object with parsing info.

The second kind of parsing is string parsing, explained in the legacy documentation here. This is unrecommended because this method does not sanitize the string or otherwise prevent malicious code from being executed; such sanitization is out of scope.

DOM parsing

If the first argument to twemoji.parse is an HTMLElement, generated image tags will replace emoji that are inside #text nodes only without compromising surrounding nodes or listeners, and completely avoiding the usage of innerHTML.

If security is a major concern, this parsing can be considered the safest option but with a slight performance penalty due to DOM operations that are inevitably costly.

var div = document.createElement('div');
div.textContent = 'I \u2764\uFE0F emoji!';
document.body.appendChild(div);

twemoji.parse(document.body);

var img = div.querySelector('img');

// note the div is preserved
img.parentNode === div; // true

img.src;        // https://twemoji.maxcdn.com/v/latest/72x72/2764.png
img.alt;        // \u2764\uFE0F
img.className;  // emoji
img.draggable;  // false

All other overloads described for string are available in exactly the same way for DOM parsing.

Object as parameter

Here's the list of properties accepted by the optional object that can be passed to the parse function.

  {
    callback: Function,   // default the common replacer
    attributes: Function, // default returns {}
    base: string,         // default MaxCDN
    ext: string,          // default ".png"
    className: string,    // default "emoji"
    size: string|number,  // default "72x72"
    folder: string        // in case it's specified
                          // it replaces .size info, if any
  }

callback

The function to invoke in order to generate image src(s).

By default it is a function like the following one:

function imageSourceGenerator(icon, options) {
  return ''.concat(
    options.base, // by default Twitter Inc. CDN
    options.size, // by default "72x72" string
    '/',
    icon,         // the found emoji as code point
    options.ext   // by default ".png"
  );
}

base

The default url is the same as twemoji.base, so if you modify the former, it will reflect as default for all parsed strings or nodes.

ext

The default image extension is the same as twemoji.ext which is ".png".

If you modify the former, it will reflect as default for all parsed strings or nodes.

className

The default class for each generated image is emoji. It is possible to specify a different one through this property.

size

The default asset size is the same as twemoji.size which is "72x72".

If you modify the former, it will reflect as default for all parsed strings or nodes.

folder

In case you don't want to specify a size for the image. It is possible to choose a folder, as in the case of SVG emoji.

twemoji.parse(genericNode, {
  folder: 'svg',
  ext: '.svg'
});

This will generate urls such https://twemoji.maxcdn.com/svg/2764.svg instead of using a specific size based image.

Utilities

Basic utilities / helpers to convert code points to JavaScript surrogates and vice versa.

twemoji.convert.fromCodePoint()

For a given HEX codepoint, returns UTF-16 surrogate pairs.

twemoji.convert.fromCodePoint('1f1e8');
 // "\ud83c\udde8"

twemoji.convert.toCodePoint()

For given UTF-16 surrogate pairs, returns the equivalent HEX codepoint.

 twemoji.convert.toCodePoint('\ud83c\udde8\ud83c\uddf3');
 // "1f1e8-1f1f3"

 twemoji.convert.toCodePoint('\ud83c\udde8\ud83c\uddf3', '~');
 // "1f1e8~1f1f3"

Tips

Inline Styles

If you'd like to size the emoji according to the surrounding text, you can add the following CSS to your stylesheet:

img.emoji {
   height: 1em;
   width: 1em;
   margin: 0 .05em 0 .1em;
   vertical-align: -0.1em;
}

This will make sure emoji derive their width and height from the font-size of the text they're shown with. It also adds just a little bit of space before and after each emoji, and pulls them upwards a little bit for better optical alignment.

UTF-8 Character Set

To properly support emoji, the document character set must be set to UTF-8. This can be done by including the following meta tag in the document

">
<meta charset="utf-8">

Exclude Characters (V1)

To exclude certain characters from being replaced by twemoji.js, call twemoji.parse() with a callback, returning false for the specific unicode icon. For example:

twemoji.parse(document.body, {
    callback: function(icon, options, variant) {
        switch ( icon ) {
            case 'a9':      // © copyright
            case 'ae':      // ® registered trademark
            case '2122':    // ™ trademark
                return false;
        }
        return ''.concat(options.base, options.size, '/', icon, options.ext);
    }
});

Legacy API (V1)

If you're still using our V1 API, you can read our legacy documentation here.

Contributing

The contributing documentation can be found here.

Attribution Requirements

As an open source project, attribution is critical from a legal, practical and motivational perspective in our opinion. The graphics are licensed under the CC-BY 4.0 which has a pretty good guide on best practices for attribution.

However, we consider the guide a bit onerous and as a project, will accept a mention in a project README or an 'About' section or footer on a website. In mobile applications, a common place would be in the Settings/About section (for example, see the mobile Twitter application Settings->About->Legal section). We would consider a mention in the HTML/JS source sufficient also.

Community Projects

Committers and Contributors

  • Justine De Caires (Twitter)
  • Jason Sofonia (Twitter)
  • Bryan Haggerty (ex-Twitter)
  • Nathan Downs (ex-Twitter)
  • Tom Wuttke (ex-Twitter)
  • Andrea Giammarchi (ex-Twitter)
  • Joen Asmussen (WordPress)
  • Marcus Kazmierczak (WordPress)

The goal of this project is to simply provide emoji for everyone. We definitely welcome improvements and fixes, but we may not merge every pull request suggested by the community due to the simple nature of the project.

The rules for contributing are available in the CONTRIBUTING.md file.

Thank you to all of our contributors.

License

Copyright 2019 Twitter, Inc and other contributors

Code licensed under the MIT License: http://opensource.org/licenses/MIT

Graphics licensed under CC-BY 4.0: https://creativecommons.org/licenses/by/4.0/

Comments
  • Face size is inconsistent across Twemoji faces

    Face size is inconsistent across Twemoji faces

    Hello,

    I just came across a screenshot on the XDA Developers forum, which shows what the Twitter "Twemoji" Emoji set looks like on an Android keyboard, see:

    Image

    Source:

    http://forum.xda-developers.com/showthread.php?p=58610497#post58610497

    It looks quite good.

    But:

    As you can see, the face size is inconsistent across the Twemoji faces, which looks quite buggy.

    Some Twemoji faces are bigger, some are smaller.

    In comparison, here is a screenshot which shows how the "Emoji One" Emoji set looks on an Android keyboard:

    Image

    Source:

    http://forum.xda-developers.com/showthread.php?p=58610497#post58610497

    As you can see, the face size is consistent across the Emoji One faces, which looks much better.

    So, could you please change the Twemoji faces so that they all have the same size?

    Regards

    bug 
    opened by wp9015362 52
  • Appropiate credit in discord bot

    Appropiate credit in discord bot

    Hi, I'm making a Discord bot. What is appropiate place to give credit? In each message that bot sends which will contain such graphic, or can I put that information on the website? - Probably message? How about information in a help command that we have instead of each message?

    How do I properly write that so it's fine? In shortest way possible. I mean "copyright by" etc. Wanna make it correct, legit and short at the same time

    I'm thinking about using them and modyfing some of them.

    opened by ziomek64 27
  • Unicode 8.0 Support

    Unicode 8.0 Support

    With Apple announcing imminent support for Unicode 8.0 emoji, it seems like we'll need support for it sooner than when the Unicode 8.0 spec is due to be finalised.

    Do you folks have any plans for implementing this, or how to tackle the various parts of it? Are there places where the wider community can assist?

    enhancement 
    opened by pento 24
  • Request: :3 smile

    Request: :3 smile

    This is really old and popular one, which users miss in my apps. I fixed it locally, but

    Current Facebook form (worse):

    Former Facebook form (better):

    Usually means something like:

    enhancement invalid 
    opened by dvorapa 22
  • SVG sprite

    SVG sprite

    I have read the previous discussions where you guys discouraged SVG sprites because of the maintainability, but I have another method in mind. Would you like to review a PR which adds a script that you can run to create svg of all the emojis?

    question 
    opened by steelbrain 22
  • minify SVG

    minify SVG

    Used Leanify, removed about 20% from taking out comments, whitespace, etc. Even after gzip there is savings. Not sure if using Inkscape's internal minification or some npm script is better or worse, but installing & drag/drop folder on the Leanify.exe was faster than installing & running anything else. Original files had no trailing newline, so I also left it out. before: 2.65 MB after: 2.14 MB

    Suggestion before release: Add a version number inside the SVG (comment). Not sure if the version should reflect the project version, image version, or both.

    opened by tomByrer 20
  • 209 New Emoji Flags

    209 New Emoji Flags

    209 new flags are added to Unicode as a new emoji. And Android Lollipop supports them. Why don't you support them?

    For reference: http://blog.emojipedia.org/209-new-emoji-flags-available-today

    enhancement 
    opened by shield-9 19
  • Pistol emoji wrong in 2.6

    Pistol emoji wrong in 2.6

    U+1F52B PISTOL 🔫 is not intended as a toy (water pistol / squirt gun, ray gun / phaser).

    In mid-2016, Apple deliberately adopted a glyph that resulted in semantic mayhem in cross platform communication and rendering of legacy texts. In 2017, WhatsApp in their initial release of a custom emoji set kept compatible with Apple’s design, because in their almost closed ecosystem, effectively only Apple and WhatsApp emoji glyphs can ever occur. After having been criticized for several years for having too idiosyncratic emoji designs, in early 2018, Samsung overshot the correction by also changing the pistol emoji glyph. (Few users are affected by this change yet.) Now Twitter is changing, while Microsoft, Google and Emojione are not (yet) diverging from the Unicode semantics and reference glyph.

    There was good reason for Microsoft to adopt a picture of a realistic firearm in 2016. There was no good reason for Apple to make a change in the opposite direction in a new released in the very same week. There was good reason for WhatsApp to stay compatible with Apple. There is no sufficient reason for Samsung and Twitter to follow suit.

    If you want a toy gun emoji, propose one to be encoded, either on a separate code point or as a ZWJ sequence like 🔫‍💦 or 🔫‍💧. If you have any other reason to change the glyph, please explain it well, which Apple never did as far as I know, and be prepared to change it back.

    opened by Crissov 18
  • The parts on the moon Twemojis which are being lit by the sun should be yellow, not gray

    The parts on the moon Twemojis which are being lit by the sun should be yellow, not gray

    Hello,

    there are several moon Twemojs which are (in parts) being lit by the sun, namely:

    "Waxing crescent moon symbol" Twemoji:

    Image

    "First quarter moon symbol" Twemoji:

    Image

    "Waxing gibbous moon symbol" Twemoji:

    Image

    "Full moon symbol" Twemoji:

    Image

    "Waning gibbous moon symbol" Twemoji:

    Image

    "Last quarter moon symbol" Twemoji:

    Image

    "Waning crescent moon symbol" Twemoji:

    Image

    "Crescent moon" Twemoji:

    Image

    "First quarter moon with face" Twemoji:

    Image

    "Last quarter moon with face" Twemoji:

    Image

    "Full moon with face" Twemoji:

    Image

    IMHO the parts which are being lit by the sun should be yellow, not gray.

    The Twitter "Twemoji" Emoji set pretty much seems to be the only Emoji set which has those parts in gray. Pretty much all the other Emoji sets are using yellow for these parts, see the following comparison chart for example:

    http://emoji.codes/family?c=nature

    So it would be nice if the Twitter "Twemoji" Emoji set could adapt this as well for better interoperability and because it would look more natural IMHO.

    And the craters on the moon could possibly be a little bit darker for better visibility/better contrast.

    Regards

    opened by wp9015362 18
  • Don't replace text nodes if there's nothing to replace

    Don't replace text nodes if there's nothing to replace

    If the callback returns false, no text nodes should be replaced. This is particularly a problem if you parse with a MutationObserver. The change is detected, and twemoji parses again, creating an infinite loop.

    bug 
    opened by ellatrix 17
  • Add transgender pride flag emoji

    Add transgender pride flag emoji

    The latest version of WhatsApp includes the transgender pride flag as emoji ZWJ sequence. It consists of U+1F3F3 (WAVING WHITE FLAG), U+FE0F (VARIATION SELECTOR-16), U+200D (ZERO WIDTH JOINER), U+26A7 (MALE WITH STROKE AND MALE AND FEMALE SIGN).

    On WhatsApp it looks like this:

    Several people on Twitter already started using it since 2017, so it would be great if Twemoji could add official support as well. Transgender activists are already requesting for this emoji for a long time, it was one of the most-requested emoji of 2018 and of 2017.

    Several news articles have already been published about this new emoji in WhatsApp:

    opened by RobinvanderVliet 16
  • Correct number of stripes on Malaysia flag

    Correct number of stripes on Malaysia flag

    Is your feature request related to a problem? Please describe. Malaysia flag 🇲🇾 in real life has 14 stripes. Different platform either have correct 14 stripes (Apple, Google, etc), or have an over-simplified version (OpenMoji, JoyPixels). Twemoji has a somewhat realistic flag, but ends up only have 13 stripes, which is a little big confusing.

    Describe the solution you'd like Redesign the 🇲🇾 emoji to either have 14 stripes as in real life, or to a simplified version where there was no confusion that this is supposed to be realistic.

    opened by mtfront 0
  • changes from recent Twitter personal data export

    changes from recent Twitter personal data export

    Changed images from my recent personal Twitter data export. It seems to be mostly changes in color, brightness, size (e.g., flag aspect ratios), and apparently the gender of some people emoji. I'm not sure which is newer, the ones from Twitter's twemoji repo or the ones in my export.

    opened by sloanlance 4
  • Bump qs from 6.5.2 to 6.5.3

    Bump qs from 6.5.2 to 6.5.3

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • A red cross should not be used

    A red cross should not be used

    A red cross is used in the hospital (U+1F3E5) and ambulance (U+1F691) emojis. The Geneva Convention and Japanese law limit the use of the Red Cross to the Red Cross Society in principle.

    Therefore, I propose that it should be changed to a blue asterisk instead.

    *Supplement: I made a mistake. The blue asterisk is the symbol used for ambulances. Google and Apple appear to be addressing this issue by hollowing out the center.

    I believe that a white background with horizontal and vertical lines is considered a red cross, and that changing the color of the cross or hollowing it out would work around the problem without destroying the impression.

    opened by maekawa-mugi 1
  • [Enhancement] Catalan flag 🏴󠁥󠁳󠁣󠁴󠁿

    [Enhancement] Catalan flag 🏴󠁥󠁳󠁣󠁴󠁿

    Is your feature request related to a problem? Please describe.

    While not encouraged, it's become common to have flags represent languages. Catalan being one of the most widespreadly spoken minority language in Europe (9M L1+L2, similar to Czech), meaning it's supported in a lot of applications. Though, it doesn't have an emoji flag to represent it, which presents some annoying workarounds each time it needs to be added.

    Describe the solution you'd like

    I'm requesting the Catalan flag to be added, similar to how Wales, and Scotland were. There was an old thread about this before Wales was added with someones attempt, but I don't know how to reopen it.

    https://github.com/twitter/twemoji/issues/282

    Describe alternatives you've considered Creating and using a modified svg of the Catalan flag, however doing that often just for Catalan is annoying. OpenMoji does support it, but Twemoji is more widely used and recognizable.

    opened by Alzavio 2
  • feat: add black bird

    feat: add black bird

    U+1F426-U+200D-U+2B1B (🐦‍⬛) is a ZWJ sequence that results in a black bird, added in Emoji 15.0. This is part of a sequence of PRs to eventually add full parity with Emoji 15.0.

    Proposal: https://www.unicode.org/cgi-bin/GetDocumentLink?L2/19-307

    opened by ElijahPepe 1
Releases(v14.0.2)
  • v14.0.2(Mar 31, 2022)

    More TypeScript type definition fixes (#541). Oh, TypeScript. Thanks @Saul-Mirone!

    Full Changelog: https://github.com/twitter/twemoji/compare/v14.0.1...v14.0.2

    Source code(tar.gz)
    Source code(zip)
  • v14.0.1(Mar 31, 2022)

    Assorted TypeScript type definition fixes (#532, fixed by #533). Thanks @hthetiot!

    Full Changelog: https://github.com/twitter/twemoji/compare/v14.0.0...v14.0.1

    Source code(tar.gz)
    Source code(zip)
  • v14.0.0(Mar 31, 2022)

    This release adds support for the new emoji included in Emoji 14.0 (list here), fixing #515. A few security fixes are also included (#529, #510).

    New and updated emoji in this release: Face with cold sweat Face with look of triumph Disappointed but relieved face Sleepy face Face with crossed-out eyes Playground slide Wheel Ring buoy Heavy equals sign Smiling face with open hands Handshake Handshake light skin tone Handshake medium-light skin tone Handshake medium skin tone Handshake medium-dark skin tone Handshake dark skin tone Drooling face Face holding back tears Troll X-ray Crutch Mirror ball Identification card Low battery Hamsa Lotus Coral Empty nest Nest with eggs Pregnant man Pregnant man light skin tone Pregnant man medium-light skin tone Pregnant man medium skin tone Pregnant man medium-dark skin tone Pregnant man dark skin tone Pregnant person Pregnant person light skin tone Pregnant person medium-light skin tone Pregnant person medium skin tone Pregnant person medium-dark skin tone Pregnant person dark skin tone Person with crown Person with crown light skin tone Person with crown medium-light skin tone Person with crown medium skin tone Person with crown medium-dark skin tone Person with crown dark skin tone Pouring liquid Beans Jar Melting face Saluting face Face with open eyes and hand over mouth Face with peeking eye Dotted line face Face with diagonal mouth Biting lip Bubbles Hand with index finger and thumb crossed Hand with index finger and thumb crossed light skin tone Hand with index finger and thumb crossed medium-light skin tone Hand with index finger and thumb crossed medium skin tone Hand with index finger and thumb crossed medium-dark skin tone Hand with index finger and thumb crossed dark skin tone Rightwards hand Rightwards hand light skin tone Rightwards hand medium-light skin tone Rightwards hand medium skin tone Rightwards hand medium-dark skin tone Rightwards hand dark skin tone Handshake light skin tone, medium-light skin tone Handshake light skin tone, medium skin tone Handshake light skin tone, medium-dark skin tone Handshake light skin tone, dark skin tone Handshake medium-light skin tone, light skin tone Handshake medium-light skin tone, medium skin tone Handshake medium-light skin tone, medium-dark skin tone Handshake medium-light skin tone, dark skin tone Handshake medium skin tone, light skin tone Handshake medium skin tone, medium-light skin tone Handshake medium skin tone, medium-dark skin tone Handshake medium skin tone, dark skin tone Handshake medium-dark skin tone, light skin tone Handshake medium-dark skin tone, medium-light skin tone Handshake medium-dark skin tone, medium skin tone Handshake medium-dark skin tone, dark skin tone Handshake dark skin tone, light skin tone Handshake dark skin tone, medium-light skin tone Handshake dark skin tone, medium skin tone Handshake dark skin tone, medium-dark skin tone Leftwards hand Leftwards hand light skin tone Leftwards hand medium-light skin tone Leftwards hand medium skin tone Leftwards hand medium-dark skin tone Leftwards hand dark skin tone Palm down hand Palm down hand light skin tone Palm down hand medium-light skin tone Palm down hand medium skin tone Palm down hand medium-dark skin tone Palm down hand dark skin tone Palm up hand Palm up hand light skin tone Palm up hand medium-light skin tone Palm up hand medium skin tone Palm up hand medium-dark skin tone Palm up hand dark skin tone Index pointing at the viewer Index pointing at the viewer light skin tone Index pointing at the viewer medium-light skin tone Index pointing at the viewer medium skin tone Index pointing at the viewer medium-dark skin tone Index pointing at the viewer dark skin tone Heart hands Heart hands light skin tone Heart hands medium-light skin tone Heart hands medium skin tone Heart hands medium-dark skin tone Heart hands dark skin tone

    Full Changelog: https://github.com/twitter/twemoji/compare/v13.1.1...v14.0.0

    Source code(tar.gz)
    Source code(zip)
  • v13.1.1(Mar 11, 2022)

    This release fixes #477 and #490 and incorporates PR #520. The following emoji are revised: Flag of India Flag of Belgium Rainbow flag Battery Handshake

    This release also adds index.d.ts to the npm package distribution (#491). Thanks @goooseman!

    Full Changelog: https://github.com/twitter/twemoji/compare/v13.1.0...v13.1.1

    Source code(tar.gz)
    Source code(zip)
  • v13.1.0(May 28, 2021)

  • v13.0.2(Mar 12, 2021)

  • v13.0.1(Jul 17, 2020)

  • v13.0.0(May 9, 2020)

  • v12.1.6(Apr 28, 2020)

  • v12.1.5(Jan 28, 2020)

  • v12.1.4(Nov 14, 2019)

  • v12.1.3(Sep 18, 2019)

  • v12.1.2(Aug 7, 2019)

  • v12.1.1(Aug 7, 2019)

  • v12.1.0(Aug 7, 2019)

    • Added emoji rendering for
      • Trans flag: 🏳️‍⚧️ U+1f3f3 U+fe0f U+200d U+26a7 U+fe0f
      • Trans symbol: ⚧️ U+26a7 U+fe0f
    • Reworked this project's build/deploy process
      • Switched active development back to the master branch
      • Deployed versions go go the gh-pages branch
    Source code(tar.gz)
    Source code(zip)
  • v12.0.4(May 30, 2019)

    • Reverted adding SRI hashes to our recommended script tags
      • Based on our current MaxCDN asset caching, this would cause websites that don't immediately update their script tag to break anytime we release a new version. We need to be able to link to properly versioned, long-lived assets to be able to specify their hash.
    Source code(tar.gz)
    Source code(zip)
  • v12.0.3(May 29, 2019)

  • v12.0.2(May 29, 2019)

  • v12.0.1(Apr 15, 2019)

  • v12.0.0(Apr 4, 2019)

    Adds support for the new emojis included in Unicode 12.0/Emoji 12.0.

    Additions to Twemoji with this release include:

    • Yawning Face
    • Brown Heart
    • White Heart
    • Pinching Hand
    • Mechanical Arm
    • Mechanical Leg
    • Ear With Hearing Aid
    • Deaf Person
    • Deaf Man
    • Deaf Woman
    • Person Standing
    • Man Standing
    • Woman Standing
    • Person Kneeling
    • Man Kneeling
    • Woman Kneeling
    • Man With Probing Cane
    • Woman With Probing Cane
    • Man in Motorized Wheelchair
    • Woman in Motorized Wheelchair
    • Man in Manual Wheelchair
    • Woman in Manual Wheelchair
    • People Holding Hands (skin tone combinations)
    • Women Holding Hands (skin tone combinations)
    • Woman and Man Holding Hands (skin tone combinations)
    • Men Holding Hands (skin tone combinations)
    • Orangutan
    • Guide Dog
    • Service Dog
    • Sloth
    • Otter
    • Skunk
    • Flamingo
    • Garlic
    • Onion
    • Waffle
    • Falafel
    • Butter
    • Oyster
    • Beverage Box
    • Maté
    • Ice Cube
    • Hindu Temple
    • Manual Wheelchair
    • Motorized Wheelchair
    • Auto Rickshaw
    • Parachute
    • Ringed Planet
    • Diving Mask
    • Yo-Yo
    • Kite
    • Safety Vest
    • Sari
    • One-Piece Swimsuit
    • Briefs
    • Shorts
    • Ballet Shoes
    • Banjo
    • Diya Lamp
    • Axe
    • Probing Cane
    • Drop of Blood
    • Adhesive Bandage
    • Stethoscope
    • Chair
    • Razor
    • Orange Circle
    • Yellow Circle
    • Green Circle
    • Purple Circle
    • Brown Circle
    • Red Square
    • Orange Square
    • Yellow Square
    • Green Square
    • Blue Square
    • Purple Square
    • Brown Square

    Plus an additional tweak to the guitar to make it actually a guitar and not a bass guitar.

    Source code(tar.gz)
    Source code(zip)
  • v11.4.0(Mar 29, 2019)

    Updates the following emojis: Guitar, Violin, and Smiling Cat Face With Heart-Eyes.

    This will be the last release in the 11.x series as we prep for Twemoji 12.0.

    Source code(tar.gz)
    Source code(zip)
  • v11.3.0(Jan 29, 2019)

    Updates a variety of emoji designs, most notably emojis featuring people in activities. Additional detail has been added to give elements such as hands and feet more definition. Cat and cat faces, as well as other animals have been updated. The full list of updated emojis included:

    • Grinning Cat Face
    • Grinning Cat Face With Smiling Eyes
    • Cat Face With Tears of Joy
    • Smiling Cat Face With Heart-Eyes
    • Cat Face With Wry Smile
    • Kissing Cat Face
    • Weary Cat Face
    • Crying Cat Face
    • Pouting Cat Face
    • Waving Hand
    • OK Hand
    • Victory Hand
    • Crossed Fingers
    • Sign of the Horns
    • Index Pointing Up
    • Raised Fist
    • Man in Tuxedo
    • Merperson
    • Merman
    • Mermaid
    • Person Walking
    • Man Walking
    • Woman Walking
    • Person Running
    • Man Running
    • Woman Running
    • Woman Dancing
    • Man Dancing
    • Man in Suit Levitating
    • People With Bunny Ears
    • Men With Bunny Ears
    • Women With Bunny Ears
    • Person in Steamy Room
    • Man in Steamy Room
    • Woman in Steamy Room
    • Skier
    • Snowboarder
    • Person Surfing
    • Man Surfing
    • Woman Surfing
    • Person Rowing Boat
    • Man Rowing Boat
    • Woman Rowing Boat
    • Person Bouncing Ball
    • Man Bouncing Ball
    • Woman Bouncing Ball
    • Person Lifting Weights
    • Man Lifting Weights
    • Woman Lifting Weights
    • Person Cartwheeling
    • Man Cartwheeling
    • Woman Cartwheeling
    • Person Playing Handball
    • Man Playing Handball
    • Woman Playing Handball
    • Person in Lotus Position
    • Man in Lotus Position
    • Woman in Lotus Position
    • Two Women Holding Hands
    • Man and Woman Holding Hands
    • Two Men Holding Hands
    • Dog Face
    • Dog
    • Wolf Face
    • Cat Face
    • Cat
    • Unicorn Face
    • Giraffe
    • Reminder Ribbon
    • Military Medal
    • Sports Medal
    • 1st Place Medal
    • 2nd Place Medal
    • 3rd Place Medal
    • Control Knobs
    • Flag: Croatia
    • Woman in Tuxedo
    Source code(tar.gz)
    Source code(zip)
  • v11.2.0(Sep 26, 2018)

  • v11.1.0(Aug 10, 2018)

    This update includes adjustments to the following emoji artwork:

    • Flag of China
    • Foggy
    • Waxing crescent moon symbol
    • First quarter moon symbol
    • Waxing gibbous moon symbol
    • Full moon symbol
    • Waning gibbous moon symbol
    • Last quarter moon symbol
    • Waning crescent moon symbol
    • Crescent moon
    • First quarter moon with face
    • Last quarter moon with face
    • Full moon with face
    • Fog
    • Moon viewing ceremony
    • Dolphin
    • Cat face
    • Spouting whale
    • Bust in silhouette
    • Busts in silhouette
    • Couple with heart (man, man)
    • Kiss (man, man)
    • Couple with heart
    • Couple with heart (woman, woman)
    • Kiss
    • Kiss (woman, woman)
    • Kiss mark
    • Love letter
    • Wedding
    • Beating heart
    • Broken heart
    • Two hearts
    • Sparkling heart
    • Growing heart
    • Heart with arrow
    • Heart with ribbon
    • Revolving hearts
    • Heart decoration
    • Raised hand with fingers splayed
    • Speaking head in silhouette
    • Smiling face with heart-shaped eyes
    • Face throwing a kiss
    • Disappointed face
    • Smiling cat face with heart-shaped eyes
    • Woman gesturing not ok
    • Man gesturing not ok
    • Robot face
    • Raised back of hand
    • Prince
    • Smiling face with 3 hearts
    • Raccoon
    • Lobster
    • Petri dish
    • Heart suit
    • Diamond suit
    • Raised hand
    • Heavy heart exclamation mark ornament
    • Heavy red heart
    Source code(tar.gz)
    Source code(zip)
Owner
Twitter
Twitter 💙 #opensource
Twitter
Croc is a swift emoji string parsing library

Croc is a library for parsing emojis on iOS. It provides a simple and lightweight interface for detecting, generating, categorizing and managing emoji characters, making emoji-powered features an easy task for developers.

Joe Kalash 127 Nov 20, 2022
Swift emoji string parsing library

Croc is a library for parsing emojis on iOS. It provides a simple and lightweight interface for detecting, generating, categorizing and managing emoji

Joe Kalash 125 Sep 27, 2021
OysterKit is a framework that provides a native Swift scanning, lexical analysis, and parsing capabilities. In addition it provides a language that can be used to rapidly define the rules used by OysterKit called STLR

OysterKit A Swift Framework for Tokenizing, Parsing, and Interpreting Languages OysterKit enables native Swift scanning, lexical analysis, and parsing

Swift Studies 178 Sep 16, 2022
A searchable emoji dropdown view.

NBEmojiSearchView Integrate a searchable emoji dropdown into your iOS app in just a few lines. To start searching, the user just types a :. Then, the

Neeraj Baid 85 Dec 23, 2022
Effortless emoji-querying in Swift

EmojiKit EmojiKit is a simple emoji-querying framework in Swift. It is used in Paste, an Emoji Search app in the App Store. Installation If you’re usi

Dasmer Singh 93 Nov 12, 2022
Emoji in Swift

Smile ❤️ Support my apps ❤️ Push Hero - pure Swift native macOS application to test push notifications PastePal - Pasteboard, note and shortcut manage

Khoa 478 Dec 30, 2022
A Swift framework for using custom emoji in strings.

Emojica – a Swift framework for using custom emoji in strings. What does it do? Emojica allows you to replace the standard emoji in your iOS apps with

Dan 101 Nov 7, 2022
The world's largest independent emoji font.

The world's largest independent emoji font.

JoyPixels Inc. 337 Dec 24, 2022
A TextView that provides easy to use tagging feature for Mention or Hashtag

Tagging A TextView that provides easy to use tagging feature for Mention or Hashtag. Introduction Tagging is a UIView that encloses a TextView that co

DongHee Kang 110 Jan 3, 2023
A standalone, flexible API that provides a full-featured rich text editor for iOS applications.

Twitter Text Editor A standalone, flexible API that provides a full featured rich text editor for iOS applications. This provides a robust text attrib

Twitter 2.8k Dec 29, 2022
AttributedText is a Swift µpackage that provides NSAttributedString rendering in SwiftUI by wrapping either an NSTextView or a UITextView depending on the platform.

AttributedText AttributedText is a Swift µpackage that provides NSAttributedString rendering in SwiftUI by wrapping either an NSTextView or a UITextVi

null 1 Jul 18, 2022
Easiest way to create an attributed UITextView (with support for multiple links and from html)

AttributedTextView Easiest way to create an attributed UITextView (with support for multiple links and html). See the demo app and the playground for

Edwin Vermeer 430 Nov 24, 2022
`resultBuilder` support for `swift-markdown`

SwiftMarkdownBuilder resultBuilder support for swift-markdown. The default way to build Markdown in swift-markdown is to use varargs initializers, e.g

DocZ 9 May 31, 2022
A validator for postal codes with support for 200+ regions

PostalCodeValidator A validator for postal codes with support for 200+ regions. import Foundation import PostalCodeValidator if let validator = Posta

FormatterKit 211 Jun 17, 2022
A simple library for building attributed strings, for a more civilized age.

Veneer A simple library for building attributed strings, for a more civilized age. Veneer was created to make creating attributed strings easier to re

Wess Cope 26 Dec 27, 2022
A simple and customizable Markdown Parser for Swift

MarkdownKit MarkdownKit is a customizable and extensible Markdown parser for iOS and macOS. It supports many of the standard Markdown elements through

Bruno Oliveira 687 Dec 18, 2022
RichEditorView is a simple, modular, drop-in UIView subclass for Rich Text Editing.

RichEditorView RichEditorView is a simple, modular, drop-in UIView subclass for Rich Text Editing. Written in Swift 4 Supports iOS 8+ through Cocoapod

Caesar Wirth 1.8k Dec 24, 2022
Heimdall is a wrapper around the Security framework for simple encryption/decryption operations.

Heimdall In Norse mythology, Heimdall is the gatekeeper of Bifröst, the rainbow road connecting Midgard, realm of the humans, to Asgard, the realm of

Henri Normak 393 Nov 23, 2022
Swift String Validator. Simple lib for ios to validate string and UITextFields text for some criterias

Swift String validator About Library for easy and fastest string validation based on сciterias. Instalation KKStringValidator is available through Coc

Kostya 17 Dec 21, 2019