Langue
Thème
Technique

Pourquoi on a viré tous les emojis drapeaux de MapGuesser

Fin 2024, la Syrie change de drapeau. Apple met à jour en mars, Google en juin, Twitter en janvier 2026. Pour un jeu de drapeaux, on ne pouvait plus compter sur les emojis. On vous raconte comment on a tout repris de zéro.

Publié le 2 avril 20267 min de lecture

TL;DR — Les emojis drapeaux s'affichent différemment selon l'appareil et mettent des mois à se mettre à jour quand un pays change de drapeau. Pour MapGuesser, c'était un vrai problème. On les a tous remplacés par 254 images HD (768×576 px) style Apple, upscalées x4 par IA avec le modèle HAT-L à partir de captures Borderly. Résultat : un rendu identique sur tous les appareils, et un script qui met tout à jour en une commande.

Le bug qu'on ne pouvait plus ignorer

Décembre 2024, la Syrie change de drapeau. Le régime Assad tombe, le pays revient au drapeau d'indépendance — vert-blanc-noir, trois étoiles rouges. L'ancien, rouge-blanc-noir avec deux étoiles vertes, c'est fini.

Dans les mois qui suivent, c'est le bazar. Apple met à jour son emoji en mars 2025 (iOS 18.4). Samsung suit en avril. Google Android ? Juin 2025 seulement. Et Twitter/X ? Janvier 2026. Pendant des mois, les joueurs de Flag Quiz ne voient pas le même drapeau selon leur appareil. Un joueur sur iPhone récent voit le nouveau drapeau, son adversaire sur Android voit l'ancien.

Pour un jeu où il faut reconnaître des drapeaux, c'est un problème assez rédhibitoire.

On savait que les emojis drapeaux étaient un sujet fragile. On se disait que le polyfill qu'on utilisait (basé sur Twemoji) suffirait à uniformiser. Sauf que Twemoji n'est plus vraiment maintenu depuis le rachat de Twitter, et le nouveau drapeau syrien n'y était pas non plus.

Ce n'était plus un sujet qu'on pouvait repousser.

Le vrai problème avec les emojis drapeaux

Un emoji drapeau, ce n'est pas une image. C'est un code Unicode que chaque système interprète à sa sauce :

  • Apple met à jour le plus vite, avec un rendu distinctif (un léger effet ondulé, comme un drapeau au vent). La Syrie a été mise à jour en mars 2025
  • Google/Android affiche des rectangles plats. La Syrie n'a été mise à jour qu'en juin 2025 — 3 mois après Apple
  • Windows a carrément affiché les codes lettres ("FR", "SY") pendant des années au lieu de vrais drapeaux
  • Samsung a encore un autre design et un autre calendrier (avril 2025 pour la Syrie)
  • Twitter/X (Twemoji) n'a mis à jour qu'en janvier 2026 — plus d'un an après le changement

Pour un jeu de géographie, ça crée des situations absurdes :

  • Un joueur perd parce que son drapeau est obsolète et qu'il ne le reconnaît pas
  • Deux joueurs dans la même partie voient deux drapeaux différents
  • Dès qu'on zoome sur un emoji, c'est flou — les emojis sont rendus en toute petite résolution

On a décidé d'arrêter de dépendre de gens qui ne contrôlent pas la même chose que nous. Il fallait héberger nos propres drapeaux.

Trouver la bonne source

On ne voulait pas de simples rectangles plats. On voulait le rendu style Apple — celui avec l'effet ondulé que tout le monde connaît sur iPhone. C'est plus expressif qu'un rectangle, et c'est le style auquel nos joueurs sont habitués.

Le problème : Apple ne distribue pas ses emojis, et reproduire cet effet ondulé en code, personne n'a réussi à le faire proprement.

C'est là qu'on a trouvé Borderly. C'est une API qui fournit des assets géographiques : cartes SVG, frontières, drapeaux. Eux aussi se sont cassé les dents sur le problème, et ils en ont tiré un article passionnant ("The Quest for Wavy Flags") où ils documentent tout ce qu'ils ont essayé :

  • Des filtres SVG → résultat artificiel
  • Des déformations géométriques → distorsions bizarres
  • De la manipulation de pixels en JavaScript → pas assez qualitatif
  • Des captures d'écran des emojis macOS → parfait

