diff --git a/Makefile b/Makefile
index 2b0b35023..119383cc4 100644
--- a/Makefile
+++ b/Makefile
@@ -213,7 +213,7 @@ clean:
 	rm -rf $(BUILD_DIR)
 
 .SECONDARY: $(EMOJI_FILES) $(FLAG_FILES) $(RESIZED_FLAG_FILES) $(RENAMED_FLAG_FILES) \
-  $(ALL_QUANTIZED_FILES) $(ALL_COMPRESSED_FILES)
+  $(ALL_QUANTIZED_FILES) $(ALL_COMPRESSED_FILES) NotoColorEmoji.tmpl.ttx
 
 .PHONY:	clean flags emoji renamed_flags quantized compressed check_compress_tool
 
diff --git a/NotoColorEmoji.tmpl.ttx.tmpl b/NotoColorEmoji.tmpl.ttx.tmpl
index e63c871d3..b4585df19 100644
--- a/NotoColorEmoji.tmpl.ttx.tmpl
+++ b/NotoColorEmoji.tmpl.ttx.tmpl
@@ -8,6 +8,45 @@
     <GlyphID id="2" name="nonmarkingreturn"/>
     <GlyphID id="3" name="space"/>
     <GlyphID id="4" name="u200D"/>
+    <GlyphID id="5" name="uE0030"/>
+    <GlyphID id="6" name="uE0031"/>
+    <GlyphID id="7" name="uE0032"/>
+    <GlyphID id="8" name="uE0033"/>
+    <GlyphID id="9" name="uE0034"/>
+    <GlyphID id="10" name="uE0035"/>
+    <GlyphID id="11" name="uE0036"/>
+    <GlyphID id="12" name="uE0037"/>
+    <GlyphID id="13" name="uE0038"/>
+    <GlyphID id="14" name="uE0039"/>
+    <GlyphID id="15" name="uE0061"/>
+    <GlyphID id="16" name="uE0062"/>
+    <GlyphID id="17" name="uE0063"/>
+    <GlyphID id="18" name="uE0064"/>
+    <GlyphID id="19" name="uE0065"/>
+    <GlyphID id="20" name="uE0066"/>
+    <GlyphID id="21" name="uE0067"/>
+    <GlyphID id="22" name="uE0068"/>
+    <GlyphID id="23" name="uE0069"/>
+    <GlyphID id="24" name="uE006A"/>
+    <GlyphID id="25" name="uE006B"/>
+    <GlyphID id="26" name="uE006C"/>
+    <GlyphID id="27" name="uE006D"/>
+    <GlyphID id="28" name="uE006E"/>
+    <GlyphID id="29" name="uE006F"/>
+    <GlyphID id="30" name="uE0070"/>
+    <GlyphID id="31" name="uE0071"/>
+    <GlyphID id="32" name="uE0072"/>
+    <GlyphID id="33" name="uE0073"/>
+    <GlyphID id="34" name="uE0074"/>
+    <GlyphID id="35" name="uE0075"/>
+    <GlyphID id="36" name="uE0076"/>
+    <GlyphID id="37" name="uE0077"/>
+    <GlyphID id="38" name="uE0078"/>
+    <GlyphID id="39" name="uE0079"/>
+    <GlyphID id="40" name="uE007A"/>
+    <GlyphID id="41" name="uE007F"/>
+    <GlyphID id="42" name="u1F3F4"/>
+    <GlyphID id="43" name="uFE82B"/>
   </GlyphOrder>
 
   <head>
@@ -127,6 +166,45 @@
     <mtx name="nonmarkingreturn" width="2550" lsb="0"/>
     <mtx name="space" width="2550" lsb="0"/>
     <mtx name="u200D" width="0" lsb="0"/>
