diff --git a/c/shared/resource/agl2uv.h b/c/shared/resource/agl2uv.h
index 5ea56366c..b2ce50276 100644
--- a/c/shared/resource/agl2uv.h
+++ b/c/shared/resource/agl2uv.h
@@ -5,7 +5,7 @@
// NOLINT(build/header_guard)
/*
- * Adobe Glyph List v1.2, sorted by glyph name. 1051 entries.
+ * Adobe Glyph List v1.3, sorted by glyph name. 903 entries.
*
* Some glyph names are mapped to two Unicode values. In these cases, the entry
* with the "secondary" Unicode value records the glyph name with a percent
@@ -14,8 +14,8 @@
* a font; rather, it indicates in this table that the glyph is being mapped to
* more than one Unicode value.
*
- * Refer to the document "Unicode and Glyph Names" at:
- * http://partners.adobe.com/asn/developer/typeforum/unicodegn.html
+ * Refer to the AGL specification at
+ * https://github.com/adobe-type-tools/agl-specification
* for information on how to use this list.
*
* This is an aggregate initializer for an array of structs of type:
@@ -29,81 +29,50 @@
{ "A", 0x0041 },
{ "AE", 0x00C6 },
{ "AEacute", 0x01FC },
- { "AEsmall", 0xF7E6 },
{ "Aacute", 0x00C1 },
- { "Aacutesmall", 0xF7E1 },
{ "Abreve", 0x0102 },
{ "Acircumflex", 0x00C2 },
- { "Acircumflexsmall", 0xF7E2 },
- { "Acute", 0xF6C9 },
- { "Acutesmall", 0xF7B4 },
{ "Adieresis", 0x00C4 },
- { "Adieresissmall", 0xF7E4 },
{ "Agrave", 0x00C0 },
- { "Agravesmall", 0xF7E0 },
{ "Alpha", 0x0391 },
{ "Alphatonos", 0x0386 },
{ "Amacron", 0x0100 },
{ "Aogonek", 0x0104 },
{ "Aring", 0x00C5 },
{ "Aringacute", 0x01FA },
- { "Aringsmall", 0xF7E5 },
- { "Asmall", 0xF761 },
{ "Atilde", 0x00C3 },
- { "Atildesmall", 0xF7E3 },
{ "B", 0x0042 },
{ "Beta", 0x0392 },
- { "Brevesmall", 0xF6F4 },
- { "Bsmall", 0xF762 },
{ "C", 0x0043 },
{ "Cacute", 0x0106 },
- { "Caron", 0xF6CA },
- { "Caronsmall", 0xF6F5 },
{ "Ccaron", 0x010C },
{ "Ccedilla", 0x00C7 },
- { "Ccedillasmall", 0xF7E7 },
{ "Ccircumflex", 0x0108 },
{ "Cdotaccent", 0x010A },
- { "Cedillasmall", 0xF7B8 },
{ "Chi", 0x03A7 },
- { "Circumflexsmall", 0xF6F6 },
- { "Csmall", 0xF763 },
{ "D", 0x0044 },
{ "Dcaron", 0x010E },
{ "Dcroat", 0x0110 },
{ "Delta", 0x2206 },
{ "Delta%", 0x0394 },
- { "Dieresis", 0xF6CB },
- { "DieresisAcute", 0xF6CC },
- { "DieresisGrave", 0xF6CD },
- { "Dieresissmall", 0xF7A8 },
- { "Dotaccentsmall", 0xF6F7 },
- { "Dsmall", 0xF764 },
{ "E", 0x0045 },
{ "Eacute", 0x00C9 },
- { "Eacutesmall", 0xF7E9 },
{ "Ebreve", 0x0114 },
{ "Ecaron", 0x011A },
{ "Ecircumflex", 0x00CA },
- { "Ecircumflexsmall", 0xF7EA },
{ "Edieresis", 0x00CB },
- { "Edieresissmall", 0xF7EB },
{ "Edotaccent", 0x0116 },
{ "Egrave", 0x00C8 },
- { "Egravesmall", 0xF7E8 },
{ "Emacron", 0x0112 },
{ "Eng", 0x014A },
{ "Eogonek", 0x0118 },
{ "Epsilon", 0x0395 },
{ "Epsilontonos", 0x0388 },
- { "Esmall", 0xF765 },
{ "Eta", 0x0397 },
{ "Etatonos", 0x0389 },
{ "Eth", 0x00D0 },
- { "Ethsmall", 0xF7F0 },
{ "Euro", 0x20AC },
{ "F", 0x0046 },
- { "Fsmall", 0xF766 },
{ "G", 0x0047 },
{ "Gamma", 0x0393 },
{ "Gbreve", 0x011E },
@@ -111,9 +80,6 @@
{ "Gcircumflex", 0x011C },
{ "Gcommaaccent", 0x0122 },
{ "Gdotaccent", 0x0120 },
- { "Grave", 0xF6CE },
- { "Gravesmall", 0xF760 },
- { "Gsmall", 0xF767 },
{ "H", 0x0048 },
{ "H18533", 0x25CF },
{ "H18543", 0x25AA },
@@ -121,72 +87,48 @@
{ "H22073", 0x25A1 },
{ "Hbar", 0x0126 },
{ "Hcircumflex", 0x0124 },
- { "Hsmall", 0xF768 },
- { "Hungarumlaut", 0xF6CF },
- { "Hungarumlautsmall", 0xF6F8 },
{ "I", 0x0049 },
{ "IJ", 0x0132 },
{ "Iacute", 0x00CD },
- { "Iacutesmall", 0xF7ED },
{ "Ibreve", 0x012C },
{ "Icircumflex", 0x00CE },
- { "Icircumflexsmall", 0xF7EE },
{ "Idieresis", 0x00CF },
- { "Idieresissmall", 0xF7EF },
{ "Idotaccent", 0x0130 },
{ "Ifraktur", 0x2111 },
{ "Igrave", 0x00CC },
- { "Igravesmall", 0xF7EC },
{ "Imacron", 0x012A },
{ "Iogonek", 0x012E },
{ "Iota", 0x0399 },
{ "Iotadieresis", 0x03AA },
{ "Iotatonos", 0x038A },
- { "Ismall", 0xF769 },
{ "Itilde", 0x0128 },
{ "J", 0x004A },
{ "Jcircumflex", 0x0134 },
- { "Jsmall", 0xF76A },
{ "K", 0x004B },
{ "Kappa", 0x039A },
{ "Kcommaaccent", 0x0136 },
- { "Ksmall", 0xF76B },
{ "L", 0x004C },
- { "LL", 0xF6BF },
{ "Lacute", 0x0139 },
{ "Lambda", 0x039B },
{ "Lcaron", 0x013D },
{ "Lcommaaccent", 0x013B },
{ "Ldot", 0x013F },
{ "Lslash", 0x0141 },
- { "Lslashsmall", 0xF6F9 },
- { "Lsmall", 0xF76C },
{ "M", 0x004D },
- { "Macron", 0xF6D0 },
- { "Macronsmall", 0xF7AF },
- { "Msmall", 0xF76D },
{ "Mu", 0x039C },
{ "N", 0x004E },
{ "Nacute", 0x0143 },
{ "Ncaron", 0x0147 },
{ "Ncommaaccent", 0x0145 },
- { "Nsmall", 0xF76E },
{ "Ntilde", 0x00D1 },
- { "Ntildesmall", 0xF7F1 },
{ "Nu", 0x039D },
{ "O", 0x004F },
{ "OE", 0x0152 },
- { "OEsmall", 0xF6FA },
{ "Oacute", 0x00D3 },
- { "Oacutesmall", 0xF7F3 },
{ "Obreve", 0x014E },
{ "Ocircumflex", 0x00D4 },
- { "Ocircumflexsmall", 0xF7F4 },
{ "Odieresis", 0x00D6 },
- { "Odieresissmall", 0xF7F6 },
- { "Ogoneksmall", 0xF6FB },
{ "Ograve", 0x00D2 },
- { "Ogravesmall", 0xF7F2 },
{ "Ohorn", 0x01A0 },
{ "Ohungarumlaut", 0x0150 },
{ "Omacron", 0x014C },
@@ -197,25 +139,18 @@
{ "Omicrontonos", 0x038C },
{ "Oslash", 0x00D8 },
{ "Oslashacute", 0x01FE },
- { "Oslashsmall", 0xF7F8 },
- { "Osmall", 0xF76F },
{ "Otilde", 0x00D5 },
- { "Otildesmall", 0xF7F5 },
{ "P", 0x0050 },
{ "Phi", 0x03A6 },
{ "Pi", 0x03A0 },
{ "Psi", 0x03A8 },
- { "Psmall", 0xF770 },
{ "Q", 0x0051 },
- { "Qsmall", 0xF771 },
{ "R", 0x0052 },
{ "Racute", 0x0154 },
{ "Rcaron", 0x0158 },
{ "Rcommaaccent", 0x0156 },
{ "Rfraktur", 0x211C },
{ "Rho", 0x03A1 },
- { "Ringsmall", 0xF6FC },
- { "Rsmall", 0xF772 },
{ "S", 0x0053 },
{ "SF010000", 0x250C },
{ "SF020000", 0x2514 },
@@ -259,13 +194,10 @@
{ "SF540000", 0x256A },
{ "Sacute", 0x015A },
{ "Scaron", 0x0160 },
- { "Scaronsmall", 0xF6FD },
{ "Scedilla", 0x015E },
- { "Scedilla%", 0xF6C1 },
{ "Scircumflex", 0x015C },
{ "Scommaaccent", 0x0218 },
{ "Sigma", 0x03A3 },
- { "Ssmall", 0xF773 },
{ "T", 0x0054 },
{ "Tau", 0x03A4 },
{ "Tbar", 0x0166 },
@@ -274,19 +206,12 @@
{ "Tcommaaccent%", 0x021A },
{ "Theta", 0x0398 },
{ "Thorn", 0x00DE },
- { "Thornsmall", 0xF7FE },
- { "Tildesmall", 0xF6FE },
- { "Tsmall", 0xF774 },
{ "U", 0x0055 },
{ "Uacute", 0x00DA },
- { "Uacutesmall", 0xF7FA },
{ "Ubreve", 0x016C },
{ "Ucircumflex", 0x00DB },
- { "Ucircumflexsmall", 0xF7FB },
{ "Udieresis", 0x00DC },
- { "Udieresissmall", 0xF7FC },
{ "Ugrave", 0x00D9 },
- { "Ugravesmall", 0xF7F9 },
{ "Uhorn", 0x01AF },
{ "Uhungarumlaut", 0x0170 },
{ "Umacron", 0x016A },
@@ -296,34 +221,25 @@
{ "Upsilondieresis", 0x03AB },
{ "Upsilontonos", 0x038E },
{ "Uring", 0x016E },
- { "Usmall", 0xF775 },
{ "Utilde", 0x0168 },
{ "V", 0x0056 },
- { "Vsmall", 0xF776 },
{ "W", 0x0057 },
{ "Wacute", 0x1E82 },
{ "Wcircumflex", 0x0174 },
{ "Wdieresis", 0x1E84 },
{ "Wgrave", 0x1E80 },
- { "Wsmall", 0xF777 },
{ "X", 0x0058 },
{ "Xi", 0x039E },
- { "Xsmall", 0xF778 },
{ "Y", 0x0059 },
{ "Yacute", 0x00DD },
- { "Yacutesmall", 0xF7FD },
{ "Ycircumflex", 0x0176 },
{ "Ydieresis", 0x0178 },
- { "Ydieresissmall", 0xF7FF },
{ "Ygrave", 0x1EF2 },
- { "Ysmall", 0xF779 },
{ "Z", 0x005A },
{ "Zacute", 0x0179 },
{ "Zcaron", 0x017D },
- { "Zcaronsmall", 0xF6FF },
{ "Zdotaccent", 0x017B },
{ "Zeta", 0x0396 },
- { "Zsmall", 0xF77A },
{ "a", 0x0061 },
{ "aacute", 0x00E1 },
{ "abreve", 0x0103 },
@@ -380,8 +296,6 @@
{ "afii10060", 0x040B },
{ "afii10061", 0x040C },
{ "afii10062", 0x040E },
- { "afii10063", 0xF6C4 },
- { "afii10064", 0xF6C5 },
{ "afii10065", 0x0430 },
{ "afii10066", 0x0431 },
{ "afii10067", 0x0432 },
@@ -432,13 +346,10 @@
{ "afii10146", 0x0462 },
{ "afii10147", 0x0472 },
{ "afii10148", 0x0474 },
- { "afii10192", 0xF6C6 },
{ "afii10193", 0x045F },
{ "afii10194", 0x0463 },
{ "afii10195", 0x0473 },
{ "afii10196", 0x0475 },
- { "afii10831", 0xF6C7 },
- { "afii10832", 0xF6C8 },
{ "afii10846", 0x04D9 },
{ "afii299", 0x200E },
{ "afii300", 0x200F },
@@ -584,7 +495,6 @@
{ "alphatonos", 0x03AC },
{ "amacron", 0x0101 },
{ "ampersand", 0x0026 },
- { "ampersandsmall", 0xF726 },
{ "angle", 0x2220 },
{ "angleleft", 0x2329 },
{ "angleright", 0x232A },
@@ -606,12 +516,10 @@
{ "arrowup", 0x2191 },
{ "arrowupdn", 0x2195 },
{ "arrowupdnbse", 0x21A8 },
- { "arrowvertex", 0xF8E6 },
{ "asciicircum", 0x005E },
{ "asciitilde", 0x007E },
{ "asterisk", 0x002A },
{ "asteriskmath", 0x2217 },
- { "asuperior", 0xF6E9 },
{ "at", 0x0040 },
{ "atilde", 0x00E3 },
{ "b", 0x0062 },
@@ -638,7 +546,6 @@
{ "bracketrighttp", 0x23A4 },
{ "breve", 0x02D8 },
{ "brokenbar", 0x00A6 },
- { "bsuperior", 0xF6EA },
{ "bullet", 0x2022 },
{ "c", 0x0063 },
{ "cacute", 0x0107 },
@@ -650,9 +557,6 @@
{ "cdotaccent", 0x010B },
{ "cedilla", 0x00B8 },
{ "cent", 0x00A2 },
- { "centinferior", 0xF6DF },
- { "centoldstyle", 0xF7A2 },
- { "centsuperior", 0xF6E0 },
{ "chi", 0x03C7 },
{ "circle", 0x25CB },
{ "circlemultiply", 0x2297 },
@@ -662,46 +566,28 @@
{ "colon", 0x003A },
{ "colonmonetary", 0x20A1 },
{ "comma", 0x002C },
- { "commaaccent", 0xF6C3 },
- { "commainferior", 0xF6E1 },
- { "commasuperior", 0xF6E2 },
{ "congruent", 0x2245 },
{ "copyright", 0x00A9 },
- { "copyrightsans", 0xF8E9 },
- { "copyrightserif", 0xF6D9 },
{ "currency", 0x00A4 },
- { "cyrBreve", 0xF6D1 },
- { "cyrFlex", 0xF6D2 },
- { "cyrbreve", 0xF6D4 },
- { "cyrflex", 0xF6D5 },
{ "d", 0x0064 },
{ "dagger", 0x2020 },
{ "daggerdbl", 0x2021 },
- { "dblGrave", 0xF6D3 },
- { "dblgrave", 0xF6D6 },
{ "dcaron", 0x010F },
{ "dcroat", 0x0111 },
{ "degree", 0x00B0 },
{ "delta", 0x03B4 },
{ "diamond", 0x2666 },
{ "dieresis", 0x00A8 },
- { "dieresisacute", 0xF6D7 },
- { "dieresisgrave", 0xF6D8 },
{ "dieresistonos", 0x0385 },
{ "divide", 0x00F7 },
{ "dkshade", 0x2593 },
{ "dnblock", 0x2584 },
{ "dollar", 0x0024 },
- { "dollarinferior", 0xF6E3 },
- { "dollaroldstyle", 0xF724 },
- { "dollarsuperior", 0xF6E4 },
{ "dong", 0x20AB },
{ "dotaccent", 0x02D9 },
{ "dotbelowcomb", 0x0323 },
{ "dotlessi", 0x0131 },
- { "dotlessj", 0xF6BE },
{ "dotmath", 0x22C5 },
- { "dsuperior", 0xF6EB },
{ "e", 0x0065 },
{ "eacute", 0x00E9 },
{ "ebreve", 0x0115 },
@@ -712,7 +598,6 @@
{ "egrave", 0x00E8 },
{ "eight", 0x0038 },
{ "eightinferior", 0x2088 },
- { "eightoldstyle", 0xF738 },
{ "eightsuperior", 0x2078 },
{ "element", 0x2208 },
{ "ellipsis", 0x2026 },
@@ -727,15 +612,12 @@
{ "equal", 0x003D },
{ "equivalence", 0x2261 },
{ "estimated", 0x212E },
- { "esuperior", 0xF6EC },
{ "eta", 0x03B7 },
{ "etatonos", 0x03AE },
{ "eth", 0x00F0 },
{ "exclam", 0x0021 },
{ "exclamdbl", 0x203C },
{ "exclamdown", 0x00A1 },
- { "exclamdownsmall", 0xF7A1 },
- { "exclamsmall", 0xF721 },
{ "existential", 0x2203 },
{ "f", 0x0066 },
{ "female", 0x2640 },
@@ -749,13 +631,11 @@
{ "five", 0x0035 },
{ "fiveeighths", 0x215D },
{ "fiveinferior", 0x2085 },
- { "fiveoldstyle", 0xF735 },
{ "fivesuperior", 0x2075 },
{ "fl", 0xFB02 },
{ "florin", 0x0192 },
{ "four", 0x0034 },
{ "fourinferior", 0x2084 },
- { "fouroldstyle", 0xF734 },
{ "foursuperior", 0x2074 },
{ "fraction", 0x2044 },
{ "fraction%", 0x2215 },
@@ -786,8 +666,6 @@
{ "hungarumlaut", 0x02DD },
{ "hyphen", 0x002D },
{ "hyphen%", 0x00AD },
- { "hypheninferior", 0xF6E5 },
- { "hyphensuperior", 0xF6E6 },
{ "i", 0x0069 },
{ "iacute", 0x00ED },
{ "ibreve", 0x012D },
@@ -810,7 +688,6 @@
{ "iotadieresis", 0x03CA },
{ "iotadieresistonos", 0x0390 },
{ "iotatonos", 0x03AF },
- { "isuperior", 0xF6ED },
{ "itilde", 0x0129 },
{ "j", 0x006A },
{ "jcircumflex", 0x0135 },
@@ -828,14 +705,12 @@
{ "lessequal", 0x2264 },
{ "lfblock", 0x258C },
{ "lira", 0x20A4 },
- { "ll", 0xF6C0 },
{ "logicaland", 0x2227 },
{ "logicalnot", 0x00AC },
{ "logicalor", 0x2228 },
{ "longs", 0x017F },
{ "lozenge", 0x25CA },
{ "lslash", 0x0142 },
- { "lsuperior", 0xF6EE },
{ "ltshade", 0x2591 },
{ "m", 0x006D },
{ "macron", 0x00AF },
@@ -843,7 +718,6 @@
{ "male", 0x2642 },
{ "minus", 0x2212 },
{ "minute", 0x2032 },
- { "msuperior", 0xF6EF },
{ "mu", 0x00B5 },
{ "mu%", 0x03BC },
{ "multiply", 0x00D7 },
@@ -856,7 +730,6 @@
{ "ncommaaccent", 0x0146 },
{ "nine", 0x0039 },
{ "nineinferior", 0x2089 },
- { "nineoldstyle", 0xF739 },
{ "ninesuperior", 0x2079 },
{ "notelement", 0x2209 },
{ "notequal", 0x2260 },
@@ -884,10 +757,8 @@
{ "one", 0x0031 },
{ "onedotenleader", 0x2024 },
{ "oneeighth", 0x215B },
- { "onefitted", 0xF6DC },
{ "onehalf", 0x00BD },
{ "oneinferior", 0x2081 },
- { "oneoldstyle", 0xF731 },
{ "onequarter", 0x00BC },
{ "onesuperior", 0x00B9 },
{ "onethird", 0x2153 },
@@ -897,7 +768,6 @@
{ "orthogonal", 0x221F },
{ "oslash", 0x00F8 },
{ "oslashacute", 0x01FF },
- { "osuperior", 0xF6F0 },
{ "otilde", 0x00F5 },
{ "p", 0x0070 },
{ "paragraph", 0x00B6 },
@@ -918,8 +788,6 @@
{ "period", 0x002E },
{ "periodcentered", 0x00B7 },
{ "periodcentered%", 0x2219 },
- { "periodinferior", 0xF6E7 },
- { "periodsuperior", 0xF6E8 },
{ "perpendicular", 0x22A5 },
{ "perthousand", 0x2030 },
{ "peseta", 0x20A7 },
@@ -937,8 +805,6 @@
{ "q", 0x0071 },
{ "question", 0x003F },
{ "questiondown", 0x00BF },
- { "questiondownsmall", 0xF7BF },
- { "questionsmall", 0xF73F },
{ "quotedbl", 0x0022 },
{ "quotedblbase", 0x201E },
{ "quotedblleft", 0x201C },
@@ -951,25 +817,19 @@
{ "r", 0x0072 },
{ "racute", 0x0155 },
{ "radical", 0x221A },
- { "radicalex", 0xF8E5 },
{ "rcaron", 0x0159 },
{ "rcommaaccent", 0x0157 },
{ "reflexsubset", 0x2286 },
{ "reflexsuperset", 0x2287 },
{ "registered", 0x00AE },
- { "registersans", 0xF8E8 },
- { "registerserif", 0xF6DA },
{ "revlogicalnot", 0x2310 },
{ "rho", 0x03C1 },
{ "ring", 0x02DA },
- { "rsuperior", 0xF6F1 },
{ "rtblock", 0x2590 },
- { "rupiah", 0xF6DD },
{ "s", 0x0073 },
{ "sacute", 0x015B },
{ "scaron", 0x0161 },
{ "scedilla", 0x015F },
- { "scedilla%", 0xF6C2 },
{ "scircumflex", 0x015D },
{ "scommaaccent", 0x0219 },
{ "second", 0x2033 },
@@ -978,7 +838,6 @@
{ "seven", 0x0037 },
{ "seveneighths", 0x215E },
{ "seveninferior", 0x2087 },
- { "sevenoldstyle", 0xF737 },
{ "sevensuperior", 0x2077 },
{ "shade", 0x2592 },
{ "sigma", 0x03C3 },
@@ -986,14 +845,12 @@
{ "similar", 0x223C },
{ "six", 0x0036 },
{ "sixinferior", 0x2086 },
- { "sixoldstyle", 0xF736 },
{ "sixsuperior", 0x2076 },
{ "slash", 0x002F },
{ "smileface", 0x263A },
{ "space", 0x0020 },
{ "space%", 0x00A0 },
{ "spade", 0x2660 },
- { "ssuperior", 0xF6F2 },
{ "sterling", 0x00A3 },
{ "suchthat", 0x220B },
{ "summation", 0x2211 },
@@ -1011,25 +868,19 @@
{ "three", 0x0033 },
{ "threeeighths", 0x215C },
{ "threeinferior", 0x2083 },
- { "threeoldstyle", 0xF733 },
{ "threequarters", 0x00BE },
- { "threequartersemdash", 0xF6DE },
{ "threesuperior", 0x00B3 },
{ "tilde", 0x02DC },
{ "tildecomb", 0x0303 },
{ "tonos", 0x0384 },
{ "trademark", 0x2122 },
- { "trademarksans", 0xF8EA },
- { "trademarkserif", 0xF6DB },
{ "triagdn", 0x25BC },
{ "triaglf", 0x25C4 },
{ "triagrt", 0x25BA },
{ "triagup", 0x25B2 },
- { "tsuperior", 0xF6F3 },
{ "two", 0x0032 },
{ "twodotenleader", 0x2025 },
{ "twoinferior", 0x2082 },
- { "twooldstyle", 0xF732 },
{ "twosuperior", 0x00B2 },
{ "twothirds", 0x2154 },
{ "u", 0x0075 },
@@ -1074,6 +925,5 @@
{ "zdotaccent", 0x017C },
{ "zero", 0x0030 },
{ "zeroinferior", 0x2080 },
- { "zerooldstyle", 0xF730 },
{ "zerosuperior", 0x2070 },
{ "zeta", 0x03B6 },
diff --git a/python/afdko/makeinstancesufo.py b/python/afdko/makeinstancesufo.py
index 42d664372..d144bcb46 100644
--- a/python/afdko/makeinstancesufo.py
+++ b/python/afdko/makeinstancesufo.py
@@ -1,9 +1,10 @@
# Copyright 2015 Adobe. All rights reserved.
"""
-Generates UFO font instances from a set of master UFO fonts.
-It uses the mutatorMath library. The paths to the masters and
-instances fonts are specified in the .designspace file.
+Generates UFO font instances from a set of source UFO fonts
+using either MutatorMath or the fontTools varLib library.
+The paths to the source and instance fonts are specified in
+the .designspace file.
"""
import argparse
@@ -22,7 +23,7 @@
from defcon import Font
from .otfautohint.__main__ import main as otfautohint
from ufonormalizer import normalizeUFO
-from ufoProcessor import build as ufoProcessorBuild
+from ufoProcessor.ufoOperator import UFOOperator
from afdko.checkoutlinesufo import run as checkoutlinesUFO
from afdko.fdkutils import (
@@ -336,10 +337,15 @@ def run(options):
tool_str = "fontTools.varlib" if options.useVarlib else "MutatorMath"
info_str = f"Building {newInstancesCount} {icnt_str} with {tool_str} ..."
logger.info(info_str)
- ufoProcessorBuild(documentPath=dsPath,
- outputUFOFormatVersion=options.ufo_version,
- roundGeometry=(not options.no_round),
- logger=logger, useVarlib=options.useVarlib)
+ ufoOperator = UFOOperator(pathOrObject=dsPath,
+ ufoVersion=options.ufo_version,
+ useVarlib=options.useVarlib,
+ extrapolate=True,
+ strict=options.strict,
+ debug=options.verbose > 2)
+ ufoOperator.roundGeometry = (not options.no_round)
+ ufoOperator.loadFonts()
+ ufoOperator.generateUFOs()
# Remove temporary designspace file
if (dsPath != options.dsPath) and os.path.exists(dsPath):
@@ -470,6 +476,12 @@ def get_options(args):
action='store_true',
help='do NOT round coordinates to integer'
)
+ parser.add_argument(
+ '-s',
+ '--strict',
+ action='store_true',
+ help='Pass the strict flag to ufoProcessor'
+ )
parser.add_argument(
'-i',
metavar='INDEX(ES)',
diff --git a/python/afdko/resources/AGD.txt b/python/afdko/resources/AGD.txt
index ebf7b4e36..5a83d516d 100644
--- a/python/afdko/resources/AGD.txt
+++ b/python/afdko/resources/AGD.txt
@@ -891,12 +891,6 @@ onedotenleader
uni: 2024
sub: period+aalt
set: AGL1 AGL2 AGLFN
-emdash.alt
- uni: F6DE
- fin: uni2014.alt
- ali: threequartersemdash
- sub: emdash+salt emdash+aalt emdash+calt
- set: AGL1 AGL2
threequartersemdash.cap
fin: uni2014.cap
colonmonetary
@@ -907,11 +901,6 @@ rupiah.cap
fin: R_p.cap
rupiah.sc
fin: R_p.sc
-rupiah
- uni: F6DD
- fin: R_p
- sub: rupiah.oldstyle+case
- set: AGL1 AGL2
figuredash
uni: 2012
sub: hyphen+aalt
@@ -1070,52 +1059,11 @@ twelveroman
uni: 217B
fin: uni217B
set: AGL1
-ae.sc
- uni: F7E6
- ali: AEsmall
- sub: ae+smcp
- set: AGL1 AGL2
- maj: AE.sc
-aacute.sc
- uni: F7E1
- ali: Aacutesmall
- sub: aacute+smcp aacute.end+smcp
- set: AGL1 AGL2
- maj: Aacute.sc
- cmp: a.sc+acute.sc
Abreve
uni: 0102
set: AGL1 AGL2 AGLFN
min: abreve
cmp: A+breve.cap
-acircumflex.sc
- uni: F7E2
- ali: Acircumflexsmall
- sub: acircumflex+smcp acircumflex.end+smcp
- set: AGL1 AGL2
- cmp: a.sc+circumflex.sc
-acute.cap
- uni: F6C9
- ali: Acute
- sub: acute+case
- set: AGL1 AGL2
-acute.sc
- uni: F7B4
- ali: Acutesmall
- sub: acute+smcp
- set: AGL1 AGL2
-adieresis.sc
- uni: F7E4
- ali: Adieresissmall
- sub: adieresis+smcp adieresis.end+smcp
- set: AGL1 AGL2
- cmp: a.sc+dieresis.sc
-agrave.sc
- uni: F7E0
- ali: Agravesmall
- sub: agrave+smcp agrave.end+smcp
- set: AGL1 AGL2
- cmp: a.sc+grave.sc
Alpha
uni: 0391
set: AGL1 AGL2 AGLFN
@@ -1139,64 +1087,21 @@ Aringacute
uni: 01FA
set: AGL1 AGL2 AGLFN
min: aringacute
-aring.sc
- uni: F7E5
- ali: Aringsmall
- sub: aring+smcp aring.end+smcp
- set: AGL1 AGL2
- cmp: a.sc+ring.sc
-a.sc
- uni: F761
- ali: Asmall
- sub: a+smcp a.end+smcp
- set: AGL1 AGL2
- maj: A.sc
-atilde.sc
- uni: F7E3
- ali: Atildesmall
- sub: atilde+smcp atilde.end+smcp
- set: AGL1 AGL2
- cmp: a.sc+tilde.sc
Beta
uni: 0392
set: AGL1 AGL2 AGLFN
min: beta
cmp: B
-breve.sc
- uni: F6F4
- ali: Brevesmall
- sub: breve+smcp
- set: AGL1 AGL2
-b.sc
- uni: F762
- sub: b+smcp
- set: AGL1 AGL2
- maj: B.sc
Cacute
uni: 0106
set: AGL1 AGL2 AGLFN
min: cacute
cmp: C+acute.cap
-caron.cap
- uni: F6CA
- ali: Caron
- sub: caron+case
- set: AGL1 AGL2
-caron.sc
- uni: F6F5
- ali: Caronsmall
- sub: caron+smcp
- set: AGL1 AGL2
Ccaron
uni: 010C
set: AGL1 AGL2 AGLFN
min: ccaron
cmp: C+caron.cap
-ccedilla.sc
- uni: F7E7
- ali: Ccedillasmall
- sub: ccedilla+smcp
- set: AGL1 AGL2
Ccircumflex
uni: 0108
set: AGL1 AGL2 AGLFN
@@ -1208,27 +1113,11 @@ Cdotaccent
set: AGL1 AGL2 AGLFN
min: cdotaccent
cmp: C+dotaccent.cap
-cedilla.sc
- uni: F7B8
- ali: Cedillasmall
- sub: cedilla+smcp
- set: AGL1 AGL2
Chi
uni: 03A7
set: AGL1 AGL2 AGLFN
min: chi
cmp: X
-circumflex.sc
- uni: F6F6
- ali: Circumflexsmall
- sub: circumflex+smcp
- set: AGL1 AGL2
-c.sc
- uni: F763
- ali: Csmall
- sub: c+smcp
- set: AGL1 AGL2
- maj: C.sc
Dcaron
uni: 010E
set: AGL1 AGL2 AGLFN
@@ -1240,48 +1129,10 @@ Dcroat
set: AGL1 AGL2 AGLFN
min: dcroat
cmp: Eth
-dieresis.cap
- uni: F6CB
- ali: Dieresis
- sub: dieresis+case
- set: AGL1 AGL2
-dieresisacute.cap
- uni: F6CC
- fin: uni00A80301.cap
- ali: DieresisAcute dieresis_acutecomb.cap space_uni0308_uni0301.cap
- sub: dieresisacute+case
- set: AGL1 AGL2
-dieresisgrave.cap
- uni: F6CD
- fin: uni00A80300.cap
- ali: DieresisGrave dieresis_gravecomb.cap space_uni0308_uni0300.cap
- sub: dieresisgrave+case
- set: AGL1 AGL2
dieresiscaron.cap
fin: uni00A8030C.cap
dieresismacron.cap
fin: uni00A80304.cap
-dieresis.sc
- uni: F7A8
- ali: Dieresissmall
- sub: dieresis+smcp
- set: AGL1 AGL2
-dotaccent.sc
- uni: F6F7
- ali: Dotaccentsmall
- sub: dotaccent+smcp
- set: AGL1 AGL2
-d.sc
- uni: F764
- sub: d+smcp d.end+smcp
- set: AGL1 AGL2
- maj: D.sc
-eacute.sc
- uni: F7E9
- ali: Eacutesmall
- sub: eacute+smcp eacute.end+smcp
- set: AGL1 AGL2
- cmp: e.sc+acute.sc
Ebreve
uni: 0114
set: AGL1 AGL2 AGLFN
@@ -1292,30 +1143,12 @@ Ecaron
set: AGL1 AGL2 AGLFN
min: ecaron
cmp: E+caron.cap
-ecircumflex.sc
- uni: F7EA
- ali: Ecircumflexsmall
- sub: ecircumflex+smcp ecircumflex.end+smcp
- set: AGL1 AGL2
- cmp: e.sc+circumflex.sc
-edieresis.sc
- uni: F7EB
- ali: Edieresissmall
- sub: edieresis+smcp edieresis.end+smcp
- set: AGL1 AGL2
- cmp: e.sc+dieresis.sc
Edotaccent
uni: 0116
ali: Edot
set: AGL1 AGL2 AGLFN
min: edotaccent
cmp: E+dotaccent.cap
-egrave.sc
- uni: F7E8
- ali: Egravesmall
- sub: egrave+smcp egrave.end+smcp
- set: AGL1 AGL2
- cmp: e.sc+grave.sc
Emacron
uni: 0112
set: AGL1 AGL2 AGLFN
@@ -1339,12 +1172,6 @@ Epsilontonos
set: AGL1 AGL2 AGLFN
min: epsilontonos
cmp: Epsilon
-e.sc
- uni: F765
- ali: Esmall
- sub: e+smcp e.end+smcp
- set: AGL1 AGL2
- maj: E.sc
Eta
uni: 0397
set: AGL1 AGL2 AGLFN
@@ -1355,12 +1182,6 @@ Etatonos
set: AGL1 AGL2 AGLFN
min: etatonos
cmp: Eta
-eth.sc
- uni: F7F0
- ali: Ethsmall
- sub: eth+smcp
- set: AGL1 AGL2
- maj: Eth.sc
newsheqel
uni: 20AA
fin: uni20AA
@@ -1374,12 +1195,6 @@ Euro
ali: euro
sub: Euro.oldstyle+case
set: AGL1 AGL2 AGLFN
-f.sc
- uni: F766
- ali: Fsmall
- sub: f+smcp
- set: AGL1 AGL2
- maj: F.sc
Gamma
uni: 0393
set: AGL1 AGL2 AGLFN
@@ -1411,21 +1226,6 @@ Gdotaccent
set: AGL1 AGL2 AGLFN
min: gdotaccent
cmp: G+dotaccent.cap
-grave.cap
- uni: F6CE
- ali: Grave
- sub: grave+case
- set: AGL1 AGL2
-grave.sc
- uni: F760
- ali: Gravesmall
- sub: grave+smcp
- set: AGL1 AGL2
-g.sc
- uni: F767
- sub: g+smcp
- set: AGL1 AGL2
- maj: G.sc
circleblack
uni: 25CF
fin: uni25CF
@@ -1455,49 +1255,16 @@ Hcircumflex
set: AGL1 AGL2 AGLFN
min: hcircumflex
cmp: H+circumflex.cap
-h.sc
- uni: F768
- sub: h+smcp h.end+smcp
- set: AGL1 AGL2
- maj: H.sc
-hungarumlaut.cap
- uni: F6CF
- ali: Hungarumlaut
- sub: hungarumlaut+case
- set: AGL1 AGL2
-hungarumlaut.sc
- uni: F6F8
- ali: Hungarumlautsmall
- sub: hungarumlaut+smcp
- set: AGL1 AGL2
IJ
uni: 0132
set: AGL1 AGL2 AGLFN
min: ij
cmp: I+J
-iacute.sc
- uni: F7ED
- ali: Iacutesmall
- sub: iacute+smcp
- set: AGL1 AGL2
- cmp: i.sc+acute.sc
Ibreve
uni: 012C
set: AGL1 AGL2 AGLFN
min: ibreve
cmp: I+breve.cap
-icircumflex.sc
- uni: F7EE
- ali: Icircumflexsmall
- sub: icircumflex+smcp
- set: AGL1 AGL2
- cmp: i.sc+circumflex.sc
-idieresis.sc
- uni: F7EF
- ali: Idieresissmall
- sub: idieresis+smcp
- set: AGL1 AGL2
- cmp: i.sc+dieresis.sc
Idotaccent
uni: 0130
ali: Idot
@@ -1507,12 +1274,6 @@ Ifraktur
uni: 2111
fin: uni2111
set: AGL1 AGL2 AGLFN
-igrave.sc
- uni: F7EC
- ali: Igravesmall
- sub: igrave+smcp
- set: AGL1 AGL2
- cmp: i.sc+grave.sc
Imacron
uni: 012A
set: AGL1 AGL2 AGLFN
@@ -1537,11 +1298,6 @@ Iotatonos
set: AGL1 AGL2 AGLFN
min: iotatonos
cmp: Iota
-i.sc
- uni: F769
- sub: i+smcp dotlessi+smcp
- set: AGL1 AGL2
- maj: I.sc
Itilde
uni: 0128
set: AGL1 AGL2 AGLFN
@@ -1551,12 +1307,6 @@ Jcircumflex
set: AGL1 AGL2 AGLFN
min: jcircumflex
cmp: J+circumflex.cap
-j.sc
- uni: F76A
- ali: Jsmall
- sub: j+smcp dotlessj+smcp
- set: AGL1 AGL2
- maj: J.sc
Kappa
uni: 039A
set: AGL1 AGL2 AGLFN
@@ -1569,16 +1319,6 @@ Kcommaaccent
set: AGL1 AGL2 AGLFN
min: kcommaaccent
cmp: K+commaaccent
-k.sc
- uni: F76B
- ali: Ksmall
- sub: k+smcp k.alt+smcp
- set: AGL1 AGL2
- maj: K.sc
-LL
- uni: F6BF
- fin: uniF6BF
- set: AGL1 AGL2
Lacute
uni: 0139
set: AGL1 AGL2 AGLFN
@@ -1606,32 +1346,6 @@ Ldot
set: AGL1 AGL2 AGLFN
min: ldot
cmp: L+dotaccent.cap
-lslash.sc
- uni: F6F9
- ali: Lslashsmall
- sub: lslash+smcp
- set: AGL1 AGL2
-l.sc
- uni: F76C
- sub: l+smcp
- set: AGL1 AGL2
- maj: L.sc
-macron.cap
- uni: F6D0
- ali: Macron
- sub: macron+case
- set: AGL1 AGL2
-macron.sc
- uni: F7AF
- ali: Macronsmall
- sub: macron+smcp
- set: AGL1 AGL2
-m.sc
- uni: F76D
- ali: Msmall
- sub: m+smcp m.end+smcp
- set: AGL1 AGL2
- maj: M.sc
Mu
uni: 039C
set: AGL1 AGL2 AGLFN
@@ -1654,61 +1368,16 @@ Ncommaaccent
set: AGL1 AGL2 AGLFN
min: ncommaaccent
cmp: N+commaaccent
-n.sc
- uni: F76E
- sub: n+smcp n.end+smcp
- set: AGL1 AGL2
- maj: N.sc
-ntilde.sc
- uni: F7F1
- ali: Ntildesmall
- sub: ntilde+smcp ntilde.end+smcp
- set: AGL1 AGL2
- cmp: n.sc+tilde.sc
Nu
uni: 039D
set: AGL1 AGL2 AGLFN
min: nu
cmp: N
-oe.sc
- uni: F6FA
- sub: oe+smcp
- set: AGL1 AGL2
- maj: OE.sc
-oacute.sc
- uni: F7F3
- ali: Oacutesmall
- sub: oacute+smcp
- set: AGL1 AGL2
- cmp: o.sc+acute.sc
Obreve
uni: 014E
set: AGL1 AGL2 AGLFN
min: obreve
cmp: O+breve.cap
-ocircumflex.sc
- uni: F7F4
- ali: Ocircumflexsmall
- sub: ocircumflex+smcp
- set: AGL1 AGL2
- cmp: o.sc+circumflex.sc
-odieresis.sc
- uni: F7F6
- ali: Odieresissmall
- sub: odieresis+smcp
- set: AGL1 AGL2
- cmp: o.sc+dieresis.sc
-ogonek.sc
- uni: F6FB
- ali: Ogoneksmall
- sub: ogonek+smcp
- set: AGL1 AGL2
-ograve.sc
- uni: F7F2
- ali: Ogravesmall
- sub: ograve+smcp
- set: AGL1 AGL2
- cmp: o.sc+grave.sc
Ohorn
uni: 01A0
set: AGL1 AGL2 AGLFN
@@ -1745,24 +1414,6 @@ Oslashacute
set: AGL1 AGL2 AGLFN
min: oslashacute
cmp: Oslash+acute.cap
-oslash.sc
- uni: F7F8
- ali: Oslashsmall
- sub: oslash+smcp
- set: AGL1 AGL2
- maj: Oslash.sc
-o.sc
- uni: F76F
- ali: Osmall
- sub: o+smcp
- set: AGL1 AGL2
- maj: O.sc
-otilde.sc
- uni: F7F5
- ali: Otildesmall
- sub: otilde+smcp
- set: AGL1 AGL2
- cmp: o.sc+tilde.sc
Phi
uni: 03A6
set: AGL1 AGL2 AGLFN
@@ -1775,18 +1426,6 @@ Psi
uni: 03A8
set: AGL1 AGL2 AGLFN
min: psi
-p.sc
- uni: F770
- ali: Psmall
- sub: p+smcp
- set: AGL1 AGL2
- maj: P.sc
-q.sc
- uni: F771
- ali: Qsmall
- sub: q+smcp
- set: AGL1 AGL2
- maj: Q.sc
Racute
uni: 0154
set: AGL1 AGL2 AGLFN
@@ -1813,27 +1452,11 @@ Rho
set: AGL1 AGL2 AGLFN
min: rho
cmp: P
-ring.sc
- uni: F6FC
- ali: Ringsmall
- sub: ring+smcp
- set: AGL1 AGL2
-r.sc
- uni: F772
- sub: r+smcp r.end+smcp
- set: AGL1 AGL2
- maj: R.sc
Sacute
uni: 015A
set: AGL1 AGL2 AGLFN
min: sacute
cmp: S+acute.cap
-scaron.sc
- uni: F6FD
- ali: Scaronsmall
- sub: scaron+smcp
- set: AGL1 AGL2
- cmp: s.sc+caron.sc
Scedilla
uni: 015E
fin: uni015E
@@ -1855,12 +1478,6 @@ Sigma
uni: 03A3
set: AGL1 AGL2 AGLFN
min: sigma
-s.sc
- uni: F773
- ali: Ssmall
- sub: s+smcp
- set: AGL1 AGL2
- maj: S.sc
Tau
uni: 03A4
set: AGL1 AGL2 AGLFN
@@ -1885,52 +1502,11 @@ Theta
uni: 0398
set: AGL1 AGL2 AGLFN
min: theta
-thorn.sc
- uni: F7FE
- ali: Thornsmall
- sub: thorn+smcp
- set: AGL1 AGL2
- maj: Thorn.sc
-tilde.sc
- uni: F6FE
- ali: Tildesmall
- sub: tilde+smcp
- set: AGL1 AGL2
-t.sc
- uni: F774
- ali: Tsmall
- sub: t+smcp t.end+smcp t.endalt+smcp
- set: AGL1 AGL2
- maj: T.sc
-uacute.sc
- uni: F7FA
- ali: Uacutesmall
- sub: uacute+smcp uacute.end+smcp
- set: AGL1 AGL2
- cmp: u.sc+acute.sc
Ubreve
uni: 016C
set: AGL1 AGL2 AGLFN
min: ubreve
cmp: U+breve.cap
-ucircumflex.sc
- uni: F7FB
- ali: Ucircumflexsmall
- sub: ucircumflex+smcp ucircumflex.end+smcp
- set: AGL1 AGL2
- cmp: u.sc+circumflex.sc
-udieresis.sc
- uni: F7FC
- ali: Udieresissmall
- sub: udieresis+smcp udieresis.end+smcp
- set: AGL1 AGL2
- cmp: u.sc+dieresis.sc
-ugrave.sc
- uni: F7F9
- ali: Ugravesmall
- sub: ugrave+smcp ugrave.end+smcp
- set: AGL1 AGL2
- cmp: u.sc+grave.sc
Uhorn
uni: 01AF
set: AGL1 AGL2 AGLFN
@@ -1973,23 +1549,11 @@ Uring
set: AGL1 AGL2 AGLFN
min: uring
cmp: U+ring.cap
-u.sc
- uni: F775
- ali: Usmall
- sub: u+smcp u.end+smcp
- set: AGL1 AGL2
- maj: U.sc
Utilde
uni: 0168
set: AGL1 AGL2 AGLFN
min: utilde
cmp: U+tilde.cap
-v.sc
- uni: F776
- ali: Vsmall
- sub: v+smcp v.alt+smcp v.begin+smcp
- set: AGL1 AGL2
- maj: V.sc
Wacute
uni: 1E82
set: AGL1 AGL2 AGLFN
@@ -2010,60 +1574,25 @@ Wgrave
set: AGL1 AGL2 AGLFN
min: wgrave
cmp: W+grave.cap
-w.sc
- uni: F777
- ali: Wsmall
- sub: w+smcp w.alt+smcp
- set: AGL1 AGL2
- maj: W.sc
Xi
uni: 039E
set: AGL1 AGL2 AGLFN
min: xi
-x.sc
- uni: F778
- ali: Xsmall
- sub: x+smcp
- set: AGL1 AGL2
- maj: X.sc
-yacute.sc
- uni: F7FD
- ali: Yacutesmall
- sub: yacute+smcp
- set: AGL1 AGL2
- cmp: y.sc+acute.sc
Ycircumflex
uni: 0176
set: AGL1 AGL2 AGLFN
min: ycircumflex
cmp: Y+circumflex.cap
-ydieresis.sc
- uni: F7FF
- ali: Ydieresissmall
- sub: ydieresis+smcp
- set: AGL1 AGL2
- cmp: y.sc+dieresis.sc
Ygrave
uni: 1EF2
set: AGL1 AGL2 AGLFN
min: ygrave
cmp: Y+grave.cap
-y.sc
- uni: F779
- sub: y+smcp
- set: AGL1 AGL2
- maj: Y.sc
Zacute
uni: 0179
set: AGL1 AGL2 AGLFN
min: zacute
cmp: Z+acute.cap
-zcaron.sc
- uni: F6FF
- ali: Zcaronsmall
- sub: zcaron+smcp
- set: AGL1 AGL2
- cmp: z.sc+caron.sc
Zdotaccent
uni: 017B
ali: Zdot
@@ -2075,12 +1604,6 @@ Zeta
set: AGL1 AGL2 AGLFN
min: zeta
cmp: Z
-z.sc
- uni: F77A
- ali: Zsmall
- sub: z+smcp
- set: AGL1 AGL2
- maj: Z.sc
abreve
uni: 0103
set: AGL1 AGL2 AGLFN
@@ -2398,19 +1921,6 @@ Ushort
set: AGL1 AGL2 AGLFN
min: ushort
cmp: Ucyr+breve.cyrcap
-ghe.ital
- uni: F6C4
- fin: uni0433.ital
- ali: afii10063 afii10068.ital
- sub: ghe+locl ghe+salt
- set: AGL1 AGL2
- tag: italic
-be.ital
- uni: F6C5
- fin: uni0431.ital
- ali: afii10064 afii10066.ital be.alt
- sub: be+salt be+locl
- set: AGL1 AGL2
acyr
uni: 0430
fin: uni0430
@@ -2726,13 +2236,6 @@ Izhitsa
ali: Izhitsacyrillic afii10148
set: AGL1 AGL2 AGLFN
min: izhitsa
-de.ital
- uni: F6C6
- fin: uni0434.ital
- ali: afii10069.ital afii10192
- sub: de+locl de+salt
- set: AGL1 AGL2
- tag: italic
dzhe
uni: 045F
fin: uni045F
@@ -2757,20 +2260,6 @@ izhitsa
ali: afii10196 izhitsacyrillic
set: AGL1 AGL2 AGLFN
maj: Izhitsa
-pe.ital
- uni: F6C7
- fin: uni043F.ital
- ali: afii10081.ital afii10831
- sub: pe+locl pe+salt
- set: AGL1 AGL2
- tag: italic
-te.ital
- uni: F6C8
- fin: uni0442.ital
- ali: afii10084.ital afii10832
- sub: te+locl te+salt
- set: AGL1 AGL2
- tag: italic
schwacyr
uni: 04D9
fin: uni04D9
@@ -4136,11 +3625,6 @@ amacron
set: AGL1 AGL2 AGLFN
maj: Amacron
cmp: a+macron
-ampersand.sc
- uni: F726
- ali: ampersandsmall
- sub: ampersand+c2sc ampersand.alt1+c2sc ampersand.alt2+c2sc ampersand.alt3+c2sc
- set: AGL1 AGL2
angle
uni: 2220
set: AGL1 AGL2 AGLFN
@@ -4189,10 +3673,6 @@ arrowdblup
arrowdown
uni: 2193
set: AGL1 AGL2 AGLFN
-arrowhorizex
- uni: F8E7
- fin: uniF8E7
- set: AGL1 AGL2
arrowleft
uni: 2190
fin: uni2190
@@ -4212,18 +3692,9 @@ arrowupdnbse
uni: 21A8
ali: SM770000 arrowupdownbase
set: AGL1 AGL2 AGLFN
-arrowvertex
- uni: F8E6
- fin: uniF8E6
- set: AGL1 AGL2
asteriskmath
uni: 2217
set: AGL1 AGL2 AGLFN
-a.superior
- uni: F6E9
- ali: asuperior
- sub: a+sups a+ordn
- set: AGL1 AGL2
beta
uni: 03B2
set: AGL1 AGL2 AGLFN
@@ -4233,63 +3704,6 @@ beta.alt
fin: uni03D0
ali: betasymbolgreek
set: AGL1
-braceex
- uni: F8F4
- fin: uniF8F4
- set: AGL1 AGL2
-braceleftbt
- uni: F8F3
- fin: uniF8F3
- set: AGL1 AGL2
-braceleftmid
- uni: F8F2
- fin: uniF8F2
- set: AGL1 AGL2
-bracelefttp
- uni: F8F1
- fin: uniF8F1
- set: AGL1 AGL2
-bracerightbt
- uni: F8FE
- fin: uniF8FE
- set: AGL1 AGL2
-bracerightmid
- uni: F8FD
- fin: uniF8FD
- set: AGL1 AGL2
-bracerighttp
- uni: F8FC
- fin: uniF8FC
- set: AGL1 AGL2
-bracketleftbt
- uni: F8F0
- fin: uniF8F0
- set: AGL1 AGL2
-bracketleftex
- uni: F8EF
- fin: uniF8EF
- set: AGL1 AGL2
-bracketlefttp
- uni: F8EE
- fin: uniF8EE
- set: AGL1 AGL2
-bracketrightbt
- uni: F8FB
- fin: uniF8FB
- set: AGL1 AGL2
-bracketrightex
- uni: F8FA
- fin: uniF8FA
- set: AGL1 AGL2
-bracketrighttp
- uni: F8F9
- fin: uniF8F9
- set: AGL1 AGL2
-b.superior
- uni: F6EA
- ali: bsuperior
- sub: b+sups
- set: AGL1 AGL2
cacute
uni: 0107
set: AGL1 AGL2 AGLFN
@@ -4314,23 +3728,6 @@ cdotaccent
set: AGL1 AGL2 AGLFN
maj: Cdotaccent
cmp: c+dotaccent
-cent.inferior
- uni: F6DF
- ali: centinferior
- sub: cent+sinf
- set: AGL1 AGL2
- cmp: cent.numerator
-cent.oldstyle
- uni: F7A2
- ali: centoldstyle
- sub: cent+onum cent+c2sc
- set: AGL1 AGL2
-cent.superior
- uni: F6E0
- ali: centsuperior
- sub: cent+sups
- set: AGL1 AGL2
- cmp: cent.numerator
chi
uni: 03C7
set: AGL1 AGL2 AGLFN
@@ -4352,64 +3749,10 @@ club
uni: 2663
ali: clubsuitblack
set: AGL1 AGL2 AGLFN
-commaaccent
- uni: F6C3
- fin: uni00200326
- ali: space_uni0326
- set: AGL1 AGL2
-comma.inferior
- uni: F6E1
- ali: commainferior
- sub: comma+sinf
- set: AGL1 AGL2
- cmp: comma.numerator
-comma.superior
- uni: F6E2
- ali: commasuperior
- sub: comma+sups
- set: AGL1 AGL2
- cmp: comma.numerator
congruent
uni: 2245
ali: approximatelyequal
set: AGL1 AGL2 AGLFN
-copyrightsans
- uni: F8E9
- fin: copyright.sans
- set: AGL1 AGL2
-copyrightserif
- uni: F6D9
- fin: copyright.serif
- set: AGL1 AGL2
-breve.cyrcap
- uni: F6D1
- ali: cyrBreve
- sub: breve.cyr+case
- set: AGL1 AGL2
-circumflex.cyrcap
- uni: F6D2
- ali: cyrFlex
- sub: circumflex.cyr+case
- set: AGL1 AGL2
-breve.cyr
- uni: F6D4
- ali: cyrbreve
- set: AGL1 AGL2
-circumflex.cyr
- uni: F6D5
- ali: cyrflex
- set: AGL1 AGL2
-dblgrave.cap
- uni: F6D3
- fin: uni0020030F.cap
- ali: dblGrave space_uni030F.cap
- sub: dblgrave+case
- set: AGL1 AGL2
-dblgrave
- uni: F6D6
- fin: uni0020030F
- ali: space_uni030F
- set: AGL1 AGL2
dcaron
uni: 010F
set: AGL1 AGL2 AGLFN
@@ -4427,16 +3770,6 @@ delta
diamond
uni: 2666
set: AGL1 AGL2 AGLFN
-dieresisacute
- uni: F6D7
- fin: uni00A80301
- ali: dieresis_acutecomb space_uni0308_uni0301
- set: AGL1 AGL2
-dieresisgrave
- uni: F6D8
- fin: uni00A80300
- ali: dieresis_gravecomb space_uni0308_uni0300
- set: AGL1 AGL2
dieresistonos
uni: 0385
ali: dialytikatonos
@@ -4447,23 +3780,6 @@ dieresiscaron
dieresismacron
fin: uni00A80304
ali: dieresis_uni0304
-dollar.inferior
- uni: F6E3
- ali: dollarinferior
- sub: dollar+sinf
- set: AGL1 AGL2
- cmp: dollar.numerator
-dollar.oldstyle
- uni: F724
- ali: dollaroldstyle
- sub: dollar+onum dollar+c2sc
- set: AGL1 AGL2
-dollar.superior
- uni: F6E4
- ali: dollarsuperior
- sub: dollar+sups
- set: AGL1 AGL2
- cmp: dollar.numerator
dotbelowcmb
uni: 0323
fin: uni0323
@@ -4477,11 +3793,6 @@ dotmath
uni: 22C5
ali: SD630000
set: AGL1 AGL2 AGLFN
-d.superior
- uni: F6EB
- ali: dsuperior
- sub: d+sups
- set: AGL1 AGL2
ebreve
uni: 0115
set: AGL1 AGL2 AGLFN
@@ -4504,11 +3815,6 @@ eight.inferior
sub: eight+sinf
set: AGL1 AGL2
cmp: eight.numerator
-eight.oldstyle
- uni: F738
- ali: eightoldstyle
- sub: eight.fitted+onum eight.fitted+c2sc eight.taboldstyle+pnum eight+aalt
- set: AGL1 AGL2
eight.superior
uni: 2078
ali: eightsuperior
@@ -4549,11 +3855,6 @@ equivalence
estimated
uni: 212E
set: AGL1 AGL2 AGLFN
-e.superior
- uni: F6EC
- ali: esuperior
- sub: e+sups
- set: AGL1 AGL2
eta
uni: 03B7
set: AGL1 AGL2 AGLFN
@@ -4566,16 +3867,6 @@ etatonos
exclamdbl
uni: 203C
set: AGL1 AGL2 AGLFN
-exclamdown.sc
- uni: F7A1
- ali: exclamdownsmall
- sub: exclamdown+c2sc
- set: AGL1 AGL2
-exclam.sc
- uni: F721
- ali: exclamsmall
- sub: exclam+c2sc
- set: AGL1 AGL2
existential
uni: 2203
ali: thereexists
@@ -4626,11 +3917,6 @@ five.inferior
sub: five+sinf
set: AGL1 AGL2
cmp: five.numerator
-five.oldstyle
- uni: F735
- ali: fiveoldstyle
- sub: five.fitted+onum five.fitted+c2sc five.taboldstyle+pnum five+aalt
- set: AGL1 AGL2
five.superior
uni: 2075
ali: fivesuperior
@@ -4643,11 +3929,6 @@ four.inferior
sub: four+sinf
set: AGL1 AGL2
cmp: four.numerator
-four.oldstyle
- uni: F734
- ali: fouroldstyle
- sub: four.fitted+onum four.fitted+c2sc four.taboldstyle+pnum four+aalt
- set: AGL1 AGL2
four.superior
uni: 2074
ali: foursuperior
@@ -4721,18 +4002,6 @@ house
uni: 2302
ali: SM790000
set: AGL1 AGL2 AGLFN
-hyphen.inferior
- uni: F6E5
- ali: hypheninferior
- sub: hyphen+sinf
- set: AGL1 AGL2
- cmp: hyphen.numerator
-hyphen.superior
- uni: F6E6
- ali: hyphensuperior
- sub: hyphen+sups
- set: AGL1 AGL2
- cmp: hyphen.numerator
ibreve
uni: 012D
set: AGL1 AGL2 AGLFN
@@ -4758,10 +4027,6 @@ integralbt
uni: 2321
ali: SS270000 integralbottom
set: AGL1 AGL2 AGLFN
-integralex
- uni: F8F5
- fin: uniF8F5
- set: AGL1 AGL2
integraltp
uni: 2320
ali: SS260000 integraltop
@@ -4803,11 +4068,6 @@ iotatonos
set: AGL1 AGL2 AGLFN
maj: Iotatonos
cmp: iota+tonos
-i.superior
- uni: F6ED
- ali: isuperior
- sub: i+sups
- set: AGL1 AGL2
itilde
uni: 0129
set: AGL1 AGL2 AGLFN
@@ -4866,10 +4126,6 @@ lira
ali: afii08941
sub: lira.oldstyle+case
set: AGL1 AGL2 AGLFN
-ll
- uni: F6C0
- fin: uniF6C0
- set: AGL1 AGL2
logicaland
uni: 2227
set: AGL1 AGL2 AGLFN
@@ -4884,11 +4140,6 @@ longs
lozenge
uni: 25CA
set: AGL1 AGL2 AGLFN
-l.superior
- uni: F6EE
- ali: lsuperior
- sub: l+sups
- set: AGL1 AGL2
male
uni: 2642
ali: Mars mars
@@ -4898,11 +4149,6 @@ prime
fin: uni2032
ali: minute
set: AGL1 AGL2 AGLFN
-m.superior
- uni: F6EF
- ali: msuperior
- sub: m+sups
- set: AGL1 AGL2
musicalnote
uni: 266A
ali: eighthnote
@@ -4945,11 +4191,6 @@ minus.inferior
uni: 208B
equal.inferior
uni: 208C
-nine.oldstyle
- uni: F739
- ali: nineoldstyle
- sub: nine.fitted+onum nine.fitted+c2sc nine.taboldstyle+pnum nine+aalt
- set: AGL1 AGL2
nine.superior
uni: 2079
ali: ninesuperior
@@ -5025,23 +4266,12 @@ omicrontonos
set: AGL1 AGL2 AGLFN
maj: Omicrontonos
cmp: omicron+tonos
-one.fitted
- uni: F6DC
- ali: onefitted
- sub: one+pnum one.oldstyle+case
- set: AGL1 AGL2
- cmp: one
one.inferior
uni: 2081
ali: oneinferior
sub: one+sinf
set: AGL1 AGL2
cmp: one.numerator
-one.oldstyle
- uni: F731
- ali: oneoldstyle
- sub: one.fitted+onum one.fitted+c2sc one.taboldstyle+pnum one+aalt
- set: AGL1 AGL2
onesuperior
uni: 00B9
set: AGL1 AGL2
@@ -5064,19 +4294,6 @@ oslashacute
set: AGL1 AGL2 AGLFN
maj: Oslashacute
cmp: oslash+acute
-o.superior
- uni: F6F0
- ali: osuperior
- sub: o+sups o+ordn
- set: AGL1 AGL2
-parenleftbt
- uni: F8ED
- fin: uniF8ED
- set: AGL1 AGL2
-parenleftex
- uni: F8EC
- fin: uniF8EC
- set: AGL1 AGL2
parenleft.inferior
uni: 208D
ali: parenleftinferior
@@ -5089,18 +4306,6 @@ parenleft.superior
sub: parenleft+sups
set: AGL1 AGL2
cmp: parenleft.numerator
-parenlefttp
- uni: F8EB
- fin: uniF8EB
- set: AGL1 AGL2
-parenrightbt
- uni: F8F8
- fin: uniF8F8
- set: AGL1 AGL2
-parenrightex
- uni: F8F7
- fin: uniF8F7
- set: AGL1 AGL2
parenright.inferior
uni: 208E
ali: parenrightinferior
@@ -5113,25 +4318,9 @@ parenright.superior
sub: parenright+sups
set: AGL1 AGL2
cmp: parenright.numerator
-parenrighttp
- uni: F8F6
- fin: uniF8F6
- set: AGL1 AGL2
partialdiff
uni: 2202
set: AGL1 AGL2 AGLFN
-period.inferior
- uni: F6E7
- ali: periodinferior
- sub: period+sinf
- set: AGL1 AGL2
- cmp: period.numerator
-period.superior
- uni: F6E8
- ali: periodsuperior
- sub: period+sups
- set: AGL1 AGL2
- cmp: period.numerator
perpendicular
uni: 22A5
set: AGL1 AGL2 AGLFN
@@ -5173,16 +4362,6 @@ psi
uni: 03C8
set: AGL1 AGL2 AGLFN
maj: Psi
-questiondown.sc
- uni: F7BF
- ali: questiondownsmall
- sub: questiondown+c2sc
- set: AGL1 AGL2
-question.sc
- uni: F73F
- ali: questionsmall
- sub: question+c2sc
- set: AGL1 AGL2
quotereversed
uni: 201B
ali: apostrophereverse quoteleftreversed
@@ -5195,10 +4374,6 @@ racute
radical
uni: 221A
set: AGL1 AGL2 AGLFN
-radicalex
- uni: F8E5
- fin: uniF8E5
- set: AGL1 AGL2
rcaron
uni: 0159
set: AGL1 AGL2 AGLFN
@@ -5219,16 +4394,6 @@ reflexsuperset
uni: 2287
ali: supersetorequal
set: AGL1 AGL2 AGLFN
-registersans
- uni: F8E8
- fin: registered.sans
- ali: register.sans
- set: AGL1 AGL2
-registerserif
- uni: F6DA
- fin: registered.serif
- ali: register.serif
- set: AGL1 AGL2
revlogicalnot
uni: 2310
ali: SM680000 logicalnotreversed
@@ -5237,11 +4402,6 @@ rho
uni: 03C1
set: AGL1 AGL2 AGLFN
maj: Rho
-r.superior
- uni: F6F1
- ali: rsuperior
- sub: r+sups
- set: AGL1 AGL2
sacute
uni: 015B
set: AGL1 AGL2 AGLFN
@@ -5275,11 +4435,6 @@ seven.inferior
sub: seven+sinf
set: AGL1 AGL2
cmp: seven.numerator
-seven.oldstyle
- uni: F737
- ali: sevenoldstyle
- sub: seven.fitted+onum seven.fitted+c2sc seven.taboldstyle+pnum seven+aalt
- set: AGL1 AGL2
seven.superior
uni: 2077
ali: sevensuperior
@@ -5306,11 +4461,6 @@ six.inferior
sub: six+sinf
set: AGL1 AGL2
cmp: six.numerator
-six.oldstyle
- uni: F736
- ali: sixoldstyle
- sub: six.fitted+onum six.fitted+c2sc six.taboldstyle+pnum six+aalt
- set: AGL1 AGL2
six.superior
uni: 2076
ali: sixsuperior
@@ -5325,11 +4475,6 @@ spade
uni: 2660
ali: spadesuitblack
set: AGL1 AGL2 AGLFN
-s.superior
- uni: F6F2
- ali: ssuperior
- sub: s+sups
- set: AGL1 AGL2
suchthat
uni: 220B
set: AGL1 AGL2 AGLFN
@@ -5380,11 +4525,6 @@ three.inferior
sub: three+sinf
set: AGL1 AGL2
cmp: three.numerator
-three.oldstyle
- uni: F733
- ali: threeoldstyle
- sub: three.fitted+onum three.fitted+c2sc three.taboldstyle+pnum three+aalt
- set: AGL1 AGL2
threesuperior
uni: 00B3
set: AGL1 AGL2
@@ -5400,14 +4540,6 @@ tildecmb
tonos
uni: 0384
set: AGL1 AGL2 AGLFN
-trademarksans
- uni: F8EA
- fin: trademark.sans
- set: AGL1 AGL2
-trademarkserif
- uni: F6DB
- fin: trademark.serif
- set: AGL1 AGL2
triangleblackdown
uni: 25BC
fin: triagdn
@@ -5428,22 +4560,12 @@ triangleblackup
fin: triagup
ali: SM600000 blackuppointingtriangle
set: AGL1 AGL2 AGLFN
-t.superior
- uni: F6F3
- ali: tsuperior
- sub: t+sups
- set: AGL1 AGL2
two.inferior
uni: 2082
ali: twoinferior
sub: two+sinf
set: AGL1 AGL2
cmp: two.numerator
-two.oldstyle
- uni: F732
- ali: twooldstyle
- sub: two.fitted+onum two.fitted+c2sc two.taboldstyle+pnum two+aalt
- set: AGL1 AGL2
twosuperior
uni: 00B2
set: AGL1 AGL2
@@ -5568,11 +4690,6 @@ zero.inferior
sub: zero+sinf
set: AGL1 AGL2
cmp: zero.numerator
-zero.oldstyle
- uni: F730
- ali: zerooldstyle
- sub: zero.fitted+onum zero.slashfitted+onum zero.fitted+c2sc zero.slashfitted+c2sc zero.taboldstyle+pnum zero+aalt
- set: AGL1 AGL2
zero.superior
uni: 2070
ali: zerosuperior
@@ -5583,10 +4700,6 @@ zeta
uni: 03B6
set: AGL1 AGL2 AGLFN
maj: Zeta
-zero.slash
- uni: F638
- ali: zeroslash
- sub: zero+zero zero.fitted+zero
percent.alt
sub: percent+salt
estimated.alt
@@ -11178,11 +10291,6 @@ Dcroat.sc
sub: Dcroat+c2sc
min: dcroat.sc
cmp: eth.sc
-Hbar.sc
- uni: F681
- sub: Hbar+c2sc
- min: hbar.sc
- cmp: hbar.sc
Oslash.sc
sub: Oslash+c2sc
min: oslash.sc
@@ -11192,16 +10300,6 @@ Obar.sc
sub: Obar+c2sc
min: obar.sc
cmp: fita.sc
-Tbar.sc
- uni: F69C
- sub: Tbar+c2sc
- min: tbar.sc
- cmp: tbar.sc
-Eng.sc
- uni: F67B
- sub: Eng+c2sc
- min: eng.sc
- cmp: eng.sc
Eth.sc
sub: Eth+c2sc
min: eth.sc
@@ -11375,10 +10473,6 @@ Lcommaaccent.sc
fin: uni013B.sc
sub: Lcommaaccent+c2sc
cmp: lcommaaccent.sc
-Ldot.sc
- uni: F68D
- sub: Ldot+c2sc
- cmp: ldot.sc
Lslash.sc
sub: Lslash+c2sc
cmp: lslash.sc
@@ -23223,12 +22317,6 @@ hryvnia
cedi
uni: 20B5
fin: uni20B5
-Scedilla.dup
- uni: F6C1
- cmp: Scedilla
-scedilla.dup
- uni: F6C2
- cmp: scedilla
Iukran.swash
fin: uni0406.swash
sub: Iukran+swsh
diff --git a/requirements.txt b/requirements.txt
index 755e45263..3f6e3c421 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -10,4 +10,4 @@ fontMath==0.9.3
fontTools[unicode,woff,lxml,ufo]==4.43.0
tqdm==4.66.1
ufonormalizer==0.6.1
-ufoProcessor==1.9.0
+ufoProcessor==1.13.1
diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/fontinfo.plist
index 226852100..9184e4562 100644
--- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/fontinfo.plist
+++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/fontinfo.plist
@@ -6,6 +6,8 @@
750
capHeight
750
+ copyright
+ Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'.
descender
-250
familyName
@@ -15,6 +17,11 @@
italicAngle
0
+ openTypeNameLicense
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is available with a FAQ at: http://scripts.sil.org/OFL. This Font Software is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software.
+ openTypeNameLicenseURL
+ http://scripts.sil.org/OFL
postscriptBlueFuzz
0
postscriptBlueScale
@@ -60,6 +67,8 @@
postscriptFontName
Dummy-ExtraMinus
+ postscriptForceBold
+
postscriptOtherBlues
-243
@@ -81,8 +90,14 @@
50
styleName
Extra Minus
+ trademark
+ Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
unitsPerEm
1000
+ versionMajor
+ 2
+ versionMinor
+ 0
xHeight
500
diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/fontinfo.plist
index 16c9ed1a4..2780d2628 100644
--- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/fontinfo.plist
+++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/fontinfo.plist
@@ -6,6 +6,8 @@
750
capHeight
750
+ copyright
+ Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'.
descender
-250
familyName
@@ -15,6 +17,11 @@
italicAngle
0
+ openTypeNameLicense
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is available with a FAQ at: http://scripts.sil.org/OFL. This Font Software is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software.
+ openTypeNameLicenseURL
+ http://scripts.sil.org/OFL
postscriptBlueFuzz
0
postscriptBlueScale
@@ -60,6 +67,8 @@
postscriptFontName
Dummy-ExtraPlus
+ postscriptForceBold
+
postscriptOtherBlues
-165
@@ -81,8 +90,14 @@
50
styleName
Extra Plus
+ trademark
+ Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
unitsPerEm
1000
+ versionMajor
+ 2
+ versionMinor
+ 0
xHeight
500
diff --git a/tests/makeinstancesufo_data/expected_output/anisotropic.ufo/groups.plist b/tests/makeinstancesufo_data/expected_output/anisotropic.ufo/groups.plist
index 61918a0e9..3548ad16e 100644
--- a/tests/makeinstancesufo_data/expected_output/anisotropic.ufo/groups.plist
+++ b/tests/makeinstancesufo_data/expected_output/anisotropic.ufo/groups.plist
@@ -2,6 +2,62 @@
+ @MMK_L_LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ @MMK_L_LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ @MMK_L_LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ @MMK_L_LAT_v
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
+ @MMK_R_LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ @MMK_R_LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ @MMK_R_LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ @MMK_R_LAT_y
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
Not a kerning group
a
diff --git a/tests/makeinstancesufo_data/expected_output/bend1.ufo/features.fea b/tests/makeinstancesufo_data/expected_output/bend1.ufo/features.fea
new file mode 100644
index 000000000..95e89ffb5
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/bend1.ufo/features.fea
@@ -0,0 +1,14 @@
+@lat_UC_left = [ A B C D E F G H J K L M N O P R S T U V W X Y Z ];
+
+@lat_lcnew_right = [ a o l lslash b ];
+
+@punct_left = [ hyphen parenleft quotedblbase guillemotleft quotedblleft guillemotright quotedblright asterisk quotesingle comma period slash colon semicolon question backslash bullet ];
+
+@punct_right = [ hyphen parenright guillemotleft quotedblleft guillemotright quotedblright exclam quotedbl asterisk comma period slash colon semicolon question backslash bullet ];
+
+@lat_lc_right = [ a n e c f g i j lslash o p d h s t u v w x y z ];
+
+@lat_lcnew_left = [ d dcaron e c l lslash o eth s germandbls ];
+
+@lat_lc_left = [ c dcaron eth e f longs germandbls g j k lslash o b r d n a s t v w x y z ];
+
diff --git a/tests/makeinstancesufo_data/expected_output/bend2.ufo/features.fea b/tests/makeinstancesufo_data/expected_output/bend2.ufo/features.fea
new file mode 100644
index 000000000..95e89ffb5
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/bend2.ufo/features.fea
@@ -0,0 +1,14 @@
+@lat_UC_left = [ A B C D E F G H J K L M N O P R S T U V W X Y Z ];
+
+@lat_lcnew_right = [ a o l lslash b ];
+
+@punct_left = [ hyphen parenleft quotedblbase guillemotleft quotedblleft guillemotright quotedblright asterisk quotesingle comma period slash colon semicolon question backslash bullet ];
+
+@punct_right = [ hyphen parenright guillemotleft quotedblleft guillemotright quotedblright exclam quotedbl asterisk comma period slash colon semicolon question backslash bullet ];
+
+@lat_lc_right = [ a n e c f g i j lslash o p d h s t u v w x y z ];
+
+@lat_lcnew_left = [ d dcaron e c l lslash o eth s germandbls ];
+
+@lat_lc_left = [ c dcaron eth e f longs germandbls g j k lslash o b r d n a s t v w x y z ];
+
diff --git a/tests/makeinstancesufo_data/expected_output/bend3.ufo/features.fea b/tests/makeinstancesufo_data/expected_output/bend3.ufo/features.fea
new file mode 100644
index 000000000..95e89ffb5
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/bend3.ufo/features.fea
@@ -0,0 +1,14 @@
+@lat_UC_left = [ A B C D E F G H J K L M N O P R S T U V W X Y Z ];
+
+@lat_lcnew_right = [ a o l lslash b ];
+
+@punct_left = [ hyphen parenleft quotedblbase guillemotleft quotedblleft guillemotright quotedblright asterisk quotesingle comma period slash colon semicolon question backslash bullet ];
+
+@punct_right = [ hyphen parenright guillemotleft quotedblleft guillemotright quotedblright exclam quotedbl asterisk comma period slash colon semicolon question backslash bullet ];
+
+@lat_lc_right = [ a n e c f g i j lslash o p d h s t u v w x y z ];
+
+@lat_lcnew_left = [ d dcaron e c l lslash o eth s germandbls ];
+
+@lat_lc_left = [ c dcaron eth e f longs germandbls g j k lslash o b r d n a s t v w x y z ];
+
diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/groups.plist b/tests/makeinstancesufo_data/expected_output/black.ufo/groups.plist
index 61918a0e9..3548ad16e 100644
--- a/tests/makeinstancesufo_data/expected_output/black.ufo/groups.plist
+++ b/tests/makeinstancesufo_data/expected_output/black.ufo/groups.plist
@@ -2,6 +2,62 @@
+ @MMK_L_LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ @MMK_L_LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ @MMK_L_LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ @MMK_L_LAT_v
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
+ @MMK_R_LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ @MMK_R_LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ @MMK_R_LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ @MMK_R_LAT_y
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
Not a kerning group
a
diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/groups.plist b/tests/makeinstancesufo_data/expected_output/bold.ufo/groups.plist
index 61918a0e9..3548ad16e 100644
--- a/tests/makeinstancesufo_data/expected_output/bold.ufo/groups.plist
+++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/groups.plist
@@ -2,6 +2,62 @@
+ @MMK_L_LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ @MMK_L_LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ @MMK_L_LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ @MMK_L_LAT_v
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
+ @MMK_R_LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ @MMK_R_LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ @MMK_R_LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ @MMK_R_LAT_y
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
Not a kerning group
a
diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/groups.plist b/tests/makeinstancesufo_data/expected_output/extralight.ufo/groups.plist
index b348c047e..2527be6b3 100644
--- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/groups.plist
+++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/groups.plist
@@ -2,6 +2,62 @@
+ @MMK_L_LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ @MMK_L_LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ @MMK_L_LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ @MMK_L_LAT_v
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
+ @MMK_R_LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ @MMK_R_LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ @MMK_R_LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ @MMK_R_LAT_y
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
Not a kerning group
a
diff --git a/tests/makeinstancesufo_data/expected_output/features_copy1.ufo/features.fea b/tests/makeinstancesufo_data/expected_output/features_copy1.ufo/features.fea
index 83c90d56e..9ed154f99 100644
--- a/tests/makeinstancesufo_data/expected_output/features_copy1.ufo/features.fea
+++ b/tests/makeinstancesufo_data/expected_output/features_copy1.ufo/features.fea
@@ -1 +1 @@
-# Master 1
+# Master 0
diff --git a/tests/makeinstancesufo_data/expected_output/features_copy2.ufo/features.fea b/tests/makeinstancesufo_data/expected_output/features_copy2.ufo/features.fea
index 83c90d56e..9ed154f99 100644
--- a/tests/makeinstancesufo_data/expected_output/features_copy2.ufo/features.fea
+++ b/tests/makeinstancesufo_data/expected_output/features_copy2.ufo/features.fea
@@ -1 +1 @@
-# Master 1
+# Master 0
diff --git a/tests/makeinstancesufo_data/expected_output/light.ufo/groups.plist b/tests/makeinstancesufo_data/expected_output/light.ufo/groups.plist
index b348c047e..2527be6b3 100644
--- a/tests/makeinstancesufo_data/expected_output/light.ufo/groups.plist
+++ b/tests/makeinstancesufo_data/expected_output/light.ufo/groups.plist
@@ -2,6 +2,62 @@
+ @MMK_L_LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ @MMK_L_LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ @MMK_L_LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ @MMK_L_LAT_v
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
+ @MMK_R_LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ @MMK_R_LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ @MMK_R_LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ @MMK_R_LAT_y
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
Not a kerning group
a
diff --git a/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/features.fea b/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/features.fea
new file mode 100644
index 000000000..dd5c29503
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/features.fea
@@ -0,0 +1,11 @@
+### prefix:-1: ###
+### open prefix '' ###
+languagesystem DFLT dflt;
+### close prefix '' ###
+
+table GDEF {
+ GlyphClassDef ,# Base
+ , # Liga
+ , # Mark
+ ;
+ } GDEF;
diff --git a/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/fontinfo.plist
new file mode 100644
index 000000000..66cbcf01a
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/fontinfo.plist
@@ -0,0 +1,56 @@
+
+
+
+
+ ascender
+ 800
+ capHeight
+ 700
+ descender
+ -200
+ familyName
+ Font
+ guidelines
+
+ italicAngle
+ 0
+ openTypeHeadCreated
+ 2024/08/07 17:44:51
+ postscriptBlueValues
+
+ -16
+ 0
+ 500
+ 516
+ 700
+ 716
+ 800
+ 816
+
+ postscriptFamilyBlues
+
+ postscriptFamilyOtherBlues
+
+ postscriptFontName
+ Font-Black
+ postscriptOtherBlues
+
+ -216
+ -200
+
+ postscriptStemSnapH
+
+ postscriptStemSnapV
+
+ styleName
+ Black
+ unitsPerEm
+ 1000
+ versionMajor
+ 1
+ versionMinor
+ 0
+ xHeight
+ 500
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/glyphs/_notdef.glif b/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/glyphs/_notdef.glif
new file mode 100644
index 000000000..50ec2b579
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/glyphs/_notdef.glif
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/glyphs/contents.plist b/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/glyphs/contents.plist
new file mode 100644
index 000000000..374cc07e3
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/glyphs/contents.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ .notdef
+ _notdef.glif
+ iamaglyph
+ iamaglyph.glif
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/glyphs/iamaglyph.glif b/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/glyphs/iamaglyph.glif
new file mode 100644
index 000000000..617169254
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/glyphs/iamaglyph.glif
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/layercontents.plist b/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/layercontents.plist
new file mode 100644
index 000000000..b9c1a4f27
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/layercontents.plist
@@ -0,0 +1,10 @@
+
+
+
+
+
+ public.default
+ glyphs
+
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/lib.plist b/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/lib.plist
new file mode 100644
index 000000000..61c80ef34
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/lib.plist
@@ -0,0 +1,11 @@
+
+
+
+
+ public.glyphOrder
+
+ .notdef
+ iamaglyph
+
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/metainfo.plist b/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/metainfo.plist
new file mode 100644
index 000000000..7b8b34ac6
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/overlapping-Black.ufo/metainfo.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ creator
+ com.github.fonttools.ufoLib
+ formatVersion
+ 3
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/features.fea b/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/features.fea
new file mode 100644
index 000000000..dd5c29503
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/features.fea
@@ -0,0 +1,11 @@
+### prefix:-1: ###
+### open prefix '' ###
+languagesystem DFLT dflt;
+### close prefix '' ###
+
+table GDEF {
+ GlyphClassDef ,# Base
+ , # Liga
+ , # Mark
+ ;
+ } GDEF;
diff --git a/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/fontinfo.plist
new file mode 100644
index 000000000..dbd7d1574
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/fontinfo.plist
@@ -0,0 +1,56 @@
+
+
+
+
+ ascender
+ 800
+ capHeight
+ 700
+ descender
+ -200
+ familyName
+ Font
+ guidelines
+
+ italicAngle
+ 0
+ openTypeHeadCreated
+ 2024/08/07 17:44:51
+ postscriptBlueValues
+
+ -16
+ 0
+ 500
+ 516
+ 700
+ 716
+ 800
+ 816
+
+ postscriptFamilyBlues
+
+ postscriptFamilyOtherBlues
+
+ postscriptFontName
+ Font-ExtraLight
+ postscriptOtherBlues
+
+ -216
+ -200
+
+ postscriptStemSnapH
+
+ postscriptStemSnapV
+
+ styleName
+ Thin
+ unitsPerEm
+ 1000
+ versionMajor
+ 1
+ versionMinor
+ 0
+ xHeight
+ 500
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/glyphs/_notdef.glif b/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/glyphs/_notdef.glif
new file mode 100644
index 000000000..50ec2b579
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/glyphs/_notdef.glif
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/glyphs/contents.plist b/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/glyphs/contents.plist
new file mode 100644
index 000000000..374cc07e3
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/glyphs/contents.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ .notdef
+ _notdef.glif
+ iamaglyph
+ iamaglyph.glif
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/glyphs/iamaglyph.glif b/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/glyphs/iamaglyph.glif
new file mode 100644
index 000000000..b1cb2031a
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/glyphs/iamaglyph.glif
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/layercontents.plist b/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/layercontents.plist
new file mode 100644
index 000000000..b9c1a4f27
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/layercontents.plist
@@ -0,0 +1,10 @@
+
+
+
+
+
+ public.default
+ glyphs
+
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/lib.plist b/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/lib.plist
new file mode 100644
index 000000000..61c80ef34
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/lib.plist
@@ -0,0 +1,11 @@
+
+
+
+
+ public.glyphOrder
+
+ .notdef
+ iamaglyph
+
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/metainfo.plist b/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/metainfo.plist
new file mode 100644
index 000000000..7b8b34ac6
--- /dev/null
+++ b/tests/makeinstancesufo_data/expected_output/overlapping-Thin.ufo/metainfo.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ creator
+ com.github.fonttools.ufoLib
+ formatVersion
+ 3
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/groups.plist b/tests/makeinstancesufo_data/expected_output/regular.ufo/groups.plist
index b348c047e..2527be6b3 100644
--- a/tests/makeinstancesufo_data/expected_output/regular.ufo/groups.plist
+++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/groups.plist
@@ -2,6 +2,62 @@
+ @MMK_L_LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ @MMK_L_LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ @MMK_L_LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ @MMK_L_LAT_v
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
+ @MMK_R_LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ @MMK_R_LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ @MMK_R_LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ @MMK_R_LAT_y
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
Not a kerning group
a
diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/groups.plist b/tests/makeinstancesufo_data/expected_output/regular1.ufo/groups.plist
index 61918a0e9..3548ad16e 100644
--- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/groups.plist
+++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/groups.plist
@@ -2,6 +2,62 @@
+ @MMK_L_LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ @MMK_L_LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ @MMK_L_LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ @MMK_L_LAT_v
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
+ @MMK_R_LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ @MMK_R_LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ @MMK_R_LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ @MMK_R_LAT_y
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
Not a kerning group
a
diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/groups.plist b/tests/makeinstancesufo_data/expected_output/semibold.ufo/groups.plist
index b348c047e..2527be6b3 100644
--- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/groups.plist
+++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/groups.plist
@@ -2,6 +2,62 @@
+ @MMK_L_LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ @MMK_L_LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ @MMK_L_LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ @MMK_L_LAT_v
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
+ @MMK_R_LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ @MMK_R_LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ @MMK_R_LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ @MMK_R_LAT_y
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
Not a kerning group
a
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/fontinfo.plist
index 6bfc12612..dd8363e58 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/fontinfo.plist
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/fontinfo.plist
@@ -12,6 +12,9 @@
-239
familyName
Source Serif Pro
+ guidelines
+
+
italicAngle
0
openTypeHheaAscender
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/A_.glif
index 418707211..1b8c38d86 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/A_.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/A_.glif
@@ -1,5 +1,5 @@
-
+
@@ -35,14 +35,8 @@
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/A_acute.glif
index 13e7c81aa..7052001c3 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/A_acute.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/A_acute.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/A_dieresis.glif
index 8473b218d..e79c0b5e7 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/A_dieresis.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/A_dieresis.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/A_tilde.glif
index 919af4ab9..2771b7328 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/A_tilde.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/A_tilde.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/Y_.glif
index 6913eae68..11dbd3c62 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/Y_.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/Y_.glif
@@ -1,5 +1,5 @@
-
+
@@ -47,11 +47,7 @@
-
-
-
-
-
-
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/Y_acute.glif
index 774a44d02..63bfa65a9 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/Y_acute.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/Y_acute.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/Y_dieresis.glif
index 14b96718c..ee6cde80f 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/Y_dieresis.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/Y_dieresis.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/Y_tilde.glif
index c059d610d..ef5de6301 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/Y_tilde.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/Y_tilde.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/a.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/a.glif
index c2b774e62..902146aab 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/a.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/a.glif
@@ -1,5 +1,5 @@
-
+
@@ -70,14 +70,8 @@
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/aacute.glif
index 87e704d30..5fb6d9a6f 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/aacute.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/aacute.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/acutecmb.cap.glif
index 05433b6bc..c1a3d3a07 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/acutecmb.cap.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/acutecmb.cap.glif
@@ -1,5 +1,5 @@
-
+
@@ -19,8 +19,6 @@
-
-
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/acutecmb.glif
index 3f1a7dba3..39b838b9c 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/acutecmb.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/acutecmb.glif
@@ -1,5 +1,5 @@
-
+
@@ -20,8 +20,6 @@
-
-
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/adieresis.glif
index 84a59469f..e11a7b10f 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/adieresis.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/adieresis.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/atilde.glif
index 18b0b00ea..227256e00 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/atilde.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/atilde.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/dieresiscmb.cap.glif
index cb7618f51..c03d333de 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/dieresiscmb.cap.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/dieresiscmb.cap.glif
@@ -1,5 +1,5 @@
-
+
@@ -29,8 +29,6 @@
-
-
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/dieresiscmb.glif
index c27abdc28..bea0714e4 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/dieresiscmb.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/dieresiscmb.glif
@@ -1,5 +1,5 @@
-
+
@@ -30,11 +30,7 @@
-
-
-
-
-
-
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/tildecmb.cap.glif
index b935e133b..379a687bf 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/tildecmb.cap.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/tildecmb.cap.glif
@@ -1,5 +1,5 @@
-
+
@@ -29,8 +29,6 @@
-
-
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/tildecmb.glif
index d37fb6146..a0277624c 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/tildecmb.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/tildecmb.glif
@@ -1,5 +1,5 @@
-
+
@@ -30,8 +30,6 @@
-
-
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/y.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/y.glif
index ff2b42182..457ccc624 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/y.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/y.glif
@@ -1,5 +1,5 @@
-
+
@@ -49,11 +49,7 @@
-
-
-
-
-
-
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/yacute.glif
index 826e16a22..b8846bea3 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/yacute.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/yacute.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/ydieresis.glif
index d0b302786..dcb0c3a75 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/ydieresis.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/ydieresis.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/ytilde.glif
index cb03f22d9..2d76a9867 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/ytilde.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/glyphs/ytilde.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/groups.plist b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/groups.plist
index dcc8184b8..2527be6b3 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/groups.plist
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/groups.plist
@@ -66,5 +66,61 @@
d
e
+ public.kern1.LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ public.kern1.LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ public.kern1.LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ public.kern1.LAT_v
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
+ public.kern2.LAT_A
+
+ A
+ Aacute
+ Adieresis
+ Atilde
+
+ public.kern2.LAT_Y
+
+ Y
+ Yacute
+ Ydieresis
+ Ytilde
+
+ public.kern2.LAT_a
+
+ a
+ aacute
+ adieresis
+ atilde
+
+ public.kern2.LAT_y
+
+ y
+ yacute
+ ydieresis
+ ytilde
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/kerning.plist b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/kerning.plist
index 33db1da84..9cc8895d3 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo2.ufo/kerning.plist
+++ b/tests/makeinstancesufo_data/expected_output/ufo2.ufo/kerning.plist
@@ -2,50 +2,50 @@
- @MMK_L_LAT_A
+ public.kern1.LAT_A
- @MMK_R_LAT_A
+ public.kern2.LAT_A
10
- @MMK_R_LAT_Y
+ public.kern2.LAT_Y
-90
- @MMK_R_LAT_a
+ public.kern2.LAT_a
-5
- @MMK_R_LAT_y
+ public.kern2.LAT_y
-50
- @MMK_L_LAT_Y
+ public.kern1.LAT_Y
- @MMK_R_LAT_A
- -90
- @MMK_R_LAT_Y
- 0
- @MMK_R_LAT_a
- -80
- @MMK_R_LAT_y
- -69
adieresis
-79
atilde
-61
+ public.kern2.LAT_A
+ -90
+ public.kern2.LAT_Y
+ 0
+ public.kern2.LAT_a
+ -80
+ public.kern2.LAT_y
+ -69
- @MMK_L_LAT_a
+ public.kern1.LAT_a
- @MMK_R_LAT_A
+ public.kern2.LAT_A
10
- @MMK_R_LAT_Y
+ public.kern2.LAT_Y
-80
- @MMK_R_LAT_y
+ public.kern2.LAT_y
-10
- @MMK_L_LAT_v
+ public.kern1.LAT_v
- @MMK_R_LAT_A
+ public.kern2.LAT_A
-71
- @MMK_R_LAT_Y
+ public.kern2.LAT_Y
-50
- @MMK_R_LAT_a
+ public.kern2.LAT_a
-16
- @MMK_R_LAT_y
+ public.kern2.LAT_y
9
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/fontinfo.plist
index 199cb1c21..f7074fbbf 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/fontinfo.plist
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/fontinfo.plist
@@ -12,6 +12,9 @@
-231
familyName
Source Serif Pro
+ guidelines
+
+
italicAngle
0
openTypeHheaAscender
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/A_.glif
index 67443357a..f5ea7b561 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/A_.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/A_.glif
@@ -1,5 +1,5 @@
-
+
@@ -35,14 +35,8 @@
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/A_acute.glif
index fb33eec1f..d8d29c11a 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/A_acute.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/A_acute.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/A_dieresis.glif
index f3535950a..90b1ed882 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/A_dieresis.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/A_dieresis.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/A_tilde.glif
index 2458f61e7..e08cac5a4 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/A_tilde.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/A_tilde.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/Y_.glif
index 457fe1992..c6518a697 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/Y_.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/Y_.glif
@@ -1,5 +1,5 @@
-
+
@@ -47,11 +47,7 @@
-
-
-
-
-
-
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/Y_acute.glif
index 3d66593ba..920051ea6 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/Y_acute.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/Y_acute.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/Y_dieresis.glif
index 316cf040b..aee2fb497 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/Y_dieresis.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/Y_dieresis.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/Y_tilde.glif
index 5ea48f002..be908b1a1 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/Y_tilde.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/Y_tilde.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/a.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/a.glif
index e0d66c6b2..0f76c83d0 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/a.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/a.glif
@@ -1,5 +1,5 @@
-
+
@@ -70,14 +70,8 @@
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/aacute.glif
index 60126f80e..77d2bc2d2 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/aacute.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/aacute.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/acutecmb.cap.glif
index ae408954c..e8fd81b25 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/acutecmb.cap.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/acutecmb.cap.glif
@@ -1,5 +1,5 @@
-
+
@@ -19,8 +19,6 @@
-
-
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/acutecmb.glif
index 23fe0f9f7..fe8dc474d 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/acutecmb.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/acutecmb.glif
@@ -1,5 +1,5 @@
-
+
@@ -20,8 +20,6 @@
-
-
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/adieresis.glif
index 3a26ab5d2..d011cac40 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/adieresis.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/adieresis.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/atilde.glif
index 513076017..5c3323cc8 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/atilde.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/atilde.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/dieresiscmb.cap.glif
index 03b3d969d..3a304a5de 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/dieresiscmb.cap.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/dieresiscmb.cap.glif
@@ -1,5 +1,5 @@
-
+
@@ -29,8 +29,6 @@
-
-
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/dieresiscmb.glif
index 75b68d470..53e042ed0 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/dieresiscmb.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/dieresiscmb.glif
@@ -1,5 +1,5 @@
-
+
@@ -30,11 +30,7 @@
-
-
-
-
-
-
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/tildecmb.cap.glif
index 16b6c3110..5a2048368 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/tildecmb.cap.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/tildecmb.cap.glif
@@ -1,5 +1,5 @@
-
+
@@ -29,8 +29,6 @@
-
-
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/tildecmb.glif
index e229c7e14..c91b9ff8f 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/tildecmb.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/tildecmb.glif
@@ -1,5 +1,5 @@
-
+
@@ -30,8 +30,6 @@
-
-
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/y.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/y.glif
index 0c6a95057..c03dea1ac 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/y.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/y.glif
@@ -1,5 +1,5 @@
-
+
@@ -49,11 +49,7 @@
-
-
-
-
-
-
+
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/yacute.glif
index 8608a7910..3e4bd30f5 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/yacute.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/yacute.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/ydieresis.glif
index 7461fd7c1..3af795a58 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/ydieresis.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/ydieresis.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/ytilde.glif
index 3aded687f..58bb7e056 100644
--- a/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/ytilde.glif
+++ b/tests/makeinstancesufo_data/expected_output/ufo3semibold.ufo/glyphs/ytilde.glif
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/features.fea b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/features.fea
new file mode 100644
index 000000000..dd5c29503
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/features.fea
@@ -0,0 +1,11 @@
+### prefix:-1: ###
+### open prefix '' ###
+languagesystem DFLT dflt;
+### close prefix '' ###
+
+table GDEF {
+ GlyphClassDef ,# Base
+ , # Liga
+ , # Mark
+ ;
+ } GDEF;
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/fontinfo.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/fontinfo.plist
new file mode 100644
index 000000000..1b47c0256
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/fontinfo.plist
@@ -0,0 +1,56 @@
+
+
+
+
+ ascender
+ 800
+ capHeight
+ 700
+ descender
+ -200
+ familyName
+ OverlappingPoints
+ guidelines
+
+ italicAngle
+ 0
+ openTypeHeadCreated
+ 2024/08/07 17:44:51
+ postscriptBlueValues
+
+ -16
+ 0
+ 500
+ 516
+ 700
+ 716
+ 800
+ 816
+
+ postscriptFamilyBlues
+
+ postscriptFamilyOtherBlues
+
+ postscriptFontName
+ OverlappingPoints-Regular
+ postscriptOtherBlues
+
+ -216
+ -200
+
+ postscriptStemSnapH
+
+ postscriptStemSnapV
+
+ styleName
+ Black
+ unitsPerEm
+ 1000
+ versionMajor
+ 1
+ versionMinor
+ 0
+ xHeight
+ 500
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/glyphs/_notdef.glif b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/glyphs/_notdef.glif
new file mode 100644
index 000000000..50ec2b579
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/glyphs/_notdef.glif
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/glyphs/contents.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/glyphs/contents.plist
new file mode 100644
index 000000000..374cc07e3
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/glyphs/contents.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ .notdef
+ _notdef.glif
+ iamaglyph
+ iamaglyph.glif
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/glyphs/iamaglyph.glif b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/glyphs/iamaglyph.glif
new file mode 100644
index 000000000..fbba4b45d
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/glyphs/iamaglyph.glif
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/glyphs/layerinfo.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/glyphs/layerinfo.plist
new file mode 100644
index 000000000..e0dd9a592
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/glyphs/layerinfo.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ color
+ 0.5,0,0.5,0.7
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/layercontents.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/layercontents.plist
new file mode 100644
index 000000000..b9c1a4f27
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/layercontents.plist
@@ -0,0 +1,10 @@
+
+
+
+
+
+ public.default
+ glyphs
+
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/lib.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/lib.plist
new file mode 100644
index 000000000..b8546f8e9
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/lib.plist
@@ -0,0 +1,11 @@
+
+
+
+
+ public.glyphOrder
+
+ .notdef
+ iamaglyph
+
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/metainfo.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/metainfo.plist
new file mode 100644
index 000000000..7b8b34ac6
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Black.ufo/metainfo.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ creator
+ com.github.fonttools.ufoLib
+ formatVersion
+ 3
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/features.fea b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/features.fea
new file mode 100644
index 000000000..dd5c29503
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/features.fea
@@ -0,0 +1,11 @@
+### prefix:-1: ###
+### open prefix '' ###
+languagesystem DFLT dflt;
+### close prefix '' ###
+
+table GDEF {
+ GlyphClassDef ,# Base
+ , # Liga
+ , # Mark
+ ;
+ } GDEF;
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/fontinfo.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/fontinfo.plist
new file mode 100644
index 000000000..84eec370f
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/fontinfo.plist
@@ -0,0 +1,56 @@
+
+
+
+
+ ascender
+ 800
+ capHeight
+ 700
+ descender
+ -200
+ familyName
+ OverlappingPoints
+ guidelines
+
+ italicAngle
+ 0
+ openTypeHeadCreated
+ 2024/08/07 17:44:51
+ postscriptBlueValues
+
+ -16
+ 0
+ 500
+ 516
+ 700
+ 716
+ 800
+ 816
+
+ postscriptFamilyBlues
+
+ postscriptFamilyOtherBlues
+
+ postscriptFontName
+ OverlappingPoints-Regular
+ postscriptOtherBlues
+
+ -216
+ -200
+
+ postscriptStemSnapH
+
+ postscriptStemSnapV
+
+ styleName
+ Regular
+ unitsPerEm
+ 1000
+ versionMajor
+ 1
+ versionMinor
+ 0
+ xHeight
+ 500
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/glyphs/_notdef.glif b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/glyphs/_notdef.glif
new file mode 100644
index 000000000..50ec2b579
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/glyphs/_notdef.glif
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/glyphs/contents.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/glyphs/contents.plist
new file mode 100644
index 000000000..374cc07e3
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/glyphs/contents.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ .notdef
+ _notdef.glif
+ iamaglyph
+ iamaglyph.glif
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/glyphs/iamaglyph.glif b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/glyphs/iamaglyph.glif
new file mode 100644
index 000000000..7cdb929f8
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/glyphs/iamaglyph.glif
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/glyphs/layerinfo.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/glyphs/layerinfo.plist
new file mode 100644
index 000000000..e0dd9a592
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/glyphs/layerinfo.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ color
+ 0.5,0,0.5,0.7
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/layercontents.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/layercontents.plist
new file mode 100644
index 000000000..b9c1a4f27
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/layercontents.plist
@@ -0,0 +1,10 @@
+
+
+
+
+
+ public.default
+ glyphs
+
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/lib.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/lib.plist
new file mode 100644
index 000000000..b8546f8e9
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/lib.plist
@@ -0,0 +1,11 @@
+
+
+
+
+ public.glyphOrder
+
+ .notdef
+ iamaglyph
+
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/metainfo.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/metainfo.plist
new file mode 100644
index 000000000..7b8b34ac6
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Regular.ufo/metainfo.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ creator
+ com.github.fonttools.ufoLib
+ formatVersion
+ 3
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/features.fea b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/features.fea
new file mode 100644
index 000000000..dd5c29503
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/features.fea
@@ -0,0 +1,11 @@
+### prefix:-1: ###
+### open prefix '' ###
+languagesystem DFLT dflt;
+### close prefix '' ###
+
+table GDEF {
+ GlyphClassDef ,# Base
+ , # Liga
+ , # Mark
+ ;
+ } GDEF;
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/fontinfo.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/fontinfo.plist
new file mode 100644
index 000000000..b3bd0d282
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/fontinfo.plist
@@ -0,0 +1,56 @@
+
+
+
+
+ ascender
+ 800
+ capHeight
+ 700
+ descender
+ -200
+ familyName
+ OverlappingPoints
+ guidelines
+
+ italicAngle
+ 0
+ openTypeHeadCreated
+ 2024/08/07 17:44:51
+ postscriptBlueValues
+
+ -16
+ 0
+ 500
+ 516
+ 700
+ 716
+ 800
+ 816
+
+ postscriptFamilyBlues
+
+ postscriptFamilyOtherBlues
+
+ postscriptFontName
+ OverlappingPoints-Regular
+ postscriptOtherBlues
+
+ -216
+ -200
+
+ postscriptStemSnapH
+
+ postscriptStemSnapV
+
+ styleName
+ Thin
+ unitsPerEm
+ 1000
+ versionMajor
+ 1
+ versionMinor
+ 0
+ xHeight
+ 500
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/glyphs/_notdef.glif b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/glyphs/_notdef.glif
new file mode 100644
index 000000000..50ec2b579
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/glyphs/_notdef.glif
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/glyphs/contents.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/glyphs/contents.plist
new file mode 100644
index 000000000..374cc07e3
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/glyphs/contents.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ .notdef
+ _notdef.glif
+ iamaglyph
+ iamaglyph.glif
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/glyphs/iamaglyph.glif b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/glyphs/iamaglyph.glif
new file mode 100644
index 000000000..044718c51
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/glyphs/iamaglyph.glif
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/glyphs/layerinfo.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/glyphs/layerinfo.plist
new file mode 100644
index 000000000..e0dd9a592
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/glyphs/layerinfo.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ color
+ 0.5,0,0.5,0.7
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/layercontents.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/layercontents.plist
new file mode 100644
index 000000000..b9c1a4f27
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/layercontents.plist
@@ -0,0 +1,10 @@
+
+
+
+
+
+ public.default
+ glyphs
+
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/lib.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/lib.plist
new file mode 100644
index 000000000..b8546f8e9
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/lib.plist
@@ -0,0 +1,11 @@
+
+
+
+
+ public.glyphOrder
+
+ .notdef
+ iamaglyph
+
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/metainfo.plist b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/metainfo.plist
new file mode 100644
index 000000000..7b8b34ac6
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints-Thin.ufo/metainfo.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ creator
+ com.github.fonttools.ufoLib
+ formatVersion
+ 3
+
+
diff --git a/tests/makeinstancesufo_data/input/OverlappingPoints.designspace b/tests/makeinstancesufo_data/input/OverlappingPoints.designspace
new file mode 100644
index 000000000..2cf65a4f8
--- /dev/null
+++ b/tests/makeinstancesufo_data/input/OverlappingPoints.designspace
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/makeinstancesufo_data/input/font.designspace b/tests/makeinstancesufo_data/input/font.designspace
index 65f330977..192e895ed 100644
--- a/tests/makeinstancesufo_data/input/font.designspace
+++ b/tests/makeinstancesufo_data/input/font.designspace
@@ -85,7 +85,7 @@
-
+
diff --git a/tests/makeinstancesufo_test.py b/tests/makeinstancesufo_test.py
index 0c4775e67..92b5dfe9b 100644
--- a/tests/makeinstancesufo_test.py
+++ b/tests/makeinstancesufo_test.py
@@ -212,3 +212,19 @@ def test_extrapolate(capfd, use_varlib):
assert "Extrapolation is not supported with varlib (Dummy Extra Plus weight: 1500.0)" in captured.err # noqa: E501
else:
assert differ([expected_path, actual_path])
+
+
+def test_strict_flag(capfd):
+ """
+ Test extrapolating, with default (MutatorMath) and with varlib.
+ Using varlib should fail (output should not be extrapolated) because
+ extrapolation is not supported by varlib.
+ """
+ runner_args = ['-t', TOOL, '-o', 'a', 'c', 'n', 's', 'd', f'_{get_input_path("OverlappingPoints.designspace")}'] # noqa: E501
+ runner(runner_args)
+
+ for ufo_filename in ("overlapping-Thin.ufo", "overlapping-Black.ufo"):
+ expected_path = _get_output_path(ufo_filename, 'expected_output')
+ actual_path = _get_output_path(ufo_filename, 'temp_output')
+
+ assert differ([expected_path, actual_path])