I recently found out [1] that the Unicode sequences for flag emoji are created by taking the two-letter country abbreviation (ISO 3166-1 alpha-2) and replacing both letters with their counterparts in the range U+1F1E6 through U+1F1FF.
For example, the abbreviation for Canada is CA, and the characters 🇨 (U+1F1e8) and 🇦 (U+1F!E6) together create 🇨🇦.
This is illustrated by the following Python code.
import iso3166 def flag_emoji(name): alpha = iso3166.countries.get(name).alpha2 box = lambda ch: chr( ord(ch) + 0x1f1a5 ) return box(alpha[0]) + box(alpha[1]) print(flag_emoji("Canada"))
The name we give to flag_emoji
need not be the full country name, like Canada. It can be anything that iso3166.countries.get
supports, which also includes two-letter abbreviations like CA, three-letter abbreviations like CAN, or ISO 3166 numeric codes like 124.
We can use the following code to print a collage of flags:
def print_all_flags(): for i, c in enumerate( iso3166.countries ): print(flag_emoji(c.name), end="") if i%25 == 24: print()
Related posts
- Preventing unwanted emoji
- Finding similar flags with Mathematica
- Two-letter and three-letter country abbreviations
[1] I learned this from watching Dylan Beattie’s talk Plain Text on YouTube.