Aucune technique de code ne reproduisait le rendu Apple de manière convaincante. Alors ils ont fait au plus simple : des screenshots de l'emoji macOS, mis à disposition via leur CDN. 251 drapeaux en 192x144 pixels, rendu identique à l'iPhone. On a complété avec 3 territoires supplémentaires pour arriver à nos 254.

On tenait notre source.

Le souci de la taille

192x144 pixels, ça passe pour un petit drapeau dans une liste. Mais dans le Flag Quiz, les joueurs peuvent zoomer pour mieux distinguer les détails d'un blason ou d'un symbole. Et là, 192 pixels de large, ça pixelise.

Un agrandissement classique ne fait que rendre le flou plus gros. Il nous fallait un outil capable d'inventer des détails cohérents là où il n'y en a pas — de l'upscaling par IA.

Upscaler 254 drapeaux avec l'IA

On a commencé par tester Real-ESRGAN, le modèle le plus connu pour ce genre de tâche. Résultats corrects, mais les bords des étoiles et des croissants manquaient de netteté.

On est alors passés à HAT-L (Hybrid Attention Transformer), un modèle plus récent (CVPR 2023). Sans rentrer dans le détail de l'architecture, la différence clé c'est que HAT est beaucoup plus fort pour reconstruire des bords nets et des formes géométriques — exactement ce dont un drapeau est fait.

Le modèle pèse 316 Mo et tourne sur les puces Apple Silicon (M1/M2/M3). Environ 30 secondes par drapeau, 2 heures pour traiter les 254.

192x144 en entrée → 768x576 en sortie. Quatre fois la résolution, avec des détails recréés. Passez la souris sur le comparateur pour voir la différence — et changez de drapeau pour explorer :

Bhoutan — Après — 768px upscalé IABhoutan — Avant — 192px agrandi
Avant — 192px agrandiAprès — 768px upscalé IA
Comparer :

Ça n'a pas marché du premier coup

Si ça avait été aussi simple, cet article ferait trois paragraphes.

La transparence. Les drapeaux style Apple ont un contour ondulé sur fond transparent. Le premier essai convertissait l'image en mode plein : fond noir partout. Il a fallu traiter la transparence séparément — upscaler les couleurs d'un côté, le masque de transparence de l'autre, et recomposer.

Les bords qui bavaient. Le modèle voyait la transition brutale entre le drapeau et la zone transparente et essayait de la lisser, créant un halo blanc. On a résolu ça en "étendant" les couleurs du bord dans la zone transparente avant l'upscaling — le modèle ne voit plus de transition brutale, plus d'artefacts.

Le texte rendu illisible. 19 drapeaux ont du texte dessus — devises nationales, inscriptions, calligraphies. Le modèle d'IA les transformait en bouillie floue (le "ORDEM E PROGRESSO" du Brésil devenait illisible). Pour ces drapeaux, on bascule automatiquement sur un SVG vectoriel quand l'affichage dépasse 200 pixels. Le texte reste net quelle que soit la taille.

Ce que ça donne aujourd'hui

Chaque drapeau existe en trois versions :

  • Source (192x144) — les captures Borderly, gardées pour pouvoir tout recalculer
  • HD (768x576) — upscalées par l'IA, utilisées partout dans le jeu
  • SVG vectoriel — pour les 19 drapeaux avec du texte, en grand format

Aperçu de 8 drapeaux HD style Apple : France, Brésil, Japon, Australie, Bhoutan, Syrie, Royaume-Uni, Canada
Aperçu de 8 drapeaux HD style Apple : France, Brésil, Japon, Australie, Bhoutan, Syrie, Royaume-Uni, Canada

Explorez ces drapeaux en détail : France, Brésil, Japon, Australie, Bhoutan, Syrie, Royaume-Uni, Canada.

