Wysyłasz 😀 z telefonu, rozmówca czyta wiadomość na laptopie — i widzi inną twarz. Nie inny nastrój ani błąd: ten sam znak, narysowany inną ręką. Tak to działa od początku.
Najłatwiej zrozumieć to na czymś, co da się zmierzyć. Na naszym dysku leżą trzy zestawy obrazków na otwartej licencji i każdy pokrywa ten sam katalog 3953 pozycji. Trzy zestawy, jedna lista znaków — i trzy bardzo różne odpowiedzi na pytanie, jak to narysować.
Standard opisuje znaczenie, a nie obrazek
Unicode odpowiada za to, że znak istnieje, ma numer i oznacza określoną rzecz: «szeroko uśmiechnięta twarz», «rakieta», «czerwone serce». Na tym kompetencje się kończą. Kolor, kształt i grubość kreski nie należą do standardu — obrazki w jego własnych tabelach są oznaczone jako próbki, nie jako wzorzec.
Reszta należy do tego, kto rysuje. Apple rysuje swój zestaw, Google swój, tak samo Samsung, Microsoft i Meta. Otwarte zestawy robią dokładnie to samo, z tą różnicą, że wynik można pobrać i porównać. Właśnie tym się teraz zajmiemy.
Wynika stąd rzecz, którą warto przyjąć raz i nie wracać do niej: «poprawnego» wyglądu emoji nie ma. Jest znaczenie zapisane w standardzie i dowolnie wiele rysunków do niego.
Trzy zestawy, które mamy na dysku
Zestawy są ułożone według punktów kodowych: plik nazywa się numerem znaku, więc jedna kopia obsługuje wszystkie dziewięć wersji językowych serwisu. Oto co wychodzi z policzenia plików i zsumowania ich wagi.
| Zestaw | Rysuje | Licencja | Plików | Pokrycie | Waga | Średni plik |
|---|---|---|---|---|---|---|
| Noto Color Emoji | Apache 2.0 | 3691 | 93,4 % | 30,6 MiB | 8694 B | |
| OpenMoji | HfG Schwäbisch Gmünd | CC BY-SA 4.0 | 3953 | 100 % | 12,3 MiB | 3265 B |
| Twemoji | Twitter / X | CC BY 4.0 | 3939 | 99,6 % | 9,6 MiB | 2542 B |
Ponad trzykrotna różnica wagi. I nie chodzi o to, że Google nie umie optymalizować: zestawy rozwiązują różne zadania. Jeden rysuje ilustrację, drugi znak.
Ile figur idzie na jedną twarz
Waga pliku wynika z tego, z ilu kawałków złożony jest rysunek. Obrazek wektorowy składa się z figur: konturów, okręgów, prostokątów. Policzmy je dla sześciu znajomych znaków.
| Znak | Noto | OpenMoji | Twemoji |
|---|---|---|---|
| 😀 szeroko uśmiechnięta twarz | 3952 B / 23 figury | 1439 B / 13 | 450 B / 5 |
| ❤️ czerwone serce | 1598 B / 5 | 757 B / 4 | 368 B / 1 |
| 🔥 ogień | 2502 B / 2 | 3130 B / 10 | 822 B / 2 |
| 👍 kciuk w górę | 5434 B / 10 | 2473 B / 13 | 1663 B / 2 |
| 😂 łzy ze śmiechu | 6538 B / 24 | 2880 B / 20 | 1668 B / 4 |
| 🚀 rakieta | 5413 B / 25 | 4498 B / 16 | 677 B / 6 |
Czerwone serce u Twemoji to jedna jedyna figura: kontur, wypełnienie i koniec. Noto używa pięciu, bo jest tam refleks i miękkie przejście koloru. Uśmiechnięta twarz różni się wagą prawie dziewięciokrotnie: 3952 bajty wobec 450.
Dlaczego ogień psuje regułę
Jeden wiersz nie trzyma się zasady «Noto jest najcięższe»: 🔥 zajmuje u OpenMoji 3130 bajtów wobec 2502 u Noto. Po otwarciu obu plików widać powód.
- Noto rysuje płomień dwiema dużymi figurami z wypełnieniem gradientowym: złożoność siedzi w opisie koloru, nie w geometrii.
- OpenMoji prawie nie używa gradientów — płaskie wypełnienie i czarny kontur, więc bryłę trzeba wziąć z kształtu. Dziesięć figur zamiast dwóch.
- Twemoji idzie trzecią drogą: dwie figury, płaski kolor, żadnego konturu. 822 bajty, a przy osiemnastu pikselach różnicy i tak nie zobaczysz.
To trzy szkoły rysowania, a nie trzy poziomy jakości. Ilustracja, piktogram i znak. Każda ma rację na swoim miejscu.
Porównywanie zestawów na urodę donikąd nie prowadzi. Porównuj je po rozmiarze, w jakim zamierzasz je pokazywać.
Dlaczego zestaw zmienia się po drodze
Czytelnik zwykle zakłada, że obrazek wybiera jego telefon. To połowa prawdy: rysunek pochodzi z czcionki systemowej, a ta jest jedna na urządzenie. Część aplikacji wozi jednak własny zestaw i podmienia systemowy — dlatego ten sam znak potrafi wyglądać inaczej w komunikatorze i w przeglądarce na tym samym telefonie.
Zostają trzy warstwy i na każdej obrazek może się zmienić:
- System. Jego czcionka odnawia się razem z nim: rzadko i dużymi krokami.
- Aplikacja. Komunikator albo serwis społecznościowy może dołączyć swój zestaw i wtedy system nie ma nic do powiedzenia.
- Strona. Witryna może podać obrazek plikiem i wtedy wszyscy czytelnicy widzą to samo, niezależnie od sprzętu.
My korzystamy z trzeciej warstwy wybiórczo: na listach świeże znaki wychodzą jako obrazek, a nie tekst. Powód jest prosty — czcionki systemowe jeszcze ich nie znają, a bez podmiany stałby tam pusty prostokąt. Wszystko starsze idzie tekstem, żeby dało się je zaznaczyć i skopiować.
Czego zestawom brakuje
Kompletny nie jest żaden. Katalog rośnie z roku na rok, a zbiory obrazków odnawiają się we własnym tempie — i dziury widać od razu, gdy zestawić nazwy plików z listą znaków.
- Noto — brakuje 262 plików. Każdy z nich okazał się flagą: i te złożone z dwóch liter regionalnych, i te złożone ze znaczników, jak 🏴. Wśród braków nie ma ani jednej pozycji spoza flag. Zestaw trzyma flagi osobno, nie według punktów kodowych, więc nasze rozłożenie ich nie podchwyciło.
- Twemoji — brakuje 14. To ©️, ®️ i dwanaście klawiszy: #️⃣, *️⃣ oraz cyfry od 0️⃣ do 9️⃣. Wszystkie to stare znaki, które emoji zostały dopiero z czasem.
- OpenMoji — nie brakuje niczego. 3953 pliki na 3953 pozycje katalogu.
Dziury w zestawie nie są rzadkością ani oznaką zaniedbania. Tak wygląda każdy rysunek do żywego standardu: najpierw wychodzi wydanie Emoji, potem zestaw je dogania. Świeże znaki miesiącami żyją bez obrazka i to osobna historia — o kwadraciku zamiast emoji.
Kiedy rysunek kłóci się ze znaczeniem
Dopóki mowa o grubości kreski, nic się nie dzieje. Gorzej, gdy obrazek zaczyna przeczyć znaczeniu.
Klasyczny przypadek to 🔫. Standard daje znakowi neutralny opis, a pierwsze zestawy rysowały rewolwer. Potem Apple zastąpił go pistoletem na wodę i w ciągu dwóch lat poszły za nim pozostałe duże zestawy. Sam znak się nie zmienił: ten sam numer, ta sama nazwa. Zmienił się wyłącznie rysunek — a wraz z nim to, co rozumie odbiorca.
Z twarzami jest podobnie. 😅 w jednym zestawie czyta się jako ulga, w drugim jako panika; 🙂 bywa przyjazny, a bywa wyraźnie złośliwy. Nadawca wybiera po swoim obrazku, czytelnik odczytuje po swoim.
Jeśli wiadomość jest ważna, a jej ton wisi na jednym znaku, sprawdź go na karcie: 😀, 🔥 i każdy inny pokazujemy od razu we wszystkich trzech zestawach. Jeśli rysunki się rozjeżdżają, lepiej dopisać ton słowami.
Który zestaw wziąć do własnego projektu
Jeśli robisz stronę albo aplikację i wolisz nie zależeć od tego, co czytelnik ma zainstalowane, zestaw obrazków dołącza się do projektu. Decydują trzy rzeczy, a «ładniejszy» nie jest jedną z nich.
- Licencja. Apache 2.0 przy Noto i CC BY 4.0 przy Twemoji wymagają wskazania autorstwa. CC BY-SA 4.0 przy OpenMoji wymaga dodatkowo udostępniania przeróbek na tych samych warunkach — to ważne, jeśli planujesz zmiany stylu.
- Kompletność. Jeśli w projekcie są flagi, zestaw bez plików flag trzeba będzie uzupełnić ręcznie.
- Waga. Trzydzieści megabajtów wobec dziewięciu to różnica w szybkości strony wszędzie tam, gdzie znaków jest dużo: w katalogu, w top 100, na liście.
I czwarta rzecz, o której przypomina się późno: świeżość. Zestaw spóźniony o wydanie zostawi cię bez obrazków do wszystkiego, co nowe — co i kiedy wyszło, widać na stronie wersji Emoji.
Jak porównać samemu
Nie potrzeba niczego szczególnego. Na karcie każdego znaku pokazujemy wszystkie trzy rysunki obok siebie — otwórz rakietę, czerwone serce albo kciuk w górę i popatrz. Osobna strona o zestawach obrazków zbiera je razem z licencjami i odnośnikami do źródeł.
A jeśli chcesz wiedzieć, dlaczego ten sam znak ma we właściwościach dwa różne numery wersji, rozłożone jest to w artykule o dwóch wersjach emoji.
Wniosek jest krótki. Znak jest jeden, rysunków dowolnie wiele i żaden nie jest tym właściwym. Trzymanie tego w głowie przydaje się bardziej niż spór o to, czyj uśmiech jest poprawny.