Merge "Emoji Compat 2019"
diff --git a/emoji/NotoColorEmoji.ttf b/emoji/NotoColorEmoji.ttf
index b7602e1..3c2688f 100644
--- a/emoji/NotoColorEmoji.ttf
+++ b/emoji/NotoColorEmoji.ttf
Binary files differ
diff --git a/fonts.mk b/fonts.mk
index fea0aef..1cccd97 100644
--- a/fonts.mk
+++ b/fonts.mk
@@ -25,24 +25,27 @@
     NotoSansAdlam-Regular.ttf \
     NotoSansAhom-Regular.otf \
     NotoSansAnatolianHieroglyphs-Regular.otf \
-    NotoSansArmenian-Bold.ttf \
-    NotoSansArmenian-Regular.ttf \
+    NotoSansArmenian-Bold.otf \
+    NotoSansArmenian-Medium.otf \
+    NotoSansArmenian-Regular.otf \
     NotoSansAvestan-Regular.ttf \
     NotoSansBalinese-Regular.ttf \
     NotoSansBamum-Regular.ttf \
     NotoSansBassaVah-Regular.otf \
     NotoSansBatak-Regular.ttf \
-    NotoSansBengali-Bold.ttf \
-    NotoSansBengali-Regular.ttf \
-    NotoSansBengaliUI-Bold.ttf \
-    NotoSansBengaliUI-Regular.ttf \
+    NotoSansBengali-Bold.otf \
+    NotoSansBengali-Medium.otf \
+    NotoSansBengali-Regular.otf \
+    NotoSansBengaliUI-Bold.otf \
+    NotoSansBengaliUI-Medium.otf \
+    NotoSansBengaliUI-Regular.otf \
     NotoSansBhaiksuki-Regular.otf \
     NotoSansBrahmi-Regular.ttf \
     NotoSansBuginese-Regular.ttf \
     NotoSansBuhid-Regular.ttf \
     NotoSansCanadianAboriginal-Regular.ttf \
     NotoSansCarian-Regular.ttf \
-    NotoSansChakma-Regular.ttf \
+    NotoSansChakma-Regular.otf \
     NotoSansCham-Bold.ttf \
     NotoSansCham-Regular.ttf \
     NotoSansCherokee-Regular.ttf \
@@ -51,16 +54,19 @@
     NotoSansCuneiform-Regular.ttf \
     NotoSansCypriot-Regular.ttf \
     NotoSansDeseret-Regular.ttf \
-    NotoSansDevanagari-Bold.ttf \
-    NotoSansDevanagari-Regular.ttf \
-    NotoSansDevanagariUI-Bold.ttf \
-    NotoSansDevanagariUI-Regular.ttf \
+    NotoSansDevanagari-Bold.otf \
+    NotoSansDevanagari-Medium.otf \
+    NotoSansDevanagari-Regular.otf \
+    NotoSansDevanagariUI-Bold.otf \
+    NotoSansDevanagariUI-Medium.otf \
+    NotoSansDevanagariUI-Regular.otf \
     NotoSansEgyptianHieroglyphs-Regular.ttf \
     NotoSansElbasan-Regular.otf \
     NotoSansEthiopic-Bold.ttf \
     NotoSansEthiopic-Regular.ttf \
-    NotoSansGeorgian-Bold.ttf \
-    NotoSansGeorgian-Regular.ttf \
+    NotoSansGeorgian-Bold.otf \
+    NotoSansGeorgian-Medium.otf \
+    NotoSansGeorgian-Regular.otf \
     NotoSansGlagolitic-Regular.ttf \
     NotoSansGothic-Regular.ttf \
     NotoSansGujarati-Bold.ttf \
@@ -100,10 +106,12 @@
     NotoSansLisu-Regular.ttf \
     NotoSansLycian-Regular.ttf \
     NotoSansLydian-Regular.ttf \
-    NotoSansMalayalam-Bold.ttf \
-    NotoSansMalayalam-Regular.ttf \
-    NotoSansMalayalamUI-Bold.ttf \
-    NotoSansMalayalamUI-Regular.ttf \
+    NotoSansMalayalam-Bold.otf \
+    NotoSansMalayalam-Medium.otf \
+    NotoSansMalayalam-Regular.otf \
+    NotoSansMalayalamUI-Bold.otf \
+    NotoSansMalayalamUI-Medium.otf \
+    NotoSansMalayalamUI-Regular.otf \
     NotoSansMandaic-Regular.ttf \
     NotoSansManichaean-Regular.otf \
     NotoSansMarchen-Regular.otf \
@@ -113,10 +121,10 @@
     NotoSansMongolian-Regular.ttf \
     NotoSansMro-Regular.otf \
     NotoSansMultani-Regular.otf \
-    NotoSansMyanmar-Bold.ttf \
-    NotoSansMyanmar-Regular.ttf \
-    NotoSansMyanmarUI-Bold.ttf \
-    NotoSansMyanmarUI-Regular.ttf \
+    NotoSansMyanmar-Bold-ZawDecode.ttf \
+    NotoSansMyanmar-Regular-ZawDecode.ttf \
+    NotoSansMyanmarUI-Bold-ZawDecode.ttf \
+    NotoSansMyanmarUI-Regular-ZawDecode.ttf \
     NotoSansNabataean-Regular.otf \
     NotoSansNewa-Regular.otf \
     NotoSansNewTaiLue-Regular.ttf \
@@ -146,9 +154,11 @@
     NotoSansSaurashtra-Regular.ttf \
     NotoSansSharada-Regular.otf \
     NotoSansShavian-Regular.ttf \
-    NotoSansSinhala-Bold.ttf \
-    NotoSansSinhala-Regular.ttf \
+    NotoSansSinhala-Bold.otf \
+    NotoSansSinhala-Medium.otf \
+    NotoSansSinhala-Regular.otf \
     NotoSansSinhalaUI-Bold.otf \
+    NotoSansSinhalaUI-Medium.otf \
     NotoSansSinhalaUI-Regular.otf \
     NotoSansSoraSompeng-Regular.otf \
     NotoSansSundanese-Regular.ttf \
@@ -163,10 +173,12 @@
     NotoSansTaiLe-Regular.ttf \
     NotoSansTaiTham-Regular.ttf \
     NotoSansTaiViet-Regular.ttf \
