diff --git a/Makefile b/Makefile
index 64974a823..dc450eb53 100644
--- a/Makefile
+++ b/Makefile
@@ -44,7 +44,7 @@ QUANTIZED_DIR := $(BUILD_DIR)/quantized_pngs
 COMPRESSED_DIR := $(BUILD_DIR)/compressed_pngs
 
 LIMITED_FLAGS = CN DE ES FR GB IT JP KR RU US
-SELECTED_FLAGS = AD AE AF AG AI AL AM AO AR AS AT AU AW AX AZ \
+SELECTED_FLAGS = AC AD AE AF AG AI AL AM AO AQ AR AS AT AU AW AX AZ \
 	BA BB BD BE BF BG BH BI BJ BM BN BO BR BS BT BW BY BZ \
 	CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ \
 	DE DJ DK DM DO DZ \
@@ -52,7 +52,7 @@ SELECTED_FLAGS = AD AE AF AG AI AL AM AO AR AS AT AU AW AX AZ \
 	FI FJ FM FO FR \
 	GA GB GD GE GG GH GI GL GM GN GQ GR GT GU GW GY \
 	HK HN HR HT HU \
-	ID IE IL IM IN IO IQ IR IS IT \
+	IC ID IE IL IM IN IO IQ IR IS IT \
 	JE JM JO JP \
 	KE KG KH KI KM KN KP KR KW KY KZ \
 	LA LB LC LI LK LR LS LT LU LV LY \
@@ -62,8 +62,8 @@ SELECTED_FLAGS = AD AE AF AG AI AL AM AO AR AS AT AU AW AX AZ \
 	PA PE PF PG PH PK PL PN PR PS PT PW PY \
 	QA \
 	RO RS RU RW \
-	SA SB SC SD SE SG SI SK SL SM SN SO SR SS ST SV SX SY SZ \
-	TC TD TG TH TJ TK TL TM TN TO TR TT TV TW TZ \
+	SA SB SC SD SE SG SH SI SK SL SM SN SO SR SS ST SV SX SY SZ \
+	TA TC TD TG TH TJ TK TL TM TN TO TR TT TV TW TZ \
 	UA UG US UY UZ \
 	VA VC VE VG VI VN VU \
 	WS \
diff --git a/third_party/color_emoji/add_glyphs.py b/third_party/color_emoji/add_glyphs.py
index 0d78a7d2b..2cba6a809 100644
--- a/third_party/color_emoji/add_glyphs.py
+++ b/third_party/color_emoji/add_glyphs.py
@@ -1,10 +1,13 @@
 #!/usr/bin/env python
 
-import collections, glob, os, sys
+import collections, glob, os, re, sys
 from fontTools import ttx
 from fontTools.ttLib.tables import otTables
 from png import PNG
 
+# TODO: replace with actual name once we have a glyph.
+MISSING_FLAG_GLYPH_NAME = "u2764"
+
 sys.path.append(
     os.path.join(os.path.dirname(__file__), os.pardir, os.pardir))
 import add_emoji_gsub
@@ -78,6 +81,15 @@ EXTRA_SEQUENCES = {
     'u1F48F': '1F469_200D_2764_FE0F_200D_1F48B_200D_1F468', # WHKM
 }
 
+# Flag aliases - from: to
+FLAG_ALIASES = {
+    'BV': 'NO',
+    'SJ': 'NO',
+    'UM': 'FR',
+    'HM': 'AU',
+    'UM': 'US',
+}
+
 if len (sys.argv) < 4:
 	print >>sys.stderr, """
 Usage:
@@ -180,6 +192,49 @@ for n in EXTRA_SEQUENCES:
         else:
                 print 'extras: no glyph for %s' % n
 
+# Add missing regional indicator sequences and flag aliases
+# if we support any.
+regional_names = frozenset('u%X' % cp for cp in range(0x1F1E6, 0x1F200))
+
+def _is_flag_sequence(t):
+  return len(t) == 2 and t[0] in regional_names and t[1] in regional_names
+
+have_flags = False
+for k in ligatures:
+  if _is_flag_sequence(k):
+    have_flags = True
+    break
+
+# sigh, too many separate files with the same code.
+# copied from add_emoji_gsub.
+def _reg_indicator(letter):
+  assert 'A' <= letter <= 'Z'
+  return 0x1F1E6 + ord(letter) - ord('A')
+
+def _reg_lig_sequence(flag_name):
+  """Returns a tuple of strings naming the codepoints that form the ligature."""
+  assert len(flag_name) == 2
+  return tuple('u%X' % _reg_indicator(cp) for cp in flag_name)
+
+def _reg_lig_name(flag_name):
+  """Returns a glyph name for the flag name."""
+  return '_'.join(_reg_lig_sequence(flag_name))
+
+if have_flags:
+  print 'Adding flag aliases.'
+  for flag_from, flag_to in FLAG_ALIASES.iteritems():
+    seq = _reg_lig_sequence(flag_from)
+    name = _reg_lig_name(flag_to)
+    add_lig_sequence(ligatures, seq, name)
+
+  print 'Adding unused flag sequences'
+  # every flag sequence we don't have gets the missing flag glyph
+  for first in regional_names:
+    for second in regional_names:
+      seq = (first, second)
+      if seq not in ligatures:
+        add_lig_sequence(ligatures, seq, MISSING_FLAG_GLYPH_NAME)
+
 
 keyed_ligatures = collections.defaultdict(list)
 for k, v in ligatures.iteritems():