summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRasmus Andersson <rasmus@notion.se>2019-08-05 05:16:55 +0300
committerRasmus Andersson <rasmus@notion.se>2019-08-05 05:16:55 +0300
commit672ead9a6cf4f20772bccb217055d8b5d84fc6bc (patch)
tree614835d7410801aa9d2fdaa3f8c93dff01fcf316
parent1a0a8dc178cfcea2d61f690fd41a2166ad1f8475 (diff)
downloadinter-672ead9a6cf4f20772bccb217055d8b5d84fc6bc.tar.xz
ligature features (liga, rlig, dlig)
-rw-r--r--src/Inter.glyphs4
-rw-r--r--src/features/dlig.fea3
-rw-r--r--src/features/liga.fea247
-rw-r--r--src/features/rlig.fea246
4 files changed, 256 insertions, 244 deletions
diff --git a/src/Inter.glyphs b/src/Inter.glyphs
index 0c47cb8ae..c5e000489 100644
--- a/src/Inter.glyphs
+++ b/src/Inter.glyphs
@@ -2119,6 +2119,10 @@ code = "sub parenleft by parenleft.case;\012sub parenright by parenright.case;\0
name = case;
},
{
+code = "include(features/rlig.fea);";
+name = rlig;
+},
+{
code = "include(features/liga.fea);";
name = liga;
},
diff --git a/src/features/dlig.fea b/src/features/dlig.fea
index cfaa67c56..5d08c246a 100644
--- a/src/features/dlig.fea
+++ b/src/features/dlig.fea
@@ -1,3 +1,6 @@
+# Discretionary Ligatures
+# https://docs.microsoft.com/en-us/typography/opentype/spec/features_ae#dlig
+
sub exclam question by interrobang;
sub question exclam by interrobang;
sub exclamdown questiondown by invertedinterrobang;
diff --git a/src/features/liga.fea b/src/features/liga.fea
index a0ebf89c1..a387f16e7 100644
--- a/src/features/liga.fea
+++ b/src/features/liga.fea
@@ -1,3 +1,6 @@
+# Standard ligatures
+# https://docs.microsoft.com/en-us/typography/opentype/spec/features_ko#liga
+
@DASH = [
hyphen
endash
@@ -73,247 +76,3 @@ sub @Numeral @Whitespace @Whitespace x' @Whitespace @Numeral by mult
sub @Numeral x' @Whitespace @Whitespace @Numeral by multiply; # 3x 9
sub @Numeral @Whitespace x' @Whitespace @Whitespace @Numeral by multiply; # 3 x 9
sub @Numeral @Whitespace @Whitespace x' @Whitespace @Whitespace @Numeral by multiply; # 3 x 9
-
-# * enclosingsquarecomb -> composite
-sub A enclosingsquarecomb by A.squared;
-sub B enclosingsquarecomb by B.squared;
-sub C enclosingsquarecomb by C.squared;
-sub D enclosingsquarecomb by D.squared;
-sub E enclosingsquarecomb by E.squared;
-sub F enclosingsquarecomb by F.squared;
-sub G enclosingsquarecomb by G.squared;
-sub H enclosingsquarecomb by H.squared;
-sub I enclosingsquarecomb by I.squared;
-sub J enclosingsquarecomb by J.squared;
-sub K enclosingsquarecomb by K.squared;
-sub L enclosingsquarecomb by L.squared;
-sub M enclosingsquarecomb by M.squared;
-sub N enclosingsquarecomb by N.squared;
-sub O enclosingsquarecomb by O.squared;
-sub P enclosingsquarecomb by P.squared;
-sub Q enclosingsquarecomb by Q.squared;
-sub R enclosingsquarecomb by R.squared;
-sub S enclosingsquarecomb by S.squared;
-sub T enclosingsquarecomb by T.squared;
-sub U enclosingsquarecomb by U.squared;
-sub V enclosingsquarecomb by V.squared;
-sub W enclosingsquarecomb by W.squared;
-sub X enclosingsquarecomb by X.squared;
-sub Y enclosingsquarecomb by Y.squared;
-sub Z enclosingsquarecomb by Z.squared;
-sub zero enclosingsquarecomb by zero.squared;
-sub one enclosingsquarecomb by one.squared;
-sub two enclosingsquarecomb by two.squared;
-sub three enclosingsquarecomb by three.squared;
-sub four enclosingsquarecomb by four.squared;
-sub five enclosingsquarecomb by five.squared;
-sub six enclosingsquarecomb by six.squared;
-sub seven enclosingsquarecomb by seven.squared;
-sub eight enclosingsquarecomb by eight.squared;
-sub nine enclosingsquarecomb by nine.squared;
-sub zero.slash enclosingsquarecomb by zero.slash.squared;
-sub one.ss01 enclosingsquarecomb by one.ss01.squared;
-sub three.1 enclosingsquarecomb by three.1.squared;
-sub four.ss01 enclosingsquarecomb by four.ss01.squared;
-sub six.ss01 enclosingsquarecomb by six.ss01.squared;
-sub nine.ss01 enclosingsquarecomb by nine.ss01.squared;
-sub exclam enclosingsquarecomb by exclam.squared;
-sub question enclosingsquarecomb by question.squared;
-sub numbersign enclosingsquarecomb by numbersign.squared;
-sub hyphen enclosingsquarecomb by hyphen.squared;
-sub less enclosingsquarecomb by less.squared;
-sub greater enclosingsquarecomb by greater.squared;
-sub equal enclosingsquarecomb by equal.squared;
-sub plus enclosingsquarecomb by plus.squared;
-sub minus enclosingsquarecomb by minus.squared;
-sub multiply enclosingsquarecomb by multiply.squared;
-sub divide enclosingsquarecomb by divide.squared;
-sub upArrow enclosingsquarecomb by upArrow.squared;
-sub downArrow enclosingsquarecomb by downArrow.squared;
-sub leftArrow enclosingsquarecomb by leftArrow.squared;
-sub rightArrow enclosingsquarecomb by rightArrow.squared;
-sub dngb_check enclosingsquarecomb by dngb_check.squared;
-sub dngb_ballotx enclosingsquarecomb by dngb_ballotx.squared;
-
-# enclosingsquarecomb * -> composite
-sub enclosingsquarecomb A by A.squared;
-sub enclosingsquarecomb B by B.squared;
-sub enclosingsquarecomb C by C.squared;
-sub enclosingsquarecomb D by D.squared;
-sub enclosingsquarecomb E by E.squared;
-sub enclosingsquarecomb F by F.squared;
-sub enclosingsquarecomb G by G.squared;
-sub enclosingsquarecomb H by H.squared;
-sub enclosingsquarecomb I by I.squared;
-sub enclosingsquarecomb J by J.squared;
-sub enclosingsquarecomb K by K.squared;
-sub enclosingsquarecomb L by L.squared;
-sub enclosingsquarecomb M by M.squared;
-sub enclosingsquarecomb N by N.squared;
-sub enclosingsquarecomb O by O.squared;
-sub enclosingsquarecomb P by P.squared;
-sub enclosingsquarecomb Q by Q.squared;
-sub enclosingsquarecomb R by R.squared;
-sub enclosingsquarecomb S by S.squared;
-sub enclosingsquarecomb T by T.squared;
-sub enclosingsquarecomb U by U.squared;
-sub enclosingsquarecomb V by V.squared;
-sub enclosingsquarecomb W by W.squared;
-sub enclosingsquarecomb X by X.squared;
-sub enclosingsquarecomb Y by Y.squared;
-sub enclosingsquarecomb Z by Z.squared;
-sub enclosingsquarecomb zero by zero.squared;
-sub enclosingsquarecomb one by one.squared;
-sub enclosingsquarecomb two by two.squared;
-sub enclosingsquarecomb three by three.squared;
-sub enclosingsquarecomb four by four.squared;
-sub enclosingsquarecomb five by five.squared;
-sub enclosingsquarecomb six by six.squared;
-sub enclosingsquarecomb seven by seven.squared;
-sub enclosingsquarecomb eight by eight.squared;
-sub enclosingsquarecomb nine by nine.squared;
-sub enclosingsquarecomb zero.slash by zero.slash.squared;
-sub enclosingsquarecomb one.ss01 by one.ss01.squared;
-sub enclosingsquarecomb three.1 by three.1.squared;
-sub enclosingsquarecomb four.ss01 by four.ss01.squared;
-sub enclosingsquarecomb six.ss01 by six.ss01.squared;
-sub enclosingsquarecomb nine.ss01 by nine.ss01.squared;
-sub enclosingsquarecomb exclam by exclam.squared;
-sub enclosingsquarecomb question by question.squared;
-sub enclosingsquarecomb numbersign by numbersign.squared;
-sub enclosingsquarecomb hyphen by hyphen.squared;
-sub enclosingsquarecomb less by less.squared;
-sub enclosingsquarecomb greater by greater.squared;
-sub enclosingsquarecomb equal by equal.squared;
-sub enclosingsquarecomb plus by plus.squared;
-sub enclosingsquarecomb minus by minus.squared;
-sub enclosingsquarecomb multiply by multiply.squared;
-sub enclosingsquarecomb divide by divide.squared;
-sub enclosingsquarecomb upArrow by upArrow.squared;
-sub enclosingsquarecomb downArrow by downArrow.squared;
-sub enclosingsquarecomb leftArrow by leftArrow.squared;
-sub enclosingsquarecomb rightArrow by rightArrow.squared;
-sub enclosingsquarecomb dngb_check by dngb_check.squared;
-sub enclosingsquarecomb dngb_ballotx by dngb_ballotx.squared;
-
-# * enclosingcirclecomb -> composite
-sub A enclosingcirclecomb by A.circled;
-sub B enclosingcirclecomb by B.circled;
-sub C enclosingcirclecomb by C.circled;
-sub D enclosingcirclecomb by D.circled;
-sub E enclosingcirclecomb by E.circled;
-sub F enclosingcirclecomb by F.circled;
-sub G enclosingcirclecomb by G.circled;
-sub H enclosingcirclecomb by H.circled;
-sub I enclosingcirclecomb by I.circled;
-sub J enclosingcirclecomb by J.circled;
-sub K enclosingcirclecomb by K.circled;
-sub L enclosingcirclecomb by L.circled;
-sub M enclosingcirclecomb by M.circled;
-sub N enclosingcirclecomb by N.circled;
-sub O enclosingcirclecomb by O.circled;
-sub P enclosingcirclecomb by P.circled;
-sub Q enclosingcirclecomb by Q.circled;
-sub R enclosingcirclecomb by R.circled;
-sub S enclosingcirclecomb by S.circled;
-sub T enclosingcirclecomb by T.circled;
-sub U enclosingcirclecomb by U.circled;
-sub V enclosingcirclecomb by V.circled;
-sub W enclosingcirclecomb by W.circled;
-sub X enclosingcirclecomb by X.circled;
-sub Y enclosingcirclecomb by Y.circled;
-sub Z enclosingcirclecomb by Z.circled;
-sub zero enclosingcirclecomb by zero.circled;
-sub one enclosingcirclecomb by one.circled;
-sub two enclosingcirclecomb by two.circled;
-sub three enclosingcirclecomb by three.circled;
-sub four enclosingcirclecomb by four.circled;
-sub five enclosingcirclecomb by five.circled;
-sub six enclosingcirclecomb by six.circled;
-sub seven enclosingcirclecomb by seven.circled;
-sub eight enclosingcirclecomb by eight.circled;
-sub nine enclosingcirclecomb by nine.circled;
-sub zero.slash enclosingcirclecomb by zero.slash.circled;
-sub one.ss01 enclosingcirclecomb by one.ss01.circled;
-sub three.1 enclosingcirclecomb by three.1.circled;
-sub four.ss01 enclosingcirclecomb by four.ss01.circled;
-sub six.ss01 enclosingcirclecomb by six.ss01.circled;
-sub nine.ss01 enclosingcirclecomb by nine.ss01.circled;
-sub exclam enclosingcirclecomb by exclam.circled;
-sub question enclosingcirclecomb by question.circled;
-sub numbersign enclosingcirclecomb by numbersign.circled;
-sub hyphen enclosingcirclecomb by hyphen.circled;
-sub less enclosingcirclecomb by less.circled;
-sub greater enclosingcirclecomb by greater.circled;
-sub equal enclosingcirclecomb by equal.circled;
-sub plus enclosingcirclecomb by plus.circled;
-sub minus enclosingcirclecomb by minus.circled;
-sub multiply enclosingcirclecomb by multiply.circled;
-sub divide enclosingcirclecomb by divide.circled;
-sub upArrow enclosingcirclecomb by upArrow.circled;
-sub downArrow enclosingcirclecomb by downArrow.circled;
-sub leftArrow enclosingcirclecomb by leftArrow.circled;
-sub rightArrow enclosingcirclecomb by rightArrow.circled;
-sub dngb_check enclosingcirclecomb by dngb_check.circled;
-sub dngb_ballotx enclosingcirclecomb by dngb_ballotx.circled;
-
-# enclosingcirclecomb * -> composite
-sub enclosingcirclecomb A by A.circled;
-sub enclosingcirclecomb B by B.circled;
-sub enclosingcirclecomb C by C.circled;
-sub enclosingcirclecomb D by D.circled;
-sub enclosingcirclecomb E by E.circled;
-sub enclosingcirclecomb F by F.circled;
-sub enclosingcirclecomb G by G.circled;
-sub enclosingcirclecomb H by H.circled;
-sub enclosingcirclecomb I by I.circled;
-sub enclosingcirclecomb J by J.circled;
-sub enclosingcirclecomb K by K.circled;
-sub enclosingcirclecomb L by L.circled;
-sub enclosingcirclecomb M by M.circled;
-sub enclosingcirclecomb N by N.circled;
-sub enclosingcirclecomb O by O.circled;
-sub enclosingcirclecomb P by P.circled;
-sub enclosingcirclecomb Q by Q.circled;
-sub enclosingcirclecomb R by R.circled;
-sub enclosingcirclecomb S by S.circled;
-sub enclosingcirclecomb T by T.circled;
-sub enclosingcirclecomb U by U.circled;
-sub enclosingcirclecomb V by V.circled;
-sub enclosingcirclecomb W by W.circled;
-sub enclosingcirclecomb X by X.circled;
-sub enclosingcirclecomb Y by Y.circled;
-sub enclosingcirclecomb Z by Z.circled;
-sub enclosingcirclecomb zero by zero.circled;
-sub enclosingcirclecomb one by one.circled;
-sub enclosingcirclecomb two by two.circled;
-sub enclosingcirclecomb three by three.circled;
-sub enclosingcirclecomb four by four.circled;
-sub enclosingcirclecomb five by five.circled;
-sub enclosingcirclecomb six by six.circled;
-sub enclosingcirclecomb seven by seven.circled;
-sub enclosingcirclecomb eight by eight.circled;
-sub enclosingcirclecomb nine by nine.circled;
-sub enclosingcirclecomb zero.slash by zero.slash.circled;
-sub enclosingcirclecomb one.ss01 by one.ss01.circled;
-sub enclosingcirclecomb three.1 by three.1.circled;
-sub enclosingcirclecomb four.ss01 by four.ss01.circled;
-sub enclosingcirclecomb six.ss01 by six.ss01.circled;
-sub enclosingcirclecomb nine.ss01 by nine.ss01.circled;
-sub enclosingcirclecomb exclam by exclam.circled;
-sub enclosingcirclecomb question by question.circled;
-sub enclosingcirclecomb numbersign by numbersign.circled;
-sub enclosingcirclecomb hyphen by hyphen.circled;
-sub enclosingcirclecomb less by less.circled;
-sub enclosingcirclecomb greater by greater.circled;
-sub enclosingcirclecomb equal by equal.circled;
-sub enclosingcirclecomb plus by plus.circled;
-sub enclosingcirclecomb minus by minus.circled;
-sub enclosingcirclecomb multiply by multiply.circled;
-sub enclosingcirclecomb divide by divide.circled;
-sub enclosingcirclecomb upArrow by upArrow.circled;
-sub enclosingcirclecomb downArrow by downArrow.circled;
-sub enclosingcirclecomb leftArrow by leftArrow.circled;
-sub enclosingcirclecomb rightArrow by rightArrow.circled;
-sub enclosingcirclecomb dngb_check by dngb_check.circled;
-sub enclosingcirclecomb dngb_ballotx by dngb_ballotx.circled;
diff --git a/src/features/rlig.fea b/src/features/rlig.fea
new file mode 100644
index 000000000..4bcd6e312
--- /dev/null
+++ b/src/features/rlig.fea
@@ -0,0 +1,246 @@
+# Required ligatures
+# https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#tag-rlig
+
+# * enclosingsquarecomb -> composite
+sub A enclosingsquarecomb by A.squared;
+sub B enclosingsquarecomb by B.squared;
+sub C enclosingsquarecomb by C.squared;
+sub D enclosingsquarecomb by D.squared;
+sub E enclosingsquarecomb by E.squared;
+sub F enclosingsquarecomb by F.squared;
+sub G enclosingsquarecomb by G.squared;
+sub H enclosingsquarecomb by H.squared;
+sub I enclosingsquarecomb by I.squared;
+sub J enclosingsquarecomb by J.squared;
+sub K enclosingsquarecomb by K.squared;
+sub L enclosingsquarecomb by L.squared;
+sub M enclosingsquarecomb by M.squared;
+sub N enclosingsquarecomb by N.squared;
+sub O enclosingsquarecomb by O.squared;
+sub P enclosingsquarecomb by P.squared;
+sub Q enclosingsquarecomb by Q.squared;
+sub R enclosingsquarecomb by R.squared;
+sub S enclosingsquarecomb by S.squared;
+sub T enclosingsquarecomb by T.squared;
+sub U enclosingsquarecomb by U.squared;
+sub V enclosingsquarecomb by V.squared;
+sub W enclosingsquarecomb by W.squared;
+sub X enclosingsquarecomb by X.squared;
+sub Y enclosingsquarecomb by Y.squared;
+sub Z enclosingsquarecomb by Z.squared;
+sub zero enclosingsquarecomb by zero.squared;
+sub one enclosingsquarecomb by one.squared;
+sub two enclosingsquarecomb by two.squared;
+sub three enclosingsquarecomb by three.squared;
+sub four enclosingsquarecomb by four.squared;
+sub five enclosingsquarecomb by five.squared;
+sub six enclosingsquarecomb by six.squared;
+sub seven enclosingsquarecomb by seven.squared;
+sub eight enclosingsquarecomb by eight.squared;
+sub nine enclosingsquarecomb by nine.squared;
+sub zero.slash enclosingsquarecomb by zero.slash.squared;
+sub one.ss01 enclosingsquarecomb by one.ss01.squared;
+sub three.1 enclosingsquarecomb by three.1.squared;
+sub four.ss01 enclosingsquarecomb by four.ss01.squared;
+sub six.ss01 enclosingsquarecomb by six.ss01.squared;
+sub nine.ss01 enclosingsquarecomb by nine.ss01.squared;
+sub exclam enclosingsquarecomb by exclam.squared;
+sub question enclosingsquarecomb by question.squared;
+sub numbersign enclosingsquarecomb by numbersign.squared;
+sub hyphen enclosingsquarecomb by hyphen.squared;
+sub less enclosingsquarecomb by less.squared;
+sub greater enclosingsquarecomb by greater.squared;
+sub equal enclosingsquarecomb by equal.squared;
+sub plus enclosingsquarecomb by plus.squared;
+sub minus enclosingsquarecomb by minus.squared;
+sub multiply enclosingsquarecomb by multiply.squared;
+sub divide enclosingsquarecomb by divide.squared;
+sub upArrow enclosingsquarecomb by upArrow.squared;
+sub downArrow enclosingsquarecomb by downArrow.squared;
+sub leftArrow enclosingsquarecomb by leftArrow.squared;
+sub rightArrow enclosingsquarecomb by rightArrow.squared;
+sub dngb_check enclosingsquarecomb by dngb_check.squared;
+sub dngb_ballotx enclosingsquarecomb by dngb_ballotx.squared;
+
+# enclosingsquarecomb * -> composite
+sub enclosingsquarecomb A by A.squared;
+sub enclosingsquarecomb B by B.squared;
+sub enclosingsquarecomb C by C.squared;
+sub enclosingsquarecomb D by D.squared;
+sub enclosingsquarecomb E by E.squared;
+sub enclosingsquarecomb F by F.squared;
+sub enclosingsquarecomb G by G.squared;
+sub enclosingsquarecomb H by H.squared;
+sub enclosingsquarecomb I by I.squared;
+sub enclosingsquarecomb J by J.squared;
+sub enclosingsquarecomb K by K.squared;
+sub enclosingsquarecomb L by L.squared;
+sub enclosingsquarecomb M by M.squared;
+sub enclosingsquarecomb N by N.squared;
+sub enclosingsquarecomb O by O.squared;
+sub enclosingsquarecomb P by P.squared;
+sub enclosingsquarecomb Q by Q.squared;
+sub enclosingsquarecomb R by R.squared;
+sub enclosingsquarecomb S by S.squared;
+sub enclosingsquarecomb T by T.squared;
+sub enclosingsquarecomb U by U.squared;
+sub enclosingsquarecomb V by V.squared;
+sub enclosingsquarecomb W by W.squared;
+sub enclosingsquarecomb X by X.squared;
+sub enclosingsquarecomb Y by Y.squared;
+sub enclosingsquarecomb Z by Z.squared;
+sub enclosingsquarecomb zero by zero.squared;
+sub enclosingsquarecomb one by one.squared;
+sub enclosingsquarecomb two by two.squared;
+sub enclosingsquarecomb three by three.squared;
+sub enclosingsquarecomb four by four.squared;
+sub enclosingsquarecomb five by five.squared;
+sub enclosingsquarecomb six by six.squared;
+sub enclosingsquarecomb seven by seven.squared;
+sub enclosingsquarecomb eight by eight.squared;
+sub enclosingsquarecomb nine by nine.squared;
+sub enclosingsquarecomb zero.slash by zero.slash.squared;
+sub enclosingsquarecomb one.ss01 by one.ss01.squared;
+sub enclosingsquarecomb three.1 by three.1.squared;
+sub enclosingsquarecomb four.ss01 by four.ss01.squared;
+sub enclosingsquarecomb six.ss01 by six.ss01.squared;
+sub enclosingsquarecomb nine.ss01 by nine.ss01.squared;
+sub enclosingsquarecomb exclam by exclam.squared;
+sub enclosingsquarecomb question by question.squared;
+sub enclosingsquarecomb numbersign by numbersign.squared;
+sub enclosingsquarecomb hyphen by hyphen.squared;
+sub enclosingsquarecomb less by less.squared;
+sub enclosingsquarecomb greater by greater.squared;
+sub enclosingsquarecomb equal by equal.squared;
+sub enclosingsquarecomb plus by plus.squared;
+sub enclosingsquarecomb minus by minus.squared;
+sub enclosingsquarecomb multiply by multiply.squared;
+sub enclosingsquarecomb divide by divide.squared;
+sub enclosingsquarecomb upArrow by upArrow.squared;
+sub enclosingsquarecomb downArrow by downArrow.squared;
+sub enclosingsquarecomb leftArrow by leftArrow.squared;
+sub enclosingsquarecomb rightArrow by rightArrow.squared;
+sub enclosingsquarecomb dngb_check by dngb_check.squared;
+sub enclosingsquarecomb dngb_ballotx by dngb_ballotx.squared;
+
+# * enclosingcirclecomb -> composite
+sub A enclosingcirclecomb by A.circled;
+sub B enclosingcirclecomb by B.circled;
+sub C enclosingcirclecomb by C.circled;
+sub D enclosingcirclecomb by D.circled;
+sub E enclosingcirclecomb by E.circled;
+sub F enclosingcirclecomb by F.circled;
+sub G enclosingcirclecomb by G.circled;
+sub H enclosingcirclecomb by H.circled;
+sub I enclosingcirclecomb by I.circled;
+sub J enclosingcirclecomb by J.circled;
+sub K enclosingcirclecomb by K.circled;
+sub L enclosingcirclecomb by L.circled;
+sub M enclosingcirclecomb by M.circled;
+sub N enclosingcirclecomb by N.circled;
+sub O enclosingcirclecomb by O.circled;
+sub P enclosingcirclecomb by P.circled;
+sub Q enclosingcirclecomb by Q.circled;
+sub R enclosingcirclecomb by R.circled;
+sub S enclosingcirclecomb by S.circled;
+sub T enclosingcirclecomb by T.circled;
+sub U enclosingcirclecomb by U.circled;
+sub V enclosingcirclecomb by V.circled;
+sub W enclosingcirclecomb by W.circled;
+sub X enclosingcirclecomb by X.circled;
+sub Y enclosingcirclecomb by Y.circled;
+sub Z enclosingcirclecomb by Z.circled;
+sub zero enclosingcirclecomb by zero.circled;
+sub one enclosingcirclecomb by one.circled;
+sub two enclosingcirclecomb by two.circled;
+sub three enclosingcirclecomb by three.circled;
+sub four enclosingcirclecomb by four.circled;
+sub five enclosingcirclecomb by five.circled;
+sub six enclosingcirclecomb by six.circled;
+sub seven enclosingcirclecomb by seven.circled;
+sub eight enclosingcirclecomb by eight.circled;
+sub nine enclosingcirclecomb by nine.circled;
+sub zero.slash enclosingcirclecomb by zero.slash.circled;
+sub one.ss01 enclosingcirclecomb by one.ss01.circled;
+sub three.1 enclosingcirclecomb by three.1.circled;
+sub four.ss01 enclosingcirclecomb by four.ss01.circled;
+sub six.ss01 enclosingcirclecomb by six.ss01.circled;
+sub nine.ss01 enclosingcirclecomb by nine.ss01.circled;
+sub exclam enclosingcirclecomb by exclam.circled;
+sub question enclosingcirclecomb by question.circled;
+sub numbersign enclosingcirclecomb by numbersign.circled;
+sub hyphen enclosingcirclecomb by hyphen.circled;
+sub less enclosingcirclecomb by less.circled;
+sub greater enclosingcirclecomb by greater.circled;
+sub equal enclosingcirclecomb by equal.circled;
+sub plus enclosingcirclecomb by plus.circled;
+sub minus enclosingcirclecomb by minus.circled;
+sub multiply enclosingcirclecomb by multiply.circled;
+sub divide enclosingcirclecomb by divide.circled;
+sub upArrow enclosingcirclecomb by upArrow.circled;
+sub downArrow enclosingcirclecomb by downArrow.circled;
+sub leftArrow enclosingcirclecomb by leftArrow.circled;
+sub rightArrow enclosingcirclecomb by rightArrow.circled;
+sub dngb_check enclosingcirclecomb by dngb_check.circled;
+sub dngb_ballotx enclosingcirclecomb by dngb_ballotx.circled;
+
+# enclosingcirclecomb * -> composite
+sub enclosingcirclecomb A by A.circled;
+sub enclosingcirclecomb B by B.circled;
+sub enclosingcirclecomb C by C.circled;
+sub enclosingcirclecomb D by D.circled;
+sub enclosingcirclecomb E by E.circled;
+sub enclosingcirclecomb F by F.circled;
+sub enclosingcirclecomb G by G.circled;
+sub enclosingcirclecomb H by H.circled;
+sub enclosingcirclecomb I by I.circled;
+sub enclosingcirclecomb J by J.circled;
+sub enclosingcirclecomb K by K.circled;
+sub enclosingcirclecomb L by L.circled;
+sub enclosingcirclecomb M by M.circled;
+sub enclosingcirclecomb N by N.circled;
+sub enclosingcirclecomb O by O.circled;
+sub enclosingcirclecomb P by P.circled;
+sub enclosingcirclecomb Q by Q.circled;
+sub enclosingcirclecomb R by R.circled;
+sub enclosingcirclecomb S by S.circled;
+sub enclosingcirclecomb T by T.circled;
+sub enclosingcirclecomb U by U.circled;
+sub enclosingcirclecomb V by V.circled;
+sub enclosingcirclecomb W by W.circled;
+sub enclosingcirclecomb X by X.circled;
+sub enclosingcirclecomb Y by Y.circled;
+sub enclosingcirclecomb Z by Z.circled;
+sub enclosingcirclecomb zero by zero.circled;
+sub enclosingcirclecomb one by one.circled;
+sub enclosingcirclecomb two by two.circled;
+sub enclosingcirclecomb three by three.circled;
+sub enclosingcirclecomb four by four.circled;
+sub enclosingcirclecomb five by five.circled;
+sub enclosingcirclecomb six by six.circled;
+sub enclosingcirclecomb seven by seven.circled;
+sub enclosingcirclecomb eight by eight.circled;
+sub enclosingcirclecomb nine by nine.circled;
+sub enclosingcirclecomb zero.slash by zero.slash.circled;
+sub enclosingcirclecomb one.ss01 by one.ss01.circled;
+sub enclosingcirclecomb three.1 by three.1.circled;
+sub enclosingcirclecomb four.ss01 by four.ss01.circled;
+sub enclosingcirclecomb six.ss01 by six.ss01.circled;
+sub enclosingcirclecomb nine.ss01 by nine.ss01.circled;
+sub enclosingcirclecomb exclam by exclam.circled;
+sub enclosingcirclecomb question by question.circled;
+sub enclosingcirclecomb numbersign by numbersign.circled;
+sub enclosingcirclecomb hyphen by hyphen.circled;
+sub enclosingcirclecomb less by less.circled;
+sub enclosingcirclecomb greater by greater.circled;
+sub enclosingcirclecomb equal by equal.circled;
+sub enclosingcirclecomb plus by plus.circled;
+sub enclosingcirclecomb minus by minus.circled;
+sub enclosingcirclecomb multiply by multiply.circled;
+sub enclosingcirclecomb divide by divide.circled;
+sub enclosingcirclecomb upArrow by upArrow.circled;
+sub enclosingcirclecomb downArrow by downArrow.circled;
+sub enclosingcirclecomb leftArrow by leftArrow.circled;
+sub enclosingcirclecomb rightArrow by rightArrow.circled;
+sub enclosingcirclecomb dngb_check by dngb_check.circled;
+sub enclosingcirclecomb dngb_ballotx by dngb_ballotx.circled;