-    NotoSansTamil-Bold.ttf \
-    NotoSansTamil-Regular.ttf \
-    NotoSansTamilUI-Bold.ttf \
-    NotoSansTamilUI-Regular.ttf \
+    NotoSansTamil-Bold.otf \
+    NotoSansTamil-Medium.otf \
+    NotoSansTamil-Regular.otf \
+    NotoSansTamilUI-Bold.otf \
+    NotoSansTamilUI-Medium.otf \
+    NotoSansTamilUI-Regular.otf \
     NotoSansTelugu-Bold.ttf \
     NotoSansTelugu-Regular.ttf \
     NotoSansTeluguUI-Bold.ttf \
@@ -187,8 +199,8 @@
     NotoSerif-BoldItalic.ttf \
     NotoSerif-Italic.ttf \
     NotoSerif-Regular.ttf \
-    NotoSerifArmenian-Bold.ttf \
-    NotoSerifArmenian-Regular.ttf \
+    NotoSerifArmenian-Bold.otf \
+    NotoSerifArmenian-Regular.otf \
     NotoSerifBengali-Bold.ttf \
     NotoSerifBengali-Regular.ttf \
     NotoSerifCJK-Regular.ttc \
@@ -196,8 +208,8 @@
     NotoSerifDevanagari-Regular.ttf \
     NotoSerifEthiopic-Bold.otf \
     NotoSerifEthiopic-Regular.otf \
-    NotoSerifGeorgian-Bold.ttf \
-    NotoSerifGeorgian-Regular.ttf \
+    NotoSerifGeorgian-Bold.otf \
+    NotoSerifGeorgian-Regular.otf \
     NotoSerifGujarati-Bold.ttf \
     NotoSerifGujarati-Regular.ttf \
     NotoSerifGurmukhi-Bold.otf \
@@ -216,8 +228,8 @@
     NotoSerifMyanmar-Regular.otf \
     NotoSerifSinhala-Bold.otf \
     NotoSerifSinhala-Regular.otf \
-    NotoSerifTamil-Bold.ttf \
-    NotoSerifTamil-Regular.ttf \
+    NotoSerifTamil-Bold.otf \
+    NotoSerifTamil-Regular.otf \
     NotoSerifTelugu-Bold.ttf \
     NotoSerifTelugu-Regular.ttf \
     NotoSerifThai-Bold.ttf \
diff --git a/other/Android.bp b/other/Android.bp
index 1b3a7d8..3a790e3 100644
--- a/other/Android.bp
+++ b/other/Android.bp
@@ -73,23 +73,33 @@
 }
 
 prebuilt_font {
-    name: "NotoSansBengali-Bold.ttf",
-    src: "NotoSansBengali-Bold.ttf",
+    name: "NotoSansBengali-Bold.otf",
+    src: "NotoSansBengali-Bold.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansBengali-Regular.ttf",
-    src: "NotoSansBengali-Regular.ttf",
+    name: "NotoSansBengali-Medium.otf",
+    src: "NotoSansBengali-Medium.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansBengaliUI-Bold.ttf",
-    src: "NotoSansBengaliUI-Bold.ttf",
+    name: "NotoSansBengali-Regular.otf",
+    src: "NotoSansBengali-Regular.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansBengaliUI-Regular.ttf",
-    src: "NotoSansBengaliUI-Regular.ttf",
+    name: "NotoSansBengaliUI-Bold.otf",
+    src: "NotoSansBengaliUI-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansBengaliUI-Medium.otf",
+    src: "NotoSansBengaliUI-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansBengaliUI-Regular.otf",
+    src: "NotoSansBengaliUI-Regular.otf",
 }
 
 prebuilt_font {
@@ -123,8 +133,8 @@
 }
 
 prebuilt_font {
-    name: "NotoSansChakma-Regular.ttf",
-    src: "NotoSansChakma-Regular.ttf",
+    name: "NotoSansChakma-Regular.otf",
+    src: "NotoSansChakma-Regular.otf",
 }
 
 prebuilt_font {
@@ -363,23 +373,33 @@
 }
 
 prebuilt_font {
-    name: "NotoSansMalayalam-Bold.ttf",
-    src: "NotoSansMalayalam-Bold.ttf",
+    name: "NotoSansMalayalam-Bold.otf",
+    src: "NotoSansMalayalam-Bold.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansMalayalam-Regular.ttf",
-    src: "NotoSansMalayalam-Regular.ttf",
+    name: "NotoSansMalayalam-Medium.otf",
+    src: "NotoSansMalayalam-Medium.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansMalayalamUI-Bold.ttf",
-    src: "NotoSansMalayalamUI-Bold.ttf",
+    name: "NotoSansMalayalam-Regular.otf",
+    src: "NotoSansMalayalam-Regular.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansMalayalamUI-Regular.ttf",
-    src: "NotoSansMalayalamUI-Regular.ttf",
+    name: "NotoSansMalayalamUI-Bold.otf",
+    src: "NotoSansMalayalamUI-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMalayalamUI-Medium.otf",
+    src: "NotoSansMalayalamUI-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansMalayalamUI-Regular.otf",
+    src: "NotoSansMalayalamUI-Regular.otf",
 }
 
 prebuilt_font {
@@ -428,23 +448,23 @@
 }
 
 prebuilt_font {
-    name: "NotoSansMyanmar-Bold.ttf",
-    src: "NotoSansMyanmar-Bold.ttf",
+    name: "NotoSansMyanmar-Bold-ZawDecode.ttf",
+    src: "NotoSansMyanmar-Bold-ZawDecode.ttf",
 }
 
 prebuilt_font {
-    name: "NotoSansMyanmar-Regular.ttf",
-    src: "NotoSansMyanmar-Regular.ttf",
+    name: "NotoSansMyanmar-Regular-ZawDecode.ttf",
+    src: "NotoSansMyanmar-Regular-ZawDecode.ttf",
 }
 
 prebuilt_font {
-    name: "NotoSansMyanmarUI-Bold.ttf",
-    src: "NotoSansMyanmarUI-Bold.ttf",
+    name: "NotoSansMyanmarUI-Bold-ZawDecode.ttf",
+    src: "NotoSansMyanmarUI-Bold-ZawDecode.ttf",
 }
 
 prebuilt_font {
-    name: "NotoSansMyanmarUI-Regular.ttf",
-    src: "NotoSansMyanmarUI-Regular.ttf",
+    name: "NotoSansMyanmarUI-Regular-ZawDecode.ttf",
+    src: "NotoSansMyanmarUI-Regular-ZawDecode.ttf",
 }
 
 prebuilt_font {
@@ -593,13 +613,18 @@
 }
 
 prebuilt_font {
-    name: "NotoSansSinhala-Bold.ttf",
-    src: "NotoSansSinhala-Bold.ttf",
+    name: "NotoSansSinhala-Bold.otf",
+    src: "NotoSansSinhala-Bold.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansSinhala-Regular.ttf",
-    src: "NotoSansSinhala-Regular.ttf",
+    name: "NotoSansSinhala-Regular.otf",
+    src: "NotoSansSinhala-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansSinhala-Medium.otf",
+    src: "NotoSansSinhala-Medium.otf",
 }
 
 prebuilt_font {
@@ -608,6 +633,11 @@
 }
 
 prebuilt_font {
+    name: "NotoSansSinhalaUI-Medium.otf",
+    src: "NotoSansSinhalaUI-Medium.otf",
+}
+
+prebuilt_font {
     name: "NotoSansSinhalaUI-Regular.otf",
     src: "NotoSansSinhalaUI-Regular.otf",
 }