+    <mtx name="uE0030" width="0" lsb="0"/>
+    <mtx name="uE0031" width="0" lsb="0"/>
+    <mtx name="uE0032" width="0" lsb="0"/>
+    <mtx name="uE0033" width="0" lsb="0"/>
+    <mtx name="uE0034" width="0" lsb="0"/>
+    <mtx name="uE0035" width="0" lsb="0"/>
+    <mtx name="uE0036" width="0" lsb="0"/>
+    <mtx name="uE0037" width="0" lsb="0"/>
+    <mtx name="uE0038" width="0" lsb="0"/>
+    <mtx name="uE0039" width="0" lsb="0"/>
+    <mtx name="uE0061" width="0" lsb="0"/>
+    <mtx name="uE0062" width="0" lsb="0"/>
+    <mtx name="uE0063" width="0" lsb="0"/>
+    <mtx name="uE0064" width="0" lsb="0"/>
+    <mtx name="uE0065" width="0" lsb="0"/>
+    <mtx name="uE0066" width="0" lsb="0"/>
+    <mtx name="uE0067" width="0" lsb="0"/>
+    <mtx name="uE0068" width="0" lsb="0"/>
+    <mtx name="uE0069" width="0" lsb="0"/>
+    <mtx name="uE006A" width="0" lsb="0"/>
+    <mtx name="uE006B" width="0" lsb="0"/>
+    <mtx name="uE006C" width="0" lsb="0"/>
+    <mtx name="uE006D" width="0" lsb="0"/>
+    <mtx name="uE006E" width="0" lsb="0"/>
+    <mtx name="uE006F" width="0" lsb="0"/>
+    <mtx name="uE0070" width="0" lsb="0"/>
+    <mtx name="uE0071" width="0" lsb="0"/>
+    <mtx name="uE0072" width="0" lsb="0"/>
+    <mtx name="uE0073" width="0" lsb="0"/>
+    <mtx name="uE0074" width="0" lsb="0"/>
+    <mtx name="uE0075" width="0" lsb="0"/>
+    <mtx name="uE0076" width="0" lsb="0"/>
+    <mtx name="uE0077" width="0" lsb="0"/>
+    <mtx name="uE0078" width="0" lsb="0"/>
+    <mtx name="uE0079" width="0" lsb="0"/>
+    <mtx name="uE007A" width="0" lsb="0"/>
+    <mtx name="uE007F" width="0" lsb="0"/>
+    <mtx name="u1F3F4" width="0" lsb="0"/>
+    <mtx name="uFE82B" width="0" lsb="0"/>
   </hmtx>
 
   <cmap>
@@ -136,6 +214,45 @@
       <map code="0xd" name="nonmarkingreturn"/>
       <map code="0x20" name="space"/>
       <map code="0x200d" name="u200D"/>
+      <map code="0xE0030" name="uE0030"/>
+      <map code="0xE0031" name="uE0031"/>
+      <map code="0xE0032" name="uE0032"/>
+      <map code="0xE0033" name="uE0033"/>
+      <map code="0xE0034" name="uE0034"/>
+      <map code="0xE0035" name="uE0035"/>
+      <map code="0xE0036" name="uE0036"/>
+      <map code="0xE0037" name="uE0037"/>
+      <map code="0xE0038" name="uE0038"/>
+      <map code="0xE0039" name="uE0039"/>
+      <map code="0xE0061" name="uE0061"/>
+      <map code="0xE0062" name="uE0062"/>
+      <map code="0xE0063" name="uE0063"/>
+      <map code="0xE0064" name="uE0064"/>
+      <map code="0xE0065" name="uE0065"/>
+      <map code="0xE0066" name="uE0066"/>
+      <map code="0xE0067" name="uE0067"/>
+      <map code="0xE0068" name="uE0068"/>
+      <map code="0xE0069" name="uE0069"/>
+      <map code="0xE006A" name="uE006A"/>
+      <map code="0xE006B" name="uE006B"/>
+      <map code="0xE006C" name="uE006C"/>
+      <map code="0xE006D" name="uE006D"/>
+      <map code="0xE006E" name="uE006E"/>
+      <map code="0xE006F" name="uE006F"/>
+      <map code="0xE0070" name="uE0070"/>
+      <map code="0xE0071" name="uE0071"/>
+      <map code="0xE0072" name="uE0072"/>
+      <map code="0xE0073" name="uE0073"/>
+      <map code="0xE0074" name="uE0074"/>
+      <map code="0xE0075" name="uE0075"/>
+      <map code="0xE0076" name="uE0076"/>
+      <map code="0xE0077" name="uE0077"/>
+      <map code="0xE0078" name="uE0078"/>
+      <map code="0xE0079" name="uE0079"/>
+      <map code="0xE007A" name="uE007A"/>
+      <map code="0xE007F" name="uE007F"/>
+      <map code="0x1F3F4" name="u1F3F4"/>
+      <map code="0xFE82B" name="uFE82B"/>
     </cmap_format_12>
   </cmap>
 
@@ -199,4 +316,203 @@
     <maxMemType1 value="0"/>
   </post>
 
