BabelStone Flags is a font that supports multicolour flag glyphs for Unicode character sequences representing various national, sub-national, supra-national, and miscellaneous flags. The current version of the font includes glyphs for 79 flags in total. At present the only Windows applications I use that fully support this font are Microsoft Word 2016 and the Firefox browser, although most other browsers (such as Chrome, Edge, and Internet Explorer) do partially support the colour glyphs in this font.
This font supports the two mechanisms for representing country and region flags described in the proposed update to Unicode Technical Standard #51 (Unicode Emoji): Regional Indicator Sequences and Flag Emoji Tag Sequences. These sequences are defined in the Emoji 5.0 data.
These are sequences of two Regional Indicator letter symbols (1F1E6..1F1FF = A..Z) corresponding to ISO 3166-1 alpha-2 two-letter country codes (technically the Unicode Standard references Unicode region subtags defined in CLDR, which are derived from ISO 3166-1 codes). For example, the country code for USA ("US") is represented by the Unicode character sequence <1F1FA 1F1F8> (RIS-U, RIS-S). If a particular RI sequence is not supported, it should fallback to displaying as two individual Regional Indicator letter symbols (generally a boxed capital letter A through Z).
As the boundary between adjacent RI sequences is not indicated at the encoding level, it is possible to get unexpected diplay results for consecutive sequences of more than two RI symbols. For example, you may put a sequence of four RI symbols AQAZ on your web page, which you intend to render as the flags of Antarctica (AQ) and Azerbaijan (AZ), but if a visitor's browser does not support the flag of Antarctica the result for them may be the flag of Qatar (QA) sandwiched between orphaned RI symbols A and Z. To avoid getting the wrong flags displayed it is safest to separate consecutive RI sequences with a space character or punctuation mark.
BabelStone Flags currently supports flags for 34 countries, territories or international entities with an ISO 3166-1 code: Antarctica (AQ), Australia (AU), Bhutan (BT), Canada (CA), China (CN), European Union (EU), France (FR), Germany (DE), Greenland (GL) Guernsey (GG), Hong Kong (HK), Ireland (IE), Isle of Man (IM), India (IN), Iraq (IQ), Iran (IR), Italy (IT), Jersey (JE), Japan (JP), North Korea (KP), South Korea (KR), Kosovo (XK), Macao (MO), Mongolia (MN), Nepal (NP), New Zealand (NZ), Russia (RU), South Africa (ZA), Spain (ES), Switzerland (CH), Taiwan (TW), United Kingdom (GB), United Nations (UN), and United States (US). It also supports the historic flag of the Soviet Union (SU), even though this is not conformant to the Unicode Standard as the ISO 3166-1 code SU is exceptionally reserved (but as it is exceptionally reserved the code cannot be used for anything else, and so it is safe to use it for the flag of the Soviet Union).
I have tested BabelStone Flags under Windows 10 on the latest versions of Chrome, Edge, Firefox and Internet Explorer, and they all display Regional Indicator Sequences correctly as colour flags using BabelStone Flags. They also display correctly on Microsoft Word 2016.
These are sequences of a waving black flag character (U+1F3F4 🏴) followed by four or five lowercase tag letters (E0061..E007A) and/or tag digits (E0030..E0039) terminated by a cancel tag (E007F). These sequences correspond to ISO 3166-2 codes representing subdivisions of countries listed in ISO 3166-1 (e.g. states, provinces, counties, autonomous regions), but with the hyphen omitted, so for example the ISO 3166-2 code GB-SCT for Scotland is represented by this sequence of seven Unicode characters: <1F3F4 E0067 E0062 E0073 E0063 E0074 E007F> (Waving Black Flag, Tag-g, Tag-b, Tag-s, Tag-c, Tag-t, Cancel Tag). (Technically the Unicode Standard references Unicode subdivisionIDs defined in CLDR, which are derived from ISO 3166-2 codes.)
Tag characters are default ignorable and invisible, so if a flag tag sequence is not supported on a particular system it will fallback to displaying as a waving black flag. Thus, if you have a web site showing two different flag characters together (for example the England and Scotland flags), they may display correctly on your browser, but some visitors using different browsers may only see two identical waving black flags, which can be a little confusing !
BabelStone Flags currently supports 38 sub-national flags for Canada, France, Ireland, Spain, Switzerland, United Kingdom, and the United States:
Only three of these are recommended for implementation by the Unicode Consortium (flags for England, Scotland, and Wales), but the rest are not recommended not to be implemented. Note that there is no official flag for Northern Ireland, but as the Ulster Banner is used to represent Northern Ireland in major international sporting competitions such as the FIFA World Cup, this flag is used for GB-NIR in BabelStone Flags. The synonym for Wales, GB-CYM, defined in BS 6879 but not listed in ISO 3166-2, is also supported in BabelStone Flags.
BabelStone Flags also includes four flags for historic English, Scottish and Welsh counties that do not have an ISO 3166-2 code. In these cases I have made up an unofficial GB code with "X" as the first letter of the subdivision code (e.g. GB-XCR for Caernarfonshire). These are indicated with three stars in the table of Flags for ISO 3166-2 Country Subdivision Codes below.
BabelStone Flags also supports Flag Emoji tag sequences for ISO 3166-1 two-letter country codes (i.e. the US flag can be represented either as <1F1FA 1F1F8> or as <1F3F4 E0075 E0073 E007F>). I am unclear from the rather imprecise description of Flag Emoji tag sequences given in Annex C of Unicode Technical Standard #51 whether this is conformant with the Unicode Standard or not; but it seems logical to support all geopolitical flags as tag sequences.
I have tested BabelStone Flags under Windows 10 on the latest versions of Chrome, Edge, Firefox and Internet Explorer, and only Firefox displays Flag Emoji tag sequences correctly as colour flags using BabelStone Flags; all the other browsers display the sequences as identical black flags. Flag Emoji tag sequences also display correctly on Microsoft Word 2016.
In addition to the geo-political flags, BabelStone Flags also supports the Rainbow flag and Pirate flag. These are not single Unicode characters, but are represented as the following Emoji ZWJ Sequences :
Note that there is some confusion about the placement of the variation selector (VS-16) in these sequences, with it being placed after the first graphic character in the case of the Rainbow Flag, but at the end of the sequence in the case of the Pirate Flag. BabelStone Flags supports both placements for both flags, as well as sequences with the variation selector omitted.
I have tested BabelStone Flags under Windows 10 on the latest versions of Chrome, Edge, Firefox and Internet Explorer, and they all display the Rainbow flag correctly, and all but Chrome display the Pirate flag correctly. Firefox, Edge and Internet Explorer display the Rainbow and Pirate flags with either VS-15 (text display) or VS-16 (emoji display), but Edge and Internet Explorer do not display the Pirate flag unless it has either VS-15 or VS-16 (they display the Rainbow flag with or without VS-15 or VS-16). Only Chrome does not display the Rainbow flag if it has VS-15. The Rainbow and Pirate flags also display correctly on Microsoft Word 2016.
Display of Colour Flag Glyphs in Microsoft Word 2016
The colour glyphs are created using the High-Logic FontCreator font editor. The glyphs are not emoji-style (waving flag), but attempt to accurately reproduce the proportions and colours of the flags as a flat design. All flag glyphs have the same height, but have differing widths depending upon the flag proportions (1:1, 1:2, 2:3, and 3:5 being the most common proportions). Except for the flag of Nepal, all glyphs are square or rectangular in shape, with no flagpole. The glyphs do not have an added border line, so if displayed on a white background any flags with a white background or large sections of white (e.g. flags for Japan, Korea, Russia, and Zug) merge into the surrounding background. It is therefore best to display the flags on a background colour that is not normally used as a flag colour, such as light grey or beige.
Colour Flag Glyphs at 48 points in Firefox browser
If a particular software application supports the OpenType features used to substitute single glyphs for Regional Indicator sequences or flag emoji tag sequences, but it does not support the colour glyph format, then it will display fallback monochrome glyphs provided by the BabelStone Flags font. These monochrome glyphs are all in the form of a waving flag (with a flagpole on the left) with the two-letter ISO 3166-1 alpha-2 code on the flag. For flags corresponding to ISO 3166-2 subdivision codes the two- or three-letter code after the hyphen is placed under the flag.
Due to a bug in Chrome which displays the width of the colour glyphs as the width of the fallback monochrome glyph, the monochrome glyphs in BabelStone Flags have two dots on either side of the flag so that the monochrome glyph is exactly the same width as the corresponding colour glyph. The quality of the fallback glyphs is quite poor, and may be improved in the future.
Monochrome Fallback Glyphs for Country Flags in BabelPad
The tables below render each flag character in the BabelStone Flags font, either using the font installed on your local machine or using a WOFF font if the font is not installed on your local machine. Supported sequences are also listed at my Flags Test page.
|<1F1E6 1F1F6>||🇦🇶||Antarctica (AQ)|
|<1F1E6 1F1FA>||🇦🇺||Australia (AU)|
|<1F1E7 1F1F9>||🇧🇹||Bhutan (BT)|
|<1F1E8 1F1E6>||🇨🇦||Canada (CA)|
|<1F1E8 1F1ED>||🇨🇭||Switzerland (CH)|
|<1F1E8 1F1F3>||🇨🇳||China (CN)|
|<1F1E9 1F1EA>||🇩🇪||Germany (DE)|
|<1F1EA 1F1F8>||🇪🇸||Spain (ES)|
|<1F1EA 1F1FA>||🇪🇺||European Union (EU)|
|<1F1EB 1F1F7>||🇫🇷||France (FR)|
|<1F1EC 1F1E7>||🇬🇧||United Kingdom (GB)|
|<1F1EC 1F1EC>||🇬🇬||Guernsey (GG)|
|<1F1EC 1F1F1>||🇬🇱||Greenland (GL)|
|<1F1ED 1F1F0>||🇭🇰||Hong Kong (HK)|
|<1F1EE 1F1EA>||🇮🇪||Ireland (IE)|
|<1F1EE 1F1F2>||🇮🇲||Isle of Man (IM)|
|<1F1EE 1F1F3>||🇮🇳||India (IN)|
|<1F1EE 1F1F6>||🇮🇶||Iran (IQ)|
|<1F1EE 1F1F7>||🇮🇷||Iran (IR)|
|<1F1EE 1F1F9>||🇮🇹||Italy (IT)|
|<1F1EF 1F1EA>||🇯🇪||Jersey (JE)|
|<1F1EF 1F1F5>||🇯🇵||Japan (JP)|
|<1F1F0 1F1F5>||🇰🇵||North Korea (KP)|
|<1F1F0 1F1F7>||🇰🇷||South Korea (KR)|
|<1F1F2 1F1F3>||🇲🇳||Mongolia (MN)|
|<1F1F2 1F1F4>||🇲🇴||Macau (MO)|
|<1F1F3 1F1F5>||🇳🇵||Nepal (NP)|
|<1F1F3 1F1FF>||🇳🇿||New Zealand (NZ)|
|<1F1F7 1F1FA>||🇷🇺||Russia (RU)|
|<1F1F8 1F1FA>||🇸🇺||Soviet Union (SU)|
|<1F1F9 1F1FC>||🇹🇼||Taiwan (TW)|
|<1F1FA 1F1F3>||🇺🇳||United Nations (UN)|
|<1F1FA 1F1F8>||🇺🇸||United States of America (US)|
|<1F1FD 1F1F0>||🇽🇰||Kosovo (XK)|
|<1F1FF 1F1E6>||🇿🇦||South Africa (ZA)|
Codes marked with three stars (***) are unofficial codes that I have devised for places that do not have an ISO 3166-2 code.
|<1F3F4 E0063 E0061 E006E E0075 E007F>||🏴||Canada: Nunavut (CA-NU)|
|<1F3F4 E0063 E0061 E0071 E0063 E007F>||🏴||Canada: Quebec (CA-QC)|
|<1F3F4 E0063 E0068 E0066 E0072 E007F>||🏴||Switzerland: Fribourg (CH-FR)|
|<1F3F4 E0063 E0068 E006C E0075 E007F>||🏴||Switzerland: Luzern (CH-LU)|
|<1F3F4 E0063 E0068 E006E E0065 E007F>||🏴||Switzerland: Neuchâtel (CH-NE)|
|<1F3F4 E0063 E0068 E0073 E006F E007F>||🏴||Switzerland: Solothurn (CH-SO)|
|<1F3F4 E0063 E0068 E0073 E007A E007F>||🏴||Switzerland: Schwyz (CH-SZ)|
|<1F3F4 E0063 E0068 E0074 E0069 E007F>||🏴||Switzerland: Ticino (CH-TI)|
|<1F3F4 E0063 E0068 E0076 E0073 E007F>||🏴||Switzerland: Valais (CH-VS)|
|<1F3F4 E0063 E0068 E007A E0067 E007F>||🏴||Switzerland: Zug (CH-ZG)|
|<1F3F4 E0063 E0068 E007A E0068 E007F>||🏴||Switzerland: Zürich (CH-ZH)|
|<1F3F4 E0065 E0073 E0063 E0074 E007F>||🏴||Spain: Catalonia (ES-CT)|
|<1F3F4 E0065 E0073 E0070 E0076 E007F>||🏴||Spain: Basque Country (ES-PV)|
|<1F3F4 E0066 E0072 E0062 E0072 E0065 E007F>||🏴||France: Bretagne (FR-BRE)|
|<1F3F4 E0067 E0062 E0061 E0067 E0079 E007F>||🏴||United Kingdom: Isle of Anglesey (GB-AGY/GB-YNM)|
|<1F3F4 E0067 E0062 E0063 E006F E006E E007F>||🏴||United Kingdom: Cornwall (GB-CON)|
|<1F3F4 E0067 E0062 E0064 E0065 E0076 E007F>||🏴||United Kingdom: Devon (GB-DEV)|
|<1F3F4 E0067 E0062 E0064 E006F E0072 E007F>||🏴||United Kingdom: Dorset (GB-DOR)|
|<1F3F4 E0067 E0062 E0065 E006E E0067 E007F>||🏴||United Kingdom: England (GB-ENG)|
|<1F3F4 E0067 E0062 E0066 E006C E006E E007F>||🏴||United Kingdom: Flintshire (GB-FLN/GB-FFL)|
|<1F3F4 E0067 E0062 E006D E006F E006E E007F>||🏴||United Kingdom: Monmouthshire (GB-MON/GB-FYN)|
|<1F3F4 E0067 E0062 E006E E0062 E006C E007F>||🏴||United Kingdom: Northumberland (GB-NBL)|
|<1F3F4 E0067 E0062 E006E E0069 E0072 E007F>||🏴||United Kingdom: Northern Ireland (GB-NIR)|
|<1F3F4 E0067 E0062 E006F E0072 E006B E007F>||🏴||United Kingdom: Orkney Islands (GB-ORK)|
|<1F3F4 E0067 E0062 E0070 E0065 E006D E007F>||🏴||United Kingdom: Pembrokeshire (GB-PEM/GB-BNF)|
|<1F3F4 E0067 E0062 E0073 E0063 E0074 E007F>||🏴||United Kingdom: Scotland (GB-SCT)|
|<1F3F4 E0067 E0062 E0073 E0072 E0079 E007F>||🏴||United Kingdom: Surrey (GB-SRY)|
|<1F3F4 E0067 E0062 E0076 E0067 E006C E007F>||🏴||United Kingdom: The Vale of Glamorgan (GB-VGL/GB-BMG)|
|<1F3F4 E0067 E0062 E0077 E006C E0073 E007F>||🏴||United Kingdom: Wales (GB-WLS/GB-CYM)|
|<1F3F4 E0067 E0062 E0078 E0063 E0061 E007F>||🏴||United Kingdom: Caithness (GB-XCA***)|
|<1F3F4 E0067 E0062 E0078 E0063 E0072 E007F>||🏴||United Kingdom: Caernarfonshire (GB-XCR***)|
|<1F3F4 E0067 E0062 E0078 E006B E0064 E007F>||🏴||United Kingdom: Kirkcudbrightshire (GB-XKD***)|
|<1F3F4 E0067 E0062 E0078 E006D E0065 E007F>||🏴||United Kingdom: Merionethshire (GB-XME***)|
|<1F3F4 E0067 E0062 E007A E0065 E0074 E007F>||🏴||United Kingdom: Shetland Islands (GB-ZET)|
|<1F3F4 E0075 E0073 E0061 E006B E007F>||🏴||United States: Alaska (US-AK)|
|<1F3F4 E0069 E0065 E0063 E007F>||🏴||Ireland: Connacht (IE-C)|
|<1F3F4 E0069 E0065 E006C E007F>||🏴||Ireland: Leinster / Laighin (IE-L)|
|<1F3F4 E0069 E0065 E006D E007F>||🏴||Ireland: Munster / An Mhumhain (IE-M)|
|<1F3F4 E0069 E0065 E0075 E007F>||🏴||Ireland: Ulster / Ulaidh (IE-U)|
|<1F3F4 E0075 E0073 E0063 E0061 E007F>||🏴||United States: California (US-CA)|
|<1F3F4 E0075 E0073 E0068 E0069 E007F>||🏴||United States: Hawaii (US-HI)|
|<1F3F4 E0075 E0073 E0074 E0078 E007F>||🏴||United States: Texas (US-TX)|
|<1F3F3 FE0F 200D 1F308>||🏳️🌈||Rainbow Flag|
|<1F3F4 200D 2620 FE0F>||🏴☠️||Pirate Flag|
|Latin <latn>||Default <dflt>||Glyph Composition Decomposition <ccmp>||Substitution colour glyphs for flag sequences|
|BabelStone Flags||1.00||2014-04-03||Experimental test font (several test versions during 2014–2016).|
|BabelStone Flags||2.00||2017-04-01||First formal release, supporting 28 Regional Indicator sequences, 27 Flag Emoji tag sequences, rainbow flag, and pirate flag.|
|BabelStone Flags||2.01||2017-04-05||Added 7 Regional Indicator sequences and 15 Flag Emoji tag sequences.|
BabelStone Flags is licensed under the SIL Open Font License 1.1, which means you are free to use it for personal or commercial purposes, and to redistribute it by itself or as part of a free or commercial software package, just as long as you do not sell the font on its own. The license also allows you to modify the font in any way you like, as long as the modified font does not use "BabelStone" in its name. Please read the license for details.
You may download the WOFF version of the font, and host it on your server if you wish, but you cannot use the WOFF file at babelstone.co.uk on other websites.