@@ -668,23 +698,33 @@
 }
 
 prebuilt_font {
-    name: "NotoSansTamil-Bold.ttf",
-    src: "NotoSansTamil-Bold.ttf",
+    name: "NotoSansTamil-Bold.otf",
+    src: "NotoSansTamil-Bold.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansTamil-Regular.ttf",
-    src: "NotoSansTamil-Regular.ttf",
+    name: "NotoSansTamil-Medium.otf",
+    src: "NotoSansTamil-Medium.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansTamilUI-Bold.ttf",
-    src: "NotoSansTamilUI-Bold.ttf",
+    name: "NotoSansTamil-Regular.otf",
+    src: "NotoSansTamil-Regular.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansTamilUI-Regular.ttf",
-    src: "NotoSansTamilUI-Regular.ttf",
+    name: "NotoSansTamilUI-Bold.otf",
+    src: "NotoSansTamilUI-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansTamilUI-Medium.otf",
+    src: "NotoSansTamilUI-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansTamilUI-Regular.otf",
+    src: "NotoSansTamilUI-Regular.otf",
 }
 
 prebuilt_font {
@@ -768,43 +808,63 @@
 }
 
 prebuilt_font {
-    name: "NotoSansArmenian-Regular.ttf",
-    src: "NotoSansArmenian-Regular.ttf",
+    name: "NotoSansArmenian-Regular.otf",
+    src: "NotoSansArmenian-Regular.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansArmenian-Bold.ttf",
-    src: "NotoSansArmenian-Bold.ttf",
+    name: "NotoSansArmenian-Bold.otf",
+    src: "NotoSansArmenian-Bold.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansDevanagari-Regular.ttf",
-    src: "NotoSansDevanagari-Regular.ttf",
+    name: "NotoSansArmenian-Medium.otf",
+    src: "NotoSansArmenian-Medium.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansDevanagari-Bold.ttf",
-    src: "NotoSansDevanagari-Bold.ttf",
+    name: "NotoSansDevanagari-Regular.otf",
+    src: "NotoSansDevanagari-Regular.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansDevanagariUI-Regular.ttf",
-    src: "NotoSansDevanagariUI-Regular.ttf",
+    name: "NotoSansDevanagari-Bold.otf",
+    src: "NotoSansDevanagari-Bold.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansDevanagariUI-Bold.ttf",
-    src: "NotoSansDevanagariUI-Bold.ttf",
+    name: "NotoSansDevanagari-Medium.otf",
+    src: "NotoSansDevanagari-Medium.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansGeorgian-Regular.ttf",
-    src: "NotoSansGeorgian-Regular.ttf",
+    name: "NotoSansDevanagariUI-Regular.otf",
+    src: "NotoSansDevanagariUI-Regular.otf",
 }
 
 prebuilt_font {
-    name: "NotoSansGeorgian-Bold.ttf",
-    src: "NotoSansGeorgian-Bold.ttf",
+    name: "NotoSansDevanagariUI-Bold.otf",
+    src: "NotoSansDevanagariUI-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansDevanagariUI-Medium.otf",
+    src: "NotoSansDevanagariUI-Medium.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansGeorgian-Regular.otf",
+    src: "NotoSansGeorgian-Regular.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansGeorgian-Bold.otf",
+    src: "NotoSansGeorgian-Bold.otf",
+}
+
+prebuilt_font {
+    name: "NotoSansGeorgian-Medium.otf",
+    src: "NotoSansGeorgian-Medium.otf",
 }
 
 prebuilt_font {
@@ -848,13 +908,13 @@
 }
 
 prebuilt_font {
-    name: "NotoSerifArmenian-Bold.ttf",
-    src: "NotoSerifArmenian-Bold.ttf",
+    name: "NotoSerifArmenian-Bold.otf",
+    src: "NotoSerifArmenian-Bold.otf",
 }
 
 prebuilt_font {
-    name: "NotoSerifArmenian-Regular.ttf",
-    src: "NotoSerifArmenian-Regular.ttf",
+    name: "NotoSerifArmenian-Regular.otf",
+    src: "NotoSerifArmenian-Regular.otf",
 }
 
 prebuilt_font {
@@ -888,13 +948,13 @@
 }
 
 prebuilt_font {
-    name: "NotoSerifGeorgian-Bold.ttf",
-    src: "NotoSerifGeorgian-Bold.ttf",
+    name: "NotoSerifGeorgian-Bold.otf",
+    src: "NotoSerifGeorgian-Bold.otf",
 }
 
 prebuilt_font {
-    name: "NotoSerifGeorgian-Regular.ttf",
-    src: "NotoSerifGeorgian-Regular.ttf",
+    name: "NotoSerifGeorgian-Regular.otf",
+    src: "NotoSerifGeorgian-Regular.otf",
 }
 
 prebuilt_font {
@@ -988,13 +1048,13 @@
 }
 
 prebuilt_font {
-    name: "NotoSerifTamil-Bold.ttf",
-    src: "NotoSerifTamil-Bold.ttf",
+    name: "NotoSerifTamil-Bold.otf",
+    src: "NotoSerifTamil-Bold.otf",
 }
 
 prebuilt_font {
-    name: "NotoSerifTamil-Regular.ttf",
-    src: "NotoSerifTamil-Regular.ttf",
+    name: "NotoSerifTamil-Regular.otf",
+    src: "NotoSerifTamil-Regular.otf",
 }
 
 prebuilt_font {
diff --git a/other/NotoSansArmenian-Bold.otf b/other/NotoSansArmenian-Bold.otf
new file mode 100644
index 0000000..11700a9
--- /dev/null
+++ b/other/NotoSansArmenian-Bold.otf
Binary files differ
diff --git a/other/NotoSansArmenian-Bold.ttf b/other/NotoSansArmenian-Bold.ttf
deleted file mode 100644
index 109e34f..0000000
--- a/other/NotoSansArmenian-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansArmenian-Medium.otf b/other/NotoSansArmenian-Medium.otf
new file mode 100644
index 0000000..17dbffb
--- /dev/null
+++ b/other/NotoSansArmenian-Medium.otf
Binary files differ
diff --git a/other/NotoSansArmenian-Regular.otf b/other/NotoSansArmenian-Regular.otf
new file mode 100644
index 0000000..60bb53f
--- /dev/null
+++ b/other/NotoSansArmenian-Regular.otf
Binary files differ
diff --git a/other/NotoSansArmenian-Regular.ttf b/other/NotoSansArmenian-Regular.ttf
deleted file mode 100644
index 7f26da5..0000000
--- a/other/NotoSansArmenian-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansBengali-Bold.otf b/other/NotoSansBengali-Bold.otf
new file mode 100644
index 0000000..03fa2ce
--- /dev/null
+++ b/other/NotoSansBengali-Bold.otf
Binary files differ
diff --git a/other/NotoSansBengali-Bold.ttf b/other/NotoSansBengali-Bold.ttf
deleted file mode 100644
index 546a555..0000000
--- a/other/NotoSansBengali-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansBengali-Medium.otf b/other/NotoSansBengali-Medium.otf
new file mode 100644
index 0000000..fa98001
--- /dev/null
+++ b/other/NotoSansBengali-Medium.otf
Binary files differ
diff --git a/other/NotoSansBengali-Regular.otf b/other/NotoSansBengali-Regular.otf
new file mode 100644
index 0000000..be3fde0
--- /dev/null
+++ b/other/NotoSansBengali-Regular.otf
Binary files differ
diff --git a/other/NotoSansBengali-Regular.ttf b/other/NotoSansBengali-Regular.ttf
deleted file mode 100644
index 520d82f..0000000
--- a/other/NotoSansBengali-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansBengaliUI-Bold.otf b/other/NotoSansBengaliUI-Bold.otf
new file mode 100644
index 0000000..ea58c5a
--- /dev/null
+++ b/other/NotoSansBengaliUI-Bold.otf
Binary files differ
diff --git a/other/NotoSansBengaliUI-Bold.ttf b/other/NotoSansBengaliUI-Bold.ttf
deleted file mode 100644
index 923580c..0000000
--- a/other/NotoSansBengaliUI-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansBengaliUI-Medium.otf b/other/NotoSansBengaliUI-Medium.otf
new file mode 100644
index 0000000..ba35bab
--- /dev/null
+++ b/other/NotoSansBengaliUI-Medium.otf
Binary files differ
diff --git a/other/NotoSansBengaliUI-Regular.otf b/other/NotoSansBengaliUI-Regular.otf
new file mode 100644
index 0000000..491fd93
--- /dev/null
+++ b/other/NotoSansBengaliUI-Regular.otf
Binary files differ
diff --git a/other/NotoSansBengaliUI-Regular.ttf b/other/NotoSansBengaliUI-Regular.ttf
deleted file mode 100644
index 5373108..0000000
--- a/other/NotoSansBengaliUI-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansChakma-Regular.otf b/other/NotoSansChakma-Regular.otf
new file mode 100644
index 0000000..d9690ca
--- /dev/null
+++ b/other/NotoSansChakma-Regular.otf
Binary files differ
diff --git a/other/NotoSansChakma-Regular.ttf b/other/NotoSansChakma-Regular.ttf
deleted file mode 100644
index 43e5161..0000000
--- a/other/NotoSansChakma-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansDevanagari-Bold.otf b/other/NotoSansDevanagari-Bold.otf
new file mode 100644
index 0000000..383f279
--- /dev/null
+++ b/other/NotoSansDevanagari-Bold.otf
Binary files differ
diff --git a/other/NotoSansDevanagari-Bold.ttf b/other/NotoSansDevanagari-Bold.ttf
deleted file mode 100644
index 9fe0162..0000000
--- a/other/NotoSansDevanagari-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansDevanagari-Medium.otf b/other/NotoSansDevanagari-Medium.otf
new file mode 100644
index 0000000..c454f83
--- /dev/null
+++ b/other/NotoSansDevanagari-Medium.otf
Binary files differ
diff --git a/other/NotoSansDevanagari-Regular.otf b/other/NotoSansDevanagari-Regular.otf
new file mode 100644
index 0000000..68b2c13
--- /dev/null
+++ b/other/NotoSansDevanagari-Regular.otf
Binary files differ
diff --git a/other/NotoSansDevanagari-Regular.ttf b/other/NotoSansDevanagari-Regular.ttf
deleted file mode 100644
index 0a024df..0000000
--- a/other/NotoSansDevanagari-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansDevanagariUI-Bold.otf b/other/NotoSansDevanagariUI-Bold.otf
new file mode 100644
index 0000000..113ebb4
--- /dev/null
+++ b/other/NotoSansDevanagariUI-Bold.otf
Binary files differ
diff --git a/other/NotoSansDevanagariUI-Bold.ttf b/other/NotoSansDevanagariUI-Bold.ttf
deleted file mode 100644
index a0cc7dd..0000000
--- a/other/NotoSansDevanagariUI-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansDevanagariUI-Medium.otf b/other/NotoSansDevanagariUI-Medium.otf
new file mode 100644
index 0000000..48658e8
--- /dev/null
+++ b/other/NotoSansDevanagariUI-Medium.otf
Binary files differ
diff --git a/other/NotoSansDevanagariUI-Regular.otf b/other/NotoSansDevanagariUI-Regular.otf
new file mode 100644
index 0000000..eda9bef
--- /dev/null
+++ b/other/NotoSansDevanagariUI-Regular.otf
Binary files differ
diff --git a/other/NotoSansDevanagariUI-Regular.ttf b/other/NotoSansDevanagariUI-Regular.ttf
deleted file mode 100644
index d74aefd..0000000
--- a/other/NotoSansDevanagariUI-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansGeorgian-Bold.otf b/other/NotoSansGeorgian-Bold.otf
new file mode 100644
index 0000000..086bd40
--- /dev/null
+++ b/other/NotoSansGeorgian-Bold.otf
Binary files differ
diff --git a/other/NotoSansGeorgian-Bold.ttf b/other/NotoSansGeorgian-Bold.ttf
deleted file mode 100644
index 2e01965..0000000
--- a/other/NotoSansGeorgian-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansGeorgian-Medium.otf b/other/NotoSansGeorgian-Medium.otf
new file mode 100644
index 0000000..15e5eb6
--- /dev/null
+++ b/other/NotoSansGeorgian-Medium.otf
Binary files differ
diff --git a/other/NotoSansGeorgian-Regular.otf b/other/NotoSansGeorgian-Regular.otf
new file mode 100644
index 0000000..e59f368
--- /dev/null
+++ b/other/NotoSansGeorgian-Regular.otf
Binary files differ
diff --git a/other/NotoSansGeorgian-Regular.ttf b/other/NotoSansGeorgian-Regular.ttf
deleted file mode 100644
index b5a3847..0000000
--- a/other/NotoSansGeorgian-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansMalayalam-Bold.otf b/other/NotoSansMalayalam-Bold.otf
new file mode 100644
index 0000000..f748b3b
--- /dev/null
+++ b/other/NotoSansMalayalam-Bold.otf
Binary files differ
diff --git a/other/NotoSansMalayalam-Bold.ttf b/other/NotoSansMalayalam-Bold.ttf
deleted file mode 100644
index 5f6ca0c..0000000
--- a/other/NotoSansMalayalam-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansMalayalam-Medium.otf b/other/NotoSansMalayalam-Medium.otf
new file mode 100644
index 0000000..e8cd727
--- /dev/null
+++ b/other/NotoSansMalayalam-Medium.otf
Binary files differ
diff --git a/other/NotoSansMalayalam-Regular.otf b/other/NotoSansMalayalam-Regular.otf
new file mode 100644
index 0000000..1eaa950
--- /dev/null
+++ b/other/NotoSansMalayalam-Regular.otf
Binary files differ
diff --git a/other/NotoSansMalayalam-Regular.ttf b/other/NotoSansMalayalam-Regular.ttf
deleted file mode 100644
index be82967..0000000
--- a/other/NotoSansMalayalam-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansMalayalamUI-Bold.otf b/other/NotoSansMalayalamUI-Bold.otf
new file mode 100644
index 0000000..669bf1f
--- /dev/null
+++ b/other/NotoSansMalayalamUI-Bold.otf
Binary files differ
diff --git a/other/NotoSansMalayalamUI-Bold.ttf b/other/NotoSansMalayalamUI-Bold.ttf
deleted file mode 100644
index 0919b8c..0000000
--- a/other/NotoSansMalayalamUI-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansMalayalamUI-Medium.otf b/other/NotoSansMalayalamUI-Medium.otf
new file mode 100644
index 0000000..0468ce9
--- /dev/null
+++ b/other/NotoSansMalayalamUI-Medium.otf
Binary files differ
diff --git a/other/NotoSansMalayalamUI-Regular.otf b/other/NotoSansMalayalamUI-Regular.otf
new file mode 100644
index 0000000..3e22f89
--- /dev/null
+++ b/other/NotoSansMalayalamUI-Regular.otf
Binary files differ
diff --git a/other/NotoSansMalayalamUI-Regular.ttf b/other/NotoSansMalayalamUI-Regular.ttf
deleted file mode 100644
index 4f1b408..0000000
--- a/other/NotoSansMalayalamUI-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansMyanmar-Bold-ZawDecode.ttf b/other/NotoSansMyanmar-Bold-ZawDecode.ttf
new file mode 100644
index 0000000..f2ac78b
--- /dev/null
+++ b/other/NotoSansMyanmar-Bold-ZawDecode.ttf
Binary files differ
diff --git a/other/NotoSansMyanmar-Bold.otf b/other/NotoSansMyanmar-Bold.otf
new file mode 100644
index 0000000..ddec241
--- /dev/null
+++ b/other/NotoSansMyanmar-Bold.otf
Binary files differ
diff --git a/other/NotoSansMyanmar-Bold.ttf b/other/NotoSansMyanmar-Bold.ttf
deleted file mode 100644
index 9f74c12..0000000
--- a/other/NotoSansMyanmar-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansMyanmar-Medium.otf b/other/NotoSansMyanmar-Medium.otf
new file mode 100644
index 0000000..c6c03db
--- /dev/null
+++ b/other/NotoSansMyanmar-Medium.otf
Binary files differ
diff --git a/other/NotoSansMyanmar-Regular-ZawDecode.ttf b/other/NotoSansMyanmar-Regular-ZawDecode.ttf
new file mode 100644
index 0000000..c9d5dbc
--- /dev/null
+++ b/other/NotoSansMyanmar-Regular-ZawDecode.ttf
Binary files differ
diff --git a/other/NotoSansMyanmar-Regular.otf b/other/NotoSansMyanmar-Regular.otf
new file mode 100644
index 0000000..f2f7a67
--- /dev/null
+++ b/other/NotoSansMyanmar-Regular.otf
Binary files differ
diff --git a/other/NotoSansMyanmar-Regular.ttf b/other/NotoSansMyanmar-Regular.ttf
deleted file mode 100644
index 034660b..0000000
--- a/other/NotoSansMyanmar-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansMyanmarUI-Bold-ZawDecode.ttf b/other/NotoSansMyanmarUI-Bold-ZawDecode.ttf
new file mode 100644
index 0000000..d27c526
--- /dev/null
+++ b/other/NotoSansMyanmarUI-Bold-ZawDecode.ttf
Binary files differ
diff --git a/other/NotoSansMyanmarUI-Bold.otf b/other/NotoSansMyanmarUI-Bold.otf
new file mode 100644
index 0000000..6742efd
--- /dev/null
+++ b/other/NotoSansMyanmarUI-Bold.otf
Binary files differ
diff --git a/other/NotoSansMyanmarUI-Bold.ttf b/other/NotoSansMyanmarUI-Bold.ttf
deleted file mode 100644
index 1c76aa7..0000000
--- a/other/NotoSansMyanmarUI-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansMyanmarUI-Medium.otf b/other/NotoSansMyanmarUI-Medium.otf
new file mode 100644
index 0000000..af579de
--- /dev/null
+++ b/other/NotoSansMyanmarUI-Medium.otf
Binary files differ
diff --git a/other/NotoSansMyanmarUI-Regular-ZawDecode.ttf b/other/NotoSansMyanmarUI-Regular-ZawDecode.ttf
new file mode 100644
index 0000000..3dc93d5
--- /dev/null
+++ b/other/NotoSansMyanmarUI-Regular-ZawDecode.ttf
Binary files differ
diff --git a/other/NotoSansMyanmarUI-Regular.otf b/other/NotoSansMyanmarUI-Regular.otf
new file mode 100644
index 0000000..7d912b8
--- /dev/null
+++ b/other/NotoSansMyanmarUI-Regular.otf
Binary files differ
diff --git a/other/NotoSansMyanmarUI-Regular.ttf b/other/NotoSansMyanmarUI-Regular.ttf
deleted file mode 100644
index a435ba1..0000000
--- a/other/NotoSansMyanmarUI-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansSinhala-Bold.otf b/other/NotoSansSinhala-Bold.otf
new file mode 100644
index 0000000..1ccfb67
--- /dev/null
+++ b/other/NotoSansSinhala-Bold.otf
Binary files differ
diff --git a/other/NotoSansSinhala-Bold.ttf b/other/NotoSansSinhala-Bold.ttf
deleted file mode 100644
index 1ba5a1c..0000000
--- a/other/NotoSansSinhala-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansSinhala-Medium.otf b/other/NotoSansSinhala-Medium.otf
new file mode 100644
index 0000000..7b62820
--- /dev/null
+++ b/other/NotoSansSinhala-Medium.otf
Binary files differ
diff --git a/other/NotoSansSinhala-Regular.otf b/other/NotoSansSinhala-Regular.otf
new file mode 100644
index 0000000..027fd25
--- /dev/null
+++ b/other/NotoSansSinhala-Regular.otf
Binary files differ
diff --git a/other/NotoSansSinhala-Regular.ttf b/other/NotoSansSinhala-Regular.ttf
deleted file mode 100644
index 9f4de71..0000000
--- a/other/NotoSansSinhala-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansSinhalaUI-Bold.otf b/other/NotoSansSinhalaUI-Bold.otf
index d73a364..8d22bf2 100644
--- a/other/NotoSansSinhalaUI-Bold.otf
+++ b/other/NotoSansSinhalaUI-Bold.otf
Binary files differ
diff --git a/other/NotoSansSinhalaUI-Medium.otf b/other/NotoSansSinhalaUI-Medium.otf
new file mode 100644
index 0000000..8b5e701
--- /dev/null
+++ b/other/NotoSansSinhalaUI-Medium.otf
Binary files differ
diff --git a/other/NotoSansSinhalaUI-Regular.otf b/other/NotoSansSinhalaUI-Regular.otf
index 4902292..925536d 100644
--- a/other/NotoSansSinhalaUI-Regular.otf
+++ b/other/NotoSansSinhalaUI-Regular.otf
Binary files differ
diff --git a/other/NotoSansTamil-Bold.otf b/other/NotoSansTamil-Bold.otf
new file mode 100644
index 0000000..c9611a3
--- /dev/null
+++ b/other/NotoSansTamil-Bold.otf
Binary files differ
diff --git a/other/NotoSansTamil-Bold.ttf b/other/NotoSansTamil-Bold.ttf
deleted file mode 100644
index f15bfad..0000000
--- a/other/NotoSansTamil-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansTamil-Medium.otf b/other/NotoSansTamil-Medium.otf
new file mode 100644
index 0000000..1e84a9b
--- /dev/null
+++ b/other/NotoSansTamil-Medium.otf
Binary files differ
diff --git a/other/NotoSansTamil-Regular.otf b/other/NotoSansTamil-Regular.otf
new file mode 100644
index 0000000..b77a33c
--- /dev/null
+++ b/other/NotoSansTamil-Regular.otf
Binary files differ
diff --git a/other/NotoSansTamil-Regular.ttf b/other/NotoSansTamil-Regular.ttf
deleted file mode 100644
index 635a238..0000000
--- a/other/NotoSansTamil-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansTamilUI-Bold.otf b/other/NotoSansTamilUI-Bold.otf
new file mode 100644
index 0000000..665d6fd
--- /dev/null
+++ b/other/NotoSansTamilUI-Bold.otf
Binary files differ
diff --git a/other/NotoSansTamilUI-Bold.ttf b/other/NotoSansTamilUI-Bold.ttf
deleted file mode 100644
index 297f30b..0000000
--- a/other/NotoSansTamilUI-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSansTamilUI-Medium.otf b/other/NotoSansTamilUI-Medium.otf
new file mode 100644
index 0000000..64997d3
--- /dev/null
+++ b/other/NotoSansTamilUI-Medium.otf
Binary files differ
diff --git a/other/NotoSansTamilUI-Regular.otf b/other/NotoSansTamilUI-Regular.otf
new file mode 100644
index 0000000..7ee7d4f
--- /dev/null
+++ b/other/NotoSansTamilUI-Regular.otf
Binary files differ
diff --git a/other/NotoSansTamilUI-Regular.ttf b/other/NotoSansTamilUI-Regular.ttf
deleted file mode 100644
index 360bed8..0000000
--- a/other/NotoSansTamilUI-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSerifArmenian-Bold.otf b/other/NotoSerifArmenian-Bold.otf
new file mode 100644
index 0000000..7df98e3
--- /dev/null
+++ b/other/NotoSerifArmenian-Bold.otf
Binary files differ
diff --git a/other/NotoSerifArmenian-Bold.ttf b/other/NotoSerifArmenian-Bold.ttf
deleted file mode 100644
index 215a57f..0000000
--- a/other/NotoSerifArmenian-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSerifArmenian-Regular.otf b/other/NotoSerifArmenian-Regular.otf
new file mode 100644
index 0000000..05df944
--- /dev/null
+++ b/other/NotoSerifArmenian-Regular.otf
Binary files differ
diff --git a/other/NotoSerifArmenian-Regular.ttf b/other/NotoSerifArmenian-Regular.ttf
deleted file mode 100644
index d33f13d..0000000
--- a/other/NotoSerifArmenian-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSerifGeorgian-Bold.otf b/other/NotoSerifGeorgian-Bold.otf
new file mode 100644
index 0000000..1c2c01f
--- /dev/null
+++ b/other/NotoSerifGeorgian-Bold.otf
Binary files differ
diff --git a/other/NotoSerifGeorgian-Bold.ttf b/other/NotoSerifGeorgian-Bold.ttf
deleted file mode 100644
index 00709da..0000000
--- a/other/NotoSerifGeorgian-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSerifGeorgian-Regular.otf b/other/NotoSerifGeorgian-Regular.otf
new file mode 100644
index 0000000..f0186e6
--- /dev/null
+++ b/other/NotoSerifGeorgian-Regular.otf
Binary files differ
diff --git a/other/NotoSerifGeorgian-Regular.ttf b/other/NotoSerifGeorgian-Regular.ttf
deleted file mode 100644
index 814731d..0000000
--- a/other/NotoSerifGeorgian-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSerifKhmer-Bold.ttf b/other/NotoSerifKhmer-Bold.ttf
deleted file mode 100644
index 795c35c..0000000
--- a/other/NotoSerifKhmer-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSerifKhmer-Regular.ttf b/other/NotoSerifKhmer-Regular.ttf
deleted file mode 100644
index 22a3b22..0000000
--- a/other/NotoSerifKhmer-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSerifMyanmar-Bold.otf b/other/NotoSerifMyanmar-Bold.otf
index 9c2bba5..ba21a27 100644
--- a/other/NotoSerifMyanmar-Bold.otf
+++ b/other/NotoSerifMyanmar-Bold.otf
Binary files differ
diff --git a/other/NotoSerifMyanmar-Regular.otf b/other/NotoSerifMyanmar-Regular.otf
index 3149b2f..ec4ed44 100644
--- a/other/NotoSerifMyanmar-Regular.otf
+++ b/other/NotoSerifMyanmar-Regular.otf
Binary files differ
diff --git a/other/NotoSerifSinhala-Bold.otf b/other/NotoSerifSinhala-Bold.otf
index 59ebdf0..ec8a3f9 100644
--- a/other/NotoSerifSinhala-Bold.otf
+++ b/other/NotoSerifSinhala-Bold.otf
Binary files differ
diff --git a/other/NotoSerifSinhala-Regular.otf b/other/NotoSerifSinhala-Regular.otf
index 3d75615..876c153 100644
--- a/other/NotoSerifSinhala-Regular.otf
+++ b/other/NotoSerifSinhala-Regular.otf
Binary files differ
diff --git a/other/NotoSerifTamil-Bold.otf b/other/NotoSerifTamil-Bold.otf
new file mode 100644
index 0000000..d0d57cd
--- /dev/null
+++ b/other/NotoSerifTamil-Bold.otf
Binary files differ
diff --git a/other/NotoSerifTamil-Bold.ttf b/other/NotoSerifTamil-Bold.ttf
deleted file mode 100644
index 9154410..0000000
--- a/other/NotoSerifTamil-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/other/NotoSerifTamil-Regular.otf b/other/NotoSerifTamil-Regular.otf
new file mode 100644
index 0000000..33b2b13
--- /dev/null
+++ b/other/NotoSerifTamil-Regular.otf
Binary files differ
diff --git a/other/NotoSerifTamil-Regular.ttf b/other/NotoSerifTamil-Regular.ttf
deleted file mode 100644
index ae772a1..0000000
--- a/other/NotoSerifTamil-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/scripts/color_emoji_image_diff.py b/scripts/color_emoji_image_diff.py
new file mode 100755
index 0000000..6f4c87e
--- /dev/null
+++ b/scripts/color_emoji_image_diff.py
@@ -0,0 +1,183 @@
+#!/usr/bin/env python
+
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import contextlib
+import itertools
+import io
+import os
+import sys
+
+from fontTools import ttLib
+from PIL import Image
+
+def to_hex_str(value):
+    """Converts given int value to hex without the 0x prefix"""
+    return format(value, 'X')
+
+def codepoint_to_string(codepoints):
+    """Converts a list of codepoints into a string separated with space."""
+    return '_'.join([to_hex_str(x) for x in codepoints])
+
+def read_cmap12(ttf, glyph_to_codepoint_map, codepoint_map):
+    cmap = ttf['cmap']
+    for table in cmap.tables:
+        if table.format == 12 and table.platformID == 3 and table.platEncID == 10:
+            for codepoint, glyph_name in table.cmap.iteritems():
+                glyph_to_codepoint_map[glyph_name] = codepoint
+                codepoint_map[codepoint_to_string([codepoint])] = glyph_name
+                # self.update_emoji_data([codepoint], glyph_name)
+            return table
+    raise ValueError("Font doesn't contain cmap with format:12, platformID:3 and platEncID:10")
+
+def read_gsub(ttf, glyph_to_codepoint_map, codepoint_map):
+    gsub = ttf['GSUB']
+    ligature_subtables = []
+    context_subtables = []
+    # this code is font dependent, implementing all gsub rules is out of scope of EmojiCompat
+    # and would be expensive with little value
+    for lookup in gsub.table.LookupList.Lookup:
+        for subtable in lookup.SubTable:
+            if subtable.LookupType == 5:
+                context_subtables.append(subtable)
+            elif subtable.LookupType == 4:
+                ligature_subtables.append(subtable)
+
+    for subtable in context_subtables:
+        add_gsub_context_subtable(subtable, gsub.table.LookupList, glyph_to_codepoint_map, codepoint_map)
+
+    for subtable in ligature_subtables:
+        add_gsub_ligature_subtable(subtable, glyph_to_codepoint_map, codepoint_map)
+
+def add_gsub_context_subtable(subtable, lookup_list, glyph_to_codepoint_map, codepoint_map):
+    for sub_class_set in subtable.SubClassSet:
+        if sub_class_set:
+            for sub_class_rule in sub_class_set.SubClassRule:
+                subs_list = len(sub_class_rule.SubstLookupRecord) * [None]
+                for record in sub_class_rule.SubstLookupRecord:
+                    subs_list[record.SequenceIndex] = get_substitutions(lookup_list,
+                                                                        record.LookupListIndex)
+                combinations = list(itertools.product(*subs_list))
+                for seq in combinations:
+                    glyph_names = [x["input"] for x in seq]
+                    codepoints = [glyph_to_codepoint_map[x] for x in glyph_names]
+                    outputs = [x["output"] for x in seq if x["output"]]
+                    nonempty_outputs = filter(lambda x: x.strip() , outputs)
+                    if len(nonempty_outputs) == 0:
+                        print("Warning: no output glyph is set for " + str(glyph_names))
+                        continue
+                    elif len(nonempty_outputs) > 1:
+                        print(
+                            "Warning: multiple glyph is set for "
+                                + str(glyph_names) + ", will use the first one")
+
+                    glyph = nonempty_outputs[0]
+                    codepoint_map[codepoint_to_string(codepoints)] = glyph
+
+def get_substitutions(lookup_list, index):
+    result = []
+    for x in lookup_list.Lookup[index].SubTable:
+        for input, output in x.mapping.iteritems():
+            result.append({"input": input, "output": output})
+    return result
+
+def add_gsub_ligature_subtable(subtable, glyph_to_codepoint_map, codepoint_map):
+    for name, ligatures in subtable.ligatures.iteritems():
+        for ligature in ligatures:
+            glyph_names = [name] + ligature.Component
+            codepoints = [glyph_to_codepoint_map[x] for x in glyph_names]
+            codepoint_map[codepoint_to_string(codepoints)] = ligature.LigGlyph
+
+def read_cbdt(ttf):
+  cbdt = ttf['CBDT']
+  glyph_to_image = {}
+  for strike_data in cbdt.strikeData:
+    for key, data in strike_data.iteritems():
+      data.decompile
+      glyph_to_image[key] = Image.open(io.BytesIO(data.imageData))
+  return glyph_to_image
+
+
+rgba_map = {}
+
+def similar_img(img1, img2):
+    # return if images are the same with accepting some changes
+    if img1 is None and img2 is None: return True
+    if img1 is None or img2 is None: return False
+    if not img1.size == img2.size: return False
+
+    pixels1 = rgba_map.get(img1, img1.convert('L').getdata())
+    pixels2 = rgba_map.get(img2, img2.convert('L').getdata())
+    pixels = itertools.izip(pixels1, pixels2)
+    diff = 0
+    for px1, px2 in pixels:
+        diff = diff + abs(px1-px2)
+    pixel_count = 1.0 * img1.size[0] * img1.size[1]
+    normalized_diff = diff / pixel_count / 255.0 * 100.0
+    if normalized_diff <= 0.5: return True
+    return False
+
+def main(argv):
+  codepoint_map_1 = {}
+  codepoint_map_2 = {}
+  glyph_to_codepoint_map_1 = {}
+  glyph_to_codepoint_map_2 = {}
+
+  with contextlib.closing(ttLib.TTFont(argv[1])) as ttf:
+    font1_cbdt = read_cbdt(ttf)
+    read_cmap12(ttf, glyph_to_codepoint_map_1, codepoint_map_1)
+    read_gsub(ttf, glyph_to_codepoint_map_1, codepoint_map_1)
+  with contextlib.closing(ttLib.TTFont(argv[2])) as ttf:
+    font2_cbdt = read_cbdt(ttf)
+    read_cmap12(ttf, glyph_to_codepoint_map_2, codepoint_map_2)
+    read_gsub(ttf, glyph_to_codepoint_map_2, codepoint_map_2)
+
+  glyphs1 = set(font1_cbdt.keys())
+  glyphs2 = set(font2_cbdt.keys())
+
+  codepoints_set1 = set(codepoint_map_1.keys())
+  codepoints_set2 = set(codepoint_map_2.keys())
+
+  if codepoints_set1 != codepoints_set2:
+    print "Codepoints set has changed: : %s" % (codepoints_set1 ^ codepoints_set2)
+
+  all_codepoints = set(codepoint_map_1.keys()).union(codepoint_map_2.keys())
+
+  for key in all_codepoints:
+    glyph1 = codepoint_map_1[key] if key in codepoint_map_1 else None
+    glyph2 = codepoint_map_2[key] if key in codepoint_map_2 else None
+
+    image1 = font1_cbdt[glyph1] if glyph1 and glyph1 in font1_cbdt else None
+    image2 = font2_cbdt[glyph2] if glyph2 and glyph2 in font2_cbdt else None
+
+    if not similar_img(image1, image2):
+      print 'Glyph %s has different image' % key
+      if image1:
+        with open(os.path.join(argv[3], '%s_old.png' % key), 'w') as f:
+            image1.save(f)
+      if image2:
+        with open(os.path.join(argv[3], '%s_new.png' % key), 'w') as f:
+            image2.save(f)
+
+
+def print_usage():
+    """Prints how to use the script."""
+    print("usage: old_font new_font output_dir")
+
+if __name__ == '__main__':
+   if len(sys.argv) < 3:
+       print_usage()
+       sys.exit(1)
+   main(sys.argv)