Git Product home page Git Product logo

twemoji's Introduction

Twitter Emoji (Twemoji)

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

Twemoji v15.0 adheres to the Unicode 15.0 spec and supports the Emoji 15.0 spec. We do not support custom emoji.

The Twemoji library offers support for all Unicode-defined emoji which are recommended for general interchange (RGI).

Usage

CDN Support

Default CDN support is provided via jsDelivr.

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

<script src="https://cdn.jsdelivr.net/npm/@twemoji/api@latest/dist/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://cdn.jsdelivr.net/npm/@twemoji/[email protected]/dist/twemoji.min.js" integrity="sha384-D6GSzpW7fMH86ilu73eB95ipkfeXcMPoOGVst/L04yqSSe+RTUY0jXcuEIZk0wrT" 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://cdn.jsdelivr.net/gh/jdecked/twemoji@latest/assets/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 jsDelivr
    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 jsDelivr
    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://cdn.jsdelivr.net/gh/jdecked/twemoji@latest/assets/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 <head>

<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 (ex-Twitter)
  • Jason Sofonia (ex-Twitter)
  • Bryan Haggerty (ex-Twitter)
  • Nathan Downs (ex-Twitter)
  • Tom Wuttke (ex-Twitter)
  • Andrea Giammarchi (ex-Twitter)
  • Joen Asmussen (WordPress)
  • Marcus Kazmierczak (WordPress)
  • Kevin VQ Dam (ex-Discord)
  • Gica Tam (Discord)

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

See the LICENSE and LICENSE-GRAPHICS files for full license texts.

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/

twemoji's People

Contributors

abhik1998 avatar alanbato avatar alexeymolchan avatar bhaggs avatar birarda avatar caniszczyk avatar crissov avatar dependabot[bot] avatar goooseman avatar hthetiot avatar jasmussen avatar jdecked avatar juanitofatas avatar martinstuecklschwaiger avatar miestasmia avatar mrcull avatar msurguy avatar nbartels avatar nerixyz avatar nilllisterri avatar noelleleigh avatar pavlobu avatar prayagverma avatar prdolmos avatar rudloff avatar s-raghav avatar saul-mirone avatar thii avatar webreflection avatar yhatt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

twemoji's Issues

U+1F62B Tired Face has gray teeth

For whatever reason, U+1F62B has gray teeth instead of the usual white teeth in almost every smiley that exists as of today.
Here is a comparison of the used version and the edited version
1f62b
1f62b

What's going on with TS types

Hello,

I noticed @twemoji/api types seems to only export under twemoji module which is obviously not found as the package is @twemoji/api. Am I missing something?

15.0.3 Images are not available via CDN

Hello,

thank you for maintaining this package!

I'm using this script
https://cdn.jsdelivr.net/npm/@twemoji/api@latest/dist/twemoji.min.js

which referes at the top internally to this url
base:"https://cdn.jsdelivr.net/gh/jdecked/[email protected]/assets/"

Unfortunately at this URL are no images. Example:
https://cdn.jsdelivr.net/gh/jdecked/[email protected]/assets/svg/2764.svg

If I change the URL to use 15.0.2
https://cdn.jsdelivr.net/gh/jdecked/[email protected]/assets/svg/2764.svg
the image is there.

Source files for SVGs?

Are the SVGs in this repo the only (accessible) versions which exist, or are there source files somewhere which are easier to edit?

(also worried about the quality gradually degrading over time, if the svgs are being repeatedly imported/edited/exported by an image editor)

Color Palette

I've spent a while looking through all of the twemoji designs. Most of them use colors from this palette whenever possible (i.e. other colors were used sometimes, but only if there was a good reason),
but recently it seems like this has been forgotten?

