summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRasmus Andersson <rasmus@notion.se>2019-08-05 01:17:39 +0300
committerRasmus Andersson <rasmus@notion.se>2019-08-05 01:17:39 +0300
commit49cd0c56c80c87ed721a3a317e891348f4515da1 (patch)
tree704f971fd494073e67c8e1e518af8f5aa32ea5cb
parent3c2b3619da463f2f86a4a654495efb4e4fda504d (diff)
downloadinter-49cd0c56c80c87ed721a3a317e891348f4515da1.tar.xz
moves feature code out of the glyphs file
-rw-r--r--Makefile5
-rwxr-xr-xinit.sh5
-rw-r--r--src/Inter.glyphs713
-rw-r--r--src/features/README.md21
-rw-r--r--src/features/calt.fea237
-rw-r--r--src/features/ccmp.fea556
-rw-r--r--src/features/cpsp.fea1
-rw-r--r--src/features/cv01-one.fea5
-rw-r--r--src/features/cv02-four.fea5
-rw-r--r--src/features/cv03-six.fea5
-rw-r--r--src/features/cv04-nine.fea5
-rw-r--r--src/features/cv05-l-tail.fea14
-rw-r--r--src/features/cv06-r.fea14
-rw-r--r--src/features/cv07-germandbls.fea2
-rw-r--r--src/features/cv08-i-serif.fea33
-rw-r--r--src/features/cv09-three.fea5
-rw-r--r--src/features/cv10-g-spur.fea11
-rw-r--r--src/features/cv11-single-storey-a.fea33
-rw-r--r--src/features/dlig.fea4
-rw-r--r--src/features/frac.fea198
-rw-r--r--src/features/liga.fea282
-rw-r--r--src/features/salt.fea81
-rw-r--r--src/features/ss01-alt-digits.fea21
-rw-r--r--src/features/ss02-disambiguation.fea51
-rw-r--r--src/features/ss03-r-curve.fea332
-rw-r--r--src/features/subs.fea43
-rw-r--r--src/features/sups.fea43
-rw-r--r--src/features/zero.fea4
28 files changed, 2587 insertions, 142 deletions
diff --git a/Makefile b/Makefile
index d80bd73e8..a0e7d90ad 100644
--- a/Makefile
+++ b/Makefile
@@ -117,9 +117,12 @@ src/Inter.glyphs:
@true
# instance UFOs <- master UFOs
-build/ufo/Inter-%.ufo: src/Inter.designspace $(all_ufo_masters)
+build/ufo/Inter-%.ufo: build/ufo/features src/Inter.designspace $(all_ufo_masters)
misc/fontbuild instancegen src/Inter.designspace $*
+build/ufo/features:
+ ln -s ../../src/features build/ufo/features
+
# make sure intermediate UFOs are not gc'd by make
.PRECIOUS: build/ufo/Inter-%.ufo
diff --git a/init.sh b/init.sh
index 784073dcc..422296d97 100755
--- a/init.sh
+++ b/init.sh
@@ -97,7 +97,7 @@ else
# TODO: allow setting a flag to recreate venv
if $clean; then
rm -rf "$VENV_DIR"
- fi
+ fi
if [[ ! -d "$VENV_DIR/bin" ]]; then
require_virtualenv
@@ -402,6 +402,7 @@ else
echo -n " src/Inter-${style}.ufo/*.plist" >> "$GEN_MAKE_FILE"
echo -n " src/Inter-${style}.ufo/*.fea" >> "$GEN_MAKE_FILE"
echo -n " src/Inter-${style}.ufo/glyphs/*.plist" >> "$GEN_MAKE_FILE"
+ echo -n " src/features/*" >> "$GEN_MAKE_FILE"
# echo -n " src/Inter-${style}.ufo/glyphs/*.glif" >> "$GEN_MAKE_FILE"
echo -n ")" >> "$GEN_MAKE_FILE"
echo " src/Inter.designspace" >> "$GEN_MAKE_FILE"
@@ -520,7 +521,7 @@ else
# echo -n " ${style}" >> "$GEN_MAKE_FILE"
# done
# echo "" >> "$GEN_MAKE_FILE"
-
+
echo -n ".PHONY: all_otf all_ttf_hinted all_ttf all_web all_web_hinted all_ufo all_check_const" >> "$GEN_MAKE_FILE"
for style in "${all_styles[@]}"; do
diff --git a/src/Inter.glyphs b/src/Inter.glyphs
index f73700d2b..ffe816099 100644
--- a/src/Inter.glyphs
+++ b/src/Inter.glyphs
@@ -2,6 +2,14 @@
.appVersion = "1252";
classes = (
{
+code = "zero\012one\012two\012twostroke\012three\012four\012five\012Tonefive\012six\012seven\012eight\012nine\012zero.slash\012one.ss01\012three.1\012four.ss01\012six.ss01\012nine.ss01\012zero.tf\012one.tf\012two.tf\012three.tf\012four.tf\012five.tf\012six.tf\012seven.tf\012eight.tf\012nine.tf\012zero.tf.slash\012one.tf.ss01\012three.1.tf\012four.tf.ss01\012six.tf.ss01\012nine.tf.ss01\012";
+name = Numeral;
+},
+{
+code = "space\012nbspace\012narrownbspace\012mediumspace-math\012enquad\012emquad\012enspace\012emspace\012thirdemspace\012quarteremspace\012sixthemspace\012figurespace\012punctuationspace\012thinspace\012hairspace\012zerowidthspace\012";
+name = Whitespace;
+},
+{
automatic = 1;
code = "A Adieresis Atilde Agrave Aacute Acircumflex Aring Amacron Abreve Aogonek Acaron Adieresismacron Adotmacron Aringacute Adblgrave Ainvertedbreve uni0226 Aringbelow Adotbelow Ahookabove Acircumflexacute Acircumflexgrave Acircumflexhookabove Acircumflextilde Acircumflexdotbelow Abreveacute Abrevegrave Abrevehookabove Abrevetilde Abrevedotbelow Alpha Alphatonos uni1F08 uni1F09 uni1F0A uni1F0B uni1F0C uni1F0D uni1F0E uni1F0F uni1FB8 uni1FB9 uni1FBA uni023A uni1FBB afii10017 Abrevecyrillic Adieresiscyrillic uni1F88 uni1F89 uni1F8A uni1F8B uni1F8C uni1F8D uni1F8E uni1F8F uni1FBC Lambda AE AEmacron AEacute Aiecyrillic B Bdotaccent Bdotbelow Blinebelow uni0243 Bhook afii10019 Beta C Chook Ccedilla Cacute Ccircumflex Cdotaccent Ccaron Ccedillaacute uni023B Oopen uni03F9 D Dhook Dcaron Ddotaccent Ddotbelow Dlinebelow Dcedilla Dcircumflexbelow Dbar1 Dz Dzcaron_ E Egrave Eacute Ecircumflex Edieresis Emacron Ebreve Edotaccent Eogonek Ecaron Edblgrave Einvertedbreve uni0228 Emacrongrave Emacronacute Ecircumflexbelow Etildebelow Ecedillabreve Edotbelow Ehookabove Etilde Ecircumflexacute Ecircumflexgrave Ecircumflexhookabove Ecircumflextilde Ecircumflexdotbelow uni0246 Eturn Epsilon Epsilontonos uni1F18 uni1F19 uni1F1A uni1F1B uni1F1C uni1F1D uni1FC8 uni1FC9 afii10022 uni0400 afii10023 Iebrevecyrillic F Fhook Fdotaccent Fturn G Gbar Ghook Gcircumflex Gbreve Gdotaccent Gcommaaccent Gcaron Gacute Gmacron G.1 Ghook.1 Gcircumflex.1 Gbreve.1 Gdotaccent.1 Gcommaaccent.1 Gcaron.1 Gacute.1 Gmacron.1 H Hcedilla Hcircumflex uni021E Hdotaccent Hdotbelow Hdieresis Hbrevebelow Hbar Enhookcyrillic Endescendercyrillic uni04C9 Enghecyrillic uni01F6 Eta Etatonos uni1F28 uni1F29 uni1F2A uni1F2B uni1F2C uni1F2D uni1F2E uni1F2F uni1FCA uni1FCB afii10031 uni1F98 uni1F99 uni1F9A uni1F9B uni1F9C uni1F9D uni1F9E uni1F9F uni1FCC I Idieresis Idieresisacute Istroke Itildebelow Igrave Iacute Icircumflex Itilde Imacron Ibreve Iogonek Idotaccent Icaron Idblgrave Iinvertedbreve Ihookabove Idotbelow Iota Iotatonos Iotadieresis uni1F38 uni1F39 uni1F3A uni1F3B uni1F3C uni1F3D uni1F3E uni1F3F uni1FD8 uni1FD9 uni1FDA uni1FDB afii10055 afii10056 I.1 Idieresis.1 Idieresisacute.1 Istroke.1 Itildebelow.1 Igrave.1 Iacute.1 Icircumflex.1 Itilde.1 Imacron.1 Ibreve.1 Iogonek.1 Idotaccent.1 Icaron.1 Idblgrave.1 Iinvertedbreve.1 Ihookabove.1 Idotbelow.1 uni1F38.1 uni1F39.1 uni1F3A.1 uni1F3B.1 uni1F3C.1 uni1F3D.1 uni1F3E.1 uni1F3F.1 uni1FD8.1 uni1FD9.1 uni1FDA.1 uni1FDB.1 afii10055.1 afii10056.1 J Jcircumflex uni0248 uni037F afii10057 K Kcommaaccent Kcaron Kacute Kdotbelow Klinebelow Kabashkircyrillic Kadescendercyrillic Khook Kappa L Lacute Lcommaaccent Lcaron Ldotbelow Ldotbelowmacron Llinebelow Lcircumflexbelow Lslash Lbar Lj M Macute Mdotaccent Mdotbelow uni04CD Mu uni03FA afii10030 N Ntilde Nacute Ncommaaccent Ncaron uni01F8 Ndotaccent Ndotbelow Nlinebelow Ncircumflexbelow Nhook Eng afii10026 uni040D afii10027 Imacroncyrillic Idieresiscyrillic uni048A uni0376 Nu Nj O Odieresis Otilde Oslash Ohorn Ograve Oacute Ocircumflex Omacron Obreve Ohungarumlaut Ocaron Oogonek Oogonekmacron Odblgrave Oinvertedbreve uni022A uni022C uni022E uni0230 Otildeacute Otildedieresis Omacrongrave Omacronacute Odotbelow Ohookabove Ocircumflexacute Ocircumflexgrave Ocircumflexhookabove Ocircumflextilde Ocircumflexdotbelow Ohornacute Ohorngrave Ohornhookabove Ohorntilde Ohorndotbelow Oslashacute Omicron Omicrontonos uni1F48 uni1F49 uni1F4A uni1F4B uni1F4C uni1F4D uni1FF8 uni03F4 uni1FF9 afii10032 Odieresiscyrillic Obar Obarredcyrillic Obarreddieresiscyrillic OE P Pacute Pdotaccent uni048E Phook Rho uni1FEC Q R Racute Rcommaaccent Rcaron Rdblgrave Rinvertedbreve Rdotaccent Rdotbelow Rdotbelowmacron Rlinebelow uni024C S Sacute Scircumflex Scedilla Scaron Scommaaccent Sdotaccent Sdotbelow Sacutedotaccent Scarondotaccent Sdotbelowdotaccent afii10054 Tonetwo Germandbls T Tcommaaccent Tcaron uni021A Tdotaccent Tdotbelow Tlinebelow Tcircumflexbelow Thook Trthook uni023E Tau U Uhorn Ugrave Uacute Ucircumflex Udieresis Utilde Umacron Ubreve Uring Uhungarumlaut Uogonek Ucaron Udieresismacron Udieresisacute Udieresiscaron Udieresisgrave Udblgrave Uinvertedbreve Udieresisbelow Utildebelow Ucircumflexbelow Utildeacute Umacrondieresis Udotbelow Uhookabove Uhornacute Uhorngrave Uhornhookabove Uhorntilde Uhorndotbelow uni0244 V Vtilde Vdotbelow W Wcircumflex Wgrave Wacute Wdieresis Wdotaccent Wdotbelow X Xdotaccent Xdieresis Hadescendercyrillic uni04FC Chi Y Yhook Yacute Ycircumflex Ydieresis uni0232 Ydotaccent Ygrave Ydotbelow Yhookabove Ytilde uni024E Upsilon Upsilontonos Upsilondieresis uni1F59 uni1F5B uni1F5D uni1F5F uni1FE8 uni1FE9 uni1FEA uni1FEB Z Zacute Zdotaccent Zcaron Zcircumflex Zdotbelow Zlinebelow uni0224 Zbar Zeta uni2C7F Q_rthook Thorn Gamma Delta Theta Xi Pi Sigma Phi Psi Omega uni1FFB Omegatonos uni1F68 uni1F69 uni1F6A uni1F6B uni1F6C uni1F6D uni1F6E uni1F6F uni1FFA uni1FA8 uni1FA9 uni1FAA uni1FAB uni1FAC uni1FAD uni1FAE uni1FAF uni1FFC Upsilon2 Upsilonhooksymbol Upsilonacutehooksymbolgreek Upsilondieresishooksymbolgreek Gamma1 afii10018 afii10050 uni04FA afii10021 afii10024 Zhedescendercyrillic afii10025 Kacyr Kaverticalstrokecyrillic Kahookcyrillic afii10029 afii10147 afii10145 afii10037 afii10038 afii10040 Tetsecyrillic afii10041 Chedescendercyrillic Cheverticalstrokecyrillic Shhacyrillic afii10060 afii10042 afii10043 afii10044 afii10045 afii10046 afii10058 afii10059 afii10047 afii10048 afii10049 Ghemiddlehookcyrillic Pemiddlehookcyrillic afii10053 Haabkhasiancyrillic Cheabkhasiancyrillic Schwacyrillic Dzeabkhasiancyrillic afii10148 afii10051 Tonefive degreekelvin angstrom A.squared B.squared C.squared D.squared E.squared F.squared G.squared H.squared I.squared J.squared K.squared L.squared M.squared N.squared O.squared P.squared Q.squared R.squared S.squared T.squared U.squared V.squared W.squared X.squared Y.squared Z.squared Btopbar DZ Eth Dcroat Dtopbar Epsilon1 Esh Ezh Ezhcaron Ezhreversed uni021C IJ Iota1 LJ Ldot NJ OI Schwa Tbar Tonesix Vcursive YR mcapturn uni01F7 uni0220 uni0222 uni0241 uni0245 uni1EFA uni1EFC uni1EFE Aogonek.NAV Eogonek.NAV Oogonek.NAV afii10020 afii10052 afii10061 afii10033 afii10034 afii10035 afii10036 afii10062 afii10039 Omegacyrillic afii10146 Eiotifiedcyrillic Yuslittlecyrillic Yuslittleiotifiedcyrillic Yusbigcyrillic Yusbigiotifiedcyrillic Ksicyrillic Psicyrillic Izhitsadblgravecyrillic Ukcyrillic Ghestrokecyrillic Zedescendercyrillic Esdescendercyrillic Tedescendercyrillic Ustraightcyrillic Ustraightstrokecyrillic Chedescenderabkhasiancyrillic palochkacyrillic Zhebrevecyrillic Eltail-cy Chekhakassiancyrillic Schwadieresiscyrillic Zhedieresiscyrillic Zedieresiscyrillic uni04EC Umacroncyrillic Udieresiscyrillic Uhungarumlautcyrillic Chedieresiscyrillic uni04F6 Yerudieresiscyrillic uni04FE Koppacyrillic uni048C uni0370 uni0372 uni03D8 Stigma Digamma Koppa Sampi uni03CF uni03F7 uni03FD uni03FE uni03FF";
name = Uppercase;
@@ -13,7 +21,7 @@ name = Lowercase;
},
{
automatic = 1;
-code = "A Adieresis Atilde Agrave Aacute Acircumflex Aring Amacron Abreve Aogonek Acaron Adieresismacron Adotmacron Aringacute Adblgrave Ainvertedbreve uni0226 Aringbelow Adotbelow Ahookabove Acircumflexacute Acircumflexgrave Acircumflexhookabove Acircumflextilde Acircumflexdotbelow Abreveacute Abrevegrave Abrevehookabove Abrevetilde Abrevedotbelow Alpha Alphatonos uni1F08 uni1F09 uni1F0A uni1F0B uni1F0C uni1F0D uni1F0E uni1F0F uni1FB8 uni1FB9 uni1FBA uni023A uni1FBB afii10017 Abrevecyrillic Adieresiscyrillic uni1F88 uni1F89 uni1F8A uni1F8B uni1F8C uni1F8D uni1F8E uni1F8F uni1FBC Lambda AE AEmacron AEacute Aiecyrillic B Bdotaccent Bdotbelow Blinebelow uni0243 Bhook afii10019 Beta C Chook Ccedilla Cacute Ccircumflex Cdotaccent Ccaron Ccedillaacute uni023B Oopen uni03F9 D Dhook Dcaron Ddotaccent Ddotbelow Dlinebelow Dcedilla Dcircumflexbelow Dbar1 Dz Dzcaron_ E Egrave Eacute Ecircumflex Edieresis Emacron Ebreve Edotaccent Eogonek Ecaron Edblgrave Einvertedbreve uni0228 Emacrongrave Emacronacute Ecircumflexbelow Etildebelow Ecedillabreve Edotbelow Ehookabove Etilde Ecircumflexacute Ecircumflexgrave Ecircumflexhookabove Ecircumflextilde Ecircumflexdotbelow uni0246 Eturn Epsilon Epsilontonos uni1F18 uni1F19 uni1F1A uni1F1B uni1F1C uni1F1D uni1FC8 uni1FC9 afii10022 uni0400 afii10023 Iebrevecyrillic F Fhook Fdotaccent Fturn G Gbar Ghook Gcircumflex Gbreve Gdotaccent Gcommaaccent Gcaron Gacute Gmacron G.1 Gbar.1 Ghook.1 Gcircumflex.1 Gbreve.1 Gdotaccent.1 Gcommaaccent.1 Gcaron.1 Gacute.1 Gmacron.1 H Hcedilla Hcircumflex uni021E Hdotaccent Hdotbelow Hdieresis Hbrevebelow Hbar Enhookcyrillic Endescendercyrillic uni04C9 Enghecyrillic uni01F6 Eta Etatonos uni1F28 uni1F29 uni1F2A uni1F2B uni1F2C uni1F2D uni1F2E uni1F2F uni1FCA uni1FCB afii10031 uni1F98 uni1F99 uni1F9A uni1F9B uni1F9C uni1F9D uni1F9E uni1F9F uni1FCC I Idieresis Idieresisacute Istroke Itildebelow Igrave Iacute Icircumflex Itilde Imacron Ibreve Iogonek Idotaccent Icaron Idblgrave Iinvertedbreve Ihookabove Idotbelow Iota Iotatonos Iotadieresis uni1F38 uni1F39 uni1F3A uni1F3B uni1F3C uni1F3D uni1F3E uni1F3F uni1FD8 uni1FD9 uni1FDA uni1FDB afii10055 afii10056 I.1 Idieresis.1 Idieresisacute.1 Istroke.1 Itildebelow.1 Igrave.1 Iacute.1 Icircumflex.1 Itilde.1 Imacron.1 Ibreve.1 Iogonek.1 Idotaccent.1 Icaron.1 Idblgrave.1 Iinvertedbreve.1 Ihookabove.1 Idotbelow.1 uni1F38.1 uni1F39.1 uni1F3A.1 uni1F3B.1 uni1F3C.1 uni1F3D.1 uni1F3E.1 uni1F3F.1 uni1FD8.1 uni1FD9.1 uni1FDA.1 uni1FDB.1 afii10055.1 afii10056.1 J Jcircumflex uni0248 uni037F afii10057 K Kcommaaccent Kcaron Kacute Kdotbelow Klinebelow Kabashkircyrillic Kadescendercyrillic Khook Kappa L Lacute Lcommaaccent Lcaron Ldotbelow Ldotbelowmacron Llinebelow Lcircumflexbelow Lslash Lbar Lj M Macute Mdotaccent Mdotbelow uni04CD Mu uni03FA afii10030 N Ntilde Nacute Ncommaaccent Ncaron uni01F8 Ndotaccent Ndotbelow Nlinebelow Ncircumflexbelow Nhook Eng afii10026 uni040D afii10027 Imacroncyrillic Idieresiscyrillic uni048A uni0376 Nu Nj O Odieresis Otilde Oslash Ohorn Ograve Oacute Ocircumflex Omacron Obreve Ohungarumlaut Ocaron Oogonek Oogonekmacron Odblgrave Oinvertedbreve uni022A uni022C uni022E uni0230 Otildeacute Otildedieresis Omacrongrave Omacronacute Odotbelow Ohookabove Ocircumflexacute Ocircumflexgrave Ocircumflexhookabove Ocircumflextilde Ocircumflexdotbelow Ohornacute Ohorngrave Ohornhookabove Ohorntilde Ohorndotbelow Oslashacute Omicron Omicrontonos uni1F48 uni1F49 uni1F4A uni1F4B uni1F4C uni1F4D uni1FF8 uni03F4 uni1FF9 afii10032 Odieresiscyrillic Obar Obarredcyrillic Obarreddieresiscyrillic OE P Pacute Pdotaccent uni048E Phook Rho uni1FEC Q R Racute Rcommaaccent Rcaron Rdblgrave Rinvertedbreve Rdotaccent Rdotbelow Rdotbelowmacron Rlinebelow response Rx uni024C S Sacute Scircumflex Scedilla Scaron Scommaaccent Sdotaccent Sdotbelow Sacutedotaccent Scarondotaccent Sdotbelowdotaccent afii10054 Tonetwo Germandbls T Tcommaaccent Tcaron uni021A Tdotaccent Tdotbelow Tlinebelow Tcircumflexbelow Thook Trthook uni023E Tau U Uhorn Ugrave Uacute Ucircumflex Udieresis Utilde Umacron Ubreve Uring Uhungarumlaut Uogonek Ucaron Udieresismacron Udieresisacute Udieresiscaron Udieresisgrave Udblgrave Uinvertedbreve Udieresisbelow Utildebelow Ucircumflexbelow Utildeacute Umacrondieresis Udotbelow Uhookabove Uhornacute Uhorngrave Uhornhookabove Uhorntilde Uhorndotbelow uni0244 V Vtilde Vdotbelow W Wcircumflex Wgrave Wacute Wdieresis Wdotaccent Wdotbelow X Xdotaccent Xdieresis Hadescendercyrillic uni04FC Chi Y Yhook Yacute Ycircumflex Ydieresis uni0232 Ydotaccent Ygrave Ydotbelow Yhookabove Ytilde uni024E Upsilon Upsilontonos Upsilondieresis uni1F59 uni1F5B uni1F5D uni1F5F uni1FE8 uni1FE9 uni1FEA uni1FEB Z Zacute Zdotaccent Zcaron Zcircumflex Zdotbelow Zlinebelow uni0224 Zbar Zeta uni2C7F a aacute abreve abreveacute abrevedotbelow abrevegrave abrevehookabove abrevetilde acaron acircumflex acircumflexacute acircumflexdotbelow acircumflexgrave acircumflexhookabove acircumflextilde adblgrave adieresis adieresismacron uni0227 adotbelow adotmacron agrave ahookabove ainvertedbreve amacron aogonek arighthalfring aring aringacute aringbelow atilde aturn acyrillic abrevecyrillic adieresiscyrillic ae aemacron aeacute aiecyrillic a.1 aacute.1 abreve.1 abreveacute.1 abrevedotbelow.1 abrevegrave.1 abrevehookabove.1 abrevetilde.1 acaron.1 acircumflex.1 acircumflexacute.1 acircumflexdotbelow.1 acircumflexgrave.1 acircumflexhookabove.1 acircumflextilde.1 adblgrave.1 adieresis.1 adieresismacron.1 uni0227.1 adotbelow.1 adotmacron.1 agrave.1 ahookabove.1 ainvertedbreve.1 amacron.1 aogonek.1 arighthalfring.1 aring.1 aringacute.1 aringbelow.1 atilde.1 b bbar btopbar bhook bdotaccent bdotbelow blinebelow c uni023C chook ccurl ccedilla cacute ccircumflex cdotaccent ccaron ccedillaacute sigmalunatesymbolgreek escyrillic d dcroat drthook dhook dtopbar uni0221 dcaron ddotaccent ddotbelow dlinebelow dcedilla dcircumflexbelow dz dzcaron dzcurl dyogh dong e edieresis uni0247 egrave eacute ecircumflex emacron ebreve edotaccent eogonek ecaron edblgrave einvertedbreve uni0229 emacrongrave emacronacute ecircumflexbelow etildebelow ecedillabreve edotbelow ehookabove etilde ecircumflexacute ecircumflexgrave ecircumflexhookabove ecircumflextilde ecircumflexdotbelow iecyrillic uni0450 iocyrillic iebrevecyrillic eturn f slongstroke slongdotaccent fdotaccent feng g ghook gbar gcircumflex gbreve gdotaccent gcommaaccent gcaron gacute gmacron h hcedilla tshecyrillic djecyrillic hhook henghook hv hturn hturnlthook hturnhook2 hbar hcircumflex uni021F hdotaccent hdotbelow hdieresis hbrevebelow hlinebelow shhacyrillic i idotless idieresis idieresisacute itilde itildebelow uni1E2D.ccmp ibar igrave iacute icircumflex imacron ibreve uni012F.ccmp iogonek icaron idblgrave iinvertedbreve ihookabove idotbelow uni1ECB.ccmp jdotless jdotlessbar uni0249 uni0249.ccmp icyrillic yicyrillic ij j jcrosstail.ccmp jcrosstail jcircumflex jcaron yotgreek jecyrillic lj k khook kcommaaccent kcaron kacute kdotbelow klinebelow kturn l lslash lbar lmidtilde lrthook lbelt lcurl ldot lacute lcommaaccent lcaron ldotbelow ldotbelowmacron llinebelow lcircumflexbelow l.ss02 lslash.ss02 lbar.ss02 lmidtilde.ss02 lbelt.ss02 ldot.ss02 lacute.ss02 lcommaaccent.ss02 lcaron.ss02 ldotbelow.ss02 ldotbelowmacron.ss02 llinebelow.ss02 lcircumflexbelow.ss02 uni04CF m mhook mturn mturndescend macute mdotaccent mdotbelow n ntilde nrthook eng ncurl nlfthook nlegrightlong nacute ncommaaccent ncaron uni01F9 ndotaccent ndotbelow nlinebelow ncircumflexbelow nj o odieresis otilde oslash ohorn ograve oacute ocircumflex omacron obreve ohungarumlaut ocaron oogonek oogonekmacron odblgrave oinvertedbreve uni022B uni022D uni022F uni0231 otildeacute otildedieresis omacrongrave omacronacute odotbelow ohookabove ocircumflexacute ocircumflexgrave ocircumflexhookabove ocircumflextilde ocircumflexdotbelow ohornacute ohorngrave ohornhookabove ohorntilde ohorndotbelow oslashacute omicron omicrontonos uni1F40 uni1F41 uni1F42 uni1F43 uni1F44 uni1F45 uni1F78 fitacyrillic obar ocyrillic odieresiscyrillic oe ukcyrillic p uni048F phook pacute pdotaccent ercyrillic q qhook qrthook Q_rthook r rrthook uni024D rturn rturnrthook rfishhookrev rfishhook rdescend racute rcommaaccent rcaron rdblgrave rinvertedbreve rdotaccent rdotbelow rdotbelowmacron rlinebelow r.1 rrthook.1 uni024D.1 rdescend.1 racute.1 rcommaaccent.1 rcaron.1 rdblgrave.1 rinvertedbreve.1 rdotaccent.1 rdotbelow.1 rdotbelowmacron.1 rlinebelow.1 s srthook uni023F sacute scircumflex scedilla scaron scommaaccent sdotaccent sdotbelow sacutedotaccent scarondotaccent sdotbelowdotaccent dzecyrillic tonetwo germandbls germandbls.1 t tpalatalhook trthook tcurl tccurl tturn tbar tcedilla tcaron tcommaaccent tdotaccent tdotbelow tlinebelow tcircumflexbelow tdieresis u udieresis utilde uhorn micro ubar ugrave uacute ucircumflex umacron ubreve uring uhungarumlaut uogonek ucaron udieresismacron udieresisacute udieresiscaron udieresisgrave udblgrave uinvertedbreve udieresisbelow utildebelow ucircumflexbelow utildeacute umacrondieresis udotbelow uhookabove uhornacute uhorngrave uhornhookabove uhorntilde uhorndotbelow v vturn vtilde vdotbelow w wdieresis wturn wcircumflex wgrave wacute wdotaccent wdotbelow wring x xdotaccent xdieresis khacyrillic chi y ydieresis yhook uni024F yacute ycircumflex uni0233 ydotaccent yring ygrave ydotbelow yhookabove ytilde ucyrillic ushortcyrillic umacroncyrillic udieresiscyrillic uhungarumlautcyrillic yturn z zbar zhook uni0240 zrthook zacute zdotaccent zcaron zcircumflex zdotbelow zlinebelow zcurl Thorn Gamma Delta Theta Xi Pi Sigma Phi Psi Omega uni1FFB Omegatonos uni1F68 uni1F69 uni1F6A uni1F6B uni1F6C uni1F6D uni1F6E uni1F6F uni1FFA uni1FA8 uni1FA9 uni1FAA uni1FAB uni1FAC uni1FAD uni1FAE uni1FAF uni1FFC Upsilon2 Upsilonhooksymbol Upsilonacutehooksymbolgreek Upsilondieresishooksymbolgreek Gamma1 afii10018 afii10050 uni04FA afii10021 afii10024 Zhedescendercyrillic afii10025 Kacyr Kaverticalstrokecyrillic Kahookcyrillic afii10029 afii10147 afii10145 afii10037 afii10038 afii10040 Tetsecyrillic afii10041 Chedescendercyrillic Cheverticalstrokecyrillic Shhacyrillic afii10060 afii10042 afii10043 afii10044 afii10045 afii10046 afii10058 afii10059 afii10047 afii10048 afii10049 Ghemiddlehookcyrillic Pemiddlehookcyrillic afii10053 Haabkhasiancyrillic Cheabkhasiancyrillic Schwacyrillic Dzeabkhasiancyrillic afii10148 afii10051 eth thorn alpha alphatonos uni1F00 uni1F01 uni1F02 uni1F03 uni1F04 uni1F05 uni1F06 uni1F07 uni1F70 uni1F80 uni1F81 uni1F82 uni1F83 uni1F84 uni1F85 uni1F86 uni1F87 uni1FB0 uni1FB1 uni1FB2 uni1FB3 uni1FB4 uni1FB6 uni1FB7 beta gamma delta epsilon epsilontonos epsilonclosed epsilon1 epsilon1rev epsilon1revclosed epsilon1revhook uni1F10 uni1F11 uni1F12 uni1F13 uni1F14 uni1F15 uni1F72 zeta eta etatonos uni1F20 uni1F21 uni1F22 uni1F23 uni1F24 uni1F25 uni1F26 uni1F27 uni1F74 uni1F90 uni1F91 uni1F92 uni1F93 uni1F94 uni1F95 uni1F96 uni1F97 uni1FC2 uni1FC3 uni1FC4 uni1FC6 uni1FC7 theta iota iotadieresistonos iotatonos iotadieresis uni1F30 uni1F31 uni1F32 uni1F33 uni1F34 uni1F35 uni1F36 uni1F37 uni1F76 uni1FD0 uni1FD1 uni1FD2 uni1FD6 uni1FD7 lambda xi pi rho uni1FE4 uni1FE5 uni03FC sigma1 sigma tau upsilon upsilondieresistonos upsilondieresis upsilontonos uni1F50 uni1F51 uni1F52 uni1F53 uni1F54 uni1F55 uni1F56 uni1F57 uni1F7A uni1FE0 uni1FE1 uni1FE2 uni1FE6 uni1FE7 phi phigreek psi omega omegatonos uni1F60 uni1F61 uni1F62 uni1F63 uni1F64 uni1F65 uni1F66 uni1F67 uni1F7C uni1FA0 uni1FA1 uni1FA2 uni1FA3 uni1FA4 uni1FA5 uni1FA6 uni1FA7 uni1FF2 uni1FF3 uni1FF4 uni1FF6 uni1FF7 gamma1 becyrillic vecyrillic gecyrillic gheupturncyrillic uni04FB decyrillic zhecyrillic zhedescendercyrillic zecyrillic iicyrillic uni048B kacyrillic kahookcyrillic kadescendercyrillic kaverticalstrokecyrillic kabashkircyrillic elcyrillic uni04C6 uni052F emcyrillic uni04CE encyrillic endescendercyrillic enghecyrillic enhookcyrillic uni04CA pecyrillic tecyrillic efcyrillic uni04FD hadescendercyrillic tsecyrillic dzhecyrillic checyrillic chedescendercyrillic cheverticalstrokecyrillic shacyrillic shchacyrillic softsigncyrillic hardsigncyrillic yericyrillic uni048D yatcyrillic ljecyrillic njecyrillic ereversedcyrillic iucyrillic iacyrillic ghemiddlehookcyrillic pemiddlehookcyrillic ecyrillic haabkhasiancyrillic tetsecyrillic cheabkhasiancyrillic dzeabkhasiancyrillic izhitsacyrillic dollar cent yen sterling florin uni20BA uni20BD euro uni20B9 tenge peseta peso kip won lira austral hryvnia naira guarani coloncurrency cedi cruzeiro tugrik uni20AF mill afii57636 manat rupee lari franc zero one two twostroke three four five Tonefive six seven eight nine zero.slash one.ss01 three.1 four.ss01 six.ss01 nine.ss01 zero.tf one.tf two.tf three.tf four.tf five.tf six.tf seven.tf eight.tf nine.tf zero.tf.slash one.tf.ss01 three.1.tf four.tf.ss01 six.tf.ss01 nine.tf.ss01 ampersand exclam exclamdbl exclamdown uni2049 question uni2047 uni2048 questiondown interrobang invertedinterrobang parenleft parenright bracketleft bracketleft_quill bracketright bracketright_quill braceleft braceright at parenleft.case parenright.case bracketleft.case bracketright.case braceleft.case braceright.case at.case numbersign currency slash bar brokenbar backslash hyphen softhyphen endash figuredash emdash horizontalbar bullet openbullet hyphenbullet trianglebullet blackleftbullet blackrightbullet hyphen.case endash.case figuredash.case emdash.case bullet.case openbullet.case hyphenbullet.case trianglebullet.case blackleftbullet.case blackrightbullet.case quoteleft quoteright apostrophemod quotesingle quotedbl quotedblleft quotedblright quotedblbase quotesinglbase prime doubleprime tripleprime quadrupleprime primerev doubleprimerev tripleprimerev primemod doubleprimemod comma period ellipsis twodotleader colon colon.case semicolon comma.tf period.tf colon.tf semicolon.tf periodcentered anoteleia questiongreek guilsinglleft guilsinglright guillemetleft guillemetright less greater lessequal greaterequal equal notequal plus minus multiply divide plusminus approxequal asciitilde less.case greater.case lessequal.case greaterequal.case equal.case notequal.case plus.case minus.case multiply.case divide.case plusminus.case approxequal.case asciitilde.case logicalnot underscore dagger daggerdbl asciicircum asterisk asterisk.case registered copyright copyleft published trademark servicemark tel uni213B uni1F16B uni1F16A degree ordfeminine ordmasculine i.numr n.numr paragraph paragraphreversed section infinity partialdiff summation product integral radical emptyset lozenge a.sups b.sups c.sups d.sups e.sups f.sups g.sups h.sups i.sups j.sups k.sups l.sups m.sups n.sups o.sups p.sups q.sups r.sups s.sups t.sups u.sups v.sups w.sups x.sups y.sups z.sups zero.sups one.sups two.sups three.sups four.sups five.sups six.sups seven.sups eight.sups nine.sups parenleft.sups parenright.sups bracketleft.sups bracketright.sups plus.sups minus.sups equal.sups a.subs b.subs c.subs d.subs e.subs f.subs g.subs h.subs i.subs j.subs k.subs l.subs m.subs n.subs o.subs p.subs q.subs r.subs s.subs t.subs u.subs v.subs w.subs x.subs y.subs z.subs zero.subs one.subs two.subs three.subs four.subs five.subs six.subs seven.subs eight.subs nine.subs parenleft.subs parenright.subs bracketleft.subs bracketright.subs plus.subs minus.subs equal.subs zero.dnomf one.dnomf two.dnomf three.dnomf four.dnomf five.dnomf six.dnomf seven.dnomf eight.dnomf nine.dnomf fraction zero.dnom one.dnom two.dnom three.dnom four.dnom five.dnom six.dnom seven.dnom eight.dnom nine.dnom plus.dnom minus.dnom equal.dnom parenleft.dnom parenright.dnom zero.numr one.numr two.numr three.numr four.numr five.numr six.numr seven.numr eight.numr nine.numr plus.numr minus.numr equal.numr parenleft.numr parenright.numr zero.frac one.frac two.frac three.frac four.frac five.frac six.frac seven.frac eight.frac nine.frac onehalf onethird onequarter threequarters fivesixths onefraction seveneighths oneeighth fiveeighths threeeighths percent perthousand pertenthousand uni214D cadauna careof accountof addresssubject acute hungarumlaut grave tonos dieresis circumflex tilde macron breve cyrillicbreve dotaccent ring caron dieresistonos cedilla ogonek commaaccent acutecomb acutedblnosp gravecomb dblgravecmb macroncomb dieresisnosp brevenosp breveinvnosp hook circumflexnosp caroncmb tildecomb dotnosp ringnosp hornnosp ogoneknosp cedillanosp circumflexsubnosp brevesubnosp dotbelow commabelowcmb dotdblsubnosp ringsubnosp underscorenosp tildesubnosp space nbspace narrownbspace mediumspace-math enquad emquad enspace emspace thirdemspace quarteremspace sixthemspace figurespace punctuationspace thinspace hairspace zerowidthspace numero degreecentigrade degreefarenheit degreekelvin angstrom bullseye estimated leftArrow leftLongArrow rightArrow rightLongArrow northWestArrow northEastArrow southEastArrow southWestArrow leftRightArrow leftRightLongArrow upArrow downArrow upDownArrow leftHookArrow rightHookArrow leftArrow.case leftLongArrow.case rightArrow.case rightLongArrow.case leftRightArrow.case leftRightLongArrow.case dngb_check dngb_ballotx triagrt triagdn triagup blackleftpointingtriangle warningSign circleblack circlewhite diamondblack diamondblack_x diamondwhite diamondwhite_x sunWithRays blackSunWithRays heartWhiteSuit heartBlackSuit heavyBlackHeart blackstar whitestar upBlackArrow upWhiteArrow capslock placeofinterestsign control projective option alternativekeysymbol brokenCircleNorthWestArrow anticlockwiseOpenCircleArrow clockwiseOpenCircleArrow deleteleft deleteright clear ejectsymbol returnsymbol carriagereturn downTipRightArrow upTipLeftArrow upTipRightArrow rightCornerDownArrow arrowtableft arrowtabright pageup pagedown enclosingcirclecomb enclosingsquarecomb A.circled B.circled C.circled D.circled E.circled F.circled G.circled H.circled I.circled J.circled K.circled L.circled M.circled N.circled O.circled P.circled Q.circled R.circled S.circled T.circled U.circled V.circled W.circled X.circled Y.circled Z.circled zero.circled one.circled two.circled three.circled four.circled five.circled six.circled seven.circled eight.circled nine.circled zero.slash.circled one.ss01.circled three.1.circled four.ss01.circled six.ss01.circled nine.ss01.circled exclam.circled question.circled numbersign.circled hyphen.circled less.circled greater.circled equal.circled plus.circled minus.circled multiply.circled divide.circled upArrow.circled downArrow.circled leftArrow.circled rightArrow.circled dngb_check.circled dngb_ballotx.circled A.squared B.squared C.squared D.squared E.squared F.squared G.squared H.squared I.squared J.squared K.squared L.squared M.squared N.squared O.squared P.squared Q.squared R.squared S.squared T.squared U.squared V.squared W.squared X.squared Y.squared Z.squared zero.squared one.squared two.squared three.squared four.squared five.squared six.squared seven.squared eight.squared nine.squared zero.slash.squared one.ss01.squared three.1.squared four.ss01.squared six.ss01.squared nine.ss01.squared exclam.squared question.squared numbersign.squared hyphen.squared less.squared greater.squared equal.squared plus.squared minus.squared multiply.squared divide.squared upArrow.squared downArrow.squared leftArrow.squared rightArrow.squared dngb_check.squared dngb_ballotx.squared Btopbar DZ Eth Dcroat Dtopbar Epsilon1 Esh Ezh Ezhcaron Ezhreversed uni021C IJ Iota1 LJ Ldot NJ OI Schwa Tbar Tonesix Vcursive YR mcapturn uni01F7 uni0220 uni0222 uni0241 uni0245 uni1EFA uni1EFC uni1EFE Aogonek.NAV Eogonek.NAV Oogonek.NAV Gsmallcap Gsmallcaphook Ismallcap Lsmallcap Nsmallcap OEsmallcap Rsmallcap Rsmallcapinv Ysmallcap ascript ascriptturn babygamma cstretch deltaturn erev esh eshcurl eshlooprev eshshortrev schwa schwahook ezh ezhcaron ezhcurl ezhreversed ezhtail gcursive glottalstop glottalstopbar glottalstopbarinv glottalstopbarrev glottalstopinv glottalstoprevinv uni021D iota1 jhookdblbar kgreenlandic lambdabar lyogh oi omegaclosed oopen philatin rturnascend longs tesh thook tonefive tonesix ts uni0223 uni0238 uni0239 uni0242 uni0299 uni029C uni02AB uni02AC uni1E9D uni1E9F uni1EFB uni1EFD uni1EFF uni2184 upsilonlatin vscript wynn aogonek.NAV eogonek.NAV oogonek.NAV uni0268.ccmp Rturnsuper exclam1 hhooksuper pipe pipedbl pipedblbar rturnsuper uni2094 uniA7FF uni2071.ccmp uni02B2.ccmp glottalstopreversed.numr afii10020 afii10052 afii10061 afii10033 afii10034 afii10035 afii10036 afii10062 afii10039 Omegacyrillic afii10146 Eiotifiedcyrillic Yuslittlecyrillic Yuslittleiotifiedcyrillic Yusbigcyrillic Yusbigiotifiedcyrillic Ksicyrillic Psicyrillic Izhitsadblgravecyrillic Ukcyrillic Ghestrokecyrillic Zedescendercyrillic Esdescendercyrillic Tedescendercyrillic Ustraightcyrillic Ustraightstrokecyrillic Chedescenderabkhasiancyrillic palochkacyrillic Zhebrevecyrillic Eltail-cy Chekhakassiancyrillic Schwadieresiscyrillic Zhedieresiscyrillic Zedieresiscyrillic uni04EC Umacroncyrillic Udieresiscyrillic Uhungarumlautcyrillic Chedieresiscyrillic uni04F6 Yerudieresiscyrillic uni04FE Koppacyrillic uni048C gjecyrillic iishortcyrillic uni045D kjecyrillic omegacyrillic eiotifiedcyrillic yuslittlecyrillic yuslittleiotifiedcyrillic yusbigcyrillic yusbigiotifiedcyrillic ksicyrillic psicyrillic izhitsadblgravecyrillic ghestrokecyrillic zedescendercyrillic esdescendercyrillic tedescendercyrillic ustraightcyrillic ustraightstrokecyrillic chedescenderabkhasiancyrillic zhebrevecyrillic chekhakassiancyrillic schwacyrillic schwadieresiscyrillic zhedieresiscyrillic zedieresiscyrillic imacroncyrillic idieresiscyrillic obarredcyrillic obarreddieresiscyrillic uni04ED chedieresiscyrillic uni04F7 yerudieresiscyrillic uni04FF koppacyrillic uni0370 uni0372 uni03D8 Stigma Digamma Koppa Sampi uni03CF uni03F7 uni03FD uni03FE uni03FF kappa mugreek nu uni0371 uni0373 uni0377 uni037B uni037C uni037D uni03D9 stigma digamma koppa sampi uni03D7 beta1 thetasymbolgreek pisymbolgreek kappa1 rho1 uni03F5 uni03F8 uni03FB uni1F71 uni1F73 uni1F75 uni1F77 uni1FD3 uni1F79 uni1F7B uni1FE3 uni1F7D uni1FBE ypogegrammeni finalkaf finalmem finaltsadi qofdagesh uni1DBF romanone romantwo romanthree romanfour romanfive romansix romanseven romaneight romannine romanten romaneleven romantwelve romanfifty romanhundred romanfivehundred romanthousand oneroman tworoman threeroman fourroman fiveroman sixroman sevenroman eightroman nineroman tenroman elevenroman twelveroman uni217C uni217D uni217E uni217F uni2180 uni2181 uni2182 uni2183 uni2185 uni2186 uni2187 uni2188 asterism caretSign caretinsertionpoint charactertie hyphendot onedotleader overline referencemark reversedsemicolon undertie uni204A uni204E uni2050 uni2051 uni2053 uni2054 uni2055 uni2056 uni2058 uni2059 uni205A uni205B uni205C uni205D uni205E verticalbardbl hyphen__ hyphennobreak underscoredbl quotereversed quotedblreversed uni27EF uniA92E zerowidthjoiner eurocurrency uni20B0 uni20B6 uni20B7 uni20BB uni2052 lsquare spaceopenbox uni214F versicle arrowheaddownmod arrowheadleftmod arrowheadrightmod arrowheadupmod dblapostrophe downtackmod lowdownarrowheadmod minusmod plusmod rhotichookmod ringhalfleftcentered ringhalfrightcentered uni02EA uni02EB uni02EC uni02ED uni02F0 uni02F1 uni02F2 uni02F3 uni02F4 uni02F5 uni02F6 uni02F7 uni02F8 uni02F9 uni02FA uni02FB uni02FC uni02FD uni02FE uni02FF uptackmod tonebarextrahighmod.cn tonebarextralowmod.cn tonebarhighmod.cn tonebarlowmod.cn tonebarmidmod.cn uni03F6 numeralgreek numeralgreeksub thousandcyrillic gammasuper acutelowmod colontriangularhalfmod colontriangularmod commareversedmod commaturnedmod firsttonechinese fourthtonechinese glottalstopmod glottalstopreversedmod gravelowmod linevert macronsub ringhalfleft ringhalfright secondtonechinese verticallinelowmod overscorenosp linevertnosp linevertdblnosp candrabindunosp commaturnsupnosp commaabovecmb commasuprevnosp commaaboverightcmb gravesubnosp acutesubnosp tackleftsubnosp tackrightsubnosp anglesupnosp ringlefthalfsubnosp tackupsubnosp tackdownsubnosp hooksubpalatnosp hooksubretronosp linevertsubnosp bridgesubnosp archdblsubnosp caronbelowcmb breveinvsubnosp macronsubnosp underscoredblnosp tildemidnosp barmidshortnosp barmidlongnosp slashshortnosp slashlongnosp ringrighthalfsubnosp bridgeinvsubnosp squaresubnosp seagullsubnosp xsupnosp tildevertsupnosp overscoredblnosp graveleftnosp acuterightnosp uni0346 uni0348 uni0349 uni034A uni034B uni034C uni034D uni034E uni034F arrowheadrightabovecomb uni0351 uni0352 uni0353 uni0354 uni0355 uni0356 uni0357 uni0358 uni0359 uni035A uni035B uni035C uni035D uni035E uni035F tildedoublecmb breveinverteddoublecmb uni0362 uni1DC0 uni1DC1 uni1DC2 uni1DC3 uni1DC4 uni1DC5 uni1DC6 uni1DC7 uni1DC8 uni1DC9 uni1DCB uni1DCC uni1DCD uni1DCE uni1DCF uni1DD0 uni1DD1 uni1DD2 uni1DE8 uni1DEA uni1DEB uni1DEC uni1DED uni1DEE uni1DEF uni1DF0 uni1DF1 uni1DF2 uni1DF3 uni1DF4 uni1DF5 uni1DFC uni1DFD uni1DFE uni1DFF uni20DB uni20DC uni20E3 uni20E8 uni20F0 uniFE20 uniFE21 uniFE22 uniFE23 uniFE24 uniFE25 uniFE26 uniFE27 uniFE28 uniFE29 uniFE2A uniFE2B uniFE2C uniFE2D macronacutecomb.cn macrongravecomb.cn macronacutecomb.lc macrongravecomb.lc perispomenigreekcmb koroniscmb diaeresistonosnosp iotasubnosp uni1FBF uni1FBD uni1FFE uni1FCD uni1FDD uni1FCE uni1FDE uni1FCF uni1FDF uni1FED uni1FEE uni1FC1 uni1FEF uni1FFD uni1FC0 uni1FFE.tonos uni1FCD.tonos uni1FDD.tonos uni1FCE.tonos uni1FDE.tonos uni1FCF.tonos uni1FDF.tonos uni1FEF.tonos uni1FFD.tonos titlocyrilliccmb palatalizationcyrilliccmb dasiapneumatacyrilliccmb psilipneumatacyrilliccmb uni0487 uni0488 uni0489 uniA69F uni0363 uni0364 uni0365 uni0366 uni0367 uni0368 uni0369 uni036A uni036B uni036C uni036D uni036E uni036F uni1DCA uni1DD3 uni1DD4 uni1DD5 uni1DD6 uni1DD7 uni1DD8 uni1DD9 uni1DDA uni1DDB uni1DDC uni1DDD uni1DDE uni1DDF uni1DE0 uni1DE1 uni1DE2 uni1DE3 uni1DE4 uni1DE5 uni1DE6 uni1DE7 uni1DE9 Omegaroundcyrillic omegaroundcyrillic Omegatitlocyrillic omegatitlocyrillic Otcyrillic otcyrillic uni2DFF crossbar acutedotcomb.lc tildedieresiscomb.lc dieresisacutecomb.lc carondotcomb.lc caronnosp caronsubnosp ascript_uni02DE cyrillichookleft dotmacroncomb.lc dieresismacroncomb.lc dieresisgravecomb.lc largerighthook tildemacroncomb.lc macrondieresiscomb.lc tildeacutecomb dieresiscaroncomb.lc cyrillichook ringacute.cn circumflexgravecomb.cn dieresiscaroncomb.cn dieresismacroncomb.cn carondotcomb.cn breveacutecomb.cn acutedotcomb.cn brevegravecomb.cn circumflexacutecomb.cn tildedieresiscomb.cn circumflexhookcomb.cn brevetildecomb.cn dieresisacutecomb.cn dotmacroncomb.cn macrondieresiscomb.cn dieresisgravecomb.cn tildemacroncomb.cn circumflextildecomb.cn brevehookcomb.cn commaaccentrotate.cn tonostop tildeacutecomb.uc";
+code = "A Adieresis Atilde Agrave Aacute Acircumflex Aring Amacron Abreve Aogonek Acaron Adieresismacron Adotmacron Aringacute Adblgrave Ainvertedbreve uni0226 Aringbelow Adotbelow Ahookabove Acircumflexacute Acircumflexgrave Acircumflexhookabove Acircumflextilde Acircumflexdotbelow Abreveacute Abrevegrave Abrevehookabove Abrevetilde Abrevedotbelow Alpha Alphatonos uni1F08 uni1F09 uni1F0A uni1F0B uni1F0C uni1F0D uni1F0E uni1F0F uni1FB8 uni1FB9 uni1FBA uni023A uni1FBB afii10017 Abrevecyrillic Adieresiscyrillic uni1F88 uni1F89 uni1F8A uni1F8B uni1F8C uni1F8D uni1F8E uni1F8F uni1FBC Lambda AE AEmacron AEacute Aiecyrillic B Bdotaccent Bdotbelow Blinebelow uni0243 Bhook afii10019 Beta C Chook Ccedilla Cacute Ccircumflex Cdotaccent Ccaron Ccedillaacute uni023B Oopen uni03F9 D Dhook Dcaron Ddotaccent Ddotbelow Dlinebelow Dcedilla Dcircumflexbelow Dbar1 Dz Dzcaron_ E Egrave Eacute Ecircumflex Edieresis Emacron Ebreve Edotaccent Eogonek Ecaron Edblgrave Einvertedbreve uni0228 Emacrongrave Emacronacute Ecircumflexbelow Etildebelow Ecedillabreve Edotbelow Ehookabove Etilde Ecircumflexacute Ecircumflexgrave Ecircumflexhookabove Ecircumflextilde Ecircumflexdotbelow uni0246 Eturn Epsilon Epsilontonos uni1F18 uni1F19 uni1F1A uni1F1B uni1F1C uni1F1D uni1FC8 uni1FC9 afii10022 uni0400 afii10023 Iebrevecyrillic F Fhook Fdotaccent Fturn G Gbar Ghook Gcircumflex Gbreve Gdotaccent Gcommaaccent Gcaron Gacute Gmacron G.1 Gbar.1 Ghook.1 Gcircumflex.1 Gbreve.1 Gdotaccent.1 Gcommaaccent.1 Gcaron.1 Gacute.1 Gmacron.1 H Hcedilla Hcircumflex uni021E Hdotaccent Hdotbelow Hdieresis Hbrevebelow Hbar Enhookcyrillic Endescendercyrillic uni04C9 Enghecyrillic uni01F6 Eta Etatonos uni1F28 uni1F29 uni1F2A uni1F2B uni1F2C uni1F2D uni1F2E uni1F2F uni1FCA uni1FCB afii10031 uni1F98 uni1F99 uni1F9A uni1F9B uni1F9C uni1F9D uni1F9E uni1F9F uni1FCC I Idieresis Idieresisacute Istroke Itildebelow Igrave Iacute Icircumflex Itilde Imacron Ibreve Iogonek Idotaccent Icaron Idblgrave Iinvertedbreve Ihookabove Idotbelow Iota Iotatonos Iotadieresis uni1F38 uni1F39 uni1F3A uni1F3B uni1F3C uni1F3D uni1F3E uni1F3F uni1FD8 uni1FD9 uni1FDA uni1FDB afii10055 afii10056 I.1 Idieresis.1 Idieresisacute.1 Istroke.1 Itildebelow.1 Igrave.1 Iacute.1 Icircumflex.1 Itilde.1 Imacron.1 Ibreve.1 Iogonek.1 Idotaccent.1 Icaron.1 Idblgrave.1 Iinvertedbreve.1 Ihookabove.1 Idotbelow.1 uni1F38.1 uni1F39.1 uni1F3A.1 uni1F3B.1 uni1F3C.1 uni1F3D.1 uni1F3E.1 uni1F3F.1 uni1FD8.1 uni1FD9.1 uni1FDA.1 uni1FDB.1 afii10055.1 afii10056.1 J Jcircumflex uni0248 uni037F afii10057 K Kcommaaccent Kcaron Kacute Kdotbelow Klinebelow Kabashkircyrillic Kadescendercyrillic Khook Kappa L Lacute Lcommaaccent Lcaron Ldotbelow Ldotbelowmacron Llinebelow Lcircumflexbelow Lslash Lbar Lj M Macute Mdotaccent Mdotbelow uni04CD Mu uni03FA afii10030 N Ntilde Nacute Ncommaaccent Ncaron uni01F8 Ndotaccent Ndotbelow Nlinebelow Ncircumflexbelow Nhook Eng afii10026 uni040D afii10027 Imacroncyrillic Idieresiscyrillic uni048A uni0376 Nu Nj O Odieresis Otilde Oslash Ohorn Ograve Oacute Ocircumflex Omacron Obreve Ohungarumlaut Ocaron Oogonek Oogonekmacron Odblgrave Oinvertedbreve uni022A uni022C uni022E uni0230 Otildeacute Otildedieresis Omacrongrave Omacronacute Odotbelow Ohookabove Ocircumflexacute Ocircumflexgrave Ocircumflexhookabove Ocircumflextilde Ocircumflexdotbelow Ohornacute Ohorngrave Ohornhookabove Ohorntilde Ohorndotbelow Oslashacute Omicron Omicrontonos uni1F48 uni1F49 uni1F4A uni1F4B uni1F4C uni1F4D uni1FF8 uni03F4 uni1FF9 afii10032 Odieresiscyrillic Obar Obarredcyrillic Obarreddieresiscyrillic OE P Pacute Pdotaccent uni048E Phook Rho uni1FEC Q R Racute Rcommaaccent Rcaron Rdblgrave Rinvertedbreve Rdotaccent Rdotbelow Rdotbelowmacron Rlinebelow response Rx uni024C S Sacute Scircumflex Scedilla Scaron Scommaaccent Sdotaccent Sdotbelow Sacutedotaccent Scarondotaccent Sdotbelowdotaccent afii10054 Tonetwo Germandbls T Tcommaaccent Tcaron uni021A Tdotaccent Tdotbelow Tlinebelow Tcircumflexbelow Thook Trthook uni023E Tau U Uhorn Ugrave Uacute Ucircumflex Udieresis Utilde Umacron Ubreve Uring Uhungarumlaut Uogonek Ucaron Udieresismacron Udieresisacute Udieresiscaron Udieresisgrave Udblgrave Uinvertedbreve Udieresisbelow Utildebelow Ucircumflexbelow Utildeacute Umacrondieresis Udotbelow Uhookabove Uhornacute Uhorngrave Uhornhookabove Uhorntilde Uhorndotbelow uni0244 V Vtilde Vdotbelow W Wcircumflex Wgrave Wacute Wdieresis Wdotaccent Wdotbelow X Xdotaccent Xdieresis Hadescendercyrillic uni04FC Chi Y Yhook Yacute Ycircumflex Ydieresis uni0232 Ydotaccent Ygrave Ydotbelow Yhookabove Ytilde uni024E Upsilon Upsilontonos Upsilondieresis uni1F59 uni1F5B uni1F5D uni1F5F uni1FE8 uni1FE9 uni1FEA uni1FEB Z Zacute Zdotaccent Zcaron Zcircumflex Zdotbelow Zlinebelow uni0224 Zbar Zeta uni2C7F a aacute abreve abreveacute abrevedotbelow abrevegrave abrevehookabove abrevetilde acaron acircumflex acircumflexacute acircumflexdotbelow acircumflexgrave acircumflexhookabove acircumflextilde adblgrave adieresis adieresismacron uni0227 adotbelow adotmacron agrave ahookabove ainvertedbreve amacron aogonek arighthalfring aring aringacute aringbelow atilde aturn acyrillic abrevecyrillic adieresiscyrillic ae aemacron aeacute aiecyrillic a.1 aacute.1 abreve.1 abreveacute.1 abrevedotbelow.1 abrevegrave.1 abrevehookabove.1 abrevetilde.1 acaron.1 acircumflex.1 acircumflexacute.1 acircumflexdotbelow.1 acircumflexgrave.1 acircumflexhookabove.1 acircumflextilde.1 adblgrave.1 adieresis.1 adieresismacron.1 uni0227.1 adotbelow.1 adotmacron.1 agrave.1 ahookabove.1 ainvertedbreve.1 amacron.1 aogonek.1 arighthalfring.1 aring.1 aringacute.1 aringbelow.1 atilde.1 b bbar btopbar bhook bdotaccent bdotbelow blinebelow c uni023C chook ccurl ccedilla cacute ccircumflex cdotaccent ccaron ccedillaacute sigmalunatesymbolgreek escyrillic d dcroat drthook dhook dtopbar uni0221 dcaron ddotaccent ddotbelow dlinebelow dcedilla dcircumflexbelow dz dzcaron dzcurl dyogh dong e edieresis uni0247 egrave eacute ecircumflex emacron ebreve edotaccent eogonek ecaron edblgrave einvertedbreve uni0229 emacrongrave emacronacute ecircumflexbelow etildebelow ecedillabreve edotbelow ehookabove etilde ecircumflexacute ecircumflexgrave ecircumflexhookabove ecircumflextilde ecircumflexdotbelow iecyrillic uni0450 iocyrillic iebrevecyrillic eturn f slongstroke slongdotaccent fdotaccent feng g ghook gbar gcircumflex gbreve gdotaccent gcommaaccent gcaron gacute gmacron h hcedilla tshecyrillic djecyrillic hhook henghook hv hturn hturnlthook hturnhook2 hbar hcircumflex uni021F hdotaccent hdotbelow hdieresis hbrevebelow hlinebelow shhacyrillic i idotless idieresis idieresisacute itilde itildebelow uni1E2D.ccmp ibar igrave iacute icircumflex imacron ibreve uni012F.ccmp iogonek icaron idblgrave iinvertedbreve ihookabove idotbelow uni1ECB.ccmp jdotless jdotlessbar uni0249 uni0249.ccmp icyrillic yicyrillic ij j jcrosstail.ccmp jcrosstail jcircumflex jcaron yotgreek jecyrillic lj k khook kcommaaccent kcaron kacute kdotbelow klinebelow kturn l lslash lbar lmidtilde lrthook lbelt lcurl ldot lacute lcommaaccent lcaron ldotbelow ldotbelowmacron llinebelow lcircumflexbelow l.ss02 lslash.ss02 lbar.ss02 lmidtilde.ss02 lbelt.ss02 ldot.ss02 lacute.ss02 lcommaaccent.ss02 lcaron.ss02 ldotbelow.ss02 ldotbelowmacron.ss02 llinebelow.ss02 lcircumflexbelow.ss02 uni04CF m mhook mturn mturndescend macute mdotaccent mdotbelow n ntilde nrthook eng ncurl nlfthook nlegrightlong nacute ncommaaccent ncaron uni01F9 ndotaccent ndotbelow nlinebelow ncircumflexbelow nj o odieresis otilde oslash ohorn ograve oacute ocircumflex omacron obreve ohungarumlaut ocaron oogonek oogonekmacron odblgrave oinvertedbreve uni022B uni022D uni022F uni0231 otildeacute otildedieresis omacrongrave omacronacute odotbelow ohookabove ocircumflexacute ocircumflexgrave ocircumflexhookabove ocircumflextilde ocircumflexdotbelow ohornacute ohorngrave ohornhookabove ohorntilde ohorndotbelow oslashacute omicron omicrontonos uni1F40 uni1F41 uni1F42 uni1F43 uni1F44 uni1F45 uni1F78 fitacyrillic obar ocyrillic odieresiscyrillic oe ukcyrillic p uni048F phook pacute pdotaccent ercyrillic q qhook qrthook Q_rthook r rrthook uni024D rturn rturnrthook rfishhookrev rfishhook rdescend racute rcommaaccent rcaron rdblgrave rinvertedbreve rdotaccent rdotbelow rdotbelowmacron rlinebelow r.1 rrthook.1 uni024D.1 rdescend.1 racute.1 rcommaaccent.1 rcaron.1 rdblgrave.1 rinvertedbreve.1 rdotaccent.1 rdotbelow.1 rdotbelowmacron.1 rlinebelow.1 s srthook uni023F sacute scircumflex scedilla scaron scommaaccent sdotaccent sdotbelow sacutedotaccent scarondotaccent sdotbelowdotaccent dzecyrillic tonetwo germandbls germandbls.1 t tpalatalhook trthook tcurl tccurl tturn tbar tcedilla tcaron tcommaaccent tdotaccent tdotbelow tlinebelow tcircumflexbelow tdieresis u udieresis utilde uhorn micro ubar ugrave uacute ucircumflex umacron ubreve uring uhungarumlaut uogonek ucaron udieresismacron udieresisacute udieresiscaron udieresisgrave udblgrave uinvertedbreve udieresisbelow utildebelow ucircumflexbelow utildeacute umacrondieresis udotbelow uhookabove uhornacute uhorngrave uhornhookabove uhorntilde uhorndotbelow v vturn vtilde vdotbelow w wdieresis wturn wcircumflex wgrave wacute wdotaccent wdotbelow wring x xdotaccent xdieresis khacyrillic chi y ydieresis yhook uni024F yacute ycircumflex uni0233 ydotaccent yring ygrave ydotbelow yhookabove ytilde ucyrillic ushortcyrillic umacroncyrillic udieresiscyrillic uhungarumlautcyrillic yturn z zbar zhook uni0240 zrthook zacute zdotaccent zcaron zcircumflex zdotbelow zlinebelow zcurl Thorn Gamma Delta Theta Xi Pi Sigma Phi Psi Omega uni1FFB Omegatonos uni1F68 uni1F69 uni1F6A uni1F6B uni1F6C uni1F6D uni1F6E uni1F6F uni1FFA uni1FA8 uni1FA9 uni1FAA uni1FAB uni1FAC uni1FAD uni1FAE uni1FAF uni1FFC Upsilon2 Upsilonhooksymbol Upsilonacutehooksymbolgreek Upsilondieresishooksymbolgreek Gamma1 afii10018 afii10050 uni04FA afii10021 afii10024 Zhedescendercyrillic afii10025 Kacyr Kaverticalstrokecyrillic Kahookcyrillic afii10029 afii10147 afii10145 afii10037 afii10038 afii10040 Tetsecyrillic afii10041 Chedescendercyrillic Cheverticalstrokecyrillic Shhacyrillic afii10060 afii10042 afii10043 afii10044 afii10045 afii10046 afii10058 afii10059 afii10047 afii10048 afii10049 Ghemiddlehookcyrillic Pemiddlehookcyrillic afii10053 Haabkhasiancyrillic Cheabkhasiancyrillic Schwacyrillic Dzeabkhasiancyrillic afii10148 afii10051 eth thorn alpha alphatonos uni1F00 uni1F01 uni1F02 uni1F03 uni1F04 uni1F05 uni1F06 uni1F07 uni1F70 uni1F80 uni1F81 uni1F82 uni1F83 uni1F84 uni1F85 uni1F86 uni1F87 uni1FB0 uni1FB1 uni1FB2 uni1FB3 uni1FB4 uni1FB6 uni1FB7 beta gamma delta epsilon epsilontonos epsilonclosed epsilon1 epsilon1rev epsilon1revclosed epsilon1revhook uni1F10 uni1F11 uni1F12 uni1F13 uni1F14 uni1F15 uni1F72 zeta eta etatonos uni1F20 uni1F21 uni1F22 uni1F23 uni1F24 uni1F25 uni1F26 uni1F27 uni1F74 uni1F90 uni1F91 uni1F92 uni1F93 uni1F94 uni1F95 uni1F96 uni1F97 uni1FC2 uni1FC3 uni1FC4 uni1FC6 uni1FC7 theta iota iotadieresistonos iotatonos iotadieresis uni1F30 uni1F31 uni1F32 uni1F33 uni1F34 uni1F35 uni1F36 uni1F37 uni1F76 uni1FD0 uni1FD1 uni1FD2 uni1FD6 uni1FD7 lambda xi pi rho uni1FE4 uni1FE5 uni03FC sigma1 sigma tau upsilon upsilondieresistonos upsilondieresis upsilontonos uni1F50 uni1F51 uni1F52 uni1F53 uni1F54 uni1F55 uni1F56 uni1F57 uni1F7A uni1FE0 uni1FE1 uni1FE2 uni1FE6 uni1FE7 phi phigreek psi omega omegatonos uni1F60 uni1F61 uni1F62 uni1F63 uni1F64 uni1F65 uni1F66 uni1F67 uni1F7C uni1FA0 uni1FA1 uni1FA2 uni1FA3 uni1FA4 uni1FA5 uni1FA6 uni1FA7 uni1FF2 uni1FF3 uni1FF4 uni1FF6 uni1FF7 gamma1 becyrillic vecyrillic gecyrillic gheupturncyrillic uni04FB decyrillic zhecyrillic zhedescendercyrillic zecyrillic iicyrillic uni048B kacyrillic kahookcyrillic kadescendercyrillic kaverticalstrokecyrillic kabashkircyrillic elcyrillic uni04C6 uni052F emcyrillic uni04CE encyrillic endescendercyrillic enghecyrillic enhookcyrillic uni04CA pecyrillic tecyrillic efcyrillic uni04FD hadescendercyrillic tsecyrillic dzhecyrillic checyrillic chedescendercyrillic cheverticalstrokecyrillic shacyrillic shchacyrillic softsigncyrillic hardsigncyrillic yericyrillic uni048D yatcyrillic ljecyrillic njecyrillic ereversedcyrillic iucyrillic iacyrillic ghemiddlehookcyrillic pemiddlehookcyrillic ecyrillic haabkhasiancyrillic tetsecyrillic cheabkhasiancyrillic dzeabkhasiancyrillic izhitsacyrillic dollar cent yen sterling florin uni20BA uni20BD euro uni20B9 tenge peseta peso kip won lira austral hryvnia naira guarani coloncurrency cedi cruzeiro tugrik uni20AF mill afii57636 manat rupee lari franc zero one two twostroke three four five Tonefive six seven eight nine zero.slash one.ss01 three.1 four.ss01 six.ss01 nine.ss01 zero.tf one.tf two.tf three.tf four.tf five.tf six.tf seven.tf eight.tf nine.tf zero.tf.slash one.tf.ss01 three.1.tf four.tf.ss01 six.tf.ss01 nine.tf.ss01 ampersand exclam exclamdbl exclamdown uni2049 question uni2047 uni2048 questiondown interrobang invertedinterrobang parenleft parenright bracketleft bracketleft_quill bracketright bracketright_quill braceleft braceright at parenleft.case parenright.case bracketleft.case bracketright.case braceleft.case braceright.case at.case numbersign currency slash bar brokenbar backslash hyphen softhyphen endash figuredash emdash horizontalbar bullet openbullet hyphenbullet trianglebullet blackleftbullet blackrightbullet hyphen.case endash.case figuredash.case emdash.case bullet.case openbullet.case hyphenbullet.case trianglebullet.case blackleftbullet.case blackrightbullet.case quoteleft quoteright apostrophemod quotesingle quotedbl quotedblleft quotedblright quotedblbase quotesinglbase prime doubleprime tripleprime quadrupleprime primerev doubleprimerev tripleprimerev primemod doubleprimemod comma period ellipsis twodotleader colon colon.case semicolon comma.tf period.tf colon.tf semicolon.tf periodcentered anoteleia questiongreek guilsinglleft guilsinglright guillemetleft guillemetright less greater lessequal greaterequal equal notequal plus minus multiply divide plusminus approxequal asciitilde less.case greater.case lessequal.case greaterequal.case equal.case notequal.case plus.case minus.case multiply.case divide.case plusminus.case approxequal.case asciitilde.case logicalnot underscore dagger daggerdbl asciicircum asterisk asterisk.case registered copyright copyleft published trademark servicemark tel uni213B uni1F16B uni1F16A degree ordfeminine ordmasculine i.numr n.numr paragraph paragraphreversed section infinity partialdiff summation product integral radical emptyset lozenge a.sups b.sups c.sups d.sups e.sups f.sups g.sups h.sups i.sups j.sups k.sups l.sups m.sups n.sups o.sups p.sups q.sups r.sups s.sups t.sups u.sups v.sups w.sups x.sups y.sups z.sups zero.sups one.sups two.sups three.sups four.sups five.sups six.sups seven.sups eight.sups nine.sups parenleft.sups parenright.sups bracketleft.sups bracketright.sups plus.sups minus.sups equal.sups a.subs b.subs c.subs d.subs e.subs f.subs g.subs h.subs i.subs j.subs k.subs l.subs m.subs n.subs o.subs p.subs q.subs r.subs s.subs t.subs u.subs v.subs w.subs x.subs y.subs z.subs zero.subs one.subs two.subs three.subs four.subs five.subs six.subs seven.subs eight.subs nine.subs parenleft.subs parenright.subs bracketleft.subs bracketright.subs plus.subs minus.subs equal.subs zero.dnomf one.dnomf two.dnomf three.dnomf four.dnomf five.dnomf six.dnomf seven.dnomf eight.dnomf nine.dnomf fraction zero.dnom one.dnom two.dnom three.dnom four.dnom five.dnom six.dnom seven.dnom eight.dnom nine.dnom plus.dnom minus.dnom equal.dnom parenleft.dnom parenright.dnom zero.numr one.numr two.numr three.numr four.numr five.numr six.numr seven.numr eight.numr nine.numr plus.numr minus.numr equal.numr parenleft.numr parenright.numr zero.frac one.frac two.frac three.frac four.frac five.frac six.frac seven.frac eight.frac nine.frac onehalf onethird onequarter threequarters fivesixths onefraction seveneighths oneeighth fiveeighths threeeighths percent perthousand pertenthousand uni214D cadauna careof accountof addresssubject acute hungarumlaut grave tonos dieresis circumflex tilde macron breve cyrillicbreve dotaccent ring caron dieresistonos cedilla ogonek commaaccent acutecomb acutedblnosp gravecomb dblgravecmb macroncomb dieresisnosp brevenosp breveinvnosp hook circumflexnosp caroncmb tildecomb dotnosp ringnosp hornnosp ogoneknosp cedillanosp circumflexsubnosp brevesubnosp dotbelow commabelowcmb dotdblsubnosp ringsubnosp underscorenosp tildesubnosp space nbspace narrownbspace mediumspace-math enquad emquad enspace emspace thirdemspace quarteremspace sixthemspace figurespace punctuationspace thinspace hairspace zerowidthspace numero degreecentigrade degreefarenheit degreekelvin angstrom bullseye estimated leftArrow leftLongArrow leftLongArrow2 rightArrow rightLongArrow rightLongArrow2 northWestArrow northEastArrow southEastArrow southWestArrow leftRightArrow leftRightLongArrow upArrow downArrow upDownArrow leftHookArrow rightHookArrow leftArrow.case leftLongArrow.case leftLongArrow2.case rightArrow.case rightLongArrow.case rightLongArrow2.case leftRightArrow.case leftRightLongArrow.case dngb_check dngb_ballotx triagrt triagdn triagup blackleftpointingtriangle warningSign circleblack circlewhite diamondblack diamondblack_x diamondwhite diamondwhite_x sunWithRays blackSunWithRays heartWhiteSuit heartBlackSuit heavyBlackHeart blackstar whitestar upBlackArrow upWhiteArrow capslock placeofinterestsign control projective option alternativekeysymbol brokenCircleNorthWestArrow anticlockwiseOpenCircleArrow clockwiseOpenCircleArrow deleteleft deleteright clear ejectsymbol returnsymbol carriagereturn downTipRightArrow upTipLeftArrow upTipRightArrow rightCornerDownArrow arrowtableft arrowtabright pageup pagedown enclosingcirclecomb enclosingsquarecomb A.circled B.circled C.circled D.circled E.circled F.circled G.circled H.circled I.circled J.circled K.circled L.circled M.circled N.circled O.circled P.circled Q.circled R.circled S.circled T.circled U.circled V.circled W.circled X.circled Y.circled Z.circled zero.circled one.circled two.circled three.circled four.circled five.circled six.circled seven.circled eight.circled nine.circled zero.slash.circled one.ss01.circled three.1.circled four.ss01.circled six.ss01.circled nine.ss01.circled exclam.circled question.circled numbersign.circled hyphen.circled less.circled greater.circled equal.circled plus.circled minus.circled multiply.circled divide.circled upArrow.circled downArrow.circled leftArrow.circled rightArrow.circled dngb_check.circled dngb_ballotx.circled A.squared B.squared C.squared D.squared E.squared F.squared G.squared H.squared I.squared J.squared K.squared L.squared M.squared N.squared O.squared P.squared Q.squared R.squared S.squared T.squared U.squared V.squared W.squared X.squared Y.squared Z.squared zero.squared one.squared two.squared three.squared four.squared five.squared six.squared seven.squared eight.squared nine.squared zero.slash.squared one.ss01.squared three.1.squared four.ss01.squared six.ss01.squared nine.ss01.squared exclam.squared question.squared numbersign.squared hyphen.squared less.squared greater.squared equal.squared plus.squared minus.squared multiply.squared divide.squared upArrow.squared downArrow.squared leftArrow.squared rightArrow.squared dngb_check.squared dngb_ballotx.squared Btopbar DZ Eth Dcroat Dtopbar Epsilon1 Esh Ezh Ezhcaron Ezhreversed uni021C IJ Iota1 LJ Ldot NJ OI Schwa Tbar Tonesix Vcursive YR mcapturn uni01F7 uni0220 uni0222 uni0241 uni0245 uni1EFA uni1EFC uni1EFE Aogonek.NAV Eogonek.NAV Oogonek.NAV Gsmallcap Gsmallcaphook Ismallcap Lsmallcap Nsmallcap OEsmallcap Rsmallcap Rsmallcapinv Ysmallcap ascript ascriptturn babygamma cstretch deltaturn erev esh eshcurl eshlooprev eshshortrev schwa schwahook ezh ezhcaron ezhcurl ezhreversed ezhtail gcursive glottalstop glottalstopbar glottalstopbarinv glottalstopbarrev glottalstopinv glottalstoprevinv uni021D iota1 jhookdblbar kgreenlandic lambdabar lyogh oi omegaclosed oopen philatin rturnascend longs tesh thook tonefive tonesix ts uni0223 uni0238 uni0239 uni0242 uni0299 uni029C uni02AB uni02AC uni1E9D uni1E9F uni1EFB uni1EFD uni1EFF uni2184 upsilonlatin vscript wynn aogonek.NAV eogonek.NAV oogonek.NAV uni0268.ccmp Rturnsuper exclam1 hhooksuper pipe pipedbl pipedblbar rturnsuper uni2094 uniA7FF uni2071.ccmp uni02B2.ccmp glottalstopreversed.numr afii10020 afii10052 afii10061 afii10033 afii10034 afii10035 afii10036 afii10062 afii10039 Omegacyrillic afii10146 Eiotifiedcyrillic Yuslittlecyrillic Yuslittleiotifiedcyrillic Yusbigcyrillic Yusbigiotifiedcyrillic Ksicyrillic Psicyrillic Izhitsadblgravecyrillic Ukcyrillic Ghestrokecyrillic Zedescendercyrillic Esdescendercyrillic Tedescendercyrillic Ustraightcyrillic Ustraightstrokecyrillic Chedescenderabkhasiancyrillic palochkacyrillic Zhebrevecyrillic Eltail-cy Chekhakassiancyrillic Schwadieresiscyrillic Zhedieresiscyrillic Zedieresiscyrillic uni04EC Umacroncyrillic Udieresiscyrillic Uhungarumlautcyrillic Chedieresiscyrillic uni04F6 Yerudieresiscyrillic uni04FE Koppacyrillic uni048C gjecyrillic iishortcyrillic uni045D kjecyrillic omegacyrillic eiotifiedcyrillic yuslittlecyrillic yuslittleiotifiedcyrillic yusbigcyrillic yusbigiotifiedcyrillic ksicyrillic psicyrillic izhitsadblgravecyrillic ghestrokecyrillic zedescendercyrillic esdescendercyrillic tedescendercyrillic ustraightcyrillic ustraightstrokecyrillic chedescenderabkhasiancyrillic zhebrevecyrillic chekhakassiancyrillic schwacyrillic schwadieresiscyrillic zhedieresiscyrillic zedieresiscyrillic imacroncyrillic idieresiscyrillic obarredcyrillic obarreddieresiscyrillic uni04ED chedieresiscyrillic uni04F7 yerudieresiscyrillic uni04FF koppacyrillic uni0370 uni0372 uni03D8 Stigma Digamma Koppa Sampi uni03CF uni03F7 uni03FD uni03FE uni03FF kappa mugreek nu uni0371 uni0373 uni0377 uni037B uni037C uni037D uni03D9 stigma digamma koppa sampi uni03D7 beta1 thetasymbolgreek pisymbolgreek kappa1 rho1 uni03F5 uni03F8 uni03FB uni1F71 uni1F73 uni1F75 uni1F77 uni1FD3 uni1F79 uni1F7B uni1FE3 uni1F7D uni1FBE ypogegrammeni finalkaf finalmem finaltsadi qofdagesh uni1DBF romanone romantwo romanthree romanfour romanfive romansix romanseven romaneight romannine romanten romaneleven romantwelve romanfifty romanhundred romanfivehundred romanthousand oneroman tworoman threeroman fourroman fiveroman sixroman sevenroman eightroman nineroman tenroman elevenroman twelveroman uni217C uni217D uni217E uni217F uni2180 uni2181 uni2182 uni2183 uni2185 uni2186 uni2187 uni2188 asterism caretSign caretinsertionpoint charactertie hyphendot onedotleader overline referencemark reversedsemicolon undertie uni204A uni204E uni2050 uni2051 uni2053 uni2054 uni2055 uni2056 uni2058 uni2059 uni205A uni205B uni205C uni205D uni205E verticalbardbl hyphen__ hyphennobreak underscoredbl quotereversed quotedblreversed uni27EF uniA92E zerowidthjoiner eurocurrency uni20B0 uni20B6 uni20B7 uni20BB uni2052 lsquare spaceopenbox uni214F versicle arrowheaddownmod arrowheadleftmod arrowheadrightmod arrowheadupmod dblapostrophe downtackmod lowdownarrowheadmod minusmod plusmod rhotichookmod ringhalfleftcentered ringhalfrightcentered uni02EA uni02EB uni02EC uni02ED uni02F0 uni02F1 uni02F2 uni02F3 uni02F4 uni02F5 uni02F6 uni02F7 uni02F8 uni02F9 uni02FA uni02FB uni02FC uni02FD uni02FE uni02FF uptackmod tonebarextrahighmod.cn tonebarextralowmod.cn tonebarhighmod.cn tonebarlowmod.cn tonebarmidmod.cn uni03F6 numeralgreek numeralgreeksub thousandcyrillic gammasuper acutelowmod colontriangularhalfmod colontriangularmod commareversedmod commaturnedmod firsttonechinese fourthtonechinese glottalstopmod glottalstopreversedmod gravelowmod linevert macronsub ringhalfleft ringhalfright secondtonechinese verticallinelowmod overscorenosp linevertnosp linevertdblnosp candrabindunosp commaturnsupnosp commaabovecmb commasuprevnosp commaaboverightcmb gravesubnosp acutesubnosp tackleftsubnosp tackrightsubnosp anglesupnosp ringlefthalfsubnosp tackupsubnosp tackdownsubnosp hooksubpalatnosp hooksubretronosp linevertsubnosp bridgesubnosp archdblsubnosp caronbelowcmb breveinvsubnosp macronsubnosp underscoredblnosp tildemidnosp barmidshortnosp barmidlongnosp slashshortnosp slashlongnosp ringrighthalfsubnosp bridgeinvsubnosp squaresubnosp seagullsubnosp xsupnosp tildevertsupnosp overscoredblnosp graveleftnosp acuterightnosp uni0346 uni0348 uni0349 uni034A uni034B uni034C uni034D uni034E uni034F arrowheadrightabovecomb uni0351 uni0352 uni0353 uni0354 uni0355 uni0356 uni0357 uni0358 uni0359 uni035A uni035B uni035C uni035D uni035E uni035F tildedoublecmb breveinverteddoublecmb uni0362 uni1DC0 uni1DC1 uni1DC2 uni1DC3 uni1DC4 uni1DC5 uni1DC6 uni1DC7 uni1DC8 uni1DC9 uni1DCB uni1DCC uni1DCD uni1DCE uni1DCF uni1DD0 uni1DD1 uni1DD2 uni1DE8 uni1DEA uni1DEB uni1DEC uni1DED uni1DEE uni1DEF uni1DF0 uni1DF1 uni1DF2 uni1DF3 uni1DF4 uni1DF5 uni1DFC uni1DFD uni1DFE uni1DFF uni20DB uni20DC uni20E3 uni20E8 uni20F0 uniFE20 uniFE21 uniFE22 uniFE23 uniFE24 uniFE25 uniFE26 uniFE27 uniFE28 uniFE29 uniFE2A uniFE2B uniFE2C uniFE2D macronacutecomb.cn macrongravecomb.cn macronacutecomb.lc macrongravecomb.lc perispomenigreekcmb koroniscmb diaeresistonosnosp iotasubnosp uni1FBF uni1FBD uni1FFE uni1FCD uni1FDD uni1FCE uni1FDE uni1FCF uni1FDF uni1FED uni1FEE uni1FC1 uni1FEF uni1FFD uni1FC0 uni1FFE.tonos uni1FCD.tonos uni1FDD.tonos uni1FCE.tonos uni1FDE.tonos uni1FCF.tonos uni1FDF.tonos uni1FEF.tonos uni1FFD.tonos titlocyrilliccmb palatalizationcyrilliccmb dasiapneumatacyrilliccmb psilipneumatacyrilliccmb uni0487 uni0488 uni0489 uniA69F uni0363 uni0364 uni0365 uni0366 uni0367 uni0368 uni0369 uni036A uni036B uni036C uni036D uni036E uni036F uni1DCA uni1DD3 uni1DD4 uni1DD5 uni1DD6 uni1DD7 uni1DD8 uni1DD9 uni1DDA uni1DDB uni1DDC uni1DDD uni1DDE uni1DDF uni1DE0 uni1DE1 uni1DE2 uni1DE3 uni1DE4 uni1DE5 uni1DE6 uni1DE7 uni1DE9 Omegaroundcyrillic omegaroundcyrillic Omegatitlocyrillic omegatitlocyrillic Otcyrillic otcyrillic uni2DFF crossbar acutedotcomb.lc tildedieresiscomb.lc dieresisacutecomb.lc carondotcomb.lc caronnosp caronsubnosp ascript_uni02DE cyrillichookleft dotmacroncomb.lc dieresismacroncomb.lc dieresisgravecomb.lc largerighthook tildemacroncomb.lc macrondieresiscomb.lc tildeacutecomb dieresiscaroncomb.lc cyrillichook ringacute.cn circumflexgravecomb.cn dieresiscaroncomb.cn dieresismacroncomb.cn carondotcomb.cn breveacutecomb.cn acutedotcomb.cn brevegravecomb.cn circumflexacutecomb.cn tildedieresiscomb.cn circumflexhookcomb.cn brevetildecomb.cn dieresisacutecomb.cn dotmacroncomb.cn macrondieresiscomb.cn dieresisgravecomb.cn tildemacroncomb.cn circumflextildecomb.cn brevehookcomb.cn commaaccentrotate.cn tonostop tildeacutecomb.uc";
name = All;
}
);
@@ -1715,8 +1723,10 @@ bullseye,
estimated,
leftArrow,
leftLongArrow,
+leftLongArrow2,
rightArrow,
rightLongArrow,
+rightLongArrow2,
northWestArrow,
northEastArrow,
southEastArrow,
@@ -1730,8 +1740,10 @@ leftHookArrow,
rightHookArrow,
leftArrow.case,
leftLongArrow.case,
+leftLongArrow2.case,
rightArrow.case,
rightLongArrow.case,
+rightLongArrow2.case,
leftRightArrow.case,
leftRightLongArrow.case,
dngb_check,
@@ -2063,7 +2075,7 @@ name = Languagesystems;
);
features = (
{
-code = "@CCMP_ACC = [\012 gravecomb acutecomb tildecomb brevetildecomb.cn brevehookcomb.cn\012 breveacutecomb.cn circumflextildecomb.cn circumflexhookcomb.cn\012 circumflexgravecomb.cn circumflexacutecomb.cn brevegravecomb.cn\012 macroncomb dieresismacroncomb.cn dieresisacutecomb.cn\012 dieresiscaroncomb.cn dieresisgravecomb.cn dotmacroncomb.cn\012 tildeacutecomb macrongravecomb.cn macronacutecomb.cn\012 macrondieresiscomb.cn acutedotcomb.cn carondotcomb.cn\012 tildemacroncomb.cn tildedieresiscomb.cn circumflexnosp overscorenosp\012 brevenosp dotnosp dieresisnosp hook ringnosp acutedblnosp caroncmb\012 linevertnosp linevertdblnosp dblgravecmb candrabindunosp breveinvnosp\012 commaturnsupnosp commaabovecmb commasuprevnosp commaaboverightcmb\012 anglesupnosp hornnosp xsupnosp tildevertsupnosp overscoredblnosp\012 graveleftnosp acuterightnosp perispomenigreekcmb koroniscmb\012 diaeresistonosnosp uni0346 uni034A uni034B uni034C arrowheadrightabovecomb uni0351\012 uni0352 uni0357 uni0358 uni035B uni1DC0 uni1DC1 uni1DC3 uni1DC4\012 uni1DC5 uni1DC6 uni1DC7 uni1DC8 uni1DC9 uni1DCB uni1DCC uni1DCD\012 uni1DCE uni1DD1 uni1DD2 uni1DD3 uni1DD4 uni1DD5 uni1DD6 uni1DD7\012 uni1DD8 uni1DD9 uni1DDA uni1DDB uni1DDC uni1DDD uni1DDE uni1DDF\012 uni1DE0 uni1DE1 uni1DE2 uni1DE3 uni1DE4 uni1DE5 uni1DE6 uni1DE7\012 uni1DE8 uni1DE9 uni1DEA uni1DEB uni1DEC uni1DED uni1DEE uni1DEF\012 uni1DF0 uni1DF1 uni1DF2 uni1DF3 uni1DF4 uni1DF5 uni1DFE uni0363\012 uni0364 uni0365 uni0366 uni0367 uni0368 uni0369 uni036A uni036B\012 uni036C uni036D uni036E uni036F titlocyrilliccmb\012 palatalizationcyrilliccmb dasiapneumatacyrilliccmb\012 psilipneumatacyrilliccmb uni0487 uni20F0 uniA69F uni2DFF uni20DC\012 uniFE20 uniFE21 uniFE22 uniFE23 uniFE24 uniFE25 uniFE26\012];\012\012# Transpose sequences like /i /gravecomb -> /idotless /gravecomb\012lookup ccmp02 {\012 sub i' @CCMP_ACC by idotless;\012 sub j' @CCMP_ACC by jdotless;\012 sub ibar' @CCMP_ACC by uni0268.ccmp;\012 sub iogonek' @CCMP_ACC by uni012F.ccmp; # iogonek is generated\012 sub uni0249' @CCMP_ACC by uni0249.ccmp;\012 sub jcrosstail' @CCMP_ACC by jcrosstail.ccmp;\012 sub yotgreek' @CCMP_ACC by jdotless;\012 sub icyrillic' @CCMP_ACC by idotless;\012 sub jecyrillic' @CCMP_ACC by jdotless;\012 sub itildebelow' @CCMP_ACC by uni1E2D.ccmp; # uni1E2D.ccmp is generated\012 sub idotbelow' @CCMP_ACC by uni1ECB.ccmp; # both are generated\012 sub i.numr' @CCMP_ACC by uni2071.ccmp;\012} ccmp02;\012\012lookup ccmp03 {\012 sub d caroncmb by dcaron;\012 sub l caroncmb by lcaron;\012 sub t caroncmb by tcaron;\012\012 sub A gravecomb by Agrave;\012 sub A acutecomb by Aacute;\012 sub A circumflexnosp by Acircumflex;\012 sub A tildecomb by Atilde;\012 sub A dieresisnosp by Adieresis;\012 sub A ringnosp by Aring;\012 sub A ringacute.cn by Aringacute;\012 sub C cedillanosp by Ccedilla;\012 sub E gravecomb by Egrave;\012 sub E acutecomb by Eacute;\012 sub E circumflexnosp by Ecircumflex;\012 sub E dieresisnosp by Edieresis;\012 sub I gravecomb by Igrave;\012 sub I acutecomb by Iacute;\012 sub I circumflexnosp by Icircumflex;\012 sub I dieresisnosp by Idieresis;\012 sub N tildecomb by Ntilde;\012 sub O gravecomb by Ograve;\012 sub O acutecomb by Oacute;\012 sub O circumflexnosp by Ocircumflex;\012 sub O tildecomb by Otilde;\012 sub O dieresisnosp by Odieresis;\012 sub U gravecomb by Ugrave;\012 sub U acutecomb by Uacute;\012 sub U circumflexnosp by Ucircumflex;\012 sub U dieresisnosp by Udieresis;\012 sub Y acutecomb by Yacute;\012 sub a gravecomb by agrave;\012 sub a acutecomb by aacute;\012 sub a circumflexnosp by acircumflex;\012 sub a tildecomb by atilde;\012 sub a dieresisnosp by adieresis;\012 sub a ringnosp by aring;\012 sub a ringacute.cn by aringacute;\012 sub c cedillanosp by ccedilla;\012 sub e gravecomb by egrave;\012 sub e acutecomb by eacute;\012 sub e circumflexnosp by ecircumflex;\012 sub e dieresisnosp by edieresis;\012 sub idotless gravecomb by igrave;\012 sub idotless acutecomb by iacute;\012 sub idotless circumflexnosp by icircumflex;\012 sub idotless dieresisnosp by idieresis;\012 sub n tildecomb by ntilde;\012 sub o gravecomb by ograve;\012 sub o acutecomb by oacute;\012 sub o circumflexnosp by ocircumflex;\012 sub o tildecomb by otilde;\012 sub o dieresisnosp by odieresis;\012 sub u gravecomb by ugrave;\012 sub u acutecomb by uacute;\012 sub u circumflexnosp by ucircumflex;\012 sub u dieresisnosp by udieresis;\012 sub y acutecomb by yacute;\012 sub y dieresisnosp by ydieresis;\012 sub A macroncomb by Amacron;\012 sub a macroncomb by amacron;\012 sub A brevenosp by Abreve;\012 sub a brevenosp by abreve;\012 sub A ogoneknosp by Aogonek;\012 sub a ogoneknosp by aogonek;\012 sub C acutecomb by Cacute;\012 sub c acutecomb by cacute;\012 sub C circumflexnosp by Ccircumflex;\012 sub c circumflexnosp by ccircumflex;\012 sub C dotnosp by Cdotaccent;\012 sub c dotnosp by cdotaccent;\012 sub C caroncmb by Ccaron;\012 sub c caroncmb by ccaron;\012 sub D caroncmb by Dcaron;\012 sub E macroncomb by Emacron;\012 sub e macroncomb by emacron;\012 sub E brevenosp by Ebreve;\012 sub e brevenosp by ebreve;\012 sub E dotnosp by Edotaccent;\012 sub e dotnosp by edotaccent;\012 sub E ogoneknosp by Eogonek;\012 sub e ogoneknosp by eogonek;\012 sub E caroncmb by Ecaron;\012 sub e caroncmb by ecaron;\012 sub G circumflexnosp by Gcircumflex;\012 sub g circumflexnosp by gcircumflex;\012 sub G brevenosp by Gbreve;\012 sub g brevenosp by gbreve;\012 sub G dotnosp by Gdotaccent;\012 sub g dotnosp by gdotaccent;\012 sub G commaaccent by Gcommaaccent;\012 sub g commaaccentrotate.cn by gcommaaccent;\012 sub H circumflexnosp by Hcircumflex;\012 sub h circumflexnosp by hcircumflex;\012 sub I tildecomb by Itilde;\012 sub idotless tildecomb by itilde;\012 sub I macroncomb by Imacron;\012 sub idotless macroncomb by imacron;\012 sub I brevenosp by Ibreve;\012 sub idotless brevenosp by ibreve;\012 sub I ogoneknosp by Iogonek;\012 sub i ogoneknosp by iogonek;\012 sub I dotnosp by Idotaccent;\012 sub J circumflexnosp by Jcircumflex;\012 sub jdotless circumflexnosp by jcircumflex;\012 sub K commaaccent by Kcommaaccent;\012 sub k commaaccent by kcommaaccent;\012 sub L acutecomb by Lacute;\012 sub l acutecomb by lacute;\012 sub L commaaccent by Lcommaaccent;\012 sub l commaaccent by lcommaaccent;\012 sub L dotnosp by Ldot;\012 sub l dotnosp by ldot;\012 sub N acutecomb by Nacute;\012 sub n acutecomb by nacute;\012 sub N commaaccent by Ncommaaccent;\012 sub n commaaccent by ncommaaccent;\012 sub N caroncmb by Ncaron;\012 sub n caroncmb by ncaron;\012 sub O macroncomb by Omacron;\012 sub o macroncomb by omacron;\012 sub O brevenosp by Obreve;\012 sub o brevenosp by obreve;\012 sub O acutedblnosp by Ohungarumlaut;\012 sub o acutedblnosp by ohungarumlaut;\012 sub R acutecomb by Racute;\012 sub r acutecomb by racute;\012 sub R commaaccent by Rcommaaccent;\012 sub r commaaccent by rcommaaccent;\012 sub R caroncmb by Rcaron;\012 sub r caroncmb by rcaron;\012 sub S acutecomb by Sacute;\012 sub s acutecomb by sacute;\012 sub S circumflexnosp by Scircumflex;\012 sub s circumflexnosp by scircumflex;\012 sub S cedillanosp by Scedilla;\012 sub s cedillanosp by scedilla;\012 sub S commaaccent by Scommaaccent;\012 sub s commaaccent by scommaaccent;\012 sub S caroncmb by Scaron;\012 sub s caroncmb by scaron;\012 sub T commaaccent by uni021A;\012 sub t commaaccent by tcommaaccent;\012 sub T cedillanosp by Tcommaaccent;\012 sub t cedillanosp by tcedilla;\012 sub T caroncmb by Tcaron;\012 sub U tildecomb by Utilde;\012 sub u tildecomb by utilde;\012 sub U macroncomb by Umacron;\012 sub u macroncomb by umacron;\012 sub U brevenosp by Ubreve;\012 sub u brevenosp by ubreve;\012 sub U ringnosp by Uring;\012 sub u ringnosp by uring;\012 sub U acutedblnosp by Uhungarumlaut;\012 sub u acutedblnosp by uhungarumlaut;\012 sub U ogoneknosp by Uogonek;\012 sub u ogoneknosp by uogonek;\012 sub W circumflexnosp by Wcircumflex;\012 sub w circumflexnosp by wcircumflex;\012 sub Y circumflexnosp by Ycircumflex;\012 sub y circumflexnosp by ycircumflex;\012 sub Y dieresisnosp by Ydieresis;\012 sub Z acutecomb by Zacute;\012 sub z acutecomb by zacute;\012 sub Z dotnosp by Zdotaccent;\012 sub z dotnosp by zdotaccent;\012 sub Z caroncmb by Zcaron;\012 sub z caroncmb by zcaron;\012 sub AE acutecomb by AEacute;\012 sub ae acutecomb by aeacute;\012 sub Oslash acutecomb by Oslashacute;\012 sub oslash acutecomb by oslashacute;\012 #sub z caroncmb by zcaron;\012 sub W gravecomb by Wgrave;\012 sub w gravecomb by wgrave;\012 sub W acutecomb by Wacute;\012 sub w acutecomb by wacute;\012 sub W dieresisnosp by Wdieresis;\012 sub w dieresisnosp by wdieresis;\012 sub Y gravecomb by Ygrave;\012 sub y gravecomb by ygrave;\012 sub jdotless caroncmb by jcaron;\012 sub A dotbelow by Adotbelow;\012 sub a dotbelow by adotbelow;\012 sub A hook by Ahookabove;\012 sub a hook by ahookabove;\012 #sub A circumflexacutecomb.cn by uni1EA4;\012 sub A circumflexnosp acutecomb by Acircumflexacute;\012 sub a circumflexacutecomb.cn by acircumflexacute;\012 #sub A circumflexgravecomb.cn by uni1EA6;\012 sub A circumflexnosp gravecomb by Acircumflexgrave;\012 sub a circumflexgravecomb.cn by acircumflexgrave;\012 #sub A circumflexhookcomb.cn by uni1EA8;\012 sub A circumflexnosp hook by Acircumflexhookabove;\012 sub a circumflexhookcomb.cn by acircumflexhookabove;\012 #sub A circumflextildecomb.cn by uni1EAA;\012 sub A circumflexnosp tildecomb by Acircumflextilde;\012 sub a circumflextildecomb.cn by acircumflextilde;\012 #sub A breveacutecomb.cn by uni1EAE;\012 sub A brevenosp acutecomb by Abreveacute;\012 sub a breveacutecomb.cn by abreveacute;\012 #sub A brevegravecomb.cn by uni1EB0;\012 sub A brevenosp gravecomb by Abrevegrave;\012 sub a brevegravecomb.cn by abrevegrave;\012 #sub A brevehookcomb.cn by uni1EB2;\012 sub A brevenosp hook by Abrevehookabove;\012 sub a brevehookcomb.cn by abrevehookabove;\012 sub A brevetildecomb.cn by Abrevetilde;\012 sub a brevetildecomb.cn by abrevetilde;\012 sub E dotbelow by Edotbelow;\012 sub e dotbelow by edotbelow;\012 sub E hook by Ehookabove;\012 sub e hook by ehookabove;\012 sub E tildecomb by Etilde;\012 sub e tildecomb by etilde;\012 #sub E circumflexacutecomb.cn by uni1EBE;\012 sub E circumflexnosp acutecomb by Ecircumflexacute;\012 sub e circumflexacutecomb.cn by ecircumflexacute;\012 #sub E circumflexgravecomb.cn by uni1EC0;\012 sub E circumflexnosp gravecomb by Ecircumflexgrave;\012 sub e circumflexgravecomb.cn by ecircumflexgrave;\012 #sub E circumflexhookcomb.cn by uni1EC2;\012 sub E circumflexnosp hook by Ecircumflexhookabove;\012 sub e circumflexhookcomb.cn by ecircumflexhookabove;\012 #sub E circumflextildecomb.cn by uni1EC4;\012 sub E circumflexnosp tildecomb by Ecircumflextilde;\012 sub e circumflextildecomb.cn by ecircumflextilde;\012 sub I hook by Ihookabove;\012 sub idotless hook by ihookabove;\012 sub I dotbelow by Idotbelow;\012 sub i dotbelow by idotbelow;\012 sub O dotbelow by Odotbelow;\012 sub o dotbelow by odotbelow;\012 sub O hook by Ohookabove;\012 sub o hook by ohookabove;\012 #sub O circumflexacutecomb.cn by uni1ED0;\012 sub O circumflexnosp acutecomb by Ocircumflexacute;\012 sub o circumflexacutecomb.cn by ocircumflexacute;\012 #sub O circumflexgravecomb.cn by uni1ED2;\012 sub O circumflexnosp gravecomb by Ocircumflexgrave;\012 sub o circumflexgravecomb.cn by ocircumflexgrave;\012 #sub O circumflexhookcomb.cn by uni1ED4;\012 sub O circumflexnosp hook by Ocircumflexhookabove;\012 sub o circumflexhookcomb.cn by ocircumflexhookabove;\012 #sub O circumflextildecomb.cn by uni1ED6;\012 sub O circumflexnosp tildecomb by Ocircumflextilde;\012 sub o circumflextildecomb.cn by ocircumflextilde;\012 sub Ohorn acutecomb by Ohornacute;\012 sub ohorn acutecomb by ohornacute;\012 sub Ohorn gravecomb by Ohorngrave;\012 sub ohorn gravecomb by ohorngrave;\012 sub Ohorn hook by Ohornhookabove;\012 sub ohorn hook by ohornhookabove;\012 sub Ohorn tildecomb by Ohorntilde;\012 sub ohorn tildecomb by ohorntilde;\012 sub Ohorn dotbelow by Ohorndotbelow;\012 sub ohorn dotbelow by ohorndotbelow;\012 sub U dotbelow by Udotbelow;\012 sub u dotbelow by udotbelow;\012 sub U hook by Uhookabove;\012 sub u hook by uhookabove;\012 sub Uhorn acutecomb by Uhornacute;\012 sub uhorn acutecomb by uhornacute;\012 sub Uhorn gravecomb by Uhorngrave;\012 sub uhorn gravecomb by uhorngrave;\012 sub Uhorn hook by Uhornhookabove;\012 sub uhorn hook by uhornhookabove;\012 sub Uhorn tildecomb by Uhorntilde;\012 sub uhorn tildecomb by uhorntilde;\012 sub Uhorn dotbelow by Uhorndotbelow;\012 sub uhorn dotbelow by uhorndotbelow;\012 sub Y dotbelow by Ydotbelow;\012 sub y dotbelow by ydotbelow;\012 sub Y hook by Yhookabove;\012 sub y hook by yhookabove;\012 sub Y tildecomb by Ytilde;\012 sub y tildecomb by ytilde;\012 sub A caroncmb by Acaron;\012 sub a caroncmb by acaron;\012 sub I caroncmb by Icaron;\012 sub idotless caroncmb by icaron;\012 sub O caroncmb by Ocaron;\012 sub o caroncmb by ocaron;\012 sub U caroncmb by Ucaron;\012 sub u caroncmb by ucaron;\012 #sub U dieresismacroncomb.cn by uni01D5;\012 sub U dieresisnosp macroncomb by Udieresismacron;\012 sub u dieresismacroncomb.cn by udieresismacron;\012 #sub U dieresisacutecomb.cn by uni01D7;\012 sub U dieresisnosp acutecomb by Udieresisacute;\012 sub u dieresisacutecomb.cn by udieresisacute;\012 #sub U dieresiscaroncomb.cn by uni01D9;\012 sub U dieresisnosp caroncmb by Udieresiscaron;\012 sub u dieresiscaroncomb.cn by udieresiscaron;\012 #sub U dieresisgravecomb.cn by uni01DB;\012 sub U dieresisnosp gravecomb by Udieresisgrave;\012 sub u dieresisgravecomb.cn by udieresisgrave;\012 #sub A dieresismacroncomb.cn by uni01DE;\012 sub A dieresisnosp macroncomb by Adieresismacron;\012 sub a dieresismacroncomb.cn by adieresismacron;\012 #sub A dotmacroncomb.cn by uni01E0;\012 sub A dotnosp macroncomb by Adotmacron;\012 sub a dotmacroncomb.cn by adotmacron;\012 sub AE macroncomb by AEmacron;\012 sub ae macroncomb by aemacron;\012 sub G caroncmb by Gcaron;\012 sub g caroncmb by gcaron;\012 sub K caroncmb by Kcaron;\012 sub k caroncmb by kcaron;\012 sub O ogoneknosp by Oogonek;\012 sub o ogoneknosp by oogonek;\012 sub G acutecomb by Gacute;\012 sub g acutecomb by gacute;\012 sub N gravecomb by uni01F8;\012 sub n gravecomb by uni01F9;\012 sub A dblgravecmb by Adblgrave;\012 sub a dblgravecmb by adblgrave;\012 sub A breveinvnosp by Ainvertedbreve;\012 sub a breveinvnosp by ainvertedbreve;\012 sub E dblgravecmb by Edblgrave;\012 sub e dblgravecmb by edblgrave;\012 sub E breveinvnosp by Einvertedbreve;\012 sub e breveinvnosp by einvertedbreve;\012 sub I dblgravecmb by Idblgrave;\012 sub idotless dblgravecmb by idblgrave;\012 sub I breveinvnosp by Iinvertedbreve;\012 sub idotless breveinvnosp by iinvertedbreve;\012 sub O dblgravecmb by Odblgrave;\012 sub o dblgravecmb by odblgrave;\012 sub O breveinvnosp by Oinvertedbreve;\012 sub o breveinvnosp by oinvertedbreve;\012 sub R dblgravecmb by Rdblgrave;\012 sub r dblgravecmb by rdblgrave;\012 sub R breveinvnosp by Rinvertedbreve;\012 sub r breveinvnosp by rinvertedbreve;\012 sub U dblgravecmb by Udblgrave;\012 sub u dblgravecmb by udblgrave;\012 sub U breveinvnosp by Uinvertedbreve;\012 sub u breveinvnosp by uinvertedbreve;\012 sub H caroncmb by uni021E;\012 sub h caroncmb by uni021F;\012 sub A dotnosp by uni0226;\012 sub a dotnosp by uni0227;\012 sub E cedillanosp by uni0228;\012 sub e cedillanosp by uni0229;\012 #sub O dieresismacroncomb.cn by uni022A;\012 sub O dieresisnosp macroncomb by uni022A;\012 sub o dieresismacroncomb.cn by uni022B;\012 #sub O tildemacroncomb.cn by uni022C;\012 sub O tildecomb macroncomb by uni022C;\012 sub o tildemacroncomb.cn by uni022D;\012 sub O dotnosp by uni022E;\012 sub o dotnosp by uni022F;\012 #sub O dotmacroncomb.cn by uni0230;\012 sub O dotnosp macroncomb by uni0230;\012 sub o dotmacroncomb.cn by uni0231;\012 sub Y macroncomb by uni0232;\012 sub y macroncomb by uni0233;\012 sub Upsilonhooksymbol acutecomb by Upsilonacutehooksymbolgreek;\012 sub Upsilonhooksymbol dieresisnosp by Upsilondieresishooksymbolgreek;\012 sub B dotnosp by Bdotaccent;\012 sub b dotnosp by bdotaccent;\012 sub B dotbelow by Bdotbelow;\012 sub b dotbelow by bdotbelow;\012 sub B macronsubnosp by Blinebelow;\012 sub b macronsubnosp by blinebelow;\012 sub D dotnosp by Ddotaccent;\012 sub d dotnosp by ddotaccent;\012 sub D dotbelow by Ddotbelow;\012 sub d dotbelow by ddotbelow;\012 sub D macronsubnosp by Dlinebelow;\012 sub d macronsubnosp by dlinebelow;\012 sub D commaaccent by Dcedilla;\012 sub d commaaccent by dcedilla;\012 sub D circumflexsubnosp by Dcircumflexbelow;\012 sub d circumflexsubnosp by dcircumflexbelow;\012 #sub E macrongravecomb.cn by uni1E14;\012 sub E macroncomb gravecomb by Emacrongrave;\012 sub e macrongravecomb.cn by emacrongrave;\012 #sub E macronacutecomb.cn by uni1E16;\012 sub E macroncomb acutecomb by Emacronacute;\012 sub e macronacutecomb.cn by emacronacute;\012 sub E circumflexsubnosp by Ecircumflexbelow;\012 sub e circumflexsubnosp by ecircumflexbelow;\012 sub E tildesubnosp by Etildebelow;\012 sub e tildesubnosp by etildebelow;\012 sub F dotnosp by Fdotaccent;\012 sub f dotnosp by fdotaccent;\012 sub G macroncomb by Gmacron;\012 sub g macroncomb by gmacron;\012 sub H dotnosp by Hdotaccent;\012 sub h dotnosp by hdotaccent;\012 sub H dotbelow by Hdotbelow;\012 sub h dotbelow by hdotbelow;\012 sub H dieresisnosp by Hdieresis;\012 sub h dieresisnosp by hdieresis;\012 sub H brevesubnosp by Hbrevebelow;\012 sub h brevesubnosp by hbrevebelow;\012 sub I tildesubnosp by Itildebelow;\012 sub i tildesubnosp by itildebelow;\012 #sub I dieresisacutecomb.cn by Idieresisacute;\012 sub I dieresisnosp acutecomb by Idieresisacute;\012 sub idotless dieresisacutecomb.cn by idieresisacute;\012 sub K acutecomb by Kacute;\012 sub k acutecomb by kacute;\012 sub K dotbelow by Kdotbelow;\012 sub k dotbelow by kdotbelow;\012 sub K macronsubnosp by Klinebelow;\012 sub k macronsubnosp by klinebelow;\012 sub L dotbelow by Ldotbelow;\012 sub l dotbelow by ldotbelow;\012 sub L macronsubnosp by Llinebelow;\012 sub l macronsubnosp by llinebelow;\012 sub L circumflexsubnosp by Lcircumflexbelow;\012 sub l circumflexsubnosp by lcircumflexbelow;\012 sub M acutecomb by Macute;\012 sub m acutecomb by macute;\012 sub M dotnosp by Mdotaccent;\012 sub m dotnosp by mdotaccent;\012 sub M dotbelow by Mdotbelow;\012 sub m dotbelow by mdotbelow;\012 sub N dotnosp by Ndotaccent;\012 sub n dotnosp by ndotaccent;\012 sub N dotbelow by Ndotbelow;\012 sub n dotbelow by ndotbelow;\012 sub N macronsubnosp by Nlinebelow;\012 sub n macronsubnosp by nlinebelow;\012 sub N circumflexsubnosp by Ncircumflexbelow;\012 sub n circumflexsubnosp by ncircumflexbelow;\012 #sub O tildeacutecomb.cn by uni1E4C;\012 sub O tildecomb acutecomb by Otildeacute;\012 sub o tildeacutecomb by otildeacute;\012 #sub O tildedieresiscomb.cn by uni1E4E;\012 sub O tildecomb dieresisnosp by Otildedieresis;\012 sub o tildedieresiscomb.cn by otildedieresis;\012 #sub O macrongravecomb.cn by uni1E50;\012 sub O macroncomb gravecomb by Omacrongrave;\012 sub o macrongravecomb.cn by omacrongrave;\012 #sub O macronacutecomb.cn by uni1E52;\012 sub O macroncomb acutecomb by Omacronacute;\012 sub o macronacutecomb.cn by omacronacute;\012 sub P acutecomb by Pacute;\012 sub p acutecomb by pacute;\012 sub P dotnosp by Pdotaccent;\012 sub p dotnosp by pdotaccent;\012 sub R dotnosp by Rdotaccent;\012 sub r dotnosp by rdotaccent;\012 sub R dotbelow by Rdotbelow;\012 sub r dotbelow by rdotbelow;\012 sub R macronsubnosp by Rlinebelow;\012 sub r macronsubnosp by rlinebelow;\012 sub S dotnosp by Sdotaccent;\012 sub s dotnosp by sdotaccent;\012 sub S dotbelow by Sdotbelow;\012 sub s dotbelow by sdotbelow;\012 #sub S acutedotcomb.cn by uni1E64;\012 sub S acutecomb dotnosp by Sacutedotaccent;\012 sub s acutedotcomb.cn by sacutedotaccent;\012 #sub S carondotcomb.cn by uni1E66;\012 sub S caroncmb dotnosp by Scarondotaccent;\012 sub s carondotcomb.cn by scarondotaccent;\012 sub T dotnosp by Tdotaccent;\012 sub t dotnosp by tdotaccent;\012 sub T dotbelow by Tdotbelow;\012 sub t dotbelow by tdotbelow;\012 sub T macronsubnosp by Tlinebelow;\012 sub t macronsubnosp by tlinebelow;\012 sub T circumflexsubnosp by Tcircumflexbelow;\012 sub t circumflexsubnosp by tcircumflexbelow;\012 sub U dotdblsubnosp by Udieresisbelow;\012 sub u dotdblsubnosp by udieresisbelow;\012 sub U tildesubnosp by Utildebelow;\012 sub u tildesubnosp by utildebelow;\012 sub U circumflexsubnosp by Ucircumflexbelow;\012 sub u circumflexsubnosp by ucircumflexbelow;\012 #sub U tildeacutecomb.cn by uni1E78;\012 sub U tildecomb acutecomb by Utildeacute;\012 sub u tildeacutecomb by utildeacute;\012 #sub U macrondieresiscomb.cn by uni1E7A;\012 sub U macroncomb dieresisnosp by Umacrondieresis;\012 sub u macrondieresiscomb.cn by umacrondieresis;\012 sub V tildecomb by Vtilde;\012 sub v tildecomb by vtilde;\012 sub V dotbelow by Vdotbelow;\012 sub v dotbelow by vdotbelow;\012 sub W dotnosp by Wdotaccent;\012 sub w dotnosp by wdotaccent;\012 sub W dotbelow by Wdotbelow;\012 sub w dotbelow by wdotbelow;\012 sub X dotnosp by Xdotaccent;\012 sub x dotnosp by xdotaccent;\012 sub X dieresisnosp by Xdieresis;\012 sub x dieresisnosp by xdieresis;\012 sub Y dotnosp by Ydotaccent;\012 sub y dotnosp by ydotaccent;\012 sub Z circumflexnosp by Zcircumflex;\012 sub z circumflexnosp by zcircumflex;\012 sub Z dotbelow by Zdotbelow;\012 sub z dotbelow by zdotbelow;\012 sub Z macronsubnosp by Zlinebelow;\012 sub z macronsubnosp by zlinebelow;\012 sub h macronsubnosp by hlinebelow;\012 sub t dieresisnosp by tdieresis;\012 sub w ringnosp by wring;\012 sub y ringnosp by yring;\012 sub longs dotnosp by slongdotaccent;\012 sub A ringsubnosp by Aringbelow;\012 sub a ringsubnosp by aringbelow;\012} ccmp03;\012";
+code = "include(features/ccmp.fea);\012";
name = ccmp;
},
{
@@ -2077,7 +2089,7 @@ code = "script latn;\012language ROM;\012sub Scedilla by Scommaaccent;\012sub sc
name = locl;
},
{
-code = "@figures = [\012 zero\012 one\012 two\012 three\012 four\012 five\012 six\012 seven\012 eight\012 nine\012];\012@numerators = [\012 zero.frac\012 one.frac\012 two.frac\012 three.frac\012 four.frac\012 five.frac\012 six.frac\012 seven.frac\012 eight.frac\012 nine.frac\012];\012@numerators2 = [\012 zero.numr\012 one.numr\012 two.numr\012 three.numr\012 four.numr\012 five.numr\012 six.numr\012 seven.numr\012 eight.numr\012 nine.numr\012];\012@denominators = [\012 zero.dnomf\012 one.dnomf\012 two.dnomf\012 three.dnomf\012 four.dnomf\012 five.dnomf\012 six.dnomf\012 seven.dnomf\012 eight.dnomf\012 nine.dnomf\012];\012@denominators2 = [\012 zero.dnom\012 one.dnom\012 two.dnom\012 three.dnom\012 four.dnom\012 five.dnom\012 six.dnom\012 seven.dnom\012 eight.dnom\012 nine.dnom\012];\012@subscripts = [\012 zero.subs\012 one.subs\012 two.subs\012 three.subs\012 four.subs\012 five.subs\012 six.subs\012 seven.subs\012 eight.subs\012 nine.subs\012];\012\012lookup FractionBar {\012 ignore sub slash @figures @figures @figures @figures @figures @figures @figures @figures @figures @figures slash';\012 ignore sub slash' @figures @figures @figures @figures @figures @figures @figures @figures @figures @figures slash;\012 ignore sub slash @figures @figures @figures @figures @figures @figures @figures @figures @figures slash';\012 ignore sub slash' @figures @figures @figures @figures @figures @figures @figures @figures @figures slash;\012 ignore sub slash @figures @figures @figures @figures @figures @figures @figures @figures slash';\012 ignore sub slash' @figures @figures @figures @figures @figures @figures @figures @figures slash;\012 ignore sub slash @figures @figures @figures @figures @figures @figures @figures slash';\012 ignore sub slash' @figures @figures @figures @figures @figures @figures @figures slash;\012 ignore sub slash @figures @figures @figures @figures @figures @figures slash';\012 ignore sub slash' @figures @figures @figures @figures @figures @figures slash;\012 ignore sub slash @figures @figures @figures @figures @figures slash';\012 ignore sub slash' @figures @figures @figures @figures @figures slash;\012 ignore sub slash @figures @figures @figures @figures slash';\012 ignore sub slash' @figures @figures @figures @figures slash;\012 ignore sub slash @figures @figures @figures slash';\012 ignore sub slash' @figures @figures @figures slash;\012 ignore sub slash @figures @figures slash';\012 ignore sub slash' @figures @figures slash;\012 ignore sub slash @figures slash';\012 ignore sub slash' @figures slash;\012 sub @figures slash' @figures by fraction;\012} FractionBar;\012\012lookup Numerator1 {\012 sub @figures'\012 fraction by @numerators;\012} Numerator1;\012\012lookup Numerator2 {\012 sub @figures'\012 [@numerators @numerators2]\012 fraction by @numerators;\012} Numerator2;\012\012lookup Numerator3 {\012 sub @figures'\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 fraction by @numerators;\012} Numerator3;\012\012lookup Numerator4 {\012 sub @figures'\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 fraction by @numerators;\012} Numerator4;\012\012lookup Numerator5 {\012 sub @figures'\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 fraction by @numerators;\012} Numerator5;\012\012lookup Numerator6 {\012 sub @figures'\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 fraction by @numerators;\012} Numerator6;\012\012lookup Numerator7 {\012 sub @figures'\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 fraction by @numerators;\012} Numerator7;\012\012lookup Numerator8 {\012 sub @figures'\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 fraction by @numerators;\012} Numerator8;\012\012lookup Numerator9 {\012 sub @figures'\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 fraction by @numerators;\012} Numerator9;\012\012lookup Numerator10 {\012 sub @figures'\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 [@numerators @numerators2]\012 fraction by @numerators;\012} Numerator10;\012\012lookup Denominator {\012 sub [fraction @denominators @denominators2 onefraction] @figures' by @denominators;\012 sub [fraction @denominators @denominators2 onefraction] @subscripts' by @denominators;\012} Denominator;\012\012sub @figures space' [@numerators @numerators2] by thinspace;";
+code = "include(features/frac.fea);";
name = frac;
},
{
@@ -2092,18 +2104,22 @@ name = dnom;
},
{
automatic = 1;
-code = "sub parenleft by parenleft.case;\012sub parenright by parenright.case;\012sub bracketleft by bracketleft.case;\012sub bracketright by bracketright.case;\012sub braceleft by braceleft.case;\012sub braceright by braceright.case;\012sub at by at.case;\012sub hyphen by hyphen.case;\012sub endash by endash.case;\012sub figuredash by figuredash.case;\012sub emdash by emdash.case;\012sub bullet by bullet.case;\012sub openbullet by openbullet.case;\012sub hyphenbullet by hyphenbullet.case;\012sub trianglebullet by trianglebullet.case;\012sub blackleftbullet by blackleftbullet.case;\012sub blackrightbullet by blackrightbullet.case;\012sub colon by colon.case;\012sub less by less.case;\012sub greater by greater.case;\012sub lessequal by lessequal.case;\012sub greaterequal by greaterequal.case;\012sub equal by equal.case;\012sub notequal by notequal.case;\012sub plus by plus.case;\012sub minus by minus.case;\012sub multiply by multiply.case;\012sub divide by divide.case;\012sub plusminus by plusminus.case;\012sub approxequal by approxequal.case;\012sub asciitilde by asciitilde.case;\012sub asterisk by asterisk.case;\012sub leftArrow by leftArrow.case;\012sub leftLongArrow by leftLongArrow.case;\012sub rightArrow by rightArrow.case;\012sub rightLongArrow by rightLongArrow.case;\012sub leftRightArrow by leftRightArrow.case;\012sub leftRightLongArrow by leftRightLongArrow.case;\012";
+code = "sub parenleft by parenleft.case;\012sub parenright by parenright.case;\012sub bracketleft by bracketleft.case;\012sub bracketright by bracketright.case;\012sub braceleft by braceleft.case;\012sub braceright by braceright.case;\012sub at by at.case;\012sub hyphen by hyphen.case;\012sub endash by endash.case;\012sub figuredash by figuredash.case;\012sub emdash by emdash.case;\012sub bullet by bullet.case;\012sub openbullet by openbullet.case;\012sub hyphenbullet by hyphenbullet.case;\012sub trianglebullet by trianglebullet.case;\012sub blackleftbullet by blackleftbullet.case;\012sub blackrightbullet by blackrightbullet.case;\012sub colon by colon.case;\012sub less by less.case;\012sub greater by greater.case;\012sub lessequal by lessequal.case;\012sub greaterequal by greaterequal.case;\012sub equal by equal.case;\012sub notequal by notequal.case;\012sub plus by plus.case;\012sub minus by minus.case;\012sub multiply by multiply.case;\012sub divide by divide.case;\012sub plusminus by plusminus.case;\012sub approxequal by approxequal.case;\012sub asciitilde by asciitilde.case;\012sub asterisk by asterisk.case;\012sub leftArrow by leftArrow.case;\012sub leftLongArrow by leftLongArrow.case;\012sub leftLongArrow2 by leftLongArrow2.case;\012sub rightArrow by rightArrow.case;\012sub rightLongArrow by rightLongArrow.case;\012sub rightLongArrow2 by rightLongArrow2.case;\012sub leftRightArrow by leftRightArrow.case;\012sub leftRightLongArrow by leftRightLongArrow.case;\012";
name = case;
},
{
-code = "# * enclosingsquarecomb -> composite\012sub A enclosingsquarecomb by A.squared;\012sub B enclosingsquarecomb by B.squared;\012sub C enclosingsquarecomb by C.squared;\012sub D enclosingsquarecomb by D.squared;\012sub E enclosingsquarecomb by E.squared;\012sub F enclosingsquarecomb by F.squared;\012sub G enclosingsquarecomb by G.squared;\012sub H enclosingsquarecomb by H.squared;\012sub I enclosingsquarecomb by I.squared;\012sub J enclosingsquarecomb by J.squared;\012sub K enclosingsquarecomb by K.squared;\012sub L enclosingsquarecomb by L.squared;\012sub M enclosingsquarecomb by M.squared;\012sub N enclosingsquarecomb by N.squared;\012sub O enclosingsquarecomb by O.squared;\012sub P enclosingsquarecomb by P.squared;\012sub Q enclosingsquarecomb by Q.squared;\012sub R enclosingsquarecomb by R.squared;\012sub S enclosingsquarecomb by S.squared;\012sub T enclosingsquarecomb by T.squared;\012sub U enclosingsquarecomb by U.squared;\012sub V enclosingsquarecomb by V.squared;\012sub W enclosingsquarecomb by W.squared;\012sub X enclosingsquarecomb by X.squared;\012sub Y enclosingsquarecomb by Y.squared;\012sub Z enclosingsquarecomb by Z.squared;\012sub zero enclosingsquarecomb by zero.squared;\012sub one enclosingsquarecomb by one.squared;\012sub two enclosingsquarecomb by two.squared;\012sub three enclosingsquarecomb by three.squared;\012sub four enclosingsquarecomb by four.squared;\012sub five enclosingsquarecomb by five.squared;\012sub six enclosingsquarecomb by six.squared;\012sub seven enclosingsquarecomb by seven.squared;\012sub eight enclosingsquarecomb by eight.squared;\012sub nine enclosingsquarecomb by nine.squared;\012sub zero.slash enclosingsquarecomb by zero.slash.squared;\012sub one.ss01 enclosingsquarecomb by one.ss01.squared;\012sub three.1 enclosingsquarecomb by three.1.squared;\012sub four.ss01 enclosingsquarecomb by four.ss01.squared;\012sub six.ss01 enclosingsquarecomb by six.ss01.squared;\012sub nine.ss01 enclosingsquarecomb by nine.ss01.squared;\012sub exclam enclosingsquarecomb by exclam.squared;\012sub question enclosingsquarecomb by question.squared;\012sub numbersign enclosingsquarecomb by numbersign.squared;\012sub hyphen enclosingsquarecomb by hyphen.squared;\012sub less enclosingsquarecomb by less.squared;\012sub greater enclosingsquarecomb by greater.squared;\012sub equal enclosingsquarecomb by equal.squared;\012sub plus enclosingsquarecomb by plus.squared;\012sub minus enclosingsquarecomb by minus.squared;\012sub multiply enclosingsquarecomb by multiply.squared;\012sub divide enclosingsquarecomb by divide.squared;\012sub upArrow enclosingsquarecomb by upArrow.squared;\012sub downArrow enclosingsquarecomb by downArrow.squared;\012sub leftArrow enclosingsquarecomb by leftArrow.squared;\012sub rightArrow enclosingsquarecomb by rightArrow.squared;\012sub dngb_check enclosingsquarecomb by dngb_check.squared;\012sub dngb_ballotx enclosingsquarecomb by dngb_ballotx.squared;\012\012# enclosingsquarecomb * -> composite\012sub enclosingsquarecomb A by A.squared;\012sub enclosingsquarecomb B by B.squared;\012sub enclosingsquarecomb C by C.squared;\012sub enclosingsquarecomb D by D.squared;\012sub enclosingsquarecomb E by E.squared;\012sub enclosingsquarecomb F by F.squared;\012sub enclosingsquarecomb G by G.squared;\012sub enclosingsquarecomb H by H.squared;\012sub enclosingsquarecomb I by I.squared;\012sub enclosingsquarecomb J by J.squared;\012sub enclosingsquarecomb K by K.squared;\012sub enclosingsquarecomb L by L.squared;\012sub enclosingsquarecomb M by M.squared;\012sub enclosingsquarecomb N by N.squared;\012sub enclosingsquarecomb O by O.squared;\012sub enclosingsquarecomb P by P.squared;\012sub enclosingsquarecomb Q by Q.squared;\012sub enclosingsquarecomb R by R.squared;\012sub enclosingsquarecomb S by S.squared;\012sub enclosingsquarecomb T by T.squared;\012sub enclosingsquarecomb U by U.squared;\012sub enclosingsquarecomb V by V.squared;\012sub enclosingsquarecomb W by W.squared;\012sub enclosingsquarecomb X by X.squared;\012sub enclosingsquarecomb Y by Y.squared;\012sub enclosingsquarecomb Z by Z.squared;\012sub enclosingsquarecomb zero by zero.squared;\012sub enclosingsquarecomb one by one.squared;\012sub enclosingsquarecomb two by two.squared;\012sub enclosingsquarecomb three by three.squared;\012sub enclosingsquarecomb four by four.squared;\012sub enclosingsquarecomb five by five.squared;\012sub enclosingsquarecomb six by six.squared;\012sub enclosingsquarecomb seven by seven.squared;\012sub enclosingsquarecomb eight by eight.squared;\012sub enclosingsquarecomb nine by nine.squared;\012sub enclosingsquarecomb zero.slash by zero.slash.squared;\012sub enclosingsquarecomb one.ss01 by one.ss01.squared;\012sub enclosingsquarecomb three.1 by three.1.squared;\012sub enclosingsquarecomb four.ss01 by four.ss01.squared;\012sub enclosingsquarecomb six.ss01 by six.ss01.squared;\012sub enclosingsquarecomb nine.ss01 by nine.ss01.squared;\012sub enclosingsquarecomb exclam by exclam.squared;\012sub enclosingsquarecomb question by question.squared;\012sub enclosingsquarecomb numbersign by numbersign.squared;\012sub enclosingsquarecomb hyphen by hyphen.squared;\012sub enclosingsquarecomb less by less.squared;\012sub enclosingsquarecomb greater by greater.squared;\012sub enclosingsquarecomb equal by equal.squared;\012sub enclosingsquarecomb plus by plus.squared;\012sub enclosingsquarecomb minus by minus.squared;\012sub enclosingsquarecomb multiply by multiply.squared;\012sub enclosingsquarecomb divide by divide.squared;\012sub enclosingsquarecomb upArrow by upArrow.squared;\012sub enclosingsquarecomb downArrow by downArrow.squared;\012sub enclosingsquarecomb leftArrow by leftArrow.squared;\012sub enclosingsquarecomb rightArrow by rightArrow.squared;\012sub enclosingsquarecomb dngb_check by dngb_check.squared;\012sub enclosingsquarecomb dngb_ballotx by dngb_ballotx.squared;\012\012# * enclosingcirclecomb -> composite\012sub A enclosingcirclecomb by A.circled;\012sub B enclosingcirclecomb by B.circled;\012sub C enclosingcirclecomb by C.circled;\012sub D enclosingcirclecomb by D.circled;\012sub E enclosingcirclecomb by E.circled;\012sub F enclosingcirclecomb by F.circled;\012sub G enclosingcirclecomb by G.circled;\012sub H enclosingcirclecomb by H.circled;\012sub I enclosingcirclecomb by I.circled;\012sub J enclosingcirclecomb by J.circled;\012sub K enclosingcirclecomb by K.circled;\012sub L enclosingcirclecomb by L.circled;\012sub M enclosingcirclecomb by M.circled;\012sub N enclosingcirclecomb by N.circled;\012sub O enclosingcirclecomb by O.circled;\012sub P enclosingcirclecomb by P.circled;\012sub Q enclosingcirclecomb by Q.circled;\012sub R enclosingcirclecomb by R.circled;\012sub S enclosingcirclecomb by S.circled;\012sub T enclosingcirclecomb by T.circled;\012sub U enclosingcirclecomb by U.circled;\012sub V enclosingcirclecomb by V.circled;\012sub W enclosingcirclecomb by W.circled;\012sub X enclosingcirclecomb by X.circled;\012sub Y enclosingcirclecomb by Y.circled;\012sub Z enclosingcirclecomb by Z.circled;\012sub zero enclosingcirclecomb by zero.circled;\012sub one enclosingcirclecomb by one.circled;\012sub two enclosingcirclecomb by two.circled;\012sub three enclosingcirclecomb by three.circled;\012sub four enclosingcirclecomb by four.circled;\012sub five enclosingcirclecomb by five.circled;\012sub six enclosingcirclecomb by six.circled;\012sub seven enclosingcirclecomb by seven.circled;\012sub eight enclosingcirclecomb by eight.circled;\012sub nine enclosingcirclecomb by nine.circled;\012sub zero.slash enclosingcirclecomb by zero.slash.circled;\012sub one.ss01 enclosingcirclecomb by one.ss01.circled;\012sub three.1 enclosingcirclecomb by three.1.circled;\012sub four.ss01 enclosingcirclecomb by four.ss01.circled;\012sub six.ss01 enclosingcirclecomb by six.ss01.circled;\012sub nine.ss01 enclosingcirclecomb by nine.ss01.circled;\012sub exclam enclosingcirclecomb by exclam.circled;\012sub question enclosingcirclecomb by question.circled;\012sub numbersign enclosingcirclecomb by numbersign.circled;\012sub hyphen enclosingcirclecomb by hyphen.circled;\012sub less enclosingcirclecomb by less.circled;\012sub greater enclosingcirclecomb by greater.circled;\012sub equal enclosingcirclecomb by equal.circled;\012sub plus enclosingcirclecomb by plus.circled;\012sub minus enclosingcirclecomb by minus.circled;\012sub multiply enclosingcirclecomb by multiply.circled;\012sub divide enclosingcirclecomb by divide.circled;\012sub upArrow enclosingcirclecomb by upArrow.circled;\012sub downArrow enclosingcirclecomb by downArrow.circled;\012sub leftArrow enclosingcirclecomb by leftArrow.circled;\012sub rightArrow enclosingcirclecomb by rightArrow.circled;\012sub dngb_check enclosingcirclecomb by dngb_check.circled;\012sub dngb_ballotx enclosingcirclecomb by dngb_ballotx.circled;\012\012# enclosingcirclecomb * -> composite\012sub enclosingcirclecomb A by A.circled;\012sub enclosingcirclecomb B by B.circled;\012sub enclosingcirclecomb C by C.circled;\012sub enclosingcirclecomb D by D.circled;\012sub enclosingcirclecomb E by E.circled;\012sub enclosingcirclecomb F by F.circled;\012sub enclosingcirclecomb G by G.circled;\012sub enclosingcirclecomb H by H.circled;\012sub enclosingcirclecomb I by I.circled;\012sub enclosingcirclecomb J by J.circled;\012sub enclosingcirclecomb K by K.circled;\012sub enclosingcirclecomb L by L.circled;\012sub enclosingcirclecomb M by M.circled;\012sub enclosingcirclecomb N by N.circled;\012sub enclosingcirclecomb O by O.circled;\012sub enclosingcirclecomb P by P.circled;\012sub enclosingcirclecomb Q by Q.circled;\012sub enclosingcirclecomb R by R.circled;\012sub enclosingcirclecomb S by S.circled;\012sub enclosingcirclecomb T by T.circled;\012sub enclosingcirclecomb U by U.circled;\012sub enclosingcirclecomb V by V.circled;\012sub enclosingcirclecomb W by W.circled;\012sub enclosingcirclecomb X by X.circled;\012sub enclosingcirclecomb Y by Y.circled;\012sub enclosingcirclecomb Z by Z.circled;\012sub enclosingcirclecomb zero by zero.circled;\012sub enclosingcirclecomb one by one.circled;\012sub enclosingcirclecomb two by two.circled;\012sub enclosingcirclecomb three by three.circled;\012sub enclosingcirclecomb four by four.circled;\012sub enclosingcirclecomb five by five.circled;\012sub enclosingcirclecomb six by six.circled;\012sub enclosingcirclecomb seven by seven.circled;\012sub enclosingcirclecomb eight by eight.circled;\012sub enclosingcirclecomb nine by nine.circled;\012sub enclosingcirclecomb zero.slash by zero.slash.circled;\012sub enclosingcirclecomb one.ss01 by one.ss01.circled;\012sub enclosingcirclecomb three.1 by three.1.circled;\012sub enclosingcirclecomb four.ss01 by four.ss01.circled;\012sub enclosingcirclecomb six.ss01 by six.ss01.circled;\012sub enclosingcirclecomb nine.ss01 by nine.ss01.circled;\012sub enclosingcirclecomb exclam by exclam.circled;\012sub enclosingcirclecomb question by question.circled;\012sub enclosingcirclecomb numbersign by numbersign.circled;\012sub enclosingcirclecomb hyphen by hyphen.circled;\012sub enclosingcirclecomb less by less.circled;\012sub enclosingcirclecomb greater by greater.circled;\012sub enclosingcirclecomb equal by equal.circled;\012sub enclosingcirclecomb plus by plus.circled;\012sub enclosingcirclecomb minus by minus.circled;\012sub enclosingcirclecomb multiply by multiply.circled;\012sub enclosingcirclecomb divide by divide.circled;\012sub enclosingcirclecomb upArrow by upArrow.circled;\012sub enclosingcirclecomb downArrow by downArrow.circled;\012sub enclosingcirclecomb leftArrow by leftArrow.circled;\012sub enclosingcirclecomb rightArrow by rightArrow.circled;\012sub enclosingcirclecomb dngb_check by dngb_check.circled;\012sub enclosingcirclecomb dngb_ballotx by dngb_ballotx.circled;";
+code = "include(features/liga.fea);";
name = liga;
},
{
-code = "# whitespace\012@SPACE = [\012 space nbspace narrownbspace mediumspace-math enquad emquad enspace emspace thirdemspace\012 quarteremspace sixthemspace figurespace punctuationspace thinspace hairspace\012 zerowidthspace\012];\012\012# numbers\012@NUM = [\012 zero one two twostroke three four five Tonefive six seven eight nine\012 zero.slash one.ss01 three.1 four.ss01 six.ss01 nine.ss01 zero.tf one.tf\012 two.tf three.tf four.tf five.tf six.tf seven.tf eight.tf nine.tf\012 zero.tf.slash one.tf.ss01 three.1.tf four.tf.ss01 six.tf.ss01 nine.tf.ss01\012];\012\012# cap-height tall glyphs\012@UC = [\012 @Uppercase\012 @NUM\012\012 # punctuation\012 ampersand exclam exclamdbl exclamdown uni2049 question uni2047 uni2048\012 questiondown interrobang invertedinterrobang bar paragraph\012\012 # currency\012 dollar cent yen sterling florin uni20BA uni20BD euro uni20B9 tenge peseta\012 peso kip won lira austral hryvnia naira guarani coloncurrency cedi cruzeiro\012 tugrik uni20AF mill afii57636 manat rupee lari franc\012\012 # cap-tall symbols\012 numero triagrt triagdn triagup warningSign blackleftpointingtriangle\012 circleblack circlewhite\012 diamondblack diamondblack_x diamondwhite diamondwhite_x\012 sunWithRays blackSunWithRays\012 heartWhiteSuit heartBlackSuit heavyBlackHeart\012 upBlackArrow upWhiteArrow\012 capslock placeofinterestsign control projective option alternativekeysymbol\012 brokenCircleNorthWestArrow anticlockwiseOpenCircleArrow\012 clockwiseOpenCircleArrow\012 deleteleft deleteright clear ejectsymbol\012\012 # percent and fractions\012 onehalf onethird onequarter threequarters fivesixths onefraction seveneighths\012 oneeighth fiveeighths threeeighths percent perthousand pertenthousand uni214D\012 cadauna careof accountof addresssubject \012];\012\012# x-height tall glyphs\012@LC = [\012 @Lowercase\012];\012\012@CASE_DELIM_L = [\012 braceleft braceright\012 bracketleft bracketright\012 parenleft parenright\012];\012@CASE_NONDELIM_L = [\012 at\012 multiply\012 minus\012 plus\012 plusminus\012 divide\012 equal\012 notequal\012 endash\012 figuredash\012 emdash\012 hyphen\012 bullet\012 openbullet\012 hyphenbullet\012 trianglebullet\012 blackleftbullet\012 blackrightbullet\012 leftArrow\012 leftLongArrow\012 rightArrow\012 rightLongArrow\012 leftRightArrow\012 leftRightLongArrow\012 colon\012 approxequal\012 asciitilde\012 less\012 greater\012 lessequal\012 greaterequal\012];\012@CASE_L = [\012 @CASE_DELIM_L\012 @CASE_NONDELIM_L\012];\012\012@CASE_DELIM_R = [\012 braceleft.case braceright.case\012 bracketleft.case bracketright.case\012 parenleft.case parenright.case\012];\012@CASE_NONDELIM_R = [\012 at.case\012 multiply.case\012 minus.case\012 plus.case\012 plusminus.case\012 divide.case\012 equal.case\012 notequal.case\012 endash.case\012 figuredash.case\012 emdash.case\012 hyphen.case\012 bullet.case\012 openbullet.case\012 hyphenbullet.case\012 trianglebullet.case\012 blackleftbullet.case\012 blackrightbullet.case\012 leftArrow.case\012 leftLongArrow.case\012 rightArrow.case\012 rightLongArrow.case\012 leftRightArrow.case\012 leftRightLongArrow.case\012 colon.case\012 approxequal.case\012 asciitilde.case\012 less.case\012 greater.case\012 lessequal.case\012 greaterequal.case\012];\012@CASE_R = [\012 @CASE_DELIM_R\012 @CASE_NONDELIM_R\012];\012\012@DASH = [\012 hyphen hyphen.case\012 endash endash.case\012 emdash emdash.case\012 minus minus.case\012];\012\012# ---------------------------------------------------\012\012# arrows: <-> <-->\012sub less hyphen greater by leftRightArrow;\012sub less hyphen.case greater by leftRightArrow.case;\012sub less hyphen.case greater.case by leftRightArrow.case;\012sub less.case hyphen.case greater.case by leftRightArrow.case;\012sub less [endash emdash] greater by leftRightLongArrow;\012sub less [endash.case emdash.case] greater by leftRightLongArrow.case;\012sub less [endash.case emdash.case] greater.case by leftRightLongArrow.case;\012sub less.case [endash.case emdash.case] greater.case by leftRightLongArrow.case;\012sub less hyphen hyphen greater by leftRightLongArrow;\012sub less hyphen.case hyphen.case greater by leftRightLongArrow.case;\012sub less hyphen.case hyphen.case greater.case by leftRightLongArrow.case;\012sub less.case hyphen.case hyphen.case greater.case by leftRightLongArrow.case;\012\012# arrows: -> -->\012sub hyphen greater by rightArrow;\012sub hyphen.case greater by rightArrow.case;\012sub hyphen.case greater.case by rightArrow.case;\012sub [endash emdash] greater by rightLongArrow;\012sub [endash.case emdash.case] greater by rightLongArrow.case;\012sub [endash.case emdash.case] greater.case by rightLongArrow.case;\012\012# arrows: <- <--\012ignore sub less @DASH @NUM; # e.g. \"<-3\"\012sub less' hyphen' by leftArrow;\012sub less' hyphen.case' by leftArrow.case;\012sub less.case' hyphen.case' by leftArrow.case;\012sub less' [endash emdash]' by leftLongArrow;\012sub less' [endash.case emdash.case]' by leftLongArrow.case;\012sub less.case' [endash.case emdash.case]' by leftLongArrow.case;\012\012# :-)\012sub colon' @DASH [parenright parenright.case] by colon.case;\012sub [colon colon.case] hyphen' [parenright parenright.case] by hyphen.case;\012sub [colon colon.case] endash' [parenright parenright.case] by endash.case;\012sub [colon colon.case] emdash' [parenright parenright.case] by emdash.case;\012sub [colon colon.case] @DASH parenright' by parenright.case;\012\012# A foo' -> A foo.case\012#\012# ignore subs adjacent to lower case\012#\012# x[]X\012ignore sub @LC @CASE_DELIM_L @CASE_DELIM_L @UC;\012ignore sub @LC @CASE_DELIM_L @UC;\012ignore sub @LC @CASE_DELIM_L @SPACE @UC;\012ignore sub @LC @CASE_DELIM_L @SPACE @SPACE @UC;\012#\012# short runs of uc-lc, e.g \"(Xx)\", \"[Zzz]\"\012ignore sub @CASE_DELIM_L @UC @LC @CASE_DELIM_L;\012ignore sub @CASE_DELIM_L @UC @All @LC @CASE_DELIM_L;\012#\012# e.g. \"x-\"\012# TODO: figure out how to ignore \"x--A\"\012ignore sub @LC @CASE_L;\012#\012# e.g. \"-x\", \"--x\", \"---x\", \"----x\", \"-----x\"\012ignore sub @CASE_L @LC;\012ignore sub @CASE_L @CASE_L @LC;\012ignore sub @CASE_L @CASE_L @CASE_L @LC;\012ignore sub @CASE_L @CASE_L @CASE_L @CASE_L @LC;\012ignore sub @CASE_L @CASE_L @CASE_L @CASE_L @CASE_L @LC;\012#\012# pairs with space, e.g. \"( ) M\" since we don't support subbing\012# all on the left side.\012ignore sub @CASE_DELIM_L @SPACE @CASE_DELIM_L @SPACE [ @UC @CASE_R ];\012ignore sub @CASE_DELIM_L @CASE_DELIM_L @SPACE [ @UC @CASE_R ];\012#\012# e.g. \"A-\", \"A -\", \"A -\"\012sub [ @UC @CASE_R ] @CASE_L' by @CASE_R;\012sub [ @UC @CASE_R ] @SPACE @CASE_L' by @CASE_R;\012sub [ @UC @CASE_R ] @SPACE @SPACE @CASE_L' by @CASE_R;\012\012# foo' foo foo foo foo A -> foo.case foo foo foo foo A\012# foo' foo foo foo A -> foo.case foo foo foo A\012# foo' foo foo A -> foo.case foo foo A\012# foo' foo A -> foo.case foo A\012# foo' A -> foo.case A\012# Note: since we look quite far back, sequences like x{}[]M will case both\012# the square brackets next to M _and_ the curly braces to become .case\012# \012# e.g. \"-A\", \"--A\", \"---A\", \"----A\", \"-----A\"\012sub @CASE_L' [ @UC @CASE_R ] by @CASE_R;\012sub @CASE_L' @CASE_L [ @CASE_R @UC ] by @CASE_R;\012sub @CASE_L' @CASE_L @CASE_L [ @CASE_R @UC ] by @CASE_R;\012sub @CASE_L' @CASE_L @CASE_L @CASE_L [ @CASE_R @UC ] by @CASE_R;\012sub @CASE_L' @CASE_L @CASE_L @CASE_L @CASE_L [ @CASE_R @UC ] by @CASE_R;\012# \012# e.g. \"- A\", \"-- A\", \"--- A\", \"---- A\", \"----- A\"\012sub @CASE_L' @SPACE [ @UC @CASE_R ] by @CASE_R;\012sub @CASE_L' @CASE_L @SPACE [ @CASE_R @UC ] by @CASE_R;\012sub @CASE_L' @CASE_L @CASE_L @SPACE [ @CASE_R @UC ] by @CASE_R;\012sub @CASE_L' @CASE_L @CASE_L @CASE_L @SPACE [ @CASE_R @UC ] by @CASE_R;\012sub @CASE_L' @CASE_L @CASE_L @CASE_L @CASE_L @SPACE [ @CASE_R @UC ] by @CASE_R;\012# \012# e.g. \"- A\", \"-- A\", \"--- A\", \"---- A\", \"----- A\"\012sub @CASE_L' @SPACE @SPACE [ @UC @CASE_R ] by @CASE_R;\012sub @CASE_L' @CASE_L @SPACE @SPACE [ @CASE_R @UC ] by @CASE_R;\012sub @CASE_L' @CASE_L @CASE_L @SPACE @SPACE [ @CASE_R @UC ] by @CASE_R;\012sub @CASE_L' @CASE_L @CASE_L @CASE_L @SPACE @SPACE [ @CASE_R @UC ] by @CASE_R;\012sub @CASE_L' @CASE_L @CASE_L @CASE_L @CASE_L @SPACE @SPACE [ @CASE_R @UC ] by @CASE_R;\012sub @CASE_L' @SPACE @SPACE @SPACE [ @UC @CASE_R ] by @CASE_R; # e.g. \"- A\"\012\012# X(_)\012@Punctuation = [\012 slash bar quoteleft quoteright apostrophemod quotesingle quotedbl\012 quotedblleft quotedblright quotedblbase quotesinglbase prime doubleprime\012 tripleprime quadrupleprime primerev doubleprimerev tripleprimerev primemod\012 doubleprimemod comma period ellipsis twodotleader semicolon underscore\012 asciicircum circumflex\012 asterisk\012];\012sub @CASE_DELIM_R @Punctuation @CASE_DELIM_L' by @CASE_DELIM_R;\012\012# in between numbers\012@between_num_L = [\012 x\012 asterisk\012];\012@between_num_R = [\012 multiply.case\012 asterisk.case\012];\012sub @NUM @between_num_L' @NUM by @between_num_R; # 3*9\012sub @NUM @SPACE @between_num_L' @NUM by @between_num_R; # 3 *9\012sub @NUM @SPACE @SPACE @between_num_L' @NUM by @between_num_R; # 3 *9\012sub @NUM @between_num_L' @SPACE @NUM by @between_num_R; # 3* 9\012sub @NUM @SPACE @between_num_L' @SPACE @NUM by @between_num_R; # 3 * 9\012sub @NUM @SPACE @SPACE @between_num_L' @SPACE @NUM by @between_num_R; # 3 * 9\012sub @NUM @between_num_L' @SPACE @SPACE @NUM by @between_num_R; # 3* 9\012sub @NUM @SPACE @between_num_L' @SPACE @SPACE @NUM by @between_num_R; # 3 * 9\012sub @NUM @SPACE @SPACE @between_num_L' @SPACE @SPACE @NUM by @between_num_R; # 3 * 9\012";
+code = "include(features/calt.fea);";
name = calt;
},
{
+code = "include(features/dlig.fea);";
+name = dlig;
+},
+{
automatic = 1;
code = "sub zero by zero.tf;\012sub one by one.tf;\012sub two by two.tf;\012sub three by three.tf;\012sub four by four.tf;\012sub five by five.tf;\012sub six by six.tf;\012sub seven by seven.tf;\012sub eight by eight.tf;\012sub nine by nine.tf;\012sub three.1 by three.1.tf;\012sub comma by comma.tf;\012sub period by period.tf;\012sub colon by colon.tf;\012sub semicolon by semicolon.tf;\012";
name = tnum;
@@ -2114,24 +2130,20 @@ code = "sub zero.tf by zero;\012sub one.tf by one;\012sub two.tf by two;\012sub
name = pnum;
},
{
-code = "sub zero by zero.slash;\012sub zero.tf by zero.tf.slash;\012sub zero.circled by zero.slash.circled;\012sub zero.squared by zero.slash.squared;";
+code = "include(features/zero.fea);";
name = zero;
},
{
-code = "pos @Uppercase <16 0 32 0>;\012";
+code = "include(features/cpsp.fea);";
name = cpsp;
notes = "The first two numbers (16 and 0) are the x and y amounts by which a glyph is moved. The second pair of numbers (32 and 0) is the advance, meaning that the cursor will be placed 32 units further in this case. Effectively, this adds 16 units on each side (or 32 between all uppercase letters)";
},
{
-code = "sub exclam question by interrobang;\012sub question exclam by interrobang;\012sub exclamdown questiondown by invertedinterrobang;\012sub questiondown exclamdown by invertedinterrobang;\012";
-name = dlig;
-},
-{
-code = "sub a by a.sups;\012sub b by b.sups;\012sub c by c.sups;\012sub d by d.sups;\012sub e by e.sups;\012sub f by f.sups;\012sub g by g.sups;\012sub h by h.sups;\012sub i by i.sups;\012sub j by j.sups;\012sub k by k.sups;\012sub [l l.ss02] by l.sups;\012sub m by m.sups;\012sub n by n.sups;\012sub o by o.sups;\012sub p by p.sups;\012sub q by q.sups;\012sub [r r.1] by r.sups;\012sub s by s.sups;\012sub t by t.sups;\012sub u by u.sups;\012sub v by v.sups;\012sub w by w.sups;\012sub x by x.sups;\012sub y by y.sups;\012sub z by z.sups;\012sub [zero zero.slash zero.tf zero.tf.slash] by zero.sups;\012sub [one one.ss01 one.tf one.tf.ss01] by one.sups;\012sub [two two.tf] by two.sups;\012sub [three three.1 three.tf three.1.tf] by three.sups;\012sub [four four.ss01 four.tf four.tf.ss01] by four.sups;\012sub [five five.tf] by five.sups;\012sub [six six.ss01 six.tf six.tf.ss01] by six.sups;\012sub [seven seven.tf] by seven.sups;\012sub [eight eight.tf] by eight.sups;\012sub [nine nine.ss01 nine.tf nine.tf.ss01] by nine.sups;\012sub [parenleft parenleft.case] by parenleft.sups;\012sub [parenright parenright.case] by parenright.sups;\012sub [bracketleft bracketleft.case] by bracketleft.sups;\012sub [bracketright bracketright.case] by bracketright.sups;\012sub [plus plus.case] by plus.sups;\012sub [minus minus.case hyphen hyphen.case] by minus.sups;\012sub [equal equal.case] by equal.sups;\012";
+code = "include(features/sups.fea);";
name = sups;
},
{
-code = "sub a by a.subs;\012sub b by b.subs;\012sub c by c.subs;\012sub d by d.subs;\012sub e by e.subs;\012sub f by f.subs;\012sub g by g.subs;\012sub h by h.subs;\012sub i by i.subs;\012sub j by j.subs;\012sub k by k.subs;\012sub [l l.ss02] by l.subs;\012sub m by m.subs;\012sub n by n.subs;\012sub o by o.subs;\012sub p by p.subs;\012sub q by q.subs;\012sub [r r.1] by r.subs;\012sub s by s.subs;\012sub t by t.subs;\012sub u by u.subs;\012sub v by v.subs;\012sub w by w.subs;\012sub x by x.subs;\012sub y by y.subs;\012sub z by z.subs;\012sub [zero zero.slash zero.tf zero.tf.slash] by zero.subs;\012sub [one one.ss01 one.tf one.tf.ss01] by one.subs;\012sub [two two.tf] by two.subs;\012sub [three three.1 three.tf three.1.tf] by three.subs;\012sub [four four.ss01 four.tf four.tf.ss01] by four.subs;\012sub [five five.tf] by five.subs;\012sub [six six.ss01 six.tf six.tf.ss01] by six.subs;\012sub [seven seven.tf] by seven.subs;\012sub [eight eight.tf] by eight.subs;\012sub [nine nine.ss01 nine.tf nine.tf.ss01] by nine.subs;\012sub [parenleft parenleft.case] by parenleft.subs;\012sub [parenright parenright.case] by parenright.subs;\012sub [bracketleft bracketleft.case] by bracketleft.subs;\012sub [bracketright bracketright.case] by bracketright.subs;\012sub [plus plus.case] by plus.subs;\012sub [minus minus.case hyphen hyphen.case] by minus.subs;\012sub [equal equal.case] by equal.subs;\012";
+code = "include(features/subs.fea);";
name = subs;
},
{
@@ -2140,76 +2152,76 @@ code = "sub [zero one two three four five six seven eight nine] [A a]' by ordfem
name = ordn;
},
{
-code = "sub one by one.ss01;\012sub one.tf by one.tf.ss01;\012sub three by three.1;\012sub three.tf by three.1.tf;\012sub four by four.ss01;\012sub four.tf by four.tf.ss01;\012sub six by six.ss01;\012sub six.tf by six.tf.ss01;\012sub nine by nine.ss01;\012sub nine.tf by nine.tf.ss01;\012\012sub a by a.1;\012sub aacute by aacute.1;\012sub abreve by abreve.1;\012sub abreveacute by abreveacute.1;\012sub abrevedotbelow by abrevedotbelow.1;\012sub abrevegrave by abrevegrave.1;\012sub abrevehookabove by abrevehookabove.1;\012sub abrevetilde by abrevetilde.1;\012sub acaron by acaron.1;\012sub acircumflex by acircumflex.1;\012sub acircumflexacute by acircumflexacute.1;\012sub acircumflexdotbelow by acircumflexdotbelow.1;\012sub acircumflexgrave by acircumflexgrave.1;\012sub acircumflexhookabove by acircumflexhookabove.1;\012sub acircumflextilde by acircumflextilde.1;\012sub adblgrave by adblgrave.1;\012sub adieresis by adieresis.1;\012sub adieresismacron by adieresismacron.1;\012sub uni0227 by uni0227.1;\012sub adotbelow by adotbelow.1;\012sub adotmacron by adotmacron.1;\012sub agrave by agrave.1;\012sub ahookabove by ahookabove.1;\012sub ainvertedbreve by ainvertedbreve.1;\012sub amacron by amacron.1;\012sub aogonek by aogonek.1;\012sub arighthalfring by arighthalfring.1;\012sub aring by aring.1;\012sub aringacute by aringacute.1;\012sub aringbelow by aringbelow.1;\012sub atilde by atilde.1;\012\012sub l by l.ss02;\012sub lslash by lslash.ss02;\012sub lbar by lbar.ss02;\012sub lmidtilde by lmidtilde.ss02;\012sub lbelt by lbelt.ss02;\012sub ldot by ldot.ss02;\012sub lacute by lacute.ss02;\012sub lcommaaccent by lcommaaccent.ss02;\012sub lcaron by lcaron.ss02;\012sub ldotbelow by ldotbelow.ss02;\012sub ldotbelowmacron by ldotbelowmacron.ss02;\012sub llinebelow by llinebelow.ss02;\012sub lcircumflexbelow by lcircumflexbelow.ss02;\012\012sub r by r.1;\012sub rrthook by rrthook.1;\012sub uni024D by uni024D.1;\012sub rdescend by rdescend.1;\012sub racute by racute.1;\012sub rcommaaccent by rcommaaccent.1;\012sub rcaron by rcaron.1;\012sub rdblgrave by rdblgrave.1;\012sub rinvertedbreve by rinvertedbreve.1;\012sub rdotaccent by rdotaccent.1;\012sub rdotbelow by rdotbelow.1;\012sub rdotbelowmacron by rdotbelowmacron.1;\012sub rlinebelow by rlinebelow.1;\012\012sub G by G.1;\012sub Gbar by Gbar.1;\012sub Ghook by Ghook.1;\012sub Gcircumflex by Gcircumflex.1;\012sub Gbreve by Gbreve.1;\012sub Gdotaccent by Gdotaccent.1;\012sub Gcommaaccent by Gcommaaccent.1;\012sub Gcaron by Gcaron.1;\012sub Gacute by Gacute.1;\012sub Gmacron by Gmacron.1;";
+code = "include(features/salt.fea);";
name = salt;
},
{
-code = "sub one by one.ss01;\012sub one.tf by one.tf.ss01;\012sub one.squared by one.ss01.squared;\012sub one.circled by one.ss01.circled;\012sub three by three.1;\012sub three.tf by three.1.tf;\012sub three.squared by three.1.squared;\012sub three.circled by three.1.circled;\012sub four by four.ss01;\012sub four.tf by four.tf.ss01;\012sub four.squared by four.ss01.squared;\012sub four.circled by four.ss01.circled;\012sub six by six.ss01;\012sub six.tf by six.tf.ss01;\012sub six.squared by six.ss01.squared;\012sub six.circled by six.ss01.circled;\012sub nine by nine.ss01;\012sub nine.tf by nine.tf.ss01;\012sub nine.squared by nine.ss01.squared;\012sub nine.circled by nine.ss01.circled;";
+code = "include(features/ss01-alt-digits.fea);";
name = ss01;
notes = "Name: Alternate digits";
},
{
-code = "sub l by l.ss02;\012sub lslash by lslash.ss02;\012sub lbar by lbar.ss02;\012sub lmidtilde by lmidtilde.ss02;\012sub lbelt by lbelt.ss02;\012sub ldot by ldot.ss02;\012sub lacute by lacute.ss02;\012sub lcommaaccent by lcommaaccent.ss02;\012sub lcaron by lcaron.ss02;\012sub ldotbelow by ldotbelow.ss02;\012sub ldotbelowmacron by ldotbelowmacron.ss02;\012sub llinebelow by llinebelow.ss02;\012sub lcircumflexbelow by lcircumflexbelow.ss02;\012sub zero by zero.slash;\012sub zero.tf by zero.tf.slash;\012sub zero.squared by zero.slash.squared;\012sub zero.circled by zero.slash.circled;\012sub germandbls by germandbls.1;\012sub I by I.1;\012sub Idieresis by Idieresis.1;\012sub Idieresisacute by Idieresisacute.1;\012sub Istroke by Istroke.1;\012sub Itildebelow by Itildebelow.1;\012sub Igrave by Igrave.1;\012sub Iacute by Iacute.1;\012sub Icircumflex by Icircumflex.1;\012sub Itilde by Itilde.1;\012sub Imacron by Imacron.1;\012sub Ibreve by Ibreve.1;\012sub Iogonek by Iogonek.1;\012sub Idotaccent by Idotaccent.1;\012sub Icaron by Icaron.1;\012sub Idblgrave by Idblgrave.1;\012sub Iinvertedbreve by Iinvertedbreve.1;\012sub Ihookabove by Ihookabove.1;\012sub Idotbelow by Idotbelow.1;\012sub uni1F38 by uni1F38.1;\012sub uni1F39 by uni1F39.1;\012sub uni1F3A by uni1F3A.1;\012sub uni1F3B by uni1F3B.1;\012sub uni1F3C by uni1F3C.1;\012sub uni1F3D by uni1F3D.1;\012sub uni1F3E by uni1F3E.1;\012sub uni1F3F by uni1F3F.1;\012sub uni1FD8 by uni1FD8.1;\012sub uni1FD9 by uni1FD9.1;\012sub uni1FDA by uni1FDA.1;\012sub uni1FDB by uni1FDB.1;\012sub afii10055 by afii10055.1;\012sub afii10056 by afii10056.1;";
+code = "include(features/ss02-disambiguation.fea);";
name = ss02;
notes = "Name: Disambiguation";
},
{
-code = "# curved \"r\" when it meets a curved shape, e.g. \"ro\"\012\012@straight_r = [\012 r\012 rrthook\012 uni024D\012 rdescend\012 racute\012 rcommaaccent\012 rcaron\012 rdblgrave\012 rinvertedbreve\012 rdotaccent\012 rdotbelow\012 rdotbelowmacron\012 rlinebelow\012];\012@curved_r = [\012 r.1\012 rrthook.1\012 uni024D.1\012 rdescend.1\012 racute.1\012 rcommaaccent.1\012 rcaron.1\012 rdblgrave.1\012 rinvertedbreve.1\012 rdotaccent.1\012 rdotbelow.1\012 rdotbelowmacron.1\012 rlinebelow.1\012];\012\012# lower case-sized glyphs where the left side is curved, like \"o\"\012@lc_left_side_curved = [\012 a\012 adieresis\012 atilde\012 arighthalfring\012 agrave\012 aacute\012 acircumflex\012 aring\012 amacron\012 abreve\012 aogonek\012 acaron\012 adieresismacron\012 adotmacron\012 aringacute\012 adblgrave\012 ainvertedbreve\012 uni0227\012 aringbelow\012 adotbelow\012 ahookabove\012 acircumflexacute\012 acircumflexgrave\012 acircumflexhookabove\012 acircumflextilde\012 acircumflexdotbelow\012 abreveacute\012 abrevegrave\012 abrevehookabove\012 abrevetilde\012 abrevedotbelow\012 acyrillic\012 abrevecyrillic\012 adieresiscyrillic\012 ae\012 aemacron\012 aeacute\012 aiecyrillic\012 c\012 uni023C\012 chook\012 ccurl\012 ccedilla\012 cacute\012 ccircumflex\012 cdotaccent\012 ccaron\012 ccedillaacute\012 sigmalunatesymbolgreek\012 escyrillic\012 d\012 dcroat\012 drthook\012 dhook\012 dtopbar\012 uni0221\012 dcaron\012 ddotaccent\012 ddotbelow\012 dlinebelow\012 dcedilla\012 dcircumflexbelow\012 dz\012 dzcaron\012 dzcurl\012 dyogh\012 dong\012 e\012 edieresis\012 uni0247\012 egrave\012 eacute\012 ecircumflex\012 emacron\012 ebreve\012 edotaccent\012 eogonek\012 ecaron\012 edblgrave\012 einvertedbreve\012 uni0229\012 emacrongrave\012 emacronacute\012 ecircumflexbelow\012 etildebelow\012 ecedillabreve\012 edotbelow\012 ehookabove\012 etilde\012 ecircumflexacute\012 ecircumflexgrave\012 ecircumflexhookabove\012 ecircumflextilde\012 ecircumflexdotbelow\012 iecyrillic\012 uni0450\012 iocyrillic\012 iebrevecyrillic\012 eturn\012 g\012 ghook\012 gbar\012 gcircumflex\012 gbreve\012 gdotaccent\012 gcommaaccent\012 gcaron\012 gacute\012 gmacron\012 o\012 odieresis\012 otilde\012 oslash\012 ohorn\012 ograve\012 oacute\012 ocircumflex\012 omacron\012 obreve\012 ohungarumlaut\012 ocaron\012 oogonek\012 oogonekmacron\012 odblgrave\012 oinvertedbreve\012 uni022B\012 uni022D\012 uni022F\012 uni0231\012 otildeacute\012 otildedieresis\012 omacrongrave\012 omacronacute\012 odotbelow\012 ohookabove\012 ocircumflexacute\012 ocircumflexgrave\012 ocircumflexhookabove\012 ocircumflextilde\012 ocircumflexdotbelow\012 ohornacute\012 ohorngrave\012 ohornhookabove\012 ohorntilde\012 ohorndotbelow\012 oslashacute\012 omicron\012 omicrontonos\012 uni1F40\012 uni1F41\012 uni1F42\012 uni1F43\012 uni1F44\012 uni1F45\012 uni1F78\012 fitacyrillic\012 obar\012 ocyrillic\012 odieresiscyrillic\012 oe\012 ukcyrillic\012 q\012 qhook\012 qrthook\012 s\012 srthook\012 uni023F\012 sacute\012 scircumflex\012 scedilla\012 scaron\012 scommaaccent\012 sdotaccent\012 sdotbelow\012 sacutedotaccent\012 scarondotaccent\012 sdotbelowdotaccent\012 dzecyrillic\012 tonetwo\012 eth\012 alpha\012 alphatonos\012 uni1F00\012 uni1F01\012 uni1F02\012 uni1F03\012 uni1F04\012 uni1F05\012 uni1F06\012 uni1F07\012 uni1F70\012 uni1F80\012 uni1F81\012 uni1F82\012 uni1F83\012 uni1F84\012 uni1F85\012 uni1F86\012 uni1F87\012 uni1FB0\012 uni1FB1\012 uni1FB2\012 uni1FB3\012 uni1FB4\012 uni1FB6\012 uni1FB7\012 delta\012 epsilon\012 epsilontonos\012 epsilonclosed\012 epsilon1\012 epsilon1rev\012 epsilon1revclosed\012 epsilon1revhook\012 uni1F10\012 uni1F11\012 uni1F12\012 uni1F13\012 uni1F14\012 uni1F15\012 uni1F72\012 rho\012 uni1FE4\012 uni1FE5\012 uni03FC\012 sigma1\012 sigma\012 phi\012 phigreek\012 omega\012 omegatonos\012 uni1F60\012 uni1F61\012 uni1F62\012 uni1F63\012 uni1F64\012 uni1F65\012 uni1F66\012 uni1F67\012 uni1F7C\012 uni1FA0\012 uni1FA1\012 uni1FA2\012 uni1FA3\012 uni1FA4\012 uni1FA5\012 uni1FA6\012 uni1FA7\012 uni1FF2\012 uni1FF3\012 uni1FF4\012 uni1FF6\012 uni1FF7\012 zecyrillic\012 efcyrillic\012 ereversedcyrillic\012 iacyrillic\012 ecyrillic\012 haabkhasiancyrillic\012 cent\012 manat\012 six.ss01\012 ascript\012 ascript_uni02DE\012 erev\012 schwa\012 schwahook\012 oopen\012 uni0238\012 uni0239\012 uni2184\012 aogonek.NAV\012 eogonek.NAV\012 oogonek.NAV\012 zedescendercyrillic\012 esdescendercyrillic\012 schwacyrillic\012 schwadieresiscyrillic\012 zedieresiscyrillic\012 obarredcyrillic\012 obarreddieresiscyrillic\012 uni04ED\012 koppacyrillic\012 uni037B\012 uni037C\012 uni037D\012 uni03D9\012 stigma\012 rho1\012 uni1F71\012 uni1F73\012 uni1F79\012 uni217D\012 uni217E\012];\012\012sub @straight_r' @lc_left_side_curved by @curved_r;\012";
+code = "include(features/ss03-r-curve.fea);";
name = ss03;
notes = "Name: Lower case r curves into round neighbors";
},
{
-code = "sub one by one.ss01;\012sub one.tf by one.tf.ss01;\012sub one.squared by one.ss01.squared;\012sub one.circled by one.ss01.circled;";
+code = "include(features/cv01-one.fea);";
name = cv01;
notes = "Name: Alternate one";
},
{
-code = "sub four by four.ss01;\012sub four.tf by four.tf.ss01;\012sub four.squared by four.ss01.squared;\012sub four.circled by four.ss01.circled;\012";
+code = "include(features/cv02-four.fea);";
name = cv02;
notes = "Name: Open four";
},
{
-code = "sub six by six.ss01;\012sub six.tf by six.tf.ss01;\012sub six.squared by six.ss01.squared;\012sub six.circled by six.ss01.circled;";
+code = "include(features/cv03-six.fea);";
name = cv03;
notes = "Name: Open six";
},
{
-code = "sub nine by nine.ss01;\012sub nine.tf by nine.tf.ss01;\012sub nine.squared by nine.ss01.squared;\012sub nine.circled by nine.ss01.circled;";
+code = "include(features/cv04-nine.fea);";
name = cv04;
notes = "Name: Open nine";
},
{
-code = "sub l by l.ss02;\012sub lslash by lslash.ss02;\012sub lbar by lbar.ss02;\012sub lmidtilde by lmidtilde.ss02;\012sub lbelt by lbelt.ss02;\012sub ldot by ldot.ss02;\012sub lacute by lacute.ss02;\012sub lcommaaccent by lcommaaccent.ss02;\012sub lcaron by lcaron.ss02;\012sub ldotbelow by ldotbelow.ss02;\012sub ldotbelowmacron by ldotbelowmacron.ss02;\012sub llinebelow by llinebelow.ss02;\012sub lcircumflexbelow by lcircumflexbelow.ss02;";
+code = "include(features/cv05-l-tail.fea);";
name = cv05;
notes = "Name: Lower case L with tail";
},
{
-code = "sub r by r.1;\012sub rrthook by rrthook.1;\012sub uni024D by uni024D.1;\012sub rdescend by rdescend.1;\012sub racute by racute.1;\012sub rcommaaccent by rcommaaccent.1;\012sub rcaron by rcaron.1;\012sub rdblgrave by rdblgrave.1;\012sub rinvertedbreve by rinvertedbreve.1;\012sub rdotaccent by rdotaccent.1;\012sub rdotbelow by rdotbelow.1;\012sub rdotbelowmacron by rdotbelowmacron.1;\012sub rlinebelow by rlinebelow.1;";
+code = "include(features/cv06-r.fea);";
name = cv06;
notes = "Name: Lower case R with curved tail";
},
{
-code = "sub germandbls by germandbls.1;\012";
+code = "include(features/cv07-germandbls.fea);";
name = cv07;
notes = "Name: Alternate German double s";
},
{
-code = "sub I by I.1;\012sub Idieresis by Idieresis.1;\012sub Idieresisacute by Idieresisacute.1;\012sub Istroke by Istroke.1;\012sub Itildebelow by Itildebelow.1;\012sub Igrave by Igrave.1;\012sub Iacute by Iacute.1;\012sub Icircumflex by Icircumflex.1;\012sub Itilde by Itilde.1;\012sub Imacron by Imacron.1;\012sub Ibreve by Ibreve.1;\012sub Iogonek by Iogonek.1;\012sub Idotaccent by Idotaccent.1;\012sub Icaron by Icaron.1;\012sub Idblgrave by Idblgrave.1;\012sub Iinvertedbreve by Iinvertedbreve.1;\012sub Ihookabove by Ihookabove.1;\012sub Idotbelow by Idotbelow.1;\012sub uni1F38 by uni1F38.1;\012sub uni1F39 by uni1F39.1;\012sub uni1F3A by uni1F3A.1;\012sub uni1F3B by uni1F3B.1;\012sub uni1F3C by uni1F3C.1;\012sub uni1F3D by uni1F3D.1;\012sub uni1F3E by uni1F3E.1;\012sub uni1F3F by uni1F3F.1;\012sub uni1FD8 by uni1FD8.1;\012sub uni1FD9 by uni1FD9.1;\012sub uni1FDA by uni1FDA.1;\012sub uni1FDB by uni1FDB.1;\012sub afii10055 by afii10055.1;\012sub afii10056 by afii10056.1;";
+code = "include(features/cv08-i-serif.fea);";
name = cv08;
notes = "Name: Upper case i with serif";
},
{
-code = "sub three by three.1;\012sub three.tf by three.1.tf;\012sub three.squared by three.1.squared;\012sub three.circled by three.1.circled;\012";
+code = "include(features/cv09-three.fea);";
name = cv09;
notes = "Name: Flat top three";
},
{
-code = "sub G by G.1;\012sub Gbar by Gbar.1;\012sub Ghook by Ghook.1;\012sub Gcircumflex by Gcircumflex.1;\012sub Gbreve by Gbreve.1;\012sub Gdotaccent by Gdotaccent.1;\012sub Gcommaaccent by Gcommaaccent.1;\012sub Gcaron by Gcaron.1;\012sub Gacute by Gacute.1;\012sub Gmacron by Gmacron.1;\012";
+code = "include(features/cv10-g-spur.fea);";
name = cv10;
notes = "Name: Captital G with spur";
},
{
-code = "sub a by a.1;\012sub aacute by aacute.1;\012sub abreve by abreve.1;\012sub abreveacute by abreveacute.1;\012sub abrevedotbelow by abrevedotbelow.1;\012sub abrevegrave by abrevegrave.1;\012sub abrevehookabove by abrevehookabove.1;\012sub abrevetilde by abrevetilde.1;\012sub acaron by acaron.1;\012sub acircumflex by acircumflex.1;\012sub acircumflexacute by acircumflexacute.1;\012sub acircumflexdotbelow by acircumflexdotbelow.1;\012sub acircumflexgrave by acircumflexgrave.1;\012sub acircumflexhookabove by acircumflexhookabove.1;\012sub acircumflextilde by acircumflextilde.1;\012sub adblgrave by adblgrave.1;\012sub adieresis by adieresis.1;\012sub adieresismacron by adieresismacron.1;\012sub uni0227 by uni0227.1;\012sub adotbelow by adotbelow.1;\012sub adotmacron by adotmacron.1;\012sub agrave by agrave.1;\012sub ahookabove by ahookabove.1;\012sub ainvertedbreve by ainvertedbreve.1;\012sub amacron by amacron.1;\012sub aogonek by aogonek.1;\012sub arighthalfring by arighthalfring.1;\012sub aring by aring.1;\012sub aringacute by aringacute.1;\012sub aringbelow by aringbelow.1;\012sub atilde by atilde.1;\012sub acyrillic by a.1; # acyrillic is just a reference to /a\012";
+code = "include(features/cv11-single-storey-a.fea);";
name = cv11;
notes = "Name: Single storey a";
}
@@ -257962,9 +257974,8 @@ width = 0;
unicode = 200B;
},
{
-color = (204,240,242,1);
glyphname = numero;
-lastChange = "2019-05-30 17:17:41 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
guideLines = (
@@ -258403,9 +258414,8 @@ interface.gridadjust.original = "{'width': 2901, 'leftMargin': 219, 'rightMargin
};
},
{
-color = (204,240,242,1);
glyphname = degreecentigrade;
-lastChange = "2018-12-31 21:21:38 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
components = (
@@ -258503,9 +258513,8 @@ interface.gridadjust.original = "{'width': 2483, 'leftMargin': 55, 'rightMargin'
};
},
{
-color = (204,240,242,1);
glyphname = degreefarenheit;
-lastChange = "2019-05-30 16:33:47 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
components = (
@@ -258603,7 +258612,7 @@ interface.gridadjust.original = "{'width': 2283, 'leftMargin': 55, 'rightMargin'
},
{
glyphname = degreekelvin;
-lastChange = "2018-12-31 21:21:38 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
components = (
@@ -258670,7 +258679,7 @@ interface.gridadjust.original = "{'width': 1764, 'leftMargin': 256, 'rightMargin
},
{
glyphname = angstrom;
-lastChange = "2019-05-30 17:24:42 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
components = (
@@ -258737,7 +258746,7 @@ interface.gridadjust.original = "{'width': 1855, 'leftMargin': 39, 'rightMargin'
},
{
glyphname = bullseye;
-lastChange = "2019-05-30 17:17:18 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
components = (
@@ -258837,9 +258846,8 @@ interface.gridadjust.original = "{'width': 1944, 'leftMargin': 256, 'rightMargin
};
},
{
-color = (204,240,242,1);
glyphname = estimated;
-lastChange = "2019-01-20 01:56:59 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
layerId = "C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265";
@@ -259145,9 +259153,8 @@ interface.gridadjust.original = "{'width': 1794, 'leftMargin': 210, 'rightMargin
};
},
{
-color = (204,240,242,1);
glyphname = leftArrow;
-lastChange = "2019-01-27 19:05:59 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
guideLines = (
@@ -259517,15 +259524,15 @@ paths = (
{
closed = 1;
nodes = (
-"1522 220 LINE",
+"1644 96 LINE",
"1052 688 LINE",
"2336 688 LINE",
"2336 1104 LINE",
"1052 1104 LINE",
-"1522 1574 LINE",
-"1238 1856 LINE",
+"1644 1696 LINE",
+"1360 1978 LINE",
"278 896 LINE",
-"1238 -64 LINE"
+"1360 -186 LINE"
);
}
);
@@ -259572,26 +259579,20 @@ nodes = (
width = 2688;
},
{
-guideLines = (
-{
-angle = 90;
-position = "{820, 832}";
-}
-);
layerId = "D0EC06BF-13F9-4C88-A6F5-B8203AF6C77E";
paths = (
{
closed = 1;
nodes = (
-"1408 192 LINE",
-"994 688 LINE",
+"1508 76 LINE",
+"998 688 LINE",
"2322 688 LINE",
"2392 1104 LINE",
-"1154 1104 LINE",
-"1678 1552 LINE",
-"1418 1856 LINE",
+"1148 1104 LINE",
+"1772 1638 LINE",
+"1516 1940 LINE",
"298 896 LINE",
-"1100 -64 LINE"
+"1202 -186 LINE"
);
}
);
@@ -259640,9 +259641,8 @@ com.typemytype.robofont.guideline.magnetic.mZHkBp2yfW = 5;
};
},
{
-color = (204,240,242,1);
glyphname = leftLongArrow;
-lastChange = "2019-01-27 19:47:28 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
guideLines = (
@@ -259674,6 +259674,24 @@ nodes = (
width = 3776;
},
{
+background = {
+paths = (
+{
+closed = 1;
+nodes = (
+"1522 220 LINE",
+"1052 688 LINE",
+"3424 688 LINE",
+"3424 1104 LINE",
+"1052 1104 LINE",
+"1522 1574 LINE",
+"1238 1856 LINE",
+"278 896 LINE",
+"1238 -64 LINE"
+);
+}
+);
+};
guideLines = (
{
angle = 90;
@@ -259685,15 +259703,15 @@ paths = (
{
closed = 1;
nodes = (
-"1522 220 LINE",
+"1644 96 LINE",
"1052 688 LINE",
"3424 688 LINE",
"3424 1104 LINE",
"1052 1104 LINE",
-"1522 1574 LINE",
-"1238 1856 LINE",
+"1644 1696 LINE",
+"1360 1978 LINE",
"278 896 LINE",
-"1238 -64 LINE"
+"1360 -186 LINE"
);
}
);
@@ -259729,7 +259747,7 @@ nodes = (
width = 3776;
},
{
-layerId = "D0EC06BF-13F9-4C88-A6F5-B8203AF6C77E";
+background = {
paths = (
{
closed = 1;
@@ -259746,6 +259764,24 @@ nodes = (
);
}
);
+};
+layerId = "D0EC06BF-13F9-4C88-A6F5-B8203AF6C77E";
+paths = (
+{
+closed = 1;
+nodes = (
+"1508 76 LINE",
+"998 688 LINE",
+"3410 688 LINE",
+"3480 1104 LINE",
+"1148 1104 LINE",
+"1772 1638 LINE",
+"1516 1940 LINE",
+"298 896 LINE",
+"1202 -186 LINE"
+);
+}
+);
width = 3776;
},
{
@@ -259808,9 +259844,137 @@ com.typemytype.robofont.guideline.magnetic.x2erzbHBk9 = 5;
};
},
{
-color = (204,240,242,1);
+glyphname = leftLongArrow2;
+lastChange = "2019-08-04 16:51:54 +0000";
+layers = (
+{
+layerId = "B1F27B51-9973-4381-9301-4FE46FE1CA59";
+paths = (
+{
+closed = 1;
+nodes = (
+"1220 46 LINE",
+"400 864 LINE",
+"7200 864 LINE",
+"7200 928 LINE",
+"400 928 LINE",
+"1220 1748 LINE",
+"1174 1792 LINE",
+"278 896 LINE",
+"1174 0 LINE"
+);
+}
+);
+width = 7552;
+},
+{
+layerId = "200BE2C5-40F6-4CF4-AF4F-A33C0CC0964F";
+paths = (
+{
+closed = 1;
+nodes = (
+"1096 42 LINE",
+"410 864 LINE",
+"7216 864 LINE",
+"7226 928 LINE",
+"432 928 LINE",
+"1386 1744 LINE",
+"1344 1792 LINE",
+"298 896 LINE",
+"1046 0 LINE"
+);
+}
+);
+width = 7552;
+},
+{
+layerId = "C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265";
+paths = (
+{
+closed = 1;
+nodes = (
+"1328 154 LINE",
+"694 786 LINE",
+"7200 786 LINE",
+"7200 1006 LINE",
+"694 1006 LINE",
+"1328 1640 LINE",
+"1174 1792 LINE",
+"278 896 LINE",
+"1174 0 LINE"
+);
+}
+);
+width = 7552;
+},
+{
+layerId = "11F4534A-B963-4AB5-820F-DAF9A20CD933";
+paths = (
+{
+closed = 1;
+nodes = (
+"1212 138 LINE",
+"672 786 LINE",
+"7200 786 LINE",
+"7238 1006 LINE",
+"758 1006 LINE",
+"1486 1628 LINE",
+"1344 1792 LINE",
+"298 896 LINE",
+"1046 0 LINE"
+);
+}
+);
+width = 7552;
+},
+{
+layerId = "5C20EF92-B63D-42A8-8878-93C2863E0093";
+paths = (
+{
+closed = 1;
+nodes = (
+"1644 96 LINE",
+"1052 688 LINE",
+"7200 688 LINE",
+"7200 1104 LINE",
+"1052 1104 LINE",
+"1644 1696 LINE",
+"1360 1978 LINE",
+"278 896 LINE",
+"1360 -186 LINE"
+);
+}
+);
+width = 7552;
+},
+{
+layerId = "D0EC06BF-13F9-4C88-A6F5-B8203AF6C77E";
+paths = (
+{
+closed = 1;
+nodes = (
+"1508 76 LINE",
+"998 688 LINE",
+"7186 688 LINE",
+"7256 1104 LINE",
+"1148 1104 LINE",
+"1772 1638 LINE",
+"1516 1940 LINE",
+"298 896 LINE",
+"1202 -186 LINE"
+);
+}
+);
+width = 7552;
+}
+);
+leftMetricsKey = leftLongArrow;
+rightMetricsKey = leftLongArrow;
+unicode = 1F850;
+},
+{
glyphname = rightArrow;
-lastChange = "2019-05-26 23:18:56 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
layerId = "C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265";
@@ -259839,14 +260003,14 @@ paths = (
closed = 1;
nodes = (
"2410 896 LINE",
-"1450 1856 LINE",
-"1166 1574 LINE",
+"1328 1978 LINE",
+"1044 1696 LINE",
"1636 1104 LINE",
"352 1104 LINE",
"352 688 LINE",
"1636 688 LINE",
-"1166 220 LINE",
-"1450 -64 LINE"
+"1044 96 LINE",
+"1328 -186 LINE"
);
}
);
@@ -259879,14 +260043,14 @@ paths = (
closed = 1;
nodes = (
"2432 896 LINE",
-"1630 1856 LINE",
-"1322 1600 LINE",
-"1736 1104 LINE",
+"1528 1978 LINE",
+"1222 1716 LINE",
+"1732 1104 LINE",
"408 1104 LINE",
"338 688 LINE",
-"1576 688 LINE",
-"1052 240 LINE",
-"1312 -64 LINE"
+"1582 688 LINE",
+"958 154 LINE",
+"1214 -148 LINE"
);
}
);
@@ -259943,9 +260107,8 @@ userData = {
};
},
{
-color = (204,240,242,1);
glyphname = rightLongArrow;
-lastChange = "2019-01-27 19:59:52 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
guideLines = (
@@ -259989,14 +260152,14 @@ paths = (
closed = 1;
nodes = (
"3498 896 LINE",
-"2538 1856 LINE",
-"2254 1574 LINE",
+"2416 1978 LINE",
+"2132 1696 LINE",
"2724 1104 LINE",
"352 1104 LINE",
"352 688 LINE",
"2724 688 LINE",
-"2254 220 LINE",
-"2538 -64 LINE"
+"2132 96 LINE",
+"2416 -186 LINE"
);
}
);
@@ -260032,13 +260195,7 @@ nodes = (
width = 3776;
},
{
-guideLines = (
-{
-angle = 90;
-position = "{924, 832}";
-}
-);
-layerId = "D0EC06BF-13F9-4C88-A6F5-B8203AF6C77E";
+background = {
paths = (
{
closed = 1;
@@ -260055,6 +260212,30 @@ nodes = (
);
}
);
+};
+guideLines = (
+{
+angle = 90;
+position = "{988, 832}";
+}
+);
+layerId = "D0EC06BF-13F9-4C88-A6F5-B8203AF6C77E";
+paths = (
+{
+closed = 1;
+nodes = (
+"3520 896 LINE",
+"2616 1978 LINE",
+"2310 1716 LINE",
+"2820 1104 LINE",
+"408 1104 LINE",
+"338 688 LINE",
+"2670 688 LINE",
+"2046 154 LINE",
+"2302 -148 LINE"
+);
+}
+);
width = 3776;
},
{
@@ -260110,9 +260291,137 @@ com.typemytype.robofont.guideline.magnetic.SyiYVwO6az = 5;
};
},
{
-color = (204,240,242,1);
+glyphname = rightLongArrow2;
+lastChange = "2019-08-04 16:51:54 +0000";
+layers = (
+{
+layerId = "B1F27B51-9973-4381-9301-4FE46FE1CA59";
+paths = (
+{
+closed = 1;
+nodes = (
+"7274 896 LINE",
+"6378 1792 LINE",
+"6332 1748 LINE",
+"7152 928 LINE",
+"352 928 LINE",
+"352 864 LINE",
+"7152 864 LINE",
+"6332 46 LINE",
+"6378 0 LINE"
+);
+}
+);
+width = 7552;
+},
+{
+layerId = "200BE2C5-40F6-4CF4-AF4F-A33C0CC0964F";
+paths = (
+{
+closed = 1;
+nodes = (
+"7296 896 LINE",
+"6548 1792 LINE",
+"6498 1750 LINE",
+"7184 928 LINE",
+"378 928 LINE",
+"368 864 LINE",
+"7162 864 LINE",
+"6208 48 LINE",
+"6250 0 LINE"
+);
+}
+);
+width = 7552;
+},
+{
+layerId = "C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265";
+paths = (
+{
+closed = 1;
+nodes = (
+"7274 896 LINE",
+"6378 1792 LINE",
+"6224 1640 LINE",
+"6858 1006 LINE",
+"352 1006 LINE",
+"352 786 LINE",
+"6858 786 LINE",
+"6224 154 LINE",
+"6378 0 LINE"
+);
+}
+);
+width = 7552;
+},
+{
+layerId = "11F4534A-B963-4AB5-820F-DAF9A20CD933";
+paths = (
+{
+closed = 1;
+nodes = (
+"7296 896 LINE",
+"6548 1792 LINE",
+"6382 1654 LINE",
+"6922 1006 LINE",
+"394 1006 LINE",
+"356 786 LINE",
+"6836 786 LINE",
+"6108 164 LINE",
+"6250 0 LINE"
+);
+}
+);
+width = 7552;
+},
+{
+layerId = "5C20EF92-B63D-42A8-8878-93C2863E0093";
+paths = (
+{
+closed = 1;
+nodes = (
+"7274 896 LINE",
+"6192 1978 LINE",
+"5908 1696 LINE",
+"6500 1104 LINE",
+"352 1104 LINE",
+"352 688 LINE",
+"6500 688 LINE",
+"5908 96 LINE",
+"6192 -186 LINE"
+);
+}
+);
+width = 7552;
+},
+{
+layerId = "D0EC06BF-13F9-4C88-A6F5-B8203AF6C77E";
+paths = (
+{
+closed = 1;
+nodes = (
+"7296 896 LINE",
+"6494 1856 LINE",
+"6186 1600 LINE",
+"6600 1104 LINE",
+"408 1104 LINE",
+"338 688 LINE",
+"6440 688 LINE",
+"5916 240 LINE",
+"6176 -64 LINE"
+);
+}
+);
+width = 7552;
+}
+);
+leftMetricsKey = rightLongArrow;
+rightMetricsKey = rightLongArrow;
+unicode = 1F852;
+},
+{
glyphname = northWestArrow;
-lastChange = "2019-01-27 20:35:45 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
layerId = "C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265";
@@ -260239,9 +260548,8 @@ widthMetricsKey = leftArrow;
unicode = 2196;
},
{
-color = (204,240,242,1);
glyphname = northEastArrow;
-lastChange = "2019-01-27 20:34:30 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
layerId = "C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265";
@@ -260380,9 +260688,8 @@ widthMetricsKey = leftArrow;
unicode = 2197;
},
{
-color = (204,240,242,1);
glyphname = southEastArrow;
-lastChange = "2019-08-03 17:39:04 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
components = (
@@ -260466,9 +260773,8 @@ width = 2688;
unicode = 2198;
},
{
-color = (204,240,242,1);
glyphname = southWestArrow;
-lastChange = "2019-08-03 17:39:04 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
components = (
@@ -260553,7 +260859,7 @@ unicode = 2199;
},
{
glyphname = leftRightArrow;
-lastChange = "2019-01-27 19:50:14 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
layerId = "C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265";
@@ -260711,7 +261017,7 @@ unicode = 2194;
},
{
glyphname = leftRightLongArrow;
-lastChange = "2019-01-27 19:57:23 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
layerId = "C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265";
@@ -260869,9 +261175,8 @@ rightMetricsKey = rightArrow;
unicode = 27F7;
},
{
-color = (204,240,242,1);
glyphname = upArrow;
-lastChange = "2019-01-27 20:02:47 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
layerId = "C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265";
@@ -261004,9 +261309,8 @@ interface.gridadjust.original = "{'width': 1800, 'leftMargin': 296, 'rightMargin
};
},
{
-color = (204,240,242,1);
glyphname = downArrow;
-lastChange = "2019-08-03 17:39:04 +0000";
+lastChange = "2019-08-04 16:51:54 +0000";
layers = (
{
components = (
@@ -262558,6 +262862,74 @@ com.typemytype.robofont.guideline.magnetic.j1R7bzZtA3 = 5;
},
{
color = 4;
+glyphname = leftLongArrow2.case;
+lastChange = "2019-08-04 16:56:51 +0000";
+layers = (
+{
+components = (
+{
+name = leftLongArrow2;
+transform = "{1, 0, 0, 1, 0, 128}";
+}
+);
+layerId = "B1F27B51-9973-4381-9301-4FE46FE1CA59";
+width = 7552;
+},
+{
+components = (
+{
+name = leftLongArrow2;
+transform = "{1, 0, 0, 1, 20, 128}";
+}
+);
+layerId = "200BE2C5-40F6-4CF4-AF4F-A33C0CC0964F";
+width = 7552;
+},
+{
+components = (
+{
+name = leftLongArrow2;
+transform = "{1, 0, 0, 1, 0, 128}";
+}
+);
+layerId = "C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265";
+width = 7552;
+},
+{
+components = (
+{
+name = leftLongArrow2;
+transform = "{1, 0, 0, 1, 22, 128}";
+}
+);
+layerId = "11F4534A-B963-4AB5-820F-DAF9A20CD933";
+width = 7552;
+},
+{
+components = (
+{
+name = leftLongArrow2;
+transform = "{1, 0, 0, 1, 0, 128}";
+}
+);
+layerId = "5C20EF92-B63D-42A8-8878-93C2863E0093";
+width = 7552;
+},
+{
+components = (
+{
+name = leftLongArrow2;
+transform = "{1, 0, 0, 1, 20, 128}";
+}
+);
+layerId = "D0EC06BF-13F9-4C88-A6F5-B8203AF6C77E";
+width = 7552;
+}
+);
+widthMetricsKey = leftLongArrow2;
+},
+{
+color = 4;
glyphname = rightArrow.case;
lastChange = "2019-05-26 18:53:53 +0000";
layers = (
@@ -262728,6 +263100,74 @@ com.typemytype.robofont.guideline.magnetic.MLXbi8JRvP = 5;
},
{
color = 4;
+glyphname = rightLongArrow2.case;
+lastChange = "2019-08-04 16:58:03 +0000";
+layers = (
+{
+components = (
+{
+name = rightLongArrow2;
+transform = "{1, 0, 0, 1, 0, 128}";
+}
+);
+layerId = "B1F27B51-9973-4381-9301-4FE46FE1CA59";
+width = 7552;
+},
+{
+components = (
+{
+name = rightLongArrow2;
+transform = "{1, 0, 0, 1, 22, 128}";
+}
+);
+layerId = "200BE2C5-40F6-4CF4-AF4F-A33C0CC0964F";
+width = 7552;
+},
+{
+components = (
+{
+name = rightLongArrow2;
+transform = "{1, 0, 0, 1, 0, 128}";
+}
+);
+layerId = "C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265";
+width = 7552;
+},
+{
+components = (
+{
+name = rightLongArrow2;
+transform = "{1, 0, 0, 1, 20, 128}";
+}
+);
+layerId = "11F4534A-B963-4AB5-820F-DAF9A20CD933";
+width = 7552;
+},
+{
+components = (
+{
+name = rightLongArrow2;
+transform = "{1, 0, 0, 1, 0, 128}";
+}
+);
+layerId = "5C20EF92-B63D-42A8-8878-93C2863E0093";
+width = 7552;
+},
+{
+components = (
+{
+name = rightLongArrow2;
+transform = "{1, 0, 0, 1, 22, 128}";
+}
+);
+layerId = "D0EC06BF-13F9-4C88-A6F5-B8203AF6C77E";
+width = 7552;
+}
+);
+widthMetricsKey = rightLongArrow2;
+},
+{
+color = 4;
glyphname = leftRightArrow.case;
lastChange = "2019-05-26 18:53:53 +0000";
layers = (
@@ -263405,9 +263845,8 @@ com.typemytype.robofont.guideline.magnetic.LiTne3OvfB = 5;
};
},
{
-color = (204,240,242,1);
glyphname = triagrt;
-lastChange = "2018-12-31 21:21:38 +0000";
+lastChange = "2019-08-04 16:51:59 +0000";
layers = (
{
layerId = "C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265";
@@ -263502,9 +263941,8 @@ userData = {
};
},
{
-color = (204,240,242,1);
glyphname = triagdn;
-lastChange = "2019-01-20 01:56:59 +0000";
+lastChange = "2019-08-04 16:51:59 +0000";
layers = (
{
layerId = "C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265";
@@ -263594,9 +264032,8 @@ width = 2730;
unicode = 25BC;
},
{
-color = (204,240,242,1);
glyphname = triagup;
-lastChange = "2019-01-20 01:56:59 +0000";
+lastChange = "2019-08-04 16:51:59 +0000";
layers = (
{
layerId = "C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265";
@@ -263686,9 +264123,8 @@ width = 2730;
unicode = 25B2;
},
{
-color = (204,240,242,1);
glyphname = blackleftpointingtriangle;
-lastChange = "2018-12-31 21:21:38 +0000";
+lastChange = "2019-08-04 16:51:59 +0000";
layers = (
{
layerId = "C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265";
@@ -268562,9 +268998,8 @@ note = "Based on upWhiteArrow";
unicode = 21EA;
},
{
-color = (204,240,242,1);
glyphname = placeofinterestsign;
-lastChange = "2019-02-11 00:40:45 +0000";
+lastChange = "2019-08-04 16:51:59 +0000";
layers = (
{
layerId = "C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265";
@@ -421432,6 +421867,10 @@ idblgrave = 112;
iinvertedbreve = 112;
itilde = 112;
};
+l.ss02 = {
+"@MMK_R_A" = 64;
+"@MMK_R_B" = 40;
+};
lacute = {
idblgrave = 112;
};
@@ -421862,10 +422301,6 @@ Tdotbelow = -96;
zrthook = {
"@MMK_R_T" = -112;
};
-l.ss02 = {
-"@MMK_R_A" = 64;
-"@MMK_R_B" = 40;
-};
};
"200BE2C5-40F6-4CF4-AF4F-A33C0CC0964F" = {
"@MMK_L_A" = {
@@ -423903,6 +424338,10 @@ idblgrave = 112;
iinvertedbreve = 112;
itilde = 112;
};
+l.ss02 = {
+"@MMK_R_A" = 64;
+"@MMK_R_B" = 40;
+};
lacute = {
idblgrave = 112;
};
@@ -424327,10 +424766,6 @@ Tdotbelow = -96;
zrthook = {
"@MMK_R_T" = -112;
};
-l.ss02 = {
-"@MMK_R_A" = 64;
-"@MMK_R_B" = 40;
-};
};
"C698F293-3EC0-4A5A-A3A0-0FDB1F5CF265" = {
"@MMK_L_A" = {
@@ -424452,6 +424887,7 @@ iinvertedbreve = 96;
rdblgrave.1 = 96;
};
"@MMK_L_H" = {
+"@MMK_R_B" = 0;
"@MMK_R_idieresis" = 208;
"@MMK_R_m" = 0;
Idieresis = 224;
@@ -424463,7 +424899,6 @@ lcircumflexbelow = 96;
llinebelow = 128;
rlinebelow.1 = 128;
underscore = 96;
-"@MMK_R_B" = 0;
};
"@MMK_L_H.sups" = {
"@MMK_R_m.sups" = 0;
@@ -426404,6 +426839,10 @@ idblgrave = 112;
iinvertedbreve = 112;
itilde = 112;
};
+l.ss02 = {
+"@MMK_R_A" = 64;
+"@MMK_R_B" = 40;
+};
lacute = {
idblgrave = 112;
};
@@ -426834,10 +427273,6 @@ Tdotbelow = -96;
zrthook = {
"@MMK_R_T" = -112;
};
-l.ss02 = {
-"@MMK_R_B" = 40;
-"@MMK_R_A" = 64;
-};
};
"11F4534A-B963-4AB5-820F-DAF9A20CD933" = {
"@MMK_L_A" = {
@@ -428864,6 +429299,10 @@ idblgrave = 112;
iinvertedbreve = 112;
itilde = 112;
};
+l.ss02 = {
+"@MMK_R_A" = 64;
+"@MMK_R_B" = 40;
+};
lacute = {
idblgrave = 112;
};
@@ -429289,10 +429728,6 @@ Tdotbelow = -96;
zrthook = {
"@MMK_R_T" = -112;
};
-l.ss02 = {
-"@MMK_R_A" = 64;
-"@MMK_R_B" = 40;
-};
};
"5C20EF92-B63D-42A8-8878-93C2863E0093" = {
"@MMK_L_A" = {
@@ -431345,6 +431780,10 @@ idblgrave = 112;
iinvertedbreve = 112;
itilde = 112;
};
+l.ss02 = {
+"@MMK_R_A" = 64;
+"@MMK_R_B" = 40;
+};
lacute = {
idblgrave = 112;
};
@@ -431773,10 +432212,6 @@ Tdotbelow = -96;
zrthook = {
"@MMK_R_T" = -112;
};
-l.ss02 = {
-"@MMK_R_A" = 64;
-"@MMK_R_B" = 40;
-};
};
"D0EC06BF-13F9-4C88-A6F5-B8203AF6C77E" = {
"@MMK_L_A" = {
@@ -433778,6 +434213,10 @@ idblgrave = 112;
iinvertedbreve = 112;
itilde = 112;
};
+l.ss02 = {
+"@MMK_R_A" = 64;
+"@MMK_R_B" = 40;
+};
lacute = {
idblgrave = 112;
};
@@ -434202,10 +434641,6 @@ Tdotbelow = -96;
zrthook = {
"@MMK_R_T" = -112;
};
-l.ss02 = {
-"@MMK_R_A" = 64;
-"@MMK_R_B" = 40;
-};
};
};
manufacturer = rsms;
diff --git a/src/features/README.md b/src/features/README.md
new file mode 100644
index 000000000..75c85a84f
--- /dev/null
+++ b/src/features/README.md
@@ -0,0 +1,21 @@
+# OpenType features
+
+This directory contains most (but not all) OpenType feature code.
+
+- Some features are maintained by the Glyphs application and are stored in the .glyphs file.
+- The order of features are defined in the .glyphs file
+
+Each feature file in this directory is automatically wrapped in a `feature {...}` block.
+For example, `cv07.fea` contains the following code:
+
+```fea
+sub germandbls by germandbls.1;
+```
+
+And when the font is compiled, it actually becomes:
+
+```
+feature cv07 {
+ sub germandbls by germandbls.1;
+}
+```
diff --git a/src/features/calt.fea b/src/features/calt.fea
new file mode 100644
index 000000000..8b1ad6dc4
--- /dev/null
+++ b/src/features/calt.fea
@@ -0,0 +1,237 @@
+# cap-height tall glyphs
+@UC = [
+ @Uppercase
+ @Numeral
+
+ # punctuation
+ ampersand exclam exclamdbl exclamdown uni2049 question uni2047 uni2048
+ questiondown interrobang invertedinterrobang bar paragraph
+
+ # currency
+ dollar cent yen sterling florin uni20BA uni20BD euro uni20B9 tenge peseta
+ peso kip won lira austral hryvnia naira guarani coloncurrency cedi cruzeiro
+ tugrik uni20AF mill afii57636 manat rupee lari franc
+
+ # cap-tall symbols
+ numero triagrt triagdn triagup warningSign blackleftpointingtriangle
+ circleblack circlewhite
+ diamondblack diamondblack_x diamondwhite diamondwhite_x
+ sunWithRays blackSunWithRays
+ heartWhiteSuit heartBlackSuit heavyBlackHeart
+ upBlackArrow upWhiteArrow
+ capslock placeofinterestsign control projective option alternativekeysymbol
+ brokenCircleNorthWestArrow anticlockwiseOpenCircleArrow
+ clockwiseOpenCircleArrow
+ deleteleft deleteright clear ejectsymbol
+
+ # percent and fractions
+ onehalf onethird onequarter threequarters fivesixths onefraction seveneighths
+ oneeighth fiveeighths threeeighths percent perthousand pertenthousand uni214D
+ cadauna careof accountof addresssubject
+];
+
+# x-height tall glyphs
+@LC = [
+ @Lowercase
+];
+
+@CASE_DELIM_L = [
+ braceleft braceright
+ bracketleft bracketright
+ parenleft parenright
+];
+@CASE_NONDELIM_L = [
+ at
+ multiply
+ minus
+ plus
+ plusminus
+ divide
+ equal
+ notequal
+ endash
+ figuredash
+ emdash
+ hyphen
+ bullet
+ openbullet
+ hyphenbullet
+ trianglebullet
+ blackleftbullet
+ blackrightbullet
+ leftArrow
+ leftLongArrow
+ leftLongArrow2
+ rightArrow
+ rightLongArrow
+ rightLongArrow2
+ leftRightArrow
+ leftRightLongArrow
+ colon
+ approxequal
+ asciitilde
+ less
+ greater
+ lessequal
+ greaterequal
+];
+@CASE_L = [
+ @CASE_DELIM_L
+ @CASE_NONDELIM_L
+];
+
+@CASE_DELIM_R = [
+ braceleft.case braceright.case
+ bracketleft.case bracketright.case
+ parenleft.case parenright.case
+];
+@CASE_NONDELIM_R = [
+ at.case
+ multiply.case
+ minus.case
+ plus.case
+ plusminus.case
+ divide.case
+ equal.case
+ notequal.case
+ endash.case
+ figuredash.case
+ emdash.case
+ hyphen.case
+ bullet.case
+ openbullet.case
+ hyphenbullet.case
+ trianglebullet.case
+ blackleftbullet.case
+ blackrightbullet.case
+ leftArrow.case
+ leftLongArrow.case
+ leftLongArrow2.case
+ rightArrow.case
+ rightLongArrow.case
+ rightLongArrow2.case
+ leftRightArrow.case
+ leftRightLongArrow.case
+ colon.case
+ approxequal.case
+ asciitilde.case
+ less.case
+ greater.case
+ lessequal.case
+ greaterequal.case
+];
+@CASE_R = [
+ @CASE_DELIM_R
+ @CASE_NONDELIM_R
+];
+
+@DASH = [
+ hyphen hyphen.case
+ endash endash.case
+ emdash emdash.case
+ minus minus.case
+];
+
+# ---------------------------------------------------
+
+# :-)
+sub colon' @DASH [parenright parenright.case] by colon.case;
+sub [colon colon.case] hyphen' [parenright parenright.case] by hyphen.case;
+sub [colon colon.case] endash' [parenright parenright.case] by endash.case;
+sub [colon colon.case] emdash' [parenright parenright.case] by emdash.case;
+sub [colon colon.case] @DASH parenright' by parenright.case;
+
+# A foo' -> A foo.case
+#
+# ignore subs adjacent to lower case
+#
+# x[]X
+ignore sub @LC @CASE_DELIM_L @CASE_DELIM_L @UC;
+ignore sub @LC @CASE_DELIM_L @UC;
+ignore sub @LC @CASE_DELIM_L @Whitespace @UC;
+ignore sub @LC @CASE_DELIM_L @Whitespace @Whitespace @UC;
+#
+# short runs of uc-lc, e.g "(Xx)", "[Zzz]"
+ignore sub @CASE_DELIM_L @UC @LC @CASE_DELIM_L;
+ignore sub @CASE_DELIM_L @UC @All @LC @CASE_DELIM_L;
+#
+# e.g. "x-"
+# TODO: figure out how to ignore "x--A"
+ignore sub @LC @CASE_L;
+#
+# e.g. "-x", "--x", "---x", "----x", "-----x"
+ignore sub @CASE_L @LC;
+ignore sub @CASE_L @CASE_L @LC;
+ignore sub @CASE_L @CASE_L @CASE_L @LC;
+ignore sub @CASE_L @CASE_L @CASE_L @CASE_L @LC;
+ignore sub @CASE_L @CASE_L @CASE_L @CASE_L @CASE_L @LC;
+#
+# pairs with space, e.g. "( ) M" since we don't support subbing
+# all on the left side.
+ignore sub @CASE_DELIM_L @Whitespace @CASE_DELIM_L @Whitespace [ @UC @CASE_R ];
+ignore sub @CASE_DELIM_L @CASE_DELIM_L @Whitespace [ @UC @CASE_R ];
+#
+# e.g. "A-", "A -", "A -"
+sub [ @UC @CASE_R ] @CASE_L' by @CASE_R;
+sub [ @UC @CASE_R ] @Whitespace @CASE_L' by @CASE_R;
+sub [ @UC @CASE_R ] @Whitespace @Whitespace @CASE_L' by @CASE_R;
+
+# foo' foo foo foo foo A -> foo.case foo foo foo foo A
+# foo' foo foo foo A -> foo.case foo foo foo A
+# foo' foo foo A -> foo.case foo foo A
+# foo' foo A -> foo.case foo A
+# foo' A -> foo.case A
+# Note: since we look quite far back, sequences like x{}[]M will case both
+# the square brackets next to M _and_ the curly braces to become .case
+#
+# e.g. "-A", "--A", "---A", "----A", "-----A"
+sub @CASE_L' [ @UC @CASE_R ] by @CASE_R;
+sub @CASE_L' @CASE_L [ @CASE_R @UC ] by @CASE_R;
+sub @CASE_L' @CASE_L @CASE_L [ @CASE_R @UC ] by @CASE_R;
+sub @CASE_L' @CASE_L @CASE_L @CASE_L [ @CASE_R @UC ] by @CASE_R;
+sub @CASE_L' @CASE_L @CASE_L @CASE_L @CASE_L [ @CASE_R @UC ] by @CASE_R;
+#
+# e.g. "- A", "-- A", "--- A", "---- A", "----- A"
+sub @CASE_L' @Whitespace [ @UC @CASE_R ] by @CASE_R;
+sub @CASE_L' @CASE_L @Whitespace [ @CASE_R @UC ] by @CASE_R;
+sub @CASE_L' @CASE_L @CASE_L @Whitespace [ @CASE_R @UC ] by @CASE_R;
+sub @CASE_L' @CASE_L @CASE_L @CASE_L @Whitespace [ @CASE_R @UC ] by @CASE_R;
+sub @CASE_L' @CASE_L @CASE_L @CASE_L @CASE_L @Whitespace [ @CASE_R @UC ] by @CASE_R;
+#
+# e.g. "- A", "-- A", "--- A", "---- A", "----- A"
+sub @CASE_L' @Whitespace @Whitespace [ @UC @CASE_R ] by @CASE_R;
+sub @CASE_L' @CASE_L @Whitespace @Whitespace [ @CASE_R @UC ] by @CASE_R;
+sub @CASE_L' @CASE_L @CASE_L @Whitespace @Whitespace [ @CASE_R @UC ] by @CASE_R;
+sub @CASE_L' @CASE_L @CASE_L @CASE_L @Whitespace @Whitespace [ @CASE_R @UC ] by @CASE_R;
+sub @CASE_L' @CASE_L @CASE_L @CASE_L @CASE_L @Whitespace @Whitespace [ @CASE_R @UC ] by @CASE_R;
+sub @CASE_L' @Whitespace @Whitespace @Whitespace [ @UC @CASE_R ] by @CASE_R; # e.g. "- A"
+
+# X(_)
+@Punctuation = [
+ slash bar quoteleft quoteright apostrophemod quotesingle quotedbl
+ quotedblleft quotedblright quotedblbase quotesinglbase prime doubleprime
+ tripleprime quadrupleprime primerev doubleprimerev tripleprimerev primemod
+ doubleprimemod comma period ellipsis twodotleader semicolon underscore
+ asciicircum circumflex
+ asterisk
+];
+sub @CASE_DELIM_R @Punctuation @CASE_DELIM_L' by @CASE_DELIM_R;
+
+# in between number position adjustment, e.g. 3x4 -> 3×4
+@between_num_L = [
+ multiply
+ asterisk
+];
+@between_num_R = [
+ multiply.case
+ asterisk.case
+];
+sub @Numeral @between_num_L' @Numeral by @between_num_R; # 3*9
+sub @Numeral @Whitespace @between_num_L' @Numeral by @between_num_R; # 3 *9
+sub @Numeral @Whitespace @Whitespace @between_num_L' @Numeral by @between_num_R; # 3 *9
+sub @Numeral @between_num_L' @Whitespace @Numeral by @between_num_R; # 3* 9
+sub @Numeral @Whitespace @between_num_L' @Whitespace @Numeral by @between_num_R; # 3 * 9
+sub @Numeral @Whitespace @Whitespace @between_num_L' @Whitespace @Numeral by @between_num_R; # 3 * 9
+sub @Numeral @between_num_L' @Whitespace @Whitespace @Numeral by @between_num_R; # 3* 9
+sub @Numeral @Whitespace @between_num_L' @Whitespace @Whitespace @Numeral by @between_num_R; # 3 * 9
+sub @Numeral @Whitespace @Whitespace @between_num_L' @Whitespace @Whitespace @Numeral by @between_num_R; # 3 * 9
diff --git a/src/features/ccmp.fea b/src/features/ccmp.fea
new file mode 100644
index 000000000..20dbb8d41
--- /dev/null
+++ b/src/features/ccmp.fea
@@ -0,0 +1,556 @@
+@CCMP_ACC = [
+ gravecomb acutecomb tildecomb brevetildecomb.cn brevehookcomb.cn
+ breveacutecomb.cn circumflextildecomb.cn circumflexhookcomb.cn
+ circumflexgravecomb.cn circumflexacutecomb.cn brevegravecomb.cn
+ macroncomb dieresismacroncomb.cn dieresisacutecomb.cn
+ dieresiscaroncomb.cn dieresisgravecomb.cn dotmacroncomb.cn
+ tildeacutecomb macrongravecomb.cn macronacutecomb.cn
+ macrondieresiscomb.cn acutedotcomb.cn carondotcomb.cn
+ tildemacroncomb.cn tildedieresiscomb.cn circumflexnosp overscorenosp
+ brevenosp dotnosp dieresisnosp hook ringnosp acutedblnosp caroncmb
+ linevertnosp linevertdblnosp dblgravecmb candrabindunosp breveinvnosp
+ commaturnsupnosp commaabovecmb commasuprevnosp commaaboverightcmb
+ anglesupnosp hornnosp xsupnosp tildevertsupnosp overscoredblnosp
+ graveleftnosp acuterightnosp perispomenigreekcmb koroniscmb
+ diaeresistonosnosp uni0346 uni034A uni034B uni034C arrowheadrightabovecomb uni0351
+ uni0352 uni0357 uni0358 uni035B uni1DC0 uni1DC1 uni1DC3 uni1DC4
+ uni1DC5 uni1DC6 uni1DC7 uni1DC8 uni1DC9 uni1DCB uni1DCC uni1DCD
+ uni1DCE uni1DD1 uni1DD2 uni1DD3 uni1DD4 uni1DD5 uni1DD6 uni1DD7
+ uni1DD8 uni1DD9 uni1DDA uni1DDB uni1DDC uni1DDD uni1DDE uni1DDF
+ uni1DE0 uni1DE1 uni1DE2 uni1DE3 uni1DE4 uni1DE5 uni1DE6 uni1DE7
+ uni1DE8 uni1DE9 uni1DEA uni1DEB uni1DEC uni1DED uni1DEE uni1DEF
+ uni1DF0 uni1DF1 uni1DF2 uni1DF3 uni1DF4 uni1DF5 uni1DFE uni0363
+ uni0364 uni0365 uni0366 uni0367 uni0368 uni0369 uni036A uni036B
+ uni036C uni036D uni036E uni036F titlocyrilliccmb
+ palatalizationcyrilliccmb dasiapneumatacyrilliccmb
+ psilipneumatacyrilliccmb uni0487 uni20F0 uniA69F uni2DFF uni20DC
+ uniFE20 uniFE21 uniFE22 uniFE23 uniFE24 uniFE25 uniFE26
+];
+
+# Transpose sequences like /i /gravecomb -> /idotless /gravecomb
+lookup ccmp02 {
+ sub i' @CCMP_ACC by idotless;
+ sub j' @CCMP_ACC by jdotless;
+ sub ibar' @CCMP_ACC by uni0268.ccmp;
+ sub iogonek' @CCMP_ACC by uni012F.ccmp; # iogonek is generated
+ sub uni0249' @CCMP_ACC by uni0249.ccmp;
+ sub jcrosstail' @CCMP_ACC by jcrosstail.ccmp;
+ sub yotgreek' @CCMP_ACC by jdotless;
+ sub icyrillic' @CCMP_ACC by idotless;
+ sub jecyrillic' @CCMP_ACC by jdotless;
+ sub itildebelow' @CCMP_ACC by uni1E2D.ccmp; # uni1E2D.ccmp is generated
+ sub idotbelow' @CCMP_ACC by uni1ECB.ccmp; # both are generated
+ sub i.numr' @CCMP_ACC by uni2071.ccmp;
+} ccmp02;
+
+lookup ccmp03 {
+ sub d caroncmb by dcaron;
+ sub l caroncmb by lcaron;
+ sub t caroncmb by tcaron;
+
+ sub A gravecomb by Agrave;
+ sub A acutecomb by Aacute;
+ sub A circumflexnosp by Acircumflex;
+ sub A tildecomb by Atilde;
+ sub A dieresisnosp by Adieresis;
+ sub A ringnosp by Aring;
+ sub A ringacute.cn by Aringacute;
+ sub C cedillanosp by Ccedilla;
+ sub E gravecomb by Egrave;
+ sub E acutecomb by Eacute;
+ sub E circumflexnosp by Ecircumflex;
+ sub E dieresisnosp by Edieresis;
+ sub I gravecomb by Igrave;
+ sub I acutecomb by Iacute;
+ sub I circumflexnosp by Icircumflex;
+ sub I dieresisnosp by Idieresis;
+ sub N tildecomb by Ntilde;
+ sub O gravecomb by Ograve;
+ sub O acutecomb by Oacute;
+ sub O circumflexnosp by Ocircumflex;
+ sub O tildecomb by Otilde;
+ sub O dieresisnosp by Odieresis;
+ sub U gravecomb by Ugrave;
+ sub U acutecomb by Uacute;
+ sub U circumflexnosp by Ucircumflex;
+ sub U dieresisnosp by Udieresis;
+ sub Y acutecomb by Yacute;
+ sub a gravecomb by agrave;
+ sub a acutecomb by aacute;
+ sub a circumflexnosp by acircumflex;
+ sub a tildecomb by atilde;
+ sub a dieresisnosp by adieresis;
+ sub a ringnosp by aring;
+ sub a ringacute.cn by aringacute;
+ sub c cedillanosp by ccedilla;
+ sub e gravecomb by egrave;
+ sub e acutecomb by eacute;
+ sub e circumflexnosp by ecircumflex;
+ sub e dieresisnosp by edieresis;
+ sub idotless gravecomb by igrave;
+ sub idotless acutecomb by iacute;
+ sub idotless circumflexnosp by icircumflex;
+ sub idotless dieresisnosp by idieresis;
+ sub n tildecomb by ntilde;
+ sub o gravecomb by ograve;
+ sub o acutecomb by oacute;
+ sub o circumflexnosp by ocircumflex;
+ sub o tildecomb by otilde;
+ sub o dieresisnosp by odieresis;
+ sub u gravecomb by ugrave;
+ sub u acutecomb by uacute;
+ sub u circumflexnosp by ucircumflex;
+ sub u dieresisnosp by udieresis;
+ sub y acutecomb by yacute;
+ sub y dieresisnosp by ydieresis;
+ sub A macroncomb by Amacron;
+ sub a macroncomb by amacron;
+ sub A brevenosp by Abreve;
+ sub a brevenosp by abreve;
+ sub A ogoneknosp by Aogonek;
+ sub a ogoneknosp by aogonek;
+ sub C acutecomb by Cacute;
+ sub c acutecomb by cacute;
+ sub C circumflexnosp by Ccircumflex;
+ sub c circumflexnosp by ccircumflex;
+ sub C dotnosp by Cdotaccent;
+ sub c dotnosp by cdotaccent;
+ sub C caroncmb by Ccaron;
+ sub c caroncmb by ccaron;
+ sub D caroncmb by Dcaron;
+ sub E macroncomb by Emacron;
+ sub e macroncomb by emacron;
+ sub E brevenosp by Ebreve;
+ sub e brevenosp by ebreve;
+ sub E dotnosp by Edotaccent;
+ sub e dotnosp by edotaccent;
+ sub E ogoneknosp by Eogonek;
+ sub e ogoneknosp by eogonek;
+ sub E caroncmb by Ecaron;
+ sub e caroncmb by ecaron;
+ sub G circumflexnosp by Gcircumflex;
+ sub g circumflexnosp by gcircumflex;
+ sub G brevenosp by Gbreve;
+ sub g brevenosp by gbreve;
+ sub G dotnosp by Gdotaccent;
+ sub g dotnosp by gdotaccent;
+ sub G commaaccent by Gcommaaccent;
+ sub g commaaccentrotate.cn by gcommaaccent;
+ sub H circumflexnosp by Hcircumflex;
+ sub h circumflexnosp by hcircumflex;
+ sub I tildecomb by Itilde;
+ sub idotless tildecomb by itilde;
+ sub I macroncomb by Imacron;
+ sub idotless macroncomb by imacron;
+ sub I brevenosp by Ibreve;
+ sub idotless brevenosp by ibreve;
+ sub I ogoneknosp by Iogonek;
+ sub i ogoneknosp by iogonek;
+ sub I dotnosp by Idotaccent;
+ sub J circumflexnosp by Jcircumflex;
+ sub jdotless circumflexnosp by jcircumflex;
+ sub K commaaccent by Kcommaaccent;
+ sub k commaaccent by kcommaaccent;
+ sub L acutecomb by Lacute;
+ sub l acutecomb by lacute;
+ sub L commaaccent by Lcommaaccent;
+ sub l commaaccent by lcommaaccent;
+ sub L dotnosp by Ldot;
+ sub l dotnosp by ldot;
+ sub N acutecomb by Nacute;
+ sub n acutecomb by nacute;
+ sub N commaaccent by Ncommaaccent;
+ sub n commaaccent by ncommaaccent;
+ sub N caroncmb by Ncaron;
+ sub n caroncmb by ncaron;
+ sub O macroncomb by Omacron;
+ sub o macroncomb by omacron;
+ sub O brevenosp by Obreve;
+ sub o brevenosp by obreve;
+ sub O acutedblnosp by Ohungarumlaut;
+ sub o acutedblnosp by ohungarumlaut;
+ sub R acutecomb by Racute;
+ sub r acutecomb by racute;
+ sub R commaaccent by Rcommaaccent;
+ sub r commaaccent by rcommaaccent;
+ sub R caroncmb by Rcaron;
+ sub r caroncmb by rcaron;
+ sub S acutecomb by Sacute;
+ sub s acutecomb by sacute;
+ sub S circumflexnosp by Scircumflex;
+ sub s circumflexnosp by scircumflex;
+ sub S cedillanosp by Scedilla;
+ sub s cedillanosp by scedilla;
+ sub S commaaccent by Scommaaccent;
+ sub s commaaccent by scommaaccent;
+ sub S caroncmb by Scaron;
+ sub s caroncmb by scaron;
+ sub T commaaccent by uni021A;
+ sub t commaaccent by tcommaaccent;
+ sub T cedillanosp by Tcommaaccent;
+ sub t cedillanosp by tcedilla;
+ sub T caroncmb by Tcaron;
+ sub U tildecomb by Utilde;
+ sub u tildecomb by utilde;
+ sub U macroncomb by Umacron;
+ sub u macroncomb by umacron;
+ sub U brevenosp by Ubreve;
+ sub u brevenosp by ubreve;
+ sub U ringnosp by Uring;
+ sub u ringnosp by uring;
+ sub U acutedblnosp by Uhungarumlaut;
+ sub u acutedblnosp by uhungarumlaut;
+ sub U ogoneknosp by Uogonek;
+ sub u ogoneknosp by uogonek;
+ sub W circumflexnosp by Wcircumflex;
+ sub w circumflexnosp by wcircumflex;
+ sub Y circumflexnosp by Ycircumflex;
+ sub y circumflexnosp by ycircumflex;
+ sub Y dieresisnosp by Ydieresis;
+ sub Z acutecomb by Zacute;
+ sub z acutecomb by zacute;
+ sub Z dotnosp by Zdotaccent;
+ sub z dotnosp by zdotaccent;
+ sub Z caroncmb by Zcaron;
+ sub z caroncmb by zcaron;
+ sub AE acutecomb by AEacute;
+ sub ae acutecomb by aeacute;
+ sub Oslash acutecomb by Oslashacute;
+ sub oslash acutecomb by oslashacute;
+ #sub z caroncmb by zcaron;
+ sub W gravecomb by Wgrave;
+ sub w gravecomb by wgrave;
+ sub W acutecomb by Wacute;
+ sub w acutecomb by wacute;
+ sub W dieresisnosp by Wdieresis;
+ sub w dieresisnosp by wdieresis;
+ sub Y gravecomb by Ygrave;
+ sub y gravecomb by ygrave;
+ sub jdotless caroncmb by jcaron;
+ sub A dotbelow by Adotbelow;
+ sub a dotbelow by adotbelow;
+ sub A hook by Ahookabove;
+ sub a hook by ahookabove;
+ #sub A circumflexacutecomb.cn by uni1EA4;
+ sub A circumflexnosp acutecomb by Acircumflexacute;
+ sub a circumflexacutecomb.cn by acircumflexacute;
+ #sub A circumflexgravecomb.cn by uni1EA6;
+ sub A circumflexnosp gravecomb by Acircumflexgrave;
+ sub a circumflexgravecomb.cn by acircumflexgrave;
+ #sub A circumflexhookcomb.cn by uni1EA8;
+ sub A circumflexnosp hook by Acircumflexhookabove;
+ sub a circumflexhookcomb.cn by acircumflexhookabove;
+ #sub A circumflextildecomb.cn by uni1EAA;
+ sub A circumflexnosp tildecomb by Acircumflextilde;
+ sub a circumflextildecomb.cn by acircumflextilde;
+ #sub A breveacutecomb.cn by uni1EAE;
+ sub A brevenosp acutecomb by Abreveacute;
+ sub a breveacutecomb.cn by abreveacute;
+ #sub A brevegravecomb.cn by uni1EB0;
+ sub A brevenosp gravecomb by Abrevegrave;
+ sub a brevegravecomb.cn by abrevegrave;
+ #sub A brevehookcomb.cn by uni1EB2;
+ sub A brevenosp hook by Abrevehookabove;
+ sub a brevehookcomb.cn by abrevehookabove;
+ sub A brevetildecomb.cn by Abrevetilde;
+ sub a brevetildecomb.cn by abrevetilde;
+ sub E dotbelow by Edotbelow;
+ sub e dotbelow by edotbelow;
+ sub E hook by Ehookabove;
+ sub e hook by ehookabove;
+ sub E tildecomb by Etilde;
+ sub e tildecomb by etilde;
+ #sub E circumflexacutecomb.cn by uni1EBE;
+ sub E circumflexnosp acutecomb by Ecircumflexacute;
+ sub e circumflexacutecomb.cn by ecircumflexacute;
+ #sub E circumflexgravecomb.cn by uni1EC0;
+ sub E circumflexnosp gravecomb by Ecircumflexgrave;
+ sub e circumflexgravecomb.cn by ecircumflexgrave;
+ #sub E circumflexhookcomb.cn by uni1EC2;
+ sub E circumflexnosp hook by Ecircumflexhookabove;
+ sub e circumflexhookcomb.cn by ecircumflexhookabove;
+ #sub E circumflextildecomb.cn by uni1EC4;
+ sub E circumflexnosp tildecomb by Ecircumflextilde;
+ sub e circumflextildecomb.cn by ecircumflextilde;
+ sub I hook by Ihookabove;
+ sub idotless hook by ihookabove;
+ sub I dotbelow by Idotbelow;
+ sub i dotbelow by idotbelow;
+ sub O dotbelow by Odotbelow;
+ sub o dotbelow by odotbelow;
+ sub O hook by Ohookabove;
+ sub o hook by ohookabove;
+ #sub O circumflexacutecomb.cn by uni1ED0;
+ sub O circumflexnosp acutecomb by Ocircumflexacute;
+ sub o circumflexacutecomb.cn by ocircumflexacute;
+ #sub O circumflexgravecomb.cn by uni1ED2;
+ sub O circumflexnosp gravecomb by Ocircumflexgrave;
+ sub o circumflexgravecomb.cn by ocircumflexgrave;
+ #sub O circumflexhookcomb.cn by uni1ED4;
+ sub O circumflexnosp hook by Ocircumflexhookabove;
+ sub o circumflexhookcomb.cn by ocircumflexhookabove;
+ #sub O circumflextildecomb.cn by uni1ED6;
+ sub O circumflexnosp tildecomb by Ocircumflextilde;
+ sub o circumflextildecomb.cn by ocircumflextilde;
+ sub Ohorn acutecomb by Ohornacute;
+ sub ohorn acutecomb by ohornacute;
+ sub Ohorn gravecomb by Ohorngrave;
+ sub ohorn gravecomb by ohorngrave;
+ sub Ohorn hook by Ohornhookabove;
+ sub ohorn hook by ohornhookabove;
+ sub Ohorn tildecomb by Ohorntilde;
+ sub ohorn tildecomb by ohorntilde;
+ sub Ohorn dotbelow by Ohorndotbelow;
+ sub ohorn dotbelow by ohorndotbelow;
+ sub U dotbelow by Udotbelow;
+ sub u dotbelow by udotbelow;
+ sub U hook by Uhookabove;
+ sub u hook by uhookabove;
+ sub Uhorn acutecomb by Uhornacute;
+ sub uhorn acutecomb by uhornacute;
+ sub Uhorn gravecomb by Uhorngrave;
+ sub uhorn gravecomb by uhorngrave;
+ sub Uhorn hook by Uhornhookabove;
+ sub uhorn hook by uhornhookabove;
+ sub Uhorn tildecomb by Uhorntilde;
+ sub uhorn tildecomb by uhorntilde;
+ sub Uhorn dotbelow by Uhorndotbelow;
+ sub uhorn dotbelow by uhorndotbelow;
+ sub Y dotbelow by Ydotbelow;
+ sub y dotbelow by ydotbelow;
+ sub Y hook by Yhookabove;
+ sub y hook by yhookabove;
+ sub Y tildecomb by Ytilde;
+ sub y tildecomb by ytilde;
+ sub A caroncmb by Acaron;
+ sub a caroncmb by acaron;
+ sub I caroncmb by Icaron;
+ sub idotless caroncmb by icaron;
+ sub O caroncmb by Ocaron;
+ sub o caroncmb by ocaron;
+ sub U caroncmb by Ucaron;
+ sub u caroncmb by ucaron;
+ #sub U dieresismacroncomb.cn by uni01D5;
+ sub U dieresisnosp macroncomb by Udieresismacron;
+ sub u dieresismacroncomb.cn by udieresismacron;
+ #sub U dieresisacutecomb.cn by uni01D7;
+ sub U dieresisnosp acutecomb by Udieresisacute;
+ sub u dieresisacutecomb.cn by udieresisacute;
+ #sub U dieresiscaroncomb.cn by uni01D9;
+ sub U dieresisnosp caroncmb by Udieresiscaron;
+ sub u dieresiscaroncomb.cn by udieresiscaron;
+ #sub U dieresisgravecomb.cn by uni01DB;
+ sub U dieresisnosp gravecomb by Udieresisgrave;
+ sub u dieresisgravecomb.cn by udieresisgrave;
+ #sub A dieresismacroncomb.cn by uni01DE;
+ sub A dieresisnosp macroncomb by Adieresismacron;
+ sub a dieresismacroncomb.cn by adieresismacron;
+ #sub A dotmacroncomb.cn by uni01E0;
+ sub A dotnosp macroncomb by Adotmacron;
+ sub a dotmacroncomb.cn by adotmacron;
+ sub AE macroncomb by AEmacron;
+ sub ae macroncomb by aemacron;
+ sub G caroncmb by Gcaron;
+ sub g caroncmb by gcaron;
+ sub K caroncmb by Kcaron;
+ sub k caroncmb by kcaron;
+ sub O ogoneknosp by Oogonek;
+ sub o ogoneknosp by oogonek;
+ sub G acutecomb by Gacute;
+ sub g acutecomb by gacute;
+ sub N gravecomb by uni01F8;
+ sub n gravecomb by uni01F9;
+ sub A dblgravecmb by Adblgrave;
+ sub a dblgravecmb by adblgrave;
+ sub A breveinvnosp by Ainvertedbreve;
+ sub a breveinvnosp by ainvertedbreve;
+ sub E dblgravecmb by Edblgrave;
+ sub e dblgravecmb by edblgrave;
+ sub E breveinvnosp by Einvertedbreve;
+ sub e breveinvnosp by einvertedbreve;
+ sub I dblgravecmb by Idblgrave;
+ sub idotless dblgravecmb by idblgrave;
+ sub I breveinvnosp by Iinvertedbreve;
+ sub idotless breveinvnosp by iinvertedbreve;
+ sub O dblgravecmb by Odblgrave;
+ sub o dblgravecmb by odblgrave;
+ sub O breveinvnosp by Oinvertedbreve;
+ sub o breveinvnosp by oinvertedbreve;
+ sub R dblgravecmb by Rdblgrave;
+ sub r dblgravecmb by rdblgrave;
+ sub R breveinvnosp by Rinvertedbreve;
+ sub r breveinvnosp by rinvertedbreve;
+ sub U dblgravecmb by Udblgrave;
+ sub u dblgravecmb by udblgrave;
+ sub U breveinvnosp by Uinvertedbreve;
+ sub u breveinvnosp by uinvertedbreve;
+ sub H caroncmb by uni021E;
+ sub h caroncmb by uni021F;
+ sub A dotnosp by uni0226;
+ sub a dotnosp by uni0227;
+ sub E cedillanosp by uni0228;
+ sub e cedillanosp by uni0229;
+ #sub O dieresismacroncomb.cn by uni022A;
+ sub O dieresisnosp macroncomb by uni022A;
+ sub o dieresismacroncomb.cn by uni022B;
+ #sub O tildemacroncomb.cn by uni022C;
+ sub O tildecomb macroncomb by uni022C;
+ sub o tildemacroncomb.cn by uni022D;
+ sub O dotnosp by uni022E;
+ sub o dotnosp by uni022F;
+ #sub O dotmacroncomb.cn by uni0230;
+ sub O dotnosp macroncomb by uni0230;
+ sub o dotmacroncomb.cn by uni0231;
+ sub Y macroncomb by uni0232;
+ sub y macroncomb by uni0233;
+ sub Upsilonhooksymbol acutecomb by Upsilonacutehooksymbolgreek;
+ sub Upsilonhooksymbol dieresisnosp by Upsilondieresishooksymbolgreek;
+ sub B dotnosp by Bdotaccent;
+ sub b dotnosp by bdotaccent;
+ sub B dotbelow by Bdotbelow;
+ sub b dotbelow by bdotbelow;
+ sub B macronsubnosp by Blinebelow;
+ sub b macronsubnosp by blinebelow;
+ sub D dotnosp by Ddotaccent;
+ sub d dotnosp by ddotaccent;
+ sub D dotbelow by Ddotbelow;
+ sub d dotbelow by ddotbelow;
+ sub D macronsubnosp by Dlinebelow;
+ sub d macronsubnosp by dlinebelow;
+ sub D commaaccent by Dcedilla;
+ sub d commaaccent by dcedilla;
+ sub D circumflexsubnosp by Dcircumflexbelow;
+ sub d circumflexsubnosp by dcircumflexbelow;
+ #sub E macrongravecomb.cn by uni1E14;
+ sub E macroncomb gravecomb by Emacrongrave;
+ sub e macrongravecomb.cn by emacrongrave;
+ #sub E macronacutecomb.cn by uni1E16;
+ sub E macroncomb acutecomb by Emacronacute;
+ sub e macronacutecomb.cn by emacronacute;
+ sub E circumflexsubnosp by Ecircumflexbelow;
+ sub e circumflexsubnosp by ecircumflexbelow;
+ sub E tildesubnosp by Etildebelow;
+ sub e tildesubnosp by etildebelow;
+ sub F dotnosp by Fdotaccent;
+ sub f dotnosp by fdotaccent;
+ sub G macroncomb by Gmacron;
+ sub g macroncomb by gmacron;
+ sub H dotnosp by Hdotaccent;
+ sub h dotnosp by hdotaccent;
+ sub H dotbelow by Hdotbelow;
+ sub h dotbelow by hdotbelow;
+ sub H dieresisnosp by Hdieresis;
+ sub h dieresisnosp by hdieresis;
+ sub H brevesubnosp by Hbrevebelow;
+ sub h brevesubnosp by hbrevebelow;
+ sub I tildesubnosp by Itildebelow;
+ sub i tildesubnosp by itildebelow;
+ #sub I dieresisacutecomb.cn by Idieresisacute;
+ sub I dieresisnosp acutecomb by Idieresisacute;
+ sub idotless dieresisacutecomb.cn by idieresisacute;
+ sub K acutecomb by Kacute;
+ sub k acutecomb by kacute;
+ sub K dotbelow by Kdotbelow;
+ sub k dotbelow by kdotbelow;
+ sub K macronsubnosp by Klinebelow;
+ sub k macronsubnosp by klinebelow;
+ sub L dotbelow by Ldotbelow;
+ sub l dotbelow by ldotbelow;
+ sub L macronsubnosp by Llinebelow;
+ sub l macronsubnosp by llinebelow;
+ sub L circumflexsubnosp by Lcircumflexbelow;
+ sub l circumflexsubnosp by lcircumflexbelow;
+ sub M acutecomb by Macute;
+ sub m acutecomb by macute;
+ sub M dotnosp by Mdotaccent;
+ sub m dotnosp by mdotaccent;
+ sub M dotbelow by Mdotbelow;
+ sub m dotbelow by mdotbelow;
+ sub N dotnosp by Ndotaccent;
+ sub n dotnosp by ndotaccent;
+ sub N dotbelow by Ndotbelow;
+ sub n dotbelow by ndotbelow;
+ sub N macronsubnosp by Nlinebelow;
+ sub n macronsubnosp by nlinebelow;
+ sub N circumflexsubnosp by Ncircumflexbelow;
+ sub n circumflexsubnosp by ncircumflexbelow;
+ #sub O tildeacutecomb.cn by uni1E4C;
+ sub O tildecomb acutecomb by Otildeacute;
+ sub o tildeacutecomb by otildeacute;
+ #sub O tildedieresiscomb.cn by uni1E4E;
+ sub O tildecomb dieresisnosp by Otildedieresis;
+ sub o tildedieresiscomb.cn by otildedieresis;
+ #sub O macrongravecomb.cn by uni1E50;
+ sub O macroncomb gravecomb by Omacrongrave;
+ sub o macrongravecomb.cn by omacrongrave;
+ #sub O macronacutecomb.cn by uni1E52;
+ sub O macroncomb acutecomb by Omacronacute;
+ sub o macronacutecomb.cn by omacronacute;
+ sub P acutecomb by Pacute;
+ sub p acutecomb by pacute;
+ sub P dotnosp by Pdotaccent;
+ sub p dotnosp by pdotaccent;
+ sub R dotnosp by Rdotaccent;
+ sub r dotnosp by rdotaccent;
+ sub R dotbelow by Rdotbelow;
+ sub r dotbelow by rdotbelow;
+ sub R macronsubnosp by Rlinebelow;
+ sub r macronsubnosp by rlinebelow;
+ sub S dotnosp by Sdotaccent;
+ sub s dotnosp by sdotaccent;
+ sub S dotbelow by Sdotbelow;
+ sub s dotbelow by sdotbelow;
+ #sub S acutedotcomb.cn by uni1E64;
+ sub S acutecomb dotnosp by Sacutedotaccent;
+ sub s acutedotcomb.cn by sacutedotaccent;
+ #sub S carondotcomb.cn by uni1E66;
+ sub S caroncmb dotnosp by Scarondotaccent;
+ sub s carondotcomb.cn by scarondotaccent;
+ sub T dotnosp by Tdotaccent;
+ sub t dotnosp by tdotaccent;
+ sub T dotbelow by Tdotbelow;
+ sub t dotbelow by tdotbelow;
+ sub T macronsubnosp by Tlinebelow;
+ sub t macronsubnosp by tlinebelow;
+ sub T circumflexsubnosp by Tcircumflexbelow;
+ sub t circumflexsubnosp by tcircumflexbelow;
+ sub U dotdblsubnosp by Udieresisbelow;
+ sub u dotdblsubnosp by udieresisbelow;
+ sub U tildesubnosp by Utildebelow;
+ sub u tildesubnosp by utildebelow;
+ sub U circumflexsubnosp by Ucircumflexbelow;
+ sub u circumflexsubnosp by ucircumflexbelow;
+ #sub U tildeacutecomb.cn by uni1E78;
+ sub U tildecomb acutecomb by Utildeacute;
+ sub u tildeacutecomb by utildeacute;
+ #sub U macrondieresiscomb.cn by uni1E7A;
+ sub U macroncomb dieresisnosp by Umacrondieresis;
+ sub u macrondieresiscomb.cn by umacrondieresis;
+ sub V tildecomb by Vtilde;
+ sub v tildecomb by vtilde;
+ sub V dotbelow by Vdotbelow;
+ sub v dotbelow by vdotbelow;
+ sub W dotnosp by Wdotaccent;
+ sub w dotnosp by wdotaccent;
+ sub W dotbelow by Wdotbelow;
+ sub w dotbelow by wdotbelow;
+ sub X dotnosp by Xdotaccent;
+ sub x dotnosp by xdotaccent;
+ sub X dieresisnosp by Xdieresis;
+ sub x dieresisnosp by xdieresis;
+ sub Y dotnosp by Ydotaccent;
+ sub y dotnosp by ydotaccent;
+ sub Z circumflexnosp by Zcircumflex;
+ sub z circumflexnosp by zcircumflex;
+ sub Z dotbelow by Zdotbelow;
+ sub z dotbelow by zdotbelow;
+ sub Z macronsubnosp by Zlinebelow;
+ sub z macronsubnosp by zlinebelow;
+ sub h macronsubnosp by hlinebelow;
+ sub t dieresisnosp by tdieresis;
+ sub w ringnosp by wring;
+ sub y ringnosp by yring;
+ sub longs dotnosp by slongdotaccent;
+ sub A ringsubnosp by Aringbelow;
+ sub a ringsubnosp by aringbelow;
+} ccmp03;
diff --git a/src/features/cpsp.fea b/src/features/cpsp.fea
new file mode 100644
index 000000000..588933627
--- /dev/null
+++ b/src/features/cpsp.fea
@@ -0,0 +1 @@
+pos @Uppercase <16 0 32 0>;
diff --git a/src/features/cv01-one.fea b/src/features/cv01-one.fea
new file mode 100644
index 000000000..860915d97
--- /dev/null
+++ b/src/features/cv01-one.fea
@@ -0,0 +1,5 @@
+cvParameters { FeatUILabelNameID { name "Alternate one"; }; };
+sub one by one.ss01;
+sub one.tf by one.tf.ss01;
+sub one.squared by one.ss01.squared;
+sub one.circled by one.ss01.circled;
diff --git a/src/features/cv02-four.fea b/src/features/cv02-four.fea
new file mode 100644
index 000000000..6e2b3bd71
--- /dev/null
+++ b/src/features/cv02-four.fea
@@ -0,0 +1,5 @@
+cvParameters { FeatUILabelNameID { name "Open four"; }; };
+sub four by four.ss01;
+sub four.tf by four.tf.ss01;
+sub four.squared by four.ss01.squared;
+sub four.circled by four.ss01.circled;
diff --git a/src/features/cv03-six.fea b/src/features/cv03-six.fea
new file mode 100644
index 000000000..1e26b2e2e
--- /dev/null
+++ b/src/features/cv03-six.fea
@@ -0,0 +1,5 @@
+cvParameters { FeatUILabelNameID { name "Open six"; }; };
+sub six by six.ss01;
+sub six.tf by six.tf.ss01;
+sub six.squared by six.ss01.squared;
+sub six.circled by six.ss01.circled;
diff --git a/src/features/cv04-nine.fea b/src/features/cv04-nine.fea
new file mode 100644
index 000000000..f24b3352e
--- /dev/null
+++ b/src/features/cv04-nine.fea
@@ -0,0 +1,5 @@
+cvParameters { FeatUILabelNameID { name "Open nine"; }; };
+sub nine by nine.ss01;
+sub nine.tf by nine.tf.ss01;
+sub nine.squared by nine.ss01.squared;
+sub nine.circled by nine.ss01.circled;
diff --git a/src/features/cv05-l-tail.fea b/src/features/cv05-l-tail.fea
new file mode 100644
index 000000000..38da8fcdd
--- /dev/null
+++ b/src/features/cv05-l-tail.fea
@@ -0,0 +1,14 @@
+cvParameters { FeatUILabelNameID { name "Lower-case L with tail"; }; };
+sub l by l.ss02;
+sub lslash by lslash.ss02;
+sub lbar by lbar.ss02;
+sub lmidtilde by lmidtilde.ss02;
+sub lbelt by lbelt.ss02;
+sub ldot by ldot.ss02;
+sub lacute by lacute.ss02;
+sub lcommaaccent by lcommaaccent.ss02;
+sub lcaron by lcaron.ss02;
+sub ldotbelow by ldotbelow.ss02;
+sub ldotbelowmacron by ldotbelowmacron.ss02;
+sub llinebelow by llinebelow.ss02;
+sub lcircumflexbelow by lcircumflexbelow.ss02;
diff --git a/src/features/cv06-r.fea b/src/features/cv06-r.fea
new file mode 100644
index 000000000..752a642bc
--- /dev/null
+++ b/src/features/cv06-r.fea
@@ -0,0 +1,14 @@
+cvParameters { FeatUILabelNameID { name "Lower case R with curved tail"; }; };
+sub r by r.1;
+sub rrthook by rrthook.1;
+sub uni024D by uni024D.1;
+sub rdescend by rdescend.1;
+sub racute by racute.1;
+sub rcommaaccent by rcommaaccent.1;
+sub rcaron by rcaron.1;
+sub rdblgrave by rdblgrave.1;
+sub rinvertedbreve by rinvertedbreve.1;
+sub rdotaccent by rdotaccent.1;
+sub rdotbelow by rdotbelow.1;
+sub rdotbelowmacron by rdotbelowmacron.1;
+sub rlinebelow by rlinebelow.1;
diff --git a/src/features/cv07-germandbls.fea b/src/features/cv07-germandbls.fea
new file mode 100644
index 000000000..64556ae2d
--- /dev/null
+++ b/src/features/cv07-germandbls.fea
@@ -0,0 +1,2 @@
+cvParameters { FeatUILabelNameID { name "Alternate German double s"; }; };
+sub germandbls by germandbls.1;
diff --git a/src/features/cv08-i-serif.fea b/src/features/cv08-i-serif.fea
new file mode 100644
index 000000000..0d7835346
--- /dev/null
+++ b/src/features/cv08-i-serif.fea
@@ -0,0 +1,33 @@
+cvParameters { FeatUILabelNameID { name "Upper case i with serif"; }; };
+sub I by I.1;
+sub Idieresis by Idieresis.1;
+sub Idieresisacute by Idieresisacute.1;
+sub Istroke by Istroke.1;
+sub Itildebelow by Itildebelow.1;
+sub Igrave by Igrave.1;
+sub Iacute by Iacute.1;
+sub Icircumflex by Icircumflex.1;
+sub Itilde by Itilde.1;
+sub Imacron by Imacron.1;
+sub Ibreve by Ibreve.1;
+sub Iogonek by Iogonek.1;
+sub Idotaccent by Idotaccent.1;
+sub Icaron by Icaron.1;
+sub Idblgrave by Idblgrave.1;
+sub Iinvertedbreve by Iinvertedbreve.1;
+sub Ihookabove by Ihookabove.1;
+sub Idotbelow by Idotbelow.1;
+sub uni1F38 by uni1F38.1;
+sub uni1F39 by uni1F39.1;
+sub uni1F3A by uni1F3A.1;
+sub uni1F3B by uni1F3B.1;
+sub uni1F3C by uni1F3C.1;
+sub uni1F3D by uni1F3D.1;
+sub uni1F3E by uni1F3E.1;
+sub uni1F3F by uni1F3F.1;
+sub uni1FD8 by uni1FD8.1;
+sub uni1FD9 by uni1FD9.1;
+sub uni1FDA by uni1FDA.1;
+sub uni1FDB by uni1FDB.1;
+sub afii10055 by afii10055.1;
+sub afii10056 by afii10056.1;
diff --git a/src/features/cv09-three.fea b/src/features/cv09-three.fea
new file mode 100644
index 000000000..448a561b7
--- /dev/null
+++ b/src/features/cv09-three.fea
@@ -0,0 +1,5 @@
+cvParameters { FeatUILabelNameID { name "Flat top three"; }; };
+sub three by three.1;
+sub three.tf by three.1.tf;
+sub three.squared by three.1.squared;
+sub three.circled by three.1.circled;
diff --git a/src/features/cv10-g-spur.fea b/src/features/cv10-g-spur.fea
new file mode 100644
index 000000000..58f51ab2d
--- /dev/null
+++ b/src/features/cv10-g-spur.fea
@@ -0,0 +1,11 @@
+cvParameters { FeatUILabelNameID { name "Captital G with spur"; }; };
+sub G by G.1;
+sub Gbar by Gbar.1;
+sub Ghook by Ghook.1;
+sub Gcircumflex by Gcircumflex.1;
+sub Gbreve by Gbreve.1;
+sub Gdotaccent by Gdotaccent.1;
+sub Gcommaaccent by Gcommaaccent.1;
+sub Gcaron by Gcaron.1;
+sub Gacute by Gacute.1;
+sub Gmacron by Gmacron.1;
diff --git a/src/features/cv11-single-storey-a.fea b/src/features/cv11-single-storey-a.fea
new file mode 100644
index 000000000..941f2f540
--- /dev/null
+++ b/src/features/cv11-single-storey-a.fea
@@ -0,0 +1,33 @@
+cvParameters { FeatUILabelNameID { name "Single storey a"; }; };
+sub a by a.1;
+sub aacute by aacute.1;
+sub abreve by abreve.1;
+sub abreveacute by abreveacute.1;
+sub abrevedotbelow by abrevedotbelow.1;
+sub abrevegrave by abrevegrave.1;
+sub abrevehookabove by abrevehookabove.1;
+sub abrevetilde by abrevetilde.1;
+sub acaron by acaron.1;
+sub acircumflex by acircumflex.1;
+sub acircumflexacute by acircumflexacute.1;
+sub acircumflexdotbelow by acircumflexdotbelow.1;
+sub acircumflexgrave by acircumflexgrave.1;
+sub acircumflexhookabove by acircumflexhookabove.1;
+sub acircumflextilde by acircumflextilde.1;
+sub adblgrave by adblgrave.1;
+sub adieresis by adieresis.1;
+sub adieresismacron by adieresismacron.1;
+sub uni0227 by uni0227.1;
+sub adotbelow by adotbelow.1;
+sub adotmacron by adotmacron.1;
+sub agrave by agrave.1;
+sub ahookabove by ahookabove.1;
+sub ainvertedbreve by ainvertedbreve.1;
+sub amacron by amacron.1;
+sub aogonek by aogonek.1;
+sub arighthalfring by arighthalfring.1;
+sub aring by aring.1;
+sub aringacute by aringacute.1;
+sub aringbelow by aringbelow.1;
+sub atilde by atilde.1;
+sub acyrillic by a.1; # acyrillic is just a reference to /a
diff --git a/src/features/dlig.fea b/src/features/dlig.fea
new file mode 100644
index 000000000..cfaa67c56
--- /dev/null
+++ b/src/features/dlig.fea
@@ -0,0 +1,4 @@
+sub exclam question by interrobang;
+sub question exclam by interrobang;
+sub exclamdown questiondown by invertedinterrobang;
+sub questiondown exclamdown by invertedinterrobang;
diff --git a/src/features/frac.fea b/src/features/frac.fea
new file mode 100644
index 000000000..6aad1f76a
--- /dev/null
+++ b/src/features/frac.fea
@@ -0,0 +1,198 @@
+@figures = [
+ zero
+ one
+ two
+ three
+ four
+ five
+ six
+ seven
+ eight
+ nine
+];
+@numerators = [
+ zero.frac
+ one.frac
+ two.frac
+ three.frac
+ four.frac
+ five.frac
+ six.frac
+ seven.frac
+ eight.frac
+ nine.frac
+];
+@numerators2 = [
+ zero.numr
+ one.numr
+ two.numr
+ three.numr
+ four.numr
+ five.numr
+ six.numr
+ seven.numr
+ eight.numr
+ nine.numr
+];
+@denominators = [
+ zero.dnomf
+ one.dnomf
+ two.dnomf
+ three.dnomf
+ four.dnomf
+ five.dnomf
+ six.dnomf
+ seven.dnomf
+ eight.dnomf
+ nine.dnomf
+];
+@denominators2 = [
+ zero.dnom
+ one.dnom
+ two.dnom
+ three.dnom
+ four.dnom
+ five.dnom
+ six.dnom
+ seven.dnom
+ eight.dnom
+ nine.dnom
+];
+@subscripts = [
+ zero.subs
+ one.subs
+ two.subs
+ three.subs
+ four.subs
+ five.subs
+ six.subs
+ seven.subs
+ eight.subs
+ nine.subs
+];
+
+lookup FractionBar {
+ ignore sub slash @figures @figures @figures @figures @figures @figures @figures @figures @figures @figures slash';
+ ignore sub slash' @figures @figures @figures @figures @figures @figures @figures @figures @figures @figures slash;
+ ignore sub slash @figures @figures @figures @figures @figures @figures @figures @figures @figures slash';
+ ignore sub slash' @figures @figures @figures @figures @figures @figures @figures @figures @figures slash;
+ ignore sub slash @figures @figures @figures @figures @figures @figures @figures @figures slash';
+ ignore sub slash' @figures @figures @figures @figures @figures @figures @figures @figures slash;
+ ignore sub slash @figures @figures @figures @figures @figures @figures @figures slash';
+ ignore sub slash' @figures @figures @figures @figures @figures @figures @figures slash;
+ ignore sub slash @figures @figures @figures @figures @figures @figures slash';
+ ignore sub slash' @figures @figures @figures @figures @figures @figures slash;
+ ignore sub slash @figures @figures @figures @figures @figures slash';
+ ignore sub slash' @figures @figures @figures @figures @figures slash;
+ ignore sub slash @figures @figures @figures @figures slash';
+ ignore sub slash' @figures @figures @figures @figures slash;
+ ignore sub slash @figures @figures @figures slash';
+ ignore sub slash' @figures @figures @figures slash;
+ ignore sub slash @figures @figures slash';
+ ignore sub slash' @figures @figures slash;
+ ignore sub slash @figures slash';
+ ignore sub slash' @figures slash;
+ sub @figures slash' @figures by fraction;
+} FractionBar;
+
+lookup Numerator1 {
+ sub @figures'
+ fraction by @numerators;
+} Numerator1;
+
+lookup Numerator2 {
+ sub @figures'
+ [@numerators @numerators2]
+ fraction by @numerators;
+} Numerator2;
+
+lookup Numerator3 {
+ sub @figures'
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ fraction by @numerators;
+} Numerator3;
+
+lookup Numerator4 {
+ sub @figures'
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ fraction by @numerators;
+} Numerator4;
+
+lookup Numerator5 {
+ sub @figures'
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ fraction by @numerators;
+} Numerator5;
+
+lookup Numerator6 {
+ sub @figures'
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ fraction by @numerators;
+} Numerator6;
+
+lookup Numerator7 {
+ sub @figures'
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ fraction by @numerators;
+} Numerator7;
+
+lookup Numerator8 {
+ sub @figures'
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ fraction by @numerators;
+} Numerator8;
+
+lookup Numerator9 {
+ sub @figures'
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ fraction by @numerators;
+} Numerator9;
+
+lookup Numerator10 {
+ sub @figures'
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ [@numerators @numerators2]
+ fraction by @numerators;
+} Numerator10;
+
+lookup Denominator {
+ sub [fraction @denominators @denominators2 onefraction] @figures' by @denominators;
+ sub [fraction @denominators @denominators2 onefraction] @subscripts' by @denominators;
+} Denominator;
+
+sub @figures space' [@numerators @numerators2] by thinspace;
diff --git a/src/features/liga.fea b/src/features/liga.fea
new file mode 100644
index 000000000..863ce2ba6
--- /dev/null
+++ b/src/features/liga.fea
@@ -0,0 +1,282 @@
+@DASH = [
+ hyphen
+ endash
+ emdash
+];
+@DASH_CASE = [
+ hyphen.case
+ endash.case
+ emdash.case
+];
+
+# ->
+sub hyphen greater by rightArrow;
+sub [endash emdash] greater by rightLongArrow; # legacy
+sub @DASH @DASH greater by rightLongArrow;
+sub @DASH @DASH @DASH greater by rightLongArrow2;
+# <-
+sub less @DASH @DASH by leftLongArrow;
+sub less @DASH @DASH @DASH by leftLongArrow2;
+ignore sub less' hyphen' @Numeral; # ignore e.g. "<-3" ("less than negative")
+sub less' hyphen' by leftArrow;
+sub less [endash emdash] by leftLongArrow; # legacy
+# <->
+sub less rightArrow by leftRightArrow; # <,->
+sub leftArrow greater by leftRightArrow; # <-,-
+sub less rightLongArrow by leftRightLongArrow; # <,-->
+sub leftLongArrow greater by leftRightLongArrow; # <--,>
+
+# x surrounded by numbers, e.g. 3x4 -> 3×4
+sub @Numeral x' @Numeral by multiply; # 3x9
+sub @Numeral @Whitespace x' @Numeral by multiply; # 3 x9
+sub @Numeral @Whitespace @Whitespace x' @Numeral by multiply; # 3 x9
+sub @Numeral x' @Whitespace @Numeral by multiply; # 3x 9
+sub @Numeral @Whitespace x' @Whitespace @Numeral by multiply; # 3 x 9
+sub @Numeral @Whitespace @Whitespace x' @Whitespace @Numeral by multiply; # 3 x 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 @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/salt.fea b/src/features/salt.fea
new file mode 100644
index 000000000..2d3fc9621
--- /dev/null
+++ b/src/features/salt.fea
@@ -0,0 +1,81 @@
+sub one by one.ss01;
+sub one.tf by one.tf.ss01;
+sub three by three.1;
+sub three.tf by three.1.tf;
+sub four by four.ss01;
+sub four.tf by four.tf.ss01;
+sub six by six.ss01;
+sub six.tf by six.tf.ss01;
+sub nine by nine.ss01;
+sub nine.tf by nine.tf.ss01;
+
+sub a by a.1;
+sub aacute by aacute.1;
+sub abreve by abreve.1;
+sub abreveacute by abreveacute.1;
+sub abrevedotbelow by abrevedotbelow.1;
+sub abrevegrave by abrevegrave.1;
+sub abrevehookabove by abrevehookabove.1;
+sub abrevetilde by abrevetilde.1;
+sub acaron by acaron.1;
+sub acircumflex by acircumflex.1;
+sub acircumflexacute by acircumflexacute.1;
+sub acircumflexdotbelow by acircumflexdotbelow.1;
+sub acircumflexgrave by acircumflexgrave.1;
+sub acircumflexhookabove by acircumflexhookabove.1;
+sub acircumflextilde by acircumflextilde.1;
+sub adblgrave by adblgrave.1;
+sub adieresis by adieresis.1;
+sub adieresismacron by adieresismacron.1;
+sub uni0227 by uni0227.1;
+sub adotbelow by adotbelow.1;
+sub adotmacron by adotmacron.1;
+sub agrave by agrave.1;
+sub ahookabove by ahookabove.1;
+sub ainvertedbreve by ainvertedbreve.1;
+sub amacron by amacron.1;
+sub aogonek by aogonek.1;
+sub arighthalfring by arighthalfring.1;
+sub aring by aring.1;
+sub aringacute by aringacute.1;
+sub aringbelow by aringbelow.1;
+sub atilde by atilde.1;
+
+sub l by l.ss02;
+sub lslash by lslash.ss02;
+sub lbar by lbar.ss02;
+sub lmidtilde by lmidtilde.ss02;
+sub lbelt by lbelt.ss02;
+sub ldot by ldot.ss02;
+sub lacute by lacute.ss02;
+sub lcommaaccent by lcommaaccent.ss02;
+sub lcaron by lcaron.ss02;
+sub ldotbelow by ldotbelow.ss02;
+sub ldotbelowmacron by ldotbelowmacron.ss02;
+sub llinebelow by llinebelow.ss02;
+sub lcircumflexbelow by lcircumflexbelow.ss02;
+
+sub r by r.1;
+sub rrthook by rrthook.1;
+sub uni024D by uni024D.1;
+sub rdescend by rdescend.1;
+sub racute by racute.1;
+sub rcommaaccent by rcommaaccent.1;
+sub rcaron by rcaron.1;
+sub rdblgrave by rdblgrave.1;
+sub rinvertedbreve by rinvertedbreve.1;
+sub rdotaccent by rdotaccent.1;
+sub rdotbelow by rdotbelow.1;
+sub rdotbelowmacron by rdotbelowmacron.1;
+sub rlinebelow by rlinebelow.1;
+
+sub G by G.1;
+sub Gbar by Gbar.1;
+sub Ghook by Ghook.1;
+sub Gcircumflex by Gcircumflex.1;
+sub Gbreve by Gbreve.1;
+sub Gdotaccent by Gdotaccent.1;
+sub Gcommaaccent by Gcommaaccent.1;
+sub Gcaron by Gcaron.1;
+sub Gacute by Gacute.1;
+sub Gmacron by Gmacron.1;
diff --git a/src/features/ss01-alt-digits.fea b/src/features/ss01-alt-digits.fea
new file mode 100644
index 000000000..54cf36599
--- /dev/null
+++ b/src/features/ss01-alt-digits.fea
@@ -0,0 +1,21 @@
+featureNames { name "Alternate digits"; };
+sub one by one.ss01;
+sub one.tf by one.tf.ss01;
+sub one.squared by one.ss01.squared;
+sub one.circled by one.ss01.circled;
+sub three by three.1;
+sub three.tf by three.1.tf;
+sub three.squared by three.1.squared;
+sub three.circled by three.1.circled;
+sub four by four.ss01;
+sub four.tf by four.tf.ss01;
+sub four.squared by four.ss01.squared;
+sub four.circled by four.ss01.circled;
+sub six by six.ss01;
+sub six.tf by six.tf.ss01;
+sub six.squared by six.ss01.squared;
+sub six.circled by six.ss01.circled;
+sub nine by nine.ss01;
+sub nine.tf by nine.tf.ss01;
+sub nine.squared by nine.ss01.squared;
+sub nine.circled by nine.ss01.circled;
diff --git a/src/features/ss02-disambiguation.fea b/src/features/ss02-disambiguation.fea
new file mode 100644
index 000000000..86a554807
--- /dev/null
+++ b/src/features/ss02-disambiguation.fea
@@ -0,0 +1,51 @@
+featureNames { name "Disambiguation"; };
+sub l by l.ss02;
+sub lslash by lslash.ss02;
+sub lbar by lbar.ss02;
+sub lmidtilde by lmidtilde.ss02;
+sub lbelt by lbelt.ss02;
+sub ldot by ldot.ss02;
+sub lacute by lacute.ss02;
+sub lcommaaccent by lcommaaccent.ss02;
+sub lcaron by lcaron.ss02;
+sub ldotbelow by ldotbelow.ss02;
+sub ldotbelowmacron by ldotbelowmacron.ss02;
+sub llinebelow by llinebelow.ss02;
+sub lcircumflexbelow by lcircumflexbelow.ss02;
+sub zero by zero.slash;
+sub zero.tf by zero.tf.slash;
+sub zero.squared by zero.slash.squared;
+sub zero.circled by zero.slash.circled;
+sub germandbls by germandbls.1;
+sub I by I.1;
+sub Idieresis by Idieresis.1;
+sub Idieresisacute by Idieresisacute.1;
+sub Istroke by Istroke.1;
+sub Itildebelow by Itildebelow.1;
+sub Igrave by Igrave.1;
+sub Iacute by Iacute.1;
+sub Icircumflex by Icircumflex.1;
+sub Itilde by Itilde.1;
+sub Imacron by Imacron.1;
+sub Ibreve by Ibreve.1;
+sub Iogonek by Iogonek.1;
+sub Idotaccent by Idotaccent.1;
+sub Icaron by Icaron.1;
+sub Idblgrave by Idblgrave.1;
+sub Iinvertedbreve by Iinvertedbreve.1;
+sub Ihookabove by Ihookabove.1;
+sub Idotbelow by Idotbelow.1;
+sub uni1F38 by uni1F38.1;
+sub uni1F39 by uni1F39.1;
+sub uni1F3A by uni1F3A.1;
+sub uni1F3B by uni1F3B.1;
+sub uni1F3C by uni1F3C.1;
+sub uni1F3D by uni1F3D.1;
+sub uni1F3E by uni1F3E.1;
+sub uni1F3F by uni1F3F.1;
+sub uni1FD8 by uni1FD8.1;
+sub uni1FD9 by uni1FD9.1;
+sub uni1FDA by uni1FDA.1;
+sub uni1FDB by uni1FDB.1;
+sub afii10055 by afii10055.1;
+sub afii10056 by afii10056.1;
diff --git a/src/features/ss03-r-curve.fea b/src/features/ss03-r-curve.fea
new file mode 100644
index 000000000..fe42872dc
--- /dev/null
+++ b/src/features/ss03-r-curve.fea
@@ -0,0 +1,332 @@
+featureNames { name "Lower case r curves into round neighbors"; };
+# curved "r" when it meets a curved shape, e.g. "ro"
+@straight_r = [
+ r
+ rrthook
+ uni024D
+ rdescend
+ racute
+ rcommaaccent
+ rcaron
+ rdblgrave
+ rinvertedbreve
+ rdotaccent
+ rdotbelow
+ rdotbelowmacron
+ rlinebelow
+];
+@curved_r = [
+ r.1
+ rrthook.1
+ uni024D.1
+ rdescend.1
+ racute.1
+ rcommaaccent.1
+ rcaron.1
+ rdblgrave.1
+ rinvertedbreve.1
+ rdotaccent.1
+ rdotbelow.1
+ rdotbelowmacron.1
+ rlinebelow.1
+];
+
+# lower case-sized glyphs where the left side is curved, like "o"
+@lc_left_side_curved = [
+ a
+ adieresis
+ atilde
+ arighthalfring
+ agrave
+ aacute
+ acircumflex
+ aring
+ amacron
+ abreve
+ aogonek
+ acaron
+ adieresismacron
+ adotmacron
+ aringacute
+ adblgrave
+ ainvertedbreve
+ uni0227
+ aringbelow
+ adotbelow
+ ahookabove
+ acircumflexacute
+ acircumflexgrave
+ acircumflexhookabove
+ acircumflextilde
+ acircumflexdotbelow
+ abreveacute
+ abrevegrave
+ abrevehookabove
+ abrevetilde
+ abrevedotbelow
+ acyrillic
+ abrevecyrillic
+ adieresiscyrillic
+ ae
+ aemacron
+ aeacute
+ aiecyrillic
+ c
+ uni023C
+ chook
+ ccurl
+ ccedilla
+ cacute
+ ccircumflex
+ cdotaccent
+ ccaron
+ ccedillaacute
+ sigmalunatesymbolgreek
+ escyrillic
+ d
+ dcroat
+ drthook
+ dhook
+ dtopbar
+ uni0221
+ dcaron
+ ddotaccent
+ ddotbelow
+ dlinebelow
+ dcedilla
+ dcircumflexbelow
+ dz
+ dzcaron
+ dzcurl
+ dyogh
+ dong
+ e
+ edieresis
+ uni0247
+ egrave
+ eacute
+ ecircumflex
+ emacron
+ ebreve
+ edotaccent
+ eogonek
+ ecaron
+ edblgrave
+ einvertedbreve
+ uni0229
+ emacrongrave
+ emacronacute
+ ecircumflexbelow
+ etildebelow
+ ecedillabreve
+ edotbelow
+ ehookabove
+ etilde
+ ecircumflexacute
+ ecircumflexgrave
+ ecircumflexhookabove
+ ecircumflextilde
+ ecircumflexdotbelow
+ iecyrillic
+ uni0450
+ iocyrillic
+ iebrevecyrillic
+ eturn
+ g
+ ghook
+ gbar
+ gcircumflex
+ gbreve
+ gdotaccent
+ gcommaaccent
+ gcaron
+ gacute
+ gmacron
+ o
+ odieresis
+ otilde
+ oslash
+ ohorn
+ ograve
+ oacute
+ ocircumflex
+ omacron
+ obreve
+ ohungarumlaut
+ ocaron
+ oogonek
+ oogonekmacron
+ odblgrave
+ oinvertedbreve
+ uni022B
+ uni022D
+ uni022F
+ uni0231
+ otildeacute
+ otildedieresis
+ omacrongrave
+ omacronacute
+ odotbelow
+ ohookabove
+ ocircumflexacute
+ ocircumflexgrave
+ ocircumflexhookabove
+ ocircumflextilde
+ ocircumflexdotbelow
+ ohornacute
+ ohorngrave
+ ohornhookabove
+ ohorntilde
+ ohorndotbelow
+ oslashacute
+ omicron
+ omicrontonos
+ uni1F40
+ uni1F41
+ uni1F42
+ uni1F43
+ uni1F44
+ uni1F45
+ uni1F78
+ fitacyrillic
+ obar
+ ocyrillic
+ odieresiscyrillic
+ oe
+ ukcyrillic
+ q
+ qhook
+ qrthook
+ s
+ srthook
+ uni023F
+ sacute
+ scircumflex
+ scedilla
+ scaron
+ scommaaccent
+ sdotaccent
+ sdotbelow
+ sacutedotaccent
+ scarondotaccent
+ sdotbelowdotaccent
+ dzecyrillic
+ tonetwo
+ eth
+ alpha
+ alphatonos
+ uni1F00
+ uni1F01
+ uni1F02
+ uni1F03
+ uni1F04
+ uni1F05
+ uni1F06
+ uni1F07
+ uni1F70
+ uni1F80
+ uni1F81
+ uni1F82
+ uni1F83
+ uni1F84
+ uni1F85
+ uni1F86
+ uni1F87
+ uni1FB0
+ uni1FB1
+ uni1FB2
+ uni1FB3
+ uni1FB4
+ uni1FB6
+ uni1FB7
+ delta
+ epsilon
+ epsilontonos
+ epsilonclosed
+ epsilon1
+ epsilon1rev
+ epsilon1revclosed
+ epsilon1revhook
+ uni1F10
+ uni1F11
+ uni1F12
+ uni1F13
+ uni1F14
+ uni1F15
+ uni1F72
+ rho
+ uni1FE4
+ uni1FE5
+ uni03FC
+ sigma1
+ sigma
+ phi
+ phigreek
+ omega
+ omegatonos
+ uni1F60
+ uni1F61
+ uni1F62
+ uni1F63
+ uni1F64
+ uni1F65
+ uni1F66
+ uni1F67
+ uni1F7C
+ uni1FA0
+ uni1FA1
+ uni1FA2
+ uni1FA3
+ uni1FA4
+ uni1FA5
+ uni1FA6
+ uni1FA7
+ uni1FF2
+ uni1FF3
+ uni1FF4
+ uni1FF6
+ uni1FF7
+ zecyrillic
+ efcyrillic
+ ereversedcyrillic
+ iacyrillic
+ ecyrillic
+ haabkhasiancyrillic
+ cent
+ manat
+ six.ss01
+ ascript
+ ascript_uni02DE
+ erev
+ schwa
+ schwahook
+ oopen
+ uni0238
+ uni0239
+ uni2184
+ aogonek.NAV
+ eogonek.NAV
+ oogonek.NAV
+ zedescendercyrillic
+ esdescendercyrillic
+ schwacyrillic
+ schwadieresiscyrillic
+ zedieresiscyrillic
+ obarredcyrillic
+ obarreddieresiscyrillic
+ uni04ED
+ koppacyrillic
+ uni037B
+ uni037C
+ uni037D
+ uni03D9
+ stigma
+ rho1
+ uni1F71
+ uni1F73
+ uni1F79
+ uni217D
+ uni217E
+];
+
+sub @straight_r' @lc_left_side_curved by @curved_r;
diff --git a/src/features/subs.fea b/src/features/subs.fea
new file mode 100644
index 000000000..7bba3e434
--- /dev/null
+++ b/src/features/subs.fea
@@ -0,0 +1,43 @@
+sub a by a.subs;
+sub b by b.subs;
+sub c by c.subs;
+sub d by d.subs;
+sub e by e.subs;
+sub f by f.subs;
+sub g by g.subs;
+sub h by h.subs;
+sub i by i.subs;
+sub j by j.subs;
+sub k by k.subs;
+sub [l l.ss02] by l.subs;
+sub m by m.subs;
+sub n by n.subs;
+sub o by o.subs;
+sub p by p.subs;
+sub q by q.subs;
+sub [r r.1] by r.subs;
+sub s by s.subs;
+sub t by t.subs;
+sub u by u.subs;
+sub v by v.subs;
+sub w by w.subs;
+sub x by x.subs;
+sub y by y.subs;
+sub z by z.subs;
+sub [zero zero.slash zero.tf zero.tf.slash] by zero.subs;
+sub [one one.ss01 one.tf one.tf.ss01] by one.subs;
+sub [two two.tf] by two.subs;
+sub [three three.1 three.tf three.1.tf] by three.subs;
+sub [four four.ss01 four.tf four.tf.ss01] by four.subs;
+sub [five five.tf] by five.subs;
+sub [six six.ss01 six.tf six.tf.ss01] by six.subs;
+sub [seven seven.tf] by seven.subs;
+sub [eight eight.tf] by eight.subs;
+sub [nine nine.ss01 nine.tf nine.tf.ss01] by nine.subs;
+sub [parenleft parenleft.case] by parenleft.subs;
+sub [parenright parenright.case] by parenright.subs;
+sub [bracketleft bracketleft.case] by bracketleft.subs;
+sub [bracketright bracketright.case] by bracketright.subs;
+sub [plus plus.case] by plus.subs;
+sub [minus minus.case hyphen hyphen.case] by minus.subs;
+sub [equal equal.case] by equal.subs;
diff --git a/src/features/sups.fea b/src/features/sups.fea
new file mode 100644
index 000000000..3396dba1b
--- /dev/null
+++ b/src/features/sups.fea
@@ -0,0 +1,43 @@
+sub a by a.sups;
+sub b by b.sups;
+sub c by c.sups;
+sub d by d.sups;
+sub e by e.sups;
+sub f by f.sups;
+sub g by g.sups;
+sub h by h.sups;
+sub i by i.sups;
+sub j by j.sups;
+sub k by k.sups;
+sub [l l.ss02] by l.sups;
+sub m by m.sups;
+sub n by n.sups;
+sub o by o.sups;
+sub p by p.sups;
+sub q by q.sups;
+sub [r r.1] by r.sups;
+sub s by s.sups;
+sub t by t.sups;
+sub u by u.sups;
+sub v by v.sups;
+sub w by w.sups;
+sub x by x.sups;
+sub y by y.sups;
+sub z by z.sups;
+sub [zero zero.slash zero.tf zero.tf.slash] by zero.sups;
+sub [one one.ss01 one.tf one.tf.ss01] by one.sups;
+sub [two two.tf] by two.sups;
+sub [three three.1 three.tf three.1.tf] by three.sups;
+sub [four four.ss01 four.tf four.tf.ss01] by four.sups;
+sub [five five.tf] by five.sups;
+sub [six six.ss01 six.tf six.tf.ss01] by six.sups;
+sub [seven seven.tf] by seven.sups;
+sub [eight eight.tf] by eight.sups;
+sub [nine nine.ss01 nine.tf nine.tf.ss01] by nine.sups;
+sub [parenleft parenleft.case] by parenleft.sups;
+sub [parenright parenright.case] by parenright.sups;
+sub [bracketleft bracketleft.case] by bracketleft.sups;
+sub [bracketright bracketright.case] by bracketright.sups;
+sub [plus plus.case] by plus.sups;
+sub [minus minus.case hyphen hyphen.case] by minus.sups;
+sub [equal equal.case] by equal.sups;
diff --git a/src/features/zero.fea b/src/features/zero.fea
new file mode 100644
index 000000000..d06339d71
--- /dev/null
+++ b/src/features/zero.fea
@@ -0,0 +1,4 @@
+sub zero by zero.slash;
+sub zero.tf by zero.tf.slash;
+sub zero.circled by zero.slash.circled;
+sub zero.squared by zero.slash.squared;