Tout est piloté par un script unique. Quand un pays change de drapeau, on relance la commande : le script détecte ce qui a changé via des checksums et ne re-traite que les drapeaux concernés.

On a mis à jour 16 composants dans l'app, viré le polyfill emoji et deux dépendances qui ne servaient plus. Et surtout : tous les joueurs voient maintenant le même drapeau, sur tous les appareils.

Les chiffres

Drapeaux couverts 254 pays et territoires
Résolution source → finale 192x144 → 768x576 (x4)
Modèle IA HAT-L (316 Mo)
Temps de traitement ~30 sec/drapeau, ~2h au total
Drapeaux avec fallback SVG 19 (ceux avec du texte)

Et après ?

Le prochain pays qui change de drapeau, on est prêts. Une commande et c'est plié. Plus besoin d'attendre qu'Apple, Google et Microsoft se mettent d'accord.

Si vous êtes développeur et que vous utilisez des emojis drapeaux dans votre app, prenez-le comme un retour d'expérience : ça marche jusqu'au jour où ça ne marche plus. Et ce jour-là, il vaut mieux avoir un plan B.


Vous voulez voir le résultat ? Lancez une partie de Flag Quiz, testez vos connaissances avec le Countryle ou explorez les drapeaux des 254 pays du monde.

Écrit par

Alexandre Bonefons

Créateur de MapGuesser

Partager cet articleXLinkedIn

Sources

Questions fréquentes

Le cas le plus marquant est la Syrie : fin 2024, après la chute du régime Assad, le pays est revenu à son drapeau d'indépendance (vert-blanc-noir, trois étoiles rouges). D'autres changements récents incluent la Martinique (nouveau drapeau adopté en 2023, mis à jour progressivement par les plateformes) et la Nouvelle-Zélande qui relance régulièrement le débat sur un changement de drapeau. MapGuesser met à jour ses drapeaux en relançant un simple script.

Les emojis ne sont pas des images fixes — ce sont des codes que chaque appareil redessine avec sa propre police. Apple, Google, Samsung et Microsoft ont chacun leur propre set d'emojis drapeaux, avec des styles très différents (ondulé chez Apple, rectangle plat chez Google) et surtout des calendriers de mise à jour indépendants. Quand la Syrie a changé de drapeau fin 2024, Apple a mis à jour en mars 2025, Google seulement en juin, et Twitter/X en janvier 2026. Pendant des mois, le même emoji affichait deux drapeaux différents selon l'appareil.

19 drapeaux contiennent du texte visible : le Brésil ('ORDEM E PROGRESSO'), l'Arabie Saoudite (shahada en arabe), l'Iran (calligraphie 'Allahu Akbar'), l'Irak, l'Afghanistan, et d'autres comme le Belize, la Bolivie ou le Paraguay avec leurs armoiries détaillées. Sur MapGuesser, ces drapeaux basculent automatiquement en version vectorielle SVG quand on zoome, pour garder le texte lisible.

L'upscaling par IA (ou super-résolution) consiste à agrandir une image tout en recréant des détails que l'image d'origine n'a pas. Contrairement à un zoom classique qui étale les pixels et rend l'image floue, un modèle d'IA entraîné sur des millions d'images est capable de 'deviner' les détails manquants de manière cohérente. On utilise le modèle HAT-L pour passer nos drapeaux de 192x144 à 768x576 pixels.

On a un script automatisé qui télécharge les drapeaux depuis Borderly.dev, les upscale en HD avec l'IA, et détecte les changements via des checksums. Quand un drapeau change, il suffit de relancer le script : seuls les drapeaux modifiés sont re-traités. Plus besoin d'attendre qu'Apple ou Google mettent à jour leurs emojis.

254 pays et territoires sont couverts, incluant tous les États membres de l'ONU et de nombreux territoires (Guadeloupe, Groenland, Hong Kong, etc.). Chaque drapeau est disponible en 768x576 pixels. Les 19 drapeaux avec du texte disposent aussi d'une version SVG vectorielle pour rester lisibles en grand format.