+  <GSUB>
+    <Version value="0x00010000"/>
+    <ScriptList>
+      <!-- ScriptCount=1 -->
+      <ScriptRecord index="0">
+        <ScriptTag value="DFLT"/>
+        <Script>
+          <DefaultLangSys>
+            <ReqFeatureIndex value="65535"/>
+            <!-- FeatureCount=1 -->
+            <FeatureIndex index="0" value="0"/>
+          </DefaultLangSys>
+          <!-- LangSysCount=0 -->
+        </Script>
+      </ScriptRecord>
+    </ScriptList>
+    <FeatureList>
+      <!-- FeatureCount=1 -->
+      <FeatureRecord index="0">
+        <FeatureTag value="ccmp"/>
+        <Feature>
+          <!-- LookupCount=1 -->
+          <LookupListIndex index="0" value="0"/>
+          <LookupListIndex index="1" value="2"/>
+          <LookupListIndex index="2" value="3"/>
+        </Feature>
+      </FeatureRecord>
+    </FeatureList>
+    <LookupList>
+      <!-- LookupCount=1 -->
+      <Lookup index="0">
+        <LookupType value="4"/>
+        <!-- LookupType=4 -->
+        <LookupFlag value="0"/>
+        <!-- SubTableCount=1 -->
+        <LigatureSubst index="0" Format="1">
+        </LigatureSubst>
+      </Lookup>
+      <Lookup index="1">
+        <LookupType value="2"/>
+        <LookupFlag value="0"/>
+        <!-- SubTableCount=1 -->
+        <MultipleSubst index="0" Format="1">
+          <Substitution in="uE0030" out=""/>
+          <Substitution in="uE0031" out=""/>
+          <Substitution in="uE0032" out=""/>
+          <Substitution in="uE0033" out=""/>
+          <Substitution in="uE0034" out=""/>
+          <Substitution in="uE0035" out=""/>
+          <Substitution in="uE0036" out=""/>
+          <Substitution in="uE0037" out=""/>
+          <Substitution in="uE0038" out=""/>
+          <Substitution in="uE0039" out=""/>
+          <Substitution in="uE0061" out=""/>
+          <Substitution in="uE0062" out=""/>
+          <Substitution in="uE0063" out=""/>
+          <Substitution in="uE0064" out=""/>
+          <Substitution in="uE0065" out=""/>
+          <Substitution in="uE0066" out=""/>
+          <Substitution in="uE0067" out=""/>
+          <Substitution in="uE0068" out=""/>
+          <Substitution in="uE0069" out=""/>
+          <Substitution in="uE006A" out=""/>
+          <Substitution in="uE006B" out=""/>
+          <Substitution in="uE006C" out=""/>
+          <Substitution in="uE006D" out=""/>
+          <Substitution in="uE006E" out=""/>
+          <Substitution in="uE006F" out=""/>
+          <Substitution in="uE0070" out=""/>
+          <Substitution in="uE0071" out=""/>
+          <Substitution in="uE0072" out=""/>
+          <Substitution in="uE0073" out=""/>
+          <Substitution in="uE0074" out=""/>
+          <Substitution in="uE0075" out=""/>
+          <Substitution in="uE0076" out=""/>
+          <Substitution in="uE0077" out=""/>
+          <Substitution in="uE0078" out=""/>
+          <Substitution in="uE0079" out=""/>
+          <Substitution in="uE007A" out=""/>
+        </MultipleSubst>
+      </Lookup>
+      <Lookup index="2">
+        <LookupType value="6"/>
+        <!-- LookupType=6 -->
+        <LookupFlag value="0"/>
+        <!-- SubTableCount=1 -->
+        <ChainContextSubst index="0" Format="2">
+          <Coverage Format="2">
+            <Glyph value="uE0030"/>
+            <Glyph value="uE0031"/>
+            <Glyph value="uE0032"/>
+            <Glyph value="uE0033"/>
+            <Glyph value="uE0034"/>
+            <Glyph value="uE0035"/>
+            <Glyph value="uE0036"/>
+            <Glyph value="uE0037"/>
+            <Glyph value="uE0038"/>
+            <Glyph value="uE0039"/>
+            <Glyph value="uE0061"/>
+            <Glyph value="uE0062"/>
+            <Glyph value="uE0063"/>
+            <Glyph value="uE0064"/>
+            <Glyph value="uE0065"/>
+            <Glyph value="uE0066"/>
+            <Glyph value="uE0067"/>
+            <Glyph value="uE0068"/>
+            <Glyph value="uE0069"/>
+            <Glyph value="uE006A"/>
+            <Glyph value="uE006B"/>
+            <Glyph value="uE006C"/>
+            <Glyph value="uE006D"/>
+            <Glyph value="uE006E"/>
+            <Glyph value="uE006F"/>
+            <Glyph value="uE0070"/>
+            <Glyph value="uE0071"/>
+            <Glyph value="uE0072"/>
+            <Glyph value="uE0073"/>
+            <Glyph value="uE0074"/>
+            <Glyph value="uE0075"/>
+            <Glyph value="uE0076"/>
+            <Glyph value="uE0077"/>
+            <Glyph value="uE0078"/>
+            <Glyph value="uE0079"/>
+            <Glyph value="uE007A"/>
+          </Coverage>
+          <BacktrackClassDef Format="1">
+            <ClassDef glyph="u1F3F4" class="1"/>
+          </BacktrackClassDef>
+          <InputClassDef Format="2">
+            <ClassDef glyph="uE0030" class="2"/>
+            <ClassDef glyph="uE0031" class="2"/>
+            <ClassDef glyph="uE0032" class="2"/>
+            <ClassDef glyph="uE0033" class="2"/>
+            <ClassDef glyph="uE0034" class="2"/>
+            <ClassDef glyph="uE0035" class="2"/>
+            <ClassDef glyph="uE0036" class="2"/>
+            <ClassDef glyph="uE0037" class="2"/>
+            <ClassDef glyph="uE0038" class="2"/>
+            <ClassDef glyph="uE0039" class="2"/>
+            <ClassDef glyph="uE0061" class="2"/>
+            <ClassDef glyph="uE0062" class="2"/>
+            <ClassDef glyph="uE0063" class="2"/>
+            <ClassDef glyph="uE0064" class="2"/>
+            <ClassDef glyph="uE0065" class="2"/>
+            <ClassDef glyph="uE0066" class="2"/>
+            <ClassDef glyph="uE0067" class="2"/>
+            <ClassDef glyph="uE0068" class="2"/>
+            <ClassDef glyph="uE0069" class="2"/>
+            <ClassDef glyph="uE006A" class="2"/>
+            <ClassDef glyph="uE006B" class="2"/>
+            <ClassDef glyph="uE006C" class="2"/>
+            <ClassDef glyph="uE006D" class="2"/>
+            <ClassDef glyph="uE006E" class="2"/>
+            <ClassDef glyph="uE006F" class="2"/>
+            <ClassDef glyph="uE0070" class="2"/>
+            <ClassDef glyph="uE0071" class="2"/>
+            <ClassDef glyph="uE0072" class="2"/>
+            <ClassDef glyph="uE0073" class="2"/>
+            <ClassDef glyph="uE0074" class="2"/>
+            <ClassDef glyph="uE0075" class="2"/>
+            <ClassDef glyph="uE0076" class="2"/>
+            <ClassDef glyph="uE0077" class="2"/>
+            <ClassDef glyph="uE0078" class="2"/>
+            <ClassDef glyph="uE0079" class="2"/>
+            <ClassDef glyph="uE007A" class="2"/>
+          </InputClassDef>
+          <LookAheadClassDef Format="2">
+          </LookAheadClassDef>
+          <!-- ChainSubClassSetCount=3 -->
+          <ChainSubClassSet index="0" empty="1"/>
+          <ChainSubClassSet index="1" empty="1"/>
+          <ChainSubClassSet index="2">
+            <!-- ChainSubClassRuleCount=1 -->
+            <ChainSubClassRule index="0">
+              <!-- BacktrackGlyphCount=1 -->
+              <Backtrack index="0" value="1"/>
+              <!-- InputGlyphCount=1 -->
+              <!-- LookAheadGlyphCount=0 -->
+              <!-- SubstCount=2 -->
+              <SubstLookupRecord index="0">
+                <SequenceIndex value="0"/>
+                <LookupListIndex value="1"/>
+              </SubstLookupRecord>
+            </ChainSubClassRule>
+          </ChainSubClassSet>
+        </ChainContextSubst>
+      </Lookup>
+      <Lookup index="3">
+        <LookupType value="4"/>
+        <LookupFlag value="0"/>
+        <LigatureSubst index="0" Format="1">
+          <LigatureSet glyph="u1F3F4">
+            <Ligature components="uE007F" glyph="uFE82B"/>
+          </LigatureSet>
+        </LigatureSubst>
+      </Lookup>
+    </LookupList>
+  </GSUB>
+
 </ttFont>
diff --git a/third_party/color_emoji/add_glyphs.py b/third_party/color_emoji/add_glyphs.py
index c5bf6919e..f5f29080c 100644
--- a/third_party/color_emoji/add_glyphs.py
+++ b/third_party/color_emoji/add_glyphs.py
@@ -59,9 +59,18 @@ def add_ligature (font, seq, name):
 		font['GSUB'] = add_emoji_gsub.create_simple_gsub([lookup])
 	else:
 		lookup = font['GSUB'].table.LookupList.Lookup[0]
-		assert lookup.LookupType == 4
+		# assert lookup.LookupType == 4
 		assert lookup.LookupFlag == 0
 
+                # importXML doesn't fully init GSUB structures, so help it out
+                if not hasattr(lookup, 'LookupType'):
+                    st = lookup.SubTable[0]
+                    assert st.LookupType == 4
+                    setattr(lookup, 'LookupType', 4)
+
+                    if not hasattr(st, 'ligatures'):
+                        setattr(st, 'ligatures', {})
+
 	ligatures = lookup.SubTable[0].ligatures
 
 	lig = otTables.Ligature()