Anyway, most of this was extracted from metadata in very old files (e.g. try opening https://github.com/jdecked/twemoji/blob/v1.0.0/assets/1f361.ai in a text editor and scrolling down to <xmpG:groupName>Twitter blues</xmpG:groupName>), as well as checking the most commonly used colors.

Note: most of these colors also have a corrupted variant. e.g. #99AAB5 (646 occurrences), and #9AAAB4 (107). (it seems like the entire palette got messed up at some point, and no one noticed)

Colors

RedYellowGreenBluePurple
Faded#F4ABBA#FFE8B6#C6E5B3#BBDDF5#CBB7EA
Light#EA596E#FFD983#A6D388#88C9F9#AA8DD8
Normal#DD2E44#FFCC4D#77B255#55ACEE#9266CC
Deep#BE1931#FFAC33#5C913B#3B88C3#744EAA
Dark#A0041E#F4900C#3E721D#226699#553788

Browns

#662113
#8A4B38
#C1694F
#D99E82
#E6AAAA

Grays

White#FFFFFF
Faint Gray#F5F8FA
Border Gray#E1E8ED
Gray#CCD6DD
#AAB8C2
#99AAB5
Medium Gray#8899A6
Dark Gray#66757F
#31373D
Charcoal#292F33
Black#000000

1f426-200d-2b1b “Crow” should have a black or gray beak

The sequence U+1F426 U+200D U+2B1B 🐦‍⬛ commonly refered to as the crow or raven emoji is displayed with a generic yellow beak: https://github.com/jdecked/twemoji/blob/main/assets/svg/1f426-200d-2b1b.svg

The proposal for this emoji (https://www.unicode.org/L2/L2019/19307-crow-emoji.pdf) does show a possible design with a yellow beak, but most crows’ or raven’s are either black or gray: https://www.countryfile.com/wildlife/birds/british-crow-guide-how-to-identify-each-species-and-where-to-see

Update legacy references to Twitter

Just thought a list of legacy Twitter references (at least ones I've found) may be useful going forward:

  • Link in repository description - "Emoji for (mostly) everyone."
  • LICENCE(?)
  • README.md
    • Build status badge
    • Licence reference(?)
  • CONTRIBUTING.md
    • Licence reference (old repo)
  • FOLDERS.md
    • URLs pointing towards old gh-pages deployment
  • LEGACY.md
    • URL fragments pointing to old repo
  • package.json
    • New name?
  • component.json
    • "repository"
    • "author"(?)
  • Twitter controlled jsDelivr script URLs

Thanks,
Elliott (also, holding back tears and pleading face got people split lol)

My designs for Emoji 15.1

Here are designs for the emojis in Emoji 15.1.
Drawing-8 sketchpad (3)
Drawing-8 sketchpad (2)
Drawing-8 sketchpad (1)
Drawing-8 sketchpad
Drawing-7 sketchpad
Drawing-4 sketchpad

They may be just recycled, I'm just trying ¯_(ツ)_/¯

Unicode 16.0

Hello folks! Unicode 16.0 is currently being worked on by Unicode's Emoji Subcommittee (current draft proposal). It is expected to be released in the second half of 2024. When Unicode 16.0 is finalized, we'll track the designs of each newly added emoji here.

Blue heart (1f499) is different shade than other blue emojis such as blue square, circle, etc.

Copied (with modified links) from twitter/twemoji#629

The blue heart SVG, 1f499 uses the hex color #5DADEC, while the other blue emojis, e.g. blue circle, 1f535, blue square, 1f7e6, etc. use the hex color #55ACEE.

To Reproduce
Check the text/source of the blue heart SVG against that of the blue circle and blue square SVGs, and compare the value in the fill attribute.

Expected behavior
The blue heart should be the same color as the other blue- emojis.

I also checked the large blue diamond and small blue diamond SVGs, which both used #55ACEE.

Simplify the README

There's a lot of clutter in the README as of now.

I'd suggest to split it in several markdown files to keep it better organized.

Skip SVGO action if branch being PRed is in a fork owned by an organization

Problem: GitHub Actions can't perform edits to a PR when the PR is from a fork owned by an organization (see github/community#6634). This means that when such a PR is opened against jdecked/twemoji, the run-svgo action fails at the commit step if SVG optimization is needed.

Proposed Solution: Skip SVGO action if branch being PRed is in a fork owned by an organization. This will probably only affect PRs from Discord, which is fine because we know the committers there.

Add ability for sponsorships/funding

I would love to sponsor this project via GitHub sponsors (or any other sponsor/funding option like Open Collective), so if you add that here please note in the readme/this issue so folks like me can send some $ ❤️ your way for continuing this work in your free time. And also, thank you, your continued work here is very much appreciated!

Add custom characters at runtime

Hi, I am using Twemoji to help with supporting characters in user-created puzzles in my puzzle site SudokuPad. But users can be very creative in adding characters, and make frequent use of unicode arrows not currently supported in Twemoji, which often don't work in mobile browsers. Is there a way for me to provide additional characters myself in the config somehow when starting the Twemojji parser?

Publishing TTF files for releases

Hi! I have a pipeline that builds ttf files two twemoji. It builds Twemoji as a TrueType font. In particular, it is usable on modern Linux (either desktop or mobile) as well as other Unix-like distributions.

Mozilla has twemoji-colr, but that's in a font-format designed by Adobe and Mozilla, which basically only work on Windows, Firefox and some very rare applications. Major toolkits like Qt and GTK do not support that format.

I wrote these about two months ago and the builds are used downstream by Alpine Linux packages. I didn't see much hope in up-streaming these to Twitter's repo since, well Twitter is undergoing changes.

I'm not sure what your plans are for publishing artefacts, but perhaps this can serve as a reference for building truetype files for tags/releases.

The build script is a somehow of a hack, and leverages Noto's build system for its emoji fonts and a lot of its scripts. It's a mix of the Fedora recipe and an old ArchLinux recipe.

image: alpine/edge
packages:
  - make
  - graphicsmagick
  - cairo-dev
  - nototools
  - pngquant
  - zopfli
  - rsync
environment:
  VERSION: 14.0.2
sources:
  - https://src.fedoraproject.org/rpms/twitter-twemoji-fonts.git#78a8615f22996e173b6489b004210f6302cfa456
  - https://github.com/twitter/twemoji.git#v14.0.2
  - https://github.com/googlefonts/noto-emoji.git#ac1703e9d7feebbf5443a986e08332b1e1c5afcf
tasks:
  - patch: |
      cd noto-emoji
      patch -p1 -i ../twitter-twemoji-fonts/noto-emoji-use-system-pngquant.patch
      patch -p1 -i ../twitter-twemoji-fonts/noto-emoji-build-all-flags.patch
      patch -p1 -i ../twitter-twemoji-fonts/noto-emoji-use-gm.patch
  - prepare: |
      cd noto-emoji
      mv NotoColorEmoji.tmpl.ttx.tmpl Twemoji.tmpl.ttx.tmpl
      sed -i 's/Noto Color Emoji/Twemoji/; s/NotoColorEmoji/Twemoji/; s/Copyright .* Google Inc\./Twitter, Inc and other contributors./; s/ Version .*/ '$VERSION'/; s/.*is a trademark.*//; s/Google, Inc\./Twitter, Inc and other contributors/; s,http://www.google.com/get/noto/,https://github.com/twitter/twemoji/,; s/.*is licensed under.*/      Creative Commons Attribution 4.0 International/; s,http://scripts.sil.org/OFL,http://creativecommons.org/licenses/by/4.0/,' Twemoji.tmpl.ttx.tmpl
      cd ../twemoji/assets/72x72/
      for png in *.png; do
          mv $png emoji_u${png//-/_}
      done
  - build: |
      cd noto-emoji
      make EMOJI=Twemoji EMOJI_SRC_DIR=../twemoji/assets/72x72 FLAGS= BODY_DIMENSIONS=76x72
  - setup-ssh: |
      echo "anchor.whynothugo.nl ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE2WacYpYEP5vvevx4NXQn3Ktd53pBkZR/bpPoS3Wkyg" > $HOME/.ssh/known_hosts
  - rsync: |
      cd noto-emoji
      install -Dm 644 Twemoji.ttf artefacts/twemoji.ttf/$(date '+%Y-%m-%d_%H-%M')/Twemoji-$VERSION.ttf
      rsync -r artefacts/ [email protected]:./

Migrate from Travis CI to GitHub Actions

Problem: Travis CI build isn't running to update build badge in README file; Travis requires us to email support to get OSS credits added on a recurring basis.

Solution: Migrate to GitHub Actions, which also provides README badges and is free for simple build testing actions like we used to run on Travis against the gh-pages branch.

Add Catalonia ES-CT flag emoji

While not encouraged, it's become common to have flags represent languages. Catalan being one of the most widespread spoken minority language in Europe, 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.

I'm requesting the flag from Catalonia to be added, similar to how Wales, England, and Scotland were. Catalan emoji (🏴󠁥󠁳󠁣󠁴󠁿) is just the same sort of thing, subdivision emoji in the Unicode standard, with encoding U+1F3F4 U+E0065 U+E0073 U+E0063 U+E0074 U+E007F

Other emoji libraries, like OpenMoji, support such kind of subdivision flag emoji.

I provide an .svg file. I'm the author of it. It can be used and added to this Twemoji repo.

1f3f4-e0065-e0073-e0063-e0074-e007f
1f3f4-e0065-e0073-e0063-e0074-e007f

related: twitter/twemoji#574

corrupted ellipses in SVG files

I've noticed that several emojis have differences between their PNG and SVG versions
for example, the beak in chicken:

other examples bat (head/neck shape)

loudly crying face (inside of mouth)

fountain (the water at the bottom)

eye in speech bubble

skull (eyes)

A few more which aren't as easily visible:
- honey pot
- sake
- woman's hat

from what i can tell: this happened when the SVG files were optimized (starting around release 2.5.0),

original shapeellipse

From what i can tell:

  • Originally, the emojis were edited in Adobe Illustrator, and saved as .ai files. (This is a proprietary format, but it stores shapes in roughly the same format as SVG and can be converted losslessly).
  • The SVG and PNG versions were generated automatically from these .AI files.
  • Starting with v2.5.0, the SVG files were optimized, replacing some <path> elements with <ellipse> (and <circle>) elements. (among other changes)
  • The way it detected ellipses wasn't strict enough, and some shapes were mistakenly turned into ellipses.
  • At some point around v12.0, twemoji switched to using the SVGs as sources, and removed the now-redundant adobe illustrator files.

So: the current SVG files still contain those optimization mistakes
To fix this, all SVGs (except the ones from after v12.0) should be regenerated from the most recent .AI files, but with safer optimization settings (or perhaps the same settings, if the ellipse bug has already been fixed)
(here's the last commit before the AI files were removed: https://github.com/twitter/twemoji/blob/7f9de7ceb8962c1b505486e23dee24282385b28b/assets/)

Emoji guidelines/baselines?

Is there, or will there be, a set of rules and measurements that other designs and developers can use to make our own emoji? For forks, suggestions and whatnot.

Use a single-seater as racing car emoji?

Would it be possible to change the design of the racing car emoji?
Now it seems like a Nascar race car:
https://github.com/jdecked/twemoji/blob/main/assets/svg/1f3ce.svg

Would be way more recognizable from all over the world by making it an open-wheel, single-seater, F1-like racing car:

  • Nascar is mostly followed in the USA, while F1 has spectators from all over the world
  • in order to move towards standardized representation (as stated in another issue here), the majority of other implementations represent a racing car with an open-wheel, single-seater, F1 racing car: https://emojipedia.org/racing-car/
  • one of the available shortcuts for the racing car is :f1: (at least on Telegram)

Thanks in advance!

Unicode 15.1

Hello folks! We're currently working on Unicode 15.1 (emoji test data). You can track our progress on it in this issue. Help is welcome: feel free to comment on this issue if you're willing to create any of the unfinished SVGs in the table below. It's totally cool if two people want to work on the same emoji; we'll review all submissions before publishing.

Unicode 15.1 To-Do Tracker

Done Unicode Codepoint CLDR Short Name Has Skin? Category Keywords Designer
1 1f642-200d-2194-fe0f Head shaking horizontally Smileys & Emotion head shaking horizontally, no, shake Gica (Discord)
2 1f642-200d-2195-fe0f Head shaking vertically Smileys & Emotion head shaking vertically, nod, yes Gica (Discord)
3 1f6b6-200d-27a1-fe0f Person walking facing right People & Body @Nerixyz
4 1f9ce-200d-27a1-fe0f Person kneeling facing right People & Body @Nerixyz
5 1f9d1-200d-1f9af-200d-27a1-fe0f Person with white cane facing right People & Body @Nerixyz
6 1f468-200d-1f9af-200d-27a1-fe0f Man with white cane facing right People & Body @Nerixyz
7 1f469-200d-1f9af-200d-27a1-fe0f Woman with white cane facing right People & Body @Nerixyz
8 1f9d1-200d-1f9bc-200d-27a1-fe0f Person in motorized wheelchair facing right People & Body @Nerixyz
9 1f468-200d-1f9bc-200d-27a1-fe0f Man in motorized wheelchair facing right People & Body @Nerixyz
10 1f469-200d-1f9bc-200d-27a1-fe0f Woman in motorized wheelchair facing right People & Body @Nerixyz
11 1f9d1-200d-1f9bd-200d-27a1-fe0f Person in manual wheelchair facing right People & Body @Nerixyz
12 1f468-200d-1f9bd-200d-27a1-fe0f Man in manual wheelchair facing right People & Body @Nerixyz
13 1f469-200d-1f9bd-200d-27a1-fe0f Woman in manual wheelchair facing right People & Body @Nerixyz
14 1f3c3-200d-27a1-fe0f Person running facing right People & Body @Nerixyz
15 1f9d1-200d-1f9d1-200d-1f9d2 Family: adult, adult, child People & Body Gica (Discord)
16 1f9d1-200d-1f9d1-200d-1f9d2-200d-1f9d2 Family: adult, adult, child, child People & Body Gica (Discord)
17 1f9d1-200d-1f9d2 Family: adult, child People & Body Gica (Discord)
18 1f9d1-200d-1f9d2-200d-1f9d2 Family: adult, child, child People & Body Gica (Discord)
19 1f426-200d-1f525 Phoenix Animals & Nature fantasy, firebird, phoenix, rebirth, incarnation Gica (Discord)
20 1f34b-200d-1f7e9 Lime Food & Drink citrus, fruit, lime, tropical Gica (Discord)
21 1f344-200d-1f7eb Brown mushroom Food & Drink brown mushroom, food, fungus, nature, vegetable @sofodesign
22 26d3-fe0f-200d-1f4a5 Broken chain Objects break, breaking, broken chain, chain, cuffs, freedom Gica (Discord)

New home?

Hello, I maintain the Fedora package of Twemoji. Is this repository likely to me the permanent new home of the project? Should I update all our links to point here?

Thanks!

Redesign the infamous "Telephone Receiver" emoji

So everyone knows Discord is using twemoji (recently switched to this fork). Also, a lot of people have been switching to the dark themes lately, and are using dark theme in Discord, which is essentially the default theme. Now, if you go here https://emojipedia.org/telephone-receiver/ you will see that this emoji is not universally identical in all emoji design sets, some of them have this emoji in bright color, as opposed to blunt gray color. This, imo, comes down to the fact that, for example, in Discord it's very hard to see this emoji, and is generally considered bad design (consider white text on white paper).

The only reason I see that anyone would be against changing it is for the memes. Otherwise this needs to be considered for a redesign.

Consider adding Custom Twemoji API as a community project

Hi, I'm the author and maintainer of Custom Twemoji API (website, repo). It's been around since 2021 and was inspired by the old account EmojiMashupBot, which was/is closed source. I've been updating the API recently and plan to add v15 support soon. I still consider it in beta because I haven't gotten around to adding a staging environment (for stability) or an authentication layer (for visibility & security).

Thought it might be good to include in the Community Projects section of the README. If not, no worries, you can close this out.

Thank you for maintaining a fork.

Larger Subdivision Flag Support

Since Twemoji is no longer directly tied to a single vendor since X dropped direct support, there is no longer a need for only going by the emoji that Twitter wants. There is a rule saying the emoji must be supported by Unicode, which actually every subdivision is. Right now, only England, Scotland, and Wales are widely used, but technically there is support. For example, WhatsApp uses Texas. Here is one through Unicode 🏴󠁵󠁳󠁭󠁮󠁿. (this one is Minnesota specifically. I have tried making custom ones for various reasons, but without using SVG, they can kind of fall flat considering they have minute details. I would think that would help to have SVGs and more stylized designs. While it's a PNG, I made one myself of Minnesota as a test.

I only recently discovered that this broke off from Twitter, so I am not really sure how contributing works or even how to make SVG art, just wanted to raise awareness of this topic.
flag_minnesota

Unicode 15

Hello folks! We're currently working on Unicode 15. You can track our progress on it in this issue. We're hoping to have it out sometime in March. We would really, really love some help – so feel free to comment on this issue if you're willing to create any of the unfinished SVGs in the table below. It's totally cool if two people want to work on the same emoji; we'll review all submissions before publishing.

Also, if you're a company or person that wants to support us so we can have more time to devote to Twemoji – we're working on getting GitHub Sponsors set up! But feel free to reach out and let us know if there's interest.

Sneak Peek

Pink heart Light blue heart Grey heart Black bird Flute

Unicode 15 To-Do Tracker

Done Unicode Codepoint CLDR Short Name Has Skin? Category Keywords Designer
1fae8 Shaking face   Smileys & Emotion earthquake, face, shaking, shock, vibrate
1fa77 Pink heart   Smileys & Emotion cute, heart, like, love, pink @sofodesign
1fa75 Light blue heart   Smileys & Emotion cyan, heart, light blue, light blue heart, teal @sofodesign
1fa76 Grey heart   Smileys & Emotion gray, grey heart, heart, silver, slate @sofodesign
1faf7 Leftwards pushing hand People & Body high five, leftward, leftwards pushing hand, push, refuse, stop, wait
1faf8 Rightwards pushing hand People & Body high five, push, refuse, rightward, rightwards pushing hand, stop, wait
1face Moose   Animals & Nature animal, antlers, elk, mammal, moose
1facf Donkey   Animals & Nature animal, ass, burro, donkey, mammal, mule, stubborn
1fabd Wing   Animals & Nature angelic, aviation, bird, flying, mythology, wing
1f426-200d-2b1b Black bird   Animals & Nature bird, black, crow, raven, rook @sofodesign
1fabf Goose   Animals & Nature bird, fowl, goose, honk, silly
1fabc Jellyfish   Animals & Nature burn, invertebrate, jelly, jellyfish, marine, ouch, stinger
1fabb Hyacinth   Animals & Nature bluebonnet, flower, hyacinth, lavender, lupine, snapdragon
1fada Ginger root   Food & Drink beer, ginger root, root, spice
1fadb Pea pod   Food & Drink beans, edamame, legume, pea, pod, vegetable
1faad Folding hand fan   Objects cooling, dance, fan, flutter, folding hand fan, hot, shy
1faae Hair pick   Objects Afro, comb, hair, pick @Gabe-Mitnick
1fa87 Maracas   Objects instrument, maracas, music, percussion, rattle, shake @jyo0329
1fa88 Flute   Objects fife, flute, music, pipe, recorder, woodwind @sofodesign
1faaf Khanda   Symbols khanda, religion, Sikh @jyo0329
1f6dc Wireless   Symbols computer, internet, network, wireless @sofodesign

Inconsistent pupil colors

Unlike the rest of the emojis, emojis with wide eyes has black pupils instead of brown.

The rolling eyes emoji and the old versions of pleading/holding back tears emoji are an exception in that they have brown pupils.

Create new homepage

Problem: TwitterOSS isn't an account that exists on Twitter anymore. All of its tweets were deleted, too, so the homepage for this project currently looks like this:

bare-looking screenshot of jdecked.github.io/twemoji

Solution: Design & implement a new homepage. It should briefly explain what this project is and perhaps give a short example.

My designs for the 15.1 smileys

no
yes
I'm not that good at making svg art, so please excuse the lack of masks, using outlines for the face, etc.

Colors used:
#FCD824 (face color)
#4BB4F0 (movement color)
#694200 (despite picking this color out of immaturity, it works well as the color of the mouth and the eyes)

Revert pleading emoji or accept/create a more representative redesign

The current redesign diverges way too far from the previous version and expresses an entirely different intent. It also shares much too similarity with the current "face holding back tears" design.
I am making this as a separate issue from #12 because I feel as though that issue does not carry the same intent as this one. Apologies if they are too similar.
To clarify:
I see this issue as: "Please change or redesign the pleading emoji"
Whereas #12 seems to be: "Pleading emoji is fine, but don't make any more changes"

Perhaps I am simply misreading the text though. Sorry if so.

Images for future emojis?

I have created a couple emojis that are not in any specification yet:

Panther: (derived from leopard)

Table: (derived from chair)

What's your opinion on expanding the emojis to basically include a picture for every common noun?

If the purpose of twemoji is to be used in all sorts of apps and games, this might be more useful than just limiting it to emojis in some arbitrary specification. For example, I am using twemoji as a way to turn text into illustrations so I need more than the current set.

We could place them in a custom-emoji folder.

Thoughts?

Inconsistency in Suit Icons Color Representation

Description

Encountered an issue within the twemoji library affecting the platform at BoardGamesGeek. There's a discrepancy in the color representation of the heart and diamond suit icons, which contradicts their expected appearance based on their names.

Current Behavior

  • Spade (:spades:) and club (:clubs:) icons display in black, as expected.
  • Heart (:hearts:) and diamond (:diamonds:) icons display in red, conflicting with their "Black" prefix in naming.

Expected Behavior

Option 1: Adjust the heart and diamond icons to display in black, aligning with their naming.
Option 2: Update the naming convention for these icons to reflect their color accurately if they are intended to remain red, to "Red Heart Suit" and "Red Diamond Suit."

Steps to Reproduce

  1. Use the twemoji library in a project.
  2. Render the suit icons (:spades:, :clubs:, :hearts:, :diamonds:) following the library's guidelines.
  3. Notice the color inconsistency among the icons.

Expected Outcome

Uniform color representation for all suit icons or updated naming to accurately reflect their colors.

Additional Context

The twemoji library's integration is crucial for BGG, and resolving this discrepancy will improve visual consistency and user experience.

Links

Thank you for addressing this issue. Looking forward to a resolution.

Regarding future redesigns

Dear developer,

after thorough discussions and future-oriented predictions, in favor of platforms such as Discord, the user base has voted on keeping the already-existing, standard yello face emojis as they are and not become a subject to change, as seen with the recently 2 updated ones. We respect the 2 recent changes, but with all due appreciation, we would not like to see more alternations of the classic twemojis in future releases. We thank you in advance.

~"Dont't break what isn't broken"

Much Love,
The People Of Discord

npm publish

You made a Github release for v15.0.2 but the version has not been released on npmjs.org :-(

skin color palettes

(not affiliated with twemoji, but i collected a bunch of data for a project i was working on recently)

Most emoji with skin color variants follow these palettes:

NOTE: a few of the existing SVGs have have colors which are off by 1 (e.g. ​#FFDB5E instead of #FFDC5D),


palettes

export default [
{ // 🧑👋 yellow skin (orange hair)
skin1: '#FFDC5D',
skin2: '#F9CA55',
skin3: '#EF9645',
skin4: '#EF9645',
hair: '#FFAC33',
eyes: '#662113',
nose: '#C1694F',
},
{ // 🧑🏻👋🏻 light skin (light black hair)
skin1: '#F7DECE',
skin2: '#EEC2AD',
skin3: '#E0AA94',
skin4: '#D89882',
hair: '#292F33',
eyes: '#662113',
nose: '#C1694F',
},
{ // 🧑🏼👋🏼 medium-light skin (yellow hair)
skin1: '#F3D2A2',
skin2: '#E2C196',
skin3: '#D2A077',
skin4: '#C68F6A',
hair: '#FFE51E',
eyes: '#662113',
nose: '#C1694F',
},
{ // 🧑🏽👋🏽 medium skin (red-brown hair)
skin1: '#D5AB88',
skin2: '#CC9B7A',
skin3: '#B78B60',
skin4: '#AA8052',
hair: '#963B22',
eyes: '#662113',
nose: '#C1694F',
},
{ // 🧑🏾👋🏾 medium-dark skin (brown hair)
skin1: '#AF7E57',
skin2: '#9B6A49',
skin3: '#90603E',
skin4: '#845636',
hair: '#60352A',
eyes: '#662113',
nose: '#915A34',
},
{ // 🧑🏿👋🏿 dark skin (dark black hair)
skin1: '#7C533E',
skin2: '#664131',
skin3: '#583529',
skin4: '#543226',
hair: '#0B0200',
eyes: '#000000',
nose: '#3D2E24',
},
]


  • hair: hair color in human emojis (some use a fixed hair color instead, e.g. Older Person 🧓🧓🏻🧓🏼🧓🏽🧓🏾🧓🏿)

  • skin1: main skin color

  • skin2: darker shade, mostly used for shadows in human emoji

  • skin3: even darker shade, mostly used for outlines in hand emoji

  • skin4: darkest shade, very rarely used (Man Swimming, Nose, Woman Raising Hand, Baby, Middle Finger, Man Getting Haircut)

  • nose: used for noses in human emoji

    • mouths are this color too, except female variants all use #DF1F32 👩👩🏻👩🏼👩🏽👩🏾👩🏿
  • eyes: used for eyes in human emoji

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.