diff --git a/src/nanoemoji/features.py b/src/nanoemoji/features.py
index 741ed2c..454df73 100644
--- a/src/nanoemoji/features.py
+++ b/src/nanoemoji/features.py
@@ -20,14 +20,17 @@
 from nanoemoji.glyph import glyph_name
 
 
-def generate_fea(rgi_sequences):
-    # Generate rlig feature with ligature lookup for multi-codepoint RGIs
+DEFAULT_GSUB_FEATURE_TAG = "ccmp"
+
+
+def generate_fea(rgi_sequences, feature_tag=DEFAULT_GSUB_FEATURE_TAG):
+    # Generate feature with ligature lookup for multi-codepoint RGIs
     rules = []
     rules.append("languagesystem DFLT dflt;")
     rules.append("languagesystem latn dflt;")
     rules.append("")
 
-    rules.append("feature rlig {")
+    rules.append(f"feature {feature_tag} {{")
     for rgi in sorted(rgi_sequences):
         if len(rgi) == 1:
             continue
@@ -35,6 +38,6 @@ def generate_fea(rgi_sequences):
         target = glyph_name(rgi)
         rules.append("  sub %s by %s;" % (" ".join(glyphs), target))
 
-    rules.append("} rlig;")
+    rules.append(f"}} {feature_tag};")
     rules.append("")
     return "\n".join(rules)

diff --git a/tests/features_test.py b/tests/features_test.py
new file mode 100644
index 0000000..fba756e
--- /dev/null
+++ b/tests/features_test.py
@@ -0,0 +1,19 @@
+from textwrap import dedent
+from nanoemoji.features import generate_fea, DEFAULT_GSUB_FEATURE_TAG
+import pytest
+
+
+@pytest.mark.parametrize("feature_tag", (DEFAULT_GSUB_FEATURE_TAG, "rlig"))
+def test_generate_fea(feature_tag):
+    rgi_sequences = [(0x1F64C,), (0x1F64C, 0x1F3FB), (0x1F64C, 0x1F3FC)]
+    assert generate_fea(rgi_sequences, feature_tag=feature_tag) == dedent(
+        f"""\
+        languagesystem DFLT dflt;
+        languagesystem latn dflt;
+
+        feature {feature_tag} {{
+          sub g_1f64c g_1f3fb by g_1f64c_1f3fb;
+          sub g_1f64c g_1f3fc by g_1f64c_1f3fc;
+        }} {feature_tag};
+        """
+    )

Ligature changed from rlig feature to ccmp
Different platforms or browsers have some differences in ligature support([Test](http://unifraktur.sourceforge.net/testcases/enable_opentype_features/)). Let us discuss what issues should be paid attention to in emoji ligatures.

noto-emoji and noto-emoji-svg both use ccmp by default

https://github.com/googlefonts/noto-emoji/blob/41ae6686ace1453b432ac907a165428f2e1ad54e/NotoColorEmoji.tmpl.ttx.tmpl#L311

https://github.com/adobe-fonts/noto-emoji-svg/blob/ed5c78c8e3d46fdf8dbf7532875aaabfdcdc5c3a/GSUB.fea#L4

tests/features_test.py::test_generate_fea[ccmp] tests/features_test.py::test_generate_fea[rlig]