ligature features (liga, rlig, dlig)

This commit is contained in:
Rasmus Andersson 2019-08-04 19:16:55 -07:00
parent 1a0a8dc178
commit 672ead9a6c
4 changed files with 256 additions and 244 deletions

View file

@ -2119,6 +2119,10 @@ code = "sub parenleft by parenleft.case;\012sub parenright by parenright.case;\0
name = case; name = case;
}, },
{ {
code = "include(features/rlig.fea);";
name = rlig;
},
{
code = "include(features/liga.fea);"; code = "include(features/liga.fea);";
name = liga; name = liga;
}, },

View file

@ -1,3 +1,6 @@
# Discretionary Ligatures
# https://docs.microsoft.com/en-us/typography/opentype/spec/features_ae#dlig
sub exclam question by interrobang; sub exclam question by interrobang;
sub question exclam by interrobang; sub question exclam by interrobang;
sub exclamdown questiondown by invertedinterrobang; sub exclamdown questiondown by invertedinterrobang;

View file

@ -1,3 +1,6 @@
# Standard ligatures
# https://docs.microsoft.com/en-us/typography/opentype/spec/features_ko#liga
@DASH = [ @DASH = [
hyphen hyphen
endash 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 x' @Whitespace @Whitespace @Numeral by multiply; # 3x 9
sub @Numeral @Whitespace x' @Whitespace @Whitespace @Numeral by multiply; # 3 x 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 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;

246
src/features/rlig.fea Normal file
View file

@ -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;