diff --git a/.qwen/settings.json b/.qwen/settings.json index a06a90c979..5924714501 100644 --- a/.qwen/settings.json +++ b/.qwen/settings.json @@ -28,7 +28,10 @@ "Bash(tasklist *)", "Bash(git restore *)", "Bash(rd *)", - "Bash(echo.)" + "Bash(echo.)", + "Bash(git checkout *)", + "Bash(timeout *)", + "Bash(curl *)" ] }, "$version": 3 diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/font-data.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/font-data.json new file mode 100644 index 0000000000..cc533aa7bc --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/font-data.json @@ -0,0 +1,24 @@ +{ +"sources": { +"8486bc93": { +"name": "SemiBold", +"lineMetricsHorizontalLayout": { +"baseline": { +"value": 0 +}, +"ascender": { +"value": 770 +}, +"descender": { +"value": -230 +}, +"capHeight": { +"value": 690 +}, +"xHeight": { +"value": 530 +} +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyph-info.csv b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyph-info.csv new file mode 100644 index 0000000000..e649e570e4 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyph-info.csv @@ -0,0 +1,339 @@ +glyph name;code points +.notdef; +A;U+0041 +AE;U+00C6 +Aacute;U+00C1 +Abreve;U+0102 +Acircumflex;U+00C2 +Adieresis;U+00C4 +Agrave;U+00C0 +Amacron;U+0100 +Aogonek;U+0104 +Aring;U+00C5 +Atilde;U+00C3 +B;U+0042 +C;U+0043 +Cacute;U+0106 +Ccaron;U+010C +Ccedilla;U+00C7 +Cdotaccent;U+010A +D;U+0044 +Dcaron;U+010E +Dcroat;U+0110 +E;U+0045 +Eacute;U+00C9 +Ecaron;U+011A +Ecircumflex;U+00CA +Edieresis;U+00CB +Edotaccent;U+0116 +Egrave;U+00C8 +Emacron;U+0112 +Eng;U+014A +Eogonek;U+0118 +Eth;U+00D0 +Euro;U+20AC +F;U+0046 +G;U+0047 +Gbreve;U+011E +Gcommaaccent;U+0122 +Gdotaccent;U+0120 +H;U+0048 +Hbar;U+0126 +I;U+0049 +IJ;U+0132 +Iacute;U+00CD +Icircumflex;U+00CE +Idieresis;U+00CF +Idotaccent;U+0130 +Igrave;U+00CC +Imacron;U+012A +Iogonek;U+012E +J;U+004A +K;U+004B +Kcommaaccent;U+0136 +L;U+004C +Lacute;U+0139 +Lcaron;U+013D +Lcommaaccent;U+013B +Ldot;U+013F +Lslash;U+0141 +M;U+004D +N;U+004E +Nacute;U+0143 +Ncaron;U+0147 +Ncommaaccent;U+0145 +Ntilde;U+00D1 +O;U+004F +OE;U+0152 +Oacute;U+00D3 +Ocircumflex;U+00D4 +Odieresis;U+00D6 +Ograve;U+00D2 +Ohungarumlaut;U+0150 +Omacron;U+014C +Oslash;U+00D8 +Otilde;U+00D5 +P;U+0050 +Q;U+0051 +R;U+0052 +Racute;U+0154 +Rcaron;U+0158 +Rcommaaccent;U+0156 +S;U+0053 +Sacute;U+015A +Scaron;U+0160 +Scedilla;U+015E +Scommaaccent;U+0218 +T;U+0054 +Tbar;U+0166 +Tcaron;U+0164 +Tcedilla;U+0162 +Thorn;U+00DE +U;U+0055 +Uacute;U+00DA +Ucircumflex;U+00DB +Udieresis;U+00DC +Ugrave;U+00D9 +Uhungarumlaut;U+0170 +Umacron;U+016A +Uogonek;U+0172 +Uring;U+016E +V;U+0056 +W;U+0057 +Wacute;U+1E82 +Wcircumflex;U+0174 +Wdieresis;U+1E84 +Wgrave;U+1E80 +X;U+0058 +Y;U+0059 +Yacute;U+00DD +Ycircumflex;U+0176 +Ydieresis;U+0178 +Ygrave;U+1EF2 +Z;U+005A +Zacute;U+0179 +Zcaron;U+017D +Zdotaccent;U+017B +a;U+0061 +aacute;U+00E1 +abreve;U+0103 +acircumflex;U+00E2 +acute;U+00B4 +adieresis;U+00E4 +ae;U+00E6 +agrave;U+00E0 +amacron;U+0101 +ampersand;U+0026 +aogonek;U+0105 +approxequal;U+2248 +aring;U+00E5 +asciicircum;U+005E +asciitilde;U+007E +asterisk;U+002A +at;U+0040 +atilde;U+00E3 +b;U+0062 +backslash;U+005C +bar;U+007C +braceleft;U+007B +braceright;U+007D +bracketleft;U+005B +bracketright;U+005D +breve;U+02D8 +brokenbar;U+00A6 +bullet;U+2022 +c;U+0063 +cacute;U+0107 +caron;U+02C7 +ccaron;U+010D +ccedilla;U+00E7 +cdotaccent;U+010B +cedilla;U+00B8 +cent;U+00A2 +circumflex;U+02C6 +colon;U+003A +comma;U+002C +copyright;U+00A9 +currency;U+00A4 +d;U+0064 +dagger;U+2020 +daggerdbl;U+2021 +dcaron;U+010F +dcroat;U+0111 +degree;U+00B0 +dieresis;U+00A8 +divide;U+00F7 +dollar;U+0024 +dotaccent;U+02D9 +dotlessi;U+0131 +e;U+0065 +eacute;U+00E9 +ecaron;U+011B +ecircumflex;U+00EA +edieresis;U+00EB +edotaccent;U+0117 +egrave;U+00E8 +eight;U+0038 +ellipsis;U+2026 +emacron;U+0113 +emdash;U+2014 +emptyset;U+2205 +endash;U+2013 +eng;U+014B +eogonek;U+0119 +equal;U+003D +eth;U+00F0 +exclam;U+0021 +exclamdown;U+00A1 +f;U+0066 +fi;U+FB01 +five;U+0035 +fl;U+FB02 +four;U+0034 +fraction;U+2044 +g;U+0067 +gbreve;U+011F +gcommaaccent;U+0123 +gdotaccent;U+0121 +germandbls;U+00DF +grave;U+0060 +greater;U+003E +greaterequal;U+2265 +guillemotleft;U+00AB +guillemotright;U+00BB +guilsinglleft;U+2039 +guilsinglright;U+203A +h;U+0068 +hbar;U+0127 +hungarumlaut;U+02DD +hyphen;U+002D +i;U+0069 +iacute;U+00ED +icircumflex;U+00EE +idieresis;U+00EF +igrave;U+00EC +ij;U+0133 +imacron;U+012B +infinity;U+221E +integral;U+222B +iogonek;U+012F +j;U+006A +k;U+006B +kcommaaccent;U+0137 +l;U+006C +lacute;U+013A +lcaron;U+013E +lcommaaccent;U+013C +ldot;U+0140 +less;U+003C +lessequal;U+2264 +logicalnot;U+00AC +lozenge;U+25CA +lslash;U+0142 +m;U+006D +macron;U+00AF +minus;U+2212 +multiply;U+00D7 +n;U+006E +nacute;U+0144 +ncaron;U+0148 +ncommaaccent;U+0146 +nine;U+0039 +notequal;U+2260 +ntilde;U+00F1 +numbersign;U+0023 +o;U+006F +oacute;U+00F3 +ocircumflex;U+00F4 +odieresis;U+00F6 +oe;U+0153 +ogonek;U+02DB +ograve;U+00F2 +ohungarumlaut;U+0151 +omacron;U+014D +one;U+0031 +oslash;U+00F8 +otilde;U+00F5 +p;U+0070 +paragraph;U+00B6 +parenleft;U+0028 +parenright;U+0029 +partialdiff;U+2202 +percent;U+0025 +period;U+002E +periodcentered;U+00B7 +perthousand;U+2030 +plus;U+002B +plusminus;U+00B1 +product;U+220F +q;U+0071 +question;U+003F +questiondown;U+00BF +quotedbl;U+0022 +quotedblbase;U+201E +quotedblleft;U+201C +quotedblright;U+201D +quoteleft;U+2018 +quoteright;U+2019 +quotesinglbase;U+201A +quotesingle;U+0027 +r;U+0072 +racute;U+0155 +radical;U+221A +rcaron;U+0159 +rcommaaccent;U+0157 +registered;U+00AE +ring;U+02DA +s;U+0073 +sacute;U+015B +scaron;U+0161 +scedilla;U+015F +scommaaccent;U+0219 +section;U+00A7 +semicolon;U+003B +seven;U+0037 +six;U+0036 +slash;U+002F +space;U+0020 +sterling;U+00A3 +summation;U+2211 +t;U+0074 +tbar;U+0167 +tcaron;U+0165 +tcedilla;U+0163 +thorn;U+00FE +three;U+0033 +tilde;U+02DC +trademark;U+2122 +two;U+0032 +u;U+0075 +uacute;U+00FA +ucircumflex;U+00FB +udieresis;U+00FC +ugrave;U+00F9 +uhungarumlaut;U+0171 +umacron;U+016B +underscore;U+005F +uni021A;U+021A +uni021B;U+021B +uni0326;U+0326 +uogonek;U+0173 +uring;U+016F +v;U+0076 +w;U+0077 +wacute;U+1E83 +wcircumflex;U+0175 +wdieresis;U+1E85 +wgrave;U+1E81 +x;U+0078 +y;U+0079 +yacute;U+00FD +ycircumflex;U+0177 +ydieresis;U+00FF +yen;U+00A5 +ygrave;U+1EF3 +z;U+007A +zacute;U+017A +zcaron;U+017E +zdotaccent;U+017C +zero;U+0030 diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/%2Enotdef.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/%2Enotdef.json new file mode 100644 index 0000000000..6509f15292 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/%2Enotdef.json @@ -0,0 +1,110 @@ +{ +"name": ".notdef", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 0, +"y": 0 +}, +{ +"x": 500, +"y": 0 +}, +{ +"x": 500, +"y": 700 +}, +{ +"x": 0, +"y": 700 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 250, +"y": 395 +}, +{ +"x": 80, +"y": 650 +}, +{ +"x": 420, +"y": 650 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 280, +"y": 350 +}, +{ +"x": 450, +"y": 605 +}, +{ +"x": 450, +"y": 95 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 80, +"y": 50 +}, +{ +"x": 250, +"y": 305 +}, +{ +"x": 420, +"y": 50 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 50, +"y": 605 +}, +{ +"x": 220, +"y": 350 +}, +{ +"x": 50, +"y": 95 +} +], +"isClosed": true +} +] +}, +"xAdvance": 500 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/AE^3.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/AE^3.json new file mode 100644 index 0000000000..5256e26088 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/AE^3.json @@ -0,0 +1,107 @@ +{ +"name": "AE", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 902, +"y": 88 +}, +{ +"x": 555, +"y": 88 +}, +{ +"x": 539, +"y": 302 +}, +{ +"x": 864, +"y": 302 +}, +{ +"x": 864, +"y": 389 +}, +{ +"x": 533, +"y": 389 +}, +{ +"x": 517, +"y": 603 +}, +{ +"x": 892, +"y": 603 +}, +{ +"x": 892, +"y": 690 +}, +{ +"x": 352, +"y": 690 +}, +{ +"x": -37, +"y": 0 +}, +{ +"x": 81, +"y": 0 +}, +{ +"x": 208, +"y": 235 +}, +{ +"x": 434, +"y": 235 +}, +{ +"x": 451, +"y": 0 +}, +{ +"x": 902, +"y": 0 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 428, +"y": 323 +}, +{ +"x": 256, +"y": 323 +}, +{ +"x": 407, +"y": 602 +} +], +"isClosed": true +} +] +}, +"xAdvance": 930 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/A^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/A^1.json new file mode 100644 index 0000000000..e60da3bb18 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/A^1.json @@ -0,0 +1,75 @@ +{ +"name": "A", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 460, +"y": 228 +}, +{ +"x": 535, +"y": 0 +}, +{ +"x": 654, +"y": 0 +}, +{ +"x": 413, +"y": 690 +}, +{ +"x": 271, +"y": 690 +}, +{ +"x": 23, +"y": 0 +}, +{ +"x": 140, +"y": 0 +}, +{ +"x": 215, +"y": 228 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 244, +"y": 315 +}, +{ +"x": 340, +"y": 599 +}, +{ +"x": 431, +"y": 315 +} +], +"isClosed": true +} +] +}, +"xAdvance": 656 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Aacute^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Aacute^1.json new file mode 100644 index 0000000000..7253872383 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Aacute^1.json @@ -0,0 +1,96 @@ +{ +"name": "Aacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 370, +"y": 736 +}, +{ +"x": 467, +"y": 838 +}, +{ +"x": 367, +"y": 838 +}, +{ +"x": 304, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 460, +"y": 228 +}, +{ +"x": 535, +"y": 0 +}, +{ +"x": 654, +"y": 0 +}, +{ +"x": 413, +"y": 690 +}, +{ +"x": 271, +"y": 690 +}, +{ +"x": 23, +"y": 0 +}, +{ +"x": 140, +"y": 0 +}, +{ +"x": 215, +"y": 228 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 244, +"y": 315 +}, +{ +"x": 340, +"y": 599 +}, +{ +"x": 431, +"y": 315 +} +], +"isClosed": true +} +] +}, +"xAdvance": 656 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Abreve^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Abreve^1.json new file mode 100644 index 0000000000..65beb43e82 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Abreve^1.json @@ -0,0 +1,146 @@ +{ +"name": "Abreve", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 342, +"y": 724, +"smooth": true +}, +{ +"x": 413, +"y": 724, +"type": "cubic" +}, +{ +"x": 452, +"y": 761, +"type": "cubic" +}, +{ +"x": 452, +"y": 838 +}, +{ +"x": 390, +"y": 838 +}, +{ +"x": 389, +"y": 803, +"type": "cubic" +}, +{ +"x": 371, +"y": 786, +"type": "cubic" +}, +{ +"x": 342, +"y": 786, +"smooth": true +}, +{ +"x": 313, +"y": 786, +"type": "cubic" +}, +{ +"x": 295, +"y": 803, +"type": "cubic" +}, +{ +"x": 294, +"y": 838 +}, +{ +"x": 232, +"y": 838 +}, +{ +"x": 232, +"y": 761, +"type": "cubic" +}, +{ +"x": 270, +"y": 724, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 460, +"y": 228 +}, +{ +"x": 535, +"y": 0 +}, +{ +"x": 654, +"y": 0 +}, +{ +"x": 413, +"y": 690 +}, +{ +"x": 271, +"y": 690 +}, +{ +"x": 23, +"y": 0 +}, +{ +"x": 140, +"y": 0 +}, +{ +"x": 215, +"y": 228 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 244, +"y": 315 +}, +{ +"x": 340, +"y": 599 +}, +{ +"x": 431, +"y": 315 +} +], +"isClosed": true +} +] +}, +"xAdvance": 656 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Acircumflex^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Acircumflex^1.json new file mode 100644 index 0000000000..c3726b57d6 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Acircumflex^1.json @@ -0,0 +1,108 @@ +{ +"name": "Acircumflex", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 311, +"y": 736 +}, +{ +"x": 342, +"y": 796 +}, +{ +"x": 373, +"y": 736 +}, +{ +"x": 449, +"y": 736 +}, +{ +"x": 383, +"y": 838 +}, +{ +"x": 302, +"y": 838 +}, +{ +"x": 236, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 460, +"y": 228 +}, +{ +"x": 535, +"y": 0 +}, +{ +"x": 654, +"y": 0 +}, +{ +"x": 413, +"y": 690 +}, +{ +"x": 271, +"y": 690 +}, +{ +"x": 23, +"y": 0 +}, +{ +"x": 140, +"y": 0 +}, +{ +"x": 215, +"y": 228 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 244, +"y": 315 +}, +{ +"x": 340, +"y": 599 +}, +{ +"x": 431, +"y": 315 +} +], +"isClosed": true +} +] +}, +"xAdvance": 656 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Adieresis^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Adieresis^1.json new file mode 100644 index 0000000000..a9752090c8 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Adieresis^1.json @@ -0,0 +1,205 @@ +{ +"name": "Adieresis", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 265, +"y": 733, +"smooth": true +}, +{ +"x": 295, +"y": 733, +"type": "cubic" +}, +{ +"x": 318, +"y": 756, +"type": "cubic" +}, +{ +"x": 318, +"y": 786, +"smooth": true +}, +{ +"x": 318, +"y": 816, +"type": "cubic" +}, +{ +"x": 295, +"y": 839, +"type": "cubic" +}, +{ +"x": 265, +"y": 839, +"smooth": true +}, +{ +"x": 235, +"y": 839, +"type": "cubic" +}, +{ +"x": 211, +"y": 816, +"type": "cubic" +}, +{ +"x": 211, +"y": 786, +"smooth": true +}, +{ +"x": 211, +"y": 756, +"type": "cubic" +}, +{ +"x": 235, +"y": 733, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 420, +"y": 733, +"smooth": true +}, +{ +"x": 450, +"y": 733, +"type": "cubic" +}, +{ +"x": 473, +"y": 756, +"type": "cubic" +}, +{ +"x": 473, +"y": 786, +"smooth": true +}, +{ +"x": 473, +"y": 816, +"type": "cubic" +}, +{ +"x": 450, +"y": 839, +"type": "cubic" +}, +{ +"x": 420, +"y": 839, +"smooth": true +}, +{ +"x": 390, +"y": 839, +"type": "cubic" +}, +{ +"x": 366, +"y": 816, +"type": "cubic" +}, +{ +"x": 366, +"y": 786, +"smooth": true +}, +{ +"x": 366, +"y": 756, +"type": "cubic" +}, +{ +"x": 390, +"y": 733, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 460, +"y": 228 +}, +{ +"x": 535, +"y": 0 +}, +{ +"x": 654, +"y": 0 +}, +{ +"x": 413, +"y": 690 +}, +{ +"x": 271, +"y": 690 +}, +{ +"x": 23, +"y": 0 +}, +{ +"x": 140, +"y": 0 +}, +{ +"x": 215, +"y": 228 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 244, +"y": 315 +}, +{ +"x": 340, +"y": 599 +}, +{ +"x": 431, +"y": 315 +} +], +"isClosed": true +} +] +}, +"xAdvance": 656 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Agrave^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Agrave^1.json new file mode 100644 index 0000000000..0540e6f6d4 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Agrave^1.json @@ -0,0 +1,96 @@ +{ +"name": "Agrave", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 315, +"y": 736 +}, +{ +"x": 381, +"y": 736 +}, +{ +"x": 318, +"y": 838 +}, +{ +"x": 218, +"y": 838 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 460, +"y": 228 +}, +{ +"x": 535, +"y": 0 +}, +{ +"x": 654, +"y": 0 +}, +{ +"x": 413, +"y": 690 +}, +{ +"x": 271, +"y": 690 +}, +{ +"x": 23, +"y": 0 +}, +{ +"x": 140, +"y": 0 +}, +{ +"x": 215, +"y": 228 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 244, +"y": 315 +}, +{ +"x": 340, +"y": 599 +}, +{ +"x": 431, +"y": 315 +} +], +"isClosed": true +} +] +}, +"xAdvance": 656 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Amacron^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Amacron^1.json new file mode 100644 index 0000000000..6bd483c759 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Amacron^1.json @@ -0,0 +1,96 @@ +{ +"name": "Amacron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 470, +"y": 758 +}, +{ +"x": 470, +"y": 821 +}, +{ +"x": 215, +"y": 821 +}, +{ +"x": 215, +"y": 758 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 460, +"y": 228 +}, +{ +"x": 535, +"y": 0 +}, +{ +"x": 654, +"y": 0 +}, +{ +"x": 413, +"y": 690 +}, +{ +"x": 271, +"y": 690 +}, +{ +"x": 23, +"y": 0 +}, +{ +"x": 140, +"y": 0 +}, +{ +"x": 215, +"y": 228 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 244, +"y": 315 +}, +{ +"x": 340, +"y": 599 +}, +{ +"x": 431, +"y": 315 +} +], +"isClosed": true +} +] +}, +"xAdvance": 656 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Aogonek^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Aogonek^1.json new file mode 100644 index 0000000000..0e3cdc6f13 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Aogonek^1.json @@ -0,0 +1,167 @@ +{ +"name": "Aogonek", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 529, +"y": -107, +"smooth": true +}, +{ +"x": 529, +"y": -50, +"type": "cubic" +}, +{ +"x": 567, +"y": -7, +"type": "cubic" +}, +{ +"x": 611, +"y": 0 +}, +{ +"x": 654, +"y": 0 +}, +{ +"x": 413, +"y": 690 +}, +{ +"x": 271, +"y": 690 +}, +{ +"x": 23, +"y": 0 +}, +{ +"x": 140, +"y": 0 +}, +{ +"x": 215, +"y": 228 +}, +{ +"x": 460, +"y": 228 +}, +{ +"x": 532, +"y": 10 +}, +{ +"x": 477, +"y": -14, +"type": "cubic" +}, +{ +"x": 427, +"y": -67, +"type": "cubic" +}, +{ +"x": 427, +"y": -138, +"smooth": true +}, +{ +"x": 427, +"y": -201, +"type": "cubic" +}, +{ +"x": 467, +"y": -223, +"type": "cubic" +}, +{ +"x": 525, +"y": -223, +"smooth": true +}, +{ +"x": 566, +"y": -223, +"type": "cubic" +}, +{ +"x": 600, +"y": -212, +"type": "cubic" +}, +{ +"x": 626, +"y": -192 +}, +{ +"x": 626, +"y": -137 +}, +{ +"x": 608, +"y": -151, +"type": "cubic" +}, +{ +"x": 591, +"y": -157, +"type": "cubic" +}, +{ +"x": 573, +"y": -157, +"smooth": true +}, +{ +"x": 546, +"y": -157, +"type": "cubic" +}, +{ +"x": 529, +"y": -144, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 244, +"y": 315 +}, +{ +"x": 340, +"y": 599 +}, +{ +"x": 431, +"y": 315 +} +], +"isClosed": true +} +] +}, +"xAdvance": 656 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Aring^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Aring^1.json new file mode 100644 index 0000000000..389a2b3582 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Aring^1.json @@ -0,0 +1,205 @@ +{ +"name": "Aring", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 342, +"y": 718, +"smooth": true +}, +{ +"x": 399, +"y": 718, +"type": "cubic" +}, +{ +"x": 440, +"y": 753, +"type": "cubic" +}, +{ +"x": 440, +"y": 803, +"smooth": true +}, +{ +"x": 440, +"y": 853, +"type": "cubic" +}, +{ +"x": 399, +"y": 889, +"type": "cubic" +}, +{ +"x": 342, +"y": 889, +"smooth": true +}, +{ +"x": 285, +"y": 889, +"type": "cubic" +}, +{ +"x": 244, +"y": 853, +"type": "cubic" +}, +{ +"x": 244, +"y": 803, +"smooth": true +}, +{ +"x": 244, +"y": 753, +"type": "cubic" +}, +{ +"x": 285, +"y": 718, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 342, +"y": 845, +"smooth": true +}, +{ +"x": 365, +"y": 845, +"type": "cubic" +}, +{ +"x": 382, +"y": 828, +"type": "cubic" +}, +{ +"x": 382, +"y": 803, +"smooth": true +}, +{ +"x": 382, +"y": 779, +"type": "cubic" +}, +{ +"x": 365, +"y": 761, +"type": "cubic" +}, +{ +"x": 342, +"y": 761, +"smooth": true +}, +{ +"x": 319, +"y": 761, +"type": "cubic" +}, +{ +"x": 302, +"y": 779, +"type": "cubic" +}, +{ +"x": 302, +"y": 803, +"smooth": true +}, +{ +"x": 302, +"y": 828, +"type": "cubic" +}, +{ +"x": 319, +"y": 845, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 460, +"y": 228 +}, +{ +"x": 535, +"y": 0 +}, +{ +"x": 654, +"y": 0 +}, +{ +"x": 413, +"y": 690 +}, +{ +"x": 271, +"y": 690 +}, +{ +"x": 23, +"y": 0 +}, +{ +"x": 140, +"y": 0 +}, +{ +"x": 215, +"y": 228 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 244, +"y": 315 +}, +{ +"x": 340, +"y": 599 +}, +{ +"x": 431, +"y": 315 +} +], +"isClosed": true +} +] +}, +"xAdvance": 656 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Atilde^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Atilde^1.json new file mode 100644 index 0000000000..2ef6ea0009 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Atilde^1.json @@ -0,0 +1,206 @@ +{ +"name": "Atilde", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 290, +"y": 771, +"smooth": true +}, +{ +"x": 299, +"y": 771, +"type": "cubic" +}, +{ +"x": 310, +"y": 767, +"type": "cubic" +}, +{ +"x": 334, +"y": 759, +"smooth": true +}, +{ +"x": 364, +"y": 748, +"type": "cubic" +}, +{ +"x": 380, +"y": 744, +"type": "cubic" +}, +{ +"x": 401, +"y": 744, +"smooth": true +}, +{ +"x": 441, +"y": 744, +"type": "cubic" +}, +{ +"x": 463, +"y": 766, +"type": "cubic" +}, +{ +"x": 463, +"y": 831 +}, +{ +"x": 410, +"y": 831 +}, +{ +"x": 410, +"y": 814, +"type": "cubic" +}, +{ +"x": 405, +"y": 808, +"type": "cubic" +}, +{ +"x": 394, +"y": 808, +"smooth": true +}, +{ +"x": 386, +"y": 808, +"type": "cubic" +}, +{ +"x": 374, +"y": 812, +"type": "cubic" +}, +{ +"x": 350, +"y": 820, +"smooth": true +}, +{ +"x": 321, +"y": 831, +"type": "cubic" +}, +{ +"x": 305, +"y": 835, +"type": "cubic" +}, +{ +"x": 283, +"y": 835, +"smooth": true +}, +{ +"x": 244, +"y": 835, +"type": "cubic" +}, +{ +"x": 222, +"y": 813, +"type": "cubic" +}, +{ +"x": 222, +"y": 748 +}, +{ +"x": 274, +"y": 748 +}, +{ +"x": 274, +"y": 765, +"type": "cubic" +}, +{ +"x": 280, +"y": 771, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 460, +"y": 228 +}, +{ +"x": 535, +"y": 0 +}, +{ +"x": 654, +"y": 0 +}, +{ +"x": 413, +"y": 690 +}, +{ +"x": 271, +"y": 690 +}, +{ +"x": 23, +"y": 0 +}, +{ +"x": 140, +"y": 0 +}, +{ +"x": 215, +"y": 228 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 244, +"y": 315 +}, +{ +"x": 340, +"y": 599 +}, +{ +"x": 431, +"y": 315 +} +], +"isClosed": true +} +] +}, +"xAdvance": 656 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/B^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/B^1.json new file mode 100644 index 0000000000..d785d358e0 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/B^1.json @@ -0,0 +1,284 @@ +{ +"name": "B", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 467, +"y": 369 +}, +{ +"x": 538, +"y": 393, +"type": "cubic" +}, +{ +"x": 580, +"y": 438, +"type": "cubic" +}, +{ +"x": 580, +"y": 516, +"smooth": true +}, +{ +"x": 580, +"y": 612, +"type": "cubic" +}, +{ +"x": 518, +"y": 671, +"type": "cubic" +}, +{ +"x": 408, +"y": 686, +"smooth": true +}, +{ +"x": 374, +"y": 690, +"type": "cubic" +}, +{ +"x": 352, +"y": 690, +"type": "cubic" +}, +{ +"x": 318, +"y": 690, +"smooth": true +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 330, +"y": 0, +"smooth": true +}, +{ +"x": 365, +"y": 0, +"type": "cubic" +}, +{ +"x": 388, +"y": 0, +"type": "cubic" +}, +{ +"x": 422, +"y": 5, +"smooth": true +}, +{ +"x": 513, +"y": 18, +"type": "cubic" +}, +{ +"x": 605, +"y": 78, +"type": "cubic" +}, +{ +"x": 605, +"y": 204, +"smooth": true +}, +{ +"x": 605, +"y": 296, +"type": "cubic" +}, +{ +"x": 557, +"y": 347, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 205, +"y": 603 +}, +{ +"x": 318, +"y": 603, +"smooth": true +}, +{ +"x": 334, +"y": 603, +"type": "cubic" +}, +{ +"x": 354, +"y": 602, +"type": "cubic" +}, +{ +"x": 370, +"y": 600, +"smooth": true +}, +{ +"x": 425, +"y": 594, +"type": "cubic" +}, +{ +"x": 464, +"y": 565, +"type": "cubic" +}, +{ +"x": 464, +"y": 504, +"smooth": true +}, +{ +"x": 464, +"y": 448, +"type": "cubic" +}, +{ +"x": 438, +"y": 413, +"type": "cubic" +}, +{ +"x": 377, +"y": 403, +"smooth": true +}, +{ +"x": 359, +"y": 400, +"type": "cubic" +}, +{ +"x": 342, +"y": 399, +"type": "cubic" +}, +{ +"x": 325, +"y": 399, +"smooth": true +}, +{ +"x": 205, +"y": 399 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 388, +"y": 89, +"smooth": true +}, +{ +"x": 375, +"y": 88, +"type": "cubic" +}, +{ +"x": 357, +"y": 88, +"type": "cubic" +}, +{ +"x": 341, +"y": 88, +"smooth": true +}, +{ +"x": 205, +"y": 88 +}, +{ +"x": 205, +"y": 314 +}, +{ +"x": 335, +"y": 314, +"smooth": true +}, +{ +"x": 351, +"y": 314, +"type": "cubic" +}, +{ +"x": 367, +"y": 314, +"type": "cubic" +}, +{ +"x": 387, +"y": 311, +"smooth": true +}, +{ +"x": 446, +"y": 304, +"type": "cubic" +}, +{ +"x": 489, +"y": 274, +"type": "cubic" +}, +{ +"x": 489, +"y": 199, +"smooth": true +}, +{ +"x": 489, +"y": 132, +"type": "cubic" +}, +{ +"x": 445, +"y": 94, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 641 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/C^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/C^1.json new file mode 100644 index 0000000000..5946358b55 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/C^1.json @@ -0,0 +1,172 @@ +{ +"name": "C", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 379, +"y": 704, +"smooth": true +}, +{ +"x": 185, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 342, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 170, +"y": -14, +"type": "cubic" +}, +{ +"x": 367, +"y": -14, +"smooth": true +}, +{ +"x": 547, +"y": -14, +"type": "cubic" +}, +{ +"x": 648, +"y": 89, +"type": "cubic" +}, +{ +"x": 662, +"y": 224, +"smooth": true +}, +{ +"x": 663, +"y": 234 +}, +{ +"x": 554, +"y": 234 +}, +{ +"x": 552, +"y": 224, +"smooth": true +}, +{ +"x": 533, +"y": 131, +"type": "cubic" +}, +{ +"x": 476, +"y": 70, +"type": "cubic" +}, +{ +"x": 372, +"y": 70, +"smooth": true +}, +{ +"x": 250, +"y": 70, +"type": "cubic" +}, +{ +"x": 168, +"y": 176, +"type": "cubic" +}, +{ +"x": 168, +"y": 347, +"smooth": true +}, +{ +"x": 168, +"y": 510, +"type": "cubic" +}, +{ +"x": 249, +"y": 620, +"type": "cubic" +}, +{ +"x": 377, +"y": 620, +"smooth": true +}, +{ +"x": 481, +"y": 620, +"type": "cubic" +}, +{ +"x": 538, +"y": 561, +"type": "cubic" +}, +{ +"x": 557, +"y": 468, +"smooth": true +}, +{ +"x": 559, +"y": 458 +}, +{ +"x": 668, +"y": 458 +}, +{ +"x": 667, +"y": 468, +"smooth": true +}, +{ +"x": 654, +"y": 593, +"type": "cubic" +}, +{ +"x": 559, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 708 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Cacute^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Cacute^1.json new file mode 100644 index 0000000000..2ce6afd2d6 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Cacute^1.json @@ -0,0 +1,193 @@ +{ +"name": "Cacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 399, +"y": 736 +}, +{ +"x": 496, +"y": 838 +}, +{ +"x": 396, +"y": 838 +}, +{ +"x": 333, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 379, +"y": 704, +"smooth": true +}, +{ +"x": 185, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 342, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 170, +"y": -14, +"type": "cubic" +}, +{ +"x": 367, +"y": -14, +"smooth": true +}, +{ +"x": 547, +"y": -14, +"type": "cubic" +}, +{ +"x": 648, +"y": 89, +"type": "cubic" +}, +{ +"x": 662, +"y": 224, +"smooth": true +}, +{ +"x": 663, +"y": 234 +}, +{ +"x": 554, +"y": 234 +}, +{ +"x": 552, +"y": 224, +"smooth": true +}, +{ +"x": 533, +"y": 131, +"type": "cubic" +}, +{ +"x": 476, +"y": 70, +"type": "cubic" +}, +{ +"x": 372, +"y": 70, +"smooth": true +}, +{ +"x": 250, +"y": 70, +"type": "cubic" +}, +{ +"x": 168, +"y": 176, +"type": "cubic" +}, +{ +"x": 168, +"y": 347, +"smooth": true +}, +{ +"x": 168, +"y": 510, +"type": "cubic" +}, +{ +"x": 249, +"y": 620, +"type": "cubic" +}, +{ +"x": 377, +"y": 620, +"smooth": true +}, +{ +"x": 481, +"y": 620, +"type": "cubic" +}, +{ +"x": 538, +"y": 561, +"type": "cubic" +}, +{ +"x": 557, +"y": 468, +"smooth": true +}, +{ +"x": 559, +"y": 458 +}, +{ +"x": 668, +"y": 458 +}, +{ +"x": 667, +"y": 468, +"smooth": true +}, +{ +"x": 653, +"y": 604, +"type": "cubic" +}, +{ +"x": 559, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 708 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ccaron^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ccaron^1.json new file mode 100644 index 0000000000..cda06b3931 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ccaron^1.json @@ -0,0 +1,205 @@ +{ +"name": "Ccaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 331, +"y": 736 +}, +{ +"x": 412, +"y": 736 +}, +{ +"x": 478, +"y": 838 +}, +{ +"x": 403, +"y": 838 +}, +{ +"x": 372, +"y": 777 +}, +{ +"x": 341, +"y": 838 +}, +{ +"x": 265, +"y": 838 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 554, +"y": 234 +}, +{ +"x": 552, +"y": 224, +"smooth": true +}, +{ +"x": 533, +"y": 131, +"type": "cubic" +}, +{ +"x": 476, +"y": 70, +"type": "cubic" +}, +{ +"x": 372, +"y": 70, +"smooth": true +}, +{ +"x": 250, +"y": 70, +"type": "cubic" +}, +{ +"x": 168, +"y": 176, +"type": "cubic" +}, +{ +"x": 168, +"y": 347, +"smooth": true +}, +{ +"x": 168, +"y": 510, +"type": "cubic" +}, +{ +"x": 249, +"y": 620, +"type": "cubic" +}, +{ +"x": 377, +"y": 620, +"smooth": true +}, +{ +"x": 481, +"y": 620, +"type": "cubic" +}, +{ +"x": 538, +"y": 561, +"type": "cubic" +}, +{ +"x": 557, +"y": 468, +"smooth": true +}, +{ +"x": 559, +"y": 458 +}, +{ +"x": 668, +"y": 458 +}, +{ +"x": 667, +"y": 468, +"smooth": true +}, +{ +"x": 653, +"y": 604, +"type": "cubic" +}, +{ +"x": 559, +"y": 704, +"type": "cubic" +}, +{ +"x": 379, +"y": 704, +"smooth": true +}, +{ +"x": 185, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 342, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 170, +"y": -14, +"type": "cubic" +}, +{ +"x": 367, +"y": -14, +"smooth": true +}, +{ +"x": 547, +"y": -14, +"type": "cubic" +}, +{ +"x": 648, +"y": 89, +"type": "cubic" +}, +{ +"x": 662, +"y": 224, +"smooth": true +}, +{ +"x": 663, +"y": 234 +} +], +"isClosed": true +} +] +}, +"xAdvance": 708 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ccedilla^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ccedilla^1.json new file mode 100644 index 0000000000..05e7c295fb --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ccedilla^1.json @@ -0,0 +1,271 @@ +{ +"name": "Ccedilla", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 554, +"y": 234 +}, +{ +"x": 552, +"y": 224, +"smooth": true +}, +{ +"x": 533, +"y": 131, +"type": "cubic" +}, +{ +"x": 476, +"y": 70, +"type": "cubic" +}, +{ +"x": 372, +"y": 70, +"smooth": true +}, +{ +"x": 250, +"y": 70, +"type": "cubic" +}, +{ +"x": 168, +"y": 176, +"type": "cubic" +}, +{ +"x": 168, +"y": 347, +"smooth": true +}, +{ +"x": 168, +"y": 510, +"type": "cubic" +}, +{ +"x": 249, +"y": 620, +"type": "cubic" +}, +{ +"x": 377, +"y": 620, +"smooth": true +}, +{ +"x": 481, +"y": 620, +"type": "cubic" +}, +{ +"x": 538, +"y": 561, +"type": "cubic" +}, +{ +"x": 557, +"y": 468, +"smooth": true +}, +{ +"x": 559, +"y": 458 +}, +{ +"x": 668, +"y": 458 +}, +{ +"x": 667, +"y": 468, +"smooth": true +}, +{ +"x": 653, +"y": 604, +"type": "cubic" +}, +{ +"x": 559, +"y": 704, +"type": "cubic" +}, +{ +"x": 379, +"y": 704, +"smooth": true +}, +{ +"x": 185, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 342, +"smooth": true +}, +{ +"x": 49, +"y": 149, +"type": "cubic" +}, +{ +"x": 151, +"y": 11, +"type": "cubic" +}, +{ +"x": 320, +"y": -11 +}, +{ +"x": 283, +"y": -81 +}, +{ +"x": 353, +"y": -76, +"type": "cubic" +}, +{ +"x": 379, +"y": -91, +"type": "cubic" +}, +{ +"x": 379, +"y": -122, +"smooth": true +}, +{ +"x": 379, +"y": -146, +"type": "cubic" +}, +{ +"x": 359, +"y": -161, +"type": "cubic" +}, +{ +"x": 317, +"y": -161, +"smooth": true +}, +{ +"x": 298, +"y": -161, +"type": "cubic" +}, +{ +"x": 281, +"y": -159, +"type": "cubic" +}, +{ +"x": 263, +"y": -151 +}, +{ +"x": 263, +"y": -202 +}, +{ +"x": 278, +"y": -208, +"type": "cubic" +}, +{ +"x": 296, +"y": -210, +"type": "cubic" +}, +{ +"x": 315, +"y": -210, +"smooth": true +}, +{ +"x": 393, +"y": -210, +"type": "cubic" +}, +{ +"x": 449, +"y": -181, +"type": "cubic" +}, +{ +"x": 449, +"y": -122, +"smooth": true +}, +{ +"x": 449, +"y": -76, +"type": "cubic" +}, +{ +"x": 420, +"y": -48, +"type": "cubic" +}, +{ +"x": 365, +"y": -41 +}, +{ +"x": 379, +"y": -14 +}, +{ +"x": 551, +"y": -9, +"type": "cubic" +}, +{ +"x": 648, +"y": 92, +"type": "cubic" +}, +{ +"x": 662, +"y": 224, +"smooth": true +}, +{ +"x": 663, +"y": 234 +} +], +"isClosed": true +} +] +}, +"xAdvance": 708 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Cdotaccent^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Cdotaccent^1.json new file mode 100644 index 0000000000..49757ef8c9 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Cdotaccent^1.json @@ -0,0 +1,237 @@ +{ +"name": "Cdotaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 371, +"y": 847, +"smooth": true +}, +{ +"x": 338, +"y": 847, +"type": "cubic" +}, +{ +"x": 313, +"y": 823, +"type": "cubic" +}, +{ +"x": 313, +"y": 791, +"smooth": true +}, +{ +"x": 313, +"y": 758, +"type": "cubic" +}, +{ +"x": 338, +"y": 734, +"type": "cubic" +}, +{ +"x": 371, +"y": 734, +"smooth": true +}, +{ +"x": 404, +"y": 734, +"type": "cubic" +}, +{ +"x": 429, +"y": 758, +"type": "cubic" +}, +{ +"x": 429, +"y": 791, +"smooth": true +}, +{ +"x": 429, +"y": 823, +"type": "cubic" +}, +{ +"x": 404, +"y": 847, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 379, +"y": 704, +"smooth": true +}, +{ +"x": 185, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 342, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 170, +"y": -14, +"type": "cubic" +}, +{ +"x": 367, +"y": -14, +"smooth": true +}, +{ +"x": 547, +"y": -14, +"type": "cubic" +}, +{ +"x": 648, +"y": 89, +"type": "cubic" +}, +{ +"x": 662, +"y": 224, +"smooth": true +}, +{ +"x": 663, +"y": 234 +}, +{ +"x": 554, +"y": 234 +}, +{ +"x": 552, +"y": 224, +"smooth": true +}, +{ +"x": 533, +"y": 131, +"type": "cubic" +}, +{ +"x": 476, +"y": 70, +"type": "cubic" +}, +{ +"x": 372, +"y": 70, +"smooth": true +}, +{ +"x": 250, +"y": 70, +"type": "cubic" +}, +{ +"x": 168, +"y": 176, +"type": "cubic" +}, +{ +"x": 168, +"y": 347, +"smooth": true +}, +{ +"x": 168, +"y": 510, +"type": "cubic" +}, +{ +"x": 249, +"y": 620, +"type": "cubic" +}, +{ +"x": 377, +"y": 620, +"smooth": true +}, +{ +"x": 481, +"y": 620, +"type": "cubic" +}, +{ +"x": 538, +"y": 561, +"type": "cubic" +}, +{ +"x": 557, +"y": 468, +"smooth": true +}, +{ +"x": 559, +"y": 458 +}, +{ +"x": 668, +"y": 458 +}, +{ +"x": 667, +"y": 468, +"smooth": true +}, +{ +"x": 653, +"y": 604, +"type": "cubic" +}, +{ +"x": 559, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 708 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/D^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/D^1.json new file mode 100644 index 0000000000..fd0c5929d1 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/D^1.json @@ -0,0 +1,177 @@ +{ +"name": "D", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 406, +"y": 686, +"smooth": true +}, +{ +"x": 371, +"y": 690, +"type": "cubic" +}, +{ +"x": 355, +"y": 690, +"type": "cubic" +}, +{ +"x": 318, +"y": 690, +"smooth": true +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 314, +"y": 0, +"smooth": true +}, +{ +"x": 351, +"y": 0, +"type": "cubic" +}, +{ +"x": 367, +"y": 0, +"type": "cubic" +}, +{ +"x": 402, +"y": 4, +"smooth": true +}, +{ +"x": 562, +"y": 24, +"type": "cubic" +}, +{ +"x": 684, +"y": 147, +"type": "cubic" +}, +{ +"x": 684, +"y": 353, +"smooth": true +}, +{ +"x": 684, +"y": 562, +"type": "cubic" +}, +{ +"x": 566, +"y": 667, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 383, +"y": 92, +"smooth": true +}, +{ +"x": 361, +"y": 88, +"type": "cubic" +}, +{ +"x": 338, +"y": 88, +"type": "cubic" +}, +{ +"x": 304, +"y": 88, +"smooth": true +}, +{ +"x": 205, +"y": 88 +}, +{ +"x": 205, +"y": 603 +}, +{ +"x": 308, +"y": 603, +"smooth": true +}, +{ +"x": 341, +"y": 603, +"type": "cubic" +}, +{ +"x": 365, +"y": 602, +"type": "cubic" +}, +{ +"x": 387, +"y": 598, +"smooth": true +}, +{ +"x": 497, +"y": 582, +"type": "cubic" +}, +{ +"x": 566, +"y": 498, +"type": "cubic" +}, +{ +"x": 566, +"y": 353, +"smooth": true +}, +{ +"x": 566, +"y": 200, +"type": "cubic" +}, +{ +"x": 494, +"y": 108, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 719 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Dcaron^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Dcaron^1.json new file mode 100644 index 0000000000..9ed95ab092 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Dcaron^1.json @@ -0,0 +1,210 @@ +{ +"name": "Dcaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 334, +"y": 736 +}, +{ +"x": 415, +"y": 736 +}, +{ +"x": 481, +"y": 838 +}, +{ +"x": 406, +"y": 838 +}, +{ +"x": 375, +"y": 777 +}, +{ +"x": 344, +"y": 838 +}, +{ +"x": 268, +"y": 838 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 406, +"y": 686, +"smooth": true +}, +{ +"x": 371, +"y": 690, +"type": "cubic" +}, +{ +"x": 355, +"y": 690, +"type": "cubic" +}, +{ +"x": 318, +"y": 690, +"smooth": true +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 314, +"y": 0, +"smooth": true +}, +{ +"x": 351, +"y": 0, +"type": "cubic" +}, +{ +"x": 367, +"y": 0, +"type": "cubic" +}, +{ +"x": 402, +"y": 4, +"smooth": true +}, +{ +"x": 562, +"y": 24, +"type": "cubic" +}, +{ +"x": 684, +"y": 147, +"type": "cubic" +}, +{ +"x": 684, +"y": 353, +"smooth": true +}, +{ +"x": 684, +"y": 562, +"type": "cubic" +}, +{ +"x": 566, +"y": 667, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 383, +"y": 92, +"smooth": true +}, +{ +"x": 361, +"y": 88, +"type": "cubic" +}, +{ +"x": 338, +"y": 88, +"type": "cubic" +}, +{ +"x": 304, +"y": 88, +"smooth": true +}, +{ +"x": 205, +"y": 88 +}, +{ +"x": 205, +"y": 603 +}, +{ +"x": 308, +"y": 603, +"smooth": true +}, +{ +"x": 341, +"y": 603, +"type": "cubic" +}, +{ +"x": 365, +"y": 602, +"type": "cubic" +}, +{ +"x": 387, +"y": 598, +"smooth": true +}, +{ +"x": 497, +"y": 582, +"type": "cubic" +}, +{ +"x": 566, +"y": 498, +"type": "cubic" +}, +{ +"x": 566, +"y": 353, +"smooth": true +}, +{ +"x": 566, +"y": 200, +"type": "cubic" +}, +{ +"x": 494, +"y": 108, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 719 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Dcroat^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Dcroat^1.json new file mode 100644 index 0000000000..ff82ae9b63 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Dcroat^1.json @@ -0,0 +1,209 @@ +{ +"name": "Dcroat", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 402, +"y": 686, +"smooth": true +}, +{ +"x": 367, +"y": 690, +"type": "cubic" +}, +{ +"x": 351, +"y": 690, +"type": "cubic" +}, +{ +"x": 314, +"y": 690, +"smooth": true +}, +{ +"x": 92, +"y": 690 +}, +{ +"x": 92, +"y": 368 +}, +{ +"x": 33, +"y": 368 +}, +{ +"x": 33, +"y": 302 +}, +{ +"x": 92, +"y": 302 +}, +{ +"x": 92, +"y": 0 +}, +{ +"x": 311, +"y": 0, +"smooth": true +}, +{ +"x": 348, +"y": 0, +"type": "cubic" +}, +{ +"x": 364, +"y": 0, +"type": "cubic" +}, +{ +"x": 399, +"y": 4, +"smooth": true +}, +{ +"x": 559, +"y": 24, +"type": "cubic" +}, +{ +"x": 680, +"y": 147, +"type": "cubic" +}, +{ +"x": 680, +"y": 353, +"smooth": true +}, +{ +"x": 680, +"y": 562, +"type": "cubic" +}, +{ +"x": 562, +"y": 667, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 380, +"y": 92, +"smooth": true +}, +{ +"x": 358, +"y": 88, +"type": "cubic" +}, +{ +"x": 334, +"y": 88, +"type": "cubic" +}, +{ +"x": 301, +"y": 88, +"smooth": true +}, +{ +"x": 201, +"y": 88 +}, +{ +"x": 201, +"y": 302 +}, +{ +"x": 329, +"y": 302 +}, +{ +"x": 329, +"y": 368 +}, +{ +"x": 201, +"y": 368 +}, +{ +"x": 201, +"y": 603 +}, +{ +"x": 304, +"y": 603, +"smooth": true +}, +{ +"x": 338, +"y": 603, +"type": "cubic" +}, +{ +"x": 361, +"y": 602, +"type": "cubic" +}, +{ +"x": 384, +"y": 598, +"smooth": true +}, +{ +"x": 494, +"y": 582, +"type": "cubic" +}, +{ +"x": 563, +"y": 498, +"type": "cubic" +}, +{ +"x": 563, +"y": 353, +"smooth": true +}, +{ +"x": 563, +"y": 200, +"type": "cubic" +}, +{ +"x": 490, +"y": 108, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 716 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/E^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/E^1.json new file mode 100644 index 0000000000..4cdeb28c2b --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/E^1.json @@ -0,0 +1,74 @@ +{ +"name": "E", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 572, +"y": 88 +}, +{ +"x": 205, +"y": 88 +}, +{ +"x": 205, +"y": 302 +}, +{ +"x": 534, +"y": 302 +}, +{ +"x": 534, +"y": 389 +}, +{ +"x": 205, +"y": 389 +}, +{ +"x": 205, +"y": 603 +}, +{ +"x": 562, +"y": 603 +}, +{ +"x": 562, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 572, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 600 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Eacute^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Eacute^1.json new file mode 100644 index 0000000000..d05cac144e --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Eacute^1.json @@ -0,0 +1,95 @@ +{ +"name": "Eacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 365, +"y": 736 +}, +{ +"x": 462, +"y": 838 +}, +{ +"x": 362, +"y": 838 +}, +{ +"x": 299, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 572, +"y": 88 +}, +{ +"x": 205, +"y": 88 +}, +{ +"x": 205, +"y": 302 +}, +{ +"x": 534, +"y": 302 +}, +{ +"x": 534, +"y": 389 +}, +{ +"x": 205, +"y": 389 +}, +{ +"x": 205, +"y": 603 +}, +{ +"x": 562, +"y": 603 +}, +{ +"x": 562, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 572, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 600 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ecaron^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ecaron^1.json new file mode 100644 index 0000000000..65caede772 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ecaron^1.json @@ -0,0 +1,107 @@ +{ +"name": "Ecaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 297, +"y": 736 +}, +{ +"x": 378, +"y": 736 +}, +{ +"x": 444, +"y": 838 +}, +{ +"x": 369, +"y": 838 +}, +{ +"x": 338, +"y": 777 +}, +{ +"x": 307, +"y": 838 +}, +{ +"x": 231, +"y": 838 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 572, +"y": 88 +}, +{ +"x": 205, +"y": 88 +}, +{ +"x": 205, +"y": 302 +}, +{ +"x": 534, +"y": 302 +}, +{ +"x": 534, +"y": 389 +}, +{ +"x": 205, +"y": 389 +}, +{ +"x": 205, +"y": 603 +}, +{ +"x": 562, +"y": 603 +}, +{ +"x": 562, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 572, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 600 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ecircumflex^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ecircumflex^1.json new file mode 100644 index 0000000000..0627349e0a --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ecircumflex^1.json @@ -0,0 +1,107 @@ +{ +"name": "Ecircumflex", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 306, +"y": 736 +}, +{ +"x": 337, +"y": 796 +}, +{ +"x": 368, +"y": 736 +}, +{ +"x": 444, +"y": 736 +}, +{ +"x": 378, +"y": 838 +}, +{ +"x": 297, +"y": 838 +}, +{ +"x": 231, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 572, +"y": 88 +}, +{ +"x": 205, +"y": 88 +}, +{ +"x": 205, +"y": 302 +}, +{ +"x": 534, +"y": 302 +}, +{ +"x": 534, +"y": 389 +}, +{ +"x": 205, +"y": 389 +}, +{ +"x": 205, +"y": 603 +}, +{ +"x": 562, +"y": 603 +}, +{ +"x": 562, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 572, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 600 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Edieresis^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Edieresis^1.json new file mode 100644 index 0000000000..b954a35624 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Edieresis^1.json @@ -0,0 +1,204 @@ +{ +"name": "Edieresis", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 260, +"y": 733, +"smooth": true +}, +{ +"x": 290, +"y": 733, +"type": "cubic" +}, +{ +"x": 313, +"y": 756, +"type": "cubic" +}, +{ +"x": 313, +"y": 786, +"smooth": true +}, +{ +"x": 313, +"y": 816, +"type": "cubic" +}, +{ +"x": 290, +"y": 839, +"type": "cubic" +}, +{ +"x": 260, +"y": 839, +"smooth": true +}, +{ +"x": 230, +"y": 839, +"type": "cubic" +}, +{ +"x": 206, +"y": 816, +"type": "cubic" +}, +{ +"x": 206, +"y": 786, +"smooth": true +}, +{ +"x": 206, +"y": 756, +"type": "cubic" +}, +{ +"x": 230, +"y": 733, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 415, +"y": 733, +"smooth": true +}, +{ +"x": 445, +"y": 733, +"type": "cubic" +}, +{ +"x": 468, +"y": 756, +"type": "cubic" +}, +{ +"x": 468, +"y": 786, +"smooth": true +}, +{ +"x": 468, +"y": 816, +"type": "cubic" +}, +{ +"x": 445, +"y": 839, +"type": "cubic" +}, +{ +"x": 415, +"y": 839, +"smooth": true +}, +{ +"x": 385, +"y": 839, +"type": "cubic" +}, +{ +"x": 361, +"y": 816, +"type": "cubic" +}, +{ +"x": 361, +"y": 786, +"smooth": true +}, +{ +"x": 361, +"y": 756, +"type": "cubic" +}, +{ +"x": 385, +"y": 733, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 572, +"y": 88 +}, +{ +"x": 205, +"y": 88 +}, +{ +"x": 205, +"y": 302 +}, +{ +"x": 534, +"y": 302 +}, +{ +"x": 534, +"y": 389 +}, +{ +"x": 205, +"y": 389 +}, +{ +"x": 205, +"y": 603 +}, +{ +"x": 562, +"y": 603 +}, +{ +"x": 562, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 572, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 600 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Edotaccent^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Edotaccent^1.json new file mode 100644 index 0000000000..21efa81bb8 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Edotaccent^1.json @@ -0,0 +1,139 @@ +{ +"name": "Edotaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 337, +"y": 734, +"smooth": true +}, +{ +"x": 370, +"y": 734, +"type": "cubic" +}, +{ +"x": 395, +"y": 758, +"type": "cubic" +}, +{ +"x": 395, +"y": 791, +"smooth": true +}, +{ +"x": 395, +"y": 823, +"type": "cubic" +}, +{ +"x": 370, +"y": 847, +"type": "cubic" +}, +{ +"x": 337, +"y": 847, +"smooth": true +}, +{ +"x": 304, +"y": 847, +"type": "cubic" +}, +{ +"x": 279, +"y": 823, +"type": "cubic" +}, +{ +"x": 279, +"y": 791, +"smooth": true +}, +{ +"x": 279, +"y": 758, +"type": "cubic" +}, +{ +"x": 304, +"y": 734, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 572, +"y": 88 +}, +{ +"x": 205, +"y": 88 +}, +{ +"x": 205, +"y": 302 +}, +{ +"x": 534, +"y": 302 +}, +{ +"x": 534, +"y": 389 +}, +{ +"x": 205, +"y": 389 +}, +{ +"x": 205, +"y": 603 +}, +{ +"x": 562, +"y": 603 +}, +{ +"x": 562, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 572, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 600 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Egrave^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Egrave^1.json new file mode 100644 index 0000000000..ef04f97529 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Egrave^1.json @@ -0,0 +1,95 @@ +{ +"name": "Egrave", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 310, +"y": 736 +}, +{ +"x": 376, +"y": 736 +}, +{ +"x": 313, +"y": 838 +}, +{ +"x": 213, +"y": 838 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 572, +"y": 88 +}, +{ +"x": 205, +"y": 88 +}, +{ +"x": 205, +"y": 302 +}, +{ +"x": 534, +"y": 302 +}, +{ +"x": 534, +"y": 389 +}, +{ +"x": 205, +"y": 389 +}, +{ +"x": 205, +"y": 603 +}, +{ +"x": 562, +"y": 603 +}, +{ +"x": 562, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 572, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 600 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Emacron^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Emacron^1.json new file mode 100644 index 0000000000..8c3ac6cd10 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Emacron^1.json @@ -0,0 +1,95 @@ +{ +"name": "Emacron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 465, +"y": 758 +}, +{ +"x": 465, +"y": 821 +}, +{ +"x": 210, +"y": 821 +}, +{ +"x": 210, +"y": 758 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 572, +"y": 88 +}, +{ +"x": 205, +"y": 88 +}, +{ +"x": 205, +"y": 302 +}, +{ +"x": 534, +"y": 302 +}, +{ +"x": 534, +"y": 389 +}, +{ +"x": 205, +"y": 389 +}, +{ +"x": 205, +"y": 603 +}, +{ +"x": 562, +"y": 603 +}, +{ +"x": 562, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 572, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 600 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Eng^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Eng^1.json new file mode 100644 index 0000000000..b9d9376cd3 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Eng^1.json @@ -0,0 +1,145 @@ +{ +"name": "Eng", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 665, +"y": 690 +}, +{ +"x": 556, +"y": 690 +}, +{ +"x": 556, +"y": 383, +"smooth": true +}, +{ +"x": 556, +"y": 312, +"type": "cubic" +}, +{ +"x": 557, +"y": 235, +"type": "cubic" +}, +{ +"x": 559, +"y": 157 +}, +{ +"x": 250, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 330, +"smooth": true +}, +{ +"x": 205, +"y": 401, +"type": "cubic" +}, +{ +"x": 204, +"y": 484, +"type": "cubic" +}, +{ +"x": 201, +"y": 563 +}, +{ +"x": 555, +"y": -28 +}, +{ +"x": 555, +"y": -71, +"smooth": true +}, +{ +"x": 555, +"y": -113, +"type": "cubic" +}, +{ +"x": 538, +"y": -136, +"type": "cubic" +}, +{ +"x": 483, +"y": -138 +}, +{ +"x": 483, +"y": -223 +}, +{ +"x": 593, +"y": -223, +"type": "cubic" +}, +{ +"x": 655, +"y": -194, +"type": "cubic" +}, +{ +"x": 664, +"y": -106, +"smooth": true +}, +{ +"x": 665, +"y": -92, +"type": "cubic" +}, +{ +"x": 665, +"y": -83, +"type": "cubic" +}, +{ +"x": 665, +"y": -65, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 737 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Eogonek^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Eogonek^1.json new file mode 100644 index 0000000000..6f8c6f9ed6 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Eogonek^1.json @@ -0,0 +1,170 @@ +{ +"name": "Eogonek", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 522, +"y": -157, +"smooth": true +}, +{ +"x": 495, +"y": -157, +"type": "cubic" +}, +{ +"x": 478, +"y": -144, +"type": "cubic" +}, +{ +"x": 478, +"y": -107, +"smooth": true +}, +{ +"x": 478, +"y": -50, +"type": "cubic" +}, +{ +"x": 516, +"y": -7, +"type": "cubic" +}, +{ +"x": 560, +"y": 0 +}, +{ +"x": 572, +"y": 0 +}, +{ +"x": 572, +"y": 88 +}, +{ +"x": 205, +"y": 88 +}, +{ +"x": 205, +"y": 302 +}, +{ +"x": 534, +"y": 302 +}, +{ +"x": 534, +"y": 389 +}, +{ +"x": 205, +"y": 389 +}, +{ +"x": 205, +"y": 603 +}, +{ +"x": 562, +"y": 603 +}, +{ +"x": 562, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 462, +"y": 0 +}, +{ +"x": 415, +"y": -27, +"type": "cubic" +}, +{ +"x": 376, +"y": -75, +"type": "cubic" +}, +{ +"x": 376, +"y": -138, +"smooth": true +}, +{ +"x": 376, +"y": -201, +"type": "cubic" +}, +{ +"x": 416, +"y": -223, +"type": "cubic" +}, +{ +"x": 474, +"y": -223, +"smooth": true +}, +{ +"x": 515, +"y": -223, +"type": "cubic" +}, +{ +"x": 549, +"y": -212, +"type": "cubic" +}, +{ +"x": 575, +"y": -192 +}, +{ +"x": 575, +"y": -137 +}, +{ +"x": 557, +"y": -151, +"type": "cubic" +}, +{ +"x": 540, +"y": -157, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 600 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Eth^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Eth^1.json new file mode 100644 index 0000000000..461536adda --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Eth^1.json @@ -0,0 +1,209 @@ +{ +"name": "Eth", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 402, +"y": 686, +"smooth": true +}, +{ +"x": 367, +"y": 690, +"type": "cubic" +}, +{ +"x": 351, +"y": 690, +"type": "cubic" +}, +{ +"x": 314, +"y": 690, +"smooth": true +}, +{ +"x": 92, +"y": 690 +}, +{ +"x": 92, +"y": 368 +}, +{ +"x": 33, +"y": 368 +}, +{ +"x": 33, +"y": 302 +}, +{ +"x": 92, +"y": 302 +}, +{ +"x": 92, +"y": 0 +}, +{ +"x": 311, +"y": 0, +"smooth": true +}, +{ +"x": 348, +"y": 0, +"type": "cubic" +}, +{ +"x": 364, +"y": 0, +"type": "cubic" +}, +{ +"x": 399, +"y": 4, +"smooth": true +}, +{ +"x": 559, +"y": 24, +"type": "cubic" +}, +{ +"x": 680, +"y": 147, +"type": "cubic" +}, +{ +"x": 680, +"y": 353, +"smooth": true +}, +{ +"x": 680, +"y": 562, +"type": "cubic" +}, +{ +"x": 562, +"y": 667, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 380, +"y": 92, +"smooth": true +}, +{ +"x": 358, +"y": 88, +"type": "cubic" +}, +{ +"x": 334, +"y": 88, +"type": "cubic" +}, +{ +"x": 301, +"y": 88, +"smooth": true +}, +{ +"x": 201, +"y": 88 +}, +{ +"x": 201, +"y": 302 +}, +{ +"x": 329, +"y": 302 +}, +{ +"x": 329, +"y": 368 +}, +{ +"x": 201, +"y": 368 +}, +{ +"x": 201, +"y": 603 +}, +{ +"x": 304, +"y": 603, +"smooth": true +}, +{ +"x": 338, +"y": 603, +"type": "cubic" +}, +{ +"x": 361, +"y": 602, +"type": "cubic" +}, +{ +"x": 384, +"y": 598, +"smooth": true +}, +{ +"x": 494, +"y": 582, +"type": "cubic" +}, +{ +"x": 563, +"y": 498, +"type": "cubic" +}, +{ +"x": 563, +"y": 353, +"smooth": true +}, +{ +"x": 563, +"y": 200, +"type": "cubic" +}, +{ +"x": 490, +"y": 108, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 716 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Euro^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Euro^1.json new file mode 100644 index 0000000000..275c5728c6 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Euro^1.json @@ -0,0 +1,236 @@ +{ +"name": "Euro", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 472, +"y": 251 +}, +{ +"x": 483, +"y": 317 +}, +{ +"x": 219, +"y": 317 +}, +{ +"x": 219, +"y": 326, +"type": "cubic" +}, +{ +"x": 219, +"y": 336, +"type": "cubic" +}, +{ +"x": 219, +"y": 346, +"smooth": true +}, +{ +"x": 219, +"y": 370 +}, +{ +"x": 492, +"y": 370 +}, +{ +"x": 506, +"y": 436 +}, +{ +"x": 225, +"y": 436 +}, +{ +"x": 246, +"y": 569, +"type": "cubic" +}, +{ +"x": 315, +"y": 620, +"type": "cubic" +}, +{ +"x": 407, +"y": 620, +"smooth": true +}, +{ +"x": 456, +"y": 620, +"type": "cubic" +}, +{ +"x": 499, +"y": 605, +"type": "cubic" +}, +{ +"x": 532, +"y": 572 +}, +{ +"x": 579, +"y": 642 +}, +{ +"x": 543, +"y": 682, +"type": "cubic" +}, +{ +"x": 485, +"y": 704, +"type": "cubic" +}, +{ +"x": 406, +"y": 704, +"smooth": true +}, +{ +"x": 252, +"y": 704, +"type": "cubic" +}, +{ +"x": 136, +"y": 620, +"type": "cubic" +}, +{ +"x": 107, +"y": 436 +}, +{ +"x": 66, +"y": 436 +}, +{ +"x": 53, +"y": 370 +}, +{ +"x": 101, +"y": 370 +}, +{ +"x": 100, +"y": 361, +"type": "cubic" +}, +{ +"x": 100, +"y": 352, +"type": "cubic" +}, +{ +"x": 100, +"y": 342, +"smooth": true +}, +{ +"x": 100, +"y": 317 +}, +{ +"x": 44, +"y": 317 +}, +{ +"x": 32, +"y": 251 +}, +{ +"x": 105, +"y": 251 +}, +{ +"x": 128, +"y": 54, +"type": "cubic" +}, +{ +"x": 233, +"y": -14, +"type": "cubic" +}, +{ +"x": 391, +"y": -14, +"smooth": true +}, +{ +"x": 456, +"y": -14, +"type": "cubic" +}, +{ +"x": 504, +"y": -4, +"type": "cubic" +}, +{ +"x": 553, +"y": 24 +}, +{ +"x": 553, +"y": 110 +}, +{ +"x": 509, +"y": 82, +"type": "cubic" +}, +{ +"x": 463, +"y": 70, +"type": "cubic" +}, +{ +"x": 406, +"y": 70, +"smooth": true +}, +{ +"x": 308, +"y": 70, +"type": "cubic" +}, +{ +"x": 244, +"y": 120, +"type": "cubic" +}, +{ +"x": 225, +"y": 251 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/F^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/F^1.json new file mode 100644 index 0000000000..9f6fbcbaad --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/F^1.json @@ -0,0 +1,66 @@ +{ +"name": "F", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 205, +"y": 603 +}, +{ +"x": 562, +"y": 603 +}, +{ +"x": 562, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 302 +}, +{ +"x": 524, +"y": 302 +}, +{ +"x": 524, +"y": 389 +}, +{ +"x": 205, +"y": 389 +} +], +"isClosed": true +} +] +}, +"xAdvance": 579 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/G^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/G^1.json new file mode 100644 index 0000000000..21ee3aca56 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/G^1.json @@ -0,0 +1,186 @@ +{ +"name": "G", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 402, +"y": 342 +}, +{ +"x": 402, +"y": 254 +}, +{ +"x": 556, +"y": 254 +}, +{ +"x": 550, +"y": 143, +"type": "cubic" +}, +{ +"x": 476, +"y": 70, +"type": "cubic" +}, +{ +"x": 374, +"y": 70, +"smooth": true +}, +{ +"x": 251, +"y": 70, +"type": "cubic" +}, +{ +"x": 168, +"y": 176, +"type": "cubic" +}, +{ +"x": 168, +"y": 347, +"smooth": true +}, +{ +"x": 168, +"y": 510, +"type": "cubic" +}, +{ +"x": 251, +"y": 620, +"type": "cubic" +}, +{ +"x": 379, +"y": 620, +"smooth": true +}, +{ +"x": 484, +"y": 620, +"type": "cubic" +}, +{ +"x": 541, +"y": 561, +"type": "cubic" +}, +{ +"x": 559, +"y": 468, +"smooth": true +}, +{ +"x": 561, +"y": 458 +}, +{ +"x": 671, +"y": 458 +}, +{ +"x": 670, +"y": 468, +"smooth": true +}, +{ +"x": 656, +"y": 604, +"type": "cubic" +}, +{ +"x": 562, +"y": 704, +"type": "cubic" +}, +{ +"x": 381, +"y": 704, +"smooth": true +}, +{ +"x": 187, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 342, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 165, +"y": -14, +"type": "cubic" +}, +{ +"x": 362, +"y": -14, +"smooth": true +}, +{ +"x": 439, +"y": -14, +"type": "cubic" +}, +{ +"x": 497, +"y": 8, +"type": "cubic" +}, +{ +"x": 536, +"y": 50 +}, +{ +"x": 567, +"y": 117 +}, +{ +"x": 571, +"y": 0 +}, +{ +"x": 663, +"y": 0 +}, +{ +"x": 663, +"y": 342 +} +], +"isClosed": true +} +] +}, +"xAdvance": 722 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Gbreve^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Gbreve^1.json new file mode 100644 index 0000000000..4721725c0e --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Gbreve^1.json @@ -0,0 +1,257 @@ +{ +"name": "Gbreve", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 369, +"y": 724, +"smooth": true +}, +{ +"x": 440, +"y": 724, +"type": "cubic" +}, +{ +"x": 479, +"y": 761, +"type": "cubic" +}, +{ +"x": 479, +"y": 838 +}, +{ +"x": 417, +"y": 838 +}, +{ +"x": 416, +"y": 803, +"type": "cubic" +}, +{ +"x": 398, +"y": 786, +"type": "cubic" +}, +{ +"x": 369, +"y": 786, +"smooth": true +}, +{ +"x": 340, +"y": 786, +"type": "cubic" +}, +{ +"x": 322, +"y": 803, +"type": "cubic" +}, +{ +"x": 321, +"y": 838 +}, +{ +"x": 259, +"y": 838 +}, +{ +"x": 259, +"y": 761, +"type": "cubic" +}, +{ +"x": 297, +"y": 724, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 402, +"y": 342 +}, +{ +"x": 402, +"y": 254 +}, +{ +"x": 556, +"y": 254 +}, +{ +"x": 550, +"y": 143, +"type": "cubic" +}, +{ +"x": 476, +"y": 70, +"type": "cubic" +}, +{ +"x": 374, +"y": 70, +"smooth": true +}, +{ +"x": 251, +"y": 70, +"type": "cubic" +}, +{ +"x": 168, +"y": 176, +"type": "cubic" +}, +{ +"x": 168, +"y": 347, +"smooth": true +}, +{ +"x": 168, +"y": 510, +"type": "cubic" +}, +{ +"x": 251, +"y": 620, +"type": "cubic" +}, +{ +"x": 379, +"y": 620, +"smooth": true +}, +{ +"x": 484, +"y": 620, +"type": "cubic" +}, +{ +"x": 541, +"y": 561, +"type": "cubic" +}, +{ +"x": 559, +"y": 468, +"smooth": true +}, +{ +"x": 561, +"y": 458 +}, +{ +"x": 671, +"y": 458 +}, +{ +"x": 670, +"y": 468, +"smooth": true +}, +{ +"x": 656, +"y": 604, +"type": "cubic" +}, +{ +"x": 562, +"y": 704, +"type": "cubic" +}, +{ +"x": 381, +"y": 704, +"smooth": true +}, +{ +"x": 187, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 342, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 165, +"y": -14, +"type": "cubic" +}, +{ +"x": 362, +"y": -14, +"smooth": true +}, +{ +"x": 439, +"y": -14, +"type": "cubic" +}, +{ +"x": 497, +"y": 8, +"type": "cubic" +}, +{ +"x": 536, +"y": 50 +}, +{ +"x": 567, +"y": 117 +}, +{ +"x": 571, +"y": 0 +}, +{ +"x": 663, +"y": 0 +}, +{ +"x": 663, +"y": 342 +} +], +"isClosed": true +} +] +}, +"xAdvance": 722 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Gcommaaccent^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Gcommaaccent^1.json new file mode 100644 index 0000000000..e6d9538a23 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Gcommaaccent^1.json @@ -0,0 +1,211 @@ +{ +"name": "Gcommaaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 402, +"y": 342 +}, +{ +"x": 402, +"y": 254 +}, +{ +"x": 556, +"y": 254 +}, +{ +"x": 550, +"y": 143, +"type": "cubic" +}, +{ +"x": 476, +"y": 70, +"type": "cubic" +}, +{ +"x": 374, +"y": 70, +"smooth": true +}, +{ +"x": 251, +"y": 70, +"type": "cubic" +}, +{ +"x": 168, +"y": 176, +"type": "cubic" +}, +{ +"x": 168, +"y": 347, +"smooth": true +}, +{ +"x": 168, +"y": 510, +"type": "cubic" +}, +{ +"x": 251, +"y": 620, +"type": "cubic" +}, +{ +"x": 379, +"y": 620, +"smooth": true +}, +{ +"x": 484, +"y": 620, +"type": "cubic" +}, +{ +"x": 541, +"y": 561, +"type": "cubic" +}, +{ +"x": 559, +"y": 468, +"smooth": true +}, +{ +"x": 561, +"y": 458 +}, +{ +"x": 671, +"y": 458 +}, +{ +"x": 670, +"y": 468, +"smooth": true +}, +{ +"x": 656, +"y": 604, +"type": "cubic" +}, +{ +"x": 562, +"y": 704, +"type": "cubic" +}, +{ +"x": 381, +"y": 704, +"smooth": true +}, +{ +"x": 187, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 342, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 165, +"y": -14, +"type": "cubic" +}, +{ +"x": 362, +"y": -14, +"smooth": true +}, +{ +"x": 439, +"y": -14, +"type": "cubic" +}, +{ +"x": 497, +"y": 8, +"type": "cubic" +}, +{ +"x": 536, +"y": 50 +}, +{ +"x": 567, +"y": 117 +}, +{ +"x": 571, +"y": 0 +}, +{ +"x": 663, +"y": 0 +}, +{ +"x": 663, +"y": 342 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 341, +"y": -48 +}, +{ +"x": 281, +"y": -200 +}, +{ +"x": 351, +"y": -200 +}, +{ +"x": 422, +"y": -59 +}, +{ +"x": 422, +"y": -48 +} +], +"isClosed": true +} +] +}, +"xAdvance": 722 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Gdotaccent^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Gdotaccent^1.json new file mode 100644 index 0000000000..92d42c3d65 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Gdotaccent^1.json @@ -0,0 +1,251 @@ +{ +"name": "Gdotaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 369, +"y": 734, +"smooth": true +}, +{ +"x": 402, +"y": 734, +"type": "cubic" +}, +{ +"x": 427, +"y": 758, +"type": "cubic" +}, +{ +"x": 427, +"y": 791, +"smooth": true +}, +{ +"x": 427, +"y": 823, +"type": "cubic" +}, +{ +"x": 402, +"y": 847, +"type": "cubic" +}, +{ +"x": 369, +"y": 847, +"smooth": true +}, +{ +"x": 336, +"y": 847, +"type": "cubic" +}, +{ +"x": 311, +"y": 823, +"type": "cubic" +}, +{ +"x": 311, +"y": 791, +"smooth": true +}, +{ +"x": 311, +"y": 758, +"type": "cubic" +}, +{ +"x": 336, +"y": 734, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 402, +"y": 342 +}, +{ +"x": 402, +"y": 254 +}, +{ +"x": 556, +"y": 254 +}, +{ +"x": 550, +"y": 143, +"type": "cubic" +}, +{ +"x": 476, +"y": 70, +"type": "cubic" +}, +{ +"x": 374, +"y": 70, +"smooth": true +}, +{ +"x": 251, +"y": 70, +"type": "cubic" +}, +{ +"x": 168, +"y": 176, +"type": "cubic" +}, +{ +"x": 168, +"y": 347, +"smooth": true +}, +{ +"x": 168, +"y": 510, +"type": "cubic" +}, +{ +"x": 251, +"y": 620, +"type": "cubic" +}, +{ +"x": 379, +"y": 620, +"smooth": true +}, +{ +"x": 484, +"y": 620, +"type": "cubic" +}, +{ +"x": 541, +"y": 561, +"type": "cubic" +}, +{ +"x": 559, +"y": 468, +"smooth": true +}, +{ +"x": 561, +"y": 458 +}, +{ +"x": 671, +"y": 458 +}, +{ +"x": 670, +"y": 468, +"smooth": true +}, +{ +"x": 656, +"y": 604, +"type": "cubic" +}, +{ +"x": 562, +"y": 704, +"type": "cubic" +}, +{ +"x": 381, +"y": 704, +"smooth": true +}, +{ +"x": 187, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 342, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 165, +"y": -14, +"type": "cubic" +}, +{ +"x": 362, +"y": -14, +"smooth": true +}, +{ +"x": 439, +"y": -14, +"type": "cubic" +}, +{ +"x": 497, +"y": 8, +"type": "cubic" +}, +{ +"x": 536, +"y": 50 +}, +{ +"x": 567, +"y": 117 +}, +{ +"x": 571, +"y": 0 +}, +{ +"x": 663, +"y": 0 +}, +{ +"x": 663, +"y": 342 +} +], +"isClosed": true +} +] +}, +"xAdvance": 722 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/H^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/H^1.json new file mode 100644 index 0000000000..e46769eba7 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/H^1.json @@ -0,0 +1,74 @@ +{ +"name": "H", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 668, +"y": 690 +}, +{ +"x": 559, +"y": 690 +}, +{ +"x": 559, +"y": 383 +}, +{ +"x": 205, +"y": 383 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 294 +}, +{ +"x": 559, +"y": 294 +}, +{ +"x": 559, +"y": 0 +}, +{ +"x": 668, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 740 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Hbar^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Hbar^1.json new file mode 100644 index 0000000000..79685b6d11 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Hbar^1.json @@ -0,0 +1,127 @@ +{ +"name": "Hbar", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 708, +"y": 497 +}, +{ +"x": 708, +"y": 563 +}, +{ +"x": 668, +"y": 563 +}, +{ +"x": 668, +"y": 690 +}, +{ +"x": 559, +"y": 690 +}, +{ +"x": 559, +"y": 563 +}, +{ +"x": 205, +"y": 563 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 563 +}, +{ +"x": 55, +"y": 563 +}, +{ +"x": 55, +"y": 497 +}, +{ +"x": 95, +"y": 497 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 294 +}, +{ +"x": 559, +"y": 294 +}, +{ +"x": 559, +"y": 0 +}, +{ +"x": 668, +"y": 0 +}, +{ +"x": 668, +"y": 497 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 559, +"y": 497 +}, +{ +"x": 559, +"y": 383 +}, +{ +"x": 205, +"y": 383 +}, +{ +"x": 205, +"y": 497 +} +], +"isClosed": true +} +] +}, +"xAdvance": 740 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/IJ^3.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/IJ^3.json new file mode 100644 index 0000000000..5bb2806219 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/IJ^3.json @@ -0,0 +1,163 @@ +{ +"name": "IJ", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 790, +"y": 690 +}, +{ +"x": 680, +"y": 690 +}, +{ +"x": 680, +"y": 268, +"smooth": true +}, +{ +"x": 680, +"y": 236, +"type": "cubic" +}, +{ +"x": 680, +"y": 212, +"type": "cubic" +}, +{ +"x": 679, +"y": 191, +"smooth": true +}, +{ +"x": 673, +"y": 116, +"type": "cubic" +}, +{ +"x": 637, +"y": 70, +"type": "cubic" +}, +{ +"x": 564, +"y": 70, +"smooth": true +}, +{ +"x": 490, +"y": 70, +"type": "cubic" +}, +{ +"x": 447, +"y": 110, +"type": "cubic" +}, +{ +"x": 442, +"y": 204, +"smooth": true +}, +{ +"x": 440, +"y": 242 +}, +{ +"x": 330, +"y": 242 +}, +{ +"x": 331, +"y": 204, +"smooth": true +}, +{ +"x": 335, +"y": 70, +"type": "cubic" +}, +{ +"x": 411, +"y": -14, +"type": "cubic" +}, +{ +"x": 554, +"y": -14, +"smooth": true +}, +{ +"x": 708, +"y": -14, +"type": "cubic" +}, +{ +"x": 780, +"y": 67, +"type": "cubic" +}, +{ +"x": 787, +"y": 184, +"smooth": true +}, +{ +"x": 790, +"y": 223, +"type": "cubic" +}, +{ +"x": 790, +"y": 245, +"type": "cubic" +}, +{ +"x": 790, +"y": 273, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 844 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/I^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/I^1.json new file mode 100644 index 0000000000..6343f55354 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/I^1.json @@ -0,0 +1,42 @@ +{ +"name": "I", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 277 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Iacute^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Iacute^1.json new file mode 100644 index 0000000000..262e57d968 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Iacute^1.json @@ -0,0 +1,63 @@ +{ +"name": "Iacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 178, +"y": 736 +}, +{ +"x": 275, +"y": 838 +}, +{ +"x": 175, +"y": 838 +}, +{ +"x": 112, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 277 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Icircumflex^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Icircumflex^1.json new file mode 100644 index 0000000000..050e92368d --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Icircumflex^1.json @@ -0,0 +1,75 @@ +{ +"name": "Icircumflex", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 119, +"y": 736 +}, +{ +"x": 150, +"y": 796 +}, +{ +"x": 181, +"y": 736 +}, +{ +"x": 257, +"y": 736 +}, +{ +"x": 191, +"y": 838 +}, +{ +"x": 110, +"y": 838 +}, +{ +"x": 44, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 690 +} +], +"isClosed": true +} +] +}, +"xAdvance": 277 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Idieresis^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Idieresis^1.json new file mode 100644 index 0000000000..0c8e0d135d --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Idieresis^1.json @@ -0,0 +1,172 @@ +{ +"name": "Idieresis", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 73, +"y": 839, +"smooth": true +}, +{ +"x": 43, +"y": 839, +"type": "cubic" +}, +{ +"x": 19, +"y": 816, +"type": "cubic" +}, +{ +"x": 19, +"y": 786, +"smooth": true +}, +{ +"x": 19, +"y": 756, +"type": "cubic" +}, +{ +"x": 43, +"y": 733, +"type": "cubic" +}, +{ +"x": 73, +"y": 733, +"smooth": true +}, +{ +"x": 103, +"y": 733, +"type": "cubic" +}, +{ +"x": 126, +"y": 756, +"type": "cubic" +}, +{ +"x": 126, +"y": 786, +"smooth": true +}, +{ +"x": 126, +"y": 816, +"type": "cubic" +}, +{ +"x": 103, +"y": 839, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 228, +"y": 839, +"smooth": true +}, +{ +"x": 198, +"y": 839, +"type": "cubic" +}, +{ +"x": 174, +"y": 816, +"type": "cubic" +}, +{ +"x": 174, +"y": 786, +"smooth": true +}, +{ +"x": 174, +"y": 756, +"type": "cubic" +}, +{ +"x": 198, +"y": 733, +"type": "cubic" +}, +{ +"x": 228, +"y": 733, +"smooth": true +}, +{ +"x": 258, +"y": 733, +"type": "cubic" +}, +{ +"x": 281, +"y": 756, +"type": "cubic" +}, +{ +"x": 281, +"y": 786, +"smooth": true +}, +{ +"x": 281, +"y": 816, +"type": "cubic" +}, +{ +"x": 258, +"y": 839, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 277 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Idotaccent^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Idotaccent^1.json new file mode 100644 index 0000000000..20c9ab4123 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Idotaccent^1.json @@ -0,0 +1,107 @@ +{ +"name": "Idotaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 150, +"y": 847, +"smooth": true +}, +{ +"x": 117, +"y": 847, +"type": "cubic" +}, +{ +"x": 92, +"y": 823, +"type": "cubic" +}, +{ +"x": 92, +"y": 791, +"smooth": true +}, +{ +"x": 92, +"y": 758, +"type": "cubic" +}, +{ +"x": 117, +"y": 734, +"type": "cubic" +}, +{ +"x": 150, +"y": 734, +"smooth": true +}, +{ +"x": 183, +"y": 734, +"type": "cubic" +}, +{ +"x": 208, +"y": 758, +"type": "cubic" +}, +{ +"x": 208, +"y": 791, +"smooth": true +}, +{ +"x": 208, +"y": 823, +"type": "cubic" +}, +{ +"x": 183, +"y": 847, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 277 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Igrave^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Igrave^1.json new file mode 100644 index 0000000000..aa67026ca9 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Igrave^1.json @@ -0,0 +1,63 @@ +{ +"name": "Igrave", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 189, +"y": 736 +}, +{ +"x": 126, +"y": 838 +}, +{ +"x": 26, +"y": 838 +}, +{ +"x": 123, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 277 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Imacron^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Imacron^1.json new file mode 100644 index 0000000000..5059cab375 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Imacron^1.json @@ -0,0 +1,63 @@ +{ +"name": "Imacron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 278, +"y": 758 +}, +{ +"x": 278, +"y": 821 +}, +{ +"x": 23, +"y": 821 +}, +{ +"x": 23, +"y": 758 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 277 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Iogonek^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Iogonek^1.json new file mode 100644 index 0000000000..46c87719c2 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Iogonek^1.json @@ -0,0 +1,138 @@ +{ +"name": "Iogonek", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 10 +}, +{ +"x": 94, +"y": 10 +}, +{ +"x": 39, +"y": -13, +"type": "cubic" +}, +{ +"x": -12, +"y": -66, +"type": "cubic" +}, +{ +"x": -12, +"y": -138, +"smooth": true +}, +{ +"x": -12, +"y": -201, +"type": "cubic" +}, +{ +"x": 28, +"y": -223, +"type": "cubic" +}, +{ +"x": 86, +"y": -223, +"smooth": true +}, +{ +"x": 127, +"y": -223, +"type": "cubic" +}, +{ +"x": 161, +"y": -212, +"type": "cubic" +}, +{ +"x": 187, +"y": -192 +}, +{ +"x": 187, +"y": -137 +}, +{ +"x": 169, +"y": -151, +"type": "cubic" +}, +{ +"x": 152, +"y": -157, +"type": "cubic" +}, +{ +"x": 134, +"y": -157, +"smooth": true +}, +{ +"x": 107, +"y": -157, +"type": "cubic" +}, +{ +"x": 90, +"y": -144, +"type": "cubic" +}, +{ +"x": 90, +"y": -107, +"smooth": true +}, +{ +"x": 90, +"y": -50, +"type": "cubic" +}, +{ +"x": 128, +"y": -7, +"type": "cubic" +}, +{ +"x": 172, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 277 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/J^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/J^1.json new file mode 100644 index 0000000000..aca4b24ce3 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/J^1.json @@ -0,0 +1,142 @@ +{ +"name": "J", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 513, +"y": 690 +}, +{ +"x": 403, +"y": 690 +}, +{ +"x": 403, +"y": 268, +"smooth": true +}, +{ +"x": 403, +"y": 236, +"type": "cubic" +}, +{ +"x": 403, +"y": 212, +"type": "cubic" +}, +{ +"x": 402, +"y": 191, +"smooth": true +}, +{ +"x": 396, +"y": 116, +"type": "cubic" +}, +{ +"x": 360, +"y": 70, +"type": "cubic" +}, +{ +"x": 287, +"y": 70, +"smooth": true +}, +{ +"x": 213, +"y": 70, +"type": "cubic" +}, +{ +"x": 170, +"y": 110, +"type": "cubic" +}, +{ +"x": 165, +"y": 204, +"smooth": true +}, +{ +"x": 163, +"y": 242 +}, +{ +"x": 53, +"y": 242 +}, +{ +"x": 54, +"y": 204, +"smooth": true +}, +{ +"x": 58, +"y": 70, +"type": "cubic" +}, +{ +"x": 134, +"y": -14, +"type": "cubic" +}, +{ +"x": 277, +"y": -14, +"smooth": true +}, +{ +"x": 431, +"y": -14, +"type": "cubic" +}, +{ +"x": 503, +"y": 67, +"type": "cubic" +}, +{ +"x": 510, +"y": 184, +"smooth": true +}, +{ +"x": 513, +"y": 223, +"type": "cubic" +}, +{ +"x": 513, +"y": 245, +"type": "cubic" +}, +{ +"x": 513, +"y": 273, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 568 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/K^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/K^1.json new file mode 100644 index 0000000000..327fdee471 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/K^1.json @@ -0,0 +1,74 @@ +{ +"name": "K", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 346, +"y": 356 +}, +{ +"x": 656, +"y": 690 +}, +{ +"x": 526, +"y": 690 +}, +{ +"x": 205, +"y": 339 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 222 +}, +{ +"x": 266, +"y": 288 +}, +{ +"x": 493, +"y": 0 +}, +{ +"x": 640, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 643 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Kcommaaccent^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Kcommaaccent^1.json new file mode 100644 index 0000000000..b55329aa4f --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Kcommaaccent^1.json @@ -0,0 +1,99 @@ +{ +"name": "Kcommaaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 346, +"y": 356 +}, +{ +"x": 656, +"y": 690 +}, +{ +"x": 526, +"y": 690 +}, +{ +"x": 205, +"y": 339 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 222 +}, +{ +"x": 266, +"y": 288 +}, +{ +"x": 493, +"y": 0 +}, +{ +"x": 640, +"y": 0 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 313, +"y": -48 +}, +{ +"x": 253, +"y": -200 +}, +{ +"x": 323, +"y": -200 +}, +{ +"x": 394, +"y": -59 +}, +{ +"x": 394, +"y": -48 +} +], +"isClosed": true +} +] +}, +"xAdvance": 643 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/L^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/L^1.json new file mode 100644 index 0000000000..3d180453e7 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/L^1.json @@ -0,0 +1,50 @@ +{ +"name": "L", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 572, +"y": 91 +}, +{ +"x": 205, +"y": 91 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 572, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 588 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Lacute^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Lacute^1.json new file mode 100644 index 0000000000..ba348419f8 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Lacute^1.json @@ -0,0 +1,71 @@ +{ +"name": "Lacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 178, +"y": 736 +}, +{ +"x": 275, +"y": 838 +}, +{ +"x": 175, +"y": 838 +}, +{ +"x": 112, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 572, +"y": 91 +}, +{ +"x": 205, +"y": 91 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 572, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 588 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Lcaron^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Lcaron^1.json new file mode 100644 index 0000000000..17f06c7d31 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Lcaron^1.json @@ -0,0 +1,50 @@ +{ +"name": "Lcaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 572, +"y": 91 +}, +{ +"x": 205, +"y": 91 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 572, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 588 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Lcommaaccent^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Lcommaaccent^1.json new file mode 100644 index 0000000000..06b6ccbb8e --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Lcommaaccent^1.json @@ -0,0 +1,75 @@ +{ +"name": "Lcommaaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 572, +"y": 91 +}, +{ +"x": 205, +"y": 91 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 572, +"y": 0 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 303, +"y": -48 +}, +{ +"x": 243, +"y": -200 +}, +{ +"x": 313, +"y": -200 +}, +{ +"x": 384, +"y": -59 +}, +{ +"x": 384, +"y": -48 +} +], +"isClosed": true +} +] +}, +"xAdvance": 588 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ldot^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ldot^1.json new file mode 100644 index 0000000000..7e1e46f044 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ldot^1.json @@ -0,0 +1,115 @@ +{ +"name": "Ldot", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 572, +"y": 91 +}, +{ +"x": 205, +"y": 91 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 572, +"y": 0 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 407, +"y": 334, +"smooth": true +}, +{ +"x": 444, +"y": 334, +"type": "cubic" +}, +{ +"x": 473, +"y": 363, +"type": "cubic" +}, +{ +"x": 473, +"y": 400, +"smooth": true +}, +{ +"x": 473, +"y": 438, +"type": "cubic" +}, +{ +"x": 444, +"y": 466, +"type": "cubic" +}, +{ +"x": 407, +"y": 466, +"smooth": true +}, +{ +"x": 369, +"y": 466, +"type": "cubic" +}, +{ +"x": 340, +"y": 438, +"type": "cubic" +}, +{ +"x": 340, +"y": 400, +"smooth": true +}, +{ +"x": 340, +"y": 363, +"type": "cubic" +}, +{ +"x": 369, +"y": 334, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 588 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Lslash^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Lslash^1.json new file mode 100644 index 0000000000..e1dc6e3b30 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Lslash^1.json @@ -0,0 +1,82 @@ +{ +"name": "Lslash", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 598, +"y": 91 +}, +{ +"x": 231, +"y": 91 +}, +{ +"x": 231, +"y": 350 +}, +{ +"x": 347, +"y": 417 +}, +{ +"x": 347, +"y": 495 +}, +{ +"x": 231, +"y": 428 +}, +{ +"x": 231, +"y": 690 +}, +{ +"x": 122, +"y": 690 +}, +{ +"x": 122, +"y": 365 +}, +{ +"x": 17, +"y": 305 +}, +{ +"x": 17, +"y": 227 +}, +{ +"x": 122, +"y": 287 +}, +{ +"x": 122, +"y": 0 +}, +{ +"x": 598, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 615 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/M^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/M^1.json new file mode 100644 index 0000000000..d418fb1909 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/M^1.json @@ -0,0 +1,138 @@ +{ +"name": "M", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 808, +"y": 690 +}, +{ +"x": 636, +"y": 690 +}, +{ +"x": 454, +"y": 98 +}, +{ +"x": 272, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 339, +"smooth": true +}, +{ +"x": 205, +"y": 418, +"type": "cubic" +}, +{ +"x": 205, +"y": 511, +"type": "cubic" +}, +{ +"x": 203, +"y": 585 +}, +{ +"x": 222, +"y": 512, +"type": "cubic" +}, +{ +"x": 251, +"y": 418, +"type": "cubic" +}, +{ +"x": 276, +"y": 341, +"smooth": true +}, +{ +"x": 388, +"y": 0 +}, +{ +"x": 515, +"y": 0 +}, +{ +"x": 626, +"y": 340, +"smooth": true +}, +{ +"x": 652, +"y": 418, +"type": "cubic" +}, +{ +"x": 681, +"y": 513, +"type": "cubic" +}, +{ +"x": 701, +"y": 586 +}, +{ +"x": 699, +"y": 513, +"type": "cubic" +}, +{ +"x": 699, +"y": 418, +"type": "cubic" +}, +{ +"x": 699, +"y": 339, +"smooth": true +}, +{ +"x": 699, +"y": 0 +}, +{ +"x": 808, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 880 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/N^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/N^1.json new file mode 100644 index 0000000000..05a251d998 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/N^1.json @@ -0,0 +1,96 @@ +{ +"name": "N", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 665, +"y": 0 +}, +{ +"x": 664, +"y": 690 +}, +{ +"x": 556, +"y": 690 +}, +{ +"x": 556, +"y": 358, +"smooth": true +}, +{ +"x": 556, +"y": 287, +"type": "cubic" +}, +{ +"x": 557, +"y": 195, +"type": "cubic" +}, +{ +"x": 559, +"y": 117 +}, +{ +"x": 250, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 330, +"smooth": true +}, +{ +"x": 205, +"y": 401, +"type": "cubic" +}, +{ +"x": 204, +"y": 490, +"type": "cubic" +}, +{ +"x": 201, +"y": 569 +}, +{ +"x": 507, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 737 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Nacute^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Nacute^1.json new file mode 100644 index 0000000000..60c7fc29a6 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Nacute^1.json @@ -0,0 +1,117 @@ +{ +"name": "Nacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 407, +"y": 736 +}, +{ +"x": 504, +"y": 838 +}, +{ +"x": 404, +"y": 838 +}, +{ +"x": 341, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 665, +"y": 0 +}, +{ +"x": 664, +"y": 690 +}, +{ +"x": 556, +"y": 690 +}, +{ +"x": 556, +"y": 358, +"smooth": true +}, +{ +"x": 556, +"y": 287, +"type": "cubic" +}, +{ +"x": 557, +"y": 195, +"type": "cubic" +}, +{ +"x": 559, +"y": 117 +}, +{ +"x": 250, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 330, +"smooth": true +}, +{ +"x": 205, +"y": 401, +"type": "cubic" +}, +{ +"x": 204, +"y": 490, +"type": "cubic" +}, +{ +"x": 201, +"y": 569 +}, +{ +"x": 507, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 737 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ncaron^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ncaron^1.json new file mode 100644 index 0000000000..296512824c --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ncaron^1.json @@ -0,0 +1,129 @@ +{ +"name": "Ncaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 339, +"y": 736 +}, +{ +"x": 420, +"y": 736 +}, +{ +"x": 486, +"y": 838 +}, +{ +"x": 411, +"y": 838 +}, +{ +"x": 380, +"y": 777 +}, +{ +"x": 349, +"y": 838 +}, +{ +"x": 273, +"y": 838 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 507, +"y": 0 +}, +{ +"x": 665, +"y": 0 +}, +{ +"x": 664, +"y": 690 +}, +{ +"x": 556, +"y": 690 +}, +{ +"x": 556, +"y": 358, +"smooth": true +}, +{ +"x": 556, +"y": 287, +"type": "cubic" +}, +{ +"x": 557, +"y": 195, +"type": "cubic" +}, +{ +"x": 559, +"y": 117 +}, +{ +"x": 250, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 330, +"smooth": true +}, +{ +"x": 205, +"y": 401, +"type": "cubic" +}, +{ +"x": 204, +"y": 490, +"type": "cubic" +}, +{ +"x": 201, +"y": 569 +} +], +"isClosed": true +} +] +}, +"xAdvance": 737 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ncommaaccent^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ncommaaccent^1.json new file mode 100644 index 0000000000..24267776c3 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ncommaaccent^1.json @@ -0,0 +1,121 @@ +{ +"name": "Ncommaaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 665, +"y": 0 +}, +{ +"x": 664, +"y": 690 +}, +{ +"x": 556, +"y": 690 +}, +{ +"x": 556, +"y": 358, +"smooth": true +}, +{ +"x": 556, +"y": 287, +"type": "cubic" +}, +{ +"x": 557, +"y": 195, +"type": "cubic" +}, +{ +"x": 559, +"y": 117 +}, +{ +"x": 250, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 330, +"smooth": true +}, +{ +"x": 205, +"y": 401, +"type": "cubic" +}, +{ +"x": 204, +"y": 490, +"type": "cubic" +}, +{ +"x": 201, +"y": 569 +}, +{ +"x": 507, +"y": 0 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 431, +"y": -59 +}, +{ +"x": 431, +"y": -48 +}, +{ +"x": 350, +"y": -48 +}, +{ +"x": 290, +"y": -200 +}, +{ +"x": 360, +"y": -200 +} +], +"isClosed": true +} +] +}, +"xAdvance": 737 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ntilde^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ntilde^1.json new file mode 100644 index 0000000000..ccce5959a9 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ntilde^1.json @@ -0,0 +1,227 @@ +{ +"name": "Ntilde", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 320, +"y": 835, +"smooth": true +}, +{ +"x": 281, +"y": 835, +"type": "cubic" +}, +{ +"x": 259, +"y": 813, +"type": "cubic" +}, +{ +"x": 259, +"y": 748 +}, +{ +"x": 311, +"y": 748 +}, +{ +"x": 311, +"y": 765, +"type": "cubic" +}, +{ +"x": 317, +"y": 771, +"type": "cubic" +}, +{ +"x": 327, +"y": 771, +"smooth": true +}, +{ +"x": 336, +"y": 771, +"type": "cubic" +}, +{ +"x": 347, +"y": 767, +"type": "cubic" +}, +{ +"x": 371, +"y": 759, +"smooth": true +}, +{ +"x": 401, +"y": 748, +"type": "cubic" +}, +{ +"x": 417, +"y": 744, +"type": "cubic" +}, +{ +"x": 438, +"y": 744, +"smooth": true +}, +{ +"x": 478, +"y": 744, +"type": "cubic" +}, +{ +"x": 500, +"y": 766, +"type": "cubic" +}, +{ +"x": 500, +"y": 831 +}, +{ +"x": 447, +"y": 831 +}, +{ +"x": 447, +"y": 814, +"type": "cubic" +}, +{ +"x": 442, +"y": 808, +"type": "cubic" +}, +{ +"x": 431, +"y": 808, +"smooth": true +}, +{ +"x": 423, +"y": 808, +"type": "cubic" +}, +{ +"x": 411, +"y": 812, +"type": "cubic" +}, +{ +"x": 387, +"y": 820, +"smooth": true +}, +{ +"x": 358, +"y": 831, +"type": "cubic" +}, +{ +"x": 342, +"y": 835, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 665, +"y": 0 +}, +{ +"x": 664, +"y": 690 +}, +{ +"x": 556, +"y": 690 +}, +{ +"x": 556, +"y": 358, +"smooth": true +}, +{ +"x": 556, +"y": 287, +"type": "cubic" +}, +{ +"x": 557, +"y": 195, +"type": "cubic" +}, +{ +"x": 559, +"y": 117 +}, +{ +"x": 250, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 330, +"smooth": true +}, +{ +"x": 205, +"y": 401, +"type": "cubic" +}, +{ +"x": 204, +"y": 490, +"type": "cubic" +}, +{ +"x": 201, +"y": 569 +}, +{ +"x": 507, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 737 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/OE^3.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/OE^3.json new file mode 100644 index 0000000000..7591fdfd41 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/OE^3.json @@ -0,0 +1,210 @@ +{ +"name": "OE", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 1073, +"y": 88 +}, +{ +"x": 706, +"y": 88 +}, +{ +"x": 706, +"y": 302 +}, +{ +"x": 1035, +"y": 302 +}, +{ +"x": 1035, +"y": 389 +}, +{ +"x": 706, +"y": 389 +}, +{ +"x": 706, +"y": 603 +}, +{ +"x": 1063, +"y": 603 +}, +{ +"x": 1063, +"y": 690 +}, +{ +"x": 596, +"y": 690 +}, +{ +"x": 596, +"y": 559 +}, +{ +"x": 568, +"y": 628 +}, +{ +"x": 516, +"y": 684, +"type": "cubic" +}, +{ +"x": 462, +"y": 704, +"type": "cubic" +}, +{ +"x": 364, +"y": 704, +"smooth": true +}, +{ +"x": 170, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 551, +"type": "cubic" +}, +{ +"x": 49, +"y": 345, +"smooth": true +}, +{ +"x": 49, +"y": 140, +"type": "cubic" +}, +{ +"x": 170, +"y": -14, +"type": "cubic" +}, +{ +"x": 364, +"y": -14, +"smooth": true +}, +{ +"x": 453, +"y": -14, +"type": "cubic" +}, +{ +"x": 516, +"y": 6, +"type": "cubic" +}, +{ +"x": 568, +"y": 60 +}, +{ +"x": 596, +"y": 129 +}, +{ +"x": 596, +"y": 0 +}, +{ +"x": 1073, +"y": 0 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 382, +"y": 70, +"smooth": true +}, +{ +"x": 247, +"y": 70, +"type": "cubic" +}, +{ +"x": 167, +"y": 180, +"type": "cubic" +}, +{ +"x": 167, +"y": 345, +"smooth": true +}, +{ +"x": 167, +"y": 512, +"type": "cubic" +}, +{ +"x": 247, +"y": 620, +"type": "cubic" +}, +{ +"x": 382, +"y": 620, +"smooth": true +}, +{ +"x": 516, +"y": 620, +"type": "cubic" +}, +{ +"x": 596, +"y": 512, +"type": "cubic" +}, +{ +"x": 596, +"y": 345, +"smooth": true +}, +{ +"x": 596, +"y": 180, +"type": "cubic" +}, +{ +"x": 516, +"y": 70, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 1101 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/O^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/O^1.json new file mode 100644 index 0000000000..876fd61334 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/O^1.json @@ -0,0 +1,151 @@ +{ +"name": "O", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 382, +"y": 704, +"smooth": true +}, +{ +"x": 170, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 345, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 170, +"y": -14, +"type": "cubic" +}, +{ +"x": 382, +"y": -14, +"smooth": true +}, +{ +"x": 593, +"y": -14, +"type": "cubic" +}, +{ +"x": 714, +"y": 132, +"type": "cubic" +}, +{ +"x": 714, +"y": 345, +"smooth": true +}, +{ +"x": 714, +"y": 559, +"type": "cubic" +}, +{ +"x": 593, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 382, +"y": 70, +"smooth": true +}, +{ +"x": 247, +"y": 70, +"type": "cubic" +}, +{ +"x": 167, +"y": 174, +"type": "cubic" +}, +{ +"x": 167, +"y": 345, +"smooth": true +}, +{ +"x": 167, +"y": 517, +"type": "cubic" +}, +{ +"x": 247, +"y": 620, +"type": "cubic" +}, +{ +"x": 382, +"y": 620, +"smooth": true +}, +{ +"x": 516, +"y": 620, +"type": "cubic" +}, +{ +"x": 596, +"y": 517, +"type": "cubic" +}, +{ +"x": 596, +"y": 345, +"smooth": true +}, +{ +"x": 596, +"y": 174, +"type": "cubic" +}, +{ +"x": 516, +"y": 70, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 750 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Oacute^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Oacute^1.json new file mode 100644 index 0000000000..4d7d9666a7 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Oacute^1.json @@ -0,0 +1,172 @@ +{ +"name": "Oacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 410, +"y": 736 +}, +{ +"x": 507, +"y": 838 +}, +{ +"x": 407, +"y": 838 +}, +{ +"x": 344, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 382, +"y": 704, +"smooth": true +}, +{ +"x": 170, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 345, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 170, +"y": -14, +"type": "cubic" +}, +{ +"x": 382, +"y": -14, +"smooth": true +}, +{ +"x": 593, +"y": -14, +"type": "cubic" +}, +{ +"x": 714, +"y": 132, +"type": "cubic" +}, +{ +"x": 714, +"y": 345, +"smooth": true +}, +{ +"x": 714, +"y": 559, +"type": "cubic" +}, +{ +"x": 593, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 382, +"y": 70, +"smooth": true +}, +{ +"x": 247, +"y": 70, +"type": "cubic" +}, +{ +"x": 167, +"y": 174, +"type": "cubic" +}, +{ +"x": 167, +"y": 345, +"smooth": true +}, +{ +"x": 167, +"y": 517, +"type": "cubic" +}, +{ +"x": 247, +"y": 620, +"type": "cubic" +}, +{ +"x": 382, +"y": 620, +"smooth": true +}, +{ +"x": 516, +"y": 620, +"type": "cubic" +}, +{ +"x": 596, +"y": 517, +"type": "cubic" +}, +{ +"x": 596, +"y": 345, +"smooth": true +}, +{ +"x": 596, +"y": 174, +"type": "cubic" +}, +{ +"x": 516, +"y": 70, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 750 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ocircumflex^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ocircumflex^1.json new file mode 100644 index 0000000000..8290978c6e --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ocircumflex^1.json @@ -0,0 +1,184 @@ +{ +"name": "Ocircumflex", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 351, +"y": 736 +}, +{ +"x": 382, +"y": 796 +}, +{ +"x": 413, +"y": 736 +}, +{ +"x": 489, +"y": 736 +}, +{ +"x": 423, +"y": 838 +}, +{ +"x": 342, +"y": 838 +}, +{ +"x": 276, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 382, +"y": 704, +"smooth": true +}, +{ +"x": 170, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 345, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 170, +"y": -14, +"type": "cubic" +}, +{ +"x": 382, +"y": -14, +"smooth": true +}, +{ +"x": 593, +"y": -14, +"type": "cubic" +}, +{ +"x": 714, +"y": 132, +"type": "cubic" +}, +{ +"x": 714, +"y": 345, +"smooth": true +}, +{ +"x": 714, +"y": 559, +"type": "cubic" +}, +{ +"x": 593, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 382, +"y": 70, +"smooth": true +}, +{ +"x": 247, +"y": 70, +"type": "cubic" +}, +{ +"x": 167, +"y": 174, +"type": "cubic" +}, +{ +"x": 167, +"y": 345, +"smooth": true +}, +{ +"x": 167, +"y": 517, +"type": "cubic" +}, +{ +"x": 247, +"y": 620, +"type": "cubic" +}, +{ +"x": 382, +"y": 620, +"smooth": true +}, +{ +"x": 516, +"y": 620, +"type": "cubic" +}, +{ +"x": 596, +"y": 517, +"type": "cubic" +}, +{ +"x": 596, +"y": 345, +"smooth": true +}, +{ +"x": 596, +"y": 174, +"type": "cubic" +}, +{ +"x": 516, +"y": 70, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 750 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Odieresis^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Odieresis^1.json new file mode 100644 index 0000000000..36bcce9d0f --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Odieresis^1.json @@ -0,0 +1,281 @@ +{ +"name": "Odieresis", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 305, +"y": 733, +"smooth": true +}, +{ +"x": 335, +"y": 733, +"type": "cubic" +}, +{ +"x": 358, +"y": 756, +"type": "cubic" +}, +{ +"x": 358, +"y": 786, +"smooth": true +}, +{ +"x": 358, +"y": 816, +"type": "cubic" +}, +{ +"x": 335, +"y": 839, +"type": "cubic" +}, +{ +"x": 305, +"y": 839, +"smooth": true +}, +{ +"x": 275, +"y": 839, +"type": "cubic" +}, +{ +"x": 251, +"y": 816, +"type": "cubic" +}, +{ +"x": 251, +"y": 786, +"smooth": true +}, +{ +"x": 251, +"y": 756, +"type": "cubic" +}, +{ +"x": 275, +"y": 733, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 460, +"y": 733, +"smooth": true +}, +{ +"x": 490, +"y": 733, +"type": "cubic" +}, +{ +"x": 513, +"y": 756, +"type": "cubic" +}, +{ +"x": 513, +"y": 786, +"smooth": true +}, +{ +"x": 513, +"y": 816, +"type": "cubic" +}, +{ +"x": 490, +"y": 839, +"type": "cubic" +}, +{ +"x": 460, +"y": 839, +"smooth": true +}, +{ +"x": 430, +"y": 839, +"type": "cubic" +}, +{ +"x": 406, +"y": 816, +"type": "cubic" +}, +{ +"x": 406, +"y": 786, +"smooth": true +}, +{ +"x": 406, +"y": 756, +"type": "cubic" +}, +{ +"x": 430, +"y": 733, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 382, +"y": 704, +"smooth": true +}, +{ +"x": 170, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 345, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 170, +"y": -14, +"type": "cubic" +}, +{ +"x": 382, +"y": -14, +"smooth": true +}, +{ +"x": 593, +"y": -14, +"type": "cubic" +}, +{ +"x": 714, +"y": 132, +"type": "cubic" +}, +{ +"x": 714, +"y": 345, +"smooth": true +}, +{ +"x": 714, +"y": 559, +"type": "cubic" +}, +{ +"x": 593, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 382, +"y": 70, +"smooth": true +}, +{ +"x": 247, +"y": 70, +"type": "cubic" +}, +{ +"x": 167, +"y": 174, +"type": "cubic" +}, +{ +"x": 167, +"y": 345, +"smooth": true +}, +{ +"x": 167, +"y": 517, +"type": "cubic" +}, +{ +"x": 247, +"y": 620, +"type": "cubic" +}, +{ +"x": 382, +"y": 620, +"smooth": true +}, +{ +"x": 516, +"y": 620, +"type": "cubic" +}, +{ +"x": 596, +"y": 517, +"type": "cubic" +}, +{ +"x": 596, +"y": 345, +"smooth": true +}, +{ +"x": 596, +"y": 174, +"type": "cubic" +}, +{ +"x": 516, +"y": 70, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 750 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ograve^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ograve^1.json new file mode 100644 index 0000000000..01ebedc2b4 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ograve^1.json @@ -0,0 +1,172 @@ +{ +"name": "Ograve", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 355, +"y": 736 +}, +{ +"x": 421, +"y": 736 +}, +{ +"x": 358, +"y": 838 +}, +{ +"x": 258, +"y": 838 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 382, +"y": 704, +"smooth": true +}, +{ +"x": 170, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 345, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 170, +"y": -14, +"type": "cubic" +}, +{ +"x": 382, +"y": -14, +"smooth": true +}, +{ +"x": 593, +"y": -14, +"type": "cubic" +}, +{ +"x": 714, +"y": 132, +"type": "cubic" +}, +{ +"x": 714, +"y": 345, +"smooth": true +}, +{ +"x": 714, +"y": 559, +"type": "cubic" +}, +{ +"x": 593, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 382, +"y": 70, +"smooth": true +}, +{ +"x": 247, +"y": 70, +"type": "cubic" +}, +{ +"x": 167, +"y": 174, +"type": "cubic" +}, +{ +"x": 167, +"y": 345, +"smooth": true +}, +{ +"x": 167, +"y": 517, +"type": "cubic" +}, +{ +"x": 247, +"y": 620, +"type": "cubic" +}, +{ +"x": 382, +"y": 620, +"smooth": true +}, +{ +"x": 516, +"y": 620, +"type": "cubic" +}, +{ +"x": 596, +"y": 517, +"type": "cubic" +}, +{ +"x": 596, +"y": 345, +"smooth": true +}, +{ +"x": 596, +"y": 174, +"type": "cubic" +}, +{ +"x": 516, +"y": 70, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 750 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ohungarumlaut^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ohungarumlaut^1.json new file mode 100644 index 0000000000..0c253340e8 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ohungarumlaut^1.json @@ -0,0 +1,193 @@ +{ +"name": "Ohungarumlaut", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 326, +"y": 736 +}, +{ +"x": 423, +"y": 838 +}, +{ +"x": 323, +"y": 838 +}, +{ +"x": 260, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 392, +"y": 736 +}, +{ +"x": 458, +"y": 736 +}, +{ +"x": 555, +"y": 838 +}, +{ +"x": 455, +"y": 838 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 382, +"y": 704, +"smooth": true +}, +{ +"x": 170, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 345, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 170, +"y": -14, +"type": "cubic" +}, +{ +"x": 382, +"y": -14, +"smooth": true +}, +{ +"x": 593, +"y": -14, +"type": "cubic" +}, +{ +"x": 714, +"y": 132, +"type": "cubic" +}, +{ +"x": 714, +"y": 345, +"smooth": true +}, +{ +"x": 714, +"y": 559, +"type": "cubic" +}, +{ +"x": 593, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 382, +"y": 70, +"smooth": true +}, +{ +"x": 247, +"y": 70, +"type": "cubic" +}, +{ +"x": 167, +"y": 174, +"type": "cubic" +}, +{ +"x": 167, +"y": 345, +"smooth": true +}, +{ +"x": 167, +"y": 517, +"type": "cubic" +}, +{ +"x": 247, +"y": 620, +"type": "cubic" +}, +{ +"x": 382, +"y": 620, +"smooth": true +}, +{ +"x": 516, +"y": 620, +"type": "cubic" +}, +{ +"x": 596, +"y": 517, +"type": "cubic" +}, +{ +"x": 596, +"y": 345, +"smooth": true +}, +{ +"x": 596, +"y": 174, +"type": "cubic" +}, +{ +"x": 516, +"y": 70, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 750 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Omacron^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Omacron^1.json new file mode 100644 index 0000000000..513cc31eb3 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Omacron^1.json @@ -0,0 +1,172 @@ +{ +"name": "Omacron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 510, +"y": 758 +}, +{ +"x": 510, +"y": 821 +}, +{ +"x": 255, +"y": 821 +}, +{ +"x": 255, +"y": 758 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 382, +"y": 704, +"smooth": true +}, +{ +"x": 170, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 345, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 170, +"y": -14, +"type": "cubic" +}, +{ +"x": 382, +"y": -14, +"smooth": true +}, +{ +"x": 593, +"y": -14, +"type": "cubic" +}, +{ +"x": 714, +"y": 132, +"type": "cubic" +}, +{ +"x": 714, +"y": 345, +"smooth": true +}, +{ +"x": 714, +"y": 559, +"type": "cubic" +}, +{ +"x": 593, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 382, +"y": 70, +"smooth": true +}, +{ +"x": 247, +"y": 70, +"type": "cubic" +}, +{ +"x": 167, +"y": 174, +"type": "cubic" +}, +{ +"x": 167, +"y": 345, +"smooth": true +}, +{ +"x": 167, +"y": 517, +"type": "cubic" +}, +{ +"x": 247, +"y": 620, +"type": "cubic" +}, +{ +"x": 382, +"y": 620, +"smooth": true +}, +{ +"x": 516, +"y": 620, +"type": "cubic" +}, +{ +"x": 596, +"y": 517, +"type": "cubic" +}, +{ +"x": 596, +"y": 345, +"smooth": true +}, +{ +"x": 596, +"y": 174, +"type": "cubic" +}, +{ +"x": 516, +"y": 70, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 750 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Oslash^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Oslash^1.json new file mode 100644 index 0000000000..f45e734e37 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Oslash^1.json @@ -0,0 +1,244 @@ +{ +"name": "Oslash", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 725, +"y": 637 +}, +{ +"x": 677, +"y": 685 +}, +{ +"x": 614, +"y": 622 +}, +{ +"x": 558, +"y": 674, +"type": "cubic" +}, +{ +"x": 481, +"y": 704, +"type": "cubic" +}, +{ +"x": 385, +"y": 704, +"smooth": true +}, +{ +"x": 174, +"y": 704, +"type": "cubic" +}, +{ +"x": 52, +"y": 559, +"type": "cubic" +}, +{ +"x": 52, +"y": 345, +"smooth": true +}, +{ +"x": 52, +"y": 257, +"type": "cubic" +}, +{ +"x": 73, +"y": 180, +"type": "cubic" +}, +{ +"x": 112, +"y": 120 +}, +{ +"x": 45, +"y": 53 +}, +{ +"x": 93, +"y": 5 +}, +{ +"x": 156, +"y": 68 +}, +{ +"x": 212, +"y": 16, +"type": "cubic" +}, +{ +"x": 290, +"y": -14, +"type": "cubic" +}, +{ +"x": 385, +"y": -14, +"smooth": true +}, +{ +"x": 596, +"y": -14, +"type": "cubic" +}, +{ +"x": 718, +"y": 132, +"type": "cubic" +}, +{ +"x": 718, +"y": 345, +"smooth": true +}, +{ +"x": 718, +"y": 434, +"type": "cubic" +}, +{ +"x": 697, +"y": 510, +"type": "cubic" +}, +{ +"x": 658, +"y": 570 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 170, +"y": 345, +"smooth": true +}, +{ +"x": 170, +"y": 517, +"type": "cubic" +}, +{ +"x": 250, +"y": 620, +"type": "cubic" +}, +{ +"x": 385, +"y": 620, +"smooth": true +}, +{ +"x": 451, +"y": 620, +"type": "cubic" +}, +{ +"x": 504, +"y": 595, +"type": "cubic" +}, +{ +"x": 541, +"y": 549 +}, +{ +"x": 194, +"y": 202 +}, +{ +"x": 178, +"y": 242, +"type": "cubic" +}, +{ +"x": 170, +"y": 290, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 600, +"y": 345, +"smooth": true +}, +{ +"x": 600, +"y": 174, +"type": "cubic" +}, +{ +"x": 520, +"y": 70, +"type": "cubic" +}, +{ +"x": 385, +"y": 70, +"smooth": true +}, +{ +"x": 319, +"y": 70, +"type": "cubic" +}, +{ +"x": 266, +"y": 95, +"type": "cubic" +}, +{ +"x": 229, +"y": 141 +}, +{ +"x": 576, +"y": 488 +}, +{ +"x": 592, +"y": 448, +"type": "cubic" +}, +{ +"x": 600, +"y": 400, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 756 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Otilde^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Otilde^1.json new file mode 100644 index 0000000000..5d9999a7f9 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Otilde^1.json @@ -0,0 +1,282 @@ +{ +"name": "Otilde", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 330, +"y": 771, +"smooth": true +}, +{ +"x": 339, +"y": 771, +"type": "cubic" +}, +{ +"x": 350, +"y": 767, +"type": "cubic" +}, +{ +"x": 374, +"y": 759, +"smooth": true +}, +{ +"x": 404, +"y": 748, +"type": "cubic" +}, +{ +"x": 420, +"y": 744, +"type": "cubic" +}, +{ +"x": 441, +"y": 744, +"smooth": true +}, +{ +"x": 481, +"y": 744, +"type": "cubic" +}, +{ +"x": 503, +"y": 766, +"type": "cubic" +}, +{ +"x": 503, +"y": 831 +}, +{ +"x": 450, +"y": 831 +}, +{ +"x": 450, +"y": 814, +"type": "cubic" +}, +{ +"x": 445, +"y": 808, +"type": "cubic" +}, +{ +"x": 434, +"y": 808, +"smooth": true +}, +{ +"x": 426, +"y": 808, +"type": "cubic" +}, +{ +"x": 414, +"y": 812, +"type": "cubic" +}, +{ +"x": 390, +"y": 820, +"smooth": true +}, +{ +"x": 361, +"y": 831, +"type": "cubic" +}, +{ +"x": 345, +"y": 835, +"type": "cubic" +}, +{ +"x": 323, +"y": 835, +"smooth": true +}, +{ +"x": 284, +"y": 835, +"type": "cubic" +}, +{ +"x": 262, +"y": 813, +"type": "cubic" +}, +{ +"x": 262, +"y": 748 +}, +{ +"x": 314, +"y": 748 +}, +{ +"x": 314, +"y": 765, +"type": "cubic" +}, +{ +"x": 320, +"y": 771, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 382, +"y": 704, +"smooth": true +}, +{ +"x": 170, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 345, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 170, +"y": -14, +"type": "cubic" +}, +{ +"x": 382, +"y": -14, +"smooth": true +}, +{ +"x": 593, +"y": -14, +"type": "cubic" +}, +{ +"x": 714, +"y": 132, +"type": "cubic" +}, +{ +"x": 714, +"y": 345, +"smooth": true +}, +{ +"x": 714, +"y": 559, +"type": "cubic" +}, +{ +"x": 593, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 382, +"y": 70, +"smooth": true +}, +{ +"x": 247, +"y": 70, +"type": "cubic" +}, +{ +"x": 167, +"y": 174, +"type": "cubic" +}, +{ +"x": 167, +"y": 345, +"smooth": true +}, +{ +"x": 167, +"y": 517, +"type": "cubic" +}, +{ +"x": 247, +"y": 620, +"type": "cubic" +}, +{ +"x": 382, +"y": 620, +"smooth": true +}, +{ +"x": 516, +"y": 620, +"type": "cubic" +}, +{ +"x": 596, +"y": 517, +"type": "cubic" +}, +{ +"x": 596, +"y": 345, +"smooth": true +}, +{ +"x": 596, +"y": 174, +"type": "cubic" +}, +{ +"x": 516, +"y": 70, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 750 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/P^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/P^1.json new file mode 100644 index 0000000000..b037796a5c --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/P^1.json @@ -0,0 +1,185 @@ +{ +"name": "P", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 415, +"y": 686, +"smooth": true +}, +{ +"x": 383, +"y": 690, +"type": "cubic" +}, +{ +"x": 358, +"y": 690, +"type": "cubic" +}, +{ +"x": 321, +"y": 690, +"smooth": true +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 272 +}, +{ +"x": 321, +"y": 272, +"smooth": true +}, +{ +"x": 358, +"y": 272, +"type": "cubic" +}, +{ +"x": 383, +"y": 272, +"type": "cubic" +}, +{ +"x": 415, +"y": 276, +"smooth": true +}, +{ +"x": 515, +"y": 289, +"type": "cubic" +}, +{ +"x": 597, +"y": 359, +"type": "cubic" +}, +{ +"x": 597, +"y": 481, +"smooth": true +}, +{ +"x": 597, +"y": 603, +"type": "cubic" +}, +{ +"x": 523, +"y": 672, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 394, +"y": 365, +"smooth": true +}, +{ +"x": 376, +"y": 362, +"type": "cubic" +}, +{ +"x": 352, +"y": 361, +"type": "cubic" +}, +{ +"x": 324, +"y": 361, +"smooth": true +}, +{ +"x": 205, +"y": 361 +}, +{ +"x": 205, +"y": 601 +}, +{ +"x": 324, +"y": 601, +"smooth": true +}, +{ +"x": 352, +"y": 601, +"type": "cubic" +}, +{ +"x": 376, +"y": 600, +"type": "cubic" +}, +{ +"x": 394, +"y": 597, +"smooth": true +}, +{ +"x": 442, +"y": 588, +"type": "cubic" +}, +{ +"x": 481, +"y": 554, +"type": "cubic" +}, +{ +"x": 481, +"y": 481, +"smooth": true +}, +{ +"x": 481, +"y": 408, +"type": "cubic" +}, +{ +"x": 442, +"y": 374, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 610 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Q^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Q^1.json new file mode 100644 index 0000000000..3992ec2012 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Q^1.json @@ -0,0 +1,213 @@ +{ +"name": "Q", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 595, +"y": 87 +}, +{ +"x": 673, +"y": 144, +"type": "cubic" +}, +{ +"x": 714, +"y": 238, +"type": "cubic" +}, +{ +"x": 714, +"y": 345, +"smooth": true +}, +{ +"x": 714, +"y": 559, +"type": "cubic" +}, +{ +"x": 593, +"y": 704, +"type": "cubic" +}, +{ +"x": 382, +"y": 704, +"smooth": true +}, +{ +"x": 170, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 559, +"type": "cubic" +}, +{ +"x": 49, +"y": 345, +"smooth": true +}, +{ +"x": 49, +"y": 132, +"type": "cubic" +}, +{ +"x": 170, +"y": -14, +"type": "cubic" +}, +{ +"x": 382, +"y": -14, +"smooth": true +}, +{ +"x": 408, +"y": -14, +"type": "cubic" +}, +{ +"x": 431, +"y": -12, +"type": "cubic" +}, +{ +"x": 453, +"y": -7, +"smooth": true +}, +{ +"x": 481, +"y": -1, +"type": "cubic" +}, +{ +"x": 498, +"y": 2, +"type": "cubic" +}, +{ +"x": 526, +"y": 2, +"smooth": true +}, +{ +"x": 564, +"y": 2, +"type": "cubic" +}, +{ +"x": 595, +"y": -7, +"type": "cubic" +}, +{ +"x": 662, +"y": -51 +}, +{ +"x": 721, +"y": 22 +}, +{ +"x": 679, +"y": 57, +"type": "cubic" +}, +{ +"x": 640, +"y": 79, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 167, +"y": 345, +"smooth": true +}, +{ +"x": 167, +"y": 517, +"type": "cubic" +}, +{ +"x": 247, +"y": 620, +"type": "cubic" +}, +{ +"x": 382, +"y": 620, +"smooth": true +}, +{ +"x": 516, +"y": 620, +"type": "cubic" +}, +{ +"x": 596, +"y": 517, +"type": "cubic" +}, +{ +"x": 596, +"y": 345, +"smooth": true +}, +{ +"x": 596, +"y": 174, +"type": "cubic" +}, +{ +"x": 516, +"y": 70, +"type": "cubic" +}, +{ +"x": 382, +"y": 70, +"smooth": true +}, +{ +"x": 247, +"y": 70, +"type": "cubic" +}, +{ +"x": 167, +"y": 174, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 748 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/R^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/R^1.json new file mode 100644 index 0000000000..bd8087be1f --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/R^1.json @@ -0,0 +1,247 @@ +{ +"name": "R", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 570, +"y": 178, +"smooth": true +}, +{ +"x": 563, +"y": 250, +"type": "cubic" +}, +{ +"x": 537, +"y": 310, +"type": "cubic" +}, +{ +"x": 475, +"y": 337 +}, +{ +"x": 548, +"y": 359, +"type": "cubic" +}, +{ +"x": 603, +"y": 412, +"type": "cubic" +}, +{ +"x": 603, +"y": 502, +"smooth": true +}, +{ +"x": 603, +"y": 620, +"type": "cubic" +}, +{ +"x": 528, +"y": 673, +"type": "cubic" +}, +{ +"x": 428, +"y": 686, +"smooth": true +}, +{ +"x": 395, +"y": 690, +"type": "cubic" +}, +{ +"x": 370, +"y": 690, +"type": "cubic" +}, +{ +"x": 333, +"y": 690, +"smooth": true +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 288 +}, +{ +"x": 312, +"y": 288, +"smooth": true +}, +{ +"x": 329, +"y": 288, +"type": "cubic" +}, +{ +"x": 346, +"y": 288, +"type": "cubic" +}, +{ +"x": 363, +"y": 287, +"smooth": true +}, +{ +"x": 426, +"y": 283, +"type": "cubic" +}, +{ +"x": 453, +"y": 237, +"type": "cubic" +}, +{ +"x": 462, +"y": 164, +"smooth": true +}, +{ +"x": 470, +"y": 88, +"type": "cubic" +}, +{ +"x": 479, +"y": 45, +"type": "cubic" +}, +{ +"x": 497, +"y": 0 +}, +{ +"x": 618, +"y": 0 +}, +{ +"x": 590, +"y": 38, +"type": "cubic" +}, +{ +"x": 578, +"y": 91, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 205, +"y": 373 +}, +{ +"x": 205, +"y": 603 +}, +{ +"x": 327, +"y": 603, +"smooth": true +}, +{ +"x": 355, +"y": 603, +"type": "cubic" +}, +{ +"x": 373, +"y": 602, +"type": "cubic" +}, +{ +"x": 391, +"y": 599, +"smooth": true +}, +{ +"x": 450, +"y": 591, +"type": "cubic" +}, +{ +"x": 487, +"y": 561, +"type": "cubic" +}, +{ +"x": 487, +"y": 488, +"smooth": true +}, +{ +"x": 487, +"y": 415, +"type": "cubic" +}, +{ +"x": 442, +"y": 381, +"type": "cubic" +}, +{ +"x": 382, +"y": 375, +"smooth": true +}, +{ +"x": 365, +"y": 373, +"type": "cubic" +}, +{ +"x": 348, +"y": 373, +"type": "cubic" +}, +{ +"x": 320, +"y": 373, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 635 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Racute^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Racute^1.json new file mode 100644 index 0000000000..7e6efe7f23 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Racute^1.json @@ -0,0 +1,268 @@ +{ +"name": "Racute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 360, +"y": 736 +}, +{ +"x": 457, +"y": 838 +}, +{ +"x": 357, +"y": 838 +}, +{ +"x": 294, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 570, +"y": 178, +"smooth": true +}, +{ +"x": 563, +"y": 250, +"type": "cubic" +}, +{ +"x": 537, +"y": 310, +"type": "cubic" +}, +{ +"x": 475, +"y": 337 +}, +{ +"x": 548, +"y": 359, +"type": "cubic" +}, +{ +"x": 603, +"y": 412, +"type": "cubic" +}, +{ +"x": 603, +"y": 502, +"smooth": true +}, +{ +"x": 603, +"y": 620, +"type": "cubic" +}, +{ +"x": 528, +"y": 673, +"type": "cubic" +}, +{ +"x": 428, +"y": 686, +"smooth": true +}, +{ +"x": 395, +"y": 690, +"type": "cubic" +}, +{ +"x": 370, +"y": 690, +"type": "cubic" +}, +{ +"x": 333, +"y": 690, +"smooth": true +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 288 +}, +{ +"x": 312, +"y": 288, +"smooth": true +}, +{ +"x": 329, +"y": 288, +"type": "cubic" +}, +{ +"x": 346, +"y": 288, +"type": "cubic" +}, +{ +"x": 363, +"y": 287, +"smooth": true +}, +{ +"x": 426, +"y": 283, +"type": "cubic" +}, +{ +"x": 453, +"y": 237, +"type": "cubic" +}, +{ +"x": 462, +"y": 164, +"smooth": true +}, +{ +"x": 470, +"y": 88, +"type": "cubic" +}, +{ +"x": 479, +"y": 45, +"type": "cubic" +}, +{ +"x": 497, +"y": 0 +}, +{ +"x": 618, +"y": 0 +}, +{ +"x": 590, +"y": 38, +"type": "cubic" +}, +{ +"x": 578, +"y": 91, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 205, +"y": 373 +}, +{ +"x": 205, +"y": 603 +}, +{ +"x": 327, +"y": 603, +"smooth": true +}, +{ +"x": 355, +"y": 603, +"type": "cubic" +}, +{ +"x": 373, +"y": 602, +"type": "cubic" +}, +{ +"x": 391, +"y": 599, +"smooth": true +}, +{ +"x": 450, +"y": 591, +"type": "cubic" +}, +{ +"x": 487, +"y": 561, +"type": "cubic" +}, +{ +"x": 487, +"y": 488, +"smooth": true +}, +{ +"x": 487, +"y": 415, +"type": "cubic" +}, +{ +"x": 442, +"y": 381, +"type": "cubic" +}, +{ +"x": 382, +"y": 375, +"smooth": true +}, +{ +"x": 365, +"y": 373, +"type": "cubic" +}, +{ +"x": 348, +"y": 373, +"type": "cubic" +}, +{ +"x": 320, +"y": 373, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 635 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Rcaron^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Rcaron^1.json new file mode 100644 index 0000000000..61b5dc1a03 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Rcaron^1.json @@ -0,0 +1,280 @@ +{ +"name": "Rcaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 292, +"y": 736 +}, +{ +"x": 373, +"y": 736 +}, +{ +"x": 439, +"y": 838 +}, +{ +"x": 364, +"y": 838 +}, +{ +"x": 333, +"y": 777 +}, +{ +"x": 302, +"y": 838 +}, +{ +"x": 226, +"y": 838 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 570, +"y": 178, +"smooth": true +}, +{ +"x": 563, +"y": 250, +"type": "cubic" +}, +{ +"x": 537, +"y": 310, +"type": "cubic" +}, +{ +"x": 475, +"y": 337 +}, +{ +"x": 548, +"y": 359, +"type": "cubic" +}, +{ +"x": 603, +"y": 412, +"type": "cubic" +}, +{ +"x": 603, +"y": 502, +"smooth": true +}, +{ +"x": 603, +"y": 620, +"type": "cubic" +}, +{ +"x": 528, +"y": 673, +"type": "cubic" +}, +{ +"x": 428, +"y": 686, +"smooth": true +}, +{ +"x": 395, +"y": 690, +"type": "cubic" +}, +{ +"x": 370, +"y": 690, +"type": "cubic" +}, +{ +"x": 333, +"y": 690, +"smooth": true +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 288 +}, +{ +"x": 312, +"y": 288, +"smooth": true +}, +{ +"x": 329, +"y": 288, +"type": "cubic" +}, +{ +"x": 346, +"y": 288, +"type": "cubic" +}, +{ +"x": 363, +"y": 287, +"smooth": true +}, +{ +"x": 426, +"y": 283, +"type": "cubic" +}, +{ +"x": 453, +"y": 237, +"type": "cubic" +}, +{ +"x": 462, +"y": 164, +"smooth": true +}, +{ +"x": 470, +"y": 88, +"type": "cubic" +}, +{ +"x": 479, +"y": 45, +"type": "cubic" +}, +{ +"x": 497, +"y": 0 +}, +{ +"x": 618, +"y": 0 +}, +{ +"x": 590, +"y": 38, +"type": "cubic" +}, +{ +"x": 578, +"y": 91, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 205, +"y": 373 +}, +{ +"x": 205, +"y": 603 +}, +{ +"x": 327, +"y": 603, +"smooth": true +}, +{ +"x": 355, +"y": 603, +"type": "cubic" +}, +{ +"x": 373, +"y": 602, +"type": "cubic" +}, +{ +"x": 391, +"y": 599, +"smooth": true +}, +{ +"x": 450, +"y": 591, +"type": "cubic" +}, +{ +"x": 487, +"y": 561, +"type": "cubic" +}, +{ +"x": 487, +"y": 488, +"smooth": true +}, +{ +"x": 487, +"y": 415, +"type": "cubic" +}, +{ +"x": 442, +"y": 381, +"type": "cubic" +}, +{ +"x": 382, +"y": 375, +"smooth": true +}, +{ +"x": 365, +"y": 373, +"type": "cubic" +}, +{ +"x": 348, +"y": 373, +"type": "cubic" +}, +{ +"x": 320, +"y": 373, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 635 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Rcommaaccent^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Rcommaaccent^1.json new file mode 100644 index 0000000000..4d52c07b00 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Rcommaaccent^1.json @@ -0,0 +1,272 @@ +{ +"name": "Rcommaaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 570, +"y": 178, +"smooth": true +}, +{ +"x": 563, +"y": 250, +"type": "cubic" +}, +{ +"x": 537, +"y": 310, +"type": "cubic" +}, +{ +"x": 475, +"y": 337 +}, +{ +"x": 548, +"y": 359, +"type": "cubic" +}, +{ +"x": 603, +"y": 412, +"type": "cubic" +}, +{ +"x": 603, +"y": 502, +"smooth": true +}, +{ +"x": 603, +"y": 620, +"type": "cubic" +}, +{ +"x": 528, +"y": 673, +"type": "cubic" +}, +{ +"x": 428, +"y": 686, +"smooth": true +}, +{ +"x": 395, +"y": 690, +"type": "cubic" +}, +{ +"x": 370, +"y": 690, +"type": "cubic" +}, +{ +"x": 333, +"y": 690, +"smooth": true +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 288 +}, +{ +"x": 312, +"y": 288, +"smooth": true +}, +{ +"x": 329, +"y": 288, +"type": "cubic" +}, +{ +"x": 346, +"y": 288, +"type": "cubic" +}, +{ +"x": 363, +"y": 287, +"smooth": true +}, +{ +"x": 426, +"y": 283, +"type": "cubic" +}, +{ +"x": 453, +"y": 237, +"type": "cubic" +}, +{ +"x": 462, +"y": 164, +"smooth": true +}, +{ +"x": 470, +"y": 88, +"type": "cubic" +}, +{ +"x": 479, +"y": 45, +"type": "cubic" +}, +{ +"x": 497, +"y": 0 +}, +{ +"x": 618, +"y": 0 +}, +{ +"x": 590, +"y": 38, +"type": "cubic" +}, +{ +"x": 578, +"y": 91, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 205, +"y": 373 +}, +{ +"x": 205, +"y": 603 +}, +{ +"x": 327, +"y": 603, +"smooth": true +}, +{ +"x": 355, +"y": 603, +"type": "cubic" +}, +{ +"x": 373, +"y": 602, +"type": "cubic" +}, +{ +"x": 391, +"y": 599, +"smooth": true +}, +{ +"x": 450, +"y": 591, +"type": "cubic" +}, +{ +"x": 487, +"y": 561, +"type": "cubic" +}, +{ +"x": 487, +"y": 488, +"smooth": true +}, +{ +"x": 487, +"y": 415, +"type": "cubic" +}, +{ +"x": 442, +"y": 381, +"type": "cubic" +}, +{ +"x": 382, +"y": 375, +"smooth": true +}, +{ +"x": 365, +"y": 373, +"type": "cubic" +}, +{ +"x": 348, +"y": 373, +"type": "cubic" +}, +{ +"x": 320, +"y": 373, +"smooth": true +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 297, +"y": -48 +}, +{ +"x": 237, +"y": -200 +}, +{ +"x": 307, +"y": -200 +}, +{ +"x": 378, +"y": -59 +}, +{ +"x": 378, +"y": -48 +} +], +"isClosed": true +} +] +}, +"xAdvance": 635 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/S^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/S^1.json new file mode 100644 index 0000000000..7ff89cb4e0 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/S^1.json @@ -0,0 +1,212 @@ +{ +"name": "S", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 316, +"y": 704, +"smooth": true +}, +{ +"x": 187, +"y": 704, +"type": "cubic" +}, +{ +"x": 78, +"y": 629, +"type": "cubic" +}, +{ +"x": 78, +"y": 507, +"smooth": true +}, +{ +"x": 78, +"y": 387, +"type": "cubic" +}, +{ +"x": 165, +"y": 338, +"type": "cubic" +}, +{ +"x": 296, +"y": 307, +"smooth": true +}, +{ +"x": 408, +"y": 281, +"type": "cubic" +}, +{ +"x": 450, +"y": 244, +"type": "cubic" +}, +{ +"x": 450, +"y": 172, +"smooth": true +}, +{ +"x": 450, +"y": 109, +"type": "cubic" +}, +{ +"x": 393, +"y": 70, +"type": "cubic" +}, +{ +"x": 321, +"y": 70, +"smooth": true +}, +{ +"x": 240, +"y": 70, +"type": "cubic" +}, +{ +"x": 180, +"y": 115, +"type": "cubic" +}, +{ +"x": 162, +"y": 200 +}, +{ +"x": 48, +"y": 200 +}, +{ +"x": 62, +"y": 61, +"type": "cubic" +}, +{ +"x": 163, +"y": -14, +"type": "cubic" +}, +{ +"x": 321, +"y": -14, +"smooth": true +}, +{ +"x": 455, +"y": -14, +"type": "cubic" +}, +{ +"x": 566, +"y": 62, +"type": "cubic" +}, +{ +"x": 566, +"y": 187, +"smooth": true +}, +{ +"x": 566, +"y": 302, +"type": "cubic" +}, +{ +"x": 494, +"y": 367, +"type": "cubic" +}, +{ +"x": 342, +"y": 402, +"smooth": true +}, +{ +"x": 235, +"y": 427, +"type": "cubic" +}, +{ +"x": 194, +"y": 458, +"type": "cubic" +}, +{ +"x": 194, +"y": 525, +"smooth": true +}, +{ +"x": 194, +"y": 590, +"type": "cubic" +}, +{ +"x": 245, +"y": 620, +"type": "cubic" +}, +{ +"x": 310, +"y": 620, +"smooth": true +}, +{ +"x": 390, +"y": 620, +"type": "cubic" +}, +{ +"x": 436, +"y": 573, +"type": "cubic" +}, +{ +"x": 444, +"y": 494 +}, +{ +"x": 558, +"y": 494 +}, +{ +"x": 544, +"y": 614, +"type": "cubic" +}, +{ +"x": 469, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 595 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Sacute^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Sacute^1.json new file mode 100644 index 0000000000..0bf632fd6c --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Sacute^1.json @@ -0,0 +1,233 @@ +{ +"name": "Sacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 338, +"y": 736 +}, +{ +"x": 435, +"y": 838 +}, +{ +"x": 335, +"y": 838 +}, +{ +"x": 272, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 316, +"y": 704, +"smooth": true +}, +{ +"x": 187, +"y": 704, +"type": "cubic" +}, +{ +"x": 78, +"y": 629, +"type": "cubic" +}, +{ +"x": 78, +"y": 507, +"smooth": true +}, +{ +"x": 78, +"y": 387, +"type": "cubic" +}, +{ +"x": 165, +"y": 338, +"type": "cubic" +}, +{ +"x": 296, +"y": 307, +"smooth": true +}, +{ +"x": 408, +"y": 281, +"type": "cubic" +}, +{ +"x": 450, +"y": 244, +"type": "cubic" +}, +{ +"x": 450, +"y": 172, +"smooth": true +}, +{ +"x": 450, +"y": 109, +"type": "cubic" +}, +{ +"x": 393, +"y": 70, +"type": "cubic" +}, +{ +"x": 321, +"y": 70, +"smooth": true +}, +{ +"x": 240, +"y": 70, +"type": "cubic" +}, +{ +"x": 180, +"y": 115, +"type": "cubic" +}, +{ +"x": 162, +"y": 200 +}, +{ +"x": 48, +"y": 200 +}, +{ +"x": 62, +"y": 61, +"type": "cubic" +}, +{ +"x": 163, +"y": -14, +"type": "cubic" +}, +{ +"x": 321, +"y": -14, +"smooth": true +}, +{ +"x": 455, +"y": -14, +"type": "cubic" +}, +{ +"x": 566, +"y": 62, +"type": "cubic" +}, +{ +"x": 566, +"y": 187, +"smooth": true +}, +{ +"x": 566, +"y": 302, +"type": "cubic" +}, +{ +"x": 494, +"y": 367, +"type": "cubic" +}, +{ +"x": 342, +"y": 402, +"smooth": true +}, +{ +"x": 235, +"y": 427, +"type": "cubic" +}, +{ +"x": 194, +"y": 458, +"type": "cubic" +}, +{ +"x": 194, +"y": 525, +"smooth": true +}, +{ +"x": 194, +"y": 590, +"type": "cubic" +}, +{ +"x": 245, +"y": 620, +"type": "cubic" +}, +{ +"x": 310, +"y": 620, +"smooth": true +}, +{ +"x": 390, +"y": 620, +"type": "cubic" +}, +{ +"x": 436, +"y": 573, +"type": "cubic" +}, +{ +"x": 444, +"y": 494 +}, +{ +"x": 558, +"y": 494 +}, +{ +"x": 544, +"y": 614, +"type": "cubic" +}, +{ +"x": 469, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 595 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Scaron^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Scaron^1.json new file mode 100644 index 0000000000..0a7bc30c35 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Scaron^1.json @@ -0,0 +1,245 @@ +{ +"name": "Scaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 270, +"y": 736 +}, +{ +"x": 351, +"y": 736 +}, +{ +"x": 417, +"y": 838 +}, +{ +"x": 342, +"y": 838 +}, +{ +"x": 311, +"y": 777 +}, +{ +"x": 280, +"y": 838 +}, +{ +"x": 204, +"y": 838 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 342, +"y": 402, +"smooth": true +}, +{ +"x": 235, +"y": 427, +"type": "cubic" +}, +{ +"x": 194, +"y": 458, +"type": "cubic" +}, +{ +"x": 194, +"y": 525, +"smooth": true +}, +{ +"x": 194, +"y": 590, +"type": "cubic" +}, +{ +"x": 245, +"y": 620, +"type": "cubic" +}, +{ +"x": 310, +"y": 620, +"smooth": true +}, +{ +"x": 390, +"y": 620, +"type": "cubic" +}, +{ +"x": 436, +"y": 573, +"type": "cubic" +}, +{ +"x": 444, +"y": 494 +}, +{ +"x": 558, +"y": 494 +}, +{ +"x": 544, +"y": 614, +"type": "cubic" +}, +{ +"x": 469, +"y": 704, +"type": "cubic" +}, +{ +"x": 316, +"y": 704, +"smooth": true +}, +{ +"x": 187, +"y": 704, +"type": "cubic" +}, +{ +"x": 78, +"y": 629, +"type": "cubic" +}, +{ +"x": 78, +"y": 507, +"smooth": true +}, +{ +"x": 78, +"y": 387, +"type": "cubic" +}, +{ +"x": 165, +"y": 338, +"type": "cubic" +}, +{ +"x": 296, +"y": 307, +"smooth": true +}, +{ +"x": 408, +"y": 281, +"type": "cubic" +}, +{ +"x": 450, +"y": 244, +"type": "cubic" +}, +{ +"x": 450, +"y": 172, +"smooth": true +}, +{ +"x": 450, +"y": 109, +"type": "cubic" +}, +{ +"x": 393, +"y": 70, +"type": "cubic" +}, +{ +"x": 321, +"y": 70, +"smooth": true +}, +{ +"x": 240, +"y": 70, +"type": "cubic" +}, +{ +"x": 180, +"y": 115, +"type": "cubic" +}, +{ +"x": 162, +"y": 200 +}, +{ +"x": 48, +"y": 200 +}, +{ +"x": 62, +"y": 61, +"type": "cubic" +}, +{ +"x": 163, +"y": -14, +"type": "cubic" +}, +{ +"x": 321, +"y": -14, +"smooth": true +}, +{ +"x": 455, +"y": -14, +"type": "cubic" +}, +{ +"x": 566, +"y": 62, +"type": "cubic" +}, +{ +"x": 566, +"y": 187, +"smooth": true +}, +{ +"x": 566, +"y": 302, +"type": "cubic" +}, +{ +"x": 494, +"y": 367, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 595 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Scedilla^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Scedilla^1.json new file mode 100644 index 0000000000..40e73a755d --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Scedilla^1.json @@ -0,0 +1,311 @@ +{ +"name": "Scedilla", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 566, +"y": 187, +"smooth": true +}, +{ +"x": 566, +"y": 302, +"type": "cubic" +}, +{ +"x": 494, +"y": 367, +"type": "cubic" +}, +{ +"x": 342, +"y": 402, +"smooth": true +}, +{ +"x": 235, +"y": 427, +"type": "cubic" +}, +{ +"x": 194, +"y": 458, +"type": "cubic" +}, +{ +"x": 194, +"y": 525, +"smooth": true +}, +{ +"x": 194, +"y": 590, +"type": "cubic" +}, +{ +"x": 245, +"y": 620, +"type": "cubic" +}, +{ +"x": 310, +"y": 620, +"smooth": true +}, +{ +"x": 390, +"y": 620, +"type": "cubic" +}, +{ +"x": 436, +"y": 573, +"type": "cubic" +}, +{ +"x": 444, +"y": 494 +}, +{ +"x": 558, +"y": 494 +}, +{ +"x": 544, +"y": 614, +"type": "cubic" +}, +{ +"x": 469, +"y": 704, +"type": "cubic" +}, +{ +"x": 316, +"y": 704, +"smooth": true +}, +{ +"x": 187, +"y": 704, +"type": "cubic" +}, +{ +"x": 78, +"y": 629, +"type": "cubic" +}, +{ +"x": 78, +"y": 507, +"smooth": true +}, +{ +"x": 78, +"y": 387, +"type": "cubic" +}, +{ +"x": 165, +"y": 338, +"type": "cubic" +}, +{ +"x": 296, +"y": 307, +"smooth": true +}, +{ +"x": 408, +"y": 281, +"type": "cubic" +}, +{ +"x": 450, +"y": 244, +"type": "cubic" +}, +{ +"x": 450, +"y": 172, +"smooth": true +}, +{ +"x": 450, +"y": 109, +"type": "cubic" +}, +{ +"x": 393, +"y": 70, +"type": "cubic" +}, +{ +"x": 321, +"y": 70, +"smooth": true +}, +{ +"x": 240, +"y": 70, +"type": "cubic" +}, +{ +"x": 180, +"y": 115, +"type": "cubic" +}, +{ +"x": 162, +"y": 200 +}, +{ +"x": 48, +"y": 200 +}, +{ +"x": 60, +"y": 76, +"type": "cubic" +}, +{ +"x": 142, +"y": 3, +"type": "cubic" +}, +{ +"x": 271, +"y": -11 +}, +{ +"x": 235, +"y": -81 +}, +{ +"x": 305, +"y": -76, +"type": "cubic" +}, +{ +"x": 331, +"y": -91, +"type": "cubic" +}, +{ +"x": 331, +"y": -122, +"smooth": true +}, +{ +"x": 331, +"y": -146, +"type": "cubic" +}, +{ +"x": 311, +"y": -161, +"type": "cubic" +}, +{ +"x": 269, +"y": -161, +"smooth": true +}, +{ +"x": 250, +"y": -161, +"type": "cubic" +}, +{ +"x": 233, +"y": -159, +"type": "cubic" +}, +{ +"x": 215, +"y": -151 +}, +{ +"x": 215, +"y": -202 +}, +{ +"x": 230, +"y": -208, +"type": "cubic" +}, +{ +"x": 248, +"y": -210, +"type": "cubic" +}, +{ +"x": 267, +"y": -210, +"smooth": true +}, +{ +"x": 345, +"y": -210, +"type": "cubic" +}, +{ +"x": 401, +"y": -181, +"type": "cubic" +}, +{ +"x": 401, +"y": -122, +"smooth": true +}, +{ +"x": 401, +"y": -76, +"type": "cubic" +}, +{ +"x": 372, +"y": -48, +"type": "cubic" +}, +{ +"x": 317, +"y": -41 +}, +{ +"x": 331, +"y": -14 +}, +{ +"x": 460, +"y": -10, +"type": "cubic" +}, +{ +"x": 566, +"y": 65, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 595 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Scommaaccent^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Scommaaccent^1.json new file mode 100644 index 0000000000..6942bae093 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Scommaaccent^1.json @@ -0,0 +1,237 @@ +{ +"name": "Scommaaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 316, +"y": 704, +"smooth": true +}, +{ +"x": 187, +"y": 704, +"type": "cubic" +}, +{ +"x": 78, +"y": 629, +"type": "cubic" +}, +{ +"x": 78, +"y": 507, +"smooth": true +}, +{ +"x": 78, +"y": 387, +"type": "cubic" +}, +{ +"x": 165, +"y": 338, +"type": "cubic" +}, +{ +"x": 296, +"y": 307, +"smooth": true +}, +{ +"x": 408, +"y": 281, +"type": "cubic" +}, +{ +"x": 450, +"y": 244, +"type": "cubic" +}, +{ +"x": 450, +"y": 172, +"smooth": true +}, +{ +"x": 450, +"y": 109, +"type": "cubic" +}, +{ +"x": 393, +"y": 70, +"type": "cubic" +}, +{ +"x": 321, +"y": 70, +"smooth": true +}, +{ +"x": 240, +"y": 70, +"type": "cubic" +}, +{ +"x": 180, +"y": 115, +"type": "cubic" +}, +{ +"x": 162, +"y": 200 +}, +{ +"x": 48, +"y": 200 +}, +{ +"x": 62, +"y": 61, +"type": "cubic" +}, +{ +"x": 163, +"y": -14, +"type": "cubic" +}, +{ +"x": 321, +"y": -14, +"smooth": true +}, +{ +"x": 455, +"y": -14, +"type": "cubic" +}, +{ +"x": 566, +"y": 62, +"type": "cubic" +}, +{ +"x": 566, +"y": 187, +"smooth": true +}, +{ +"x": 566, +"y": 302, +"type": "cubic" +}, +{ +"x": 494, +"y": 367, +"type": "cubic" +}, +{ +"x": 342, +"y": 402, +"smooth": true +}, +{ +"x": 235, +"y": 427, +"type": "cubic" +}, +{ +"x": 194, +"y": 458, +"type": "cubic" +}, +{ +"x": 194, +"y": 525, +"smooth": true +}, +{ +"x": 194, +"y": 590, +"type": "cubic" +}, +{ +"x": 245, +"y": 620, +"type": "cubic" +}, +{ +"x": 310, +"y": 620, +"smooth": true +}, +{ +"x": 390, +"y": 620, +"type": "cubic" +}, +{ +"x": 436, +"y": 573, +"type": "cubic" +}, +{ +"x": 444, +"y": 494 +}, +{ +"x": 558, +"y": 494 +}, +{ +"x": 544, +"y": 614, +"type": "cubic" +}, +{ +"x": 469, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 358, +"y": -59 +}, +{ +"x": 358, +"y": -48 +}, +{ +"x": 277, +"y": -48 +}, +{ +"x": 217, +"y": -200 +}, +{ +"x": 287, +"y": -200 +} +], +"isClosed": true +} +] +}, +"xAdvance": 595 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/T^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/T^1.json new file mode 100644 index 0000000000..7edfea044d --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/T^1.json @@ -0,0 +1,58 @@ +{ +"name": "T", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 620, +"y": 603 +}, +{ +"x": 620, +"y": 690 +}, +{ +"x": 29, +"y": 690 +}, +{ +"x": 29, +"y": 603 +}, +{ +"x": 270, +"y": 603 +}, +{ +"x": 270, +"y": 0 +}, +{ +"x": 379, +"y": 0 +}, +{ +"x": 379, +"y": 603 +} +], +"isClosed": true +} +] +}, +"xAdvance": 617 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Tbar^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Tbar^1.json new file mode 100644 index 0000000000..7fd33128cf --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Tbar^1.json @@ -0,0 +1,90 @@ +{ +"name": "Tbar", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 379, +"y": 603 +}, +{ +"x": 620, +"y": 603 +}, +{ +"x": 620, +"y": 690 +}, +{ +"x": 29, +"y": 690 +}, +{ +"x": 29, +"y": 603 +}, +{ +"x": 270, +"y": 603 +}, +{ +"x": 270, +"y": 368 +}, +{ +"x": 163, +"y": 368 +}, +{ +"x": 163, +"y": 302 +}, +{ +"x": 270, +"y": 302 +}, +{ +"x": 270, +"y": 0 +}, +{ +"x": 379, +"y": 0 +}, +{ +"x": 379, +"y": 302 +}, +{ +"x": 486, +"y": 302 +}, +{ +"x": 486, +"y": 368 +}, +{ +"x": 379, +"y": 368 +} +], +"isClosed": true +} +] +}, +"xAdvance": 617 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Tcaron^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Tcaron^1.json new file mode 100644 index 0000000000..424a89d7f9 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Tcaron^1.json @@ -0,0 +1,91 @@ +{ +"name": "Tcaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 284, +"y": 736 +}, +{ +"x": 365, +"y": 736 +}, +{ +"x": 431, +"y": 838 +}, +{ +"x": 356, +"y": 838 +}, +{ +"x": 325, +"y": 777 +}, +{ +"x": 294, +"y": 838 +}, +{ +"x": 218, +"y": 838 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 620, +"y": 603 +}, +{ +"x": 620, +"y": 690 +}, +{ +"x": 29, +"y": 690 +}, +{ +"x": 29, +"y": 603 +}, +{ +"x": 270, +"y": 603 +}, +{ +"x": 270, +"y": 0 +}, +{ +"x": 379, +"y": 0 +}, +{ +"x": 379, +"y": 603 +} +], +"isClosed": true +} +] +}, +"xAdvance": 617 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Tcedilla^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Tcedilla^1.json new file mode 100644 index 0000000000..9a1a10a895 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Tcedilla^1.json @@ -0,0 +1,162 @@ +{ +"name": "Tcedilla", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 356, +"y": 0 +}, +{ +"x": 379, +"y": 0 +}, +{ +"x": 379, +"y": 603 +}, +{ +"x": 620, +"y": 603 +}, +{ +"x": 620, +"y": 690 +}, +{ +"x": 29, +"y": 690 +}, +{ +"x": 29, +"y": 603 +}, +{ +"x": 270, +"y": 603 +}, +{ +"x": 270, +"y": 0 +}, +{ +"x": 295, +"y": 0 +}, +{ +"x": 253, +"y": -81 +}, +{ +"x": 323, +"y": -76, +"type": "cubic" +}, +{ +"x": 349, +"y": -91, +"type": "cubic" +}, +{ +"x": 349, +"y": -122, +"smooth": true +}, +{ +"x": 349, +"y": -146, +"type": "cubic" +}, +{ +"x": 329, +"y": -161, +"type": "cubic" +}, +{ +"x": 287, +"y": -161, +"smooth": true +}, +{ +"x": 268, +"y": -161, +"type": "cubic" +}, +{ +"x": 251, +"y": -159, +"type": "cubic" +}, +{ +"x": 233, +"y": -151 +}, +{ +"x": 233, +"y": -202 +}, +{ +"x": 248, +"y": -208, +"type": "cubic" +}, +{ +"x": 266, +"y": -210, +"type": "cubic" +}, +{ +"x": 285, +"y": -210, +"smooth": true +}, +{ +"x": 363, +"y": -210, +"type": "cubic" +}, +{ +"x": 419, +"y": -181, +"type": "cubic" +}, +{ +"x": 419, +"y": -122, +"smooth": true +}, +{ +"x": 419, +"y": -76, +"type": "cubic" +}, +{ +"x": 390, +"y": -48, +"type": "cubic" +}, +{ +"x": 335, +"y": -41 +} +], +"isClosed": true +} +] +}, +"xAdvance": 617 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Thorn^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Thorn^1.json new file mode 100644 index 0000000000..7b405c5d99 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Thorn^1.json @@ -0,0 +1,193 @@ +{ +"name": "Thorn", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 421, +"y": 598, +"smooth": true +}, +{ +"x": 389, +"y": 602, +"type": "cubic" +}, +{ +"x": 364, +"y": 602, +"type": "cubic" +}, +{ +"x": 327, +"y": 602, +"smooth": true +}, +{ +"x": 205, +"y": 602 +}, +{ +"x": 205, +"y": 690 +}, +{ +"x": 95, +"y": 690 +}, +{ +"x": 95, +"y": 0 +}, +{ +"x": 205, +"y": 0 +}, +{ +"x": 205, +"y": 202 +}, +{ +"x": 327, +"y": 202, +"smooth": true +}, +{ +"x": 364, +"y": 202, +"type": "cubic" +}, +{ +"x": 389, +"y": 202, +"type": "cubic" +}, +{ +"x": 421, +"y": 206, +"smooth": true +}, +{ +"x": 521, +"y": 219, +"type": "cubic" +}, +{ +"x": 597, +"y": 285, +"type": "cubic" +}, +{ +"x": 597, +"y": 403, +"smooth": true +}, +{ +"x": 597, +"y": 521, +"type": "cubic" +}, +{ +"x": 521, +"y": 585, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 392, +"y": 295, +"smooth": true +}, +{ +"x": 374, +"y": 292, +"type": "cubic" +}, +{ +"x": 350, +"y": 291, +"type": "cubic" +}, +{ +"x": 322, +"y": 291, +"smooth": true +}, +{ +"x": 205, +"y": 291 +}, +{ +"x": 205, +"y": 513 +}, +{ +"x": 322, +"y": 513, +"smooth": true +}, +{ +"x": 350, +"y": 513, +"type": "cubic" +}, +{ +"x": 374, +"y": 512, +"type": "cubic" +}, +{ +"x": 392, +"y": 509, +"smooth": true +}, +{ +"x": 440, +"y": 500, +"type": "cubic" +}, +{ +"x": 481, +"y": 470, +"type": "cubic" +}, +{ +"x": 481, +"y": 402, +"smooth": true +}, +{ +"x": 481, +"y": 333, +"type": "cubic" +}, +{ +"x": 440, +"y": 304, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 636 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/U^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/U^1.json new file mode 100644 index 0000000000..138899d053 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/U^1.json @@ -0,0 +1,172 @@ +{ +"name": "U", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 629, +"y": 690 +}, +{ +"x": 520, +"y": 690 +}, +{ +"x": 520, +"y": 265, +"smooth": true +}, +{ +"x": 520, +"y": 244, +"type": "cubic" +}, +{ +"x": 520, +"y": 225, +"type": "cubic" +}, +{ +"x": 518, +"y": 209, +"smooth": true +}, +{ +"x": 511, +"y": 126, +"type": "cubic" +}, +{ +"x": 458, +"y": 70, +"type": "cubic" +}, +{ +"x": 358, +"y": 70, +"smooth": true +}, +{ +"x": 259, +"y": 70, +"type": "cubic" +}, +{ +"x": 206, +"y": 126, +"type": "cubic" +}, +{ +"x": 199, +"y": 209, +"smooth": true +}, +{ +"x": 197, +"y": 225, +"type": "cubic" +}, +{ +"x": 197, +"y": 244, +"type": "cubic" +}, +{ +"x": 197, +"y": 265, +"smooth": true +}, +{ +"x": 197, +"y": 690 +}, +{ +"x": 88, +"y": 690 +}, +{ +"x": 88, +"y": 267, +"smooth": true +}, +{ +"x": 88, +"y": 242, +"type": "cubic" +}, +{ +"x": 88, +"y": 222, +"type": "cubic" +}, +{ +"x": 90, +"y": 196, +"smooth": true +}, +{ +"x": 99, +"y": 81, +"type": "cubic" +}, +{ +"x": 178, +"y": -14, +"type": "cubic" +}, +{ +"x": 358, +"y": -14, +"smooth": true +}, +{ +"x": 538, +"y": -14, +"type": "cubic" +}, +{ +"x": 617, +"y": 81, +"type": "cubic" +}, +{ +"x": 627, +"y": 196, +"smooth": true +}, +{ +"x": 629, +"y": 222, +"type": "cubic" +}, +{ +"x": 629, +"y": 242, +"type": "cubic" +}, +{ +"x": 629, +"y": 267, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 691 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Uacute^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Uacute^1.json new file mode 100644 index 0000000000..b69bed2127 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Uacute^1.json @@ -0,0 +1,193 @@ +{ +"name": "Uacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 386, +"y": 736 +}, +{ +"x": 483, +"y": 838 +}, +{ +"x": 383, +"y": 838 +}, +{ +"x": 320, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 629, +"y": 690 +}, +{ +"x": 520, +"y": 690 +}, +{ +"x": 520, +"y": 265, +"smooth": true +}, +{ +"x": 520, +"y": 244, +"type": "cubic" +}, +{ +"x": 520, +"y": 225, +"type": "cubic" +}, +{ +"x": 518, +"y": 209, +"smooth": true +}, +{ +"x": 511, +"y": 126, +"type": "cubic" +}, +{ +"x": 458, +"y": 70, +"type": "cubic" +}, +{ +"x": 358, +"y": 70, +"smooth": true +}, +{ +"x": 259, +"y": 70, +"type": "cubic" +}, +{ +"x": 206, +"y": 126, +"type": "cubic" +}, +{ +"x": 199, +"y": 209, +"smooth": true +}, +{ +"x": 197, +"y": 225, +"type": "cubic" +}, +{ +"x": 197, +"y": 244, +"type": "cubic" +}, +{ +"x": 197, +"y": 265, +"smooth": true +}, +{ +"x": 197, +"y": 690 +}, +{ +"x": 88, +"y": 690 +}, +{ +"x": 88, +"y": 267, +"smooth": true +}, +{ +"x": 88, +"y": 242, +"type": "cubic" +}, +{ +"x": 88, +"y": 222, +"type": "cubic" +}, +{ +"x": 90, +"y": 196, +"smooth": true +}, +{ +"x": 99, +"y": 81, +"type": "cubic" +}, +{ +"x": 178, +"y": -14, +"type": "cubic" +}, +{ +"x": 358, +"y": -14, +"smooth": true +}, +{ +"x": 538, +"y": -14, +"type": "cubic" +}, +{ +"x": 617, +"y": 81, +"type": "cubic" +}, +{ +"x": 627, +"y": 196, +"smooth": true +}, +{ +"x": 629, +"y": 222, +"type": "cubic" +}, +{ +"x": 629, +"y": 242, +"type": "cubic" +}, +{ +"x": 629, +"y": 267, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 691 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ucircumflex^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ucircumflex^1.json new file mode 100644 index 0000000000..fac9e6a8e2 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ucircumflex^1.json @@ -0,0 +1,205 @@ +{ +"name": "Ucircumflex", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 327, +"y": 736 +}, +{ +"x": 358, +"y": 796 +}, +{ +"x": 389, +"y": 736 +}, +{ +"x": 465, +"y": 736 +}, +{ +"x": 399, +"y": 838 +}, +{ +"x": 318, +"y": 838 +}, +{ +"x": 252, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 629, +"y": 690 +}, +{ +"x": 520, +"y": 690 +}, +{ +"x": 520, +"y": 265, +"smooth": true +}, +{ +"x": 520, +"y": 244, +"type": "cubic" +}, +{ +"x": 520, +"y": 225, +"type": "cubic" +}, +{ +"x": 518, +"y": 209, +"smooth": true +}, +{ +"x": 511, +"y": 126, +"type": "cubic" +}, +{ +"x": 458, +"y": 70, +"type": "cubic" +}, +{ +"x": 358, +"y": 70, +"smooth": true +}, +{ +"x": 259, +"y": 70, +"type": "cubic" +}, +{ +"x": 206, +"y": 126, +"type": "cubic" +}, +{ +"x": 199, +"y": 209, +"smooth": true +}, +{ +"x": 197, +"y": 225, +"type": "cubic" +}, +{ +"x": 197, +"y": 244, +"type": "cubic" +}, +{ +"x": 197, +"y": 265, +"smooth": true +}, +{ +"x": 197, +"y": 690 +}, +{ +"x": 88, +"y": 690 +}, +{ +"x": 88, +"y": 267, +"smooth": true +}, +{ +"x": 88, +"y": 242, +"type": "cubic" +}, +{ +"x": 88, +"y": 222, +"type": "cubic" +}, +{ +"x": 90, +"y": 196, +"smooth": true +}, +{ +"x": 99, +"y": 81, +"type": "cubic" +}, +{ +"x": 178, +"y": -14, +"type": "cubic" +}, +{ +"x": 358, +"y": -14, +"smooth": true +}, +{ +"x": 538, +"y": -14, +"type": "cubic" +}, +{ +"x": 617, +"y": 81, +"type": "cubic" +}, +{ +"x": 627, +"y": 196, +"smooth": true +}, +{ +"x": 629, +"y": 222, +"type": "cubic" +}, +{ +"x": 629, +"y": 242, +"type": "cubic" +}, +{ +"x": 629, +"y": 267, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 691 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Udieresis^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Udieresis^1.json new file mode 100644 index 0000000000..f407fe13c9 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Udieresis^1.json @@ -0,0 +1,302 @@ +{ +"name": "Udieresis", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 281, +"y": 839, +"smooth": true +}, +{ +"x": 251, +"y": 839, +"type": "cubic" +}, +{ +"x": 227, +"y": 816, +"type": "cubic" +}, +{ +"x": 227, +"y": 786, +"smooth": true +}, +{ +"x": 227, +"y": 756, +"type": "cubic" +}, +{ +"x": 251, +"y": 733, +"type": "cubic" +}, +{ +"x": 281, +"y": 733, +"smooth": true +}, +{ +"x": 311, +"y": 733, +"type": "cubic" +}, +{ +"x": 334, +"y": 756, +"type": "cubic" +}, +{ +"x": 334, +"y": 786, +"smooth": true +}, +{ +"x": 334, +"y": 816, +"type": "cubic" +}, +{ +"x": 311, +"y": 839, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 436, +"y": 839, +"smooth": true +}, +{ +"x": 406, +"y": 839, +"type": "cubic" +}, +{ +"x": 382, +"y": 816, +"type": "cubic" +}, +{ +"x": 382, +"y": 786, +"smooth": true +}, +{ +"x": 382, +"y": 756, +"type": "cubic" +}, +{ +"x": 406, +"y": 733, +"type": "cubic" +}, +{ +"x": 436, +"y": 733, +"smooth": true +}, +{ +"x": 466, +"y": 733, +"type": "cubic" +}, +{ +"x": 489, +"y": 756, +"type": "cubic" +}, +{ +"x": 489, +"y": 786, +"smooth": true +}, +{ +"x": 489, +"y": 816, +"type": "cubic" +}, +{ +"x": 466, +"y": 839, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 629, +"y": 690 +}, +{ +"x": 520, +"y": 690 +}, +{ +"x": 520, +"y": 265, +"smooth": true +}, +{ +"x": 520, +"y": 244, +"type": "cubic" +}, +{ +"x": 520, +"y": 225, +"type": "cubic" +}, +{ +"x": 518, +"y": 209, +"smooth": true +}, +{ +"x": 511, +"y": 126, +"type": "cubic" +}, +{ +"x": 458, +"y": 70, +"type": "cubic" +}, +{ +"x": 358, +"y": 70, +"smooth": true +}, +{ +"x": 259, +"y": 70, +"type": "cubic" +}, +{ +"x": 206, +"y": 126, +"type": "cubic" +}, +{ +"x": 199, +"y": 209, +"smooth": true +}, +{ +"x": 197, +"y": 225, +"type": "cubic" +}, +{ +"x": 197, +"y": 244, +"type": "cubic" +}, +{ +"x": 197, +"y": 265, +"smooth": true +}, +{ +"x": 197, +"y": 690 +}, +{ +"x": 88, +"y": 690 +}, +{ +"x": 88, +"y": 267, +"smooth": true +}, +{ +"x": 88, +"y": 242, +"type": "cubic" +}, +{ +"x": 88, +"y": 222, +"type": "cubic" +}, +{ +"x": 90, +"y": 196, +"smooth": true +}, +{ +"x": 99, +"y": 81, +"type": "cubic" +}, +{ +"x": 178, +"y": -14, +"type": "cubic" +}, +{ +"x": 358, +"y": -14, +"smooth": true +}, +{ +"x": 538, +"y": -14, +"type": "cubic" +}, +{ +"x": 617, +"y": 81, +"type": "cubic" +}, +{ +"x": 627, +"y": 196, +"smooth": true +}, +{ +"x": 629, +"y": 222, +"type": "cubic" +}, +{ +"x": 629, +"y": 242, +"type": "cubic" +}, +{ +"x": 629, +"y": 267, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 691 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ugrave^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ugrave^1.json new file mode 100644 index 0000000000..fd54e633c5 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ugrave^1.json @@ -0,0 +1,193 @@ +{ +"name": "Ugrave", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 397, +"y": 736 +}, +{ +"x": 334, +"y": 838 +}, +{ +"x": 234, +"y": 838 +}, +{ +"x": 331, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 629, +"y": 690 +}, +{ +"x": 520, +"y": 690 +}, +{ +"x": 520, +"y": 265, +"smooth": true +}, +{ +"x": 520, +"y": 244, +"type": "cubic" +}, +{ +"x": 520, +"y": 225, +"type": "cubic" +}, +{ +"x": 518, +"y": 209, +"smooth": true +}, +{ +"x": 511, +"y": 126, +"type": "cubic" +}, +{ +"x": 458, +"y": 70, +"type": "cubic" +}, +{ +"x": 358, +"y": 70, +"smooth": true +}, +{ +"x": 259, +"y": 70, +"type": "cubic" +}, +{ +"x": 206, +"y": 126, +"type": "cubic" +}, +{ +"x": 199, +"y": 209, +"smooth": true +}, +{ +"x": 197, +"y": 225, +"type": "cubic" +}, +{ +"x": 197, +"y": 244, +"type": "cubic" +}, +{ +"x": 197, +"y": 265, +"smooth": true +}, +{ +"x": 197, +"y": 690 +}, +{ +"x": 88, +"y": 690 +}, +{ +"x": 88, +"y": 267, +"smooth": true +}, +{ +"x": 88, +"y": 242, +"type": "cubic" +}, +{ +"x": 88, +"y": 222, +"type": "cubic" +}, +{ +"x": 90, +"y": 196, +"smooth": true +}, +{ +"x": 99, +"y": 81, +"type": "cubic" +}, +{ +"x": 178, +"y": -14, +"type": "cubic" +}, +{ +"x": 358, +"y": -14, +"smooth": true +}, +{ +"x": 538, +"y": -14, +"type": "cubic" +}, +{ +"x": 617, +"y": 81, +"type": "cubic" +}, +{ +"x": 627, +"y": 196, +"smooth": true +}, +{ +"x": 629, +"y": 222, +"type": "cubic" +}, +{ +"x": 629, +"y": 242, +"type": "cubic" +}, +{ +"x": 629, +"y": 267, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 691 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Uhungarumlaut^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Uhungarumlaut^1.json new file mode 100644 index 0000000000..89dc81c549 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Uhungarumlaut^1.json @@ -0,0 +1,214 @@ +{ +"name": "Uhungarumlaut", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 302, +"y": 736 +}, +{ +"x": 399, +"y": 838 +}, +{ +"x": 299, +"y": 838 +}, +{ +"x": 236, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 434, +"y": 736 +}, +{ +"x": 531, +"y": 838 +}, +{ +"x": 431, +"y": 838 +}, +{ +"x": 368, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 629, +"y": 690 +}, +{ +"x": 520, +"y": 690 +}, +{ +"x": 520, +"y": 265, +"smooth": true +}, +{ +"x": 520, +"y": 244, +"type": "cubic" +}, +{ +"x": 520, +"y": 225, +"type": "cubic" +}, +{ +"x": 518, +"y": 209, +"smooth": true +}, +{ +"x": 511, +"y": 126, +"type": "cubic" +}, +{ +"x": 458, +"y": 70, +"type": "cubic" +}, +{ +"x": 358, +"y": 70, +"smooth": true +}, +{ +"x": 259, +"y": 70, +"type": "cubic" +}, +{ +"x": 206, +"y": 126, +"type": "cubic" +}, +{ +"x": 199, +"y": 209, +"smooth": true +}, +{ +"x": 197, +"y": 225, +"type": "cubic" +}, +{ +"x": 197, +"y": 244, +"type": "cubic" +}, +{ +"x": 197, +"y": 265, +"smooth": true +}, +{ +"x": 197, +"y": 690 +}, +{ +"x": 88, +"y": 690 +}, +{ +"x": 88, +"y": 267, +"smooth": true +}, +{ +"x": 88, +"y": 242, +"type": "cubic" +}, +{ +"x": 88, +"y": 222, +"type": "cubic" +}, +{ +"x": 90, +"y": 196, +"smooth": true +}, +{ +"x": 99, +"y": 81, +"type": "cubic" +}, +{ +"x": 178, +"y": -14, +"type": "cubic" +}, +{ +"x": 358, +"y": -14, +"smooth": true +}, +{ +"x": 538, +"y": -14, +"type": "cubic" +}, +{ +"x": 617, +"y": 81, +"type": "cubic" +}, +{ +"x": 627, +"y": 196, +"smooth": true +}, +{ +"x": 629, +"y": 222, +"type": "cubic" +}, +{ +"x": 629, +"y": 242, +"type": "cubic" +}, +{ +"x": 629, +"y": 267, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 691 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Umacron^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Umacron^1.json new file mode 100644 index 0000000000..3787b2f9f1 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Umacron^1.json @@ -0,0 +1,193 @@ +{ +"name": "Umacron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 486, +"y": 758 +}, +{ +"x": 486, +"y": 821 +}, +{ +"x": 231, +"y": 821 +}, +{ +"x": 231, +"y": 758 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 629, +"y": 690 +}, +{ +"x": 520, +"y": 690 +}, +{ +"x": 520, +"y": 265, +"smooth": true +}, +{ +"x": 520, +"y": 244, +"type": "cubic" +}, +{ +"x": 520, +"y": 225, +"type": "cubic" +}, +{ +"x": 518, +"y": 209, +"smooth": true +}, +{ +"x": 511, +"y": 126, +"type": "cubic" +}, +{ +"x": 458, +"y": 70, +"type": "cubic" +}, +{ +"x": 358, +"y": 70, +"smooth": true +}, +{ +"x": 259, +"y": 70, +"type": "cubic" +}, +{ +"x": 206, +"y": 126, +"type": "cubic" +}, +{ +"x": 199, +"y": 209, +"smooth": true +}, +{ +"x": 197, +"y": 225, +"type": "cubic" +}, +{ +"x": 197, +"y": 244, +"type": "cubic" +}, +{ +"x": 197, +"y": 265, +"smooth": true +}, +{ +"x": 197, +"y": 690 +}, +{ +"x": 88, +"y": 690 +}, +{ +"x": 88, +"y": 267, +"smooth": true +}, +{ +"x": 88, +"y": 242, +"type": "cubic" +}, +{ +"x": 88, +"y": 222, +"type": "cubic" +}, +{ +"x": 90, +"y": 196, +"smooth": true +}, +{ +"x": 99, +"y": 81, +"type": "cubic" +}, +{ +"x": 178, +"y": -14, +"type": "cubic" +}, +{ +"x": 358, +"y": -14, +"smooth": true +}, +{ +"x": 538, +"y": -14, +"type": "cubic" +}, +{ +"x": 617, +"y": 81, +"type": "cubic" +}, +{ +"x": 627, +"y": 196, +"smooth": true +}, +{ +"x": 629, +"y": 222, +"type": "cubic" +}, +{ +"x": 629, +"y": 242, +"type": "cubic" +}, +{ +"x": 629, +"y": 267, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 691 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Uogonek^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Uogonek^1.json new file mode 100644 index 0000000000..4b1ebed2ff --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Uogonek^1.json @@ -0,0 +1,263 @@ +{ +"name": "Uogonek", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 629, +"y": 690 +}, +{ +"x": 520, +"y": 690 +}, +{ +"x": 520, +"y": 265, +"smooth": true +}, +{ +"x": 520, +"y": 244, +"type": "cubic" +}, +{ +"x": 520, +"y": 225, +"type": "cubic" +}, +{ +"x": 518, +"y": 209, +"smooth": true +}, +{ +"x": 511, +"y": 126, +"type": "cubic" +}, +{ +"x": 458, +"y": 70, +"type": "cubic" +}, +{ +"x": 358, +"y": 70, +"smooth": true +}, +{ +"x": 259, +"y": 70, +"type": "cubic" +}, +{ +"x": 206, +"y": 126, +"type": "cubic" +}, +{ +"x": 199, +"y": 209, +"smooth": true +}, +{ +"x": 197, +"y": 225, +"type": "cubic" +}, +{ +"x": 197, +"y": 244, +"type": "cubic" +}, +{ +"x": 197, +"y": 265, +"smooth": true +}, +{ +"x": 197, +"y": 690 +}, +{ +"x": 88, +"y": 690 +}, +{ +"x": 88, +"y": 267, +"smooth": true +}, +{ +"x": 88, +"y": 242, +"type": "cubic" +}, +{ +"x": 88, +"y": 222, +"type": "cubic" +}, +{ +"x": 90, +"y": 196, +"smooth": true +}, +{ +"x": 99, +"y": 83, +"type": "cubic" +}, +{ +"x": 175, +"y": -10, +"type": "cubic" +}, +{ +"x": 347, +"y": -14 +}, +{ +"x": 310, +"y": -42, +"type": "cubic" +}, +{ +"x": 282, +"y": -85, +"type": "cubic" +}, +{ +"x": 282, +"y": -138, +"smooth": true +}, +{ +"x": 282, +"y": -201, +"type": "cubic" +}, +{ +"x": 322, +"y": -223, +"type": "cubic" +}, +{ +"x": 380, +"y": -223, +"smooth": true +}, +{ +"x": 421, +"y": -223, +"type": "cubic" +}, +{ +"x": 455, +"y": -212, +"type": "cubic" +}, +{ +"x": 481, +"y": -192 +}, +{ +"x": 481, +"y": -137 +}, +{ +"x": 463, +"y": -151, +"type": "cubic" +}, +{ +"x": 446, +"y": -157, +"type": "cubic" +}, +{ +"x": 428, +"y": -157, +"smooth": true +}, +{ +"x": 401, +"y": -157, +"type": "cubic" +}, +{ +"x": 384, +"y": -144, +"type": "cubic" +}, +{ +"x": 384, +"y": -107, +"smooth": true +}, +{ +"x": 384, +"y": -57, +"type": "cubic" +}, +{ +"x": 413, +"y": -18, +"type": "cubic" +}, +{ +"x": 450, +"y": -4 +}, +{ +"x": 566, +"y": 23, +"type": "cubic" +}, +{ +"x": 619, +"y": 103, +"type": "cubic" +}, +{ +"x": 627, +"y": 196, +"smooth": true +}, +{ +"x": 629, +"y": 222, +"type": "cubic" +}, +{ +"x": 629, +"y": 242, +"type": "cubic" +}, +{ +"x": 629, +"y": 267, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 691 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Uring^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Uring^1.json new file mode 100644 index 0000000000..19bed441a3 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Uring^1.json @@ -0,0 +1,302 @@ +{ +"name": "Uring", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 358, +"y": 889, +"smooth": true +}, +{ +"x": 301, +"y": 889, +"type": "cubic" +}, +{ +"x": 260, +"y": 853, +"type": "cubic" +}, +{ +"x": 260, +"y": 803, +"smooth": true +}, +{ +"x": 260, +"y": 753, +"type": "cubic" +}, +{ +"x": 301, +"y": 718, +"type": "cubic" +}, +{ +"x": 358, +"y": 718, +"smooth": true +}, +{ +"x": 415, +"y": 718, +"type": "cubic" +}, +{ +"x": 456, +"y": 753, +"type": "cubic" +}, +{ +"x": 456, +"y": 803, +"smooth": true +}, +{ +"x": 456, +"y": 853, +"type": "cubic" +}, +{ +"x": 415, +"y": 889, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 358, +"y": 845, +"smooth": true +}, +{ +"x": 381, +"y": 845, +"type": "cubic" +}, +{ +"x": 398, +"y": 828, +"type": "cubic" +}, +{ +"x": 398, +"y": 803, +"smooth": true +}, +{ +"x": 398, +"y": 779, +"type": "cubic" +}, +{ +"x": 381, +"y": 761, +"type": "cubic" +}, +{ +"x": 358, +"y": 761, +"smooth": true +}, +{ +"x": 335, +"y": 761, +"type": "cubic" +}, +{ +"x": 318, +"y": 779, +"type": "cubic" +}, +{ +"x": 318, +"y": 803, +"smooth": true +}, +{ +"x": 318, +"y": 828, +"type": "cubic" +}, +{ +"x": 335, +"y": 845, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 629, +"y": 690 +}, +{ +"x": 520, +"y": 690 +}, +{ +"x": 520, +"y": 265, +"smooth": true +}, +{ +"x": 520, +"y": 244, +"type": "cubic" +}, +{ +"x": 520, +"y": 225, +"type": "cubic" +}, +{ +"x": 518, +"y": 209, +"smooth": true +}, +{ +"x": 511, +"y": 126, +"type": "cubic" +}, +{ +"x": 458, +"y": 70, +"type": "cubic" +}, +{ +"x": 358, +"y": 70, +"smooth": true +}, +{ +"x": 259, +"y": 70, +"type": "cubic" +}, +{ +"x": 206, +"y": 126, +"type": "cubic" +}, +{ +"x": 199, +"y": 209, +"smooth": true +}, +{ +"x": 197, +"y": 225, +"type": "cubic" +}, +{ +"x": 197, +"y": 244, +"type": "cubic" +}, +{ +"x": 197, +"y": 265, +"smooth": true +}, +{ +"x": 197, +"y": 690 +}, +{ +"x": 88, +"y": 690 +}, +{ +"x": 88, +"y": 267, +"smooth": true +}, +{ +"x": 88, +"y": 242, +"type": "cubic" +}, +{ +"x": 88, +"y": 222, +"type": "cubic" +}, +{ +"x": 90, +"y": 196, +"smooth": true +}, +{ +"x": 99, +"y": 81, +"type": "cubic" +}, +{ +"x": 178, +"y": -14, +"type": "cubic" +}, +{ +"x": 358, +"y": -14, +"smooth": true +}, +{ +"x": 538, +"y": -14, +"type": "cubic" +}, +{ +"x": 617, +"y": 81, +"type": "cubic" +}, +{ +"x": 627, +"y": 196, +"smooth": true +}, +{ +"x": 629, +"y": 222, +"type": "cubic" +}, +{ +"x": 629, +"y": 242, +"type": "cubic" +}, +{ +"x": 629, +"y": 267, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 691 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/V^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/V^1.json new file mode 100644 index 0000000000..2a9d488fe8 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/V^1.json @@ -0,0 +1,54 @@ +{ +"name": "V", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 415, +"y": 0 +}, +{ +"x": 663, +"y": 690 +}, +{ +"x": 546, +"y": 690 +}, +{ +"x": 346, +"y": 84 +}, +{ +"x": 151, +"y": 690 +}, +{ +"x": 32, +"y": 690 +}, +{ +"x": 273, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 652 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/W^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/W^1.json new file mode 100644 index 0000000000..0a58c36536 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/W^1.json @@ -0,0 +1,78 @@ +{ +"name": "W", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 966, +"y": 690 +}, +{ +"x": 852, +"y": 690 +}, +{ +"x": 712, +"y": 88 +}, +{ +"x": 573, +"y": 680 +}, +{ +"x": 422, +"y": 680 +}, +{ +"x": 279, +"y": 91 +}, +{ +"x": 147, +"y": 690 +}, +{ +"x": 26, +"y": 690 +}, +{ +"x": 204, +"y": 0 +}, +{ +"x": 350, +"y": 0 +}, +{ +"x": 495, +"y": 588 +}, +{ +"x": 633, +"y": 0 +}, +{ +"x": 778, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 968 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Wacute^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Wacute^1.json new file mode 100644 index 0000000000..2a2192d9b7 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Wacute^1.json @@ -0,0 +1,99 @@ +{ +"name": "Wacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 525, +"y": 736 +}, +{ +"x": 622, +"y": 838 +}, +{ +"x": 522, +"y": 838 +}, +{ +"x": 459, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 966, +"y": 690 +}, +{ +"x": 852, +"y": 690 +}, +{ +"x": 712, +"y": 88 +}, +{ +"x": 573, +"y": 680 +}, +{ +"x": 422, +"y": 680 +}, +{ +"x": 279, +"y": 91 +}, +{ +"x": 147, +"y": 690 +}, +{ +"x": 26, +"y": 690 +}, +{ +"x": 204, +"y": 0 +}, +{ +"x": 350, +"y": 0 +}, +{ +"x": 495, +"y": 588 +}, +{ +"x": 633, +"y": 0 +}, +{ +"x": 778, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 968 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Wcircumflex^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Wcircumflex^1.json new file mode 100644 index 0000000000..108cf92900 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Wcircumflex^1.json @@ -0,0 +1,111 @@ +{ +"name": "Wcircumflex", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 466, +"y": 736 +}, +{ +"x": 497, +"y": 796 +}, +{ +"x": 528, +"y": 736 +}, +{ +"x": 604, +"y": 736 +}, +{ +"x": 538, +"y": 838 +}, +{ +"x": 457, +"y": 838 +}, +{ +"x": 391, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 966, +"y": 690 +}, +{ +"x": 852, +"y": 690 +}, +{ +"x": 712, +"y": 88 +}, +{ +"x": 573, +"y": 680 +}, +{ +"x": 422, +"y": 680 +}, +{ +"x": 279, +"y": 91 +}, +{ +"x": 147, +"y": 690 +}, +{ +"x": 26, +"y": 690 +}, +{ +"x": 204, +"y": 0 +}, +{ +"x": 350, +"y": 0 +}, +{ +"x": 495, +"y": 588 +}, +{ +"x": 633, +"y": 0 +}, +{ +"x": 778, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 968 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Wdieresis^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Wdieresis^1.json new file mode 100644 index 0000000000..5ba0735046 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Wdieresis^1.json @@ -0,0 +1,208 @@ +{ +"name": "Wdieresis", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 420, +"y": 733, +"smooth": true +}, +{ +"x": 450, +"y": 733, +"type": "cubic" +}, +{ +"x": 473, +"y": 756, +"type": "cubic" +}, +{ +"x": 473, +"y": 786, +"smooth": true +}, +{ +"x": 473, +"y": 816, +"type": "cubic" +}, +{ +"x": 450, +"y": 839, +"type": "cubic" +}, +{ +"x": 420, +"y": 839, +"smooth": true +}, +{ +"x": 390, +"y": 839, +"type": "cubic" +}, +{ +"x": 366, +"y": 816, +"type": "cubic" +}, +{ +"x": 366, +"y": 786, +"smooth": true +}, +{ +"x": 366, +"y": 756, +"type": "cubic" +}, +{ +"x": 390, +"y": 733, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 575, +"y": 733, +"smooth": true +}, +{ +"x": 605, +"y": 733, +"type": "cubic" +}, +{ +"x": 628, +"y": 756, +"type": "cubic" +}, +{ +"x": 628, +"y": 786, +"smooth": true +}, +{ +"x": 628, +"y": 816, +"type": "cubic" +}, +{ +"x": 605, +"y": 839, +"type": "cubic" +}, +{ +"x": 575, +"y": 839, +"smooth": true +}, +{ +"x": 545, +"y": 839, +"type": "cubic" +}, +{ +"x": 521, +"y": 816, +"type": "cubic" +}, +{ +"x": 521, +"y": 786, +"smooth": true +}, +{ +"x": 521, +"y": 756, +"type": "cubic" +}, +{ +"x": 545, +"y": 733, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 966, +"y": 690 +}, +{ +"x": 852, +"y": 690 +}, +{ +"x": 712, +"y": 88 +}, +{ +"x": 573, +"y": 680 +}, +{ +"x": 422, +"y": 680 +}, +{ +"x": 279, +"y": 91 +}, +{ +"x": 147, +"y": 690 +}, +{ +"x": 26, +"y": 690 +}, +{ +"x": 204, +"y": 0 +}, +{ +"x": 350, +"y": 0 +}, +{ +"x": 495, +"y": 588 +}, +{ +"x": 633, +"y": 0 +}, +{ +"x": 778, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 968 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Wgrave^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Wgrave^1.json new file mode 100644 index 0000000000..2dd29fd86b --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Wgrave^1.json @@ -0,0 +1,99 @@ +{ +"name": "Wgrave", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 470, +"y": 736 +}, +{ +"x": 536, +"y": 736 +}, +{ +"x": 473, +"y": 838 +}, +{ +"x": 373, +"y": 838 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 966, +"y": 690 +}, +{ +"x": 852, +"y": 690 +}, +{ +"x": 712, +"y": 88 +}, +{ +"x": 573, +"y": 680 +}, +{ +"x": 422, +"y": 680 +}, +{ +"x": 279, +"y": 91 +}, +{ +"x": 147, +"y": 690 +}, +{ +"x": 26, +"y": 690 +}, +{ +"x": 204, +"y": 0 +}, +{ +"x": 350, +"y": 0 +}, +{ +"x": 495, +"y": 588 +}, +{ +"x": 633, +"y": 0 +}, +{ +"x": 778, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 968 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/X^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/X^1.json new file mode 100644 index 0000000000..c6b2ae3120 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/X^1.json @@ -0,0 +1,74 @@ +{ +"name": "X", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 519, +"y": 0 +}, +{ +"x": 647, +"y": 0 +}, +{ +"x": 399, +"y": 351 +}, +{ +"x": 639, +"y": 690 +}, +{ +"x": 513, +"y": 690 +}, +{ +"x": 336, +"y": 420 +}, +{ +"x": 166, +"y": 690 +}, +{ +"x": 40, +"y": 690 +}, +{ +"x": 269, +"y": 348 +}, +{ +"x": 22, +"y": 0 +}, +{ +"x": 151, +"y": 0 +}, +{ +"x": 331, +"y": 279 +} +], +"isClosed": true +} +] +}, +"xAdvance": 648 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Y^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Y^1.json new file mode 100644 index 0000000000..2f899252f2 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Y^1.json @@ -0,0 +1,62 @@ +{ +"name": "Y", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 371, +"y": 270 +}, +{ +"x": 615, +"y": 690 +}, +{ +"x": 493, +"y": 690 +}, +{ +"x": 321, +"y": 371 +}, +{ +"x": 143, +"y": 690 +}, +{ +"x": 18, +"y": 690 +}, +{ +"x": 262, +"y": 270 +}, +{ +"x": 262, +"y": 0 +}, +{ +"x": 371, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 602 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Yacute^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Yacute^1.json new file mode 100644 index 0000000000..5c2d373a47 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Yacute^1.json @@ -0,0 +1,83 @@ +{ +"name": "Yacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 344, +"y": 736 +}, +{ +"x": 441, +"y": 838 +}, +{ +"x": 341, +"y": 838 +}, +{ +"x": 278, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 371, +"y": 270 +}, +{ +"x": 615, +"y": 690 +}, +{ +"x": 493, +"y": 690 +}, +{ +"x": 321, +"y": 371 +}, +{ +"x": 143, +"y": 690 +}, +{ +"x": 18, +"y": 690 +}, +{ +"x": 262, +"y": 270 +}, +{ +"x": 262, +"y": 0 +}, +{ +"x": 371, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 602 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ycircumflex^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ycircumflex^1.json new file mode 100644 index 0000000000..28474c2859 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ycircumflex^1.json @@ -0,0 +1,95 @@ +{ +"name": "Ycircumflex", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 285, +"y": 736 +}, +{ +"x": 316, +"y": 796 +}, +{ +"x": 347, +"y": 736 +}, +{ +"x": 423, +"y": 736 +}, +{ +"x": 357, +"y": 838 +}, +{ +"x": 276, +"y": 838 +}, +{ +"x": 210, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 371, +"y": 270 +}, +{ +"x": 615, +"y": 690 +}, +{ +"x": 493, +"y": 690 +}, +{ +"x": 321, +"y": 371 +}, +{ +"x": 143, +"y": 690 +}, +{ +"x": 18, +"y": 690 +}, +{ +"x": 262, +"y": 270 +}, +{ +"x": 262, +"y": 0 +}, +{ +"x": 371, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 602 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ydieresis^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ydieresis^1.json new file mode 100644 index 0000000000..dd9eb43826 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ydieresis^1.json @@ -0,0 +1,192 @@ +{ +"name": "Ydieresis", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 239, +"y": 733, +"smooth": true +}, +{ +"x": 269, +"y": 733, +"type": "cubic" +}, +{ +"x": 292, +"y": 756, +"type": "cubic" +}, +{ +"x": 292, +"y": 786, +"smooth": true +}, +{ +"x": 292, +"y": 816, +"type": "cubic" +}, +{ +"x": 269, +"y": 839, +"type": "cubic" +}, +{ +"x": 239, +"y": 839, +"smooth": true +}, +{ +"x": 209, +"y": 839, +"type": "cubic" +}, +{ +"x": 185, +"y": 816, +"type": "cubic" +}, +{ +"x": 185, +"y": 786, +"smooth": true +}, +{ +"x": 185, +"y": 756, +"type": "cubic" +}, +{ +"x": 209, +"y": 733, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 394, +"y": 733, +"smooth": true +}, +{ +"x": 424, +"y": 733, +"type": "cubic" +}, +{ +"x": 447, +"y": 756, +"type": "cubic" +}, +{ +"x": 447, +"y": 786, +"smooth": true +}, +{ +"x": 447, +"y": 816, +"type": "cubic" +}, +{ +"x": 424, +"y": 839, +"type": "cubic" +}, +{ +"x": 394, +"y": 839, +"smooth": true +}, +{ +"x": 364, +"y": 839, +"type": "cubic" +}, +{ +"x": 340, +"y": 816, +"type": "cubic" +}, +{ +"x": 340, +"y": 786, +"smooth": true +}, +{ +"x": 340, +"y": 756, +"type": "cubic" +}, +{ +"x": 364, +"y": 733, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 371, +"y": 270 +}, +{ +"x": 615, +"y": 690 +}, +{ +"x": 493, +"y": 690 +}, +{ +"x": 321, +"y": 371 +}, +{ +"x": 143, +"y": 690 +}, +{ +"x": 18, +"y": 690 +}, +{ +"x": 262, +"y": 270 +}, +{ +"x": 262, +"y": 0 +}, +{ +"x": 371, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 602 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ygrave^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ygrave^1.json new file mode 100644 index 0000000000..3f73525f72 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Ygrave^1.json @@ -0,0 +1,83 @@ +{ +"name": "Ygrave", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 289, +"y": 736 +}, +{ +"x": 355, +"y": 736 +}, +{ +"x": 292, +"y": 838 +}, +{ +"x": 192, +"y": 838 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 371, +"y": 270 +}, +{ +"x": 615, +"y": 690 +}, +{ +"x": 493, +"y": 690 +}, +{ +"x": 321, +"y": 371 +}, +{ +"x": 143, +"y": 690 +}, +{ +"x": 18, +"y": 690 +}, +{ +"x": 262, +"y": 270 +}, +{ +"x": 262, +"y": 0 +}, +{ +"x": 371, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 602 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Z^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Z^1.json new file mode 100644 index 0000000000..d3f0362e0a --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Z^1.json @@ -0,0 +1,66 @@ +{ +"name": "Z", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 581, +"y": 88 +}, +{ +"x": 179, +"y": 88 +}, +{ +"x": 576, +"y": 604 +}, +{ +"x": 576, +"y": 690 +}, +{ +"x": 76, +"y": 690 +}, +{ +"x": 76, +"y": 603 +}, +{ +"x": 448, +"y": 603 +}, +{ +"x": 48, +"y": 84 +}, +{ +"x": 48, +"y": 0 +}, +{ +"x": 581, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 605 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Zacute^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Zacute^1.json new file mode 100644 index 0000000000..d6dc34bb5e --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Zacute^1.json @@ -0,0 +1,87 @@ +{ +"name": "Zacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 343, +"y": 736 +}, +{ +"x": 440, +"y": 838 +}, +{ +"x": 340, +"y": 838 +}, +{ +"x": 277, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 581, +"y": 88 +}, +{ +"x": 179, +"y": 88 +}, +{ +"x": 576, +"y": 604 +}, +{ +"x": 576, +"y": 690 +}, +{ +"x": 76, +"y": 690 +}, +{ +"x": 76, +"y": 603 +}, +{ +"x": 448, +"y": 603 +}, +{ +"x": 48, +"y": 84 +}, +{ +"x": 48, +"y": 0 +}, +{ +"x": 581, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 605 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Zcaron^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Zcaron^1.json new file mode 100644 index 0000000000..48f50a8de7 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Zcaron^1.json @@ -0,0 +1,99 @@ +{ +"name": "Zcaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 275, +"y": 736 +}, +{ +"x": 356, +"y": 736 +}, +{ +"x": 422, +"y": 838 +}, +{ +"x": 347, +"y": 838 +}, +{ +"x": 316, +"y": 777 +}, +{ +"x": 285, +"y": 838 +}, +{ +"x": 209, +"y": 838 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 581, +"y": 88 +}, +{ +"x": 179, +"y": 88 +}, +{ +"x": 576, +"y": 604 +}, +{ +"x": 576, +"y": 690 +}, +{ +"x": 76, +"y": 690 +}, +{ +"x": 76, +"y": 603 +}, +{ +"x": 448, +"y": 603 +}, +{ +"x": 48, +"y": 84 +}, +{ +"x": 48, +"y": 0 +}, +{ +"x": 581, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 605 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Zdotaccent^1.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Zdotaccent^1.json new file mode 100644 index 0000000000..07196a4562 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/Zdotaccent^1.json @@ -0,0 +1,131 @@ +{ +"name": "Zdotaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 315, +"y": 734, +"smooth": true +}, +{ +"x": 348, +"y": 734, +"type": "cubic" +}, +{ +"x": 373, +"y": 758, +"type": "cubic" +}, +{ +"x": 373, +"y": 791, +"smooth": true +}, +{ +"x": 373, +"y": 823, +"type": "cubic" +}, +{ +"x": 348, +"y": 847, +"type": "cubic" +}, +{ +"x": 315, +"y": 847, +"smooth": true +}, +{ +"x": 282, +"y": 847, +"type": "cubic" +}, +{ +"x": 257, +"y": 823, +"type": "cubic" +}, +{ +"x": 257, +"y": 791, +"smooth": true +}, +{ +"x": 257, +"y": 758, +"type": "cubic" +}, +{ +"x": 282, +"y": 734, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 581, +"y": 88 +}, +{ +"x": 179, +"y": 88 +}, +{ +"x": 576, +"y": 604 +}, +{ +"x": 576, +"y": 690 +}, +{ +"x": 76, +"y": 690 +}, +{ +"x": 76, +"y": 603 +}, +{ +"x": 448, +"y": 603 +}, +{ +"x": 48, +"y": 84 +}, +{ +"x": 48, +"y": 0 +}, +{ +"x": 581, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 605 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/a.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/a.json new file mode 100644 index 0000000000..7bf945efe8 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/a.json @@ -0,0 +1,258 @@ +{ +"name": "a", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 375, +"y": 0 +}, +{ +"x": 484, +"y": 0 +}, +{ +"x": 476, +"y": 59, +"type": "cubic" +}, +{ +"x": 474, +"y": 95, +"type": "cubic" +}, +{ +"x": 474, +"y": 135, +"smooth": true +}, +{ +"x": 474, +"y": 322, +"smooth": true +}, +{ +"x": 474, +"y": 347, +"type": "cubic" +}, +{ +"x": 473, +"y": 375, +"type": "cubic" +}, +{ +"x": 471, +"y": 397, +"smooth": true +}, +{ +"x": 462, +"y": 487, +"type": "cubic" +}, +{ +"x": 408, +"y": 545, +"type": "cubic" +}, +{ +"x": 271, +"y": 545, +"smooth": true +}, +{ +"x": 150, +"y": 545, +"type": "cubic" +}, +{ +"x": 63, +"y": 479, +"type": "cubic" +}, +{ +"x": 56, +"y": 363 +}, +{ +"x": 166, +"y": 363 +}, +{ +"x": 172, +"y": 429, +"type": "cubic" +}, +{ +"x": 205, +"y": 465, +"type": "cubic" +}, +{ +"x": 269, +"y": 465, +"smooth": true +}, +{ +"x": 332, +"y": 465, +"type": "cubic" +}, +{ +"x": 359, +"y": 435, +"type": "cubic" +}, +{ +"x": 362, +"y": 392, +"smooth": true +}, +{ +"x": 364, +"y": 372, +"type": "cubic" +}, +{ +"x": 364, +"y": 354, +"type": "cubic" +}, +{ +"x": 364, +"y": 334, +"smooth": true +}, +{ +"x": 364, +"y": 321 +}, +{ +"x": 330, +"y": 321, +"smooth": true +}, +{ +"x": 129, +"y": 321, +"type": "cubic" +}, +{ +"x": 35, +"y": 257, +"type": "cubic" +}, +{ +"x": 35, +"y": 139, +"smooth": true +}, +{ +"x": 35, +"y": 40, +"type": "cubic" +}, +{ +"x": 112, +"y": -14, +"type": "cubic" +}, +{ +"x": 206, +"y": -14, +"smooth": true +}, +{ +"x": 256, +"y": -14, +"type": "cubic" +}, +{ +"x": 302, +"y": -5, +"type": "cubic" +}, +{ +"x": 338, +"y": 20 +}, +{ +"x": 365, +"y": 77 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 246, +"y": 66, +"smooth": true +}, +{ +"x": 188, +"y": 66, +"type": "cubic" +}, +{ +"x": 151, +"y": 92, +"type": "cubic" +}, +{ +"x": 151, +"y": 148, +"smooth": true +}, +{ +"x": 151, +"y": 229, +"type": "cubic" +}, +{ +"x": 235, +"y": 258, +"type": "cubic" +}, +{ +"x": 364, +"y": 248 +}, +{ +"x": 364, +"y": 199, +"smooth": true +}, +{ +"x": 364, +"y": 113, +"type": "cubic" +}, +{ +"x": 315, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 545 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/aacute.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/aacute.json new file mode 100644 index 0000000000..1bf412067e --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/aacute.json @@ -0,0 +1,279 @@ +{ +"name": "aacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 298, +"y": 578 +}, +{ +"x": 401, +"y": 692 +}, +{ +"x": 301, +"y": 692 +}, +{ +"x": 232, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 375, +"y": 0 +}, +{ +"x": 484, +"y": 0 +}, +{ +"x": 476, +"y": 59, +"type": "cubic" +}, +{ +"x": 474, +"y": 95, +"type": "cubic" +}, +{ +"x": 474, +"y": 135, +"smooth": true +}, +{ +"x": 474, +"y": 322, +"smooth": true +}, +{ +"x": 474, +"y": 347, +"type": "cubic" +}, +{ +"x": 473, +"y": 375, +"type": "cubic" +}, +{ +"x": 471, +"y": 397, +"smooth": true +}, +{ +"x": 462, +"y": 487, +"type": "cubic" +}, +{ +"x": 408, +"y": 545, +"type": "cubic" +}, +{ +"x": 271, +"y": 545, +"smooth": true +}, +{ +"x": 150, +"y": 545, +"type": "cubic" +}, +{ +"x": 63, +"y": 479, +"type": "cubic" +}, +{ +"x": 56, +"y": 363 +}, +{ +"x": 166, +"y": 363 +}, +{ +"x": 172, +"y": 429, +"type": "cubic" +}, +{ +"x": 205, +"y": 465, +"type": "cubic" +}, +{ +"x": 269, +"y": 465, +"smooth": true +}, +{ +"x": 332, +"y": 465, +"type": "cubic" +}, +{ +"x": 359, +"y": 435, +"type": "cubic" +}, +{ +"x": 362, +"y": 392, +"smooth": true +}, +{ +"x": 364, +"y": 372, +"type": "cubic" +}, +{ +"x": 364, +"y": 354, +"type": "cubic" +}, +{ +"x": 364, +"y": 334, +"smooth": true +}, +{ +"x": 364, +"y": 321 +}, +{ +"x": 330, +"y": 321, +"smooth": true +}, +{ +"x": 129, +"y": 321, +"type": "cubic" +}, +{ +"x": 35, +"y": 257, +"type": "cubic" +}, +{ +"x": 35, +"y": 139, +"smooth": true +}, +{ +"x": 35, +"y": 40, +"type": "cubic" +}, +{ +"x": 112, +"y": -14, +"type": "cubic" +}, +{ +"x": 206, +"y": -14, +"smooth": true +}, +{ +"x": 256, +"y": -14, +"type": "cubic" +}, +{ +"x": 302, +"y": -5, +"type": "cubic" +}, +{ +"x": 338, +"y": 20 +}, +{ +"x": 365, +"y": 77 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 246, +"y": 66, +"smooth": true +}, +{ +"x": 188, +"y": 66, +"type": "cubic" +}, +{ +"x": 151, +"y": 92, +"type": "cubic" +}, +{ +"x": 151, +"y": 148, +"smooth": true +}, +{ +"x": 151, +"y": 229, +"type": "cubic" +}, +{ +"x": 235, +"y": 258, +"type": "cubic" +}, +{ +"x": 364, +"y": 248 +}, +{ +"x": 364, +"y": 199, +"smooth": true +}, +{ +"x": 364, +"y": 113, +"type": "cubic" +}, +{ +"x": 315, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 545 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/abreve.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/abreve.json new file mode 100644 index 0000000000..af448ad938 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/abreve.json @@ -0,0 +1,329 @@ +{ +"name": "abreve", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 271, +"y": 567, +"smooth": true +}, +{ +"x": 342, +"y": 567, +"type": "cubic" +}, +{ +"x": 381, +"y": 605, +"type": "cubic" +}, +{ +"x": 381, +"y": 692 +}, +{ +"x": 319, +"y": 692 +}, +{ +"x": 318, +"y": 646, +"type": "cubic" +}, +{ +"x": 300, +"y": 629, +"type": "cubic" +}, +{ +"x": 271, +"y": 629, +"smooth": true +}, +{ +"x": 242, +"y": 629, +"type": "cubic" +}, +{ +"x": 224, +"y": 646, +"type": "cubic" +}, +{ +"x": 223, +"y": 692 +}, +{ +"x": 161, +"y": 692 +}, +{ +"x": 161, +"y": 605, +"type": "cubic" +}, +{ +"x": 199, +"y": 567, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 375, +"y": 0 +}, +{ +"x": 484, +"y": 0 +}, +{ +"x": 476, +"y": 59, +"type": "cubic" +}, +{ +"x": 474, +"y": 95, +"type": "cubic" +}, +{ +"x": 474, +"y": 135, +"smooth": true +}, +{ +"x": 474, +"y": 322, +"smooth": true +}, +{ +"x": 474, +"y": 347, +"type": "cubic" +}, +{ +"x": 473, +"y": 375, +"type": "cubic" +}, +{ +"x": 471, +"y": 397, +"smooth": true +}, +{ +"x": 462, +"y": 487, +"type": "cubic" +}, +{ +"x": 408, +"y": 545, +"type": "cubic" +}, +{ +"x": 271, +"y": 545, +"smooth": true +}, +{ +"x": 150, +"y": 545, +"type": "cubic" +}, +{ +"x": 63, +"y": 479, +"type": "cubic" +}, +{ +"x": 56, +"y": 363 +}, +{ +"x": 166, +"y": 363 +}, +{ +"x": 172, +"y": 429, +"type": "cubic" +}, +{ +"x": 205, +"y": 465, +"type": "cubic" +}, +{ +"x": 269, +"y": 465, +"smooth": true +}, +{ +"x": 332, +"y": 465, +"type": "cubic" +}, +{ +"x": 359, +"y": 435, +"type": "cubic" +}, +{ +"x": 362, +"y": 392, +"smooth": true +}, +{ +"x": 364, +"y": 372, +"type": "cubic" +}, +{ +"x": 364, +"y": 354, +"type": "cubic" +}, +{ +"x": 364, +"y": 334, +"smooth": true +}, +{ +"x": 364, +"y": 321 +}, +{ +"x": 330, +"y": 321, +"smooth": true +}, +{ +"x": 129, +"y": 321, +"type": "cubic" +}, +{ +"x": 35, +"y": 257, +"type": "cubic" +}, +{ +"x": 35, +"y": 139, +"smooth": true +}, +{ +"x": 35, +"y": 40, +"type": "cubic" +}, +{ +"x": 112, +"y": -14, +"type": "cubic" +}, +{ +"x": 206, +"y": -14, +"smooth": true +}, +{ +"x": 256, +"y": -14, +"type": "cubic" +}, +{ +"x": 302, +"y": -5, +"type": "cubic" +}, +{ +"x": 338, +"y": 20 +}, +{ +"x": 365, +"y": 77 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 246, +"y": 66, +"smooth": true +}, +{ +"x": 188, +"y": 66, +"type": "cubic" +}, +{ +"x": 151, +"y": 92, +"type": "cubic" +}, +{ +"x": 151, +"y": 148, +"smooth": true +}, +{ +"x": 151, +"y": 229, +"type": "cubic" +}, +{ +"x": 235, +"y": 258, +"type": "cubic" +}, +{ +"x": 364, +"y": 248 +}, +{ +"x": 364, +"y": 199, +"smooth": true +}, +{ +"x": 364, +"y": 113, +"type": "cubic" +}, +{ +"x": 315, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 545 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/acircumflex.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/acircumflex.json new file mode 100644 index 0000000000..5500af64ca --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/acircumflex.json @@ -0,0 +1,291 @@ +{ +"name": "acircumflex", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 238, +"y": 578 +}, +{ +"x": 271, +"y": 643 +}, +{ +"x": 304, +"y": 578 +}, +{ +"x": 378, +"y": 578 +}, +{ +"x": 312, +"y": 692 +}, +{ +"x": 231, +"y": 692 +}, +{ +"x": 165, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 375, +"y": 0 +}, +{ +"x": 484, +"y": 0 +}, +{ +"x": 476, +"y": 59, +"type": "cubic" +}, +{ +"x": 474, +"y": 95, +"type": "cubic" +}, +{ +"x": 474, +"y": 135, +"smooth": true +}, +{ +"x": 474, +"y": 322, +"smooth": true +}, +{ +"x": 474, +"y": 347, +"type": "cubic" +}, +{ +"x": 473, +"y": 375, +"type": "cubic" +}, +{ +"x": 471, +"y": 397, +"smooth": true +}, +{ +"x": 462, +"y": 487, +"type": "cubic" +}, +{ +"x": 408, +"y": 545, +"type": "cubic" +}, +{ +"x": 271, +"y": 545, +"smooth": true +}, +{ +"x": 150, +"y": 545, +"type": "cubic" +}, +{ +"x": 63, +"y": 479, +"type": "cubic" +}, +{ +"x": 56, +"y": 363 +}, +{ +"x": 166, +"y": 363 +}, +{ +"x": 172, +"y": 429, +"type": "cubic" +}, +{ +"x": 205, +"y": 465, +"type": "cubic" +}, +{ +"x": 269, +"y": 465, +"smooth": true +}, +{ +"x": 332, +"y": 465, +"type": "cubic" +}, +{ +"x": 359, +"y": 435, +"type": "cubic" +}, +{ +"x": 362, +"y": 392, +"smooth": true +}, +{ +"x": 364, +"y": 372, +"type": "cubic" +}, +{ +"x": 364, +"y": 354, +"type": "cubic" +}, +{ +"x": 364, +"y": 334, +"smooth": true +}, +{ +"x": 364, +"y": 321 +}, +{ +"x": 330, +"y": 321, +"smooth": true +}, +{ +"x": 129, +"y": 321, +"type": "cubic" +}, +{ +"x": 35, +"y": 257, +"type": "cubic" +}, +{ +"x": 35, +"y": 139, +"smooth": true +}, +{ +"x": 35, +"y": 40, +"type": "cubic" +}, +{ +"x": 112, +"y": -14, +"type": "cubic" +}, +{ +"x": 206, +"y": -14, +"smooth": true +}, +{ +"x": 256, +"y": -14, +"type": "cubic" +}, +{ +"x": 302, +"y": -5, +"type": "cubic" +}, +{ +"x": 338, +"y": 20 +}, +{ +"x": 365, +"y": 77 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 246, +"y": 66, +"smooth": true +}, +{ +"x": 188, +"y": 66, +"type": "cubic" +}, +{ +"x": 151, +"y": 92, +"type": "cubic" +}, +{ +"x": 151, +"y": 148, +"smooth": true +}, +{ +"x": 151, +"y": 229, +"type": "cubic" +}, +{ +"x": 235, +"y": 258, +"type": "cubic" +}, +{ +"x": 364, +"y": 248 +}, +{ +"x": 364, +"y": 199, +"smooth": true +}, +{ +"x": 364, +"y": 113, +"type": "cubic" +}, +{ +"x": 315, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 545 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/acute.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/acute.json new file mode 100644 index 0000000000..6ab602c143 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/acute.json @@ -0,0 +1,42 @@ +{ +"name": "acute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 177, +"y": 578 +}, +{ +"x": 280, +"y": 692 +}, +{ +"x": 180, +"y": 692 +}, +{ +"x": 111, +"y": 578 +} +], +"isClosed": true +} +] +}, +"xAdvance": 300 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/adieresis.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/adieresis.json new file mode 100644 index 0000000000..683b7185a2 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/adieresis.json @@ -0,0 +1,388 @@ +{ +"name": "adieresis", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 191, +"y": 580, +"smooth": true +}, +{ +"x": 221, +"y": 580, +"type": "cubic" +}, +{ +"x": 245, +"y": 602, +"type": "cubic" +}, +{ +"x": 245, +"y": 632, +"smooth": true +}, +{ +"x": 245, +"y": 662, +"type": "cubic" +}, +{ +"x": 221, +"y": 685, +"type": "cubic" +}, +{ +"x": 191, +"y": 685, +"smooth": true +}, +{ +"x": 161, +"y": 685, +"type": "cubic" +}, +{ +"x": 138, +"y": 662, +"type": "cubic" +}, +{ +"x": 138, +"y": 632, +"smooth": true +}, +{ +"x": 138, +"y": 602, +"type": "cubic" +}, +{ +"x": 161, +"y": 580, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 351, +"y": 580, +"smooth": true +}, +{ +"x": 381, +"y": 580, +"type": "cubic" +}, +{ +"x": 404, +"y": 602, +"type": "cubic" +}, +{ +"x": 404, +"y": 632, +"smooth": true +}, +{ +"x": 404, +"y": 662, +"type": "cubic" +}, +{ +"x": 381, +"y": 685, +"type": "cubic" +}, +{ +"x": 351, +"y": 685, +"smooth": true +}, +{ +"x": 321, +"y": 685, +"type": "cubic" +}, +{ +"x": 298, +"y": 662, +"type": "cubic" +}, +{ +"x": 298, +"y": 632, +"smooth": true +}, +{ +"x": 298, +"y": 602, +"type": "cubic" +}, +{ +"x": 321, +"y": 580, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 375, +"y": 0 +}, +{ +"x": 484, +"y": 0 +}, +{ +"x": 476, +"y": 59, +"type": "cubic" +}, +{ +"x": 474, +"y": 95, +"type": "cubic" +}, +{ +"x": 474, +"y": 135, +"smooth": true +}, +{ +"x": 474, +"y": 322, +"smooth": true +}, +{ +"x": 474, +"y": 347, +"type": "cubic" +}, +{ +"x": 473, +"y": 375, +"type": "cubic" +}, +{ +"x": 471, +"y": 397, +"smooth": true +}, +{ +"x": 462, +"y": 487, +"type": "cubic" +}, +{ +"x": 408, +"y": 545, +"type": "cubic" +}, +{ +"x": 271, +"y": 545, +"smooth": true +}, +{ +"x": 150, +"y": 545, +"type": "cubic" +}, +{ +"x": 63, +"y": 479, +"type": "cubic" +}, +{ +"x": 56, +"y": 363 +}, +{ +"x": 166, +"y": 363 +}, +{ +"x": 172, +"y": 429, +"type": "cubic" +}, +{ +"x": 205, +"y": 465, +"type": "cubic" +}, +{ +"x": 269, +"y": 465, +"smooth": true +}, +{ +"x": 332, +"y": 465, +"type": "cubic" +}, +{ +"x": 359, +"y": 435, +"type": "cubic" +}, +{ +"x": 362, +"y": 392, +"smooth": true +}, +{ +"x": 364, +"y": 372, +"type": "cubic" +}, +{ +"x": 364, +"y": 354, +"type": "cubic" +}, +{ +"x": 364, +"y": 334, +"smooth": true +}, +{ +"x": 364, +"y": 321 +}, +{ +"x": 330, +"y": 321, +"smooth": true +}, +{ +"x": 129, +"y": 321, +"type": "cubic" +}, +{ +"x": 35, +"y": 257, +"type": "cubic" +}, +{ +"x": 35, +"y": 139, +"smooth": true +}, +{ +"x": 35, +"y": 40, +"type": "cubic" +}, +{ +"x": 112, +"y": -14, +"type": "cubic" +}, +{ +"x": 206, +"y": -14, +"smooth": true +}, +{ +"x": 256, +"y": -14, +"type": "cubic" +}, +{ +"x": 302, +"y": -5, +"type": "cubic" +}, +{ +"x": 338, +"y": 20 +}, +{ +"x": 365, +"y": 77 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 246, +"y": 66, +"smooth": true +}, +{ +"x": 188, +"y": 66, +"type": "cubic" +}, +{ +"x": 151, +"y": 92, +"type": "cubic" +}, +{ +"x": 151, +"y": 148, +"smooth": true +}, +{ +"x": 151, +"y": 229, +"type": "cubic" +}, +{ +"x": 235, +"y": 258, +"type": "cubic" +}, +{ +"x": 364, +"y": 248 +}, +{ +"x": 364, +"y": 199, +"smooth": true +}, +{ +"x": 364, +"y": 113, +"type": "cubic" +}, +{ +"x": 315, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 545 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ae.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ae.json new file mode 100644 index 0000000000..5e1ea9b8c5 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ae.json @@ -0,0 +1,348 @@ +{ +"name": "ae", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 874, +"y": 279, +"smooth": true +}, +{ +"x": 874, +"y": 429, +"type": "cubic" +}, +{ +"x": 790, +"y": 545, +"type": "cubic" +}, +{ +"x": 639, +"y": 545, +"smooth": true +}, +{ +"x": 556, +"y": 545, +"type": "cubic" +}, +{ +"x": 492, +"y": 511, +"type": "cubic" +}, +{ +"x": 451, +"y": 450 +}, +{ +"x": 425, +"y": 511, +"type": "cubic" +}, +{ +"x": 369, +"y": 545, +"type": "cubic" +}, +{ +"x": 271, +"y": 545, +"smooth": true +}, +{ +"x": 144, +"y": 545, +"type": "cubic" +}, +{ +"x": 59, +"y": 479, +"type": "cubic" +}, +{ +"x": 56, +"y": 363 +}, +{ +"x": 166, +"y": 363 +}, +{ +"x": 169, +"y": 429, +"type": "cubic" +}, +{ +"x": 205, +"y": 465, +"type": "cubic" +}, +{ +"x": 272, +"y": 465, +"smooth": true +}, +{ +"x": 347, +"y": 465, +"type": "cubic" +}, +{ +"x": 378, +"y": 415, +"type": "cubic" +}, +{ +"x": 378, +"y": 334, +"smooth": true +}, +{ +"x": 378, +"y": 312 +}, +{ +"x": 338, +"y": 312, +"smooth": true +}, +{ +"x": 139, +"y": 312, +"type": "cubic" +}, +{ +"x": 35, +"y": 261, +"type": "cubic" +}, +{ +"x": 35, +"y": 140, +"smooth": true +}, +{ +"x": 35, +"y": 40, +"type": "cubic" +}, +{ +"x": 117, +"y": -14, +"type": "cubic" +}, +{ +"x": 221, +"y": -14, +"smooth": true +}, +{ +"x": 279, +"y": -14, +"type": "cubic" +}, +{ +"x": 335, +"y": 0, +"type": "cubic" +}, +{ +"x": 384, +"y": 41 +}, +{ +"x": 421, +"y": 103 +}, +{ +"x": 463, +"y": 19, +"type": "cubic" +}, +{ +"x": 537, +"y": -14, +"type": "cubic" +}, +{ +"x": 626, +"y": -14, +"smooth": true +}, +{ +"x": 742, +"y": -14, +"type": "cubic" +}, +{ +"x": 842, +"y": 46, +"type": "cubic" +}, +{ +"x": 866, +"y": 172 +}, +{ +"x": 754, +"y": 172 +}, +{ +"x": 743, +"y": 105, +"type": "cubic" +}, +{ +"x": 694, +"y": 66, +"type": "cubic" +}, +{ +"x": 629, +"y": 66, +"smooth": true +}, +{ +"x": 558, +"y": 66, +"type": "cubic" +}, +{ +"x": 500, +"y": 114, +"type": "cubic" +}, +{ +"x": 492, +"y": 235 +}, +{ +"x": 871, +"y": 235 +}, +{ +"x": 873, +"y": 254, +"type": "cubic" +}, +{ +"x": 874, +"y": 269, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 493, +"y": 312 +}, +{ +"x": 505, +"y": 413, +"type": "cubic" +}, +{ +"x": 557, +"y": 465, +"type": "cubic" +}, +{ +"x": 633, +"y": 465, +"smooth": true +}, +{ +"x": 710, +"y": 465, +"type": "cubic" +}, +{ +"x": 752, +"y": 410, +"type": "cubic" +}, +{ +"x": 761, +"y": 312 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 378, +"y": 210, +"smooth": true +}, +{ +"x": 378, +"y": 121, +"type": "cubic" +}, +{ +"x": 322, +"y": 66, +"type": "cubic" +}, +{ +"x": 249, +"y": 66, +"smooth": true +}, +{ +"x": 188, +"y": 66, +"type": "cubic" +}, +{ +"x": 151, +"y": 92, +"type": "cubic" +}, +{ +"x": 151, +"y": 149, +"smooth": true +}, +{ +"x": 151, +"y": 225, +"type": "cubic" +}, +{ +"x": 233, +"y": 241, +"type": "cubic" +}, +{ +"x": 378, +"y": 235 +} +], +"isClosed": true +} +] +}, +"xAdvance": 910 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/agrave.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/agrave.json new file mode 100644 index 0000000000..092e4386c1 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/agrave.json @@ -0,0 +1,279 @@ +{ +"name": "agrave", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 246, +"y": 578 +}, +{ +"x": 312, +"y": 578 +}, +{ +"x": 244, +"y": 692 +}, +{ +"x": 144, +"y": 692 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 375, +"y": 0 +}, +{ +"x": 484, +"y": 0 +}, +{ +"x": 476, +"y": 59, +"type": "cubic" +}, +{ +"x": 474, +"y": 95, +"type": "cubic" +}, +{ +"x": 474, +"y": 135, +"smooth": true +}, +{ +"x": 474, +"y": 322, +"smooth": true +}, +{ +"x": 474, +"y": 347, +"type": "cubic" +}, +{ +"x": 473, +"y": 375, +"type": "cubic" +}, +{ +"x": 471, +"y": 397, +"smooth": true +}, +{ +"x": 462, +"y": 487, +"type": "cubic" +}, +{ +"x": 408, +"y": 545, +"type": "cubic" +}, +{ +"x": 271, +"y": 545, +"smooth": true +}, +{ +"x": 150, +"y": 545, +"type": "cubic" +}, +{ +"x": 63, +"y": 479, +"type": "cubic" +}, +{ +"x": 56, +"y": 363 +}, +{ +"x": 166, +"y": 363 +}, +{ +"x": 172, +"y": 429, +"type": "cubic" +}, +{ +"x": 205, +"y": 465, +"type": "cubic" +}, +{ +"x": 269, +"y": 465, +"smooth": true +}, +{ +"x": 332, +"y": 465, +"type": "cubic" +}, +{ +"x": 359, +"y": 435, +"type": "cubic" +}, +{ +"x": 362, +"y": 392, +"smooth": true +}, +{ +"x": 364, +"y": 372, +"type": "cubic" +}, +{ +"x": 364, +"y": 354, +"type": "cubic" +}, +{ +"x": 364, +"y": 334, +"smooth": true +}, +{ +"x": 364, +"y": 321 +}, +{ +"x": 330, +"y": 321, +"smooth": true +}, +{ +"x": 129, +"y": 321, +"type": "cubic" +}, +{ +"x": 35, +"y": 257, +"type": "cubic" +}, +{ +"x": 35, +"y": 139, +"smooth": true +}, +{ +"x": 35, +"y": 40, +"type": "cubic" +}, +{ +"x": 112, +"y": -14, +"type": "cubic" +}, +{ +"x": 206, +"y": -14, +"smooth": true +}, +{ +"x": 256, +"y": -14, +"type": "cubic" +}, +{ +"x": 302, +"y": -5, +"type": "cubic" +}, +{ +"x": 338, +"y": 20 +}, +{ +"x": 365, +"y": 77 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 246, +"y": 66, +"smooth": true +}, +{ +"x": 188, +"y": 66, +"type": "cubic" +}, +{ +"x": 151, +"y": 92, +"type": "cubic" +}, +{ +"x": 151, +"y": 148, +"smooth": true +}, +{ +"x": 151, +"y": 229, +"type": "cubic" +}, +{ +"x": 235, +"y": 258, +"type": "cubic" +}, +{ +"x": 364, +"y": 248 +}, +{ +"x": 364, +"y": 199, +"smooth": true +}, +{ +"x": 364, +"y": 113, +"type": "cubic" +}, +{ +"x": 315, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 545 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/amacron.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/amacron.json new file mode 100644 index 0000000000..c308ebd3ee --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/amacron.json @@ -0,0 +1,279 @@ +{ +"name": "amacron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 399, +"y": 600 +}, +{ +"x": 399, +"y": 663 +}, +{ +"x": 144, +"y": 663 +}, +{ +"x": 144, +"y": 600 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 375, +"y": 0 +}, +{ +"x": 484, +"y": 0 +}, +{ +"x": 476, +"y": 59, +"type": "cubic" +}, +{ +"x": 474, +"y": 95, +"type": "cubic" +}, +{ +"x": 474, +"y": 135, +"smooth": true +}, +{ +"x": 474, +"y": 322, +"smooth": true +}, +{ +"x": 474, +"y": 347, +"type": "cubic" +}, +{ +"x": 473, +"y": 375, +"type": "cubic" +}, +{ +"x": 471, +"y": 397, +"smooth": true +}, +{ +"x": 462, +"y": 487, +"type": "cubic" +}, +{ +"x": 408, +"y": 545, +"type": "cubic" +}, +{ +"x": 271, +"y": 545, +"smooth": true +}, +{ +"x": 150, +"y": 545, +"type": "cubic" +}, +{ +"x": 63, +"y": 479, +"type": "cubic" +}, +{ +"x": 56, +"y": 363 +}, +{ +"x": 166, +"y": 363 +}, +{ +"x": 172, +"y": 429, +"type": "cubic" +}, +{ +"x": 205, +"y": 465, +"type": "cubic" +}, +{ +"x": 269, +"y": 465, +"smooth": true +}, +{ +"x": 332, +"y": 465, +"type": "cubic" +}, +{ +"x": 359, +"y": 435, +"type": "cubic" +}, +{ +"x": 362, +"y": 392, +"smooth": true +}, +{ +"x": 364, +"y": 372, +"type": "cubic" +}, +{ +"x": 364, +"y": 354, +"type": "cubic" +}, +{ +"x": 364, +"y": 334, +"smooth": true +}, +{ +"x": 364, +"y": 321 +}, +{ +"x": 330, +"y": 321, +"smooth": true +}, +{ +"x": 129, +"y": 321, +"type": "cubic" +}, +{ +"x": 35, +"y": 257, +"type": "cubic" +}, +{ +"x": 35, +"y": 139, +"smooth": true +}, +{ +"x": 35, +"y": 40, +"type": "cubic" +}, +{ +"x": 112, +"y": -14, +"type": "cubic" +}, +{ +"x": 206, +"y": -14, +"smooth": true +}, +{ +"x": 256, +"y": -14, +"type": "cubic" +}, +{ +"x": 302, +"y": -5, +"type": "cubic" +}, +{ +"x": 338, +"y": 20 +}, +{ +"x": 365, +"y": 77 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 246, +"y": 66, +"smooth": true +}, +{ +"x": 188, +"y": 66, +"type": "cubic" +}, +{ +"x": 151, +"y": 92, +"type": "cubic" +}, +{ +"x": 151, +"y": 148, +"smooth": true +}, +{ +"x": 151, +"y": 229, +"type": "cubic" +}, +{ +"x": 235, +"y": 258, +"type": "cubic" +}, +{ +"x": 364, +"y": 248 +}, +{ +"x": 364, +"y": 199, +"smooth": true +}, +{ +"x": 364, +"y": 113, +"type": "cubic" +}, +{ +"x": 315, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 545 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ampersand.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ampersand.json new file mode 100644 index 0000000000..eec22b9dfd --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ampersand.json @@ -0,0 +1,283 @@ +{ +"name": "ampersand", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 640, +"y": 394 +}, +{ +"x": 545, +"y": 394 +}, +{ +"x": 545, +"y": 497 +}, +{ +"x": 435, +"y": 497 +}, +{ +"x": 435, +"y": 394 +}, +{ +"x": 386, +"y": 394, +"smooth": true +}, +{ +"x": 365, +"y": 394, +"type": "cubic" +}, +{ +"x": 343, +"y": 394, +"type": "cubic" +}, +{ +"x": 325, +"y": 395, +"smooth": true +}, +{ +"x": 260, +"y": 398, +"type": "cubic" +}, +{ +"x": 210, +"y": 425, +"type": "cubic" +}, +{ +"x": 210, +"y": 508, +"smooth": true +}, +{ +"x": 210, +"y": 578, +"type": "cubic" +}, +{ +"x": 257, +"y": 620, +"type": "cubic" +}, +{ +"x": 340, +"y": 620, +"smooth": true +}, +{ +"x": 385, +"y": 620, +"type": "cubic" +}, +{ +"x": 415, +"y": 618, +"type": "cubic" +}, +{ +"x": 456, +"y": 610 +}, +{ +"x": 456, +"y": 694 +}, +{ +"x": 421, +"y": 701, +"type": "cubic" +}, +{ +"x": 388, +"y": 704, +"type": "cubic" +}, +{ +"x": 341, +"y": 704, +"smooth": true +}, +{ +"x": 191, +"y": 704, +"type": "cubic" +}, +{ +"x": 91, +"y": 627, +"type": "cubic" +}, +{ +"x": 91, +"y": 507, +"smooth": true +}, +{ +"x": 91, +"y": 428, +"type": "cubic" +}, +{ +"x": 144, +"y": 372, +"type": "cubic" +}, +{ +"x": 220, +"y": 352 +}, +{ +"x": 121, +"y": 332, +"type": "cubic" +}, +{ +"x": 59, +"y": 262, +"type": "cubic" +}, +{ +"x": 59, +"y": 174, +"smooth": true +}, +{ +"x": 59, +"y": 28, +"type": "cubic" +}, +{ +"x": 174, +"y": -14, +"type": "cubic" +}, +{ +"x": 335, +"y": -14, +"smooth": true +}, +{ +"x": 412, +"y": -14, +"type": "cubic" +}, +{ +"x": 483, +"y": -5, +"type": "cubic" +}, +{ +"x": 545, +"y": 9 +}, +{ +"x": 545, +"y": 306 +}, +{ +"x": 640, +"y": 306 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 178, +"y": 190, +"smooth": true +}, +{ +"x": 178, +"y": 250, +"type": "cubic" +}, +{ +"x": 221, +"y": 296, +"type": "cubic" +}, +{ +"x": 323, +"y": 305, +"smooth": true +}, +{ +"x": 343, +"y": 306, +"type": "cubic" +}, +{ +"x": 360, +"y": 306, +"type": "cubic" +}, +{ +"x": 382, +"y": 306, +"smooth": true +}, +{ +"x": 435, +"y": 306 +}, +{ +"x": 435, +"y": 78 +}, +{ +"x": 400, +"y": 72, +"type": "cubic" +}, +{ +"x": 375, +"y": 70, +"type": "cubic" +}, +{ +"x": 337, +"y": 70, +"smooth": true +}, +{ +"x": 229, +"y": 70, +"type": "cubic" +}, +{ +"x": 178, +"y": 101, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 663 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/aogonek.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/aogonek.json new file mode 100644 index 0000000000..1e1ed17a7b --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/aogonek.json @@ -0,0 +1,350 @@ +{ +"name": "aogonek", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 371, +"y": -107, +"smooth": true +}, +{ +"x": 371, +"y": -50, +"type": "cubic" +}, +{ +"x": 409, +"y": -7, +"type": "cubic" +}, +{ +"x": 453, +"y": 0 +}, +{ +"x": 484, +"y": 0 +}, +{ +"x": 476, +"y": 59, +"type": "cubic" +}, +{ +"x": 474, +"y": 95, +"type": "cubic" +}, +{ +"x": 474, +"y": 135, +"smooth": true +}, +{ +"x": 474, +"y": 322, +"smooth": true +}, +{ +"x": 474, +"y": 347, +"type": "cubic" +}, +{ +"x": 473, +"y": 375, +"type": "cubic" +}, +{ +"x": 471, +"y": 397, +"smooth": true +}, +{ +"x": 462, +"y": 487, +"type": "cubic" +}, +{ +"x": 408, +"y": 545, +"type": "cubic" +}, +{ +"x": 271, +"y": 545, +"smooth": true +}, +{ +"x": 150, +"y": 545, +"type": "cubic" +}, +{ +"x": 63, +"y": 479, +"type": "cubic" +}, +{ +"x": 56, +"y": 363 +}, +{ +"x": 166, +"y": 363 +}, +{ +"x": 172, +"y": 429, +"type": "cubic" +}, +{ +"x": 205, +"y": 465, +"type": "cubic" +}, +{ +"x": 269, +"y": 465, +"smooth": true +}, +{ +"x": 332, +"y": 465, +"type": "cubic" +}, +{ +"x": 359, +"y": 435, +"type": "cubic" +}, +{ +"x": 362, +"y": 392, +"smooth": true +}, +{ +"x": 364, +"y": 372, +"type": "cubic" +}, +{ +"x": 364, +"y": 354, +"type": "cubic" +}, +{ +"x": 364, +"y": 334, +"smooth": true +}, +{ +"x": 364, +"y": 321 +}, +{ +"x": 330, +"y": 321, +"smooth": true +}, +{ +"x": 129, +"y": 321, +"type": "cubic" +}, +{ +"x": 35, +"y": 257, +"type": "cubic" +}, +{ +"x": 35, +"y": 139, +"smooth": true +}, +{ +"x": 35, +"y": 40, +"type": "cubic" +}, +{ +"x": 112, +"y": -14, +"type": "cubic" +}, +{ +"x": 206, +"y": -14, +"smooth": true +}, +{ +"x": 256, +"y": -14, +"type": "cubic" +}, +{ +"x": 302, +"y": -5, +"type": "cubic" +}, +{ +"x": 338, +"y": 20 +}, +{ +"x": 365, +"y": 77 +}, +{ +"x": 374, +"y": 9 +}, +{ +"x": 319, +"y": -14, +"type": "cubic" +}, +{ +"x": 269, +"y": -67, +"type": "cubic" +}, +{ +"x": 269, +"y": -138, +"smooth": true +}, +{ +"x": 269, +"y": -201, +"type": "cubic" +}, +{ +"x": 309, +"y": -223, +"type": "cubic" +}, +{ +"x": 367, +"y": -223, +"smooth": true +}, +{ +"x": 408, +"y": -223, +"type": "cubic" +}, +{ +"x": 442, +"y": -212, +"type": "cubic" +}, +{ +"x": 468, +"y": -192 +}, +{ +"x": 468, +"y": -137 +}, +{ +"x": 450, +"y": -151, +"type": "cubic" +}, +{ +"x": 433, +"y": -157, +"type": "cubic" +}, +{ +"x": 415, +"y": -157, +"smooth": true +}, +{ +"x": 388, +"y": -157, +"type": "cubic" +}, +{ +"x": 371, +"y": -144, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 246, +"y": 66, +"smooth": true +}, +{ +"x": 188, +"y": 66, +"type": "cubic" +}, +{ +"x": 151, +"y": 92, +"type": "cubic" +}, +{ +"x": 151, +"y": 148, +"smooth": true +}, +{ +"x": 151, +"y": 229, +"type": "cubic" +}, +{ +"x": 235, +"y": 258, +"type": "cubic" +}, +{ +"x": 364, +"y": 248 +}, +{ +"x": 364, +"y": 199, +"smooth": true +}, +{ +"x": 364, +"y": 113, +"type": "cubic" +}, +{ +"x": 315, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 545 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/approxequal.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/approxequal.json new file mode 100644 index 0000000000..0a1bebf406 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/approxequal.json @@ -0,0 +1,283 @@ +{ +"name": "approxequal", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 195, +"y": 453, +"smooth": true +}, +{ +"x": 142, +"y": 453, +"type": "cubic" +}, +{ +"x": 105, +"y": 431, +"type": "cubic" +}, +{ +"x": 70, +"y": 376 +}, +{ +"x": 117, +"y": 332 +}, +{ +"x": 139, +"y": 366, +"type": "cubic" +}, +{ +"x": 161, +"y": 381, +"type": "cubic" +}, +{ +"x": 192, +"y": 381, +"smooth": true +}, +{ +"x": 220, +"y": 381, +"type": "cubic" +}, +{ +"x": 244, +"y": 368, +"type": "cubic" +}, +{ +"x": 286, +"y": 346, +"smooth": true +}, +{ +"x": 339, +"y": 317, +"type": "cubic" +}, +{ +"x": 364, +"y": 305, +"type": "cubic" +}, +{ +"x": 404, +"y": 305, +"smooth": true +}, +{ +"x": 458, +"y": 305, +"type": "cubic" +}, +{ +"x": 495, +"y": 329, +"type": "cubic" +}, +{ +"x": 530, +"y": 384 +}, +{ +"x": 483, +"y": 425 +}, +{ +"x": 461, +"y": 392, +"type": "cubic" +}, +{ +"x": 439, +"y": 377, +"type": "cubic" +}, +{ +"x": 408, +"y": 377, +"smooth": true +}, +{ +"x": 380, +"y": 377, +"type": "cubic" +}, +{ +"x": 356, +"y": 389, +"type": "cubic" +}, +{ +"x": 313, +"y": 412, +"smooth": true +}, +{ +"x": 261, +"y": 440, +"type": "cubic" +}, +{ +"x": 235, +"y": 453, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 195, +"y": 283, +"smooth": true +}, +{ +"x": 142, +"y": 283, +"type": "cubic" +}, +{ +"x": 105, +"y": 261, +"type": "cubic" +}, +{ +"x": 70, +"y": 206 +}, +{ +"x": 117, +"y": 162 +}, +{ +"x": 139, +"y": 196, +"type": "cubic" +}, +{ +"x": 161, +"y": 211, +"type": "cubic" +}, +{ +"x": 192, +"y": 211, +"smooth": true +}, +{ +"x": 220, +"y": 211, +"type": "cubic" +}, +{ +"x": 244, +"y": 198, +"type": "cubic" +}, +{ +"x": 286, +"y": 176, +"smooth": true +}, +{ +"x": 339, +"y": 147, +"type": "cubic" +}, +{ +"x": 364, +"y": 135, +"type": "cubic" +}, +{ +"x": 404, +"y": 135, +"smooth": true +}, +{ +"x": 458, +"y": 135, +"type": "cubic" +}, +{ +"x": 495, +"y": 159, +"type": "cubic" +}, +{ +"x": 530, +"y": 214 +}, +{ +"x": 483, +"y": 255 +}, +{ +"x": 461, +"y": 222, +"type": "cubic" +}, +{ +"x": 439, +"y": 207, +"type": "cubic" +}, +{ +"x": 408, +"y": 207, +"smooth": true +}, +{ +"x": 380, +"y": 207, +"type": "cubic" +}, +{ +"x": 356, +"y": 219, +"type": "cubic" +}, +{ +"x": 313, +"y": 242, +"smooth": true +}, +{ +"x": 261, +"y": 270, +"type": "cubic" +}, +{ +"x": 235, +"y": 283, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/aring.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/aring.json new file mode 100644 index 0000000000..211dfadbc9 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/aring.json @@ -0,0 +1,388 @@ +{ +"name": "aring", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 271, +"y": 566, +"smooth": true +}, +{ +"x": 328, +"y": 566, +"type": "cubic" +}, +{ +"x": 369, +"y": 603, +"type": "cubic" +}, +{ +"x": 369, +"y": 655, +"smooth": true +}, +{ +"x": 369, +"y": 708, +"type": "cubic" +}, +{ +"x": 328, +"y": 745, +"type": "cubic" +}, +{ +"x": 271, +"y": 745, +"smooth": true +}, +{ +"x": 214, +"y": 745, +"type": "cubic" +}, +{ +"x": 173, +"y": 708, +"type": "cubic" +}, +{ +"x": 173, +"y": 655, +"smooth": true +}, +{ +"x": 173, +"y": 603, +"type": "cubic" +}, +{ +"x": 214, +"y": 566, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 271, +"y": 702, +"smooth": true +}, +{ +"x": 294, +"y": 702, +"type": "cubic" +}, +{ +"x": 311, +"y": 684, +"type": "cubic" +}, +{ +"x": 311, +"y": 655, +"smooth": true +}, +{ +"x": 311, +"y": 626, +"type": "cubic" +}, +{ +"x": 294, +"y": 609, +"type": "cubic" +}, +{ +"x": 271, +"y": 609, +"smooth": true +}, +{ +"x": 248, +"y": 609, +"type": "cubic" +}, +{ +"x": 231, +"y": 626, +"type": "cubic" +}, +{ +"x": 231, +"y": 655, +"smooth": true +}, +{ +"x": 231, +"y": 684, +"type": "cubic" +}, +{ +"x": 248, +"y": 702, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 375, +"y": 0 +}, +{ +"x": 484, +"y": 0 +}, +{ +"x": 476, +"y": 59, +"type": "cubic" +}, +{ +"x": 474, +"y": 95, +"type": "cubic" +}, +{ +"x": 474, +"y": 135, +"smooth": true +}, +{ +"x": 474, +"y": 322, +"smooth": true +}, +{ +"x": 474, +"y": 347, +"type": "cubic" +}, +{ +"x": 473, +"y": 375, +"type": "cubic" +}, +{ +"x": 471, +"y": 397, +"smooth": true +}, +{ +"x": 462, +"y": 487, +"type": "cubic" +}, +{ +"x": 408, +"y": 545, +"type": "cubic" +}, +{ +"x": 271, +"y": 545, +"smooth": true +}, +{ +"x": 150, +"y": 545, +"type": "cubic" +}, +{ +"x": 63, +"y": 479, +"type": "cubic" +}, +{ +"x": 56, +"y": 363 +}, +{ +"x": 166, +"y": 363 +}, +{ +"x": 172, +"y": 429, +"type": "cubic" +}, +{ +"x": 205, +"y": 465, +"type": "cubic" +}, +{ +"x": 269, +"y": 465, +"smooth": true +}, +{ +"x": 332, +"y": 465, +"type": "cubic" +}, +{ +"x": 359, +"y": 435, +"type": "cubic" +}, +{ +"x": 362, +"y": 392, +"smooth": true +}, +{ +"x": 364, +"y": 372, +"type": "cubic" +}, +{ +"x": 364, +"y": 354, +"type": "cubic" +}, +{ +"x": 364, +"y": 334, +"smooth": true +}, +{ +"x": 364, +"y": 321 +}, +{ +"x": 330, +"y": 321, +"smooth": true +}, +{ +"x": 129, +"y": 321, +"type": "cubic" +}, +{ +"x": 35, +"y": 257, +"type": "cubic" +}, +{ +"x": 35, +"y": 139, +"smooth": true +}, +{ +"x": 35, +"y": 40, +"type": "cubic" +}, +{ +"x": 112, +"y": -14, +"type": "cubic" +}, +{ +"x": 206, +"y": -14, +"smooth": true +}, +{ +"x": 256, +"y": -14, +"type": "cubic" +}, +{ +"x": 302, +"y": -5, +"type": "cubic" +}, +{ +"x": 338, +"y": 20 +}, +{ +"x": 365, +"y": 77 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 246, +"y": 66, +"smooth": true +}, +{ +"x": 188, +"y": 66, +"type": "cubic" +}, +{ +"x": 151, +"y": 92, +"type": "cubic" +}, +{ +"x": 151, +"y": 148, +"smooth": true +}, +{ +"x": 151, +"y": 229, +"type": "cubic" +}, +{ +"x": 235, +"y": 258, +"type": "cubic" +}, +{ +"x": 364, +"y": 248 +}, +{ +"x": 364, +"y": 199, +"smooth": true +}, +{ +"x": 364, +"y": 113, +"type": "cubic" +}, +{ +"x": 315, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 545 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/asciicircum.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/asciicircum.json new file mode 100644 index 0000000000..d6a48f0985 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/asciicircum.json @@ -0,0 +1,54 @@ +{ +"name": "asciicircum", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 435, +"y": 215 +}, +{ +"x": 514, +"y": 215 +}, +{ +"x": 340, +"y": 616 +}, +{ +"x": 260, +"y": 616 +}, +{ +"x": 86, +"y": 215 +}, +{ +"x": 166, +"y": 215 +}, +{ +"x": 301, +"y": 550 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/asciitilde.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/asciitilde.json new file mode 100644 index 0000000000..ed5f413a1a --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/asciitilde.json @@ -0,0 +1,152 @@ +{ +"name": "asciitilde", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 455, +"y": 369 +}, +{ +"x": 455, +"y": 319, +"type": "cubic" +}, +{ +"x": 443, +"y": 293, +"type": "cubic" +}, +{ +"x": 407, +"y": 293, +"smooth": true +}, +{ +"x": 380, +"y": 293, +"type": "cubic" +}, +{ +"x": 353, +"y": 307, +"type": "cubic" +}, +{ +"x": 314, +"y": 328, +"smooth": true +}, +{ +"x": 263, +"y": 355, +"type": "cubic" +}, +{ +"x": 236, +"y": 369, +"type": "cubic" +}, +{ +"x": 195, +"y": 369, +"smooth": true +}, +{ +"x": 118, +"y": 369, +"type": "cubic" +}, +{ +"x": 80, +"y": 319, +"type": "cubic" +}, +{ +"x": 80, +"y": 223 +}, +{ +"x": 146, +"y": 223 +}, +{ +"x": 146, +"y": 271, +"type": "cubic" +}, +{ +"x": 157, +"y": 299, +"type": "cubic" +}, +{ +"x": 194, +"y": 299, +"smooth": true +}, +{ +"x": 220, +"y": 299, +"type": "cubic" +}, +{ +"x": 246, +"y": 286, +"type": "cubic" +}, +{ +"x": 287, +"y": 264, +"smooth": true +}, +{ +"x": 338, +"y": 237, +"type": "cubic" +}, +{ +"x": 365, +"y": 223, +"type": "cubic" +}, +{ +"x": 405, +"y": 223, +"smooth": true +}, +{ +"x": 482, +"y": 223, +"type": "cubic" +}, +{ +"x": 521, +"y": 273, +"type": "cubic" +}, +{ +"x": 521, +"y": 369 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/asterisk.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/asterisk.json new file mode 100644 index 0000000000..151a97765c --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/asterisk.json @@ -0,0 +1,86 @@ +{ +"name": "asterisk", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 316, +"y": 305 +}, +{ +"x": 327, +"y": 475 +}, +{ +"x": 251, +"y": 475 +}, +{ +"x": 262, +"y": 305 +}, +{ +"x": 115, +"y": 364 +}, +{ +"x": 92, +"y": 292 +}, +{ +"x": 245, +"y": 254 +}, +{ +"x": 135, +"y": 123 +}, +{ +"x": 196, +"y": 78 +}, +{ +"x": 289, +"y": 224 +}, +{ +"x": 382, +"y": 78 +}, +{ +"x": 443, +"y": 123 +}, +{ +"x": 333, +"y": 254 +}, +{ +"x": 486, +"y": 292 +}, +{ +"x": 463, +"y": 364 +} +], +"isClosed": true +} +] +}, +"xAdvance": 578 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/at.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/at.json new file mode 100644 index 0000000000..1af816f00c --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/at.json @@ -0,0 +1,373 @@ +{ +"name": "at", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 651, +"y": 467 +}, +{ +"x": 553, +"y": 467 +}, +{ +"x": 534, +"y": 403 +}, +{ +"x": 524, +"y": 455 +}, +{ +"x": 507, +"y": 474, +"type": "cubic" +}, +{ +"x": 475, +"y": 485, +"type": "cubic" +}, +{ +"x": 439, +"y": 485, +"smooth": true +}, +{ +"x": 315, +"y": 485, +"type": "cubic" +}, +{ +"x": 229, +"y": 366, +"type": "cubic" +}, +{ +"x": 229, +"y": 232, +"smooth": true +}, +{ +"x": 229, +"y": 108, +"type": "cubic" +}, +{ +"x": 303, +"y": 69, +"type": "cubic" +}, +{ +"x": 369, +"y": 69, +"smooth": true +}, +{ +"x": 403, +"y": 69, +"type": "cubic" +}, +{ +"x": 434, +"y": 80, +"type": "cubic" +}, +{ +"x": 466, +"y": 106 +}, +{ +"x": 489, +"y": 153 +}, +{ +"x": 501, +"y": 97, +"type": "cubic" +}, +{ +"x": 544, +"y": 73, +"type": "cubic" +}, +{ +"x": 602, +"y": 73, +"smooth": true +}, +{ +"x": 707, +"y": 73, +"type": "cubic" +}, +{ +"x": 815, +"y": 149, +"type": "cubic" +}, +{ +"x": 815, +"y": 336, +"smooth": true +}, +{ +"x": 815, +"y": 530, +"type": "cubic" +}, +{ +"x": 683, +"y": 674, +"type": "cubic" +}, +{ +"x": 478, +"y": 674, +"smooth": true +}, +{ +"x": 259, +"y": 674, +"type": "cubic" +}, +{ +"x": 52, +"y": 508, +"type": "cubic" +}, +{ +"x": 52, +"y": 245, +"smooth": true +}, +{ +"x": 52, +"y": -1, +"type": "cubic" +}, +{ +"x": 229, +"y": -112, +"type": "cubic" +}, +{ +"x": 407, +"y": -112, +"smooth": true +}, +{ +"x": 489, +"y": -112, +"type": "cubic" +}, +{ +"x": 590, +"y": -89, +"type": "cubic" +}, +{ +"x": 684, +"y": -26 +}, +{ +"x": 657, +"y": 32 +}, +{ +"x": 587, +"y": -19, +"type": "cubic" +}, +{ +"x": 495, +"y": -44, +"type": "cubic" +}, +{ +"x": 413, +"y": -44, +"smooth": true +}, +{ +"x": 247, +"y": -44, +"type": "cubic" +}, +{ +"x": 125, +"y": 57, +"type": "cubic" +}, +{ +"x": 125, +"y": 248, +"smooth": true +}, +{ +"x": 125, +"y": 476, +"type": "cubic" +}, +{ +"x": 305, +"y": 606, +"type": "cubic" +}, +{ +"x": 475, +"y": 606, +"smooth": true +}, +{ +"x": 625, +"y": 606, +"type": "cubic" +}, +{ +"x": 742, +"y": 512, +"type": "cubic" +}, +{ +"x": 742, +"y": 332, +"smooth": true +}, +{ +"x": 742, +"y": 203, +"type": "cubic" +}, +{ +"x": 684, +"y": 141, +"type": "cubic" +}, +{ +"x": 627, +"y": 141, +"smooth": true +}, +{ +"x": 595, +"y": 141, +"type": "cubic" +}, +{ +"x": 588, +"y": 161, +"type": "cubic" +}, +{ +"x": 588, +"y": 184, +"smooth": true +}, +{ +"x": 588, +"y": 195, +"type": "cubic" +}, +{ +"x": 589, +"y": 208, +"type": "cubic" +}, +{ +"x": 596, +"y": 236, +"smooth": true +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 496, +"y": 250, +"smooth": true +}, +{ +"x": 484, +"y": 198, +"type": "cubic" +}, +{ +"x": 448, +"y": 149, +"type": "cubic" +}, +{ +"x": 400, +"y": 149, +"smooth": true +}, +{ +"x": 366, +"y": 149, +"type": "cubic" +}, +{ +"x": 341, +"y": 173, +"type": "cubic" +}, +{ +"x": 341, +"y": 239, +"smooth": true +}, +{ +"x": 341, +"y": 325, +"type": "cubic" +}, +{ +"x": 384, +"y": 405, +"type": "cubic" +}, +{ +"x": 454, +"y": 405, +"smooth": true +}, +{ +"x": 496, +"y": 405, +"type": "cubic" +}, +{ +"x": 525, +"y": 376, +"type": "cubic" +}, +{ +"x": 507, +"y": 297, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 872 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/atilde.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/atilde.json new file mode 100644 index 0000000000..62e43bda93 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/atilde.json @@ -0,0 +1,389 @@ +{ +"name": "atilde", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 219, +"y": 616, +"smooth": true +}, +{ +"x": 228, +"y": 616, +"type": "cubic" +}, +{ +"x": 239, +"y": 613, +"type": "cubic" +}, +{ +"x": 263, +"y": 604, +"smooth": true +}, +{ +"x": 293, +"y": 594, +"type": "cubic" +}, +{ +"x": 309, +"y": 590, +"type": "cubic" +}, +{ +"x": 330, +"y": 590, +"smooth": true +}, +{ +"x": 370, +"y": 590, +"type": "cubic" +}, +{ +"x": 392, +"y": 611, +"type": "cubic" +}, +{ +"x": 392, +"y": 677 +}, +{ +"x": 339, +"y": 677 +}, +{ +"x": 339, +"y": 660, +"type": "cubic" +}, +{ +"x": 334, +"y": 654, +"type": "cubic" +}, +{ +"x": 323, +"y": 654, +"smooth": true +}, +{ +"x": 315, +"y": 654, +"type": "cubic" +}, +{ +"x": 303, +"y": 657, +"type": "cubic" +}, +{ +"x": 279, +"y": 666, +"smooth": true +}, +{ +"x": 250, +"y": 677, +"type": "cubic" +}, +{ +"x": 234, +"y": 680, +"type": "cubic" +}, +{ +"x": 212, +"y": 680, +"smooth": true +}, +{ +"x": 173, +"y": 680, +"type": "cubic" +}, +{ +"x": 151, +"y": 659, +"type": "cubic" +}, +{ +"x": 151, +"y": 594 +}, +{ +"x": 203, +"y": 594 +}, +{ +"x": 203, +"y": 610, +"type": "cubic" +}, +{ +"x": 209, +"y": 616, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 375, +"y": 0 +}, +{ +"x": 484, +"y": 0 +}, +{ +"x": 476, +"y": 59, +"type": "cubic" +}, +{ +"x": 474, +"y": 95, +"type": "cubic" +}, +{ +"x": 474, +"y": 135, +"smooth": true +}, +{ +"x": 474, +"y": 322, +"smooth": true +}, +{ +"x": 474, +"y": 347, +"type": "cubic" +}, +{ +"x": 473, +"y": 375, +"type": "cubic" +}, +{ +"x": 471, +"y": 397, +"smooth": true +}, +{ +"x": 462, +"y": 487, +"type": "cubic" +}, +{ +"x": 408, +"y": 545, +"type": "cubic" +}, +{ +"x": 271, +"y": 545, +"smooth": true +}, +{ +"x": 150, +"y": 545, +"type": "cubic" +}, +{ +"x": 63, +"y": 479, +"type": "cubic" +}, +{ +"x": 56, +"y": 363 +}, +{ +"x": 166, +"y": 363 +}, +{ +"x": 172, +"y": 429, +"type": "cubic" +}, +{ +"x": 205, +"y": 465, +"type": "cubic" +}, +{ +"x": 269, +"y": 465, +"smooth": true +}, +{ +"x": 332, +"y": 465, +"type": "cubic" +}, +{ +"x": 359, +"y": 435, +"type": "cubic" +}, +{ +"x": 362, +"y": 392, +"smooth": true +}, +{ +"x": 364, +"y": 372, +"type": "cubic" +}, +{ +"x": 364, +"y": 354, +"type": "cubic" +}, +{ +"x": 364, +"y": 334, +"smooth": true +}, +{ +"x": 364, +"y": 321 +}, +{ +"x": 330, +"y": 321, +"smooth": true +}, +{ +"x": 129, +"y": 321, +"type": "cubic" +}, +{ +"x": 35, +"y": 257, +"type": "cubic" +}, +{ +"x": 35, +"y": 139, +"smooth": true +}, +{ +"x": 35, +"y": 40, +"type": "cubic" +}, +{ +"x": 112, +"y": -14, +"type": "cubic" +}, +{ +"x": 206, +"y": -14, +"smooth": true +}, +{ +"x": 256, +"y": -14, +"type": "cubic" +}, +{ +"x": 302, +"y": -5, +"type": "cubic" +}, +{ +"x": 338, +"y": 20 +}, +{ +"x": 365, +"y": 77 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 246, +"y": 66, +"smooth": true +}, +{ +"x": 188, +"y": 66, +"type": "cubic" +}, +{ +"x": 151, +"y": 92, +"type": "cubic" +}, +{ +"x": 151, +"y": 148, +"smooth": true +}, +{ +"x": 151, +"y": 229, +"type": "cubic" +}, +{ +"x": 235, +"y": 258, +"type": "cubic" +}, +{ +"x": 364, +"y": 248 +}, +{ +"x": 364, +"y": 199, +"smooth": true +}, +{ +"x": 364, +"y": 113, +"type": "cubic" +}, +{ +"x": 315, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 545 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/b.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/b.json new file mode 100644 index 0000000000..aefaa6a4ed --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/b.json @@ -0,0 +1,183 @@ +{ +"name": "b", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 358, +"y": 545, +"smooth": true +}, +{ +"x": 304, +"y": 545, +"type": "cubic" +}, +{ +"x": 249, +"y": 530, +"type": "cubic" +}, +{ +"x": 219, +"y": 505 +}, +{ +"x": 179, +"y": 448 +}, +{ +"x": 179, +"y": 735 +}, +{ +"x": 69, +"y": 735 +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 72 +}, +{ +"x": 214, +"y": 19 +}, +{ +"x": 241, +"y": -2, +"type": "cubic" +}, +{ +"x": 296, +"y": -14, +"type": "cubic" +}, +{ +"x": 340, +"y": -14, +"smooth": true +}, +{ +"x": 477, +"y": -14, +"type": "cubic" +}, +{ +"x": 597, +"y": 80, +"type": "cubic" +}, +{ +"x": 597, +"y": 275, +"smooth": true +}, +{ +"x": 597, +"y": 430, +"type": "cubic" +}, +{ +"x": 510, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 327, +"y": 66, +"smooth": true +}, +{ +"x": 257, +"y": 66, +"type": "cubic" +}, +{ +"x": 179, +"y": 114, +"type": "cubic" +}, +{ +"x": 179, +"y": 244, +"smooth": true +}, +{ +"x": 179, +"y": 271, +"smooth": true +}, +{ +"x": 179, +"y": 413, +"type": "cubic" +}, +{ +"x": 250, +"y": 465, +"type": "cubic" +}, +{ +"x": 332, +"y": 465, +"smooth": true +}, +{ +"x": 428, +"y": 465, +"type": "cubic" +}, +{ +"x": 481, +"y": 380, +"type": "cubic" +}, +{ +"x": 481, +"y": 265, +"smooth": true +}, +{ +"x": 481, +"y": 133, +"type": "cubic" +}, +{ +"x": 415, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 626 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/backslash.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/backslash.json new file mode 100644 index 0000000000..e0296f12e1 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/backslash.json @@ -0,0 +1,42 @@ +{ +"name": "backslash", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 319, +"y": -30 +}, +{ +"x": 68, +"y": 720 +}, +{ +"x": -5, +"y": 720 +}, +{ +"x": 246, +"y": -30 +} +], +"isClosed": true +} +] +}, +"xAdvance": 314 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/bar.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/bar.json new file mode 100644 index 0000000000..ff4895636b --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/bar.json @@ -0,0 +1,42 @@ +{ +"name": "bar", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 169, +"y": -200 +}, +{ +"x": 169, +"y": 800 +}, +{ +"x": 97, +"y": 800 +}, +{ +"x": 97, +"y": -200 +} +], +"isClosed": true +} +] +}, +"xAdvance": 266 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/braceleft.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/braceleft.json new file mode 100644 index 0000000000..d83bf99633 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/braceleft.json @@ -0,0 +1,294 @@ +{ +"name": "braceleft", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 293, +"y": 714 +}, +{ +"x": 293, +"y": 780 +}, +{ +"x": 272, +"y": 780, +"smooth": true +}, +{ +"x": 182, +"y": 780, +"type": "cubic" +}, +{ +"x": 136, +"y": 753, +"type": "cubic" +}, +{ +"x": 136, +"y": 672, +"smooth": true +}, +{ +"x": 136, +"y": 647, +"type": "cubic" +}, +{ +"x": 138, +"y": 626, +"type": "cubic" +}, +{ +"x": 148, +"y": 560, +"smooth": true +}, +{ +"x": 155, +"y": 509, +"type": "cubic" +}, +{ +"x": 158, +"y": 482, +"type": "cubic" +}, +{ +"x": 158, +"y": 455, +"smooth": true +}, +{ +"x": 158, +"y": 416, +"type": "cubic" +}, +{ +"x": 139, +"y": 389, +"type": "cubic" +}, +{ +"x": 76, +"y": 383 +}, +{ +"x": 76, +"y": 317 +}, +{ +"x": 139, +"y": 312, +"type": "cubic" +}, +{ +"x": 158, +"y": 285, +"type": "cubic" +}, +{ +"x": 158, +"y": 245, +"smooth": true +}, +{ +"x": 158, +"y": 218, +"type": "cubic" +}, +{ +"x": 155, +"y": 191, +"type": "cubic" +}, +{ +"x": 148, +"y": 140, +"smooth": true +}, +{ +"x": 138, +"y": 74, +"type": "cubic" +}, +{ +"x": 136, +"y": 53, +"type": "cubic" +}, +{ +"x": 136, +"y": 29, +"smooth": true +}, +{ +"x": 136, +"y": -53, +"type": "cubic" +}, +{ +"x": 182, +"y": -80, +"type": "cubic" +}, +{ +"x": 272, +"y": -80, +"smooth": true +}, +{ +"x": 293, +"y": -80 +}, +{ +"x": 293, +"y": -14 +}, +{ +"x": 278, +"y": -14, +"smooth": true +}, +{ +"x": 222, +"y": -14, +"type": "cubic" +}, +{ +"x": 204, +"y": 1, +"type": "cubic" +}, +{ +"x": 204, +"y": 33, +"smooth": true +}, +{ +"x": 204, +"y": 54, +"type": "cubic" +}, +{ +"x": 206, +"y": 69, +"type": "cubic" +}, +{ +"x": 215, +"y": 130, +"smooth": true +}, +{ +"x": 224, +"y": 194, +"type": "cubic" +}, +{ +"x": 228, +"y": 221, +"type": "cubic" +}, +{ +"x": 228, +"y": 248, +"smooth": true +}, +{ +"x": 228, +"y": 305, +"type": "cubic" +}, +{ +"x": 197, +"y": 342, +"type": "cubic" +}, +{ +"x": 143, +"y": 351 +}, +{ +"x": 198, +"y": 361, +"type": "cubic" +}, +{ +"x": 228, +"y": 396, +"type": "cubic" +}, +{ +"x": 228, +"y": 452, +"smooth": true +}, +{ +"x": 228, +"y": 479, +"type": "cubic" +}, +{ +"x": 224, +"y": 506, +"type": "cubic" +}, +{ +"x": 215, +"y": 570, +"smooth": true +}, +{ +"x": 206, +"y": 632, +"type": "cubic" +}, +{ +"x": 204, +"y": 647, +"type": "cubic" +}, +{ +"x": 204, +"y": 667, +"smooth": true +}, +{ +"x": 204, +"y": 699, +"type": "cubic" +}, +{ +"x": 222, +"y": 714, +"type": "cubic" +}, +{ +"x": 278, +"y": 714, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 335 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/braceright.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/braceright.json new file mode 100644 index 0000000000..5c296597c1 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/braceright.json @@ -0,0 +1,294 @@ +{ +"name": "braceright", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 259, +"y": 383 +}, +{ +"x": 196, +"y": 389, +"type": "cubic" +}, +{ +"x": 177, +"y": 416, +"type": "cubic" +}, +{ +"x": 177, +"y": 455, +"smooth": true +}, +{ +"x": 177, +"y": 482, +"type": "cubic" +}, +{ +"x": 180, +"y": 509, +"type": "cubic" +}, +{ +"x": 187, +"y": 560, +"smooth": true +}, +{ +"x": 197, +"y": 626, +"type": "cubic" +}, +{ +"x": 199, +"y": 647, +"type": "cubic" +}, +{ +"x": 199, +"y": 672, +"smooth": true +}, +{ +"x": 199, +"y": 753, +"type": "cubic" +}, +{ +"x": 153, +"y": 780, +"type": "cubic" +}, +{ +"x": 63, +"y": 780, +"smooth": true +}, +{ +"x": 42, +"y": 780 +}, +{ +"x": 42, +"y": 714 +}, +{ +"x": 57, +"y": 714, +"smooth": true +}, +{ +"x": 113, +"y": 714, +"type": "cubic" +}, +{ +"x": 131, +"y": 699, +"type": "cubic" +}, +{ +"x": 131, +"y": 667, +"smooth": true +}, +{ +"x": 131, +"y": 647, +"type": "cubic" +}, +{ +"x": 129, +"y": 632, +"type": "cubic" +}, +{ +"x": 120, +"y": 570, +"smooth": true +}, +{ +"x": 111, +"y": 506, +"type": "cubic" +}, +{ +"x": 107, +"y": 479, +"type": "cubic" +}, +{ +"x": 107, +"y": 452, +"smooth": true +}, +{ +"x": 107, +"y": 396, +"type": "cubic" +}, +{ +"x": 138, +"y": 358, +"type": "cubic" +}, +{ +"x": 192, +"y": 349 +}, +{ +"x": 137, +"y": 340, +"type": "cubic" +}, +{ +"x": 107, +"y": 305, +"type": "cubic" +}, +{ +"x": 107, +"y": 248, +"smooth": true +}, +{ +"x": 107, +"y": 221, +"type": "cubic" +}, +{ +"x": 111, +"y": 194, +"type": "cubic" +}, +{ +"x": 120, +"y": 130, +"smooth": true +}, +{ +"x": 129, +"y": 69, +"type": "cubic" +}, +{ +"x": 131, +"y": 54, +"type": "cubic" +}, +{ +"x": 131, +"y": 33, +"smooth": true +}, +{ +"x": 131, +"y": 1, +"type": "cubic" +}, +{ +"x": 113, +"y": -14, +"type": "cubic" +}, +{ +"x": 57, +"y": -14, +"smooth": true +}, +{ +"x": 42, +"y": -14 +}, +{ +"x": 42, +"y": -80 +}, +{ +"x": 63, +"y": -80, +"smooth": true +}, +{ +"x": 153, +"y": -80, +"type": "cubic" +}, +{ +"x": 199, +"y": -53, +"type": "cubic" +}, +{ +"x": 199, +"y": 29, +"smooth": true +}, +{ +"x": 199, +"y": 53, +"type": "cubic" +}, +{ +"x": 197, +"y": 74, +"type": "cubic" +}, +{ +"x": 187, +"y": 140, +"smooth": true +}, +{ +"x": 180, +"y": 191, +"type": "cubic" +}, +{ +"x": 177, +"y": 218, +"type": "cubic" +}, +{ +"x": 177, +"y": 245, +"smooth": true +}, +{ +"x": 177, +"y": 285, +"type": "cubic" +}, +{ +"x": 196, +"y": 312, +"type": "cubic" +}, +{ +"x": 259, +"y": 317 +} +], +"isClosed": true +} +] +}, +"xAdvance": 335 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/bracketleft.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/bracketleft.json new file mode 100644 index 0000000000..c987794b91 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/bracketleft.json @@ -0,0 +1,58 @@ +{ +"name": "bracketleft", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 291, +"y": 780 +}, +{ +"x": 101, +"y": 780 +}, +{ +"x": 101, +"y": -80 +}, +{ +"x": 291, +"y": -80 +}, +{ +"x": 291, +"y": -14 +}, +{ +"x": 169, +"y": -14 +}, +{ +"x": 169, +"y": 714 +}, +{ +"x": 291, +"y": 714 +} +], +"isClosed": true +} +] +}, +"xAdvance": 333 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/bracketright.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/bracketright.json new file mode 100644 index 0000000000..c89add725f --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/bracketright.json @@ -0,0 +1,58 @@ +{ +"name": "bracketright", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 223, +"y": -80 +}, +{ +"x": 223, +"y": 780 +}, +{ +"x": 33, +"y": 780 +}, +{ +"x": 33, +"y": 714 +}, +{ +"x": 155, +"y": 714 +}, +{ +"x": 155, +"y": -14 +}, +{ +"x": 33, +"y": -14 +}, +{ +"x": 33, +"y": -80 +} +], +"isClosed": true +} +] +}, +"xAdvance": 324 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/breve.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/breve.json new file mode 100644 index 0000000000..0f5b64d5b0 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/breve.json @@ -0,0 +1,92 @@ +{ +"name": "breve", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 198, +"y": 692 +}, +{ +"x": 197, +"y": 646, +"type": "cubic" +}, +{ +"x": 179, +"y": 629, +"type": "cubic" +}, +{ +"x": 150, +"y": 629, +"smooth": true +}, +{ +"x": 121, +"y": 629, +"type": "cubic" +}, +{ +"x": 103, +"y": 646, +"type": "cubic" +}, +{ +"x": 102, +"y": 692 +}, +{ +"x": 40, +"y": 692 +}, +{ +"x": 40, +"y": 605, +"type": "cubic" +}, +{ +"x": 78, +"y": 567, +"type": "cubic" +}, +{ +"x": 150, +"y": 567, +"smooth": true +}, +{ +"x": 221, +"y": 567, +"type": "cubic" +}, +{ +"x": 260, +"y": 605, +"type": "cubic" +}, +{ +"x": 260, +"y": 692 +} +], +"isClosed": true +} +] +}, +"xAdvance": 300 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/brokenbar.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/brokenbar.json new file mode 100644 index 0000000000..bcc29c205b --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/brokenbar.json @@ -0,0 +1,63 @@ +{ +"name": "brokenbar", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 165, +"y": 350 +}, +{ +"x": 165, +"y": 690 +}, +{ +"x": 97, +"y": 690 +}, +{ +"x": 97, +"y": 350 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 165, +"y": -160 +}, +{ +"x": 165, +"y": 180 +}, +{ +"x": 97, +"y": 180 +}, +{ +"x": 97, +"y": -160 +} +], +"isClosed": true +} +] +}, +"xAdvance": 262 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/bullet.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/bullet.json new file mode 100644 index 0000000000..eb46c0d6dd --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/bullet.json @@ -0,0 +1,86 @@ +{ +"name": "bullet", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 186, +"y": 416, +"smooth": true +}, +{ +"x": 122, +"y": 416, +"type": "cubic" +}, +{ +"x": 75, +"y": 369, +"type": "cubic" +}, +{ +"x": 75, +"y": 305, +"smooth": true +}, +{ +"x": 75, +"y": 241, +"type": "cubic" +}, +{ +"x": 122, +"y": 195, +"type": "cubic" +}, +{ +"x": 186, +"y": 195, +"smooth": true +}, +{ +"x": 249, +"y": 195, +"type": "cubic" +}, +{ +"x": 296, +"y": 241, +"type": "cubic" +}, +{ +"x": 296, +"y": 305, +"smooth": true +}, +{ +"x": 296, +"y": 369, +"type": "cubic" +}, +{ +"x": 249, +"y": 416, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 371 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/c.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/c.json new file mode 100644 index 0000000000..aaa3235e85 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/c.json @@ -0,0 +1,152 @@ +{ +"name": "c", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 286, +"y": 545, +"smooth": true +}, +{ +"x": 147, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 444, +"type": "cubic" +}, +{ +"x": 29, +"y": 263, +"smooth": true +}, +{ +"x": 29, +"y": 74, +"type": "cubic" +}, +{ +"x": 134, +"y": -14, +"type": "cubic" +}, +{ +"x": 273, +"y": -14, +"smooth": true +}, +{ +"x": 398, +"y": -14, +"type": "cubic" +}, +{ +"x": 490, +"y": 49, +"type": "cubic" +}, +{ +"x": 515, +"y": 176 +}, +{ +"x": 403, +"y": 176 +}, +{ +"x": 387, +"y": 104, +"type": "cubic" +}, +{ +"x": 342, +"y": 66, +"type": "cubic" +}, +{ +"x": 279, +"y": 66, +"smooth": true +}, +{ +"x": 205, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 127, +"type": "cubic" +}, +{ +"x": 145, +"y": 271, +"smooth": true +}, +{ +"x": 145, +"y": 404, +"type": "cubic" +}, +{ +"x": 206, +"y": 465, +"type": "cubic" +}, +{ +"x": 283, +"y": 465, +"smooth": true +}, +{ +"x": 348, +"y": 465, +"type": "cubic" +}, +{ +"x": 391, +"y": 428, +"type": "cubic" +}, +{ +"x": 407, +"y": 347 +}, +{ +"x": 518, +"y": 347 +}, +{ +"x": 505, +"y": 464, +"type": "cubic" +}, +{ +"x": 420, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 544 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/cacute.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/cacute.json new file mode 100644 index 0000000000..2c29ecf6ba --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/cacute.json @@ -0,0 +1,173 @@ +{ +"name": "cacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 302, +"y": 578 +}, +{ +"x": 405, +"y": 692 +}, +{ +"x": 305, +"y": 692 +}, +{ +"x": 236, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 286, +"y": 545, +"smooth": true +}, +{ +"x": 147, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 444, +"type": "cubic" +}, +{ +"x": 29, +"y": 263, +"smooth": true +}, +{ +"x": 29, +"y": 74, +"type": "cubic" +}, +{ +"x": 134, +"y": -14, +"type": "cubic" +}, +{ +"x": 273, +"y": -14, +"smooth": true +}, +{ +"x": 398, +"y": -14, +"type": "cubic" +}, +{ +"x": 490, +"y": 49, +"type": "cubic" +}, +{ +"x": 515, +"y": 176 +}, +{ +"x": 403, +"y": 176 +}, +{ +"x": 387, +"y": 104, +"type": "cubic" +}, +{ +"x": 342, +"y": 66, +"type": "cubic" +}, +{ +"x": 279, +"y": 66, +"smooth": true +}, +{ +"x": 205, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 127, +"type": "cubic" +}, +{ +"x": 145, +"y": 271, +"smooth": true +}, +{ +"x": 145, +"y": 404, +"type": "cubic" +}, +{ +"x": 206, +"y": 465, +"type": "cubic" +}, +{ +"x": 283, +"y": 465, +"smooth": true +}, +{ +"x": 348, +"y": 465, +"type": "cubic" +}, +{ +"x": 391, +"y": 428, +"type": "cubic" +}, +{ +"x": 407, +"y": 347 +}, +{ +"x": 518, +"y": 347 +}, +{ +"x": 505, +"y": 464, +"type": "cubic" +}, +{ +"x": 420, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 544 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/caron.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/caron.json new file mode 100644 index 0000000000..fb96bc1a31 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/caron.json @@ -0,0 +1,54 @@ +{ +"name": "caron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 257, +"y": 692 +}, +{ +"x": 184, +"y": 692 +}, +{ +"x": 151, +"y": 626 +}, +{ +"x": 118, +"y": 692 +}, +{ +"x": 44, +"y": 692 +}, +{ +"x": 110, +"y": 578 +}, +{ +"x": 191, +"y": 578 +} +], +"isClosed": true +} +] +}, +"xAdvance": 300 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ccaron.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ccaron.json new file mode 100644 index 0000000000..b7d547379c --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ccaron.json @@ -0,0 +1,185 @@ +{ +"name": "ccaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 235, +"y": 578 +}, +{ +"x": 316, +"y": 578 +}, +{ +"x": 382, +"y": 692 +}, +{ +"x": 309, +"y": 692 +}, +{ +"x": 276, +"y": 626 +}, +{ +"x": 243, +"y": 692 +}, +{ +"x": 169, +"y": 692 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 279, +"y": 66, +"smooth": true +}, +{ +"x": 205, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 127, +"type": "cubic" +}, +{ +"x": 145, +"y": 271, +"smooth": true +}, +{ +"x": 145, +"y": 404, +"type": "cubic" +}, +{ +"x": 206, +"y": 465, +"type": "cubic" +}, +{ +"x": 283, +"y": 465, +"smooth": true +}, +{ +"x": 348, +"y": 465, +"type": "cubic" +}, +{ +"x": 391, +"y": 428, +"type": "cubic" +}, +{ +"x": 407, +"y": 347 +}, +{ +"x": 518, +"y": 347 +}, +{ +"x": 505, +"y": 464, +"type": "cubic" +}, +{ +"x": 420, +"y": 545, +"type": "cubic" +}, +{ +"x": 286, +"y": 545, +"smooth": true +}, +{ +"x": 147, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 444, +"type": "cubic" +}, +{ +"x": 29, +"y": 263, +"smooth": true +}, +{ +"x": 29, +"y": 74, +"type": "cubic" +}, +{ +"x": 134, +"y": -14, +"type": "cubic" +}, +{ +"x": 273, +"y": -14, +"smooth": true +}, +{ +"x": 398, +"y": -14, +"type": "cubic" +}, +{ +"x": 490, +"y": 49, +"type": "cubic" +}, +{ +"x": 515, +"y": 176 +}, +{ +"x": 403, +"y": 176 +}, +{ +"x": 387, +"y": 104, +"type": "cubic" +}, +{ +"x": 342, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 544 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ccedilla.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ccedilla.json new file mode 100644 index 0000000000..e2f99cca77 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ccedilla.json @@ -0,0 +1,251 @@ +{ +"name": "ccedilla", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 279, +"y": 66, +"smooth": true +}, +{ +"x": 205, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 127, +"type": "cubic" +}, +{ +"x": 145, +"y": 271, +"smooth": true +}, +{ +"x": 145, +"y": 404, +"type": "cubic" +}, +{ +"x": 206, +"y": 465, +"type": "cubic" +}, +{ +"x": 283, +"y": 465, +"smooth": true +}, +{ +"x": 348, +"y": 465, +"type": "cubic" +}, +{ +"x": 391, +"y": 428, +"type": "cubic" +}, +{ +"x": 407, +"y": 347 +}, +{ +"x": 518, +"y": 347 +}, +{ +"x": 505, +"y": 464, +"type": "cubic" +}, +{ +"x": 420, +"y": 545, +"type": "cubic" +}, +{ +"x": 286, +"y": 545, +"smooth": true +}, +{ +"x": 147, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 444, +"type": "cubic" +}, +{ +"x": 29, +"y": 263, +"smooth": true +}, +{ +"x": 29, +"y": 92, +"type": "cubic" +}, +{ +"x": 114, +"y": 4, +"type": "cubic" +}, +{ +"x": 233, +"y": -11 +}, +{ +"x": 197, +"y": -81 +}, +{ +"x": 267, +"y": -76, +"type": "cubic" +}, +{ +"x": 293, +"y": -91, +"type": "cubic" +}, +{ +"x": 293, +"y": -122, +"smooth": true +}, +{ +"x": 293, +"y": -146, +"type": "cubic" +}, +{ +"x": 273, +"y": -161, +"type": "cubic" +}, +{ +"x": 231, +"y": -161, +"smooth": true +}, +{ +"x": 212, +"y": -161, +"type": "cubic" +}, +{ +"x": 195, +"y": -159, +"type": "cubic" +}, +{ +"x": 177, +"y": -151 +}, +{ +"x": 177, +"y": -202 +}, +{ +"x": 192, +"y": -208, +"type": "cubic" +}, +{ +"x": 210, +"y": -210, +"type": "cubic" +}, +{ +"x": 229, +"y": -210, +"smooth": true +}, +{ +"x": 307, +"y": -210, +"type": "cubic" +}, +{ +"x": 363, +"y": -181, +"type": "cubic" +}, +{ +"x": 363, +"y": -122, +"smooth": true +}, +{ +"x": 363, +"y": -76, +"type": "cubic" +}, +{ +"x": 334, +"y": -48, +"type": "cubic" +}, +{ +"x": 279, +"y": -41 +}, +{ +"x": 293, +"y": -13 +}, +{ +"x": 408, +"y": -7, +"type": "cubic" +}, +{ +"x": 491, +"y": 56, +"type": "cubic" +}, +{ +"x": 515, +"y": 176 +}, +{ +"x": 403, +"y": 176 +}, +{ +"x": 387, +"y": 104, +"type": "cubic" +}, +{ +"x": 342, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 544 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/cdotaccent.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/cdotaccent.json new file mode 100644 index 0000000000..3783a07c33 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/cdotaccent.json @@ -0,0 +1,217 @@ +{ +"name": "cdotaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 275, +"y": 716, +"smooth": true +}, +{ +"x": 238, +"y": 716, +"type": "cubic" +}, +{ +"x": 211, +"y": 689, +"type": "cubic" +}, +{ +"x": 211, +"y": 653, +"smooth": true +}, +{ +"x": 211, +"y": 616, +"type": "cubic" +}, +{ +"x": 238, +"y": 589, +"type": "cubic" +}, +{ +"x": 275, +"y": 589, +"smooth": true +}, +{ +"x": 312, +"y": 589, +"type": "cubic" +}, +{ +"x": 340, +"y": 616, +"type": "cubic" +}, +{ +"x": 340, +"y": 653, +"smooth": true +}, +{ +"x": 340, +"y": 689, +"type": "cubic" +}, +{ +"x": 312, +"y": 716, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 286, +"y": 545, +"smooth": true +}, +{ +"x": 147, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 444, +"type": "cubic" +}, +{ +"x": 29, +"y": 263, +"smooth": true +}, +{ +"x": 29, +"y": 74, +"type": "cubic" +}, +{ +"x": 134, +"y": -14, +"type": "cubic" +}, +{ +"x": 273, +"y": -14, +"smooth": true +}, +{ +"x": 398, +"y": -14, +"type": "cubic" +}, +{ +"x": 490, +"y": 49, +"type": "cubic" +}, +{ +"x": 515, +"y": 176 +}, +{ +"x": 403, +"y": 176 +}, +{ +"x": 387, +"y": 104, +"type": "cubic" +}, +{ +"x": 342, +"y": 66, +"type": "cubic" +}, +{ +"x": 279, +"y": 66, +"smooth": true +}, +{ +"x": 205, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 127, +"type": "cubic" +}, +{ +"x": 145, +"y": 271, +"smooth": true +}, +{ +"x": 145, +"y": 404, +"type": "cubic" +}, +{ +"x": 206, +"y": 465, +"type": "cubic" +}, +{ +"x": 283, +"y": 465, +"smooth": true +}, +{ +"x": 348, +"y": 465, +"type": "cubic" +}, +{ +"x": 391, +"y": 428, +"type": "cubic" +}, +{ +"x": 407, +"y": 347 +}, +{ +"x": 518, +"y": 347 +}, +{ +"x": 505, +"y": 464, +"type": "cubic" +}, +{ +"x": 420, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 544 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/cedilla.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/cedilla.json new file mode 100644 index 0000000000..6e204474d1 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/cedilla.json @@ -0,0 +1,130 @@ +{ +"name": "cedilla", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 187, +"y": 9 +}, +{ +"x": 126, +"y": 9 +}, +{ +"x": 79, +"y": -81 +}, +{ +"x": 149, +"y": -76, +"type": "cubic" +}, +{ +"x": 175, +"y": -91, +"type": "cubic" +}, +{ +"x": 175, +"y": -122, +"smooth": true +}, +{ +"x": 175, +"y": -146, +"type": "cubic" +}, +{ +"x": 155, +"y": -161, +"type": "cubic" +}, +{ +"x": 113, +"y": -161, +"smooth": true +}, +{ +"x": 94, +"y": -161, +"type": "cubic" +}, +{ +"x": 77, +"y": -159, +"type": "cubic" +}, +{ +"x": 59, +"y": -151 +}, +{ +"x": 59, +"y": -202 +}, +{ +"x": 74, +"y": -208, +"type": "cubic" +}, +{ +"x": 92, +"y": -210, +"type": "cubic" +}, +{ +"x": 111, +"y": -210, +"smooth": true +}, +{ +"x": 189, +"y": -210, +"type": "cubic" +}, +{ +"x": 245, +"y": -181, +"type": "cubic" +}, +{ +"x": 245, +"y": -122, +"smooth": true +}, +{ +"x": 245, +"y": -76, +"type": "cubic" +}, +{ +"x": 216, +"y": -48, +"type": "cubic" +}, +{ +"x": 161, +"y": -41 +} +], +"isClosed": true +} +] +}, +"xAdvance": 300 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/cent.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/cent.json new file mode 100644 index 0000000000..e971d3bbcc --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/cent.json @@ -0,0 +1,185 @@ +{ +"name": "cent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 336, +"y": 461 +}, +{ +"x": 386, +"y": 451, +"type": "cubic" +}, +{ +"x": 422, +"y": 414, +"type": "cubic" +}, +{ +"x": 436, +"y": 346 +}, +{ +"x": 542, +"y": 346 +}, +{ +"x": 530, +"y": 455, +"type": "cubic" +}, +{ +"x": 455, +"y": 533, +"type": "cubic" +}, +{ +"x": 336, +"y": 543 +}, +{ +"x": 336, +"y": 620 +}, +{ +"x": 268, +"y": 620 +}, +{ +"x": 268, +"y": 541 +}, +{ +"x": 148, +"y": 522, +"type": "cubic" +}, +{ +"x": 53, +"y": 424, +"type": "cubic" +}, +{ +"x": 53, +"y": 263, +"smooth": true +}, +{ +"x": 53, +"y": 88, +"type": "cubic" +}, +{ +"x": 144, +"y": -1, +"type": "cubic" +}, +{ +"x": 268, +"y": -13 +}, +{ +"x": 268, +"y": -90 +}, +{ +"x": 336, +"y": -90 +}, +{ +"x": 336, +"y": -12 +}, +{ +"x": 441, +"y": 0, +"type": "cubic" +}, +{ +"x": 517, +"y": 63, +"type": "cubic" +}, +{ +"x": 539, +"y": 176 +}, +{ +"x": 432, +"y": 176 +}, +{ +"x": 419, +"y": 117, +"type": "cubic" +}, +{ +"x": 383, +"y": 81, +"type": "cubic" +}, +{ +"x": 336, +"y": 70 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 164, +"y": 270, +"smooth": true +}, +{ +"x": 164, +"y": 380, +"type": "cubic" +}, +{ +"x": 209, +"y": 441, +"type": "cubic" +}, +{ +"x": 268, +"y": 458 +}, +{ +"x": 268, +"y": 71 +}, +{ +"x": 210, +"y": 88, +"type": "cubic" +}, +{ +"x": 164, +"y": 149, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 586 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/circumflex.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/circumflex.json new file mode 100644 index 0000000000..72f8d78c35 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/circumflex.json @@ -0,0 +1,54 @@ +{ +"name": "circumflex", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 183, +"y": 578 +}, +{ +"x": 257, +"y": 578 +}, +{ +"x": 191, +"y": 692 +}, +{ +"x": 110, +"y": 692 +}, +{ +"x": 44, +"y": 578 +}, +{ +"x": 117, +"y": 578 +}, +{ +"x": 150, +"y": 643 +} +], +"isClosed": true +} +] +}, +"xAdvance": 300 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/colon.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/colon.json new file mode 100644 index 0000000000..d99d2847a9 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/colon.json @@ -0,0 +1,151 @@ +{ +"name": "colon", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 111, +"y": 545, +"smooth": true +}, +{ +"x": 68, +"y": 545, +"type": "cubic" +}, +{ +"x": 38, +"y": 515, +"type": "cubic" +}, +{ +"x": 38, +"y": 472, +"smooth": true +}, +{ +"x": 38, +"y": 430, +"type": "cubic" +}, +{ +"x": 68, +"y": 399, +"type": "cubic" +}, +{ +"x": 111, +"y": 399, +"smooth": true +}, +{ +"x": 153, +"y": 399, +"type": "cubic" +}, +{ +"x": 184, +"y": 430, +"type": "cubic" +}, +{ +"x": 184, +"y": 472, +"smooth": true +}, +{ +"x": 184, +"y": 515, +"type": "cubic" +}, +{ +"x": 153, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 111, +"y": 132, +"smooth": true +}, +{ +"x": 68, +"y": 132, +"type": "cubic" +}, +{ +"x": 38, +"y": 102, +"type": "cubic" +}, +{ +"x": 38, +"y": 59, +"smooth": true +}, +{ +"x": 38, +"y": 17, +"type": "cubic" +}, +{ +"x": 68, +"y": -14, +"type": "cubic" +}, +{ +"x": 111, +"y": -14, +"smooth": true +}, +{ +"x": 153, +"y": -14, +"type": "cubic" +}, +{ +"x": 184, +"y": 17, +"type": "cubic" +}, +{ +"x": 184, +"y": 59, +"smooth": true +}, +{ +"x": 184, +"y": 102, +"type": "cubic" +}, +{ +"x": 153, +"y": 132, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 232 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/comma.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/comma.json new file mode 100644 index 0000000000..9efdf6426b --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/comma.json @@ -0,0 +1,46 @@ +{ +"name": "comma", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 160, +"y": 108 +}, +{ +"x": 160, +"y": 118 +}, +{ +"x": 49, +"y": 118 +}, +{ +"x": -30, +"y": -121 +}, +{ +"x": 66, +"y": -121 +} +], +"isClosed": true +} +] +}, +"xAdvance": 232 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/copyright.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/copyright.json new file mode 100644 index 0000000000..86d27290f9 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/copyright.json @@ -0,0 +1,282 @@ +{ +"name": "copyright", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 422, +"y": 748, +"smooth": true +}, +{ +"x": 200, +"y": 748, +"type": "cubic" +}, +{ +"x": 31, +"y": 579, +"type": "cubic" +}, +{ +"x": 31, +"y": 355, +"smooth": true +}, +{ +"x": 31, +"y": 131, +"type": "cubic" +}, +{ +"x": 200, +"y": -38, +"type": "cubic" +}, +{ +"x": 422, +"y": -38, +"smooth": true +}, +{ +"x": 644, +"y": -38, +"type": "cubic" +}, +{ +"x": 813, +"y": 131, +"type": "cubic" +}, +{ +"x": 813, +"y": 355, +"smooth": true +}, +{ +"x": 813, +"y": 579, +"type": "cubic" +}, +{ +"x": 644, +"y": 748, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 422, +"y": 680, +"smooth": true +}, +{ +"x": 602, +"y": 680, +"type": "cubic" +}, +{ +"x": 739, +"y": 540, +"type": "cubic" +}, +{ +"x": 739, +"y": 355, +"smooth": true +}, +{ +"x": 739, +"y": 169, +"type": "cubic" +}, +{ +"x": 602, +"y": 30, +"type": "cubic" +}, +{ +"x": 422, +"y": 30, +"smooth": true +}, +{ +"x": 241, +"y": 30, +"type": "cubic" +}, +{ +"x": 105, +"y": 169, +"type": "cubic" +}, +{ +"x": 105, +"y": 355, +"smooth": true +}, +{ +"x": 105, +"y": 540, +"type": "cubic" +}, +{ +"x": 241, +"y": 680, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 429, +"y": 585, +"smooth": true +}, +{ +"x": 297, +"y": 585, +"type": "cubic" +}, +{ +"x": 209, +"y": 496, +"type": "cubic" +}, +{ +"x": 209, +"y": 354, +"smooth": true +}, +{ +"x": 209, +"y": 214, +"type": "cubic" +}, +{ +"x": 296, +"y": 125, +"type": "cubic" +}, +{ +"x": 420, +"y": 125, +"smooth": true +}, +{ +"x": 543, +"y": 125, +"type": "cubic" +}, +{ +"x": 608, +"y": 193, +"type": "cubic" +}, +{ +"x": 629, +"y": 292 +}, +{ +"x": 523, +"y": 292 +}, +{ +"x": 516, +"y": 238, +"type": "cubic" +}, +{ +"x": 480, +"y": 201, +"type": "cubic" +}, +{ +"x": 428, +"y": 201, +"smooth": true +}, +{ +"x": 362, +"y": 201, +"type": "cubic" +}, +{ +"x": 320, +"y": 259, +"type": "cubic" +}, +{ +"x": 320, +"y": 356, +"smooth": true +}, +{ +"x": 320, +"y": 449, +"type": "cubic" +}, +{ +"x": 356, +"y": 509, +"type": "cubic" +}, +{ +"x": 427, +"y": 509, +"smooth": true +}, +{ +"x": 488, +"y": 509, +"type": "cubic" +}, +{ +"x": 516, +"y": 470, +"type": "cubic" +}, +{ +"x": 524, +"y": 417 +}, +{ +"x": 630, +"y": 417 +}, +{ +"x": 613, +"y": 517, +"type": "cubic" +}, +{ +"x": 543, +"y": 585, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 844 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/currency.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/currency.json new file mode 100644 index 0000000000..424950f1d6 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/currency.json @@ -0,0 +1,255 @@ +{ +"name": "currency", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 480, +"y": 301, +"smooth": true +}, +{ +"x": 480, +"y": 339, +"type": "cubic" +}, +{ +"x": 468, +"y": 375, +"type": "cubic" +}, +{ +"x": 448, +"y": 404 +}, +{ +"x": 507, +"y": 462 +}, +{ +"x": 462, +"y": 507 +}, +{ +"x": 403, +"y": 449 +}, +{ +"x": 374, +"y": 469, +"type": "cubic" +}, +{ +"x": 338, +"y": 481, +"type": "cubic" +}, +{ +"x": 300, +"y": 481, +"smooth": true +}, +{ +"x": 262, +"y": 481, +"type": "cubic" +}, +{ +"x": 227, +"y": 469, +"type": "cubic" +}, +{ +"x": 198, +"y": 449 +}, +{ +"x": 140, +"y": 507 +}, +{ +"x": 95, +"y": 462 +}, +{ +"x": 152, +"y": 405 +}, +{ +"x": 132, +"y": 375, +"type": "cubic" +}, +{ +"x": 120, +"y": 340, +"type": "cubic" +}, +{ +"x": 120, +"y": 301, +"smooth": true +}, +{ +"x": 120, +"y": 263, +"type": "cubic" +}, +{ +"x": 132, +"y": 227, +"type": "cubic" +}, +{ +"x": 152, +"y": 198 +}, +{ +"x": 95, +"y": 141 +}, +{ +"x": 140, +"y": 96 +}, +{ +"x": 197, +"y": 153 +}, +{ +"x": 226, +"y": 133, +"type": "cubic" +}, +{ +"x": 262, +"y": 121, +"type": "cubic" +}, +{ +"x": 300, +"y": 121, +"smooth": true +}, +{ +"x": 339, +"y": 121, +"type": "cubic" +}, +{ +"x": 374, +"y": 133, +"type": "cubic" +}, +{ +"x": 404, +"y": 154 +}, +{ +"x": 462, +"y": 96 +}, +{ +"x": 507, +"y": 141 +}, +{ +"x": 448, +"y": 199 +}, +{ +"x": 468, +"y": 228, +"type": "cubic" +}, +{ +"x": 480, +"y": 263, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 300, +"y": 188, +"smooth": true +}, +{ +"x": 239, +"y": 188, +"type": "cubic" +}, +{ +"x": 193, +"y": 235, +"type": "cubic" +}, +{ +"x": 193, +"y": 301, +"smooth": true +}, +{ +"x": 193, +"y": 367, +"type": "cubic" +}, +{ +"x": 239, +"y": 414, +"type": "cubic" +}, +{ +"x": 300, +"y": 414, +"smooth": true +}, +{ +"x": 362, +"y": 414, +"type": "cubic" +}, +{ +"x": 408, +"y": 367, +"type": "cubic" +}, +{ +"x": 408, +"y": 301, +"smooth": true +}, +{ +"x": 408, +"y": 235, +"type": "cubic" +}, +{ +"x": 362, +"y": 188, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/d.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/d.json new file mode 100644 index 0000000000..aaf5f49c8f --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/d.json @@ -0,0 +1,183 @@ +{ +"name": "d", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 557, +"y": 735 +}, +{ +"x": 447, +"y": 735 +}, +{ +"x": 447, +"y": 459 +}, +{ +"x": 412, +"y": 512 +}, +{ +"x": 385, +"y": 533, +"type": "cubic" +}, +{ +"x": 330, +"y": 545, +"type": "cubic" +}, +{ +"x": 286, +"y": 545, +"smooth": true +}, +{ +"x": 149, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 451, +"type": "cubic" +}, +{ +"x": 29, +"y": 257, +"smooth": true +}, +{ +"x": 29, +"y": 101, +"type": "cubic" +}, +{ +"x": 116, +"y": -14, +"type": "cubic" +}, +{ +"x": 268, +"y": -14, +"smooth": true +}, +{ +"x": 322, +"y": -14, +"type": "cubic" +}, +{ +"x": 377, +"y": 2, +"type": "cubic" +}, +{ +"x": 407, +"y": 26 +}, +{ +"x": 447, +"y": 84 +}, +{ +"x": 447, +"y": 0 +}, +{ +"x": 557, +"y": 0 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 293, +"y": 66, +"smooth": true +}, +{ +"x": 198, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 151, +"type": "cubic" +}, +{ +"x": 145, +"y": 266, +"smooth": true +}, +{ +"x": 145, +"y": 398, +"type": "cubic" +}, +{ +"x": 211, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 369, +"y": 465, +"type": "cubic" +}, +{ +"x": 447, +"y": 417, +"type": "cubic" +}, +{ +"x": 447, +"y": 288, +"smooth": true +}, +{ +"x": 447, +"y": 260, +"smooth": true +}, +{ +"x": 447, +"y": 118, +"type": "cubic" +}, +{ +"x": 376, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 629 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dagger.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dagger.json new file mode 100644 index 0000000000..a60f8225ef --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dagger.json @@ -0,0 +1,74 @@ +{ +"name": "dagger", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 504, +"y": 365 +}, +{ +"x": 504, +"y": 461 +}, +{ +"x": 325, +"y": 455 +}, +{ +"x": 336, +"y": 690 +}, +{ +"x": 219, +"y": 690 +}, +{ +"x": 230, +"y": 455 +}, +{ +"x": 51, +"y": 461 +}, +{ +"x": 51, +"y": 365 +}, +{ +"x": 231, +"y": 371 +}, +{ +"x": 219, +"y": -160 +}, +{ +"x": 336, +"y": -160 +}, +{ +"x": 324, +"y": 372 +} +], +"isClosed": true +} +] +}, +"xAdvance": 555 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/daggerdbl.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/daggerdbl.json new file mode 100644 index 0000000000..1d976bb73b --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/daggerdbl.json @@ -0,0 +1,106 @@ +{ +"name": "daggerdbl", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 324, +"y": 372 +}, +{ +"x": 504, +"y": 365 +}, +{ +"x": 504, +"y": 461 +}, +{ +"x": 325, +"y": 455 +}, +{ +"x": 336, +"y": 690 +}, +{ +"x": 219, +"y": 690 +}, +{ +"x": 230, +"y": 455 +}, +{ +"x": 51, +"y": 461 +}, +{ +"x": 51, +"y": 365 +}, +{ +"x": 231, +"y": 371 +}, +{ +"x": 231, +"y": 159 +}, +{ +"x": 51, +"y": 165 +}, +{ +"x": 51, +"y": 69 +}, +{ +"x": 230, +"y": 75 +}, +{ +"x": 219, +"y": -160 +}, +{ +"x": 336, +"y": -160 +}, +{ +"x": 325, +"y": 75 +}, +{ +"x": 504, +"y": 69 +}, +{ +"x": 504, +"y": 165 +}, +{ +"x": 324, +"y": 158 +} +], +"isClosed": true +} +] +}, +"xAdvance": 555 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dcaron.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dcaron.json new file mode 100644 index 0000000000..d4e637bfab --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dcaron.json @@ -0,0 +1,208 @@ +{ +"name": "dcaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 723, +"y": 736 +}, +{ +"x": 642, +"y": 736 +}, +{ +"x": 582, +"y": 583 +}, +{ +"x": 652, +"y": 583 +}, +{ +"x": 723, +"y": 724 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 447, +"y": 735 +}, +{ +"x": 447, +"y": 459 +}, +{ +"x": 412, +"y": 512 +}, +{ +"x": 385, +"y": 533, +"type": "cubic" +}, +{ +"x": 330, +"y": 545, +"type": "cubic" +}, +{ +"x": 286, +"y": 545, +"smooth": true +}, +{ +"x": 149, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 451, +"type": "cubic" +}, +{ +"x": 29, +"y": 257, +"smooth": true +}, +{ +"x": 29, +"y": 101, +"type": "cubic" +}, +{ +"x": 116, +"y": -14, +"type": "cubic" +}, +{ +"x": 268, +"y": -14, +"smooth": true +}, +{ +"x": 322, +"y": -14, +"type": "cubic" +}, +{ +"x": 377, +"y": 2, +"type": "cubic" +}, +{ +"x": 407, +"y": 26 +}, +{ +"x": 447, +"y": 84 +}, +{ +"x": 447, +"y": 0 +}, +{ +"x": 557, +"y": 0 +}, +{ +"x": 557, +"y": 735 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 293, +"y": 66, +"smooth": true +}, +{ +"x": 198, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 151, +"type": "cubic" +}, +{ +"x": 145, +"y": 266, +"smooth": true +}, +{ +"x": 145, +"y": 398, +"type": "cubic" +}, +{ +"x": 211, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 369, +"y": 465, +"type": "cubic" +}, +{ +"x": 447, +"y": 417, +"type": "cubic" +}, +{ +"x": 447, +"y": 288, +"smooth": true +}, +{ +"x": 447, +"y": 260, +"smooth": true +}, +{ +"x": 447, +"y": 118, +"type": "cubic" +}, +{ +"x": 376, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 629 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dcroat.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dcroat.json new file mode 100644 index 0000000000..09f2db89d4 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dcroat.json @@ -0,0 +1,215 @@ +{ +"name": "dcroat", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 600, +"y": 590 +}, +{ +"x": 600, +"y": 656 +}, +{ +"x": 557, +"y": 656 +}, +{ +"x": 557, +"y": 735 +}, +{ +"x": 447, +"y": 735 +}, +{ +"x": 447, +"y": 656 +}, +{ +"x": 330, +"y": 656 +}, +{ +"x": 330, +"y": 590 +}, +{ +"x": 447, +"y": 590 +}, +{ +"x": 447, +"y": 459 +}, +{ +"x": 412, +"y": 512 +}, +{ +"x": 385, +"y": 533, +"type": "cubic" +}, +{ +"x": 330, +"y": 545, +"type": "cubic" +}, +{ +"x": 286, +"y": 545, +"smooth": true +}, +{ +"x": 149, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 451, +"type": "cubic" +}, +{ +"x": 29, +"y": 257, +"smooth": true +}, +{ +"x": 29, +"y": 101, +"type": "cubic" +}, +{ +"x": 116, +"y": -14, +"type": "cubic" +}, +{ +"x": 268, +"y": -14, +"smooth": true +}, +{ +"x": 322, +"y": -14, +"type": "cubic" +}, +{ +"x": 377, +"y": 2, +"type": "cubic" +}, +{ +"x": 407, +"y": 26 +}, +{ +"x": 447, +"y": 84 +}, +{ +"x": 447, +"y": 0 +}, +{ +"x": 557, +"y": 0 +}, +{ +"x": 557, +"y": 590 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 293, +"y": 66, +"smooth": true +}, +{ +"x": 198, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 151, +"type": "cubic" +}, +{ +"x": 145, +"y": 266, +"smooth": true +}, +{ +"x": 145, +"y": 398, +"type": "cubic" +}, +{ +"x": 211, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 369, +"y": 465, +"type": "cubic" +}, +{ +"x": 447, +"y": 417, +"type": "cubic" +}, +{ +"x": 447, +"y": 288, +"smooth": true +}, +{ +"x": 447, +"y": 260, +"smooth": true +}, +{ +"x": 447, +"y": 118, +"type": "cubic" +}, +{ +"x": 376, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 632 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/degree.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/degree.json new file mode 100644 index 0000000000..bd8f90f01d --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/degree.json @@ -0,0 +1,151 @@ +{ +"name": "degree", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 152, +"y": 704, +"smooth": true +}, +{ +"x": 78, +"y": 704, +"type": "cubic" +}, +{ +"x": 26, +"y": 654, +"type": "cubic" +}, +{ +"x": 26, +"y": 581, +"smooth": true +}, +{ +"x": 26, +"y": 508, +"type": "cubic" +}, +{ +"x": 78, +"y": 458, +"type": "cubic" +}, +{ +"x": 152, +"y": 458, +"smooth": true +}, +{ +"x": 226, +"y": 458, +"type": "cubic" +}, +{ +"x": 278, +"y": 508, +"type": "cubic" +}, +{ +"x": 278, +"y": 581, +"smooth": true +}, +{ +"x": 278, +"y": 654, +"type": "cubic" +}, +{ +"x": 226, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 152, +"y": 640, +"smooth": true +}, +{ +"x": 183, +"y": 640, +"type": "cubic" +}, +{ +"x": 208, +"y": 616, +"type": "cubic" +}, +{ +"x": 208, +"y": 581, +"smooth": true +}, +{ +"x": 208, +"y": 546, +"type": "cubic" +}, +{ +"x": 183, +"y": 522, +"type": "cubic" +}, +{ +"x": 152, +"y": 522, +"smooth": true +}, +{ +"x": 120, +"y": 522, +"type": "cubic" +}, +{ +"x": 96, +"y": 546, +"type": "cubic" +}, +{ +"x": 96, +"y": 581, +"smooth": true +}, +{ +"x": 96, +"y": 616, +"type": "cubic" +}, +{ +"x": 120, +"y": 640, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 304 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dieresis.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dieresis.json new file mode 100644 index 0000000000..b7f27facc5 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dieresis.json @@ -0,0 +1,151 @@ +{ +"name": "dieresis", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 70, +"y": 685, +"smooth": true +}, +{ +"x": 40, +"y": 685, +"type": "cubic" +}, +{ +"x": 17, +"y": 662, +"type": "cubic" +}, +{ +"x": 17, +"y": 632, +"smooth": true +}, +{ +"x": 17, +"y": 602, +"type": "cubic" +}, +{ +"x": 40, +"y": 580, +"type": "cubic" +}, +{ +"x": 70, +"y": 580, +"smooth": true +}, +{ +"x": 100, +"y": 580, +"type": "cubic" +}, +{ +"x": 124, +"y": 602, +"type": "cubic" +}, +{ +"x": 124, +"y": 632, +"smooth": true +}, +{ +"x": 124, +"y": 662, +"type": "cubic" +}, +{ +"x": 100, +"y": 685, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 230, +"y": 685, +"smooth": true +}, +{ +"x": 200, +"y": 685, +"type": "cubic" +}, +{ +"x": 177, +"y": 662, +"type": "cubic" +}, +{ +"x": 177, +"y": 632, +"smooth": true +}, +{ +"x": 177, +"y": 602, +"type": "cubic" +}, +{ +"x": 200, +"y": 580, +"type": "cubic" +}, +{ +"x": 230, +"y": 580, +"smooth": true +}, +{ +"x": 260, +"y": 580, +"type": "cubic" +}, +{ +"x": 283, +"y": 602, +"type": "cubic" +}, +{ +"x": 283, +"y": 632, +"smooth": true +}, +{ +"x": 283, +"y": 662, +"type": "cubic" +}, +{ +"x": 260, +"y": 685, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 300 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/divide.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/divide.json new file mode 100644 index 0000000000..148ad590c5 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/divide.json @@ -0,0 +1,172 @@ +{ +"name": "divide", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 302, +"y": 546, +"smooth": true +}, +{ +"x": 267, +"y": 546, +"type": "cubic" +}, +{ +"x": 240, +"y": 519, +"type": "cubic" +}, +{ +"x": 240, +"y": 484, +"smooth": true +}, +{ +"x": 240, +"y": 449, +"type": "cubic" +}, +{ +"x": 267, +"y": 422, +"type": "cubic" +}, +{ +"x": 302, +"y": 422, +"smooth": true +}, +{ +"x": 337, +"y": 422, +"type": "cubic" +}, +{ +"x": 364, +"y": 449, +"type": "cubic" +}, +{ +"x": 364, +"y": 484, +"smooth": true +}, +{ +"x": 364, +"y": 519, +"type": "cubic" +}, +{ +"x": 337, +"y": 546, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 519, +"y": 286 +}, +{ +"x": 519, +"y": 352 +}, +{ +"x": 82, +"y": 352 +}, +{ +"x": 82, +"y": 286 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 302, +"y": 212, +"smooth": true +}, +{ +"x": 267, +"y": 212, +"type": "cubic" +}, +{ +"x": 240, +"y": 185, +"type": "cubic" +}, +{ +"x": 240, +"y": 150, +"smooth": true +}, +{ +"x": 240, +"y": 115, +"type": "cubic" +}, +{ +"x": 267, +"y": 88, +"type": "cubic" +}, +{ +"x": 302, +"y": 88, +"smooth": true +}, +{ +"x": 337, +"y": 88, +"type": "cubic" +}, +{ +"x": 364, +"y": 115, +"type": "cubic" +}, +{ +"x": 364, +"y": 150, +"smooth": true +}, +{ +"x": 364, +"y": 185, +"type": "cubic" +}, +{ +"x": 337, +"y": 212, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dollar.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dollar.json new file mode 100644 index 0000000000..b30ea7f565 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dollar.json @@ -0,0 +1,256 @@ +{ +"name": "dollar", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 549, +"y": 183, +"smooth": true +}, +{ +"x": 549, +"y": 291, +"type": "cubic" +}, +{ +"x": 492, +"y": 354, +"type": "cubic" +}, +{ +"x": 340, +"y": 402 +}, +{ +"x": 340, +"y": 620 +}, +{ +"x": 398, +"y": 608, +"type": "cubic" +}, +{ +"x": 425, +"y": 565, +"type": "cubic" +}, +{ +"x": 432, +"y": 504 +}, +{ +"x": 544, +"y": 504 +}, +{ +"x": 531, +"y": 609, +"type": "cubic" +}, +{ +"x": 466, +"y": 691, +"type": "cubic" +}, +{ +"x": 340, +"y": 703 +}, +{ +"x": 340, +"y": 780 +}, +{ +"x": 272, +"y": 780 +}, +{ +"x": 272, +"y": 702 +}, +{ +"x": 162, +"y": 690, +"type": "cubic" +}, +{ +"x": 76, +"y": 624, +"type": "cubic" +}, +{ +"x": 76, +"y": 506, +"smooth": true +}, +{ +"x": 76, +"y": 391, +"type": "cubic" +}, +{ +"x": 151, +"y": 339, +"type": "cubic" +}, +{ +"x": 272, +"y": 303 +}, +{ +"x": 272, +"y": 71 +}, +{ +"x": 210, +"y": 83, +"type": "cubic" +}, +{ +"x": 170, +"y": 125, +"type": "cubic" +}, +{ +"x": 162, +"y": 190 +}, +{ +"x": 50, +"y": 190 +}, +{ +"x": 57, +"y": 68, +"type": "cubic" +}, +{ +"x": 142, +"y": -3, +"type": "cubic" +}, +{ +"x": 272, +"y": -13 +}, +{ +"x": 272, +"y": -90 +}, +{ +"x": 340, +"y": -90 +}, +{ +"x": 340, +"y": -12 +}, +{ +"x": 459, +"y": 0, +"type": "cubic" +}, +{ +"x": 549, +"y": 69, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 186, +"y": 520, +"smooth": true +}, +{ +"x": 186, +"y": 577, +"type": "cubic" +}, +{ +"x": 219, +"y": 611, +"type": "cubic" +}, +{ +"x": 272, +"y": 620 +}, +{ +"x": 272, +"y": 414 +}, +{ +"x": 214, +"y": 433, +"type": "cubic" +}, +{ +"x": 186, +"y": 461, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 340, +"y": 289 +}, +{ +"x": 414, +"y": 263, +"type": "cubic" +}, +{ +"x": 437, +"y": 224, +"type": "cubic" +}, +{ +"x": 437, +"y": 173, +"smooth": true +}, +{ +"x": 437, +"y": 110, +"type": "cubic" +}, +{ +"x": 399, +"y": 78, +"type": "cubic" +}, +{ +"x": 340, +"y": 70 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dotaccent.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dotaccent.json new file mode 100644 index 0000000000..86ff238415 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dotaccent.json @@ -0,0 +1,86 @@ +{ +"name": "dotaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 150, +"y": 716, +"smooth": true +}, +{ +"x": 113, +"y": 716, +"type": "cubic" +}, +{ +"x": 86, +"y": 689, +"type": "cubic" +}, +{ +"x": 86, +"y": 653, +"smooth": true +}, +{ +"x": 86, +"y": 616, +"type": "cubic" +}, +{ +"x": 113, +"y": 589, +"type": "cubic" +}, +{ +"x": 150, +"y": 589, +"smooth": true +}, +{ +"x": 187, +"y": 589, +"type": "cubic" +}, +{ +"x": 215, +"y": 616, +"type": "cubic" +}, +{ +"x": 215, +"y": 653, +"smooth": true +}, +{ +"x": 215, +"y": 689, +"type": "cubic" +}, +{ +"x": 187, +"y": 716, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 300 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dotlessi.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dotlessi.json new file mode 100644 index 0000000000..1c14985780 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/dotlessi.json @@ -0,0 +1,42 @@ +{ +"name": "dotlessi", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 251 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/e.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/e.json new file mode 100644 index 0000000000..48626ae6dc --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/e.json @@ -0,0 +1,175 @@ +{ +"name": "e", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 526, +"y": 279, +"smooth": true +}, +{ +"x": 526, +"y": 429, +"type": "cubic" +}, +{ +"x": 443, +"y": 545, +"type": "cubic" +}, +{ +"x": 289, +"y": 545, +"smooth": true +}, +{ +"x": 136, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 432, +"type": "cubic" +}, +{ +"x": 29, +"y": 264, +"smooth": true +}, +{ +"x": 29, +"y": 76, +"type": "cubic" +}, +{ +"x": 136, +"y": -14, +"type": "cubic" +}, +{ +"x": 278, +"y": -14, +"smooth": true +}, +{ +"x": 394, +"y": -14, +"type": "cubic" +}, +{ +"x": 495, +"y": 46, +"type": "cubic" +}, +{ +"x": 518, +"y": 172 +}, +{ +"x": 407, +"y": 172 +}, +{ +"x": 396, +"y": 105, +"type": "cubic" +}, +{ +"x": 346, +"y": 66, +"type": "cubic" +}, +{ +"x": 282, +"y": 66, +"smooth": true +}, +{ +"x": 210, +"y": 66, +"type": "cubic" +}, +{ +"x": 152, +"y": 108, +"type": "cubic" +}, +{ +"x": 143, +"y": 235 +}, +{ +"x": 524, +"y": 235 +}, +{ +"x": 526, +"y": 254, +"type": "cubic" +}, +{ +"x": 526, +"y": 269, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 285, +"y": 465, +"smooth": true +}, +{ +"x": 362, +"y": 465, +"type": "cubic" +}, +{ +"x": 405, +"y": 410, +"type": "cubic" +}, +{ +"x": 413, +"y": 312 +}, +{ +"x": 144, +"y": 312 +}, +{ +"x": 156, +"y": 414, +"type": "cubic" +}, +{ +"x": 210, +"y": 465, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 562 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/eacute.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/eacute.json new file mode 100644 index 0000000000..24391064a1 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/eacute.json @@ -0,0 +1,196 @@ +{ +"name": "eacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 310, +"y": 578 +}, +{ +"x": 413, +"y": 692 +}, +{ +"x": 313, +"y": 692 +}, +{ +"x": 244, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 526, +"y": 279, +"smooth": true +}, +{ +"x": 526, +"y": 429, +"type": "cubic" +}, +{ +"x": 443, +"y": 545, +"type": "cubic" +}, +{ +"x": 289, +"y": 545, +"smooth": true +}, +{ +"x": 136, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 432, +"type": "cubic" +}, +{ +"x": 29, +"y": 264, +"smooth": true +}, +{ +"x": 29, +"y": 76, +"type": "cubic" +}, +{ +"x": 136, +"y": -14, +"type": "cubic" +}, +{ +"x": 278, +"y": -14, +"smooth": true +}, +{ +"x": 394, +"y": -14, +"type": "cubic" +}, +{ +"x": 495, +"y": 46, +"type": "cubic" +}, +{ +"x": 518, +"y": 172 +}, +{ +"x": 407, +"y": 172 +}, +{ +"x": 396, +"y": 105, +"type": "cubic" +}, +{ +"x": 346, +"y": 66, +"type": "cubic" +}, +{ +"x": 282, +"y": 66, +"smooth": true +}, +{ +"x": 210, +"y": 66, +"type": "cubic" +}, +{ +"x": 152, +"y": 108, +"type": "cubic" +}, +{ +"x": 143, +"y": 235 +}, +{ +"x": 524, +"y": 235 +}, +{ +"x": 526, +"y": 254, +"type": "cubic" +}, +{ +"x": 526, +"y": 269, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 285, +"y": 465, +"smooth": true +}, +{ +"x": 362, +"y": 465, +"type": "cubic" +}, +{ +"x": 405, +"y": 410, +"type": "cubic" +}, +{ +"x": 413, +"y": 312 +}, +{ +"x": 144, +"y": 312 +}, +{ +"x": 156, +"y": 414, +"type": "cubic" +}, +{ +"x": 210, +"y": 465, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 562 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ecaron.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ecaron.json new file mode 100644 index 0000000000..8ee306860f --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ecaron.json @@ -0,0 +1,208 @@ +{ +"name": "ecaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 243, +"y": 578 +}, +{ +"x": 324, +"y": 578 +}, +{ +"x": 390, +"y": 692 +}, +{ +"x": 317, +"y": 692 +}, +{ +"x": 284, +"y": 626 +}, +{ +"x": 251, +"y": 692 +}, +{ +"x": 177, +"y": 692 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 526, +"y": 279, +"smooth": true +}, +{ +"x": 526, +"y": 429, +"type": "cubic" +}, +{ +"x": 443, +"y": 545, +"type": "cubic" +}, +{ +"x": 289, +"y": 545, +"smooth": true +}, +{ +"x": 136, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 432, +"type": "cubic" +}, +{ +"x": 29, +"y": 264, +"smooth": true +}, +{ +"x": 29, +"y": 76, +"type": "cubic" +}, +{ +"x": 136, +"y": -14, +"type": "cubic" +}, +{ +"x": 278, +"y": -14, +"smooth": true +}, +{ +"x": 394, +"y": -14, +"type": "cubic" +}, +{ +"x": 495, +"y": 46, +"type": "cubic" +}, +{ +"x": 518, +"y": 172 +}, +{ +"x": 407, +"y": 172 +}, +{ +"x": 396, +"y": 105, +"type": "cubic" +}, +{ +"x": 346, +"y": 66, +"type": "cubic" +}, +{ +"x": 282, +"y": 66, +"smooth": true +}, +{ +"x": 210, +"y": 66, +"type": "cubic" +}, +{ +"x": 152, +"y": 108, +"type": "cubic" +}, +{ +"x": 143, +"y": 235 +}, +{ +"x": 524, +"y": 235 +}, +{ +"x": 526, +"y": 254, +"type": "cubic" +}, +{ +"x": 526, +"y": 269, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 285, +"y": 465, +"smooth": true +}, +{ +"x": 362, +"y": 465, +"type": "cubic" +}, +{ +"x": 405, +"y": 410, +"type": "cubic" +}, +{ +"x": 413, +"y": 312 +}, +{ +"x": 144, +"y": 312 +}, +{ +"x": 156, +"y": 414, +"type": "cubic" +}, +{ +"x": 210, +"y": 465, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 562 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ecircumflex.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ecircumflex.json new file mode 100644 index 0000000000..7bd9e99aa1 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ecircumflex.json @@ -0,0 +1,208 @@ +{ +"name": "ecircumflex", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 250, +"y": 578 +}, +{ +"x": 283, +"y": 643 +}, +{ +"x": 316, +"y": 578 +}, +{ +"x": 390, +"y": 578 +}, +{ +"x": 324, +"y": 692 +}, +{ +"x": 243, +"y": 692 +}, +{ +"x": 177, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 526, +"y": 279, +"smooth": true +}, +{ +"x": 526, +"y": 429, +"type": "cubic" +}, +{ +"x": 443, +"y": 545, +"type": "cubic" +}, +{ +"x": 289, +"y": 545, +"smooth": true +}, +{ +"x": 136, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 432, +"type": "cubic" +}, +{ +"x": 29, +"y": 264, +"smooth": true +}, +{ +"x": 29, +"y": 76, +"type": "cubic" +}, +{ +"x": 136, +"y": -14, +"type": "cubic" +}, +{ +"x": 278, +"y": -14, +"smooth": true +}, +{ +"x": 394, +"y": -14, +"type": "cubic" +}, +{ +"x": 495, +"y": 46, +"type": "cubic" +}, +{ +"x": 518, +"y": 172 +}, +{ +"x": 407, +"y": 172 +}, +{ +"x": 396, +"y": 105, +"type": "cubic" +}, +{ +"x": 346, +"y": 66, +"type": "cubic" +}, +{ +"x": 282, +"y": 66, +"smooth": true +}, +{ +"x": 210, +"y": 66, +"type": "cubic" +}, +{ +"x": 152, +"y": 108, +"type": "cubic" +}, +{ +"x": 143, +"y": 235 +}, +{ +"x": 524, +"y": 235 +}, +{ +"x": 526, +"y": 254, +"type": "cubic" +}, +{ +"x": 526, +"y": 269, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 285, +"y": 465, +"smooth": true +}, +{ +"x": 362, +"y": 465, +"type": "cubic" +}, +{ +"x": 405, +"y": 410, +"type": "cubic" +}, +{ +"x": 413, +"y": 312 +}, +{ +"x": 144, +"y": 312 +}, +{ +"x": 156, +"y": 414, +"type": "cubic" +}, +{ +"x": 210, +"y": 465, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 562 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/edieresis.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/edieresis.json new file mode 100644 index 0000000000..dbc5d7b955 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/edieresis.json @@ -0,0 +1,305 @@ +{ +"name": "edieresis", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 203, +"y": 580, +"smooth": true +}, +{ +"x": 233, +"y": 580, +"type": "cubic" +}, +{ +"x": 257, +"y": 602, +"type": "cubic" +}, +{ +"x": 257, +"y": 632, +"smooth": true +}, +{ +"x": 257, +"y": 662, +"type": "cubic" +}, +{ +"x": 233, +"y": 685, +"type": "cubic" +}, +{ +"x": 203, +"y": 685, +"smooth": true +}, +{ +"x": 173, +"y": 685, +"type": "cubic" +}, +{ +"x": 150, +"y": 662, +"type": "cubic" +}, +{ +"x": 150, +"y": 632, +"smooth": true +}, +{ +"x": 150, +"y": 602, +"type": "cubic" +}, +{ +"x": 173, +"y": 580, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 363, +"y": 580, +"smooth": true +}, +{ +"x": 393, +"y": 580, +"type": "cubic" +}, +{ +"x": 416, +"y": 602, +"type": "cubic" +}, +{ +"x": 416, +"y": 632, +"smooth": true +}, +{ +"x": 416, +"y": 662, +"type": "cubic" +}, +{ +"x": 393, +"y": 685, +"type": "cubic" +}, +{ +"x": 363, +"y": 685, +"smooth": true +}, +{ +"x": 333, +"y": 685, +"type": "cubic" +}, +{ +"x": 310, +"y": 662, +"type": "cubic" +}, +{ +"x": 310, +"y": 632, +"smooth": true +}, +{ +"x": 310, +"y": 602, +"type": "cubic" +}, +{ +"x": 333, +"y": 580, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 526, +"y": 279, +"smooth": true +}, +{ +"x": 526, +"y": 429, +"type": "cubic" +}, +{ +"x": 443, +"y": 545, +"type": "cubic" +}, +{ +"x": 289, +"y": 545, +"smooth": true +}, +{ +"x": 136, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 432, +"type": "cubic" +}, +{ +"x": 29, +"y": 264, +"smooth": true +}, +{ +"x": 29, +"y": 76, +"type": "cubic" +}, +{ +"x": 136, +"y": -14, +"type": "cubic" +}, +{ +"x": 278, +"y": -14, +"smooth": true +}, +{ +"x": 394, +"y": -14, +"type": "cubic" +}, +{ +"x": 495, +"y": 46, +"type": "cubic" +}, +{ +"x": 518, +"y": 172 +}, +{ +"x": 407, +"y": 172 +}, +{ +"x": 396, +"y": 105, +"type": "cubic" +}, +{ +"x": 346, +"y": 66, +"type": "cubic" +}, +{ +"x": 282, +"y": 66, +"smooth": true +}, +{ +"x": 210, +"y": 66, +"type": "cubic" +}, +{ +"x": 152, +"y": 108, +"type": "cubic" +}, +{ +"x": 143, +"y": 235 +}, +{ +"x": 524, +"y": 235 +}, +{ +"x": 526, +"y": 254, +"type": "cubic" +}, +{ +"x": 526, +"y": 269, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 285, +"y": 465, +"smooth": true +}, +{ +"x": 362, +"y": 465, +"type": "cubic" +}, +{ +"x": 405, +"y": 410, +"type": "cubic" +}, +{ +"x": 413, +"y": 312 +}, +{ +"x": 144, +"y": 312 +}, +{ +"x": 156, +"y": 414, +"type": "cubic" +}, +{ +"x": 210, +"y": 465, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 562 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/edotaccent.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/edotaccent.json new file mode 100644 index 0000000000..f53e96f49e --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/edotaccent.json @@ -0,0 +1,240 @@ +{ +"name": "edotaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 283, +"y": 589, +"smooth": true +}, +{ +"x": 320, +"y": 589, +"type": "cubic" +}, +{ +"x": 348, +"y": 616, +"type": "cubic" +}, +{ +"x": 348, +"y": 653, +"smooth": true +}, +{ +"x": 348, +"y": 689, +"type": "cubic" +}, +{ +"x": 320, +"y": 716, +"type": "cubic" +}, +{ +"x": 283, +"y": 716, +"smooth": true +}, +{ +"x": 246, +"y": 716, +"type": "cubic" +}, +{ +"x": 219, +"y": 689, +"type": "cubic" +}, +{ +"x": 219, +"y": 653, +"smooth": true +}, +{ +"x": 219, +"y": 616, +"type": "cubic" +}, +{ +"x": 246, +"y": 589, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 526, +"y": 279, +"smooth": true +}, +{ +"x": 526, +"y": 429, +"type": "cubic" +}, +{ +"x": 443, +"y": 545, +"type": "cubic" +}, +{ +"x": 289, +"y": 545, +"smooth": true +}, +{ +"x": 136, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 432, +"type": "cubic" +}, +{ +"x": 29, +"y": 264, +"smooth": true +}, +{ +"x": 29, +"y": 76, +"type": "cubic" +}, +{ +"x": 136, +"y": -14, +"type": "cubic" +}, +{ +"x": 278, +"y": -14, +"smooth": true +}, +{ +"x": 394, +"y": -14, +"type": "cubic" +}, +{ +"x": 495, +"y": 46, +"type": "cubic" +}, +{ +"x": 518, +"y": 172 +}, +{ +"x": 407, +"y": 172 +}, +{ +"x": 396, +"y": 105, +"type": "cubic" +}, +{ +"x": 346, +"y": 66, +"type": "cubic" +}, +{ +"x": 282, +"y": 66, +"smooth": true +}, +{ +"x": 210, +"y": 66, +"type": "cubic" +}, +{ +"x": 152, +"y": 108, +"type": "cubic" +}, +{ +"x": 143, +"y": 235 +}, +{ +"x": 524, +"y": 235 +}, +{ +"x": 526, +"y": 254, +"type": "cubic" +}, +{ +"x": 526, +"y": 269, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 285, +"y": 465, +"smooth": true +}, +{ +"x": 362, +"y": 465, +"type": "cubic" +}, +{ +"x": 405, +"y": 410, +"type": "cubic" +}, +{ +"x": 413, +"y": 312 +}, +{ +"x": 144, +"y": 312 +}, +{ +"x": 156, +"y": 414, +"type": "cubic" +}, +{ +"x": 210, +"y": 465, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 562 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/egrave.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/egrave.json new file mode 100644 index 0000000000..9299e68b5e --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/egrave.json @@ -0,0 +1,196 @@ +{ +"name": "egrave", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 258, +"y": 578 +}, +{ +"x": 324, +"y": 578 +}, +{ +"x": 256, +"y": 692 +}, +{ +"x": 156, +"y": 692 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 526, +"y": 279, +"smooth": true +}, +{ +"x": 526, +"y": 429, +"type": "cubic" +}, +{ +"x": 443, +"y": 545, +"type": "cubic" +}, +{ +"x": 289, +"y": 545, +"smooth": true +}, +{ +"x": 136, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 432, +"type": "cubic" +}, +{ +"x": 29, +"y": 264, +"smooth": true +}, +{ +"x": 29, +"y": 76, +"type": "cubic" +}, +{ +"x": 136, +"y": -14, +"type": "cubic" +}, +{ +"x": 278, +"y": -14, +"smooth": true +}, +{ +"x": 394, +"y": -14, +"type": "cubic" +}, +{ +"x": 495, +"y": 46, +"type": "cubic" +}, +{ +"x": 518, +"y": 172 +}, +{ +"x": 407, +"y": 172 +}, +{ +"x": 396, +"y": 105, +"type": "cubic" +}, +{ +"x": 346, +"y": 66, +"type": "cubic" +}, +{ +"x": 282, +"y": 66, +"smooth": true +}, +{ +"x": 210, +"y": 66, +"type": "cubic" +}, +{ +"x": 152, +"y": 108, +"type": "cubic" +}, +{ +"x": 143, +"y": 235 +}, +{ +"x": 524, +"y": 235 +}, +{ +"x": 526, +"y": 254, +"type": "cubic" +}, +{ +"x": 526, +"y": 269, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 285, +"y": 465, +"smooth": true +}, +{ +"x": 362, +"y": 465, +"type": "cubic" +}, +{ +"x": 405, +"y": 410, +"type": "cubic" +}, +{ +"x": 413, +"y": 312 +}, +{ +"x": 144, +"y": 312 +}, +{ +"x": 156, +"y": 414, +"type": "cubic" +}, +{ +"x": 210, +"y": 465, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 562 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/eight.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/eight.json new file mode 100644 index 0000000000..0adcc1e71d --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/eight.json @@ -0,0 +1,274 @@ +{ +"name": "eight", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 423, +"y": 365 +}, +{ +"x": 486, +"y": 387, +"type": "cubic" +}, +{ +"x": 537, +"y": 438, +"type": "cubic" +}, +{ +"x": 537, +"y": 516, +"smooth": true +}, +{ +"x": 537, +"y": 630, +"type": "cubic" +}, +{ +"x": 450, +"y": 704, +"type": "cubic" +}, +{ +"x": 307, +"y": 704, +"smooth": true +}, +{ +"x": 165, +"y": 704, +"type": "cubic" +}, +{ +"x": 77, +"y": 630, +"type": "cubic" +}, +{ +"x": 77, +"y": 516, +"smooth": true +}, +{ +"x": 77, +"y": 439, +"type": "cubic" +}, +{ +"x": 121, +"y": 388, +"type": "cubic" +}, +{ +"x": 182, +"y": 365 +}, +{ +"x": 109, +"y": 342, +"type": "cubic" +}, +{ +"x": 46, +"y": 280, +"type": "cubic" +}, +{ +"x": 46, +"y": 194, +"smooth": true +}, +{ +"x": 46, +"y": 43, +"type": "cubic" +}, +{ +"x": 159, +"y": -15, +"type": "cubic" +}, +{ +"x": 300, +"y": -15, +"smooth": true +}, +{ +"x": 431, +"y": -15, +"type": "cubic" +}, +{ +"x": 555, +"y": 43, +"type": "cubic" +}, +{ +"x": 555, +"y": 194, +"smooth": true +}, +{ +"x": 555, +"y": 280, +"type": "cubic" +}, +{ +"x": 495, +"y": 342, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 307, +"y": 620, +"smooth": true +}, +{ +"x": 383, +"y": 620, +"type": "cubic" +}, +{ +"x": 422, +"y": 573, +"type": "cubic" +}, +{ +"x": 422, +"y": 512, +"smooth": true +}, +{ +"x": 422, +"y": 447, +"type": "cubic" +}, +{ +"x": 381, +"y": 401, +"type": "cubic" +}, +{ +"x": 306, +"y": 401, +"smooth": true +}, +{ +"x": 231, +"y": 401, +"type": "cubic" +}, +{ +"x": 192, +"y": 447, +"type": "cubic" +}, +{ +"x": 192, +"y": 512, +"smooth": true +}, +{ +"x": 192, +"y": 573, +"type": "cubic" +}, +{ +"x": 232, +"y": 620, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 302, +"y": 69, +"smooth": true +}, +{ +"x": 211, +"y": 69, +"type": "cubic" +}, +{ +"x": 164, +"y": 120, +"type": "cubic" +}, +{ +"x": 164, +"y": 193, +"smooth": true +}, +{ +"x": 164, +"y": 261, +"type": "cubic" +}, +{ +"x": 208, +"y": 317, +"type": "cubic" +}, +{ +"x": 301, +"y": 317, +"smooth": true +}, +{ +"x": 396, +"y": 317, +"type": "cubic" +}, +{ +"x": 436, +"y": 260, +"type": "cubic" +}, +{ +"x": 436, +"y": 193, +"smooth": true +}, +{ +"x": 436, +"y": 120, +"type": "cubic" +}, +{ +"x": 394, +"y": 69, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ellipsis.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ellipsis.json new file mode 100644 index 0000000000..2c9fba670a --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ellipsis.json @@ -0,0 +1,216 @@ +{ +"name": "ellipsis", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 111, +"y": 132, +"smooth": true +}, +{ +"x": 68, +"y": 132, +"type": "cubic" +}, +{ +"x": 38, +"y": 102, +"type": "cubic" +}, +{ +"x": 38, +"y": 59, +"smooth": true +}, +{ +"x": 38, +"y": 17, +"type": "cubic" +}, +{ +"x": 68, +"y": -14, +"type": "cubic" +}, +{ +"x": 111, +"y": -14, +"smooth": true +}, +{ +"x": 153, +"y": -14, +"type": "cubic" +}, +{ +"x": 184, +"y": 17, +"type": "cubic" +}, +{ +"x": 184, +"y": 59, +"smooth": true +}, +{ +"x": 184, +"y": 102, +"type": "cubic" +}, +{ +"x": 153, +"y": 132, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 331, +"y": 132, +"smooth": true +}, +{ +"x": 288, +"y": 132, +"type": "cubic" +}, +{ +"x": 258, +"y": 102, +"type": "cubic" +}, +{ +"x": 258, +"y": 59, +"smooth": true +}, +{ +"x": 258, +"y": 17, +"type": "cubic" +}, +{ +"x": 288, +"y": -14, +"type": "cubic" +}, +{ +"x": 331, +"y": -14, +"smooth": true +}, +{ +"x": 373, +"y": -14, +"type": "cubic" +}, +{ +"x": 404, +"y": 17, +"type": "cubic" +}, +{ +"x": 404, +"y": 59, +"smooth": true +}, +{ +"x": 404, +"y": 102, +"type": "cubic" +}, +{ +"x": 373, +"y": 132, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 551, +"y": 132, +"smooth": true +}, +{ +"x": 508, +"y": 132, +"type": "cubic" +}, +{ +"x": 478, +"y": 102, +"type": "cubic" +}, +{ +"x": 478, +"y": 59, +"smooth": true +}, +{ +"x": 478, +"y": 17, +"type": "cubic" +}, +{ +"x": 508, +"y": -14, +"type": "cubic" +}, +{ +"x": 551, +"y": -14, +"smooth": true +}, +{ +"x": 593, +"y": -14, +"type": "cubic" +}, +{ +"x": 624, +"y": 17, +"type": "cubic" +}, +{ +"x": 624, +"y": 59, +"smooth": true +}, +{ +"x": 624, +"y": 102, +"type": "cubic" +}, +{ +"x": 593, +"y": 132, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 672 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/emacron.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/emacron.json new file mode 100644 index 0000000000..def7ae6ea2 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/emacron.json @@ -0,0 +1,196 @@ +{ +"name": "emacron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 411, +"y": 600 +}, +{ +"x": 411, +"y": 663 +}, +{ +"x": 156, +"y": 663 +}, +{ +"x": 156, +"y": 600 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 526, +"y": 279, +"smooth": true +}, +{ +"x": 526, +"y": 429, +"type": "cubic" +}, +{ +"x": 443, +"y": 545, +"type": "cubic" +}, +{ +"x": 289, +"y": 545, +"smooth": true +}, +{ +"x": 136, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 432, +"type": "cubic" +}, +{ +"x": 29, +"y": 264, +"smooth": true +}, +{ +"x": 29, +"y": 76, +"type": "cubic" +}, +{ +"x": 136, +"y": -14, +"type": "cubic" +}, +{ +"x": 278, +"y": -14, +"smooth": true +}, +{ +"x": 394, +"y": -14, +"type": "cubic" +}, +{ +"x": 495, +"y": 46, +"type": "cubic" +}, +{ +"x": 518, +"y": 172 +}, +{ +"x": 407, +"y": 172 +}, +{ +"x": 396, +"y": 105, +"type": "cubic" +}, +{ +"x": 346, +"y": 66, +"type": "cubic" +}, +{ +"x": 282, +"y": 66, +"smooth": true +}, +{ +"x": 210, +"y": 66, +"type": "cubic" +}, +{ +"x": 152, +"y": 108, +"type": "cubic" +}, +{ +"x": 143, +"y": 235 +}, +{ +"x": 524, +"y": 235 +}, +{ +"x": 526, +"y": 254, +"type": "cubic" +}, +{ +"x": 526, +"y": 269, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 285, +"y": 465, +"smooth": true +}, +{ +"x": 362, +"y": 465, +"type": "cubic" +}, +{ +"x": 405, +"y": 410, +"type": "cubic" +}, +{ +"x": 413, +"y": 312 +}, +{ +"x": 144, +"y": 312 +}, +{ +"x": 156, +"y": 414, +"type": "cubic" +}, +{ +"x": 210, +"y": 465, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 562 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/emdash.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/emdash.json new file mode 100644 index 0000000000..42e5e4f92d --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/emdash.json @@ -0,0 +1,42 @@ +{ +"name": "emdash", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 925, +"y": 259 +}, +{ +"x": 925, +"y": 325 +}, +{ +"x": 75, +"y": 325 +}, +{ +"x": 75, +"y": 259 +} +], +"isClosed": true +} +] +}, +"xAdvance": 1000 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/emptyset.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/emptyset.json new file mode 100644 index 0000000000..8a0dda5d9a --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/emptyset.json @@ -0,0 +1,244 @@ +{ +"name": "emptyset", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 802, +"y": 685 +}, +{ +"x": 754, +"y": 733 +}, +{ +"x": 674, +"y": 653 +}, +{ +"x": 606, +"y": 713, +"type": "cubic" +}, +{ +"x": 517, +"y": 749, +"type": "cubic" +}, +{ +"x": 419, +"y": 749, +"smooth": true +}, +{ +"x": 203, +"y": 749, +"type": "cubic" +}, +{ +"x": 30, +"y": 574, +"type": "cubic" +}, +{ +"x": 30, +"y": 355, +"smooth": true +}, +{ +"x": 30, +"y": 258, +"type": "cubic" +}, +{ +"x": 64, +"y": 169, +"type": "cubic" +}, +{ +"x": 121, +"y": 100 +}, +{ +"x": 37, +"y": 16 +}, +{ +"x": 85, +"y": -33 +}, +{ +"x": 170, +"y": 52 +}, +{ +"x": 237, +"y": -5, +"type": "cubic" +}, +{ +"x": 324, +"y": -39, +"type": "cubic" +}, +{ +"x": 419, +"y": -39, +"smooth": true +}, +{ +"x": 635, +"y": -39, +"type": "cubic" +}, +{ +"x": 808, +"y": 136, +"type": "cubic" +}, +{ +"x": 808, +"y": 355, +"smooth": true +}, +{ +"x": 808, +"y": 450, +"type": "cubic" +}, +{ +"x": 776, +"y": 536, +"type": "cubic" +}, +{ +"x": 721, +"y": 604 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 104, +"y": 355, +"smooth": true +}, +{ +"x": 104, +"y": 536, +"type": "cubic" +}, +{ +"x": 243, +"y": 681, +"type": "cubic" +}, +{ +"x": 419, +"y": 681, +"smooth": true +}, +{ +"x": 498, +"y": 681, +"type": "cubic" +}, +{ +"x": 569, +"y": 652, +"type": "cubic" +}, +{ +"x": 624, +"y": 603 +}, +{ +"x": 172, +"y": 151 +}, +{ +"x": 129, +"y": 207, +"type": "cubic" +}, +{ +"x": 104, +"y": 277, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 419, +"y": 29, +"smooth": true +}, +{ +"x": 342, +"y": 29, +"type": "cubic" +}, +{ +"x": 273, +"y": 56, +"type": "cubic" +}, +{ +"x": 219, +"y": 102 +}, +{ +"x": 670, +"y": 553 +}, +{ +"x": 710, +"y": 498, +"type": "cubic" +}, +{ +"x": 734, +"y": 430, +"type": "cubic" +}, +{ +"x": 734, +"y": 355, +"smooth": true +}, +{ +"x": 734, +"y": 173, +"type": "cubic" +}, +{ +"x": 595, +"y": 29, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 838 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/endash.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/endash.json new file mode 100644 index 0000000000..06e5257774 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/endash.json @@ -0,0 +1,42 @@ +{ +"name": "endash", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 425, +"y": 259 +}, +{ +"x": 425, +"y": 325 +}, +{ +"x": 75, +"y": 325 +}, +{ +"x": 75, +"y": 259 +} +], +"isClosed": true +} +] +}, +"xAdvance": 500 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/eng.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/eng.json new file mode 100644 index 0000000000..8f64e60e92 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/eng.json @@ -0,0 +1,213 @@ +{ +"name": "eng", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 538, +"y": 393, +"smooth": true +}, +{ +"x": 528, +"y": 486, +"type": "cubic" +}, +{ +"x": 463, +"y": 545, +"type": "cubic" +}, +{ +"x": 349, +"y": 545, +"smooth": true +}, +{ +"x": 296, +"y": 545, +"type": "cubic" +}, +{ +"x": 257, +"y": 536, +"type": "cubic" +}, +{ +"x": 215, +"y": 504 +}, +{ +"x": 179, +"y": 443 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 238, +"smooth": true +}, +{ +"x": 179, +"y": 404, +"type": "cubic" +}, +{ +"x": 241, +"y": 464, +"type": "cubic" +}, +{ +"x": 317, +"y": 464, +"smooth": true +}, +{ +"x": 392, +"y": 464, +"type": "cubic" +}, +{ +"x": 424, +"y": 422, +"type": "cubic" +}, +{ +"x": 429, +"y": 362, +"smooth": true +}, +{ +"x": 431, +"y": 335, +"type": "cubic" +}, +{ +"x": 431, +"y": 312, +"type": "cubic" +}, +{ +"x": 431, +"y": 287, +"smooth": true +}, +{ +"x": 431, +"y": -46, +"smooth": true +}, +{ +"x": 431, +"y": -56, +"type": "cubic" +}, +{ +"x": 431, +"y": -66, +"type": "cubic" +}, +{ +"x": 430, +"y": -74, +"smooth": true +}, +{ +"x": 426, +"y": -114, +"type": "cubic" +}, +{ +"x": 403, +"y": -125, +"type": "cubic" +}, +{ +"x": 352, +"y": -125 +}, +{ +"x": 352, +"y": -210 +}, +{ +"x": 475, +"y": -210, +"type": "cubic" +}, +{ +"x": 532, +"y": -183, +"type": "cubic" +}, +{ +"x": 540, +"y": -90, +"smooth": true +}, +{ +"x": 541, +"y": -76, +"type": "cubic" +}, +{ +"x": 541, +"y": -67, +"type": "cubic" +}, +{ +"x": 541, +"y": -49, +"smooth": true +}, +{ +"x": 541, +"y": 299, +"smooth": true +}, +{ +"x": 541, +"y": 342, +"type": "cubic" +}, +{ +"x": 540, +"y": 366, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 606 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/eogonek.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/eogonek.json new file mode 100644 index 0000000000..db839f92cb --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/eogonek.json @@ -0,0 +1,281 @@ +{ +"name": "eogonek", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 526, +"y": 279, +"smooth": true +}, +{ +"x": 526, +"y": 429, +"type": "cubic" +}, +{ +"x": 443, +"y": 545, +"type": "cubic" +}, +{ +"x": 289, +"y": 545, +"smooth": true +}, +{ +"x": 136, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 432, +"type": "cubic" +}, +{ +"x": 29, +"y": 264, +"smooth": true +}, +{ +"x": 29, +"y": 88, +"type": "cubic" +}, +{ +"x": 123, +"y": -2, +"type": "cubic" +}, +{ +"x": 252, +"y": -13 +}, +{ +"x": 215, +"y": -41, +"type": "cubic" +}, +{ +"x": 186, +"y": -84, +"type": "cubic" +}, +{ +"x": 186, +"y": -138, +"smooth": true +}, +{ +"x": 186, +"y": -201, +"type": "cubic" +}, +{ +"x": 226, +"y": -223, +"type": "cubic" +}, +{ +"x": 284, +"y": -223, +"smooth": true +}, +{ +"x": 325, +"y": -223, +"type": "cubic" +}, +{ +"x": 359, +"y": -212, +"type": "cubic" +}, +{ +"x": 385, +"y": -192 +}, +{ +"x": 385, +"y": -137 +}, +{ +"x": 367, +"y": -151, +"type": "cubic" +}, +{ +"x": 350, +"y": -157, +"type": "cubic" +}, +{ +"x": 332, +"y": -157, +"smooth": true +}, +{ +"x": 305, +"y": -157, +"type": "cubic" +}, +{ +"x": 288, +"y": -144, +"type": "cubic" +}, +{ +"x": 288, +"y": -107, +"smooth": true +}, +{ +"x": 288, +"y": -58, +"type": "cubic" +}, +{ +"x": 316, +"y": -20, +"type": "cubic" +}, +{ +"x": 351, +"y": -5 +}, +{ +"x": 357, +"y": -4, +"type": "cubic" +}, +{ +"x": 363, +"y": -2, +"type": "cubic" +}, +{ +"x": 370, +"y": 0, +"smooth": true +}, +{ +"x": 444, +"y": 24, +"type": "cubic" +}, +{ +"x": 501, +"y": 81, +"type": "cubic" +}, +{ +"x": 518, +"y": 172 +}, +{ +"x": 407, +"y": 172 +}, +{ +"x": 396, +"y": 105, +"type": "cubic" +}, +{ +"x": 346, +"y": 66, +"type": "cubic" +}, +{ +"x": 282, +"y": 66, +"smooth": true +}, +{ +"x": 210, +"y": 66, +"type": "cubic" +}, +{ +"x": 152, +"y": 108, +"type": "cubic" +}, +{ +"x": 143, +"y": 235 +}, +{ +"x": 524, +"y": 235 +}, +{ +"x": 526, +"y": 254, +"type": "cubic" +}, +{ +"x": 526, +"y": 269, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 285, +"y": 465, +"smooth": true +}, +{ +"x": 362, +"y": 465, +"type": "cubic" +}, +{ +"x": 405, +"y": 410, +"type": "cubic" +}, +{ +"x": 413, +"y": 312 +}, +{ +"x": 144, +"y": 312 +}, +{ +"x": 156, +"y": 414, +"type": "cubic" +}, +{ +"x": 210, +"y": 465, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 562 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/equal.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/equal.json new file mode 100644 index 0000000000..a85b525dc3 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/equal.json @@ -0,0 +1,63 @@ +{ +"name": "equal", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 519, +"y": 384 +}, +{ +"x": 519, +"y": 448 +}, +{ +"x": 82, +"y": 448 +}, +{ +"x": 82, +"y": 384 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 519, +"y": 184 +}, +{ +"x": 519, +"y": 248 +}, +{ +"x": 82, +"y": 248 +}, +{ +"x": 82, +"y": 184 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/eth.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/eth.json new file mode 100644 index 0000000000..0006c3c290 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/eth.json @@ -0,0 +1,244 @@ +{ +"name": "eth", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 511, +"y": 652 +}, +{ +"x": 493, +"y": 710 +}, +{ +"x": 421, +"y": 685 +}, +{ +"x": 392, +"y": 709, +"type": "cubic" +}, +{ +"x": 358, +"y": 728, +"type": "cubic" +}, +{ +"x": 319, +"y": 745 +}, +{ +"x": 240, +"y": 687 +}, +{ +"x": 269, +"y": 676, +"type": "cubic" +}, +{ +"x": 294, +"y": 664, +"type": "cubic" +}, +{ +"x": 316, +"y": 650 +}, +{ +"x": 215, +"y": 615 +}, +{ +"x": 233, +"y": 558 +}, +{ +"x": 370, +"y": 604 +}, +{ +"x": 406, +"y": 565, +"type": "cubic" +}, +{ +"x": 426, +"y": 516, +"type": "cubic" +}, +{ +"x": 432, +"y": 457 +}, +{ +"x": 387, +"y": 516 +}, +{ +"x": 350, +"y": 538, +"type": "cubic" +}, +{ +"x": 320, +"y": 545, +"type": "cubic" +}, +{ +"x": 276, +"y": 545, +"smooth": true +}, +{ +"x": 144, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 440, +"type": "cubic" +}, +{ +"x": 29, +"y": 260, +"smooth": true +}, +{ +"x": 29, +"y": 102, +"type": "cubic" +}, +{ +"x": 115, +"y": -14, +"type": "cubic" +}, +{ +"x": 290, +"y": -14, +"smooth": true +}, +{ +"x": 427, +"y": -14, +"type": "cubic" +}, +{ +"x": 558, +"y": 72, +"type": "cubic" +}, +{ +"x": 558, +"y": 307, +"smooth": true +}, +{ +"x": 558, +"y": 453, +"type": "cubic" +}, +{ +"x": 532, +"y": 560, +"type": "cubic" +}, +{ +"x": 469, +"y": 638 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 442, +"y": 260, +"smooth": true +}, +{ +"x": 442, +"y": 132, +"type": "cubic" +}, +{ +"x": 379, +"y": 69, +"type": "cubic" +}, +{ +"x": 294, +"y": 69, +"smooth": true +}, +{ +"x": 197, +"y": 69, +"type": "cubic" +}, +{ +"x": 146, +"y": 142, +"type": "cubic" +}, +{ +"x": 146, +"y": 267, +"smooth": true +}, +{ +"x": 146, +"y": 384, +"type": "cubic" +}, +{ +"x": 204, +"y": 463, +"type": "cubic" +}, +{ +"x": 294, +"y": 463, +"smooth": true +}, +{ +"x": 367, +"y": 463, +"type": "cubic" +}, +{ +"x": 442, +"y": 411, +"type": "cubic" +}, +{ +"x": 442, +"y": 289, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 604 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/exclam.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/exclam.json new file mode 100644 index 0000000000..4ce79b763a --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/exclam.json @@ -0,0 +1,107 @@ +{ +"name": "exclam", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 172, +"y": 188 +}, +{ +"x": 184, +"y": 690 +}, +{ +"x": 67, +"y": 690 +}, +{ +"x": 79, +"y": 188 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 126, +"y": 127, +"smooth": true +}, +{ +"x": 85, +"y": 127, +"type": "cubic" +}, +{ +"x": 55, +"y": 97, +"type": "cubic" +}, +{ +"x": 55, +"y": 56, +"smooth": true +}, +{ +"x": 55, +"y": 15, +"type": "cubic" +}, +{ +"x": 85, +"y": -14, +"type": "cubic" +}, +{ +"x": 126, +"y": -14, +"smooth": true +}, +{ +"x": 167, +"y": -14, +"type": "cubic" +}, +{ +"x": 196, +"y": 15, +"type": "cubic" +}, +{ +"x": 196, +"y": 56, +"smooth": true +}, +{ +"x": 196, +"y": 97, +"type": "cubic" +}, +{ +"x": 167, +"y": 127, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 252 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/exclamdown.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/exclamdown.json new file mode 100644 index 0000000000..936e819924 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/exclamdown.json @@ -0,0 +1,107 @@ +{ +"name": "exclamdown", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 126, +"y": 403, +"smooth": true +}, +{ +"x": 167, +"y": 403, +"type": "cubic" +}, +{ +"x": 196, +"y": 433, +"type": "cubic" +}, +{ +"x": 196, +"y": 474, +"smooth": true +}, +{ +"x": 196, +"y": 515, +"type": "cubic" +}, +{ +"x": 167, +"y": 544, +"type": "cubic" +}, +{ +"x": 126, +"y": 544, +"smooth": true +}, +{ +"x": 85, +"y": 544, +"type": "cubic" +}, +{ +"x": 55, +"y": 515, +"type": "cubic" +}, +{ +"x": 55, +"y": 474, +"smooth": true +}, +{ +"x": 55, +"y": 433, +"type": "cubic" +}, +{ +"x": 85, +"y": 403, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 79, +"y": 343 +}, +{ +"x": 67, +"y": -160 +}, +{ +"x": 184, +"y": -160 +}, +{ +"x": 172, +"y": 343 +} +], +"isClosed": true +} +] +}, +"xAdvance": 252 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/f.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/f.json new file mode 100644 index 0000000000..86f0563023 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/f.json @@ -0,0 +1,149 @@ +{ +"name": "f", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 190, +"y": 618, +"smooth": true +}, +{ +"x": 196, +"y": 662, +"type": "cubic" +}, +{ +"x": 240, +"y": 678, +"type": "cubic" +}, +{ +"x": 305, +"y": 666 +}, +{ +"x": 305, +"y": 748 +}, +{ +"x": 287, +"y": 752, +"type": "cubic" +}, +{ +"x": 266, +"y": 754, +"type": "cubic" +}, +{ +"x": 244, +"y": 754, +"smooth": true +}, +{ +"x": 144, +"y": 754, +"type": "cubic" +}, +{ +"x": 89, +"y": 706, +"type": "cubic" +}, +{ +"x": 80, +"y": 624, +"smooth": true +}, +{ +"x": 78, +"y": 606, +"type": "cubic" +}, +{ +"x": 78, +"y": 580, +"type": "cubic" +}, +{ +"x": 78, +"y": 561, +"smooth": true +}, +{ +"x": 78, +"y": 527 +}, +{ +"x": 21, +"y": 527 +}, +{ +"x": 21, +"y": 450 +}, +{ +"x": 78, +"y": 450 +}, +{ +"x": 78, +"y": 0 +}, +{ +"x": 187, +"y": 0 +}, +{ +"x": 187, +"y": 450 +}, +{ +"x": 296, +"y": 450 +}, +{ +"x": 296, +"y": 527 +}, +{ +"x": 187, +"y": 527 +}, +{ +"x": 187, +"y": 567, +"smooth": true +}, +{ +"x": 187, +"y": 582, +"type": "cubic" +}, +{ +"x": 188, +"y": 604, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 312 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/fi.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/fi.json new file mode 100644 index 0000000000..40ca49acd1 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/fi.json @@ -0,0 +1,157 @@ +{ +"name": "fi", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 486, +"y": 527 +}, +{ +"x": 187, +"y": 527 +}, +{ +"x": 187, +"y": 545, +"smooth": true +}, +{ +"x": 187, +"y": 559, +"type": "cubic" +}, +{ +"x": 188, +"y": 581, +"type": "cubic" +}, +{ +"x": 190, +"y": 595, +"smooth": true +}, +{ +"x": 198, +"y": 654, +"type": "cubic" +}, +{ +"x": 243, +"y": 676, +"type": "cubic" +}, +{ +"x": 377, +"y": 666 +}, +{ +"x": 377, +"y": 748 +}, +{ +"x": 356, +"y": 752, +"type": "cubic" +}, +{ +"x": 335, +"y": 754, +"type": "cubic" +}, +{ +"x": 308, +"y": 754, +"smooth": true +}, +{ +"x": 155, +"y": 754, +"type": "cubic" +}, +{ +"x": 90, +"y": 699, +"type": "cubic" +}, +{ +"x": 80, +"y": 601, +"smooth": true +}, +{ +"x": 78, +"y": 583, +"type": "cubic" +}, +{ +"x": 78, +"y": 558, +"type": "cubic" +}, +{ +"x": 78, +"y": 539, +"smooth": true +}, +{ +"x": 78, +"y": 527 +}, +{ +"x": 21, +"y": 527 +}, +{ +"x": 21, +"y": 450 +}, +{ +"x": 78, +"y": 450 +}, +{ +"x": 78, +"y": 0 +}, +{ +"x": 187, +"y": 0 +}, +{ +"x": 187, +"y": 450 +}, +{ +"x": 377, +"y": 450 +}, +{ +"x": 377, +"y": 0 +}, +{ +"x": 486, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 558 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/five.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/five.json new file mode 100644 index 0000000000..a6f0e87948 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/five.json @@ -0,0 +1,185 @@ +{ +"name": "five", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 325, +"y": 459, +"smooth": true +}, +{ +"x": 284, +"y": 459, +"type": "cubic" +}, +{ +"x": 249, +"y": 450, +"type": "cubic" +}, +{ +"x": 217, +"y": 431 +}, +{ +"x": 178, +"y": 384 +}, +{ +"x": 206, +"y": 603 +}, +{ +"x": 526, +"y": 603 +}, +{ +"x": 526, +"y": 690 +}, +{ +"x": 117, +"y": 690 +}, +{ +"x": 68, +"y": 286 +}, +{ +"x": 171, +"y": 286 +}, +{ +"x": 201, +"y": 350, +"type": "cubic" +}, +{ +"x": 242, +"y": 375, +"type": "cubic" +}, +{ +"x": 301, +"y": 375, +"smooth": true +}, +{ +"x": 386, +"y": 375, +"type": "cubic" +}, +{ +"x": 436, +"y": 314, +"type": "cubic" +}, +{ +"x": 436, +"y": 221, +"smooth": true +}, +{ +"x": 436, +"y": 127, +"type": "cubic" +}, +{ +"x": 383, +"y": 70, +"type": "cubic" +}, +{ +"x": 298, +"y": 70, +"smooth": true +}, +{ +"x": 221, +"y": 70, +"type": "cubic" +}, +{ +"x": 182, +"y": 115, +"type": "cubic" +}, +{ +"x": 168, +"y": 186 +}, +{ +"x": 167, +"y": 196 +}, +{ +"x": 57, +"y": 196 +}, +{ +"x": 58, +"y": 186, +"smooth": true +}, +{ +"x": 72, +"y": 52, +"type": "cubic" +}, +{ +"x": 156, +"y": -14, +"type": "cubic" +}, +{ +"x": 301, +"y": -14, +"smooth": true +}, +{ +"x": 433, +"y": -14, +"type": "cubic" +}, +{ +"x": 555, +"y": 72, +"type": "cubic" +}, +{ +"x": 555, +"y": 226, +"smooth": true +}, +{ +"x": 555, +"y": 362, +"type": "cubic" +}, +{ +"x": 475, +"y": 459, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/fl.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/fl.json new file mode 100644 index 0000000000..833c5b50fe --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/fl.json @@ -0,0 +1,247 @@ +{ +"name": "fl", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 465, +"y": 112, +"smooth": true +}, +{ +"x": 464, +"y": 128, +"type": "cubic" +}, +{ +"x": 464, +"y": 144, +"type": "cubic" +}, +{ +"x": 464, +"y": 162, +"smooth": true +}, +{ +"x": 464, +"y": 732 +}, +{ +"x": 420, +"y": 747, +"type": "cubic" +}, +{ +"x": 363, +"y": 754, +"type": "cubic" +}, +{ +"x": 291, +"y": 754, +"smooth": true +}, +{ +"x": 148, +"y": 754, +"type": "cubic" +}, +{ +"x": 80, +"y": 696, +"type": "cubic" +}, +{ +"x": 70, +"y": 599, +"smooth": true +}, +{ +"x": 68, +"y": 581, +"type": "cubic" +}, +{ +"x": 68, +"y": 558, +"type": "cubic" +}, +{ +"x": 68, +"y": 539, +"smooth": true +}, +{ +"x": 68, +"y": 527 +}, +{ +"x": 21, +"y": 527 +}, +{ +"x": 21, +"y": 450 +}, +{ +"x": 68, +"y": 450 +}, +{ +"x": 68, +"y": 0 +}, +{ +"x": 177, +"y": 0 +}, +{ +"x": 177, +"y": 450 +}, +{ +"x": 286, +"y": 450 +}, +{ +"x": 286, +"y": 527 +}, +{ +"x": 177, +"y": 527 +}, +{ +"x": 177, +"y": 545, +"smooth": true +}, +{ +"x": 177, +"y": 559, +"type": "cubic" +}, +{ +"x": 178, +"y": 581, +"type": "cubic" +}, +{ +"x": 180, +"y": 595, +"smooth": true +}, +{ +"x": 186, +"y": 642, +"type": "cubic" +}, +{ +"x": 218, +"y": 674, +"type": "cubic" +}, +{ +"x": 288, +"y": 674, +"smooth": true +}, +{ +"x": 313, +"y": 674, +"type": "cubic" +}, +{ +"x": 335, +"y": 672, +"type": "cubic" +}, +{ +"x": 355, +"y": 667 +}, +{ +"x": 355, +"y": 159, +"smooth": true +}, +{ +"x": 355, +"y": 127, +"type": "cubic" +}, +{ +"x": 355, +"y": 103, +"type": "cubic" +}, +{ +"x": 356, +"y": 83, +"smooth": true +}, +{ +"x": 359, +"y": 15, +"type": "cubic" +}, +{ +"x": 399, +"y": -6, +"type": "cubic" +}, +{ +"x": 454, +"y": -6, +"smooth": true +}, +{ +"x": 479, +"y": -6, +"type": "cubic" +}, +{ +"x": 505, +"y": -4, +"type": "cubic" +}, +{ +"x": 529, +"y": -1 +}, +{ +"x": 529, +"y": 74 +}, +{ +"x": 484, +"y": 69, +"type": "cubic" +}, +{ +"x": 468, +"y": 79, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 551 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/four.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/four.json new file mode 100644 index 0000000000..1905228e88 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/four.json @@ -0,0 +1,102 @@ +{ +"name": "four", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 568, +"y": 169 +}, +{ +"x": 568, +"y": 257 +}, +{ +"x": 481, +"y": 257 +}, +{ +"x": 481, +"y": 690 +}, +{ +"x": 368, +"y": 690 +}, +{ +"x": 34, +"y": 226 +}, +{ +"x": 34, +"y": 169 +}, +{ +"x": 372, +"y": 169 +}, +{ +"x": 372, +"y": 0 +}, +{ +"x": 481, +"y": 0 +}, +{ +"x": 481, +"y": 169 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 372, +"y": 257 +}, +{ +"x": 163, +"y": 257 +}, +{ +"x": 320, +"y": 475, +"smooth": true +}, +{ +"x": 341, +"y": 503, +"type": "cubic" +}, +{ +"x": 357, +"y": 530, +"type": "cubic" +}, +{ +"x": 372, +"y": 556 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/fraction.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/fraction.json new file mode 100644 index 0000000000..b6677e18a0 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/fraction.json @@ -0,0 +1,42 @@ +{ +"name": "fraction", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": -42, +"y": 0 +}, +{ +"x": 406, +"y": 690 +}, +{ +"x": 310, +"y": 690 +}, +{ +"x": -138, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 269 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/g.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/g.json new file mode 100644 index 0000000000..f9f82e5cd0 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/g.json @@ -0,0 +1,283 @@ +{ +"name": "g", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 557, +"y": 531 +}, +{ +"x": 447, +"y": 531 +}, +{ +"x": 447, +"y": 459 +}, +{ +"x": 412, +"y": 512 +}, +{ +"x": 385, +"y": 533, +"type": "cubic" +}, +{ +"x": 330, +"y": 545, +"type": "cubic" +}, +{ +"x": 286, +"y": 545, +"smooth": true +}, +{ +"x": 149, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 453, +"type": "cubic" +}, +{ +"x": 29, +"y": 259, +"smooth": true +}, +{ +"x": 29, +"y": 103, +"type": "cubic" +}, +{ +"x": 118, +"y": -9, +"type": "cubic" +}, +{ +"x": 271, +"y": -9, +"smooth": true +}, +{ +"x": 325, +"y": -9, +"type": "cubic" +}, +{ +"x": 377, +"y": 7, +"type": "cubic" +}, +{ +"x": 407, +"y": 31 +}, +{ +"x": 447, +"y": 89 +}, +{ +"x": 447, +"y": 78, +"smooth": true +}, +{ +"x": 447, +"y": 59, +"type": "cubic" +}, +{ +"x": 447, +"y": 40, +"type": "cubic" +}, +{ +"x": 446, +"y": 17, +"smooth": true +}, +{ +"x": 442, +"y": -78, +"type": "cubic" +}, +{ +"x": 387, +"y": -130, +"type": "cubic" +}, +{ +"x": 291, +"y": -130, +"smooth": true +}, +{ +"x": 209, +"y": -130, +"type": "cubic" +}, +{ +"x": 160, +"y": -91, +"type": "cubic" +}, +{ +"x": 153, +"y": -34, +"smooth": true +}, +{ +"x": 152, +"y": -25 +}, +{ +"x": 44, +"y": -25 +}, +{ +"x": 45, +"y": -35, +"smooth": true +}, +{ +"x": 56, +"y": -149, +"type": "cubic" +}, +{ +"x": 137, +"y": -213, +"type": "cubic" +}, +{ +"x": 290, +"y": -213, +"smooth": true +}, +{ +"x": 450, +"y": -213, +"type": "cubic" +}, +{ +"x": 550, +"y": -132, +"type": "cubic" +}, +{ +"x": 556, +"y": 29, +"smooth": true +}, +{ +"x": 557, +"y": 58, +"type": "cubic" +}, +{ +"x": 557, +"y": 99, +"type": "cubic" +}, +{ +"x": 557, +"y": 132, +"smooth": true +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 293, +"y": 71, +"smooth": true +}, +{ +"x": 198, +"y": 71, +"type": "cubic" +}, +{ +"x": 145, +"y": 154, +"type": "cubic" +}, +{ +"x": 145, +"y": 269, +"smooth": true +}, +{ +"x": 145, +"y": 401, +"type": "cubic" +}, +{ +"x": 211, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 369, +"y": 465, +"type": "cubic" +}, +{ +"x": 447, +"y": 417, +"type": "cubic" +}, +{ +"x": 447, +"y": 288, +"smooth": true +}, +{ +"x": 447, +"y": 265, +"smooth": true +}, +{ +"x": 447, +"y": 123, +"type": "cubic" +}, +{ +"x": 376, +"y": 71, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 629 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/gbreve.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/gbreve.json new file mode 100644 index 0000000000..058bd2932c --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/gbreve.json @@ -0,0 +1,354 @@ +{ +"name": "gbreve", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 310, +"y": 567, +"smooth": true +}, +{ +"x": 381, +"y": 567, +"type": "cubic" +}, +{ +"x": 420, +"y": 605, +"type": "cubic" +}, +{ +"x": 420, +"y": 692 +}, +{ +"x": 358, +"y": 692 +}, +{ +"x": 357, +"y": 646, +"type": "cubic" +}, +{ +"x": 339, +"y": 629, +"type": "cubic" +}, +{ +"x": 310, +"y": 629, +"smooth": true +}, +{ +"x": 281, +"y": 629, +"type": "cubic" +}, +{ +"x": 263, +"y": 646, +"type": "cubic" +}, +{ +"x": 262, +"y": 692 +}, +{ +"x": 200, +"y": 692 +}, +{ +"x": 200, +"y": 605, +"type": "cubic" +}, +{ +"x": 238, +"y": 567, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 557, +"y": 531 +}, +{ +"x": 447, +"y": 531 +}, +{ +"x": 447, +"y": 459 +}, +{ +"x": 412, +"y": 512 +}, +{ +"x": 385, +"y": 533, +"type": "cubic" +}, +{ +"x": 330, +"y": 545, +"type": "cubic" +}, +{ +"x": 286, +"y": 545, +"smooth": true +}, +{ +"x": 149, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 453, +"type": "cubic" +}, +{ +"x": 29, +"y": 259, +"smooth": true +}, +{ +"x": 29, +"y": 103, +"type": "cubic" +}, +{ +"x": 118, +"y": -9, +"type": "cubic" +}, +{ +"x": 271, +"y": -9, +"smooth": true +}, +{ +"x": 325, +"y": -9, +"type": "cubic" +}, +{ +"x": 377, +"y": 7, +"type": "cubic" +}, +{ +"x": 407, +"y": 31 +}, +{ +"x": 447, +"y": 89 +}, +{ +"x": 447, +"y": 78, +"smooth": true +}, +{ +"x": 447, +"y": 59, +"type": "cubic" +}, +{ +"x": 447, +"y": 40, +"type": "cubic" +}, +{ +"x": 446, +"y": 17, +"smooth": true +}, +{ +"x": 442, +"y": -78, +"type": "cubic" +}, +{ +"x": 387, +"y": -130, +"type": "cubic" +}, +{ +"x": 291, +"y": -130, +"smooth": true +}, +{ +"x": 209, +"y": -130, +"type": "cubic" +}, +{ +"x": 160, +"y": -91, +"type": "cubic" +}, +{ +"x": 153, +"y": -34, +"smooth": true +}, +{ +"x": 152, +"y": -25 +}, +{ +"x": 44, +"y": -25 +}, +{ +"x": 45, +"y": -35, +"smooth": true +}, +{ +"x": 56, +"y": -149, +"type": "cubic" +}, +{ +"x": 137, +"y": -213, +"type": "cubic" +}, +{ +"x": 290, +"y": -213, +"smooth": true +}, +{ +"x": 450, +"y": -213, +"type": "cubic" +}, +{ +"x": 550, +"y": -132, +"type": "cubic" +}, +{ +"x": 556, +"y": 29, +"smooth": true +}, +{ +"x": 557, +"y": 58, +"type": "cubic" +}, +{ +"x": 557, +"y": 99, +"type": "cubic" +}, +{ +"x": 557, +"y": 132, +"smooth": true +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 293, +"y": 71, +"smooth": true +}, +{ +"x": 198, +"y": 71, +"type": "cubic" +}, +{ +"x": 145, +"y": 154, +"type": "cubic" +}, +{ +"x": 145, +"y": 269, +"smooth": true +}, +{ +"x": 145, +"y": 401, +"type": "cubic" +}, +{ +"x": 211, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 369, +"y": 465, +"type": "cubic" +}, +{ +"x": 447, +"y": 417, +"type": "cubic" +}, +{ +"x": 447, +"y": 288, +"smooth": true +}, +{ +"x": 447, +"y": 265, +"smooth": true +}, +{ +"x": 447, +"y": 123, +"type": "cubic" +}, +{ +"x": 376, +"y": 71, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 629 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/gcommaaccent.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/gcommaaccent.json new file mode 100644 index 0000000000..21a2d0d9cd --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/gcommaaccent.json @@ -0,0 +1,308 @@ +{ +"name": "gcommaaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 343, +"y": 578 +}, +{ +"x": 403, +"y": 730 +}, +{ +"x": 333, +"y": 730 +}, +{ +"x": 263, +"y": 589 +}, +{ +"x": 263, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 557, +"y": 531 +}, +{ +"x": 447, +"y": 531 +}, +{ +"x": 447, +"y": 459 +}, +{ +"x": 412, +"y": 512 +}, +{ +"x": 385, +"y": 533, +"type": "cubic" +}, +{ +"x": 330, +"y": 545, +"type": "cubic" +}, +{ +"x": 286, +"y": 545, +"smooth": true +}, +{ +"x": 149, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 453, +"type": "cubic" +}, +{ +"x": 29, +"y": 259, +"smooth": true +}, +{ +"x": 29, +"y": 103, +"type": "cubic" +}, +{ +"x": 118, +"y": -9, +"type": "cubic" +}, +{ +"x": 271, +"y": -9, +"smooth": true +}, +{ +"x": 325, +"y": -9, +"type": "cubic" +}, +{ +"x": 377, +"y": 7, +"type": "cubic" +}, +{ +"x": 407, +"y": 31 +}, +{ +"x": 447, +"y": 89 +}, +{ +"x": 447, +"y": 78, +"smooth": true +}, +{ +"x": 447, +"y": 59, +"type": "cubic" +}, +{ +"x": 447, +"y": 40, +"type": "cubic" +}, +{ +"x": 446, +"y": 17, +"smooth": true +}, +{ +"x": 442, +"y": -78, +"type": "cubic" +}, +{ +"x": 387, +"y": -130, +"type": "cubic" +}, +{ +"x": 291, +"y": -130, +"smooth": true +}, +{ +"x": 209, +"y": -130, +"type": "cubic" +}, +{ +"x": 160, +"y": -91, +"type": "cubic" +}, +{ +"x": 153, +"y": -34, +"smooth": true +}, +{ +"x": 152, +"y": -25 +}, +{ +"x": 44, +"y": -25 +}, +{ +"x": 45, +"y": -35, +"smooth": true +}, +{ +"x": 56, +"y": -149, +"type": "cubic" +}, +{ +"x": 137, +"y": -213, +"type": "cubic" +}, +{ +"x": 290, +"y": -213, +"smooth": true +}, +{ +"x": 450, +"y": -213, +"type": "cubic" +}, +{ +"x": 550, +"y": -132, +"type": "cubic" +}, +{ +"x": 556, +"y": 29, +"smooth": true +}, +{ +"x": 557, +"y": 58, +"type": "cubic" +}, +{ +"x": 557, +"y": 99, +"type": "cubic" +}, +{ +"x": 557, +"y": 132, +"smooth": true +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 293, +"y": 71, +"smooth": true +}, +{ +"x": 198, +"y": 71, +"type": "cubic" +}, +{ +"x": 145, +"y": 154, +"type": "cubic" +}, +{ +"x": 145, +"y": 269, +"smooth": true +}, +{ +"x": 145, +"y": 401, +"type": "cubic" +}, +{ +"x": 211, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 369, +"y": 465, +"type": "cubic" +}, +{ +"x": 447, +"y": 417, +"type": "cubic" +}, +{ +"x": 447, +"y": 288, +"smooth": true +}, +{ +"x": 447, +"y": 265, +"smooth": true +}, +{ +"x": 447, +"y": 123, +"type": "cubic" +}, +{ +"x": 376, +"y": 71, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 629 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/gdotaccent.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/gdotaccent.json new file mode 100644 index 0000000000..d30fc03991 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/gdotaccent.json @@ -0,0 +1,348 @@ +{ +"name": "gdotaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 310, +"y": 589, +"smooth": true +}, +{ +"x": 347, +"y": 589, +"type": "cubic" +}, +{ +"x": 375, +"y": 616, +"type": "cubic" +}, +{ +"x": 375, +"y": 653, +"smooth": true +}, +{ +"x": 375, +"y": 689, +"type": "cubic" +}, +{ +"x": 347, +"y": 716, +"type": "cubic" +}, +{ +"x": 310, +"y": 716, +"smooth": true +}, +{ +"x": 273, +"y": 716, +"type": "cubic" +}, +{ +"x": 246, +"y": 689, +"type": "cubic" +}, +{ +"x": 246, +"y": 653, +"smooth": true +}, +{ +"x": 246, +"y": 616, +"type": "cubic" +}, +{ +"x": 273, +"y": 589, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 557, +"y": 531 +}, +{ +"x": 447, +"y": 531 +}, +{ +"x": 447, +"y": 459 +}, +{ +"x": 412, +"y": 512 +}, +{ +"x": 385, +"y": 533, +"type": "cubic" +}, +{ +"x": 330, +"y": 545, +"type": "cubic" +}, +{ +"x": 286, +"y": 545, +"smooth": true +}, +{ +"x": 149, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 453, +"type": "cubic" +}, +{ +"x": 29, +"y": 259, +"smooth": true +}, +{ +"x": 29, +"y": 103, +"type": "cubic" +}, +{ +"x": 118, +"y": -9, +"type": "cubic" +}, +{ +"x": 271, +"y": -9, +"smooth": true +}, +{ +"x": 325, +"y": -9, +"type": "cubic" +}, +{ +"x": 377, +"y": 7, +"type": "cubic" +}, +{ +"x": 407, +"y": 31 +}, +{ +"x": 447, +"y": 89 +}, +{ +"x": 447, +"y": 78, +"smooth": true +}, +{ +"x": 447, +"y": 59, +"type": "cubic" +}, +{ +"x": 447, +"y": 40, +"type": "cubic" +}, +{ +"x": 446, +"y": 17, +"smooth": true +}, +{ +"x": 442, +"y": -78, +"type": "cubic" +}, +{ +"x": 387, +"y": -130, +"type": "cubic" +}, +{ +"x": 291, +"y": -130, +"smooth": true +}, +{ +"x": 209, +"y": -130, +"type": "cubic" +}, +{ +"x": 160, +"y": -91, +"type": "cubic" +}, +{ +"x": 153, +"y": -34, +"smooth": true +}, +{ +"x": 152, +"y": -25 +}, +{ +"x": 44, +"y": -25 +}, +{ +"x": 45, +"y": -35, +"smooth": true +}, +{ +"x": 56, +"y": -149, +"type": "cubic" +}, +{ +"x": 137, +"y": -213, +"type": "cubic" +}, +{ +"x": 290, +"y": -213, +"smooth": true +}, +{ +"x": 450, +"y": -213, +"type": "cubic" +}, +{ +"x": 550, +"y": -132, +"type": "cubic" +}, +{ +"x": 556, +"y": 29, +"smooth": true +}, +{ +"x": 557, +"y": 58, +"type": "cubic" +}, +{ +"x": 557, +"y": 99, +"type": "cubic" +}, +{ +"x": 557, +"y": 132, +"smooth": true +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 293, +"y": 71, +"smooth": true +}, +{ +"x": 198, +"y": 71, +"type": "cubic" +}, +{ +"x": 145, +"y": 154, +"type": "cubic" +}, +{ +"x": 145, +"y": 269, +"smooth": true +}, +{ +"x": 145, +"y": 401, +"type": "cubic" +}, +{ +"x": 211, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 369, +"y": 465, +"type": "cubic" +}, +{ +"x": 447, +"y": 417, +"type": "cubic" +}, +{ +"x": 447, +"y": 288, +"smooth": true +}, +{ +"x": 447, +"y": 265, +"smooth": true +}, +{ +"x": 447, +"y": 123, +"type": "cubic" +}, +{ +"x": 376, +"y": 71, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 629 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/germandbls.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/germandbls.json new file mode 100644 index 0000000000..40272d69d0 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/germandbls.json @@ -0,0 +1,310 @@ +{ +"name": "germandbls", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 313, +"y": 754, +"smooth": true +}, +{ +"x": 180, +"y": 754, +"type": "cubic" +}, +{ +"x": 79, +"y": 683, +"type": "cubic" +}, +{ +"x": 71, +"y": 542, +"smooth": true +}, +{ +"x": 70, +"y": 524, +"type": "cubic" +}, +{ +"x": 69, +"y": 498, +"type": "cubic" +}, +{ +"x": 69, +"y": 468, +"smooth": true +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 476, +"smooth": true +}, +{ +"x": 179, +"y": 507, +"type": "cubic" +}, +{ +"x": 180, +"y": 526, +"type": "cubic" +}, +{ +"x": 181, +"y": 540, +"smooth": true +}, +{ +"x": 187, +"y": 626, +"type": "cubic" +}, +{ +"x": 238, +"y": 670, +"type": "cubic" +}, +{ +"x": 309, +"y": 670, +"smooth": true +}, +{ +"x": 388, +"y": 670, +"type": "cubic" +}, +{ +"x": 426, +"y": 633, +"type": "cubic" +}, +{ +"x": 426, +"y": 573, +"smooth": true +}, +{ +"x": 426, +"y": 552, +"type": "cubic" +}, +{ +"x": 422, +"y": 535, +"type": "cubic" +}, +{ +"x": 409, +"y": 514 +}, +{ +"x": 350, +"y": 483, +"type": "cubic" +}, +{ +"x": 325, +"y": 446, +"type": "cubic" +}, +{ +"x": 325, +"y": 398, +"smooth": true +}, +{ +"x": 325, +"y": 341, +"type": "cubic" +}, +{ +"x": 349, +"y": 311, +"type": "cubic" +}, +{ +"x": 408, +"y": 257, +"smooth": true +}, +{ +"x": 456, +"y": 214, +"type": "cubic" +}, +{ +"x": 467, +"y": 187, +"type": "cubic" +}, +{ +"x": 467, +"y": 156, +"smooth": true +}, +{ +"x": 467, +"y": 109, +"type": "cubic" +}, +{ +"x": 440, +"y": 79, +"type": "cubic" +}, +{ +"x": 381, +"y": 79, +"smooth": true +}, +{ +"x": 359, +"y": 79, +"type": "cubic" +}, +{ +"x": 331, +"y": 81, +"type": "cubic" +}, +{ +"x": 287, +"y": 92 +}, +{ +"x": 287, +"y": 6 +}, +{ +"x": 326, +"y": -2, +"type": "cubic" +}, +{ +"x": 352, +"y": -4, +"type": "cubic" +}, +{ +"x": 395, +"y": -4, +"smooth": true +}, +{ +"x": 498, +"y": -4, +"type": "cubic" +}, +{ +"x": 586, +"y": 49, +"type": "cubic" +}, +{ +"x": 586, +"y": 145, +"smooth": true +}, +{ +"x": 586, +"y": 218, +"type": "cubic" +}, +{ +"x": 561, +"y": 256, +"type": "cubic" +}, +{ +"x": 504, +"y": 305, +"smooth": true +}, +{ +"x": 462, +"y": 342, +"type": "cubic" +}, +{ +"x": 444, +"y": 364, +"type": "cubic" +}, +{ +"x": 444, +"y": 398, +"smooth": true +}, +{ +"x": 444, +"y": 426, +"type": "cubic" +}, +{ +"x": 467, +"y": 450, +"type": "cubic" +}, +{ +"x": 515, +"y": 476 +}, +{ +"x": 537, +"y": 510, +"type": "cubic" +}, +{ +"x": 545, +"y": 544, +"type": "cubic" +}, +{ +"x": 545, +"y": 574, +"smooth": true +}, +{ +"x": 545, +"y": 682, +"type": "cubic" +}, +{ +"x": 458, +"y": 754, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 623 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/grave.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/grave.json new file mode 100644 index 0000000000..ff6ea649b3 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/grave.json @@ -0,0 +1,42 @@ +{ +"name": "grave", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 191, +"y": 578 +}, +{ +"x": 123, +"y": 692 +}, +{ +"x": 23, +"y": 692 +}, +{ +"x": 125, +"y": 578 +} +], +"isClosed": true +} +] +}, +"xAdvance": 300 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/greater.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/greater.json new file mode 100644 index 0000000000..37a9cb6488 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/greater.json @@ -0,0 +1,54 @@ +{ +"name": "greater", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 487, +"y": 308 +}, +{ +"x": 69, +"y": 503 +}, +{ +"x": 69, +"y": 420 +}, +{ +"x": 416, +"y": 264 +}, +{ +"x": 69, +"y": 108 +}, +{ +"x": 69, +"y": 28 +}, +{ +"x": 487, +"y": 223 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/greaterequal.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/greaterequal.json new file mode 100644 index 0000000000..d18b1d54f8 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/greaterequal.json @@ -0,0 +1,75 @@ +{ +"name": "greaterequal", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 501, +"y": 354 +}, +{ +"x": 78, +"y": 515 +}, +{ +"x": 78, +"y": 436 +}, +{ +"x": 429, +"y": 312 +}, +{ +"x": 78, +"y": 186 +}, +{ +"x": 78, +"y": 107 +}, +{ +"x": 501, +"y": 269 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 78, +"y": 66 +}, +{ +"x": 78, +"y": 0 +}, +{ +"x": 501, +"y": 0 +}, +{ +"x": 501, +"y": 66 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/guillemotleft.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/guillemotleft.json new file mode 100644 index 0000000000..e2b7fd106b --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/guillemotleft.json @@ -0,0 +1,79 @@ +{ +"name": "guillemotleft", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 351, +"y": 414 +}, +{ +"x": 264, +"y": 414 +}, +{ +"x": 127, +"y": 248 +}, +{ +"x": 264, +"y": 82 +}, +{ +"x": 351, +"y": 82 +}, +{ +"x": 214, +"y": 248 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 538, +"y": 414 +}, +{ +"x": 451, +"y": 414 +}, +{ +"x": 314, +"y": 248 +}, +{ +"x": 451, +"y": 82 +}, +{ +"x": 538, +"y": 82 +}, +{ +"x": 401, +"y": 248 +} +], +"isClosed": true +} +] +}, +"xAdvance": 592 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/guillemotright.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/guillemotright.json new file mode 100644 index 0000000000..7a64bd3804 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/guillemotright.json @@ -0,0 +1,79 @@ +{ +"name": "guillemotright", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 278, +"y": 248 +}, +{ +"x": 141, +"y": 414 +}, +{ +"x": 54, +"y": 414 +}, +{ +"x": 191, +"y": 248 +}, +{ +"x": 54, +"y": 82 +}, +{ +"x": 141, +"y": 82 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 465, +"y": 248 +}, +{ +"x": 328, +"y": 414 +}, +{ +"x": 241, +"y": 414 +}, +{ +"x": 378, +"y": 248 +}, +{ +"x": 241, +"y": 82 +}, +{ +"x": 328, +"y": 82 +} +], +"isClosed": true +} +] +}, +"xAdvance": 584 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/guilsinglleft.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/guilsinglleft.json new file mode 100644 index 0000000000..8bd5b0f510 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/guilsinglleft.json @@ -0,0 +1,50 @@ +{ +"name": "guilsinglleft", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 351, +"y": 414 +}, +{ +"x": 264, +"y": 414 +}, +{ +"x": 127, +"y": 248 +}, +{ +"x": 264, +"y": 82 +}, +{ +"x": 351, +"y": 82 +}, +{ +"x": 214, +"y": 248 +} +], +"isClosed": true +} +] +}, +"xAdvance": 405 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/guilsinglright.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/guilsinglright.json new file mode 100644 index 0000000000..d0f64966b3 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/guilsinglright.json @@ -0,0 +1,50 @@ +{ +"name": "guilsinglright", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 278, +"y": 248 +}, +{ +"x": 141, +"y": 414 +}, +{ +"x": 54, +"y": 414 +}, +{ +"x": 191, +"y": 248 +}, +{ +"x": 54, +"y": 82 +}, +{ +"x": 141, +"y": 82 +} +], +"isClosed": true +} +] +}, +"xAdvance": 396 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/h.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/h.json new file mode 100644 index 0000000000..0d5f55e7b8 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/h.json @@ -0,0 +1,153 @@ +{ +"name": "h", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 538, +"y": 393, +"smooth": true +}, +{ +"x": 528, +"y": 486, +"type": "cubic" +}, +{ +"x": 463, +"y": 545, +"type": "cubic" +}, +{ +"x": 349, +"y": 545, +"smooth": true +}, +{ +"x": 296, +"y": 545, +"type": "cubic" +}, +{ +"x": 257, +"y": 536, +"type": "cubic" +}, +{ +"x": 215, +"y": 504 +}, +{ +"x": 179, +"y": 443 +}, +{ +"x": 179, +"y": 740 +}, +{ +"x": 69, +"y": 740 +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 238, +"smooth": true +}, +{ +"x": 179, +"y": 404, +"type": "cubic" +}, +{ +"x": 241, +"y": 462, +"type": "cubic" +}, +{ +"x": 317, +"y": 464, +"smooth": true +}, +{ +"x": 392, +"y": 465, +"type": "cubic" +}, +{ +"x": 424, +"y": 422, +"type": "cubic" +}, +{ +"x": 429, +"y": 362, +"smooth": true +}, +{ +"x": 431, +"y": 335, +"type": "cubic" +}, +{ +"x": 431, +"y": 312, +"type": "cubic" +}, +{ +"x": 431, +"y": 287, +"smooth": true +}, +{ +"x": 431, +"y": 0 +}, +{ +"x": 541, +"y": 0 +}, +{ +"x": 541, +"y": 299, +"smooth": true +}, +{ +"x": 541, +"y": 342, +"type": "cubic" +}, +{ +"x": 540, +"y": 366, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 606 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/hbar.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/hbar.json new file mode 100644 index 0000000000..3a64d47628 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/hbar.json @@ -0,0 +1,185 @@ +{ +"name": "hbar", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 553, +"y": 393, +"smooth": true +}, +{ +"x": 543, +"y": 486, +"type": "cubic" +}, +{ +"x": 478, +"y": 545, +"type": "cubic" +}, +{ +"x": 364, +"y": 545, +"smooth": true +}, +{ +"x": 311, +"y": 545, +"type": "cubic" +}, +{ +"x": 272, +"y": 536, +"type": "cubic" +}, +{ +"x": 230, +"y": 504 +}, +{ +"x": 194, +"y": 443 +}, +{ +"x": 194, +"y": 590 +}, +{ +"x": 299, +"y": 590 +}, +{ +"x": 299, +"y": 656 +}, +{ +"x": 194, +"y": 656 +}, +{ +"x": 194, +"y": 740 +}, +{ +"x": 84, +"y": 740 +}, +{ +"x": 84, +"y": 656 +}, +{ +"x": 29, +"y": 656 +}, +{ +"x": 29, +"y": 590 +}, +{ +"x": 84, +"y": 590 +}, +{ +"x": 84, +"y": 0 +}, +{ +"x": 194, +"y": 0 +}, +{ +"x": 194, +"y": 238, +"smooth": true +}, +{ +"x": 194, +"y": 404, +"type": "cubic" +}, +{ +"x": 256, +"y": 462, +"type": "cubic" +}, +{ +"x": 332, +"y": 464, +"smooth": true +}, +{ +"x": 407, +"y": 465, +"type": "cubic" +}, +{ +"x": 439, +"y": 422, +"type": "cubic" +}, +{ +"x": 444, +"y": 362, +"smooth": true +}, +{ +"x": 446, +"y": 335, +"type": "cubic" +}, +{ +"x": 446, +"y": 312, +"type": "cubic" +}, +{ +"x": 446, +"y": 287, +"smooth": true +}, +{ +"x": 446, +"y": 0 +}, +{ +"x": 556, +"y": 0 +}, +{ +"x": 556, +"y": 299, +"smooth": true +}, +{ +"x": 556, +"y": 342, +"type": "cubic" +}, +{ +"x": 555, +"y": 366, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 621 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/hungarumlaut.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/hungarumlaut.json new file mode 100644 index 0000000000..e112e28faf --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/hungarumlaut.json @@ -0,0 +1,63 @@ +{ +"name": "hungarumlaut", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 106, +"y": 578 +}, +{ +"x": 208, +"y": 692 +}, +{ +"x": 108, +"y": 692 +}, +{ +"x": 40, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 245, +"y": 578 +}, +{ +"x": 347, +"y": 692 +}, +{ +"x": 247, +"y": 692 +}, +{ +"x": 179, +"y": 578 +} +], +"isClosed": true +} +] +}, +"xAdvance": 300 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/hyphen.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/hyphen.json new file mode 100644 index 0000000000..90d8beaa24 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/hyphen.json @@ -0,0 +1,42 @@ +{ +"name": "hyphen", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 252, +"y": 250 +}, +{ +"x": 252, +"y": 316 +}, +{ +"x": 32, +"y": 316 +}, +{ +"x": 32, +"y": 250 +} +], +"isClosed": true +} +] +}, +"xAdvance": 284 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/i.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/i.json new file mode 100644 index 0000000000..14b5027b1f --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/i.json @@ -0,0 +1,107 @@ +{ +"name": "i", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 124, +"y": 716, +"smooth": true +}, +{ +"x": 87, +"y": 716, +"type": "cubic" +}, +{ +"x": 60, +"y": 689, +"type": "cubic" +}, +{ +"x": 60, +"y": 653, +"smooth": true +}, +{ +"x": 60, +"y": 616, +"type": "cubic" +}, +{ +"x": 87, +"y": 589, +"type": "cubic" +}, +{ +"x": 124, +"y": 589, +"smooth": true +}, +{ +"x": 161, +"y": 589, +"type": "cubic" +}, +{ +"x": 189, +"y": 616, +"type": "cubic" +}, +{ +"x": 189, +"y": 653, +"smooth": true +}, +{ +"x": 189, +"y": 689, +"type": "cubic" +}, +{ +"x": 161, +"y": 716, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 251 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/iacute.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/iacute.json new file mode 100644 index 0000000000..9855501030 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/iacute.json @@ -0,0 +1,63 @@ +{ +"name": "iacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 151, +"y": 578 +}, +{ +"x": 254, +"y": 692 +}, +{ +"x": 154, +"y": 692 +}, +{ +"x": 85, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 251 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/icircumflex.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/icircumflex.json new file mode 100644 index 0000000000..af422d5fe3 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/icircumflex.json @@ -0,0 +1,75 @@ +{ +"name": "icircumflex", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 91, +"y": 578 +}, +{ +"x": 124, +"y": 643 +}, +{ +"x": 157, +"y": 578 +}, +{ +"x": 231, +"y": 578 +}, +{ +"x": 165, +"y": 692 +}, +{ +"x": 84, +"y": 692 +}, +{ +"x": 18, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 531 +} +], +"isClosed": true +} +] +}, +"xAdvance": 251 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/idieresis.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/idieresis.json new file mode 100644 index 0000000000..72e2467794 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/idieresis.json @@ -0,0 +1,172 @@ +{ +"name": "idieresis", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 44, +"y": 685, +"smooth": true +}, +{ +"x": 14, +"y": 685, +"type": "cubic" +}, +{ +"x": -9, +"y": 662, +"type": "cubic" +}, +{ +"x": -9, +"y": 632, +"smooth": true +}, +{ +"x": -9, +"y": 602, +"type": "cubic" +}, +{ +"x": 14, +"y": 580, +"type": "cubic" +}, +{ +"x": 44, +"y": 580, +"smooth": true +}, +{ +"x": 74, +"y": 580, +"type": "cubic" +}, +{ +"x": 98, +"y": 602, +"type": "cubic" +}, +{ +"x": 98, +"y": 632, +"smooth": true +}, +{ +"x": 98, +"y": 662, +"type": "cubic" +}, +{ +"x": 74, +"y": 685, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 204, +"y": 685, +"smooth": true +}, +{ +"x": 174, +"y": 685, +"type": "cubic" +}, +{ +"x": 151, +"y": 662, +"type": "cubic" +}, +{ +"x": 151, +"y": 632, +"smooth": true +}, +{ +"x": 151, +"y": 602, +"type": "cubic" +}, +{ +"x": 174, +"y": 580, +"type": "cubic" +}, +{ +"x": 204, +"y": 580, +"smooth": true +}, +{ +"x": 234, +"y": 580, +"type": "cubic" +}, +{ +"x": 257, +"y": 602, +"type": "cubic" +}, +{ +"x": 257, +"y": 632, +"smooth": true +}, +{ +"x": 257, +"y": 662, +"type": "cubic" +}, +{ +"x": 234, +"y": 685, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 251 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/igrave.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/igrave.json new file mode 100644 index 0000000000..2df12b4dc8 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/igrave.json @@ -0,0 +1,63 @@ +{ +"name": "igrave", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 165, +"y": 578 +}, +{ +"x": 97, +"y": 692 +}, +{ +"x": -3, +"y": 692 +}, +{ +"x": 99, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 251 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ij.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ij.json new file mode 100644 index 0000000000..d7730703bf --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ij.json @@ -0,0 +1,268 @@ +{ +"name": "ij", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 124, +"y": 716, +"smooth": true +}, +{ +"x": 87, +"y": 716, +"type": "cubic" +}, +{ +"x": 60, +"y": 689, +"type": "cubic" +}, +{ +"x": 60, +"y": 653, +"smooth": true +}, +{ +"x": 60, +"y": 616, +"type": "cubic" +}, +{ +"x": 87, +"y": 589, +"type": "cubic" +}, +{ +"x": 124, +"y": 589, +"smooth": true +}, +{ +"x": 161, +"y": 589, +"type": "cubic" +}, +{ +"x": 189, +"y": 616, +"type": "cubic" +}, +{ +"x": 189, +"y": 653, +"smooth": true +}, +{ +"x": 189, +"y": 689, +"type": "cubic" +}, +{ +"x": 161, +"y": 716, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 371, +"y": 716, +"smooth": true +}, +{ +"x": 331, +"y": 716, +"type": "cubic" +}, +{ +"x": 306, +"y": 691, +"type": "cubic" +}, +{ +"x": 306, +"y": 653, +"smooth": true +}, +{ +"x": 306, +"y": 614, +"type": "cubic" +}, +{ +"x": 331, +"y": 589, +"type": "cubic" +}, +{ +"x": 371, +"y": 589, +"smooth": true +}, +{ +"x": 410, +"y": 589, +"type": "cubic" +}, +{ +"x": 435, +"y": 614, +"type": "cubic" +}, +{ +"x": 435, +"y": 653, +"smooth": true +}, +{ +"x": 435, +"y": 691, +"type": "cubic" +}, +{ +"x": 410, +"y": 716, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 425, +"y": 531 +}, +{ +"x": 316, +"y": 531 +}, +{ +"x": 316, +"y": -34, +"smooth": true +}, +{ +"x": 316, +"y": -49, +"type": "cubic" +}, +{ +"x": 316, +"y": -65, +"type": "cubic" +}, +{ +"x": 314, +"y": -79, +"smooth": true +}, +{ +"x": 310, +"y": -115, +"type": "cubic" +}, +{ +"x": 286, +"y": -130, +"type": "cubic" +}, +{ +"x": 229, +"y": -125 +}, +{ +"x": 229, +"y": -208 +}, +{ +"x": 243, +"y": -210, +"type": "cubic" +}, +{ +"x": 257, +"y": -210, +"type": "cubic" +}, +{ +"x": 275, +"y": -210, +"smooth": true +}, +{ +"x": 375, +"y": -210, +"type": "cubic" +}, +{ +"x": 416, +"y": -168, +"type": "cubic" +}, +{ +"x": 423, +"y": -95, +"smooth": true +}, +{ +"x": 424, +"y": -77, +"type": "cubic" +}, +{ +"x": 425, +"y": -51, +"type": "cubic" +}, +{ +"x": 425, +"y": -31, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 496 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/imacron.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/imacron.json new file mode 100644 index 0000000000..2bd6f553a0 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/imacron.json @@ -0,0 +1,63 @@ +{ +"name": "imacron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 252, +"y": 600 +}, +{ +"x": 252, +"y": 663 +}, +{ +"x": -4, +"y": 663 +}, +{ +"x": -4, +"y": 600 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 251 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/infinity.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/infinity.json new file mode 100644 index 0000000000..0b3772d000 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/infinity.json @@ -0,0 +1,272 @@ +{ +"name": "infinity", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 720, +"y": 544, +"smooth": true +}, +{ +"x": 616, +"y": 544, +"type": "cubic" +}, +{ +"x": 552, +"y": 499, +"type": "cubic" +}, +{ +"x": 502, +"y": 396 +}, +{ +"x": 453, +"y": 499, +"type": "cubic" +}, +{ +"x": 375, +"y": 544, +"type": "cubic" +}, +{ +"x": 278, +"y": 544, +"smooth": true +}, +{ +"x": 111, +"y": 544, +"type": "cubic" +}, +{ +"x": 29, +"y": 421, +"type": "cubic" +}, +{ +"x": 29, +"y": 265, +"smooth": true +}, +{ +"x": 29, +"y": 110, +"type": "cubic" +}, +{ +"x": 111, +"y": -14, +"type": "cubic" +}, +{ +"x": 275, +"y": -14, +"smooth": true +}, +{ +"x": 379, +"y": -14, +"type": "cubic" +}, +{ +"x": 444, +"y": 31, +"type": "cubic" +}, +{ +"x": 494, +"y": 134 +}, +{ +"x": 543, +"y": 31, +"type": "cubic" +}, +{ +"x": 620, +"y": -14, +"type": "cubic" +}, +{ +"x": 718, +"y": -14, +"smooth": true +}, +{ +"x": 884, +"y": -14, +"type": "cubic" +}, +{ +"x": 967, +"y": 110, +"type": "cubic" +}, +{ +"x": 967, +"y": 265, +"smooth": true +}, +{ +"x": 967, +"y": 421, +"type": "cubic" +}, +{ +"x": 884, +"y": 544, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 280, +"y": 66, +"smooth": true +}, +{ +"x": 201, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 147, +"type": "cubic" +}, +{ +"x": 145, +"y": 265, +"smooth": true +}, +{ +"x": 145, +"y": 383, +"type": "cubic" +}, +{ +"x": 201, +"y": 464, +"type": "cubic" +}, +{ +"x": 280, +"y": 464, +"smooth": true +}, +{ +"x": 350, +"y": 464, +"type": "cubic" +}, +{ +"x": 403, +"y": 410, +"type": "cubic" +}, +{ +"x": 429, +"y": 265 +}, +{ +"x": 412, +"y": 121, +"type": "cubic" +}, +{ +"x": 350, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 715, +"y": 66, +"smooth": true +}, +{ +"x": 645, +"y": 66, +"type": "cubic" +}, +{ +"x": 593, +"y": 121, +"type": "cubic" +}, +{ +"x": 567, +"y": 265 +}, +{ +"x": 584, +"y": 409, +"type": "cubic" +}, +{ +"x": 645, +"y": 464, +"type": "cubic" +}, +{ +"x": 715, +"y": 464, +"smooth": true +}, +{ +"x": 795, +"y": 464, +"type": "cubic" +}, +{ +"x": 850, +"y": 383, +"type": "cubic" +}, +{ +"x": 850, +"y": 265, +"smooth": true +}, +{ +"x": 850, +"y": 147, +"type": "cubic" +}, +{ +"x": 795, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 995 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/integral.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/integral.json new file mode 100644 index 0000000000..9d8b527a01 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/integral.json @@ -0,0 +1,212 @@ +{ +"name": "integral", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 349, +"y": 754, +"smooth": true +}, +{ +"x": 266, +"y": 754, +"type": "cubic" +}, +{ +"x": 207, +"y": 686, +"type": "cubic" +}, +{ +"x": 207, +"y": 572, +"smooth": true +}, +{ +"x": 207, +"y": 505, +"type": "cubic" +}, +{ +"x": 221, +"y": 435, +"type": "cubic" +}, +{ +"x": 264, +"y": 290, +"smooth": true +}, +{ +"x": 314, +"y": 123, +"type": "cubic" +}, +{ +"x": 320, +"y": 75, +"type": "cubic" +}, +{ +"x": 320, +"y": 18, +"smooth": true +}, +{ +"x": 320, +"y": -57, +"type": "cubic" +}, +{ +"x": 287, +"y": -94, +"type": "cubic" +}, +{ +"x": 245, +"y": -94, +"smooth": true +}, +{ +"x": 221, +"y": -94, +"type": "cubic" +}, +{ +"x": 205, +"y": -90, +"type": "cubic" +}, +{ +"x": 184, +"y": -75 +}, +{ +"x": 169, +"y": -138 +}, +{ +"x": 195, +"y": -156, +"type": "cubic" +}, +{ +"x": 218, +"y": -160, +"type": "cubic" +}, +{ +"x": 251, +"y": -160, +"smooth": true +}, +{ +"x": 334, +"y": -160, +"type": "cubic" +}, +{ +"x": 393, +"y": -92, +"type": "cubic" +}, +{ +"x": 393, +"y": 23, +"smooth": true +}, +{ +"x": 393, +"y": 89, +"type": "cubic" +}, +{ +"x": 379, +"y": 159, +"type": "cubic" +}, +{ +"x": 336, +"y": 304, +"smooth": true +}, +{ +"x": 286, +"y": 471, +"type": "cubic" +}, +{ +"x": 280, +"y": 520, +"type": "cubic" +}, +{ +"x": 280, +"y": 577, +"smooth": true +}, +{ +"x": 280, +"y": 651, +"type": "cubic" +}, +{ +"x": 313, +"y": 688, +"type": "cubic" +}, +{ +"x": 355, +"y": 688, +"smooth": true +}, +{ +"x": 379, +"y": 688, +"type": "cubic" +}, +{ +"x": 395, +"y": 684, +"type": "cubic" +}, +{ +"x": 416, +"y": 669 +}, +{ +"x": 431, +"y": 732 +}, +{ +"x": 405, +"y": 750, +"type": "cubic" +}, +{ +"x": 382, +"y": 754, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 600 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/iogonek.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/iogonek.json new file mode 100644 index 0000000000..b8d33e2c29 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/iogonek.json @@ -0,0 +1,199 @@ +{ +"name": "iogonek", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 124, +"y": 589, +"smooth": true +}, +{ +"x": 161, +"y": 589, +"type": "cubic" +}, +{ +"x": 189, +"y": 616, +"type": "cubic" +}, +{ +"x": 189, +"y": 653, +"smooth": true +}, +{ +"x": 189, +"y": 689, +"type": "cubic" +}, +{ +"x": 161, +"y": 716, +"type": "cubic" +}, +{ +"x": 124, +"y": 716, +"smooth": true +}, +{ +"x": 87, +"y": 716, +"type": "cubic" +}, +{ +"x": 60, +"y": 689, +"type": "cubic" +}, +{ +"x": 60, +"y": 653, +"smooth": true +}, +{ +"x": 60, +"y": 616, +"type": "cubic" +}, +{ +"x": 87, +"y": 589, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 10 +}, +{ +"x": 14, +"y": -13, +"type": "cubic" +}, +{ +"x": -37, +"y": -66, +"type": "cubic" +}, +{ +"x": -37, +"y": -138, +"smooth": true +}, +{ +"x": -37, +"y": -201, +"type": "cubic" +}, +{ +"x": 3, +"y": -223, +"type": "cubic" +}, +{ +"x": 61, +"y": -223, +"smooth": true +}, +{ +"x": 102, +"y": -223, +"type": "cubic" +}, +{ +"x": 136, +"y": -212, +"type": "cubic" +}, +{ +"x": 162, +"y": -192 +}, +{ +"x": 162, +"y": -137 +}, +{ +"x": 144, +"y": -151, +"type": "cubic" +}, +{ +"x": 127, +"y": -157, +"type": "cubic" +}, +{ +"x": 109, +"y": -157, +"smooth": true +}, +{ +"x": 82, +"y": -157, +"type": "cubic" +}, +{ +"x": 65, +"y": -144, +"type": "cubic" +}, +{ +"x": 65, +"y": -107, +"smooth": true +}, +{ +"x": 65, +"y": -50, +"type": "cubic" +}, +{ +"x": 103, +"y": -7, +"type": "cubic" +}, +{ +"x": 147, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 531 +} +], +"isClosed": true +} +] +}, +"xAdvance": 251 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/j.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/j.json new file mode 100644 index 0000000000..3f6347fb0a --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/j.json @@ -0,0 +1,182 @@ +{ +"name": "j", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 120, +"y": 716, +"smooth": true +}, +{ +"x": 80, +"y": 716, +"type": "cubic" +}, +{ +"x": 55, +"y": 691, +"type": "cubic" +}, +{ +"x": 55, +"y": 653, +"smooth": true +}, +{ +"x": 55, +"y": 614, +"type": "cubic" +}, +{ +"x": 80, +"y": 589, +"type": "cubic" +}, +{ +"x": 120, +"y": 589, +"smooth": true +}, +{ +"x": 159, +"y": 589, +"type": "cubic" +}, +{ +"x": 184, +"y": 614, +"type": "cubic" +}, +{ +"x": 184, +"y": 653, +"smooth": true +}, +{ +"x": 184, +"y": 691, +"type": "cubic" +}, +{ +"x": 159, +"y": 716, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 174, +"y": 531 +}, +{ +"x": 65, +"y": 531 +}, +{ +"x": 65, +"y": -34, +"smooth": true +}, +{ +"x": 65, +"y": -49, +"type": "cubic" +}, +{ +"x": 65, +"y": -65, +"type": "cubic" +}, +{ +"x": 63, +"y": -79, +"smooth": true +}, +{ +"x": 59, +"y": -115, +"type": "cubic" +}, +{ +"x": 35, +"y": -130, +"type": "cubic" +}, +{ +"x": -22, +"y": -125 +}, +{ +"x": -22, +"y": -208 +}, +{ +"x": -8, +"y": -210, +"type": "cubic" +}, +{ +"x": 6, +"y": -210, +"type": "cubic" +}, +{ +"x": 24, +"y": -210, +"smooth": true +}, +{ +"x": 124, +"y": -210, +"type": "cubic" +}, +{ +"x": 165, +"y": -168, +"type": "cubic" +}, +{ +"x": 172, +"y": -95, +"smooth": true +}, +{ +"x": 173, +"y": -77, +"type": "cubic" +}, +{ +"x": 174, +"y": -51, +"type": "cubic" +}, +{ +"x": 174, +"y": -31, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 245 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/k.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/k.json new file mode 100644 index 0000000000..4fa7edba5c --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/k.json @@ -0,0 +1,74 @@ +{ +"name": "k", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 226, +"y": 218 +}, +{ +"x": 406, +"y": 0 +}, +{ +"x": 549, +"y": 0 +}, +{ +"x": 304, +"y": 282 +}, +{ +"x": 546, +"y": 531 +}, +{ +"x": 411, +"y": 531 +}, +{ +"x": 179, +"y": 275 +}, +{ +"x": 179, +"y": 735 +}, +{ +"x": 69, +"y": 735 +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 166 +} +], +"isClosed": true +} +] +}, +"xAdvance": 550 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/kcommaaccent.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/kcommaaccent.json new file mode 100644 index 0000000000..9ea20186ef --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/kcommaaccent.json @@ -0,0 +1,99 @@ +{ +"name": "kcommaaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 549, +"y": 0 +}, +{ +"x": 304, +"y": 282 +}, +{ +"x": 546, +"y": 531 +}, +{ +"x": 411, +"y": 531 +}, +{ +"x": 179, +"y": 275 +}, +{ +"x": 179, +"y": 735 +}, +{ +"x": 69, +"y": 735 +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 166 +}, +{ +"x": 226, +"y": 218 +}, +{ +"x": 406, +"y": 0 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 252, +"y": -48 +}, +{ +"x": 192, +"y": -200 +}, +{ +"x": 262, +"y": -200 +}, +{ +"x": 333, +"y": -59 +}, +{ +"x": 333, +"y": -48 +} +], +"isClosed": true +} +] +}, +"xAdvance": 550 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/l.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/l.json new file mode 100644 index 0000000000..f6958673e2 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/l.json @@ -0,0 +1,117 @@ +{ +"name": "l", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 175, +"y": 735 +}, +{ +"x": 65, +"y": 735 +}, +{ +"x": 65, +"y": 159, +"smooth": true +}, +{ +"x": 65, +"y": 127, +"type": "cubic" +}, +{ +"x": 65, +"y": 103, +"type": "cubic" +}, +{ +"x": 66, +"y": 83, +"smooth": true +}, +{ +"x": 70, +"y": 15, +"type": "cubic" +}, +{ +"x": 109, +"y": -6, +"type": "cubic" +}, +{ +"x": 167, +"y": -6, +"smooth": true +}, +{ +"x": 192, +"y": -6, +"type": "cubic" +}, +{ +"x": 217, +"y": -4, +"type": "cubic" +}, +{ +"x": 239, +"y": -1 +}, +{ +"x": 239, +"y": 76 +}, +{ +"x": 192, +"y": 72, +"type": "cubic" +}, +{ +"x": 178, +"y": 82, +"type": "cubic" +}, +{ +"x": 176, +"y": 112, +"smooth": true +}, +{ +"x": 175, +"y": 128, +"type": "cubic" +}, +{ +"x": 175, +"y": 144, +"type": "cubic" +}, +{ +"x": 175, +"y": 162, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 262 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lacute.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lacute.json new file mode 100644 index 0000000000..2618c07d2c --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lacute.json @@ -0,0 +1,138 @@ +{ +"name": "lacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 145, +"y": 784 +}, +{ +"x": 248, +"y": 898 +}, +{ +"x": 148, +"y": 898 +}, +{ +"x": 79, +"y": 784 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 175, +"y": 735 +}, +{ +"x": 65, +"y": 735 +}, +{ +"x": 65, +"y": 159, +"smooth": true +}, +{ +"x": 65, +"y": 127, +"type": "cubic" +}, +{ +"x": 65, +"y": 103, +"type": "cubic" +}, +{ +"x": 66, +"y": 83, +"smooth": true +}, +{ +"x": 70, +"y": 15, +"type": "cubic" +}, +{ +"x": 109, +"y": -6, +"type": "cubic" +}, +{ +"x": 167, +"y": -6, +"smooth": true +}, +{ +"x": 192, +"y": -6, +"type": "cubic" +}, +{ +"x": 217, +"y": -4, +"type": "cubic" +}, +{ +"x": 239, +"y": -1 +}, +{ +"x": 239, +"y": 76 +}, +{ +"x": 192, +"y": 72, +"type": "cubic" +}, +{ +"x": 178, +"y": 82, +"type": "cubic" +}, +{ +"x": 176, +"y": 112, +"smooth": true +}, +{ +"x": 175, +"y": 128, +"type": "cubic" +}, +{ +"x": 175, +"y": 144, +"type": "cubic" +}, +{ +"x": 175, +"y": 162, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 262 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lcaron.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lcaron.json new file mode 100644 index 0000000000..e7df876bb6 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lcaron.json @@ -0,0 +1,117 @@ +{ +"name": "lcaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 175, +"y": 735 +}, +{ +"x": 65, +"y": 735 +}, +{ +"x": 65, +"y": 159, +"smooth": true +}, +{ +"x": 65, +"y": 127, +"type": "cubic" +}, +{ +"x": 65, +"y": 103, +"type": "cubic" +}, +{ +"x": 66, +"y": 83, +"smooth": true +}, +{ +"x": 70, +"y": 15, +"type": "cubic" +}, +{ +"x": 109, +"y": -6, +"type": "cubic" +}, +{ +"x": 167, +"y": -6, +"smooth": true +}, +{ +"x": 192, +"y": -6, +"type": "cubic" +}, +{ +"x": 217, +"y": -4, +"type": "cubic" +}, +{ +"x": 239, +"y": -1 +}, +{ +"x": 239, +"y": 76 +}, +{ +"x": 192, +"y": 72, +"type": "cubic" +}, +{ +"x": 178, +"y": 82, +"type": "cubic" +}, +{ +"x": 176, +"y": 112, +"smooth": true +}, +{ +"x": 175, +"y": 128, +"type": "cubic" +}, +{ +"x": 175, +"y": 144, +"type": "cubic" +}, +{ +"x": 175, +"y": 162, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 262 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lcommaaccent.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lcommaaccent.json new file mode 100644 index 0000000000..a526852373 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lcommaaccent.json @@ -0,0 +1,142 @@ +{ +"name": "lcommaaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 175, +"y": 735 +}, +{ +"x": 65, +"y": 735 +}, +{ +"x": 65, +"y": 159, +"smooth": true +}, +{ +"x": 65, +"y": 127, +"type": "cubic" +}, +{ +"x": 65, +"y": 103, +"type": "cubic" +}, +{ +"x": 66, +"y": 83, +"smooth": true +}, +{ +"x": 70, +"y": 15, +"type": "cubic" +}, +{ +"x": 109, +"y": -6, +"type": "cubic" +}, +{ +"x": 167, +"y": -6, +"smooth": true +}, +{ +"x": 192, +"y": -6, +"type": "cubic" +}, +{ +"x": 217, +"y": -4, +"type": "cubic" +}, +{ +"x": 239, +"y": -1 +}, +{ +"x": 239, +"y": 76 +}, +{ +"x": 192, +"y": 72, +"type": "cubic" +}, +{ +"x": 178, +"y": 82, +"type": "cubic" +}, +{ +"x": 176, +"y": 112, +"smooth": true +}, +{ +"x": 175, +"y": 128, +"type": "cubic" +}, +{ +"x": 175, +"y": 144, +"type": "cubic" +}, +{ +"x": 175, +"y": 162, +"smooth": true +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 180, +"y": -59 +}, +{ +"x": 180, +"y": -48 +}, +{ +"x": 99, +"y": -48 +}, +{ +"x": 39, +"y": -200 +}, +{ +"x": 109, +"y": -200 +} +], +"isClosed": true +} +] +}, +"xAdvance": 262 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ldot.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ldot.json new file mode 100644 index 0000000000..5036ecfbbb --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ldot.json @@ -0,0 +1,182 @@ +{ +"name": "ldot", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 175, +"y": 735 +}, +{ +"x": 65, +"y": 735 +}, +{ +"x": 65, +"y": 159, +"smooth": true +}, +{ +"x": 65, +"y": 127, +"type": "cubic" +}, +{ +"x": 65, +"y": 103, +"type": "cubic" +}, +{ +"x": 66, +"y": 83, +"smooth": true +}, +{ +"x": 70, +"y": 15, +"type": "cubic" +}, +{ +"x": 109, +"y": -6, +"type": "cubic" +}, +{ +"x": 167, +"y": -6, +"smooth": true +}, +{ +"x": 192, +"y": -6, +"type": "cubic" +}, +{ +"x": 217, +"y": -4, +"type": "cubic" +}, +{ +"x": 239, +"y": -1 +}, +{ +"x": 239, +"y": 76 +}, +{ +"x": 192, +"y": 72, +"type": "cubic" +}, +{ +"x": 178, +"y": 82, +"type": "cubic" +}, +{ +"x": 176, +"y": 112, +"smooth": true +}, +{ +"x": 175, +"y": 128, +"type": "cubic" +}, +{ +"x": 175, +"y": 144, +"type": "cubic" +}, +{ +"x": 175, +"y": 162, +"smooth": true +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 306, +"y": 463, +"smooth": true +}, +{ +"x": 269, +"y": 463, +"type": "cubic" +}, +{ +"x": 241, +"y": 436, +"type": "cubic" +}, +{ +"x": 241, +"y": 400, +"smooth": true +}, +{ +"x": 241, +"y": 364, +"type": "cubic" +}, +{ +"x": 269, +"y": 337, +"type": "cubic" +}, +{ +"x": 306, +"y": 337, +"smooth": true +}, +{ +"x": 343, +"y": 337, +"type": "cubic" +}, +{ +"x": 370, +"y": 364, +"type": "cubic" +}, +{ +"x": 370, +"y": 400, +"smooth": true +}, +{ +"x": 370, +"y": 436, +"type": "cubic" +}, +{ +"x": 343, +"y": 463, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 383 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/less.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/less.json new file mode 100644 index 0000000000..cede1d6160 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/less.json @@ -0,0 +1,54 @@ +{ +"name": "less", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 523, +"y": 422 +}, +{ +"x": 523, +"y": 503 +}, +{ +"x": 104, +"y": 308 +}, +{ +"x": 104, +"y": 223 +}, +{ +"x": 523, +"y": 28 +}, +{ +"x": 523, +"y": 110 +}, +{ +"x": 175, +"y": 266 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lessequal.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lessequal.json new file mode 100644 index 0000000000..3e43c2b600 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lessequal.json @@ -0,0 +1,75 @@ +{ +"name": "lessequal", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 523, +"y": 436 +}, +{ +"x": 523, +"y": 515 +}, +{ +"x": 98, +"y": 354 +}, +{ +"x": 98, +"y": 269 +}, +{ +"x": 523, +"y": 107 +}, +{ +"x": 523, +"y": 186 +}, +{ +"x": 170, +"y": 310 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 98, +"y": 66 +}, +{ +"x": 98, +"y": 0 +}, +{ +"x": 523, +"y": 0 +}, +{ +"x": 523, +"y": 66 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/logicalnot.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/logicalnot.json new file mode 100644 index 0000000000..df76f4c995 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/logicalnot.json @@ -0,0 +1,50 @@ +{ +"name": "logicalnot", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 485, +"y": 201 +}, +{ +"x": 485, +"y": 388 +}, +{ +"x": 105, +"y": 388 +}, +{ +"x": 105, +"y": 322 +}, +{ +"x": 416, +"y": 322 +}, +{ +"x": 416, +"y": 201 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lozenge.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lozenge.json new file mode 100644 index 0000000000..e599e4e72b --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lozenge.json @@ -0,0 +1,71 @@ +{ +"name": "lozenge", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 470, +"y": 345 +}, +{ +"x": 305, +"y": 690 +}, +{ +"x": 218, +"y": 690 +}, +{ +"x": 53, +"y": 345 +}, +{ +"x": 218, +"y": 0 +}, +{ +"x": 305, +"y": 0 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 387, +"y": 345 +}, +{ +"x": 262, +"y": 72 +}, +{ +"x": 136, +"y": 345 +}, +{ +"x": 262, +"y": 618 +} +], +"isClosed": true +} +] +}, +"xAdvance": 523 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lslash.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lslash.json new file mode 100644 index 0000000000..8583a76f13 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/lslash.json @@ -0,0 +1,148 @@ +{ +"name": "lslash", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 202, +"y": 112 +}, +{ +"x": 200, +"y": 128, +"type": "cubic" +}, +{ +"x": 200, +"y": 144, +"type": "cubic" +}, +{ +"x": 200, +"y": 162, +"smooth": true +}, +{ +"x": 200, +"y": 315 +}, +{ +"x": 264, +"y": 354 +}, +{ +"x": 264, +"y": 434 +}, +{ +"x": 200, +"y": 395 +}, +{ +"x": 200, +"y": 735 +}, +{ +"x": 91, +"y": 735 +}, +{ +"x": 91, +"y": 330 +}, +{ +"x": 27, +"y": 291 +}, +{ +"x": 27, +"y": 211 +}, +{ +"x": 91, +"y": 250 +}, +{ +"x": 91, +"y": 159, +"smooth": true +}, +{ +"x": 91, +"y": 127, +"type": "cubic" +}, +{ +"x": 91, +"y": 103, +"type": "cubic" +}, +{ +"x": 92, +"y": 83, +"smooth": true +}, +{ +"x": 95, +"y": 15, +"type": "cubic" +}, +{ +"x": 135, +"y": -6, +"type": "cubic" +}, +{ +"x": 193, +"y": -6, +"smooth": true +}, +{ +"x": 218, +"y": -6, +"type": "cubic" +}, +{ +"x": 243, +"y": -4, +"type": "cubic" +}, +{ +"x": 265, +"y": -1 +}, +{ +"x": 265, +"y": 76 +}, +{ +"x": 218, +"y": 72, +"type": "cubic" +}, +{ +"x": 204, +"y": 82, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 297 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/m.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/m.json new file mode 100644 index 0000000000..f40bf28fc7 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/m.json @@ -0,0 +1,244 @@ +{ +"name": "m", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 813, +"y": 415, +"smooth": true +}, +{ +"x": 801, +"y": 488, +"type": "cubic" +}, +{ +"x": 745, +"y": 545, +"type": "cubic" +}, +{ +"x": 647, +"y": 545, +"smooth": true +}, +{ +"x": 600, +"y": 545, +"type": "cubic" +}, +{ +"x": 563, +"y": 536, +"type": "cubic" +}, +{ +"x": 534, +"y": 514 +}, +{ +"x": 485, +"y": 444 +}, +{ +"x": 465, +"y": 503, +"type": "cubic" +}, +{ +"x": 412, +"y": 545, +"type": "cubic" +}, +{ +"x": 328, +"y": 545, +"smooth": true +}, +{ +"x": 280, +"y": 545, +"type": "cubic" +}, +{ +"x": 243, +"y": 536, +"type": "cubic" +}, +{ +"x": 215, +"y": 514 +}, +{ +"x": 179, +"y": 452 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 267, +"smooth": true +}, +{ +"x": 179, +"y": 411, +"type": "cubic" +}, +{ +"x": 221, +"y": 464, +"type": "cubic" +}, +{ +"x": 286, +"y": 464, +"smooth": true +}, +{ +"x": 343, +"y": 464, +"type": "cubic" +}, +{ +"x": 377, +"y": 434, +"type": "cubic" +}, +{ +"x": 385, +"y": 377, +"smooth": true +}, +{ +"x": 388, +"y": 350, +"type": "cubic" +}, +{ +"x": 389, +"y": 321, +"type": "cubic" +}, +{ +"x": 389, +"y": 281, +"smooth": true +}, +{ +"x": 389, +"y": 0 +}, +{ +"x": 498, +"y": 0 +}, +{ +"x": 498, +"y": 267, +"smooth": true +}, +{ +"x": 498, +"y": 411, +"type": "cubic" +}, +{ +"x": 541, +"y": 464, +"type": "cubic" +}, +{ +"x": 605, +"y": 464, +"smooth": true +}, +{ +"x": 662, +"y": 464, +"type": "cubic" +}, +{ +"x": 697, +"y": 434, +"type": "cubic" +}, +{ +"x": 704, +"y": 377, +"smooth": true +}, +{ +"x": 707, +"y": 350, +"type": "cubic" +}, +{ +"x": 708, +"y": 321, +"type": "cubic" +}, +{ +"x": 708, +"y": 281, +"smooth": true +}, +{ +"x": 708, +"y": 0 +}, +{ +"x": 818, +"y": 0 +}, +{ +"x": 818, +"y": 321, +"smooth": true +}, +{ +"x": 818, +"y": 364, +"type": "cubic" +}, +{ +"x": 817, +"y": 388, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 883 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/macron.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/macron.json new file mode 100644 index 0000000000..ed984f12f2 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/macron.json @@ -0,0 +1,42 @@ +{ +"name": "macron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 278, +"y": 600 +}, +{ +"x": 278, +"y": 663 +}, +{ +"x": 23, +"y": 663 +}, +{ +"x": 23, +"y": 600 +} +], +"isClosed": true +} +] +}, +"xAdvance": 300 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/minus.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/minus.json new file mode 100644 index 0000000000..7a4174ab21 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/minus.json @@ -0,0 +1,42 @@ +{ +"name": "minus", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 514, +"y": 286 +}, +{ +"x": 514, +"y": 352 +}, +{ +"x": 87, +"y": 352 +}, +{ +"x": 87, +"y": 286 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/multiply.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/multiply.json new file mode 100644 index 0000000000..9fb896ad5b --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/multiply.json @@ -0,0 +1,74 @@ +{ +"name": "multiply", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 349, +"y": 318 +}, +{ +"x": 491, +"y": 460 +}, +{ +"x": 442, +"y": 508 +}, +{ +"x": 300, +"y": 366 +}, +{ +"x": 158, +"y": 508 +}, +{ +"x": 110, +"y": 460 +}, +{ +"x": 252, +"y": 318 +}, +{ +"x": 110, +"y": 176 +}, +{ +"x": 158, +"y": 128 +}, +{ +"x": 300, +"y": 270 +}, +{ +"x": 442, +"y": 128 +}, +{ +"x": 491, +"y": 176 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/n.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/n.json new file mode 100644 index 0000000000..5919f228e9 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/n.json @@ -0,0 +1,153 @@ +{ +"name": "n", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 538, +"y": 393, +"smooth": true +}, +{ +"x": 528, +"y": 486, +"type": "cubic" +}, +{ +"x": 463, +"y": 545, +"type": "cubic" +}, +{ +"x": 349, +"y": 545, +"smooth": true +}, +{ +"x": 296, +"y": 545, +"type": "cubic" +}, +{ +"x": 257, +"y": 536, +"type": "cubic" +}, +{ +"x": 215, +"y": 504 +}, +{ +"x": 179, +"y": 443 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 170, +"y": 4 +}, +{ +"x": 179, +"y": 238, +"smooth": true +}, +{ +"x": 185, +"y": 404, +"type": "cubic" +}, +{ +"x": 241, +"y": 464, +"type": "cubic" +}, +{ +"x": 317, +"y": 464, +"smooth": true +}, +{ +"x": 392, +"y": 464, +"type": "cubic" +}, +{ +"x": 424, +"y": 422, +"type": "cubic" +}, +{ +"x": 429, +"y": 362, +"smooth": true +}, +{ +"x": 431, +"y": 335, +"type": "cubic" +}, +{ +"x": 431, +"y": 312, +"type": "cubic" +}, +{ +"x": 431, +"y": 287, +"smooth": true +}, +{ +"x": 431, +"y": 0 +}, +{ +"x": 541, +"y": 0 +}, +{ +"x": 541, +"y": 299, +"smooth": true +}, +{ +"x": 541, +"y": 342, +"type": "cubic" +}, +{ +"x": 540, +"y": 366, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 606 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/nacute.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/nacute.json new file mode 100644 index 0000000000..555a6bd943 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/nacute.json @@ -0,0 +1,174 @@ +{ +"name": "nacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 439, +"y": 692 +}, +{ +"x": 339, +"y": 692 +}, +{ +"x": 270, +"y": 578 +}, +{ +"x": 336, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 538, +"y": 393, +"smooth": true +}, +{ +"x": 528, +"y": 486, +"type": "cubic" +}, +{ +"x": 463, +"y": 545, +"type": "cubic" +}, +{ +"x": 349, +"y": 545, +"smooth": true +}, +{ +"x": 296, +"y": 545, +"type": "cubic" +}, +{ +"x": 257, +"y": 536, +"type": "cubic" +}, +{ +"x": 215, +"y": 504 +}, +{ +"x": 179, +"y": 443 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 238, +"smooth": true +}, +{ +"x": 179, +"y": 404, +"type": "cubic" +}, +{ +"x": 241, +"y": 464, +"type": "cubic" +}, +{ +"x": 317, +"y": 464, +"smooth": true +}, +{ +"x": 392, +"y": 464, +"type": "cubic" +}, +{ +"x": 424, +"y": 422, +"type": "cubic" +}, +{ +"x": 429, +"y": 362, +"smooth": true +}, +{ +"x": 431, +"y": 335, +"type": "cubic" +}, +{ +"x": 431, +"y": 312, +"type": "cubic" +}, +{ +"x": 431, +"y": 287, +"smooth": true +}, +{ +"x": 431, +"y": 0 +}, +{ +"x": 541, +"y": 0 +}, +{ +"x": 541, +"y": 299, +"smooth": true +}, +{ +"x": 541, +"y": 342, +"type": "cubic" +}, +{ +"x": 540, +"y": 366, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 606 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ncaron.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ncaron.json new file mode 100644 index 0000000000..522f346ba1 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ncaron.json @@ -0,0 +1,186 @@ +{ +"name": "ncaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 350, +"y": 578 +}, +{ +"x": 416, +"y": 692 +}, +{ +"x": 343, +"y": 692 +}, +{ +"x": 310, +"y": 626 +}, +{ +"x": 277, +"y": 692 +}, +{ +"x": 203, +"y": 692 +}, +{ +"x": 269, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 538, +"y": 393, +"smooth": true +}, +{ +"x": 528, +"y": 486, +"type": "cubic" +}, +{ +"x": 463, +"y": 545, +"type": "cubic" +}, +{ +"x": 349, +"y": 545, +"smooth": true +}, +{ +"x": 296, +"y": 545, +"type": "cubic" +}, +{ +"x": 257, +"y": 536, +"type": "cubic" +}, +{ +"x": 215, +"y": 504 +}, +{ +"x": 179, +"y": 443 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 238, +"smooth": true +}, +{ +"x": 179, +"y": 404, +"type": "cubic" +}, +{ +"x": 241, +"y": 464, +"type": "cubic" +}, +{ +"x": 317, +"y": 464, +"smooth": true +}, +{ +"x": 392, +"y": 464, +"type": "cubic" +}, +{ +"x": 424, +"y": 422, +"type": "cubic" +}, +{ +"x": 429, +"y": 362, +"smooth": true +}, +{ +"x": 431, +"y": 335, +"type": "cubic" +}, +{ +"x": 431, +"y": 312, +"type": "cubic" +}, +{ +"x": 431, +"y": 287, +"smooth": true +}, +{ +"x": 431, +"y": 0 +}, +{ +"x": 541, +"y": 0 +}, +{ +"x": 541, +"y": 299, +"smooth": true +}, +{ +"x": 541, +"y": 342, +"type": "cubic" +}, +{ +"x": 540, +"y": 366, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 606 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ncommaaccent.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ncommaaccent.json new file mode 100644 index 0000000000..b8b9a27032 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ncommaaccent.json @@ -0,0 +1,178 @@ +{ +"name": "ncommaaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 538, +"y": 393, +"smooth": true +}, +{ +"x": 528, +"y": 486, +"type": "cubic" +}, +{ +"x": 463, +"y": 545, +"type": "cubic" +}, +{ +"x": 349, +"y": 545, +"smooth": true +}, +{ +"x": 296, +"y": 545, +"type": "cubic" +}, +{ +"x": 257, +"y": 536, +"type": "cubic" +}, +{ +"x": 215, +"y": 504 +}, +{ +"x": 179, +"y": 443 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 238, +"smooth": true +}, +{ +"x": 179, +"y": 404, +"type": "cubic" +}, +{ +"x": 241, +"y": 464, +"type": "cubic" +}, +{ +"x": 317, +"y": 464, +"smooth": true +}, +{ +"x": 392, +"y": 464, +"type": "cubic" +}, +{ +"x": 424, +"y": 422, +"type": "cubic" +}, +{ +"x": 429, +"y": 362, +"smooth": true +}, +{ +"x": 431, +"y": 335, +"type": "cubic" +}, +{ +"x": 431, +"y": 312, +"type": "cubic" +}, +{ +"x": 431, +"y": 287, +"smooth": true +}, +{ +"x": 431, +"y": 0 +}, +{ +"x": 541, +"y": 0 +}, +{ +"x": 541, +"y": 299, +"smooth": true +}, +{ +"x": 541, +"y": 342, +"type": "cubic" +}, +{ +"x": 540, +"y": 366, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 209, +"y": -200 +}, +{ +"x": 279, +"y": -200 +}, +{ +"x": 350, +"y": -59 +}, +{ +"x": 350, +"y": -48 +}, +{ +"x": 269, +"y": -48 +} +], +"isClosed": true +} +] +}, +"xAdvance": 606 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/nine.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/nine.json new file mode 100644 index 0000000000..7f2abf3070 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/nine.json @@ -0,0 +1,227 @@ +{ +"name": "nine", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 301, +"y": 704, +"smooth": true +}, +{ +"x": 160, +"y": 704, +"type": "cubic" +}, +{ +"x": 49, +"y": 608, +"type": "cubic" +}, +{ +"x": 49, +"y": 455, +"smooth": true +}, +{ +"x": 49, +"y": 323, +"type": "cubic" +}, +{ +"x": 130, +"y": 225, +"type": "cubic" +}, +{ +"x": 277, +"y": 225, +"smooth": true +}, +{ +"x": 327, +"y": 225, +"type": "cubic" +}, +{ +"x": 365, +"y": 237, +"type": "cubic" +}, +{ +"x": 402, +"y": 267 +}, +{ +"x": 439, +"y": 329 +}, +{ +"x": 432, +"y": 143, +"type": "cubic" +}, +{ +"x": 374, +"y": 70, +"type": "cubic" +}, +{ +"x": 288, +"y": 70, +"smooth": true +}, +{ +"x": 224, +"y": 70, +"type": "cubic" +}, +{ +"x": 187, +"y": 105, +"type": "cubic" +}, +{ +"x": 172, +"y": 176, +"smooth": true +}, +{ +"x": 170, +"y": 186 +}, +{ +"x": 56, +"y": 186 +}, +{ +"x": 57, +"y": 176, +"smooth": true +}, +{ +"x": 68, +"y": 60, +"type": "cubic" +}, +{ +"x": 152, +"y": -14, +"type": "cubic" +}, +{ +"x": 280, +"y": -14, +"smooth": true +}, +{ +"x": 432, +"y": -14, +"type": "cubic" +}, +{ +"x": 555, +"y": 105, +"type": "cubic" +}, +{ +"x": 555, +"y": 373, +"smooth": true +}, +{ +"x": 555, +"y": 605, +"type": "cubic" +}, +{ +"x": 464, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 302, +"y": 309, +"smooth": true +}, +{ +"x": 209, +"y": 309, +"type": "cubic" +}, +{ +"x": 168, +"y": 380, +"type": "cubic" +}, +{ +"x": 168, +"y": 468, +"smooth": true +}, +{ +"x": 168, +"y": 557, +"type": "cubic" +}, +{ +"x": 222, +"y": 620, +"type": "cubic" +}, +{ +"x": 302, +"y": 620, +"smooth": true +}, +{ +"x": 381, +"y": 620, +"type": "cubic" +}, +{ +"x": 433, +"y": 554, +"type": "cubic" +}, +{ +"x": 433, +"y": 466, +"smooth": true +}, +{ +"x": 433, +"y": 363, +"type": "cubic" +}, +{ +"x": 373, +"y": 309, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/notequal.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/notequal.json new file mode 100644 index 0000000000..7be5268b8d --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/notequal.json @@ -0,0 +1,106 @@ +{ +"name": "notequal", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 376, +"y": 384 +}, +{ +"x": 519, +"y": 384 +}, +{ +"x": 519, +"y": 448 +}, +{ +"x": 412, +"y": 448 +}, +{ +"x": 464, +"y": 541 +}, +{ +"x": 388, +"y": 541 +}, +{ +"x": 336, +"y": 448 +}, +{ +"x": 82, +"y": 448 +}, +{ +"x": 82, +"y": 384 +}, +{ +"x": 300, +"y": 384 +}, +{ +"x": 225, +"y": 248 +}, +{ +"x": 82, +"y": 248 +}, +{ +"x": 82, +"y": 184 +}, +{ +"x": 189, +"y": 184 +}, +{ +"x": 137, +"y": 91 +}, +{ +"x": 213, +"y": 91 +}, +{ +"x": 265, +"y": 184 +}, +{ +"x": 519, +"y": 184 +}, +{ +"x": 519, +"y": 248 +}, +{ +"x": 301, +"y": 248 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ntilde.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ntilde.json new file mode 100644 index 0000000000..8f49876ff7 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ntilde.json @@ -0,0 +1,284 @@ +{ +"name": "ntilde", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 257, +"y": 616, +"smooth": true +}, +{ +"x": 266, +"y": 616, +"type": "cubic" +}, +{ +"x": 277, +"y": 613, +"type": "cubic" +}, +{ +"x": 301, +"y": 604, +"smooth": true +}, +{ +"x": 331, +"y": 594, +"type": "cubic" +}, +{ +"x": 347, +"y": 590, +"type": "cubic" +}, +{ +"x": 368, +"y": 590, +"smooth": true +}, +{ +"x": 408, +"y": 590, +"type": "cubic" +}, +{ +"x": 430, +"y": 611, +"type": "cubic" +}, +{ +"x": 430, +"y": 677 +}, +{ +"x": 377, +"y": 677 +}, +{ +"x": 377, +"y": 660, +"type": "cubic" +}, +{ +"x": 372, +"y": 654, +"type": "cubic" +}, +{ +"x": 361, +"y": 654, +"smooth": true +}, +{ +"x": 353, +"y": 654, +"type": "cubic" +}, +{ +"x": 341, +"y": 657, +"type": "cubic" +}, +{ +"x": 317, +"y": 666, +"smooth": true +}, +{ +"x": 288, +"y": 677, +"type": "cubic" +}, +{ +"x": 272, +"y": 680, +"type": "cubic" +}, +{ +"x": 250, +"y": 680, +"smooth": true +}, +{ +"x": 211, +"y": 680, +"type": "cubic" +}, +{ +"x": 189, +"y": 659, +"type": "cubic" +}, +{ +"x": 189, +"y": 594 +}, +{ +"x": 241, +"y": 594 +}, +{ +"x": 241, +"y": 610, +"type": "cubic" +}, +{ +"x": 247, +"y": 616, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 538, +"y": 393, +"smooth": true +}, +{ +"x": 528, +"y": 486, +"type": "cubic" +}, +{ +"x": 463, +"y": 545, +"type": "cubic" +}, +{ +"x": 349, +"y": 545, +"smooth": true +}, +{ +"x": 296, +"y": 545, +"type": "cubic" +}, +{ +"x": 257, +"y": 536, +"type": "cubic" +}, +{ +"x": 215, +"y": 504 +}, +{ +"x": 179, +"y": 443 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 238, +"smooth": true +}, +{ +"x": 179, +"y": 404, +"type": "cubic" +}, +{ +"x": 241, +"y": 464, +"type": "cubic" +}, +{ +"x": 317, +"y": 464, +"smooth": true +}, +{ +"x": 392, +"y": 464, +"type": "cubic" +}, +{ +"x": 424, +"y": 422, +"type": "cubic" +}, +{ +"x": 429, +"y": 362, +"smooth": true +}, +{ +"x": 431, +"y": 335, +"type": "cubic" +}, +{ +"x": 431, +"y": 312, +"type": "cubic" +}, +{ +"x": 431, +"y": 287, +"smooth": true +}, +{ +"x": 431, +"y": 0 +}, +{ +"x": 541, +"y": 0 +}, +{ +"x": 541, +"y": 299, +"smooth": true +}, +{ +"x": 541, +"y": 342, +"type": "cubic" +}, +{ +"x": 540, +"y": 366, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 606 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/numbersign.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/numbersign.json new file mode 100644 index 0000000000..f8063d31e2 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/numbersign.json @@ -0,0 +1,159 @@ +{ +"name": "numbersign", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 428, +"y": 410 +}, +{ +"x": 530, +"y": 410 +}, +{ +"x": 530, +"y": 476 +}, +{ +"x": 442, +"y": 476 +}, +{ +"x": 488, +"y": 690 +}, +{ +"x": 419, +"y": 690 +}, +{ +"x": 373, +"y": 476 +}, +{ +"x": 283, +"y": 476 +}, +{ +"x": 329, +"y": 690 +}, +{ +"x": 260, +"y": 690 +}, +{ +"x": 214, +"y": 476 +}, +{ +"x": 100, +"y": 476 +}, +{ +"x": 100, +"y": 410 +}, +{ +"x": 200, +"y": 410 +}, +{ +"x": 173, +"y": 281 +}, +{ +"x": 70, +"y": 281 +}, +{ +"x": 70, +"y": 215 +}, +{ +"x": 159, +"y": 215 +}, +{ +"x": 113, +"y": 0 +}, +{ +"x": 182, +"y": 0 +}, +{ +"x": 228, +"y": 215 +}, +{ +"x": 318, +"y": 215 +}, +{ +"x": 272, +"y": 0 +}, +{ +"x": 341, +"y": 0 +}, +{ +"x": 387, +"y": 215 +}, +{ +"x": 500, +"y": 215 +}, +{ +"x": 500, +"y": 281 +}, +{ +"x": 401, +"y": 281 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 359, +"y": 410 +}, +{ +"x": 332, +"y": 281 +}, +{ +"x": 242, +"y": 281 +}, +{ +"x": 269, +"y": 410 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/o.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/o.json new file mode 100644 index 0000000000..0faa54f8b0 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/o.json @@ -0,0 +1,151 @@ +{ +"name": "o", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 298, +"y": 545, +"smooth": true +}, +{ +"x": 119, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 421, +"type": "cubic" +}, +{ +"x": 29, +"y": 266, +"smooth": true +}, +{ +"x": 29, +"y": 111, +"type": "cubic" +}, +{ +"x": 119, +"y": -14, +"type": "cubic" +}, +{ +"x": 298, +"y": -14, +"smooth": true +}, +{ +"x": 476, +"y": -14, +"type": "cubic" +}, +{ +"x": 567, +"y": 111, +"type": "cubic" +}, +{ +"x": 567, +"y": 266, +"smooth": true +}, +{ +"x": 567, +"y": 421, +"type": "cubic" +}, +{ +"x": 476, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 298, +"y": 66, +"smooth": true +}, +{ +"x": 201, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 146, +"type": "cubic" +}, +{ +"x": 145, +"y": 266, +"smooth": true +}, +{ +"x": 145, +"y": 386, +"type": "cubic" +}, +{ +"x": 201, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 394, +"y": 465, +"type": "cubic" +}, +{ +"x": 450, +"y": 386, +"type": "cubic" +}, +{ +"x": 450, +"y": 266, +"smooth": true +}, +{ +"x": 450, +"y": 146, +"type": "cubic" +}, +{ +"x": 394, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 595 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/oacute.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/oacute.json new file mode 100644 index 0000000000..6904d2effa --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/oacute.json @@ -0,0 +1,172 @@ +{ +"name": "oacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 325, +"y": 578 +}, +{ +"x": 428, +"y": 692 +}, +{ +"x": 328, +"y": 692 +}, +{ +"x": 259, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 298, +"y": 545, +"smooth": true +}, +{ +"x": 119, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 421, +"type": "cubic" +}, +{ +"x": 29, +"y": 266, +"smooth": true +}, +{ +"x": 29, +"y": 111, +"type": "cubic" +}, +{ +"x": 119, +"y": -14, +"type": "cubic" +}, +{ +"x": 298, +"y": -14, +"smooth": true +}, +{ +"x": 476, +"y": -14, +"type": "cubic" +}, +{ +"x": 567, +"y": 111, +"type": "cubic" +}, +{ +"x": 567, +"y": 266, +"smooth": true +}, +{ +"x": 567, +"y": 421, +"type": "cubic" +}, +{ +"x": 476, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 298, +"y": 66, +"smooth": true +}, +{ +"x": 201, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 146, +"type": "cubic" +}, +{ +"x": 145, +"y": 266, +"smooth": true +}, +{ +"x": 145, +"y": 386, +"type": "cubic" +}, +{ +"x": 201, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 394, +"y": 465, +"type": "cubic" +}, +{ +"x": 450, +"y": 386, +"type": "cubic" +}, +{ +"x": 450, +"y": 266, +"smooth": true +}, +{ +"x": 450, +"y": 146, +"type": "cubic" +}, +{ +"x": 394, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 595 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ocircumflex.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ocircumflex.json new file mode 100644 index 0000000000..f163c9e0ac --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ocircumflex.json @@ -0,0 +1,184 @@ +{ +"name": "ocircumflex", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 265, +"y": 578 +}, +{ +"x": 298, +"y": 643 +}, +{ +"x": 331, +"y": 578 +}, +{ +"x": 405, +"y": 578 +}, +{ +"x": 339, +"y": 692 +}, +{ +"x": 258, +"y": 692 +}, +{ +"x": 192, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 298, +"y": 545, +"smooth": true +}, +{ +"x": 119, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 421, +"type": "cubic" +}, +{ +"x": 29, +"y": 266, +"smooth": true +}, +{ +"x": 29, +"y": 111, +"type": "cubic" +}, +{ +"x": 119, +"y": -14, +"type": "cubic" +}, +{ +"x": 298, +"y": -14, +"smooth": true +}, +{ +"x": 476, +"y": -14, +"type": "cubic" +}, +{ +"x": 567, +"y": 111, +"type": "cubic" +}, +{ +"x": 567, +"y": 266, +"smooth": true +}, +{ +"x": 567, +"y": 421, +"type": "cubic" +}, +{ +"x": 476, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 298, +"y": 66, +"smooth": true +}, +{ +"x": 201, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 146, +"type": "cubic" +}, +{ +"x": 145, +"y": 266, +"smooth": true +}, +{ +"x": 145, +"y": 386, +"type": "cubic" +}, +{ +"x": 201, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 394, +"y": 465, +"type": "cubic" +}, +{ +"x": 450, +"y": 386, +"type": "cubic" +}, +{ +"x": 450, +"y": 266, +"smooth": true +}, +{ +"x": 450, +"y": 146, +"type": "cubic" +}, +{ +"x": 394, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 595 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/odieresis.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/odieresis.json new file mode 100644 index 0000000000..c2c16222f1 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/odieresis.json @@ -0,0 +1,281 @@ +{ +"name": "odieresis", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 218, +"y": 580, +"smooth": true +}, +{ +"x": 248, +"y": 580, +"type": "cubic" +}, +{ +"x": 272, +"y": 602, +"type": "cubic" +}, +{ +"x": 272, +"y": 632, +"smooth": true +}, +{ +"x": 272, +"y": 662, +"type": "cubic" +}, +{ +"x": 248, +"y": 685, +"type": "cubic" +}, +{ +"x": 218, +"y": 685, +"smooth": true +}, +{ +"x": 188, +"y": 685, +"type": "cubic" +}, +{ +"x": 165, +"y": 662, +"type": "cubic" +}, +{ +"x": 165, +"y": 632, +"smooth": true +}, +{ +"x": 165, +"y": 602, +"type": "cubic" +}, +{ +"x": 188, +"y": 580, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 378, +"y": 580, +"smooth": true +}, +{ +"x": 408, +"y": 580, +"type": "cubic" +}, +{ +"x": 431, +"y": 602, +"type": "cubic" +}, +{ +"x": 431, +"y": 632, +"smooth": true +}, +{ +"x": 431, +"y": 662, +"type": "cubic" +}, +{ +"x": 408, +"y": 685, +"type": "cubic" +}, +{ +"x": 378, +"y": 685, +"smooth": true +}, +{ +"x": 348, +"y": 685, +"type": "cubic" +}, +{ +"x": 325, +"y": 662, +"type": "cubic" +}, +{ +"x": 325, +"y": 632, +"smooth": true +}, +{ +"x": 325, +"y": 602, +"type": "cubic" +}, +{ +"x": 348, +"y": 580, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 298, +"y": 545, +"smooth": true +}, +{ +"x": 119, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 421, +"type": "cubic" +}, +{ +"x": 29, +"y": 266, +"smooth": true +}, +{ +"x": 29, +"y": 111, +"type": "cubic" +}, +{ +"x": 119, +"y": -14, +"type": "cubic" +}, +{ +"x": 298, +"y": -14, +"smooth": true +}, +{ +"x": 476, +"y": -14, +"type": "cubic" +}, +{ +"x": 567, +"y": 111, +"type": "cubic" +}, +{ +"x": 567, +"y": 266, +"smooth": true +}, +{ +"x": 567, +"y": 421, +"type": "cubic" +}, +{ +"x": 476, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 298, +"y": 66, +"smooth": true +}, +{ +"x": 201, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 146, +"type": "cubic" +}, +{ +"x": 145, +"y": 266, +"smooth": true +}, +{ +"x": 145, +"y": 386, +"type": "cubic" +}, +{ +"x": 201, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 394, +"y": 465, +"type": "cubic" +}, +{ +"x": 450, +"y": 386, +"type": "cubic" +}, +{ +"x": 450, +"y": 266, +"smooth": true +}, +{ +"x": 450, +"y": 146, +"type": "cubic" +}, +{ +"x": 394, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 595 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/oe.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/oe.json new file mode 100644 index 0000000000..dba2d7b5b0 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/oe.json @@ -0,0 +1,298 @@ +{ +"name": "oe", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 948, +"y": 279, +"smooth": true +}, +{ +"x": 948, +"y": 429, +"type": "cubic" +}, +{ +"x": 864, +"y": 545, +"type": "cubic" +}, +{ +"x": 713, +"y": 545, +"smooth": true +}, +{ +"x": 627, +"y": 545, +"type": "cubic" +}, +{ +"x": 555, +"y": 509, +"type": "cubic" +}, +{ +"x": 509, +"y": 424 +}, +{ +"x": 466, +"y": 506, +"type": "cubic" +}, +{ +"x": 394, +"y": 545, +"type": "cubic" +}, +{ +"x": 298, +"y": 545, +"smooth": true +}, +{ +"x": 119, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 421, +"type": "cubic" +}, +{ +"x": 29, +"y": 266, +"smooth": true +}, +{ +"x": 29, +"y": 111, +"type": "cubic" +}, +{ +"x": 119, +"y": -14, +"type": "cubic" +}, +{ +"x": 298, +"y": -14, +"smooth": true +}, +{ +"x": 392, +"y": -14, +"type": "cubic" +}, +{ +"x": 462, +"y": 23, +"type": "cubic" +}, +{ +"x": 505, +"y": 103 +}, +{ +"x": 549, +"y": 19, +"type": "cubic" +}, +{ +"x": 620, +"y": -14, +"type": "cubic" +}, +{ +"x": 701, +"y": -14, +"smooth": true +}, +{ +"x": 816, +"y": -14, +"type": "cubic" +}, +{ +"x": 916, +"y": 46, +"type": "cubic" +}, +{ +"x": 940, +"y": 172 +}, +{ +"x": 828, +"y": 172 +}, +{ +"x": 817, +"y": 105, +"type": "cubic" +}, +{ +"x": 768, +"y": 66, +"type": "cubic" +}, +{ +"x": 703, +"y": 66, +"smooth": true +}, +{ +"x": 632, +"y": 66, +"type": "cubic" +}, +{ +"x": 574, +"y": 114, +"type": "cubic" +}, +{ +"x": 566, +"y": 235 +}, +{ +"x": 945, +"y": 235 +}, +{ +"x": 947, +"y": 254, +"type": "cubic" +}, +{ +"x": 948, +"y": 269, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 298, +"y": 66, +"smooth": true +}, +{ +"x": 201, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 146, +"type": "cubic" +}, +{ +"x": 145, +"y": 266, +"smooth": true +}, +{ +"x": 145, +"y": 386, +"type": "cubic" +}, +{ +"x": 201, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 394, +"y": 465, +"type": "cubic" +}, +{ +"x": 450, +"y": 386, +"type": "cubic" +}, +{ +"x": 450, +"y": 266, +"smooth": true +}, +{ +"x": 450, +"y": 146, +"type": "cubic" +}, +{ +"x": 394, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 567, +"y": 312 +}, +{ +"x": 579, +"y": 413, +"type": "cubic" +}, +{ +"x": 631, +"y": 465, +"type": "cubic" +}, +{ +"x": 707, +"y": 465, +"smooth": true +}, +{ +"x": 784, +"y": 465, +"type": "cubic" +}, +{ +"x": 826, +"y": 410, +"type": "cubic" +}, +{ +"x": 835, +"y": 312 +} +], +"isClosed": true +} +] +}, +"xAdvance": 984 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ogonek.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ogonek.json new file mode 100644 index 0000000000..737bd6e3cf --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ogonek.json @@ -0,0 +1,122 @@ +{ +"name": "ogonek", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 150, +"y": 10 +}, +{ +"x": 95, +"y": -13, +"type": "cubic" +}, +{ +"x": 44, +"y": -66, +"type": "cubic" +}, +{ +"x": 44, +"y": -138, +"smooth": true +}, +{ +"x": 44, +"y": -201, +"type": "cubic" +}, +{ +"x": 84, +"y": -223, +"type": "cubic" +}, +{ +"x": 142, +"y": -223, +"smooth": true +}, +{ +"x": 183, +"y": -223, +"type": "cubic" +}, +{ +"x": 217, +"y": -212, +"type": "cubic" +}, +{ +"x": 243, +"y": -192 +}, +{ +"x": 243, +"y": -137 +}, +{ +"x": 225, +"y": -151, +"type": "cubic" +}, +{ +"x": 208, +"y": -157, +"type": "cubic" +}, +{ +"x": 190, +"y": -157, +"smooth": true +}, +{ +"x": 163, +"y": -157, +"type": "cubic" +}, +{ +"x": 146, +"y": -144, +"type": "cubic" +}, +{ +"x": 146, +"y": -107, +"smooth": true +}, +{ +"x": 146, +"y": -50, +"type": "cubic" +}, +{ +"x": 184, +"y": -7, +"type": "cubic" +}, +{ +"x": 228, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 300 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ograve.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ograve.json new file mode 100644 index 0000000000..e86142d53f --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ograve.json @@ -0,0 +1,172 @@ +{ +"name": "ograve", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 273, +"y": 578 +}, +{ +"x": 339, +"y": 578 +}, +{ +"x": 271, +"y": 692 +}, +{ +"x": 171, +"y": 692 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 298, +"y": 545, +"smooth": true +}, +{ +"x": 119, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 421, +"type": "cubic" +}, +{ +"x": 29, +"y": 266, +"smooth": true +}, +{ +"x": 29, +"y": 111, +"type": "cubic" +}, +{ +"x": 119, +"y": -14, +"type": "cubic" +}, +{ +"x": 298, +"y": -14, +"smooth": true +}, +{ +"x": 476, +"y": -14, +"type": "cubic" +}, +{ +"x": 567, +"y": 111, +"type": "cubic" +}, +{ +"x": 567, +"y": 266, +"smooth": true +}, +{ +"x": 567, +"y": 421, +"type": "cubic" +}, +{ +"x": 476, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 298, +"y": 66, +"smooth": true +}, +{ +"x": 201, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 146, +"type": "cubic" +}, +{ +"x": 145, +"y": 266, +"smooth": true +}, +{ +"x": 145, +"y": 386, +"type": "cubic" +}, +{ +"x": 201, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 394, +"y": 465, +"type": "cubic" +}, +{ +"x": 450, +"y": 386, +"type": "cubic" +}, +{ +"x": 450, +"y": 266, +"smooth": true +}, +{ +"x": 450, +"y": 146, +"type": "cubic" +}, +{ +"x": 394, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 595 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ohungarumlaut.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ohungarumlaut.json new file mode 100644 index 0000000000..f613918509 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ohungarumlaut.json @@ -0,0 +1,193 @@ +{ +"name": "ohungarumlaut", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 254, +"y": 578 +}, +{ +"x": 356, +"y": 692 +}, +{ +"x": 256, +"y": 692 +}, +{ +"x": 188, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 327, +"y": 578 +}, +{ +"x": 393, +"y": 578 +}, +{ +"x": 495, +"y": 692 +}, +{ +"x": 395, +"y": 692 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 298, +"y": 545, +"smooth": true +}, +{ +"x": 119, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 421, +"type": "cubic" +}, +{ +"x": 29, +"y": 266, +"smooth": true +}, +{ +"x": 29, +"y": 111, +"type": "cubic" +}, +{ +"x": 119, +"y": -14, +"type": "cubic" +}, +{ +"x": 298, +"y": -14, +"smooth": true +}, +{ +"x": 476, +"y": -14, +"type": "cubic" +}, +{ +"x": 567, +"y": 111, +"type": "cubic" +}, +{ +"x": 567, +"y": 266, +"smooth": true +}, +{ +"x": 567, +"y": 421, +"type": "cubic" +}, +{ +"x": 476, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 298, +"y": 66, +"smooth": true +}, +{ +"x": 201, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 146, +"type": "cubic" +}, +{ +"x": 145, +"y": 266, +"smooth": true +}, +{ +"x": 145, +"y": 386, +"type": "cubic" +}, +{ +"x": 201, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 394, +"y": 465, +"type": "cubic" +}, +{ +"x": 450, +"y": 386, +"type": "cubic" +}, +{ +"x": 450, +"y": 266, +"smooth": true +}, +{ +"x": 450, +"y": 146, +"type": "cubic" +}, +{ +"x": 394, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 595 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/omacron.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/omacron.json new file mode 100644 index 0000000000..1982e979e6 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/omacron.json @@ -0,0 +1,172 @@ +{ +"name": "omacron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 426, +"y": 600 +}, +{ +"x": 426, +"y": 663 +}, +{ +"x": 171, +"y": 663 +}, +{ +"x": 171, +"y": 600 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 298, +"y": 545, +"smooth": true +}, +{ +"x": 119, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 421, +"type": "cubic" +}, +{ +"x": 29, +"y": 266, +"smooth": true +}, +{ +"x": 29, +"y": 111, +"type": "cubic" +}, +{ +"x": 119, +"y": -14, +"type": "cubic" +}, +{ +"x": 298, +"y": -14, +"smooth": true +}, +{ +"x": 476, +"y": -14, +"type": "cubic" +}, +{ +"x": 567, +"y": 111, +"type": "cubic" +}, +{ +"x": 567, +"y": 266, +"smooth": true +}, +{ +"x": 567, +"y": 421, +"type": "cubic" +}, +{ +"x": 476, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 298, +"y": 66, +"smooth": true +}, +{ +"x": 201, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 146, +"type": "cubic" +}, +{ +"x": 145, +"y": 266, +"smooth": true +}, +{ +"x": 145, +"y": 386, +"type": "cubic" +}, +{ +"x": 201, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 394, +"y": 465, +"type": "cubic" +}, +{ +"x": 450, +"y": 386, +"type": "cubic" +}, +{ +"x": 450, +"y": 266, +"smooth": true +}, +{ +"x": 450, +"y": 146, +"type": "cubic" +}, +{ +"x": 394, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 595 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/one.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/one.json new file mode 100644 index 0000000000..24e787e00e --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/one.json @@ -0,0 +1,70 @@ +{ +"name": "one", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 432, +"y": 690 +}, +{ +"x": 371, +"y": 690, +"smooth": true +}, +{ +"x": 340, +"y": 690, +"type": "cubic" +}, +{ +"x": 311, +"y": 683, +"type": "cubic" +}, +{ +"x": 279, +"y": 664, +"smooth": true +}, +{ +"x": 127, +"y": 571 +}, +{ +"x": 127, +"y": 463 +}, +{ +"x": 322, +"y": 575 +}, +{ +"x": 322, +"y": 0 +}, +{ +"x": 432, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/oslash.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/oslash.json new file mode 100644 index 0000000000..030dbb88b9 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/oslash.json @@ -0,0 +1,244 @@ +{ +"name": "oslash", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 600, +"y": 505 +}, +{ +"x": 552, +"y": 553 +}, +{ +"x": 484, +"y": 485 +}, +{ +"x": 441, +"y": 523, +"type": "cubic" +}, +{ +"x": 381, +"y": 545, +"type": "cubic" +}, +{ +"x": 305, +"y": 545, +"smooth": true +}, +{ +"x": 127, +"y": 545, +"type": "cubic" +}, +{ +"x": 36, +"y": 421, +"type": "cubic" +}, +{ +"x": 36, +"y": 266, +"smooth": true +}, +{ +"x": 36, +"y": 199, +"type": "cubic" +}, +{ +"x": 53, +"y": 137, +"type": "cubic" +}, +{ +"x": 87, +"y": 88 +}, +{ +"x": 25, +"y": 26 +}, +{ +"x": 73, +"y": -22 +}, +{ +"x": 134, +"y": 39 +}, +{ +"x": 177, +"y": 6, +"type": "cubic" +}, +{ +"x": 234, +"y": -14, +"type": "cubic" +}, +{ +"x": 305, +"y": -14, +"smooth": true +}, +{ +"x": 484, +"y": -14, +"type": "cubic" +}, +{ +"x": 574, +"y": 111, +"type": "cubic" +}, +{ +"x": 574, +"y": 266, +"smooth": true +}, +{ +"x": 574, +"y": 329, +"type": "cubic" +}, +{ +"x": 559, +"y": 387, +"type": "cubic" +}, +{ +"x": 529, +"y": 434 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 153, +"y": 266, +"smooth": true +}, +{ +"x": 153, +"y": 386, +"type": "cubic" +}, +{ +"x": 209, +"y": 465, +"type": "cubic" +}, +{ +"x": 305, +"y": 465, +"smooth": true +}, +{ +"x": 351, +"y": 465, +"type": "cubic" +}, +{ +"x": 388, +"y": 447, +"type": "cubic" +}, +{ +"x": 414, +"y": 415 +}, +{ +"x": 168, +"y": 169 +}, +{ +"x": 158, +"y": 197, +"type": "cubic" +}, +{ +"x": 153, +"y": 230, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 458, +"y": 266, +"smooth": true +}, +{ +"x": 458, +"y": 146, +"type": "cubic" +}, +{ +"x": 402, +"y": 66, +"type": "cubic" +}, +{ +"x": 305, +"y": 66, +"smooth": true +}, +{ +"x": 263, +"y": 66, +"type": "cubic" +}, +{ +"x": 228, +"y": 81, +"type": "cubic" +}, +{ +"x": 203, +"y": 108 +}, +{ +"x": 446, +"y": 352 +}, +{ +"x": 454, +"y": 326, +"type": "cubic" +}, +{ +"x": 458, +"y": 298, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 625 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/otilde.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/otilde.json new file mode 100644 index 0000000000..d950c84060 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/otilde.json @@ -0,0 +1,282 @@ +{ +"name": "otilde", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 246, +"y": 616, +"smooth": true +}, +{ +"x": 255, +"y": 616, +"type": "cubic" +}, +{ +"x": 266, +"y": 613, +"type": "cubic" +}, +{ +"x": 290, +"y": 604, +"smooth": true +}, +{ +"x": 320, +"y": 594, +"type": "cubic" +}, +{ +"x": 336, +"y": 590, +"type": "cubic" +}, +{ +"x": 357, +"y": 590, +"smooth": true +}, +{ +"x": 397, +"y": 590, +"type": "cubic" +}, +{ +"x": 419, +"y": 611, +"type": "cubic" +}, +{ +"x": 419, +"y": 677 +}, +{ +"x": 366, +"y": 677 +}, +{ +"x": 366, +"y": 660, +"type": "cubic" +}, +{ +"x": 361, +"y": 654, +"type": "cubic" +}, +{ +"x": 350, +"y": 654, +"smooth": true +}, +{ +"x": 342, +"y": 654, +"type": "cubic" +}, +{ +"x": 330, +"y": 657, +"type": "cubic" +}, +{ +"x": 306, +"y": 666, +"smooth": true +}, +{ +"x": 277, +"y": 677, +"type": "cubic" +}, +{ +"x": 261, +"y": 680, +"type": "cubic" +}, +{ +"x": 239, +"y": 680, +"smooth": true +}, +{ +"x": 200, +"y": 680, +"type": "cubic" +}, +{ +"x": 178, +"y": 659, +"type": "cubic" +}, +{ +"x": 178, +"y": 594 +}, +{ +"x": 230, +"y": 594 +}, +{ +"x": 230, +"y": 610, +"type": "cubic" +}, +{ +"x": 236, +"y": 616, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 298, +"y": 545, +"smooth": true +}, +{ +"x": 119, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 421, +"type": "cubic" +}, +{ +"x": 29, +"y": 266, +"smooth": true +}, +{ +"x": 29, +"y": 111, +"type": "cubic" +}, +{ +"x": 119, +"y": -14, +"type": "cubic" +}, +{ +"x": 298, +"y": -14, +"smooth": true +}, +{ +"x": 476, +"y": -14, +"type": "cubic" +}, +{ +"x": 567, +"y": 111, +"type": "cubic" +}, +{ +"x": 567, +"y": 266, +"smooth": true +}, +{ +"x": 567, +"y": 421, +"type": "cubic" +}, +{ +"x": 476, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 298, +"y": 66, +"smooth": true +}, +{ +"x": 201, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 146, +"type": "cubic" +}, +{ +"x": 145, +"y": 266, +"smooth": true +}, +{ +"x": 145, +"y": 386, +"type": "cubic" +}, +{ +"x": 201, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 394, +"y": 465, +"type": "cubic" +}, +{ +"x": 450, +"y": 386, +"type": "cubic" +}, +{ +"x": 450, +"y": 266, +"smooth": true +}, +{ +"x": 450, +"y": 146, +"type": "cubic" +}, +{ +"x": 394, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 595 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/p.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/p.json new file mode 100644 index 0000000000..a7d15940ec --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/p.json @@ -0,0 +1,183 @@ +{ +"name": "p", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 358, +"y": 545, +"smooth": true +}, +{ +"x": 304, +"y": 545, +"type": "cubic" +}, +{ +"x": 249, +"y": 530, +"type": "cubic" +}, +{ +"x": 219, +"y": 505 +}, +{ +"x": 179, +"y": 448 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": -196 +}, +{ +"x": 179, +"y": -196 +}, +{ +"x": 179, +"y": 72 +}, +{ +"x": 214, +"y": 19 +}, +{ +"x": 241, +"y": -2, +"type": "cubic" +}, +{ +"x": 296, +"y": -14, +"type": "cubic" +}, +{ +"x": 340, +"y": -14, +"smooth": true +}, +{ +"x": 477, +"y": -14, +"type": "cubic" +}, +{ +"x": 597, +"y": 80, +"type": "cubic" +}, +{ +"x": 597, +"y": 275, +"smooth": true +}, +{ +"x": 597, +"y": 430, +"type": "cubic" +}, +{ +"x": 510, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 327, +"y": 66, +"smooth": true +}, +{ +"x": 257, +"y": 66, +"type": "cubic" +}, +{ +"x": 179, +"y": 114, +"type": "cubic" +}, +{ +"x": 179, +"y": 244, +"smooth": true +}, +{ +"x": 179, +"y": 271, +"smooth": true +}, +{ +"x": 179, +"y": 413, +"type": "cubic" +}, +{ +"x": 250, +"y": 465, +"type": "cubic" +}, +{ +"x": 332, +"y": 465, +"smooth": true +}, +{ +"x": 428, +"y": 465, +"type": "cubic" +}, +{ +"x": 481, +"y": 380, +"type": "cubic" +}, +{ +"x": 481, +"y": 265, +"smooth": true +}, +{ +"x": 481, +"y": 133, +"type": "cubic" +}, +{ +"x": 415, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 626 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/paragraph.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/paragraph.json new file mode 100644 index 0000000000..0b5947d74f --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/paragraph.json @@ -0,0 +1,123 @@ +{ +"name": "paragraph", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 507, +"y": 690 +}, +{ +"x": 256, +"y": 690, +"smooth": true +}, +{ +"x": 238, +"y": 690, +"type": "cubic" +}, +{ +"x": 217, +"y": 690, +"type": "cubic" +}, +{ +"x": 200, +"y": 689, +"smooth": true +}, +{ +"x": 98, +"y": 683, +"type": "cubic" +}, +{ +"x": 43, +"y": 600, +"type": "cubic" +}, +{ +"x": 43, +"y": 505, +"smooth": true +}, +{ +"x": 43, +"y": 410, +"type": "cubic" +}, +{ +"x": 98, +"y": 327, +"type": "cubic" +}, +{ +"x": 200, +"y": 321, +"smooth": true +}, +{ +"x": 217, +"y": 320, +"type": "cubic" +}, +{ +"x": 238, +"y": 320, +"type": "cubic" +}, +{ +"x": 256, +"y": 320, +"smooth": true +}, +{ +"x": 273, +"y": 320 +}, +{ +"x": 273, +"y": -110 +}, +{ +"x": 341, +"y": -110 +}, +{ +"x": 341, +"y": 624 +}, +{ +"x": 439, +"y": 624 +}, +{ +"x": 439, +"y": -110 +}, +{ +"x": 507, +"y": -110 +} +], +"isClosed": true +} +] +}, +"xAdvance": 579 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/parenleft.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/parenleft.json new file mode 100644 index 0000000000..8583a9b31d --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/parenleft.json @@ -0,0 +1,92 @@ +{ +"name": "parenleft", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 235, +"y": 780 +}, +{ +"x": 153, +"y": 669, +"type": "cubic" +}, +{ +"x": 105, +"y": 516, +"type": "cubic" +}, +{ +"x": 105, +"y": 350, +"smooth": true +}, +{ +"x": 105, +"y": 185, +"type": "cubic" +}, +{ +"x": 153, +"y": 31, +"type": "cubic" +}, +{ +"x": 235, +"y": -80 +}, +{ +"x": 300, +"y": -80 +}, +{ +"x": 222, +"y": 46, +"type": "cubic" +}, +{ +"x": 178, +"y": 195, +"type": "cubic" +}, +{ +"x": 178, +"y": 350, +"smooth": true +}, +{ +"x": 178, +"y": 505, +"type": "cubic" +}, +{ +"x": 222, +"y": 654, +"type": "cubic" +}, +{ +"x": 300, +"y": 780 +} +], +"isClosed": true +} +] +}, +"xAdvance": 337 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/parenright.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/parenright.json new file mode 100644 index 0000000000..237c3c291b --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/parenright.json @@ -0,0 +1,92 @@ +{ +"name": "parenright", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 32, +"y": 780 +}, +{ +"x": 110, +"y": 654, +"type": "cubic" +}, +{ +"x": 154, +"y": 505, +"type": "cubic" +}, +{ +"x": 154, +"y": 350, +"smooth": true +}, +{ +"x": 154, +"y": 195, +"type": "cubic" +}, +{ +"x": 110, +"y": 46, +"type": "cubic" +}, +{ +"x": 32, +"y": -80 +}, +{ +"x": 97, +"y": -80 +}, +{ +"x": 179, +"y": 31, +"type": "cubic" +}, +{ +"x": 227, +"y": 185, +"type": "cubic" +}, +{ +"x": 227, +"y": 350, +"smooth": true +}, +{ +"x": 227, +"y": 516, +"type": "cubic" +}, +{ +"x": 179, +"y": 669, +"type": "cubic" +}, +{ +"x": 97, +"y": 780 +} +], +"isClosed": true +} +] +}, +"xAdvance": 336 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/partialdiff.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/partialdiff.json new file mode 100644 index 0000000000..5aeceef28e --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/partialdiff.json @@ -0,0 +1,212 @@ +{ +"name": "partialdiff", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 274, +"y": 758, +"smooth": true +}, +{ +"x": 193, +"y": 758, +"type": "cubic" +}, +{ +"x": 138, +"y": 739, +"type": "cubic" +}, +{ +"x": 79, +"y": 693 +}, +{ +"x": 121, +"y": 625 +}, +{ +"x": 165, +"y": 660, +"type": "cubic" +}, +{ +"x": 202, +"y": 676, +"type": "cubic" +}, +{ +"x": 264, +"y": 676, +"smooth": true +}, +{ +"x": 380, +"y": 676, +"type": "cubic" +}, +{ +"x": 421, +"y": 570, +"type": "cubic" +}, +{ +"x": 431, +"y": 435 +}, +{ +"x": 405, +"y": 473, +"type": "cubic" +}, +{ +"x": 357, +"y": 498, +"type": "cubic" +}, +{ +"x": 291, +"y": 498, +"smooth": true +}, +{ +"x": 131, +"y": 498, +"type": "cubic" +}, +{ +"x": 44, +"y": 385, +"type": "cubic" +}, +{ +"x": 44, +"y": 239, +"smooth": true +}, +{ +"x": 44, +"y": 70, +"type": "cubic" +}, +{ +"x": 155, +"y": -14, +"type": "cubic" +}, +{ +"x": 285, +"y": -14, +"smooth": true +}, +{ +"x": 441, +"y": -14, +"type": "cubic" +}, +{ +"x": 551, +"y": 88, +"type": "cubic" +}, +{ +"x": 551, +"y": 352, +"smooth": true +}, +{ +"x": 551, +"y": 571, +"type": "cubic" +}, +{ +"x": 482, +"y": 758, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 293, +"y": 69, +"smooth": true +}, +{ +"x": 218, +"y": 69, +"type": "cubic" +}, +{ +"x": 161, +"y": 126, +"type": "cubic" +}, +{ +"x": 161, +"y": 242, +"smooth": true +}, +{ +"x": 161, +"y": 347, +"type": "cubic" +}, +{ +"x": 208, +"y": 415, +"type": "cubic" +}, +{ +"x": 302, +"y": 415, +"smooth": true +}, +{ +"x": 361, +"y": 415, +"type": "cubic" +}, +{ +"x": 407, +"y": 392, +"type": "cubic" +}, +{ +"x": 436, +"y": 334 +}, +{ +"x": 433, +"y": 165, +"type": "cubic" +}, +{ +"x": 391, +"y": 69, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/percent.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/percent.json new file mode 100644 index 0000000000..12458b4a53 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/percent.json @@ -0,0 +1,302 @@ +{ +"name": "percent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 190, +"y": 701, +"smooth": true +}, +{ +"x": 97, +"y": 701, +"type": "cubic" +}, +{ +"x": 39, +"y": 640, +"type": "cubic" +}, +{ +"x": 39, +"y": 540, +"smooth": true +}, +{ +"x": 39, +"y": 440, +"type": "cubic" +}, +{ +"x": 97, +"y": 378, +"type": "cubic" +}, +{ +"x": 190, +"y": 378, +"smooth": true +}, +{ +"x": 282, +"y": 378, +"type": "cubic" +}, +{ +"x": 341, +"y": 440, +"type": "cubic" +}, +{ +"x": 341, +"y": 540, +"smooth": true +}, +{ +"x": 341, +"y": 640, +"type": "cubic" +}, +{ +"x": 282, +"y": 701, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 201, +"y": 0 +}, +{ +"x": 649, +"y": 690 +}, +{ +"x": 553, +"y": 690 +}, +{ +"x": 105, +"y": 0 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 190, +"y": 635, +"smooth": true +}, +{ +"x": 227, +"y": 635, +"type": "cubic" +}, +{ +"x": 251, +"y": 602, +"type": "cubic" +}, +{ +"x": 251, +"y": 540, +"smooth": true +}, +{ +"x": 251, +"y": 478, +"type": "cubic" +}, +{ +"x": 227, +"y": 444, +"type": "cubic" +}, +{ +"x": 190, +"y": 444, +"smooth": true +}, +{ +"x": 152, +"y": 444, +"type": "cubic" +}, +{ +"x": 129, +"y": 478, +"type": "cubic" +}, +{ +"x": 129, +"y": 540, +"smooth": true +}, +{ +"x": 129, +"y": 602, +"type": "cubic" +}, +{ +"x": 152, +"y": 635, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 561, +"y": 309, +"smooth": true +}, +{ +"x": 469, +"y": 309, +"type": "cubic" +}, +{ +"x": 410, +"y": 248, +"type": "cubic" +}, +{ +"x": 410, +"y": 148, +"smooth": true +}, +{ +"x": 410, +"y": 48, +"type": "cubic" +}, +{ +"x": 469, +"y": -14, +"type": "cubic" +}, +{ +"x": 561, +"y": -14, +"smooth": true +}, +{ +"x": 654, +"y": -14, +"type": "cubic" +}, +{ +"x": 712, +"y": 48, +"type": "cubic" +}, +{ +"x": 712, +"y": 148, +"smooth": true +}, +{ +"x": 712, +"y": 248, +"type": "cubic" +}, +{ +"x": 654, +"y": 309, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 561, +"y": 243, +"smooth": true +}, +{ +"x": 599, +"y": 243, +"type": "cubic" +}, +{ +"x": 622, +"y": 210, +"type": "cubic" +}, +{ +"x": 622, +"y": 148, +"smooth": true +}, +{ +"x": 622, +"y": 86, +"type": "cubic" +}, +{ +"x": 599, +"y": 52, +"type": "cubic" +}, +{ +"x": 561, +"y": 52, +"smooth": true +}, +{ +"x": 524, +"y": 52, +"type": "cubic" +}, +{ +"x": 500, +"y": 86, +"type": "cubic" +}, +{ +"x": 500, +"y": 148, +"smooth": true +}, +{ +"x": 500, +"y": 210, +"type": "cubic" +}, +{ +"x": 524, +"y": 243, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 751 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/period.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/period.json new file mode 100644 index 0000000000..c61f331a52 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/period.json @@ -0,0 +1,86 @@ +{ +"name": "period", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 111, +"y": 132, +"smooth": true +}, +{ +"x": 68, +"y": 132, +"type": "cubic" +}, +{ +"x": 38, +"y": 102, +"type": "cubic" +}, +{ +"x": 38, +"y": 59, +"smooth": true +}, +{ +"x": 38, +"y": 17, +"type": "cubic" +}, +{ +"x": 68, +"y": -14, +"type": "cubic" +}, +{ +"x": 111, +"y": -14, +"smooth": true +}, +{ +"x": 153, +"y": -14, +"type": "cubic" +}, +{ +"x": 184, +"y": 17, +"type": "cubic" +}, +{ +"x": 184, +"y": 59, +"smooth": true +}, +{ +"x": 184, +"y": 102, +"type": "cubic" +}, +{ +"x": 153, +"y": 132, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 232 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/periodcentered.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/periodcentered.json new file mode 100644 index 0000000000..2eefb46d65 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/periodcentered.json @@ -0,0 +1,86 @@ +{ +"name": "periodcentered", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 111, +"y": 382, +"smooth": true +}, +{ +"x": 67, +"y": 382, +"type": "cubic" +}, +{ +"x": 34, +"y": 349, +"type": "cubic" +}, +{ +"x": 34, +"y": 305, +"smooth": true +}, +{ +"x": 34, +"y": 261, +"type": "cubic" +}, +{ +"x": 67, +"y": 228, +"type": "cubic" +}, +{ +"x": 111, +"y": 228, +"smooth": true +}, +{ +"x": 155, +"y": 228, +"type": "cubic" +}, +{ +"x": 188, +"y": 261, +"type": "cubic" +}, +{ +"x": 188, +"y": 305, +"smooth": true +}, +{ +"x": 188, +"y": 349, +"type": "cubic" +}, +{ +"x": 155, +"y": 382, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 222 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/perthousand.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/perthousand.json new file mode 100644 index 0000000000..8e0cd27122 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/perthousand.json @@ -0,0 +1,432 @@ +{ +"name": "perthousand", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 341, +"y": 540, +"smooth": true +}, +{ +"x": 341, +"y": 640, +"type": "cubic" +}, +{ +"x": 282, +"y": 701, +"type": "cubic" +}, +{ +"x": 190, +"y": 701, +"smooth": true +}, +{ +"x": 97, +"y": 701, +"type": "cubic" +}, +{ +"x": 39, +"y": 640, +"type": "cubic" +}, +{ +"x": 39, +"y": 540, +"smooth": true +}, +{ +"x": 39, +"y": 440, +"type": "cubic" +}, +{ +"x": 97, +"y": 378, +"type": "cubic" +}, +{ +"x": 190, +"y": 378, +"smooth": true +}, +{ +"x": 282, +"y": 378, +"type": "cubic" +}, +{ +"x": 341, +"y": 440, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 649, +"y": 690 +}, +{ +"x": 553, +"y": 690 +}, +{ +"x": 105, +"y": 0 +}, +{ +"x": 201, +"y": 0 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 129, +"y": 540, +"smooth": true +}, +{ +"x": 129, +"y": 602, +"type": "cubic" +}, +{ +"x": 152, +"y": 635, +"type": "cubic" +}, +{ +"x": 190, +"y": 635, +"smooth": true +}, +{ +"x": 227, +"y": 635, +"type": "cubic" +}, +{ +"x": 251, +"y": 602, +"type": "cubic" +}, +{ +"x": 251, +"y": 540, +"smooth": true +}, +{ +"x": 251, +"y": 478, +"type": "cubic" +}, +{ +"x": 227, +"y": 444, +"type": "cubic" +}, +{ +"x": 190, +"y": 444, +"smooth": true +}, +{ +"x": 152, +"y": 444, +"type": "cubic" +}, +{ +"x": 129, +"y": 478, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 561, +"y": 309, +"smooth": true +}, +{ +"x": 469, +"y": 309, +"type": "cubic" +}, +{ +"x": 410, +"y": 248, +"type": "cubic" +}, +{ +"x": 410, +"y": 148, +"smooth": true +}, +{ +"x": 410, +"y": 48, +"type": "cubic" +}, +{ +"x": 469, +"y": -14, +"type": "cubic" +}, +{ +"x": 561, +"y": -14, +"smooth": true +}, +{ +"x": 654, +"y": -14, +"type": "cubic" +}, +{ +"x": 712, +"y": 48, +"type": "cubic" +}, +{ +"x": 712, +"y": 148, +"smooth": true +}, +{ +"x": 712, +"y": 248, +"type": "cubic" +}, +{ +"x": 654, +"y": 309, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 901, +"y": 309, +"smooth": true +}, +{ +"x": 809, +"y": 309, +"type": "cubic" +}, +{ +"x": 750, +"y": 248, +"type": "cubic" +}, +{ +"x": 750, +"y": 148, +"smooth": true +}, +{ +"x": 750, +"y": 48, +"type": "cubic" +}, +{ +"x": 809, +"y": -14, +"type": "cubic" +}, +{ +"x": 901, +"y": -14, +"smooth": true +}, +{ +"x": 994, +"y": -14, +"type": "cubic" +}, +{ +"x": 1052, +"y": 48, +"type": "cubic" +}, +{ +"x": 1052, +"y": 148, +"smooth": true +}, +{ +"x": 1052, +"y": 248, +"type": "cubic" +}, +{ +"x": 994, +"y": 309, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 561, +"y": 52, +"smooth": true +}, +{ +"x": 524, +"y": 52, +"type": "cubic" +}, +{ +"x": 500, +"y": 86, +"type": "cubic" +}, +{ +"x": 500, +"y": 148, +"smooth": true +}, +{ +"x": 500, +"y": 210, +"type": "cubic" +}, +{ +"x": 524, +"y": 243, +"type": "cubic" +}, +{ +"x": 561, +"y": 243, +"smooth": true +}, +{ +"x": 599, +"y": 243, +"type": "cubic" +}, +{ +"x": 622, +"y": 210, +"type": "cubic" +}, +{ +"x": 622, +"y": 148, +"smooth": true +}, +{ +"x": 622, +"y": 86, +"type": "cubic" +}, +{ +"x": 599, +"y": 52, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 901, +"y": 52, +"smooth": true +}, +{ +"x": 864, +"y": 52, +"type": "cubic" +}, +{ +"x": 840, +"y": 86, +"type": "cubic" +}, +{ +"x": 840, +"y": 148, +"smooth": true +}, +{ +"x": 840, +"y": 210, +"type": "cubic" +}, +{ +"x": 864, +"y": 243, +"type": "cubic" +}, +{ +"x": 901, +"y": 243, +"smooth": true +}, +{ +"x": 939, +"y": 243, +"type": "cubic" +}, +{ +"x": 962, +"y": 210, +"type": "cubic" +}, +{ +"x": 962, +"y": 148, +"smooth": true +}, +{ +"x": 962, +"y": 86, +"type": "cubic" +}, +{ +"x": 939, +"y": 52, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 1091 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/plus.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/plus.json new file mode 100644 index 0000000000..dbd17ab497 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/plus.json @@ -0,0 +1,74 @@ +{ +"name": "plus", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 514, +"y": 284 +}, +{ +"x": 514, +"y": 348 +}, +{ +"x": 335, +"y": 348 +}, +{ +"x": 335, +"y": 551 +}, +{ +"x": 266, +"y": 551 +}, +{ +"x": 266, +"y": 348 +}, +{ +"x": 87, +"y": 348 +}, +{ +"x": 87, +"y": 284 +}, +{ +"x": 266, +"y": 284 +}, +{ +"x": 266, +"y": 83 +}, +{ +"x": 335, +"y": 83 +}, +{ +"x": 335, +"y": 284 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/plusminus.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/plusminus.json new file mode 100644 index 0000000000..48514ca7dd --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/plusminus.json @@ -0,0 +1,95 @@ +{ +"name": "plusminus", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 335, +"y": 352 +}, +{ +"x": 335, +"y": 519 +}, +{ +"x": 266, +"y": 519 +}, +{ +"x": 266, +"y": 352 +}, +{ +"x": 93, +"y": 352 +}, +{ +"x": 93, +"y": 286 +}, +{ +"x": 266, +"y": 286 +}, +{ +"x": 266, +"y": 115 +}, +{ +"x": 335, +"y": 115 +}, +{ +"x": 335, +"y": 286 +}, +{ +"x": 508, +"y": 286 +}, +{ +"x": 508, +"y": 352 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 508, +"y": 0 +}, +{ +"x": 508, +"y": 64 +}, +{ +"x": 93, +"y": 64 +}, +{ +"x": 93, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/product.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/product.json new file mode 100644 index 0000000000..7a6f720d9e --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/product.json @@ -0,0 +1,74 @@ +{ +"name": "product", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 568, +"y": 603 +}, +{ +"x": 568, +"y": 690 +}, +{ +"x": 33, +"y": 690 +}, +{ +"x": 33, +"y": 603 +}, +{ +"x": 93, +"y": 603 +}, +{ +"x": 93, +"y": -110 +}, +{ +"x": 202, +"y": -110 +}, +{ +"x": 202, +"y": 603 +}, +{ +"x": 399, +"y": 603 +}, +{ +"x": 399, +"y": -110 +}, +{ +"x": 508, +"y": -110 +}, +{ +"x": 508, +"y": 603 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/q.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/q.json new file mode 100644 index 0000000000..3dbfccf7a4 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/q.json @@ -0,0 +1,183 @@ +{ +"name": "q", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 557, +"y": 531 +}, +{ +"x": 447, +"y": 531 +}, +{ +"x": 447, +"y": 459 +}, +{ +"x": 412, +"y": 512 +}, +{ +"x": 385, +"y": 533, +"type": "cubic" +}, +{ +"x": 330, +"y": 545, +"type": "cubic" +}, +{ +"x": 286, +"y": 545, +"smooth": true +}, +{ +"x": 149, +"y": 545, +"type": "cubic" +}, +{ +"x": 29, +"y": 451, +"type": "cubic" +}, +{ +"x": 29, +"y": 257, +"smooth": true +}, +{ +"x": 29, +"y": 101, +"type": "cubic" +}, +{ +"x": 116, +"y": -14, +"type": "cubic" +}, +{ +"x": 268, +"y": -14, +"smooth": true +}, +{ +"x": 322, +"y": -14, +"type": "cubic" +}, +{ +"x": 377, +"y": 2, +"type": "cubic" +}, +{ +"x": 407, +"y": 26 +}, +{ +"x": 447, +"y": 84 +}, +{ +"x": 447, +"y": -196 +}, +{ +"x": 557, +"y": -196 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 293, +"y": 66, +"smooth": true +}, +{ +"x": 198, +"y": 66, +"type": "cubic" +}, +{ +"x": 145, +"y": 151, +"type": "cubic" +}, +{ +"x": 145, +"y": 266, +"smooth": true +}, +{ +"x": 145, +"y": 398, +"type": "cubic" +}, +{ +"x": 211, +"y": 465, +"type": "cubic" +}, +{ +"x": 298, +"y": 465, +"smooth": true +}, +{ +"x": 369, +"y": 465, +"type": "cubic" +}, +{ +"x": 447, +"y": 417, +"type": "cubic" +}, +{ +"x": 447, +"y": 288, +"smooth": true +}, +{ +"x": 447, +"y": 260, +"smooth": true +}, +{ +"x": 447, +"y": 118, +"type": "cubic" +}, +{ +"x": 376, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 629 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/question.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/question.json new file mode 100644 index 0000000000..43070ed48b --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/question.json @@ -0,0 +1,217 @@ +{ +"name": "question", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 269, +"y": 704, +"smooth": true +}, +{ +"x": 131, +"y": 704, +"type": "cubic" +}, +{ +"x": 38, +"y": 621, +"type": "cubic" +}, +{ +"x": 34, +"y": 489 +}, +{ +"x": 146, +"y": 489 +}, +{ +"x": 152, +"y": 576, +"type": "cubic" +}, +{ +"x": 196, +"y": 620, +"type": "cubic" +}, +{ +"x": 264, +"y": 620, +"smooth": true +}, +{ +"x": 330, +"y": 620, +"type": "cubic" +}, +{ +"x": 367, +"y": 579, +"type": "cubic" +}, +{ +"x": 367, +"y": 515, +"smooth": true +}, +{ +"x": 367, +"y": 461, +"type": "cubic" +}, +{ +"x": 345, +"y": 423, +"type": "cubic" +}, +{ +"x": 278, +"y": 348, +"smooth": true +}, +{ +"x": 226, +"y": 289, +"type": "cubic" +}, +{ +"x": 207, +"y": 252, +"type": "cubic" +}, +{ +"x": 202, +"y": 188 +}, +{ +"x": 303, +"y": 188 +}, +{ +"x": 307, +"y": 238, +"type": "cubic" +}, +{ +"x": 323, +"y": 264, +"type": "cubic" +}, +{ +"x": 381, +"y": 320, +"smooth": true +}, +{ +"x": 452, +"y": 388, +"type": "cubic" +}, +{ +"x": 486, +"y": 446, +"type": "cubic" +}, +{ +"x": 486, +"y": 519, +"smooth": true +}, +{ +"x": 486, +"y": 627, +"type": "cubic" +}, +{ +"x": 408, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 253, +"y": 127, +"smooth": true +}, +{ +"x": 212, +"y": 127, +"type": "cubic" +}, +{ +"x": 183, +"y": 97, +"type": "cubic" +}, +{ +"x": 183, +"y": 56, +"smooth": true +}, +{ +"x": 183, +"y": 15, +"type": "cubic" +}, +{ +"x": 212, +"y": -14, +"type": "cubic" +}, +{ +"x": 253, +"y": -14, +"smooth": true +}, +{ +"x": 294, +"y": -14, +"type": "cubic" +}, +{ +"x": 324, +"y": 15, +"type": "cubic" +}, +{ +"x": 324, +"y": 56, +"smooth": true +}, +{ +"x": 324, +"y": 97, +"type": "cubic" +}, +{ +"x": 294, +"y": 127, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 522 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/questiondown.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/questiondown.json new file mode 100644 index 0000000000..cf711fde4f --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/questiondown.json @@ -0,0 +1,217 @@ +{ +"name": "questiondown", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 295, +"y": 404, +"smooth": true +}, +{ +"x": 336, +"y": 404, +"type": "cubic" +}, +{ +"x": 365, +"y": 434, +"type": "cubic" +}, +{ +"x": 365, +"y": 475, +"smooth": true +}, +{ +"x": 365, +"y": 516, +"type": "cubic" +}, +{ +"x": 336, +"y": 545, +"type": "cubic" +}, +{ +"x": 295, +"y": 545, +"smooth": true +}, +{ +"x": 254, +"y": 545, +"type": "cubic" +}, +{ +"x": 224, +"y": 516, +"type": "cubic" +}, +{ +"x": 224, +"y": 475, +"smooth": true +}, +{ +"x": 224, +"y": 434, +"type": "cubic" +}, +{ +"x": 254, +"y": 404, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 279, +"y": -173, +"smooth": true +}, +{ +"x": 417, +"y": -173, +"type": "cubic" +}, +{ +"x": 510, +"y": -90, +"type": "cubic" +}, +{ +"x": 514, +"y": 42 +}, +{ +"x": 402, +"y": 42 +}, +{ +"x": 396, +"y": -45, +"type": "cubic" +}, +{ +"x": 352, +"y": -89, +"type": "cubic" +}, +{ +"x": 284, +"y": -89, +"smooth": true +}, +{ +"x": 218, +"y": -89, +"type": "cubic" +}, +{ +"x": 181, +"y": -48, +"type": "cubic" +}, +{ +"x": 181, +"y": 16, +"smooth": true +}, +{ +"x": 181, +"y": 70, +"type": "cubic" +}, +{ +"x": 203, +"y": 108, +"type": "cubic" +}, +{ +"x": 270, +"y": 183, +"smooth": true +}, +{ +"x": 322, +"y": 242, +"type": "cubic" +}, +{ +"x": 341, +"y": 279, +"type": "cubic" +}, +{ +"x": 346, +"y": 344 +}, +{ +"x": 245, +"y": 344 +}, +{ +"x": 241, +"y": 294, +"type": "cubic" +}, +{ +"x": 225, +"y": 267, +"type": "cubic" +}, +{ +"x": 167, +"y": 211, +"smooth": true +}, +{ +"x": 96, +"y": 144, +"type": "cubic" +}, +{ +"x": 62, +"y": 85, +"type": "cubic" +}, +{ +"x": 62, +"y": 13, +"smooth": true +}, +{ +"x": 62, +"y": -96, +"type": "cubic" +}, +{ +"x": 140, +"y": -173, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 508 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotedbl.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotedbl.json new file mode 100644 index 0000000000..aad0514102 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotedbl.json @@ -0,0 +1,63 @@ +{ +"name": "quotedbl", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 165, +"y": 474 +}, +{ +"x": 177, +"y": 735 +}, +{ +"x": 72, +"y": 735 +}, +{ +"x": 83, +"y": 474 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 318, +"y": 474 +}, +{ +"x": 329, +"y": 735 +}, +{ +"x": 224, +"y": 735 +}, +{ +"x": 236, +"y": 474 +} +], +"isClosed": true +} +] +}, +"xAdvance": 357 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotedblbase.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotedblbase.json new file mode 100644 index 0000000000..2ece31345b --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotedblbase.json @@ -0,0 +1,71 @@ +{ +"name": "quotedblbase", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 160, +"y": 108 +}, +{ +"x": 160, +"y": 118 +}, +{ +"x": 49, +"y": 118 +}, +{ +"x": -30, +"y": -121 +}, +{ +"x": 66, +"y": -121 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 348, +"y": 108 +}, +{ +"x": 348, +"y": 118 +}, +{ +"x": 236, +"y": 118 +}, +{ +"x": 158, +"y": -121 +}, +{ +"x": 253, +"y": -121 +} +], +"isClosed": true +} +] +}, +"xAdvance": 419 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotedblleft.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotedblleft.json new file mode 100644 index 0000000000..18718712c0 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotedblleft.json @@ -0,0 +1,71 @@ +{ +"name": "quotedblleft", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 55, +"y": 484 +}, +{ +"x": 55, +"y": 474 +}, +{ +"x": 167, +"y": 474 +}, +{ +"x": 245, +"y": 736 +}, +{ +"x": 153, +"y": 736 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 242, +"y": 484 +}, +{ +"x": 242, +"y": 474 +}, +{ +"x": 354, +"y": 474 +}, +{ +"x": 432, +"y": 736 +}, +{ +"x": 340, +"y": 736 +} +], +"isClosed": true +} +] +}, +"xAdvance": 453 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotedblright.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotedblright.json new file mode 100644 index 0000000000..ac81b7d091 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotedblright.json @@ -0,0 +1,71 @@ +{ +"name": "quotedblright", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 211, +"y": 725 +}, +{ +"x": 211, +"y": 735 +}, +{ +"x": 99, +"y": 735 +}, +{ +"x": 21, +"y": 474 +}, +{ +"x": 113, +"y": 474 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 398, +"y": 725 +}, +{ +"x": 398, +"y": 735 +}, +{ +"x": 287, +"y": 735 +}, +{ +"x": 208, +"y": 474 +}, +{ +"x": 301, +"y": 474 +} +], +"isClosed": true +} +] +}, +"xAdvance": 453 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quoteleft.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quoteleft.json new file mode 100644 index 0000000000..718c2ae738 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quoteleft.json @@ -0,0 +1,46 @@ +{ +"name": "quoteleft", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 55, +"y": 484 +}, +{ +"x": 55, +"y": 474 +}, +{ +"x": 167, +"y": 474 +}, +{ +"x": 245, +"y": 735 +}, +{ +"x": 153, +"y": 735 +} +], +"isClosed": true +} +] +}, +"xAdvance": 266 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quoteright.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quoteright.json new file mode 100644 index 0000000000..765a4dda4f --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quoteright.json @@ -0,0 +1,46 @@ +{ +"name": "quoteright", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 211, +"y": 725 +}, +{ +"x": 211, +"y": 735 +}, +{ +"x": 99, +"y": 735 +}, +{ +"x": 21, +"y": 474 +}, +{ +"x": 113, +"y": 474 +} +], +"isClosed": true +} +] +}, +"xAdvance": 266 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotesinglbase.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotesinglbase.json new file mode 100644 index 0000000000..b282458b37 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotesinglbase.json @@ -0,0 +1,46 @@ +{ +"name": "quotesinglbase", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 160, +"y": 108 +}, +{ +"x": 160, +"y": 118 +}, +{ +"x": 49, +"y": 118 +}, +{ +"x": -30, +"y": -121 +}, +{ +"x": 66, +"y": -121 +} +], +"isClosed": true +} +] +}, +"xAdvance": 232 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotesingle.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotesingle.json new file mode 100644 index 0000000000..acfd3e7bfe --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/quotesingle.json @@ -0,0 +1,42 @@ +{ +"name": "quotesingle", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 133, +"y": 474 +}, +{ +"x": 145, +"y": 735 +}, +{ +"x": 40, +"y": 735 +}, +{ +"x": 51, +"y": 474 +} +], +"isClosed": true +} +] +}, +"xAdvance": 187 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/r.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/r.json new file mode 100644 index 0000000000..c8f6d1a224 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/r.json @@ -0,0 +1,98 @@ +{ +"name": "r", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 306, +"y": 544, +"smooth": true +}, +{ +"x": 279, +"y": 544, +"type": "cubic" +}, +{ +"x": 248, +"y": 533, +"type": "cubic" +}, +{ +"x": 224, +"y": 514 +}, +{ +"x": 179, +"y": 441 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 276, +"smooth": true +}, +{ +"x": 179, +"y": 407, +"type": "cubic" +}, +{ +"x": 242, +"y": 459, +"type": "cubic" +}, +{ +"x": 343, +"y": 452 +}, +{ +"x": 343, +"y": 538 +}, +{ +"x": 332, +"y": 542, +"type": "cubic" +}, +{ +"x": 321, +"y": 544, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 353 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/racute.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/racute.json new file mode 100644 index 0000000000..d5a9d8036b --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/racute.json @@ -0,0 +1,119 @@ +{ +"name": "racute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 218, +"y": 578 +}, +{ +"x": 321, +"y": 692 +}, +{ +"x": 221, +"y": 692 +}, +{ +"x": 152, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 306, +"y": 544, +"smooth": true +}, +{ +"x": 279, +"y": 544, +"type": "cubic" +}, +{ +"x": 248, +"y": 533, +"type": "cubic" +}, +{ +"x": 224, +"y": 514 +}, +{ +"x": 179, +"y": 441 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 276, +"smooth": true +}, +{ +"x": 179, +"y": 407, +"type": "cubic" +}, +{ +"x": 242, +"y": 459, +"type": "cubic" +}, +{ +"x": 343, +"y": 452 +}, +{ +"x": 343, +"y": 538 +}, +{ +"x": 332, +"y": 542, +"type": "cubic" +}, +{ +"x": 321, +"y": 544, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 353 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/radical.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/radical.json new file mode 100644 index 0000000000..53bd085a1b --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/radical.json @@ -0,0 +1,62 @@ +{ +"name": "radical", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 566, +"y": 780 +}, +{ +"x": 493, +"y": 780 +}, +{ +"x": 304, +"y": -74 +}, +{ +"x": 189, +"y": 310 +}, +{ +"x": 64, +"y": 310 +}, +{ +"x": 64, +"y": 246 +}, +{ +"x": 134, +"y": 246 +}, +{ +"x": 261, +"y": -160 +}, +{ +"x": 349, +"y": -160 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/rcaron.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/rcaron.json new file mode 100644 index 0000000000..71714ff465 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/rcaron.json @@ -0,0 +1,131 @@ +{ +"name": "rcaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 151, +"y": 578 +}, +{ +"x": 232, +"y": 578 +}, +{ +"x": 298, +"y": 692 +}, +{ +"x": 225, +"y": 692 +}, +{ +"x": 192, +"y": 626 +}, +{ +"x": 159, +"y": 692 +}, +{ +"x": 85, +"y": 692 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 306, +"y": 544, +"smooth": true +}, +{ +"x": 279, +"y": 544, +"type": "cubic" +}, +{ +"x": 248, +"y": 533, +"type": "cubic" +}, +{ +"x": 224, +"y": 514 +}, +{ +"x": 179, +"y": 441 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 276, +"smooth": true +}, +{ +"x": 179, +"y": 407, +"type": "cubic" +}, +{ +"x": 242, +"y": 459, +"type": "cubic" +}, +{ +"x": 343, +"y": 452 +}, +{ +"x": 343, +"y": 538 +}, +{ +"x": 332, +"y": 542, +"type": "cubic" +}, +{ +"x": 321, +"y": 544, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 353 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/rcommaaccent.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/rcommaaccent.json new file mode 100644 index 0000000000..6d4e8e5406 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/rcommaaccent.json @@ -0,0 +1,123 @@ +{ +"name": "rcommaaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 306, +"y": 544, +"smooth": true +}, +{ +"x": 279, +"y": 544, +"type": "cubic" +}, +{ +"x": 248, +"y": 533, +"type": "cubic" +}, +{ +"x": 224, +"y": 514 +}, +{ +"x": 179, +"y": 441 +}, +{ +"x": 179, +"y": 531 +}, +{ +"x": 69, +"y": 531 +}, +{ +"x": 69, +"y": 0 +}, +{ +"x": 179, +"y": 0 +}, +{ +"x": 179, +"y": 276, +"smooth": true +}, +{ +"x": 179, +"y": 407, +"type": "cubic" +}, +{ +"x": 242, +"y": 459, +"type": "cubic" +}, +{ +"x": 343, +"y": 452 +}, +{ +"x": 343, +"y": 538 +}, +{ +"x": 332, +"y": 542, +"type": "cubic" +}, +{ +"x": 321, +"y": 544, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 90, +"y": -48 +}, +{ +"x": 30, +"y": -200 +}, +{ +"x": 100, +"y": -200 +}, +{ +"x": 171, +"y": -59 +}, +{ +"x": 171, +"y": -48 +} +], +"isClosed": true +} +] +}, +"xAdvance": 353 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/registered.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/registered.json new file mode 100644 index 0000000000..106907dcd5 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/registered.json @@ -0,0 +1,361 @@ +{ +"name": "registered", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 251, +"y": 764, +"smooth": true +}, +{ +"x": 128, +"y": 764, +"type": "cubic" +}, +{ +"x": 41, +"y": 677, +"type": "cubic" +}, +{ +"x": 41, +"y": 554, +"smooth": true +}, +{ +"x": 41, +"y": 431, +"type": "cubic" +}, +{ +"x": 128, +"y": 344, +"type": "cubic" +}, +{ +"x": 251, +"y": 344, +"smooth": true +}, +{ +"x": 375, +"y": 344, +"type": "cubic" +}, +{ +"x": 461, +"y": 431, +"type": "cubic" +}, +{ +"x": 461, +"y": 554, +"smooth": true +}, +{ +"x": 461, +"y": 677, +"type": "cubic" +}, +{ +"x": 375, +"y": 764, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 251, +"y": 393, +"smooth": true +}, +{ +"x": 158, +"y": 393, +"type": "cubic" +}, +{ +"x": 92, +"y": 460, +"type": "cubic" +}, +{ +"x": 92, +"y": 554, +"smooth": true +}, +{ +"x": 92, +"y": 649, +"type": "cubic" +}, +{ +"x": 158, +"y": 716, +"type": "cubic" +}, +{ +"x": 251, +"y": 716, +"smooth": true +}, +{ +"x": 345, +"y": 716, +"type": "cubic" +}, +{ +"x": 410, +"y": 649, +"type": "cubic" +}, +{ +"x": 410, +"y": 554, +"smooth": true +}, +{ +"x": 410, +"y": 460, +"type": "cubic" +}, +{ +"x": 345, +"y": 393, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 300, +"y": 554 +}, +{ +"x": 323, +"y": 561, +"type": "cubic" +}, +{ +"x": 341, +"y": 577, +"type": "cubic" +}, +{ +"x": 341, +"y": 604, +"smooth": true +}, +{ +"x": 341, +"y": 638, +"type": "cubic" +}, +{ +"x": 315, +"y": 656, +"type": "cubic" +}, +{ +"x": 274, +"y": 660, +"smooth": true +}, +{ +"x": 265, +"y": 661, +"type": "cubic" +}, +{ +"x": 257, +"y": 661, +"type": "cubic" +}, +{ +"x": 247, +"y": 661, +"smooth": true +}, +{ +"x": 175, +"y": 661 +}, +{ +"x": 175, +"y": 455 +}, +{ +"x": 227, +"y": 455 +}, +{ +"x": 227, +"y": 523 +}, +{ +"x": 248, +"y": 523, +"smooth": true +}, +{ +"x": 264, +"y": 523, +"type": "cubic" +}, +{ +"x": 275, +"y": 517, +"type": "cubic" +}, +{ +"x": 277, +"y": 499, +"smooth": true +}, +{ +"x": 279, +"y": 481, +"type": "cubic" +}, +{ +"x": 281, +"y": 467, +"type": "cubic" +}, +{ +"x": 284, +"y": 455 +}, +{ +"x": 343, +"y": 455 +}, +{ +"x": 338, +"y": 466, +"type": "cubic" +}, +{ +"x": 333, +"y": 482, +"type": "cubic" +}, +{ +"x": 330, +"y": 509, +"smooth": true +}, +{ +"x": 328, +"y": 531, +"type": "cubic" +}, +{ +"x": 320, +"y": 549, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 264, +"y": 567, +"smooth": true +}, +{ +"x": 258, +"y": 566, +"type": "cubic" +}, +{ +"x": 253, +"y": 566, +"type": "cubic" +}, +{ +"x": 245, +"y": 566, +"smooth": true +}, +{ +"x": 227, +"y": 566 +}, +{ +"x": 227, +"y": 619 +}, +{ +"x": 245, +"y": 619, +"smooth": true +}, +{ +"x": 254, +"y": 619, +"type": "cubic" +}, +{ +"x": 258, +"y": 619, +"type": "cubic" +}, +{ +"x": 264, +"y": 618 +}, +{ +"x": 276, +"y": 615, +"type": "cubic" +}, +{ +"x": 284, +"y": 608, +"type": "cubic" +}, +{ +"x": 284, +"y": 593, +"smooth": true +}, +{ +"x": 284, +"y": 579, +"type": "cubic" +}, +{ +"x": 278, +"y": 570, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 503 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ring.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ring.json new file mode 100644 index 0000000000..4ca7935384 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ring.json @@ -0,0 +1,151 @@ +{ +"name": "ring", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 150, +"y": 745, +"smooth": true +}, +{ +"x": 93, +"y": 745, +"type": "cubic" +}, +{ +"x": 52, +"y": 708, +"type": "cubic" +}, +{ +"x": 52, +"y": 655, +"smooth": true +}, +{ +"x": 52, +"y": 603, +"type": "cubic" +}, +{ +"x": 93, +"y": 566, +"type": "cubic" +}, +{ +"x": 150, +"y": 566, +"smooth": true +}, +{ +"x": 207, +"y": 566, +"type": "cubic" +}, +{ +"x": 248, +"y": 603, +"type": "cubic" +}, +{ +"x": 248, +"y": 655, +"smooth": true +}, +{ +"x": 248, +"y": 708, +"type": "cubic" +}, +{ +"x": 207, +"y": 745, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 150, +"y": 702, +"smooth": true +}, +{ +"x": 173, +"y": 702, +"type": "cubic" +}, +{ +"x": 190, +"y": 684, +"type": "cubic" +}, +{ +"x": 190, +"y": 655, +"smooth": true +}, +{ +"x": 190, +"y": 626, +"type": "cubic" +}, +{ +"x": 173, +"y": 609, +"type": "cubic" +}, +{ +"x": 150, +"y": 609, +"smooth": true +}, +{ +"x": 127, +"y": 609, +"type": "cubic" +}, +{ +"x": 110, +"y": 626, +"type": "cubic" +}, +{ +"x": 110, +"y": 655, +"smooth": true +}, +{ +"x": 110, +"y": 684, +"type": "cubic" +}, +{ +"x": 127, +"y": 702, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 300 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/s.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/s.json new file mode 100644 index 0000000000..7a1120015d --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/s.json @@ -0,0 +1,212 @@ +{ +"name": "s", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 240, +"y": 545, +"smooth": true +}, +{ +"x": 122, +"y": 545, +"type": "cubic" +}, +{ +"x": 44, +"y": 485, +"type": "cubic" +}, +{ +"x": 44, +"y": 386, +"smooth": true +}, +{ +"x": 44, +"y": 293, +"type": "cubic" +}, +{ +"x": 116, +"y": 252, +"type": "cubic" +}, +{ +"x": 213, +"y": 227, +"smooth": true +}, +{ +"x": 303, +"y": 203, +"type": "cubic" +}, +{ +"x": 339, +"y": 178, +"type": "cubic" +}, +{ +"x": 339, +"y": 132, +"smooth": true +}, +{ +"x": 339, +"y": 86, +"type": "cubic" +}, +{ +"x": 298, +"y": 64, +"type": "cubic" +}, +{ +"x": 247, +"y": 64, +"smooth": true +}, +{ +"x": 192, +"y": 64, +"type": "cubic" +}, +{ +"x": 147, +"y": 91, +"type": "cubic" +}, +{ +"x": 134, +"y": 159 +}, +{ +"x": 23, +"y": 159 +}, +{ +"x": 38, +"y": 39, +"type": "cubic" +}, +{ +"x": 125, +"y": -14, +"type": "cubic" +}, +{ +"x": 243, +"y": -14, +"smooth": true +}, +{ +"x": 359, +"y": -14, +"type": "cubic" +}, +{ +"x": 450, +"y": 37, +"type": "cubic" +}, +{ +"x": 450, +"y": 140, +"smooth": true +}, +{ +"x": 450, +"y": 234, +"type": "cubic" +}, +{ +"x": 389, +"y": 280, +"type": "cubic" +}, +{ +"x": 273, +"y": 310, +"smooth": true +}, +{ +"x": 194, +"y": 331, +"type": "cubic" +}, +{ +"x": 155, +"y": 351, +"type": "cubic" +}, +{ +"x": 155, +"y": 399, +"smooth": true +}, +{ +"x": 155, +"y": 439, +"type": "cubic" +}, +{ +"x": 180, +"y": 468, +"type": "cubic" +}, +{ +"x": 232, +"y": 468, +"smooth": true +}, +{ +"x": 286, +"y": 468, +"type": "cubic" +}, +{ +"x": 319, +"y": 435, +"type": "cubic" +}, +{ +"x": 330, +"y": 379 +}, +{ +"x": 442, +"y": 379 +}, +{ +"x": 430, +"y": 476, +"type": "cubic" +}, +{ +"x": 362, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 476 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/sacute.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/sacute.json new file mode 100644 index 0000000000..79960ee89e --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/sacute.json @@ -0,0 +1,233 @@ +{ +"name": "sacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 371, +"y": 692 +}, +{ +"x": 271, +"y": 692 +}, +{ +"x": 202, +"y": 578 +}, +{ +"x": 268, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 240, +"y": 545, +"smooth": true +}, +{ +"x": 122, +"y": 545, +"type": "cubic" +}, +{ +"x": 44, +"y": 485, +"type": "cubic" +}, +{ +"x": 44, +"y": 386, +"smooth": true +}, +{ +"x": 44, +"y": 293, +"type": "cubic" +}, +{ +"x": 116, +"y": 252, +"type": "cubic" +}, +{ +"x": 213, +"y": 227, +"smooth": true +}, +{ +"x": 303, +"y": 203, +"type": "cubic" +}, +{ +"x": 339, +"y": 178, +"type": "cubic" +}, +{ +"x": 339, +"y": 132, +"smooth": true +}, +{ +"x": 339, +"y": 86, +"type": "cubic" +}, +{ +"x": 298, +"y": 64, +"type": "cubic" +}, +{ +"x": 247, +"y": 64, +"smooth": true +}, +{ +"x": 192, +"y": 64, +"type": "cubic" +}, +{ +"x": 147, +"y": 91, +"type": "cubic" +}, +{ +"x": 134, +"y": 159 +}, +{ +"x": 23, +"y": 159 +}, +{ +"x": 38, +"y": 39, +"type": "cubic" +}, +{ +"x": 125, +"y": -14, +"type": "cubic" +}, +{ +"x": 243, +"y": -14, +"smooth": true +}, +{ +"x": 359, +"y": -14, +"type": "cubic" +}, +{ +"x": 450, +"y": 37, +"type": "cubic" +}, +{ +"x": 450, +"y": 140, +"smooth": true +}, +{ +"x": 450, +"y": 234, +"type": "cubic" +}, +{ +"x": 389, +"y": 280, +"type": "cubic" +}, +{ +"x": 273, +"y": 310, +"smooth": true +}, +{ +"x": 194, +"y": 331, +"type": "cubic" +}, +{ +"x": 155, +"y": 351, +"type": "cubic" +}, +{ +"x": 155, +"y": 399, +"smooth": true +}, +{ +"x": 155, +"y": 439, +"type": "cubic" +}, +{ +"x": 180, +"y": 468, +"type": "cubic" +}, +{ +"x": 232, +"y": 468, +"smooth": true +}, +{ +"x": 286, +"y": 468, +"type": "cubic" +}, +{ +"x": 319, +"y": 435, +"type": "cubic" +}, +{ +"x": 330, +"y": 379 +}, +{ +"x": 442, +"y": 379 +}, +{ +"x": 430, +"y": 476, +"type": "cubic" +}, +{ +"x": 362, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 476 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/scaron.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/scaron.json new file mode 100644 index 0000000000..95222b3cd9 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/scaron.json @@ -0,0 +1,245 @@ +{ +"name": "scaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 282, +"y": 578 +}, +{ +"x": 348, +"y": 692 +}, +{ +"x": 275, +"y": 692 +}, +{ +"x": 242, +"y": 626 +}, +{ +"x": 209, +"y": 692 +}, +{ +"x": 135, +"y": 692 +}, +{ +"x": 201, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 273, +"y": 310, +"smooth": true +}, +{ +"x": 194, +"y": 331, +"type": "cubic" +}, +{ +"x": 155, +"y": 351, +"type": "cubic" +}, +{ +"x": 155, +"y": 399, +"smooth": true +}, +{ +"x": 155, +"y": 439, +"type": "cubic" +}, +{ +"x": 180, +"y": 468, +"type": "cubic" +}, +{ +"x": 232, +"y": 468, +"smooth": true +}, +{ +"x": 286, +"y": 468, +"type": "cubic" +}, +{ +"x": 319, +"y": 435, +"type": "cubic" +}, +{ +"x": 330, +"y": 379 +}, +{ +"x": 442, +"y": 379 +}, +{ +"x": 430, +"y": 476, +"type": "cubic" +}, +{ +"x": 362, +"y": 545, +"type": "cubic" +}, +{ +"x": 240, +"y": 545, +"smooth": true +}, +{ +"x": 122, +"y": 545, +"type": "cubic" +}, +{ +"x": 44, +"y": 485, +"type": "cubic" +}, +{ +"x": 44, +"y": 386, +"smooth": true +}, +{ +"x": 44, +"y": 293, +"type": "cubic" +}, +{ +"x": 116, +"y": 252, +"type": "cubic" +}, +{ +"x": 213, +"y": 227, +"smooth": true +}, +{ +"x": 303, +"y": 203, +"type": "cubic" +}, +{ +"x": 339, +"y": 178, +"type": "cubic" +}, +{ +"x": 339, +"y": 132, +"smooth": true +}, +{ +"x": 339, +"y": 86, +"type": "cubic" +}, +{ +"x": 298, +"y": 64, +"type": "cubic" +}, +{ +"x": 247, +"y": 64, +"smooth": true +}, +{ +"x": 192, +"y": 64, +"type": "cubic" +}, +{ +"x": 147, +"y": 91, +"type": "cubic" +}, +{ +"x": 134, +"y": 159 +}, +{ +"x": 23, +"y": 159 +}, +{ +"x": 38, +"y": 39, +"type": "cubic" +}, +{ +"x": 125, +"y": -14, +"type": "cubic" +}, +{ +"x": 243, +"y": -14, +"smooth": true +}, +{ +"x": 359, +"y": -14, +"type": "cubic" +}, +{ +"x": 450, +"y": 37, +"type": "cubic" +}, +{ +"x": 450, +"y": 140, +"smooth": true +}, +{ +"x": 450, +"y": 234, +"type": "cubic" +}, +{ +"x": 389, +"y": 280, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 476 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/scedilla.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/scedilla.json new file mode 100644 index 0000000000..f2c04709c7 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/scedilla.json @@ -0,0 +1,311 @@ +{ +"name": "scedilla", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 450, +"y": 140, +"smooth": true +}, +{ +"x": 450, +"y": 234, +"type": "cubic" +}, +{ +"x": 389, +"y": 280, +"type": "cubic" +}, +{ +"x": 273, +"y": 310, +"smooth": true +}, +{ +"x": 194, +"y": 331, +"type": "cubic" +}, +{ +"x": 155, +"y": 351, +"type": "cubic" +}, +{ +"x": 155, +"y": 399, +"smooth": true +}, +{ +"x": 155, +"y": 439, +"type": "cubic" +}, +{ +"x": 180, +"y": 468, +"type": "cubic" +}, +{ +"x": 232, +"y": 468, +"smooth": true +}, +{ +"x": 286, +"y": 468, +"type": "cubic" +}, +{ +"x": 319, +"y": 435, +"type": "cubic" +}, +{ +"x": 330, +"y": 379 +}, +{ +"x": 442, +"y": 379 +}, +{ +"x": 430, +"y": 476, +"type": "cubic" +}, +{ +"x": 362, +"y": 545, +"type": "cubic" +}, +{ +"x": 240, +"y": 545, +"smooth": true +}, +{ +"x": 122, +"y": 545, +"type": "cubic" +}, +{ +"x": 44, +"y": 485, +"type": "cubic" +}, +{ +"x": 44, +"y": 386, +"smooth": true +}, +{ +"x": 44, +"y": 293, +"type": "cubic" +}, +{ +"x": 116, +"y": 252, +"type": "cubic" +}, +{ +"x": 213, +"y": 227, +"smooth": true +}, +{ +"x": 303, +"y": 203, +"type": "cubic" +}, +{ +"x": 339, +"y": 178, +"type": "cubic" +}, +{ +"x": 339, +"y": 132, +"smooth": true +}, +{ +"x": 339, +"y": 86, +"type": "cubic" +}, +{ +"x": 298, +"y": 64, +"type": "cubic" +}, +{ +"x": 247, +"y": 64, +"smooth": true +}, +{ +"x": 192, +"y": 64, +"type": "cubic" +}, +{ +"x": 147, +"y": 91, +"type": "cubic" +}, +{ +"x": 134, +"y": 159 +}, +{ +"x": 23, +"y": 159 +}, +{ +"x": 37, +"y": 50, +"type": "cubic" +}, +{ +"x": 110, +"y": -4, +"type": "cubic" +}, +{ +"x": 212, +"y": -13 +}, +{ +"x": 176, +"y": -81 +}, +{ +"x": 246, +"y": -76, +"type": "cubic" +}, +{ +"x": 272, +"y": -91, +"type": "cubic" +}, +{ +"x": 272, +"y": -122, +"smooth": true +}, +{ +"x": 272, +"y": -146, +"type": "cubic" +}, +{ +"x": 252, +"y": -161, +"type": "cubic" +}, +{ +"x": 210, +"y": -161, +"smooth": true +}, +{ +"x": 191, +"y": -161, +"type": "cubic" +}, +{ +"x": 174, +"y": -159, +"type": "cubic" +}, +{ +"x": 156, +"y": -151 +}, +{ +"x": 156, +"y": -202 +}, +{ +"x": 171, +"y": -208, +"type": "cubic" +}, +{ +"x": 189, +"y": -210, +"type": "cubic" +}, +{ +"x": 208, +"y": -210, +"smooth": true +}, +{ +"x": 286, +"y": -210, +"type": "cubic" +}, +{ +"x": 342, +"y": -181, +"type": "cubic" +}, +{ +"x": 342, +"y": -122, +"smooth": true +}, +{ +"x": 342, +"y": -76, +"type": "cubic" +}, +{ +"x": 313, +"y": -48, +"type": "cubic" +}, +{ +"x": 258, +"y": -41 +}, +{ +"x": 272, +"y": -13 +}, +{ +"x": 374, +"y": -5, +"type": "cubic" +}, +{ +"x": 450, +"y": 46, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 476 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/scommaaccent.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/scommaaccent.json new file mode 100644 index 0000000000..26c6fbb09a --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/scommaaccent.json @@ -0,0 +1,237 @@ +{ +"name": "scommaaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 240, +"y": 545, +"smooth": true +}, +{ +"x": 122, +"y": 545, +"type": "cubic" +}, +{ +"x": 44, +"y": 485, +"type": "cubic" +}, +{ +"x": 44, +"y": 386, +"smooth": true +}, +{ +"x": 44, +"y": 293, +"type": "cubic" +}, +{ +"x": 116, +"y": 252, +"type": "cubic" +}, +{ +"x": 213, +"y": 227, +"smooth": true +}, +{ +"x": 303, +"y": 203, +"type": "cubic" +}, +{ +"x": 339, +"y": 178, +"type": "cubic" +}, +{ +"x": 339, +"y": 132, +"smooth": true +}, +{ +"x": 339, +"y": 86, +"type": "cubic" +}, +{ +"x": 298, +"y": 64, +"type": "cubic" +}, +{ +"x": 247, +"y": 64, +"smooth": true +}, +{ +"x": 192, +"y": 64, +"type": "cubic" +}, +{ +"x": 147, +"y": 91, +"type": "cubic" +}, +{ +"x": 134, +"y": 159 +}, +{ +"x": 23, +"y": 159 +}, +{ +"x": 38, +"y": 39, +"type": "cubic" +}, +{ +"x": 125, +"y": -14, +"type": "cubic" +}, +{ +"x": 243, +"y": -14, +"smooth": true +}, +{ +"x": 359, +"y": -14, +"type": "cubic" +}, +{ +"x": 450, +"y": 37, +"type": "cubic" +}, +{ +"x": 450, +"y": 140, +"smooth": true +}, +{ +"x": 450, +"y": 234, +"type": "cubic" +}, +{ +"x": 389, +"y": 280, +"type": "cubic" +}, +{ +"x": 273, +"y": 310, +"smooth": true +}, +{ +"x": 194, +"y": 331, +"type": "cubic" +}, +{ +"x": 155, +"y": 351, +"type": "cubic" +}, +{ +"x": 155, +"y": 399, +"smooth": true +}, +{ +"x": 155, +"y": 439, +"type": "cubic" +}, +{ +"x": 180, +"y": 468, +"type": "cubic" +}, +{ +"x": 232, +"y": 468, +"smooth": true +}, +{ +"x": 286, +"y": 468, +"type": "cubic" +}, +{ +"x": 319, +"y": 435, +"type": "cubic" +}, +{ +"x": 330, +"y": 379 +}, +{ +"x": 442, +"y": 379 +}, +{ +"x": 430, +"y": 476, +"type": "cubic" +}, +{ +"x": 362, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 295, +"y": -48 +}, +{ +"x": 214, +"y": -48 +}, +{ +"x": 154, +"y": -200 +}, +{ +"x": 224, +"y": -200 +}, +{ +"x": 295, +"y": -59 +} +], +"isClosed": true +} +] +}, +"xAdvance": 476 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/section.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/section.json new file mode 100644 index 0000000000..0d23ba135b --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/section.json @@ -0,0 +1,363 @@ +{ +"name": "section", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 550, +"y": 243, +"smooth": true +}, +{ +"x": 550, +"y": 342, +"type": "cubic" +}, +{ +"x": 485, +"y": 397, +"type": "cubic" +}, +{ +"x": 340, +"y": 437, +"smooth": true +}, +{ +"x": 244, +"y": 463, +"type": "cubic" +}, +{ +"x": 208, +"y": 496, +"type": "cubic" +}, +{ +"x": 208, +"y": 550, +"smooth": true +}, +{ +"x": 208, +"y": 599, +"type": "cubic" +}, +{ +"x": 241, +"y": 627, +"type": "cubic" +}, +{ +"x": 285, +"y": 627, +"smooth": true +}, +{ +"x": 335, +"y": 627, +"type": "cubic" +}, +{ +"x": 367, +"y": 593, +"type": "cubic" +}, +{ +"x": 378, +"y": 535 +}, +{ +"x": 489, +"y": 535 +}, +{ +"x": 478, +"y": 637, +"type": "cubic" +}, +{ +"x": 409, +"y": 704, +"type": "cubic" +}, +{ +"x": 287, +"y": 704, +"smooth": true +}, +{ +"x": 175, +"y": 704, +"type": "cubic" +}, +{ +"x": 94, +"y": 640, +"type": "cubic" +}, +{ +"x": 94, +"y": 536, +"smooth": true +}, +{ +"x": 94, +"y": 500, +"type": "cubic" +}, +{ +"x": 106, +"y": 469, +"type": "cubic" +}, +{ +"x": 126, +"y": 444 +}, +{ +"x": 68, +"y": 417, +"type": "cubic" +}, +{ +"x": 30, +"y": 367, +"type": "cubic" +}, +{ +"x": 30, +"y": 295, +"smooth": true +}, +{ +"x": 30, +"y": 192, +"type": "cubic" +}, +{ +"x": 111, +"y": 135, +"type": "cubic" +}, +{ +"x": 226, +"y": 105, +"smooth": true +}, +{ +"x": 346, +"y": 74, +"type": "cubic" +}, +{ +"x": 377, +"y": 36, +"type": "cubic" +}, +{ +"x": 377, +"y": -17, +"smooth": true +}, +{ +"x": 377, +"y": -70, +"type": "cubic" +}, +{ +"x": 339, +"y": -97, +"type": "cubic" +}, +{ +"x": 288, +"y": -97, +"smooth": true +}, +{ +"x": 233, +"y": -97, +"type": "cubic" +}, +{ +"x": 190, +"y": -67, +"type": "cubic" +}, +{ +"x": 173, +"y": 2 +}, +{ +"x": 62, +"y": 2 +}, +{ +"x": 76, +"y": -119, +"type": "cubic" +}, +{ +"x": 163, +"y": -174, +"type": "cubic" +}, +{ +"x": 283, +"y": -174, +"smooth": true +}, +{ +"x": 394, +"y": -174, +"type": "cubic" +}, +{ +"x": 491, +"y": -118, +"type": "cubic" +}, +{ +"x": 491, +"y": -8, +"smooth": true +}, +{ +"x": 491, +"y": 36, +"type": "cubic" +}, +{ +"x": 478, +"y": 70, +"type": "cubic" +}, +{ +"x": 455, +"y": 98 +}, +{ +"x": 511, +"y": 126, +"type": "cubic" +}, +{ +"x": 550, +"y": 177, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 144, +"y": 299, +"smooth": true +}, +{ +"x": 144, +"y": 350, +"type": "cubic" +}, +{ +"x": 169, +"y": 377, +"type": "cubic" +}, +{ +"x": 205, +"y": 384 +}, +{ +"x": 233, +"y": 370, +"type": "cubic" +}, +{ +"x": 264, +"y": 359, +"type": "cubic" +}, +{ +"x": 297, +"y": 349, +"smooth": true +}, +{ +"x": 395, +"y": 319, +"type": "cubic" +}, +{ +"x": 436, +"y": 288, +"type": "cubic" +}, +{ +"x": 436, +"y": 232, +"smooth": true +}, +{ +"x": 436, +"y": 196, +"type": "cubic" +}, +{ +"x": 413, +"y": 166, +"type": "cubic" +}, +{ +"x": 376, +"y": 154 +}, +{ +"x": 347, +"y": 168, +"type": "cubic" +}, +{ +"x": 313, +"y": 180, +"type": "cubic" +}, +{ +"x": 274, +"y": 190, +"smooth": true +}, +{ +"x": 194, +"y": 211, +"type": "cubic" +}, +{ +"x": 144, +"y": 248, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 578 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/semicolon.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/semicolon.json new file mode 100644 index 0000000000..7af0f5f5b2 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/semicolon.json @@ -0,0 +1,111 @@ +{ +"name": "semicolon", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 111, +"y": 545, +"smooth": true +}, +{ +"x": 68, +"y": 545, +"type": "cubic" +}, +{ +"x": 38, +"y": 515, +"type": "cubic" +}, +{ +"x": 38, +"y": 472, +"smooth": true +}, +{ +"x": 38, +"y": 430, +"type": "cubic" +}, +{ +"x": 68, +"y": 399, +"type": "cubic" +}, +{ +"x": 111, +"y": 399, +"smooth": true +}, +{ +"x": 153, +"y": 399, +"type": "cubic" +}, +{ +"x": 184, +"y": 430, +"type": "cubic" +}, +{ +"x": 184, +"y": 472, +"smooth": true +}, +{ +"x": 184, +"y": 515, +"type": "cubic" +}, +{ +"x": 153, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 161, +"y": 112 +}, +{ +"x": 161, +"y": 126 +}, +{ +"x": 49, +"y": 126 +}, +{ +"x": -30, +"y": -121 +}, +{ +"x": 66, +"y": -121 +} +], +"isClosed": true +} +] +}, +"xAdvance": 232 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/seven.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/seven.json new file mode 100644 index 0000000000..2366716b24 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/seven.json @@ -0,0 +1,54 @@ +{ +"name": "seven", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 558, +"y": 690 +}, +{ +"x": 52, +"y": 690 +}, +{ +"x": 52, +"y": 603 +}, +{ +"x": 427, +"y": 603 +}, +{ +"x": 102, +"y": 0 +}, +{ +"x": 220, +"y": 0 +}, +{ +"x": 558, +"y": 635 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/six.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/six.json new file mode 100644 index 0000000000..8cc404c149 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/six.json @@ -0,0 +1,227 @@ +{ +"name": "six", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 324, +"y": 465, +"smooth": true +}, +{ +"x": 274, +"y": 465, +"type": "cubic" +}, +{ +"x": 236, +"y": 454, +"type": "cubic" +}, +{ +"x": 199, +"y": 423 +}, +{ +"x": 162, +"y": 361 +}, +{ +"x": 169, +"y": 548, +"type": "cubic" +}, +{ +"x": 227, +"y": 620, +"type": "cubic" +}, +{ +"x": 313, +"y": 620, +"smooth": true +}, +{ +"x": 376, +"y": 620, +"type": "cubic" +}, +{ +"x": 413, +"y": 585, +"type": "cubic" +}, +{ +"x": 429, +"y": 515, +"smooth": true +}, +{ +"x": 431, +"y": 505 +}, +{ +"x": 545, +"y": 505 +}, +{ +"x": 544, +"y": 515, +"smooth": true +}, +{ +"x": 531, +"y": 630, +"type": "cubic" +}, +{ +"x": 448, +"y": 704, +"type": "cubic" +}, +{ +"x": 321, +"y": 704, +"smooth": true +}, +{ +"x": 169, +"y": 704, +"type": "cubic" +}, +{ +"x": 46, +"y": 585, +"type": "cubic" +}, +{ +"x": 46, +"y": 317, +"smooth": true +}, +{ +"x": 46, +"y": 86, +"type": "cubic" +}, +{ +"x": 137, +"y": -14, +"type": "cubic" +}, +{ +"x": 299, +"y": -14, +"smooth": true +}, +{ +"x": 440, +"y": -14, +"type": "cubic" +}, +{ +"x": 552, +"y": 82, +"type": "cubic" +}, +{ +"x": 552, +"y": 235, +"smooth": true +}, +{ +"x": 552, +"y": 367, +"type": "cubic" +}, +{ +"x": 471, +"y": 465, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 299, +"y": 70, +"smooth": true +}, +{ +"x": 219, +"y": 70, +"type": "cubic" +}, +{ +"x": 168, +"y": 136, +"type": "cubic" +}, +{ +"x": 168, +"y": 224, +"smooth": true +}, +{ +"x": 168, +"y": 327, +"type": "cubic" +}, +{ +"x": 228, +"y": 381, +"type": "cubic" +}, +{ +"x": 298, +"y": 381, +"smooth": true +}, +{ +"x": 392, +"y": 381, +"type": "cubic" +}, +{ +"x": 433, +"y": 311, +"type": "cubic" +}, +{ +"x": 433, +"y": 222, +"smooth": true +}, +{ +"x": 433, +"y": 133, +"type": "cubic" +}, +{ +"x": 379, +"y": 70, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/slash.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/slash.json new file mode 100644 index 0000000000..e42d637305 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/slash.json @@ -0,0 +1,42 @@ +{ +"name": "slash", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 68, +"y": -30 +}, +{ +"x": 319, +"y": 720 +}, +{ +"x": 246, +"y": 720 +}, +{ +"x": -5, +"y": -30 +} +], +"isClosed": true +} +] +}, +"xAdvance": 314 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/space.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/space.json new file mode 100644 index 0000000000..e4cbfbd4fa --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/space.json @@ -0,0 +1,17 @@ +{ +"name": "space", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"xAdvance": 206 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/sterling.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/sterling.json new file mode 100644 index 0000000000..9d7a289433 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/sterling.json @@ -0,0 +1,216 @@ +{ +"name": "sterling", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 539, +"y": 88 +}, +{ +"x": 203, +"y": 88 +}, +{ +"x": 258, +"y": 118, +"type": "cubic" +}, +{ +"x": 287, +"y": 160, +"type": "cubic" +}, +{ +"x": 287, +"y": 224, +"smooth": true +}, +{ +"x": 287, +"y": 253, +"type": "cubic" +}, +{ +"x": 283, +"y": 279, +"type": "cubic" +}, +{ +"x": 272, +"y": 310 +}, +{ +"x": 457, +"y": 310 +}, +{ +"x": 457, +"y": 374 +}, +{ +"x": 247, +"y": 374 +}, +{ +"x": 221, +"y": 433, +"type": "cubic" +}, +{ +"x": 212, +"y": 462, +"type": "cubic" +}, +{ +"x": 212, +"y": 511, +"smooth": true +}, +{ +"x": 212, +"y": 566, +"type": "cubic" +}, +{ +"x": 245, +"y": 620, +"type": "cubic" +}, +{ +"x": 314, +"y": 620, +"smooth": true +}, +{ +"x": 378, +"y": 620, +"type": "cubic" +}, +{ +"x": 412, +"y": 581, +"type": "cubic" +}, +{ +"x": 421, +"y": 504 +}, +{ +"x": 535, +"y": 504 +}, +{ +"x": 527, +"y": 616, +"type": "cubic" +}, +{ +"x": 458, +"y": 704, +"type": "cubic" +}, +{ +"x": 316, +"y": 704, +"smooth": true +}, +{ +"x": 189, +"y": 704, +"type": "cubic" +}, +{ +"x": 93, +"y": 622, +"type": "cubic" +}, +{ +"x": 93, +"y": 496, +"smooth": true +}, +{ +"x": 93, +"y": 450, +"type": "cubic" +}, +{ +"x": 104, +"y": 416, +"type": "cubic" +}, +{ +"x": 122, +"y": 374 +}, +{ +"x": 76, +"y": 374 +}, +{ +"x": 76, +"y": 310 +}, +{ +"x": 151, +"y": 310 +}, +{ +"x": 167, +"y": 272, +"type": "cubic" +}, +{ +"x": 173, +"y": 245, +"type": "cubic" +}, +{ +"x": 173, +"y": 208, +"smooth": true +}, +{ +"x": 173, +"y": 151, +"type": "cubic" +}, +{ +"x": 147, +"y": 96, +"type": "cubic" +}, +{ +"x": 67, +"y": 78 +}, +{ +"x": 67, +"y": 0 +}, +{ +"x": 539, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/summation.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/summation.json new file mode 100644 index 0000000000..fd97047083 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/summation.json @@ -0,0 +1,74 @@ +{ +"name": "summation", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 555, +"y": -23 +}, +{ +"x": 178, +"y": -23 +}, +{ +"x": 443, +"y": 300 +}, +{ +"x": 209, +"y": 603 +}, +{ +"x": 549, +"y": 603 +}, +{ +"x": 549, +"y": 690 +}, +{ +"x": 78, +"y": 690 +}, +{ +"x": 78, +"y": 611 +}, +{ +"x": 316, +"y": 301 +}, +{ +"x": 48, +"y": -31 +}, +{ +"x": 48, +"y": -110 +}, +{ +"x": 555, +"y": -110 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/t.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/t.json new file mode 100644 index 0000000000..f3d9f1eef1 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/t.json @@ -0,0 +1,149 @@ +{ +"name": "t", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 200, +"y": 450 +}, +{ +"x": 304, +"y": 450 +}, +{ +"x": 304, +"y": 527 +}, +{ +"x": 200, +"y": 527 +}, +{ +"x": 200, +"y": 654 +}, +{ +"x": 91, +"y": 654 +}, +{ +"x": 91, +"y": 527 +}, +{ +"x": 16, +"y": 527 +}, +{ +"x": 16, +"y": 450 +}, +{ +"x": 91, +"y": 450 +}, +{ +"x": 91, +"y": 162, +"smooth": true +}, +{ +"x": 91, +"y": 132, +"type": "cubic" +}, +{ +"x": 91, +"y": 109, +"type": "cubic" +}, +{ +"x": 92, +"y": 91, +"smooth": true +}, +{ +"x": 97, +"y": 21, +"type": "cubic" +}, +{ +"x": 133, +"y": -10, +"type": "cubic" +}, +{ +"x": 216, +"y": -10, +"smooth": true +}, +{ +"x": 243, +"y": -10, +"type": "cubic" +}, +{ +"x": 269, +"y": -8, +"type": "cubic" +}, +{ +"x": 297, +"y": -4 +}, +{ +"x": 297, +"y": 72 +}, +{ +"x": 225, +"y": 65, +"type": "cubic" +}, +{ +"x": 205, +"y": 76, +"type": "cubic" +}, +{ +"x": 201, +"y": 128, +"smooth": true +}, +{ +"x": 200, +"y": 142, +"type": "cubic" +}, +{ +"x": 200, +"y": 154, +"type": "cubic" +}, +{ +"x": 200, +"y": 172, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 335 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/tbar.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/tbar.json new file mode 100644 index 0000000000..681bd7e5c3 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/tbar.json @@ -0,0 +1,181 @@ +{ +"name": "tbar", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 200, +"y": 450 +}, +{ +"x": 304, +"y": 450 +}, +{ +"x": 304, +"y": 527 +}, +{ +"x": 200, +"y": 527 +}, +{ +"x": 200, +"y": 654 +}, +{ +"x": 91, +"y": 654 +}, +{ +"x": 91, +"y": 527 +}, +{ +"x": 16, +"y": 527 +}, +{ +"x": 16, +"y": 450 +}, +{ +"x": 91, +"y": 450 +}, +{ +"x": 91, +"y": 347 +}, +{ +"x": 25, +"y": 347 +}, +{ +"x": 25, +"y": 284 +}, +{ +"x": 91, +"y": 284 +}, +{ +"x": 91, +"y": 162, +"smooth": true +}, +{ +"x": 91, +"y": 132, +"type": "cubic" +}, +{ +"x": 91, +"y": 109, +"type": "cubic" +}, +{ +"x": 92, +"y": 91, +"smooth": true +}, +{ +"x": 97, +"y": 21, +"type": "cubic" +}, +{ +"x": 133, +"y": -10, +"type": "cubic" +}, +{ +"x": 216, +"y": -10, +"smooth": true +}, +{ +"x": 243, +"y": -10, +"type": "cubic" +}, +{ +"x": 269, +"y": -8, +"type": "cubic" +}, +{ +"x": 297, +"y": -4 +}, +{ +"x": 297, +"y": 72 +}, +{ +"x": 225, +"y": 65, +"type": "cubic" +}, +{ +"x": 205, +"y": 76, +"type": "cubic" +}, +{ +"x": 201, +"y": 128, +"smooth": true +}, +{ +"x": 200, +"y": 142, +"type": "cubic" +}, +{ +"x": 200, +"y": 154, +"type": "cubic" +}, +{ +"x": 200, +"y": 172, +"smooth": true +}, +{ +"x": 200, +"y": 284 +}, +{ +"x": 280, +"y": 284 +}, +{ +"x": 280, +"y": 347 +}, +{ +"x": 200, +"y": 347 +} +], +"isClosed": true +} +] +}, +"xAdvance": 335 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/tcaron.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/tcaron.json new file mode 100644 index 0000000000..ebb234bd68 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/tcaron.json @@ -0,0 +1,174 @@ +{ +"name": "tcaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 376, +"y": 735 +}, +{ +"x": 295, +"y": 735 +}, +{ +"x": 235, +"y": 582 +}, +{ +"x": 305, +"y": 582 +}, +{ +"x": 376, +"y": 724 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 200, +"y": 527 +}, +{ +"x": 200, +"y": 654 +}, +{ +"x": 91, +"y": 654 +}, +{ +"x": 91, +"y": 527 +}, +{ +"x": 16, +"y": 527 +}, +{ +"x": 16, +"y": 450 +}, +{ +"x": 91, +"y": 450 +}, +{ +"x": 91, +"y": 162, +"smooth": true +}, +{ +"x": 91, +"y": 132, +"type": "cubic" +}, +{ +"x": 91, +"y": 109, +"type": "cubic" +}, +{ +"x": 92, +"y": 91, +"smooth": true +}, +{ +"x": 97, +"y": 21, +"type": "cubic" +}, +{ +"x": 133, +"y": -10, +"type": "cubic" +}, +{ +"x": 216, +"y": -10, +"smooth": true +}, +{ +"x": 243, +"y": -10, +"type": "cubic" +}, +{ +"x": 269, +"y": -8, +"type": "cubic" +}, +{ +"x": 297, +"y": -4 +}, +{ +"x": 297, +"y": 72 +}, +{ +"x": 225, +"y": 65, +"type": "cubic" +}, +{ +"x": 205, +"y": 76, +"type": "cubic" +}, +{ +"x": 201, +"y": 128, +"smooth": true +}, +{ +"x": 200, +"y": 142, +"type": "cubic" +}, +{ +"x": 200, +"y": 154, +"type": "cubic" +}, +{ +"x": 200, +"y": 172, +"smooth": true +}, +{ +"x": 200, +"y": 450 +}, +{ +"x": 304, +"y": 450 +}, +{ +"x": 304, +"y": 527 +} +], +"isClosed": true +} +] +}, +"xAdvance": 326 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/tcedilla.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/tcedilla.json new file mode 100644 index 0000000000..03420294cc --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/tcedilla.json @@ -0,0 +1,253 @@ +{ +"name": "tcedilla", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 200, +"y": 450 +}, +{ +"x": 304, +"y": 450 +}, +{ +"x": 304, +"y": 527 +}, +{ +"x": 200, +"y": 527 +}, +{ +"x": 200, +"y": 654 +}, +{ +"x": 91, +"y": 654 +}, +{ +"x": 91, +"y": 527 +}, +{ +"x": 16, +"y": 527 +}, +{ +"x": 16, +"y": 450 +}, +{ +"x": 91, +"y": 450 +}, +{ +"x": 91, +"y": 162, +"smooth": true +}, +{ +"x": 91, +"y": 132, +"type": "cubic" +}, +{ +"x": 91, +"y": 109, +"type": "cubic" +}, +{ +"x": 92, +"y": 91, +"smooth": true +}, +{ +"x": 96, +"y": 41, +"type": "cubic" +}, +{ +"x": 115, +"y": 10, +"type": "cubic" +}, +{ +"x": 157, +"y": -3 +}, +{ +"x": 116, +"y": -81 +}, +{ +"x": 186, +"y": -76, +"type": "cubic" +}, +{ +"x": 212, +"y": -91, +"type": "cubic" +}, +{ +"x": 212, +"y": -122, +"smooth": true +}, +{ +"x": 212, +"y": -146, +"type": "cubic" +}, +{ +"x": 192, +"y": -161, +"type": "cubic" +}, +{ +"x": 150, +"y": -161, +"smooth": true +}, +{ +"x": 131, +"y": -161, +"type": "cubic" +}, +{ +"x": 114, +"y": -159, +"type": "cubic" +}, +{ +"x": 96, +"y": -151 +}, +{ +"x": 96, +"y": -202 +}, +{ +"x": 111, +"y": -208, +"type": "cubic" +}, +{ +"x": 129, +"y": -210, +"type": "cubic" +}, +{ +"x": 148, +"y": -210, +"smooth": true +}, +{ +"x": 226, +"y": -210, +"type": "cubic" +}, +{ +"x": 282, +"y": -181, +"type": "cubic" +}, +{ +"x": 282, +"y": -122, +"smooth": true +}, +{ +"x": 282, +"y": -76, +"type": "cubic" +}, +{ +"x": 253, +"y": -48, +"type": "cubic" +}, +{ +"x": 198, +"y": -41 +}, +{ +"x": 214, +"y": -10 +}, +{ +"x": 216, +"y": -10, +"smooth": true +}, +{ +"x": 243, +"y": -10, +"type": "cubic" +}, +{ +"x": 269, +"y": -8, +"type": "cubic" +}, +{ +"x": 297, +"y": -4 +}, +{ +"x": 297, +"y": 72 +}, +{ +"x": 225, +"y": 65, +"type": "cubic" +}, +{ +"x": 205, +"y": 76, +"type": "cubic" +}, +{ +"x": 201, +"y": 128, +"smooth": true +}, +{ +"x": 200, +"y": 142, +"type": "cubic" +}, +{ +"x": 200, +"y": 154, +"type": "cubic" +}, +{ +"x": 200, +"y": 172, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 335 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/thorn.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/thorn.json new file mode 100644 index 0000000000..2c83cd8f76 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/thorn.json @@ -0,0 +1,183 @@ +{ +"name": "thorn", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 358, +"y": 545, +"smooth": true +}, +{ +"x": 304, +"y": 545, +"type": "cubic" +}, +{ +"x": 249, +"y": 530, +"type": "cubic" +}, +{ +"x": 219, +"y": 505 +}, +{ +"x": 179, +"y": 448 +}, +{ +"x": 179, +"y": 735 +}, +{ +"x": 69, +"y": 735 +}, +{ +"x": 69, +"y": -196 +}, +{ +"x": 179, +"y": -196 +}, +{ +"x": 179, +"y": 72 +}, +{ +"x": 214, +"y": 19 +}, +{ +"x": 241, +"y": -2, +"type": "cubic" +}, +{ +"x": 296, +"y": -14, +"type": "cubic" +}, +{ +"x": 340, +"y": -14, +"smooth": true +}, +{ +"x": 477, +"y": -14, +"type": "cubic" +}, +{ +"x": 597, +"y": 80, +"type": "cubic" +}, +{ +"x": 597, +"y": 275, +"smooth": true +}, +{ +"x": 597, +"y": 430, +"type": "cubic" +}, +{ +"x": 510, +"y": 545, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 327, +"y": 66, +"smooth": true +}, +{ +"x": 257, +"y": 66, +"type": "cubic" +}, +{ +"x": 179, +"y": 114, +"type": "cubic" +}, +{ +"x": 179, +"y": 244, +"smooth": true +}, +{ +"x": 179, +"y": 271, +"smooth": true +}, +{ +"x": 179, +"y": 413, +"type": "cubic" +}, +{ +"x": 250, +"y": 465, +"type": "cubic" +}, +{ +"x": 332, +"y": 465, +"smooth": true +}, +{ +"x": 428, +"y": 465, +"type": "cubic" +}, +{ +"x": 481, +"y": 380, +"type": "cubic" +}, +{ +"x": 481, +"y": 265, +"smooth": true +}, +{ +"x": 481, +"y": 133, +"type": "cubic" +}, +{ +"x": 415, +"y": 66, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 626 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/three.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/three.json new file mode 100644 index 0000000000..37225ce307 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/three.json @@ -0,0 +1,244 @@ +{ +"name": "three", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 411, +"y": 366 +}, +{ +"x": 489, +"y": 388, +"type": "cubic" +}, +{ +"x": 536, +"y": 447, +"type": "cubic" +}, +{ +"x": 536, +"y": 527, +"smooth": true +}, +{ +"x": 536, +"y": 629, +"type": "cubic" +}, +{ +"x": 457, +"y": 704, +"type": "cubic" +}, +{ +"x": 319, +"y": 704, +"smooth": true +}, +{ +"x": 170, +"y": 704, +"type": "cubic" +}, +{ +"x": 84, +"y": 620, +"type": "cubic" +}, +{ +"x": 72, +"y": 497, +"smooth": true +}, +{ +"x": 71, +"y": 487 +}, +{ +"x": 180, +"y": 487 +}, +{ +"x": 181, +"y": 497, +"smooth": true +}, +{ +"x": 189, +"y": 576, +"type": "cubic" +}, +{ +"x": 239, +"y": 620, +"type": "cubic" +}, +{ +"x": 307, +"y": 620, +"smooth": true +}, +{ +"x": 374, +"y": 620, +"type": "cubic" +}, +{ +"x": 417, +"y": 577, +"type": "cubic" +}, +{ +"x": 417, +"y": 514, +"smooth": true +}, +{ +"x": 417, +"y": 437, +"type": "cubic" +}, +{ +"x": 360, +"y": 392, +"type": "cubic" +}, +{ +"x": 282, +"y": 391, +"smooth": true +}, +{ +"x": 262, +"y": 390 +}, +{ +"x": 262, +"y": 309 +}, +{ +"x": 282, +"y": 309, +"smooth": true +}, +{ +"x": 384, +"y": 308, +"type": "cubic" +}, +{ +"x": 433, +"y": 266, +"type": "cubic" +}, +{ +"x": 433, +"y": 190, +"smooth": true +}, +{ +"x": 433, +"y": 116, +"type": "cubic" +}, +{ +"x": 378, +"y": 70, +"type": "cubic" +}, +{ +"x": 299, +"y": 70, +"smooth": true +}, +{ +"x": 221, +"y": 70, +"type": "cubic" +}, +{ +"x": 163, +"y": 113, +"type": "cubic" +}, +{ +"x": 153, +"y": 198, +"smooth": true +}, +{ +"x": 152, +"y": 208 +}, +{ +"x": 42, +"y": 208 +}, +{ +"x": 43, +"y": 198, +"smooth": true +}, +{ +"x": 58, +"y": 52, +"type": "cubic" +}, +{ +"x": 152, +"y": -14, +"type": "cubic" +}, +{ +"x": 294, +"y": -14, +"smooth": true +}, +{ +"x": 438, +"y": -14, +"type": "cubic" +}, +{ +"x": 552, +"y": 66, +"type": "cubic" +}, +{ +"x": 552, +"y": 195, +"smooth": true +}, +{ +"x": 552, +"y": 286, +"type": "cubic" +}, +{ +"x": 500, +"y": 344, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/tilde.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/tilde.json new file mode 100644 index 0000000000..6bd63eb190 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/tilde.json @@ -0,0 +1,152 @@ +{ +"name": "tilde", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 91, +"y": 680, +"smooth": true +}, +{ +"x": 52, +"y": 680, +"type": "cubic" +}, +{ +"x": 30, +"y": 659, +"type": "cubic" +}, +{ +"x": 30, +"y": 594 +}, +{ +"x": 82, +"y": 594 +}, +{ +"x": 82, +"y": 610, +"type": "cubic" +}, +{ +"x": 88, +"y": 616, +"type": "cubic" +}, +{ +"x": 98, +"y": 616, +"smooth": true +}, +{ +"x": 107, +"y": 616, +"type": "cubic" +}, +{ +"x": 118, +"y": 613, +"type": "cubic" +}, +{ +"x": 142, +"y": 604, +"smooth": true +}, +{ +"x": 172, +"y": 594, +"type": "cubic" +}, +{ +"x": 188, +"y": 590, +"type": "cubic" +}, +{ +"x": 209, +"y": 590, +"smooth": true +}, +{ +"x": 249, +"y": 590, +"type": "cubic" +}, +{ +"x": 271, +"y": 611, +"type": "cubic" +}, +{ +"x": 271, +"y": 677 +}, +{ +"x": 218, +"y": 677 +}, +{ +"x": 218, +"y": 660, +"type": "cubic" +}, +{ +"x": 213, +"y": 654, +"type": "cubic" +}, +{ +"x": 202, +"y": 654, +"smooth": true +}, +{ +"x": 194, +"y": 654, +"type": "cubic" +}, +{ +"x": 182, +"y": 657, +"type": "cubic" +}, +{ +"x": 158, +"y": 666, +"smooth": true +}, +{ +"x": 129, +"y": 677, +"type": "cubic" +}, +{ +"x": 113, +"y": 680, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 300 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/trademark.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/trademark.json new file mode 100644 index 0000000000..1a5362735d --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/trademark.json @@ -0,0 +1,115 @@ +{ +"name": "trademark", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 220, +"y": 660 +}, +{ +"x": 21, +"y": 660 +}, +{ +"x": 21, +"y": 618 +}, +{ +"x": 94, +"y": 618 +}, +{ +"x": 94, +"y": 456 +}, +{ +"x": 147, +"y": 456 +}, +{ +"x": 147, +"y": 618 +}, +{ +"x": 220, +"y": 618 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 481, +"y": 659 +}, +{ +"x": 404, +"y": 659 +}, +{ +"x": 364, +"y": 508 +}, +{ +"x": 323, +"y": 659 +}, +{ +"x": 244, +"y": 659 +}, +{ +"x": 244, +"y": 456 +}, +{ +"x": 297, +"y": 456 +}, +{ +"x": 296, +"y": 597 +}, +{ +"x": 335, +"y": 460 +}, +{ +"x": 390, +"y": 460 +}, +{ +"x": 430, +"y": 598 +}, +{ +"x": 428, +"y": 456 +}, +{ +"x": 481, +"y": 456 +} +], +"isClosed": true +} +] +}, +"xAdvance": 539 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/two.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/two.json new file mode 100644 index 0000000000..3de2819fce --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/two.json @@ -0,0 +1,154 @@ +{ +"name": "two", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 224, +"y": 88 +}, +{ +"x": 376, +"y": 238, +"smooth": true +}, +{ +"x": 497, +"y": 356, +"type": "cubic" +}, +{ +"x": 545, +"y": 420, +"type": "cubic" +}, +{ +"x": 545, +"y": 511, +"smooth": true +}, +{ +"x": 545, +"y": 620, +"type": "cubic" +}, +{ +"x": 471, +"y": 705, +"type": "cubic" +}, +{ +"x": 325, +"y": 705, +"smooth": true +}, +{ +"x": 179, +"y": 705, +"type": "cubic" +}, +{ +"x": 90, +"y": 626, +"type": "cubic" +}, +{ +"x": 76, +"y": 480, +"smooth": true +}, +{ +"x": 75, +"y": 470 +}, +{ +"x": 185, +"y": 470 +}, +{ +"x": 186, +"y": 480, +"smooth": true +}, +{ +"x": 195, +"y": 571, +"type": "cubic" +}, +{ +"x": 234, +"y": 621, +"type": "cubic" +}, +{ +"x": 313, +"y": 621, +"smooth": true +}, +{ +"x": 388, +"y": 621, +"type": "cubic" +}, +{ +"x": 426, +"y": 568, +"type": "cubic" +}, +{ +"x": 426, +"y": 501, +"smooth": true +}, +{ +"x": 426, +"y": 435, +"type": "cubic" +}, +{ +"x": 388, +"y": 385, +"type": "cubic" +}, +{ +"x": 301, +"y": 299, +"smooth": true +}, +{ +"x": 60, +"y": 56 +}, +{ +"x": 60, +"y": 0 +}, +{ +"x": 541, +"y": 0 +}, +{ +"x": 541, +"y": 88 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/u.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/u.json new file mode 100644 index 0000000000..b4b13cc8bb --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/u.json @@ -0,0 +1,153 @@ +{ +"name": "u", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 532, +"y": 531 +}, +{ +"x": 423, +"y": 531 +}, +{ +"x": 423, +"y": 281, +"smooth": true +}, +{ +"x": 423, +"y": 127, +"type": "cubic" +}, +{ +"x": 365, +"y": 68, +"type": "cubic" +}, +{ +"x": 288, +"y": 68, +"smooth": true +}, +{ +"x": 220, +"y": 68, +"type": "cubic" +}, +{ +"x": 182, +"y": 106, +"type": "cubic" +}, +{ +"x": 174, +"y": 164, +"smooth": true +}, +{ +"x": 171, +"y": 191, +"type": "cubic" +}, +{ +"x": 170, +"y": 220, +"type": "cubic" +}, +{ +"x": 170, +"y": 237, +"smooth": true +}, +{ +"x": 170, +"y": 531 +}, +{ +"x": 61, +"y": 531 +}, +{ +"x": 61, +"y": 215, +"smooth": true +}, +{ +"x": 61, +"y": 172, +"type": "cubic" +}, +{ +"x": 62, +"y": 148, +"type": "cubic" +}, +{ +"x": 66, +"y": 121, +"smooth": true +}, +{ +"x": 78, +"y": 48, +"type": "cubic" +}, +{ +"x": 142, +"y": -14, +"type": "cubic" +}, +{ +"x": 252, +"y": -14, +"smooth": true +}, +{ +"x": 305, +"y": -14, +"type": "cubic" +}, +{ +"x": 344, +"y": -5, +"type": "cubic" +}, +{ +"x": 386, +"y": 25 +}, +{ +"x": 423, +"y": 91 +}, +{ +"x": 423, +"y": 0 +}, +{ +"x": 532, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 604 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uacute.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uacute.json new file mode 100644 index 0000000000..011fa571ed --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uacute.json @@ -0,0 +1,174 @@ +{ +"name": "uacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 323, +"y": 578 +}, +{ +"x": 426, +"y": 692 +}, +{ +"x": 326, +"y": 692 +}, +{ +"x": 257, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 532, +"y": 531 +}, +{ +"x": 423, +"y": 531 +}, +{ +"x": 423, +"y": 281, +"smooth": true +}, +{ +"x": 423, +"y": 127, +"type": "cubic" +}, +{ +"x": 365, +"y": 68, +"type": "cubic" +}, +{ +"x": 288, +"y": 68, +"smooth": true +}, +{ +"x": 220, +"y": 68, +"type": "cubic" +}, +{ +"x": 182, +"y": 106, +"type": "cubic" +}, +{ +"x": 174, +"y": 164, +"smooth": true +}, +{ +"x": 171, +"y": 191, +"type": "cubic" +}, +{ +"x": 170, +"y": 220, +"type": "cubic" +}, +{ +"x": 170, +"y": 237, +"smooth": true +}, +{ +"x": 170, +"y": 531 +}, +{ +"x": 61, +"y": 531 +}, +{ +"x": 61, +"y": 215, +"smooth": true +}, +{ +"x": 61, +"y": 172, +"type": "cubic" +}, +{ +"x": 62, +"y": 148, +"type": "cubic" +}, +{ +"x": 66, +"y": 121, +"smooth": true +}, +{ +"x": 78, +"y": 48, +"type": "cubic" +}, +{ +"x": 142, +"y": -14, +"type": "cubic" +}, +{ +"x": 252, +"y": -14, +"smooth": true +}, +{ +"x": 305, +"y": -14, +"type": "cubic" +}, +{ +"x": 344, +"y": -5, +"type": "cubic" +}, +{ +"x": 386, +"y": 25 +}, +{ +"x": 423, +"y": 91 +}, +{ +"x": 423, +"y": 0 +}, +{ +"x": 532, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 604 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ucircumflex.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ucircumflex.json new file mode 100644 index 0000000000..27b484b38e --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ucircumflex.json @@ -0,0 +1,186 @@ +{ +"name": "ucircumflex", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 263, +"y": 578 +}, +{ +"x": 296, +"y": 643 +}, +{ +"x": 329, +"y": 578 +}, +{ +"x": 403, +"y": 578 +}, +{ +"x": 337, +"y": 692 +}, +{ +"x": 256, +"y": 692 +}, +{ +"x": 190, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 532, +"y": 531 +}, +{ +"x": 423, +"y": 531 +}, +{ +"x": 423, +"y": 281, +"smooth": true +}, +{ +"x": 423, +"y": 127, +"type": "cubic" +}, +{ +"x": 365, +"y": 68, +"type": "cubic" +}, +{ +"x": 288, +"y": 68, +"smooth": true +}, +{ +"x": 220, +"y": 68, +"type": "cubic" +}, +{ +"x": 182, +"y": 106, +"type": "cubic" +}, +{ +"x": 174, +"y": 164, +"smooth": true +}, +{ +"x": 171, +"y": 191, +"type": "cubic" +}, +{ +"x": 170, +"y": 220, +"type": "cubic" +}, +{ +"x": 170, +"y": 237, +"smooth": true +}, +{ +"x": 170, +"y": 531 +}, +{ +"x": 61, +"y": 531 +}, +{ +"x": 61, +"y": 215, +"smooth": true +}, +{ +"x": 61, +"y": 172, +"type": "cubic" +}, +{ +"x": 62, +"y": 148, +"type": "cubic" +}, +{ +"x": 66, +"y": 121, +"smooth": true +}, +{ +"x": 78, +"y": 48, +"type": "cubic" +}, +{ +"x": 142, +"y": -14, +"type": "cubic" +}, +{ +"x": 252, +"y": -14, +"smooth": true +}, +{ +"x": 305, +"y": -14, +"type": "cubic" +}, +{ +"x": 344, +"y": -5, +"type": "cubic" +}, +{ +"x": 386, +"y": 25 +}, +{ +"x": 423, +"y": 91 +}, +{ +"x": 423, +"y": 0 +}, +{ +"x": 532, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 604 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/udieresis.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/udieresis.json new file mode 100644 index 0000000000..c1f31fe957 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/udieresis.json @@ -0,0 +1,283 @@ +{ +"name": "udieresis", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 216, +"y": 580, +"smooth": true +}, +{ +"x": 246, +"y": 580, +"type": "cubic" +}, +{ +"x": 270, +"y": 602, +"type": "cubic" +}, +{ +"x": 270, +"y": 632, +"smooth": true +}, +{ +"x": 270, +"y": 662, +"type": "cubic" +}, +{ +"x": 246, +"y": 685, +"type": "cubic" +}, +{ +"x": 216, +"y": 685, +"smooth": true +}, +{ +"x": 186, +"y": 685, +"type": "cubic" +}, +{ +"x": 163, +"y": 662, +"type": "cubic" +}, +{ +"x": 163, +"y": 632, +"smooth": true +}, +{ +"x": 163, +"y": 602, +"type": "cubic" +}, +{ +"x": 186, +"y": 580, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 376, +"y": 580, +"smooth": true +}, +{ +"x": 406, +"y": 580, +"type": "cubic" +}, +{ +"x": 429, +"y": 602, +"type": "cubic" +}, +{ +"x": 429, +"y": 632, +"smooth": true +}, +{ +"x": 429, +"y": 662, +"type": "cubic" +}, +{ +"x": 406, +"y": 685, +"type": "cubic" +}, +{ +"x": 376, +"y": 685, +"smooth": true +}, +{ +"x": 346, +"y": 685, +"type": "cubic" +}, +{ +"x": 323, +"y": 662, +"type": "cubic" +}, +{ +"x": 323, +"y": 632, +"smooth": true +}, +{ +"x": 323, +"y": 602, +"type": "cubic" +}, +{ +"x": 346, +"y": 580, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 532, +"y": 531 +}, +{ +"x": 423, +"y": 531 +}, +{ +"x": 423, +"y": 281, +"smooth": true +}, +{ +"x": 423, +"y": 127, +"type": "cubic" +}, +{ +"x": 365, +"y": 68, +"type": "cubic" +}, +{ +"x": 288, +"y": 68, +"smooth": true +}, +{ +"x": 220, +"y": 68, +"type": "cubic" +}, +{ +"x": 182, +"y": 106, +"type": "cubic" +}, +{ +"x": 174, +"y": 164, +"smooth": true +}, +{ +"x": 171, +"y": 191, +"type": "cubic" +}, +{ +"x": 170, +"y": 220, +"type": "cubic" +}, +{ +"x": 170, +"y": 237, +"smooth": true +}, +{ +"x": 170, +"y": 531 +}, +{ +"x": 61, +"y": 531 +}, +{ +"x": 61, +"y": 215, +"smooth": true +}, +{ +"x": 61, +"y": 172, +"type": "cubic" +}, +{ +"x": 62, +"y": 148, +"type": "cubic" +}, +{ +"x": 66, +"y": 121, +"smooth": true +}, +{ +"x": 78, +"y": 48, +"type": "cubic" +}, +{ +"x": 142, +"y": -14, +"type": "cubic" +}, +{ +"x": 252, +"y": -14, +"smooth": true +}, +{ +"x": 305, +"y": -14, +"type": "cubic" +}, +{ +"x": 344, +"y": -5, +"type": "cubic" +}, +{ +"x": 386, +"y": 25 +}, +{ +"x": 423, +"y": 91 +}, +{ +"x": 423, +"y": 0 +}, +{ +"x": 532, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 604 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ugrave.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ugrave.json new file mode 100644 index 0000000000..3195855f44 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ugrave.json @@ -0,0 +1,174 @@ +{ +"name": "ugrave", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 271, +"y": 578 +}, +{ +"x": 337, +"y": 578 +}, +{ +"x": 269, +"y": 692 +}, +{ +"x": 169, +"y": 692 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 532, +"y": 531 +}, +{ +"x": 423, +"y": 531 +}, +{ +"x": 423, +"y": 281, +"smooth": true +}, +{ +"x": 423, +"y": 127, +"type": "cubic" +}, +{ +"x": 365, +"y": 68, +"type": "cubic" +}, +{ +"x": 288, +"y": 68, +"smooth": true +}, +{ +"x": 220, +"y": 68, +"type": "cubic" +}, +{ +"x": 182, +"y": 106, +"type": "cubic" +}, +{ +"x": 174, +"y": 164, +"smooth": true +}, +{ +"x": 171, +"y": 191, +"type": "cubic" +}, +{ +"x": 170, +"y": 220, +"type": "cubic" +}, +{ +"x": 170, +"y": 237, +"smooth": true +}, +{ +"x": 170, +"y": 531 +}, +{ +"x": 61, +"y": 531 +}, +{ +"x": 61, +"y": 215, +"smooth": true +}, +{ +"x": 61, +"y": 172, +"type": "cubic" +}, +{ +"x": 62, +"y": 148, +"type": "cubic" +}, +{ +"x": 66, +"y": 121, +"smooth": true +}, +{ +"x": 78, +"y": 48, +"type": "cubic" +}, +{ +"x": 142, +"y": -14, +"type": "cubic" +}, +{ +"x": 252, +"y": -14, +"smooth": true +}, +{ +"x": 305, +"y": -14, +"type": "cubic" +}, +{ +"x": 344, +"y": -5, +"type": "cubic" +}, +{ +"x": 386, +"y": 25 +}, +{ +"x": 423, +"y": 91 +}, +{ +"x": 423, +"y": 0 +}, +{ +"x": 532, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 604 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uhungarumlaut.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uhungarumlaut.json new file mode 100644 index 0000000000..6f448c4285 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uhungarumlaut.json @@ -0,0 +1,195 @@ +{ +"name": "uhungarumlaut", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 252, +"y": 578 +}, +{ +"x": 354, +"y": 692 +}, +{ +"x": 254, +"y": 692 +}, +{ +"x": 186, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 325, +"y": 578 +}, +{ +"x": 391, +"y": 578 +}, +{ +"x": 493, +"y": 692 +}, +{ +"x": 393, +"y": 692 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 532, +"y": 531 +}, +{ +"x": 423, +"y": 531 +}, +{ +"x": 423, +"y": 281, +"smooth": true +}, +{ +"x": 423, +"y": 127, +"type": "cubic" +}, +{ +"x": 365, +"y": 68, +"type": "cubic" +}, +{ +"x": 288, +"y": 68, +"smooth": true +}, +{ +"x": 220, +"y": 68, +"type": "cubic" +}, +{ +"x": 182, +"y": 106, +"type": "cubic" +}, +{ +"x": 174, +"y": 164, +"smooth": true +}, +{ +"x": 171, +"y": 191, +"type": "cubic" +}, +{ +"x": 170, +"y": 220, +"type": "cubic" +}, +{ +"x": 170, +"y": 237, +"smooth": true +}, +{ +"x": 170, +"y": 531 +}, +{ +"x": 61, +"y": 531 +}, +{ +"x": 61, +"y": 215, +"smooth": true +}, +{ +"x": 61, +"y": 172, +"type": "cubic" +}, +{ +"x": 62, +"y": 148, +"type": "cubic" +}, +{ +"x": 66, +"y": 121, +"smooth": true +}, +{ +"x": 78, +"y": 48, +"type": "cubic" +}, +{ +"x": 142, +"y": -14, +"type": "cubic" +}, +{ +"x": 252, +"y": -14, +"smooth": true +}, +{ +"x": 305, +"y": -14, +"type": "cubic" +}, +{ +"x": 344, +"y": -5, +"type": "cubic" +}, +{ +"x": 386, +"y": 25 +}, +{ +"x": 423, +"y": 91 +}, +{ +"x": 423, +"y": 0 +}, +{ +"x": 532, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 604 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/umacron.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/umacron.json new file mode 100644 index 0000000000..93fa0b1584 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/umacron.json @@ -0,0 +1,174 @@ +{ +"name": "umacron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 424, +"y": 600 +}, +{ +"x": 424, +"y": 663 +}, +{ +"x": 169, +"y": 663 +}, +{ +"x": 169, +"y": 600 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 532, +"y": 531 +}, +{ +"x": 423, +"y": 531 +}, +{ +"x": 423, +"y": 281, +"smooth": true +}, +{ +"x": 423, +"y": 127, +"type": "cubic" +}, +{ +"x": 365, +"y": 68, +"type": "cubic" +}, +{ +"x": 288, +"y": 68, +"smooth": true +}, +{ +"x": 220, +"y": 68, +"type": "cubic" +}, +{ +"x": 182, +"y": 106, +"type": "cubic" +}, +{ +"x": 174, +"y": 164, +"smooth": true +}, +{ +"x": 171, +"y": 191, +"type": "cubic" +}, +{ +"x": 170, +"y": 220, +"type": "cubic" +}, +{ +"x": 170, +"y": 237, +"smooth": true +}, +{ +"x": 170, +"y": 531 +}, +{ +"x": 61, +"y": 531 +}, +{ +"x": 61, +"y": 215, +"smooth": true +}, +{ +"x": 61, +"y": 172, +"type": "cubic" +}, +{ +"x": 62, +"y": 148, +"type": "cubic" +}, +{ +"x": 66, +"y": 121, +"smooth": true +}, +{ +"x": 78, +"y": 48, +"type": "cubic" +}, +{ +"x": 142, +"y": -14, +"type": "cubic" +}, +{ +"x": 252, +"y": -14, +"smooth": true +}, +{ +"x": 305, +"y": -14, +"type": "cubic" +}, +{ +"x": 344, +"y": -5, +"type": "cubic" +}, +{ +"x": 386, +"y": 25 +}, +{ +"x": 423, +"y": 91 +}, +{ +"x": 423, +"y": 0 +}, +{ +"x": 532, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 604 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/underscore.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/underscore.json new file mode 100644 index 0000000000..a668f0e5b0 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/underscore.json @@ -0,0 +1,42 @@ +{ +"name": "underscore", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 450, +"y": -87 +}, +{ +"x": 450, +"y": -21 +}, +{ +"x": 50, +"y": -21 +}, +{ +"x": 50, +"y": -87 +} +], +"isClosed": true +} +] +}, +"xAdvance": 500 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uni021A^02.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uni021A^02.json new file mode 100644 index 0000000000..e432e00f6c --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uni021A^02.json @@ -0,0 +1,83 @@ +{ +"name": "uni021A", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 620, +"y": 603 +}, +{ +"x": 620, +"y": 690 +}, +{ +"x": 29, +"y": 690 +}, +{ +"x": 29, +"y": 603 +}, +{ +"x": 270, +"y": 603 +}, +{ +"x": 270, +"y": 0 +}, +{ +"x": 379, +"y": 0 +}, +{ +"x": 379, +"y": 603 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 295, +"y": -48 +}, +{ +"x": 235, +"y": -200 +}, +{ +"x": 305, +"y": -200 +}, +{ +"x": 376, +"y": -59 +}, +{ +"x": 376, +"y": -48 +} +], +"isClosed": true +} +] +}, +"xAdvance": 617 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uni021B^02.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uni021B^02.json new file mode 100644 index 0000000000..d71b7162fe --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uni021B^02.json @@ -0,0 +1,174 @@ +{ +"name": "uni021B", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 200, +"y": 450 +}, +{ +"x": 304, +"y": 450 +}, +{ +"x": 304, +"y": 527 +}, +{ +"x": 200, +"y": 527 +}, +{ +"x": 200, +"y": 654 +}, +{ +"x": 91, +"y": 654 +}, +{ +"x": 91, +"y": 527 +}, +{ +"x": 16, +"y": 527 +}, +{ +"x": 16, +"y": 450 +}, +{ +"x": 91, +"y": 450 +}, +{ +"x": 91, +"y": 162, +"smooth": true +}, +{ +"x": 91, +"y": 132, +"type": "cubic" +}, +{ +"x": 91, +"y": 109, +"type": "cubic" +}, +{ +"x": 92, +"y": 91, +"smooth": true +}, +{ +"x": 97, +"y": 21, +"type": "cubic" +}, +{ +"x": 133, +"y": -10, +"type": "cubic" +}, +{ +"x": 216, +"y": -10, +"smooth": true +}, +{ +"x": 243, +"y": -10, +"type": "cubic" +}, +{ +"x": 269, +"y": -8, +"type": "cubic" +}, +{ +"x": 297, +"y": -4 +}, +{ +"x": 297, +"y": 72 +}, +{ +"x": 225, +"y": 65, +"type": "cubic" +}, +{ +"x": 205, +"y": 76, +"type": "cubic" +}, +{ +"x": 201, +"y": 128, +"smooth": true +}, +{ +"x": 200, +"y": 142, +"type": "cubic" +}, +{ +"x": 200, +"y": 154, +"type": "cubic" +}, +{ +"x": 200, +"y": 172, +"smooth": true +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 154, +"y": -48 +}, +{ +"x": 94, +"y": -200 +}, +{ +"x": 164, +"y": -200 +}, +{ +"x": 235, +"y": -59 +}, +{ +"x": 235, +"y": -48 +} +], +"isClosed": true +} +] +}, +"xAdvance": 335 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uni0326.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uni0326.json new file mode 100644 index 0000000000..8b81cb568e --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uni0326.json @@ -0,0 +1,46 @@ +{ +"name": "uni0326", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 202, +"y": -59 +}, +{ +"x": 202, +"y": -48 +}, +{ +"x": 121, +"y": -48 +}, +{ +"x": 61, +"y": -200 +}, +{ +"x": 131, +"y": -200 +} +], +"isClosed": true +} +] +}, +"xAdvance": 0 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uogonek.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uogonek.json new file mode 100644 index 0000000000..35d4ec1ccb --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uogonek.json @@ -0,0 +1,245 @@ +{ +"name": "uogonek", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 532, +"y": 0 +}, +{ +"x": 532, +"y": 531 +}, +{ +"x": 423, +"y": 531 +}, +{ +"x": 423, +"y": 281, +"smooth": true +}, +{ +"x": 423, +"y": 127, +"type": "cubic" +}, +{ +"x": 365, +"y": 68, +"type": "cubic" +}, +{ +"x": 288, +"y": 68, +"smooth": true +}, +{ +"x": 220, +"y": 68, +"type": "cubic" +}, +{ +"x": 182, +"y": 106, +"type": "cubic" +}, +{ +"x": 174, +"y": 164, +"smooth": true +}, +{ +"x": 171, +"y": 191, +"type": "cubic" +}, +{ +"x": 170, +"y": 220, +"type": "cubic" +}, +{ +"x": 170, +"y": 237, +"smooth": true +}, +{ +"x": 170, +"y": 531 +}, +{ +"x": 61, +"y": 531 +}, +{ +"x": 61, +"y": 215, +"smooth": true +}, +{ +"x": 61, +"y": 172, +"type": "cubic" +}, +{ +"x": 62, +"y": 148, +"type": "cubic" +}, +{ +"x": 66, +"y": 121, +"smooth": true +}, +{ +"x": 78, +"y": 48, +"type": "cubic" +}, +{ +"x": 142, +"y": -14, +"type": "cubic" +}, +{ +"x": 252, +"y": -14, +"smooth": true +}, +{ +"x": 305, +"y": -14, +"type": "cubic" +}, +{ +"x": 344, +"y": -5, +"type": "cubic" +}, +{ +"x": 386, +"y": 25 +}, +{ +"x": 423, +"y": 91 +}, +{ +"x": 423, +"y": 10 +}, +{ +"x": 368, +"y": -13, +"type": "cubic" +}, +{ +"x": 317, +"y": -66, +"type": "cubic" +}, +{ +"x": 317, +"y": -138, +"smooth": true +}, +{ +"x": 317, +"y": -201, +"type": "cubic" +}, +{ +"x": 357, +"y": -223, +"type": "cubic" +}, +{ +"x": 415, +"y": -223, +"smooth": true +}, +{ +"x": 456, +"y": -223, +"type": "cubic" +}, +{ +"x": 490, +"y": -212, +"type": "cubic" +}, +{ +"x": 516, +"y": -192 +}, +{ +"x": 516, +"y": -137 +}, +{ +"x": 498, +"y": -151, +"type": "cubic" +}, +{ +"x": 481, +"y": -157, +"type": "cubic" +}, +{ +"x": 463, +"y": -157, +"smooth": true +}, +{ +"x": 436, +"y": -157, +"type": "cubic" +}, +{ +"x": 419, +"y": -144, +"type": "cubic" +}, +{ +"x": 419, +"y": -107, +"smooth": true +}, +{ +"x": 419, +"y": -50, +"type": "cubic" +}, +{ +"x": 457, +"y": -7, +"type": "cubic" +}, +{ +"x": 501, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 604 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uring.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uring.json new file mode 100644 index 0000000000..44f7a64d12 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/uring.json @@ -0,0 +1,283 @@ +{ +"name": "uring", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 296, +"y": 566, +"smooth": true +}, +{ +"x": 353, +"y": 566, +"type": "cubic" +}, +{ +"x": 394, +"y": 603, +"type": "cubic" +}, +{ +"x": 394, +"y": 655, +"smooth": true +}, +{ +"x": 394, +"y": 708, +"type": "cubic" +}, +{ +"x": 353, +"y": 745, +"type": "cubic" +}, +{ +"x": 296, +"y": 745, +"smooth": true +}, +{ +"x": 239, +"y": 745, +"type": "cubic" +}, +{ +"x": 198, +"y": 708, +"type": "cubic" +}, +{ +"x": 198, +"y": 655, +"smooth": true +}, +{ +"x": 198, +"y": 603, +"type": "cubic" +}, +{ +"x": 239, +"y": 566, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 296, +"y": 702, +"smooth": true +}, +{ +"x": 319, +"y": 702, +"type": "cubic" +}, +{ +"x": 336, +"y": 684, +"type": "cubic" +}, +{ +"x": 336, +"y": 655, +"smooth": true +}, +{ +"x": 336, +"y": 626, +"type": "cubic" +}, +{ +"x": 319, +"y": 609, +"type": "cubic" +}, +{ +"x": 296, +"y": 609, +"smooth": true +}, +{ +"x": 273, +"y": 609, +"type": "cubic" +}, +{ +"x": 256, +"y": 626, +"type": "cubic" +}, +{ +"x": 256, +"y": 655, +"smooth": true +}, +{ +"x": 256, +"y": 684, +"type": "cubic" +}, +{ +"x": 273, +"y": 702, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 532, +"y": 531 +}, +{ +"x": 423, +"y": 531 +}, +{ +"x": 423, +"y": 281, +"smooth": true +}, +{ +"x": 423, +"y": 127, +"type": "cubic" +}, +{ +"x": 365, +"y": 68, +"type": "cubic" +}, +{ +"x": 288, +"y": 68, +"smooth": true +}, +{ +"x": 220, +"y": 68, +"type": "cubic" +}, +{ +"x": 182, +"y": 106, +"type": "cubic" +}, +{ +"x": 174, +"y": 164, +"smooth": true +}, +{ +"x": 171, +"y": 191, +"type": "cubic" +}, +{ +"x": 170, +"y": 220, +"type": "cubic" +}, +{ +"x": 170, +"y": 237, +"smooth": true +}, +{ +"x": 170, +"y": 531 +}, +{ +"x": 61, +"y": 531 +}, +{ +"x": 61, +"y": 215, +"smooth": true +}, +{ +"x": 61, +"y": 172, +"type": "cubic" +}, +{ +"x": 62, +"y": 148, +"type": "cubic" +}, +{ +"x": 66, +"y": 121, +"smooth": true +}, +{ +"x": 78, +"y": 48, +"type": "cubic" +}, +{ +"x": 142, +"y": -14, +"type": "cubic" +}, +{ +"x": 252, +"y": -14, +"smooth": true +}, +{ +"x": 305, +"y": -14, +"type": "cubic" +}, +{ +"x": 344, +"y": -5, +"type": "cubic" +}, +{ +"x": 386, +"y": 25 +}, +{ +"x": 423, +"y": 91 +}, +{ +"x": 423, +"y": 0 +}, +{ +"x": 532, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 604 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/v.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/v.json new file mode 100644 index 0000000000..e8aad599d8 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/v.json @@ -0,0 +1,54 @@ +{ +"name": "v", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 535, +"y": 531 +}, +{ +"x": 418, +"y": 531 +}, +{ +"x": 271, +"y": 81 +}, +{ +"x": 122, +"y": 531 +}, +{ +"x": 1, +"y": 531 +}, +{ +"x": 204, +"y": 0 +}, +{ +"x": 332, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 538 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/w.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/w.json new file mode 100644 index 0000000000..dea533989a --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/w.json @@ -0,0 +1,78 @@ +{ +"name": "w", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 803, +"y": 531 +}, +{ +"x": 686, +"y": 531 +}, +{ +"x": 577, +"y": 97 +}, +{ +"x": 471, +"y": 530 +}, +{ +"x": 337, +"y": 530 +}, +{ +"x": 234, +"y": 98 +}, +{ +"x": 125, +"y": 531 +}, +{ +"x": 1, +"y": 531 +}, +{ +"x": 170, +"y": 0 +}, +{ +"x": 297, +"y": 0 +}, +{ +"x": 403, +"y": 429 +}, +{ +"x": 508, +"y": 0 +}, +{ +"x": 634, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 806 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/wacute.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/wacute.json new file mode 100644 index 0000000000..e9eacce266 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/wacute.json @@ -0,0 +1,99 @@ +{ +"name": "wacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 431, +"y": 578 +}, +{ +"x": 534, +"y": 692 +}, +{ +"x": 434, +"y": 692 +}, +{ +"x": 365, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 803, +"y": 531 +}, +{ +"x": 686, +"y": 531 +}, +{ +"x": 577, +"y": 97 +}, +{ +"x": 471, +"y": 530 +}, +{ +"x": 337, +"y": 530 +}, +{ +"x": 234, +"y": 98 +}, +{ +"x": 125, +"y": 531 +}, +{ +"x": 1, +"y": 531 +}, +{ +"x": 170, +"y": 0 +}, +{ +"x": 297, +"y": 0 +}, +{ +"x": 403, +"y": 429 +}, +{ +"x": 508, +"y": 0 +}, +{ +"x": 634, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 806 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/wcircumflex.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/wcircumflex.json new file mode 100644 index 0000000000..5fc26b1ea5 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/wcircumflex.json @@ -0,0 +1,111 @@ +{ +"name": "wcircumflex", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 371, +"y": 578 +}, +{ +"x": 404, +"y": 643 +}, +{ +"x": 437, +"y": 578 +}, +{ +"x": 511, +"y": 578 +}, +{ +"x": 445, +"y": 692 +}, +{ +"x": 364, +"y": 692 +}, +{ +"x": 298, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 803, +"y": 531 +}, +{ +"x": 686, +"y": 531 +}, +{ +"x": 577, +"y": 97 +}, +{ +"x": 471, +"y": 530 +}, +{ +"x": 337, +"y": 530 +}, +{ +"x": 234, +"y": 98 +}, +{ +"x": 125, +"y": 531 +}, +{ +"x": 1, +"y": 531 +}, +{ +"x": 170, +"y": 0 +}, +{ +"x": 297, +"y": 0 +}, +{ +"x": 403, +"y": 429 +}, +{ +"x": 508, +"y": 0 +}, +{ +"x": 634, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 806 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/wdieresis.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/wdieresis.json new file mode 100644 index 0000000000..f78436ab3a --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/wdieresis.json @@ -0,0 +1,208 @@ +{ +"name": "wdieresis", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 324, +"y": 580, +"smooth": true +}, +{ +"x": 354, +"y": 580, +"type": "cubic" +}, +{ +"x": 378, +"y": 602, +"type": "cubic" +}, +{ +"x": 378, +"y": 632, +"smooth": true +}, +{ +"x": 378, +"y": 662, +"type": "cubic" +}, +{ +"x": 354, +"y": 685, +"type": "cubic" +}, +{ +"x": 324, +"y": 685, +"smooth": true +}, +{ +"x": 294, +"y": 685, +"type": "cubic" +}, +{ +"x": 271, +"y": 662, +"type": "cubic" +}, +{ +"x": 271, +"y": 632, +"smooth": true +}, +{ +"x": 271, +"y": 602, +"type": "cubic" +}, +{ +"x": 294, +"y": 580, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 484, +"y": 580, +"smooth": true +}, +{ +"x": 514, +"y": 580, +"type": "cubic" +}, +{ +"x": 537, +"y": 602, +"type": "cubic" +}, +{ +"x": 537, +"y": 632, +"smooth": true +}, +{ +"x": 537, +"y": 662, +"type": "cubic" +}, +{ +"x": 514, +"y": 685, +"type": "cubic" +}, +{ +"x": 484, +"y": 685, +"smooth": true +}, +{ +"x": 454, +"y": 685, +"type": "cubic" +}, +{ +"x": 431, +"y": 662, +"type": "cubic" +}, +{ +"x": 431, +"y": 632, +"smooth": true +}, +{ +"x": 431, +"y": 602, +"type": "cubic" +}, +{ +"x": 454, +"y": 580, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 803, +"y": 531 +}, +{ +"x": 686, +"y": 531 +}, +{ +"x": 577, +"y": 97 +}, +{ +"x": 471, +"y": 530 +}, +{ +"x": 337, +"y": 530 +}, +{ +"x": 234, +"y": 98 +}, +{ +"x": 125, +"y": 531 +}, +{ +"x": 1, +"y": 531 +}, +{ +"x": 170, +"y": 0 +}, +{ +"x": 297, +"y": 0 +}, +{ +"x": 403, +"y": 429 +}, +{ +"x": 508, +"y": 0 +}, +{ +"x": 634, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 806 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/wgrave.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/wgrave.json new file mode 100644 index 0000000000..f4864d6164 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/wgrave.json @@ -0,0 +1,99 @@ +{ +"name": "wgrave", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 379, +"y": 578 +}, +{ +"x": 445, +"y": 578 +}, +{ +"x": 377, +"y": 692 +}, +{ +"x": 277, +"y": 692 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 803, +"y": 531 +}, +{ +"x": 686, +"y": 531 +}, +{ +"x": 577, +"y": 97 +}, +{ +"x": 471, +"y": 530 +}, +{ +"x": 337, +"y": 530 +}, +{ +"x": 234, +"y": 98 +}, +{ +"x": 125, +"y": 531 +}, +{ +"x": 1, +"y": 531 +}, +{ +"x": 170, +"y": 0 +}, +{ +"x": 297, +"y": 0 +}, +{ +"x": 403, +"y": 429 +}, +{ +"x": 508, +"y": 0 +}, +{ +"x": 634, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 806 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/x.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/x.json new file mode 100644 index 0000000000..31341b513f --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/x.json @@ -0,0 +1,74 @@ +{ +"name": "x", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 313, +"y": 270 +}, +{ +"x": 498, +"y": 531 +}, +{ +"x": 372, +"y": 531 +}, +{ +"x": 252, +"y": 339 +}, +{ +"x": 131, +"y": 531 +}, +{ +"x": 2, +"y": 531 +}, +{ +"x": 184, +"y": 269 +}, +{ +"x": -5, +"y": 0 +}, +{ +"x": 121, +"y": 0 +}, +{ +"x": 247, +"y": 200 +}, +{ +"x": 373, +"y": 0 +}, +{ +"x": 500, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 509 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/y.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/y.json new file mode 100644 index 0000000000..f40ce52541 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/y.json @@ -0,0 +1,118 @@ +{ +"name": "y", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 534, +"y": 531 +}, +{ +"x": 415, +"y": 531 +}, +{ +"x": 270, +"y": 82 +}, +{ +"x": 124, +"y": 531 +}, +{ +"x": 1, +"y": 531 +}, +{ +"x": 215, +"y": -25 +}, +{ +"x": 207, +"y": -44, +"smooth": true +}, +{ +"x": 183, +"y": -106, +"type": "cubic" +}, +{ +"x": 149, +"y": -127, +"type": "cubic" +}, +{ +"x": 99, +"y": -127, +"smooth": true +}, +{ +"x": 88, +"y": -127, +"type": "cubic" +}, +{ +"x": 77, +"y": -127, +"type": "cubic" +}, +{ +"x": 64, +"y": -126 +}, +{ +"x": 64, +"y": -207 +}, +{ +"x": 80, +"y": -210, +"type": "cubic" +}, +{ +"x": 94, +"y": -210, +"type": "cubic" +}, +{ +"x": 116, +"y": -210, +"smooth": true +}, +{ +"x": 212, +"y": -210, +"type": "cubic" +}, +{ +"x": 269, +"y": -160, +"type": "cubic" +}, +{ +"x": 318, +"y": -34, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 537 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/yacute.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/yacute.json new file mode 100644 index 0000000000..732b07a27c --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/yacute.json @@ -0,0 +1,139 @@ +{ +"name": "yacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 295, +"y": 578 +}, +{ +"x": 398, +"y": 692 +}, +{ +"x": 298, +"y": 692 +}, +{ +"x": 229, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 534, +"y": 531 +}, +{ +"x": 415, +"y": 531 +}, +{ +"x": 270, +"y": 82 +}, +{ +"x": 124, +"y": 531 +}, +{ +"x": 1, +"y": 531 +}, +{ +"x": 215, +"y": -25 +}, +{ +"x": 207, +"y": -44, +"smooth": true +}, +{ +"x": 183, +"y": -106, +"type": "cubic" +}, +{ +"x": 149, +"y": -127, +"type": "cubic" +}, +{ +"x": 99, +"y": -127, +"smooth": true +}, +{ +"x": 88, +"y": -127, +"type": "cubic" +}, +{ +"x": 77, +"y": -127, +"type": "cubic" +}, +{ +"x": 64, +"y": -126 +}, +{ +"x": 64, +"y": -207 +}, +{ +"x": 80, +"y": -210, +"type": "cubic" +}, +{ +"x": 94, +"y": -210, +"type": "cubic" +}, +{ +"x": 116, +"y": -210, +"smooth": true +}, +{ +"x": 212, +"y": -210, +"type": "cubic" +}, +{ +"x": 269, +"y": -160, +"type": "cubic" +}, +{ +"x": 318, +"y": -34, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 537 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ycircumflex.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ycircumflex.json new file mode 100644 index 0000000000..8e46c7d590 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ycircumflex.json @@ -0,0 +1,151 @@ +{ +"name": "ycircumflex", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 235, +"y": 578 +}, +{ +"x": 268, +"y": 643 +}, +{ +"x": 301, +"y": 578 +}, +{ +"x": 375, +"y": 578 +}, +{ +"x": 309, +"y": 692 +}, +{ +"x": 228, +"y": 692 +}, +{ +"x": 162, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 534, +"y": 531 +}, +{ +"x": 415, +"y": 531 +}, +{ +"x": 270, +"y": 82 +}, +{ +"x": 124, +"y": 531 +}, +{ +"x": 1, +"y": 531 +}, +{ +"x": 215, +"y": -25 +}, +{ +"x": 207, +"y": -44, +"smooth": true +}, +{ +"x": 183, +"y": -106, +"type": "cubic" +}, +{ +"x": 149, +"y": -127, +"type": "cubic" +}, +{ +"x": 99, +"y": -127, +"smooth": true +}, +{ +"x": 88, +"y": -127, +"type": "cubic" +}, +{ +"x": 77, +"y": -127, +"type": "cubic" +}, +{ +"x": 64, +"y": -126 +}, +{ +"x": 64, +"y": -207 +}, +{ +"x": 80, +"y": -210, +"type": "cubic" +}, +{ +"x": 94, +"y": -210, +"type": "cubic" +}, +{ +"x": 116, +"y": -210, +"smooth": true +}, +{ +"x": 212, +"y": -210, +"type": "cubic" +}, +{ +"x": 269, +"y": -160, +"type": "cubic" +}, +{ +"x": 318, +"y": -34, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 537 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ydieresis.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ydieresis.json new file mode 100644 index 0000000000..2999cfde86 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ydieresis.json @@ -0,0 +1,248 @@ +{ +"name": "ydieresis", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 188, +"y": 580, +"smooth": true +}, +{ +"x": 218, +"y": 580, +"type": "cubic" +}, +{ +"x": 242, +"y": 602, +"type": "cubic" +}, +{ +"x": 242, +"y": 632, +"smooth": true +}, +{ +"x": 242, +"y": 662, +"type": "cubic" +}, +{ +"x": 218, +"y": 685, +"type": "cubic" +}, +{ +"x": 188, +"y": 685, +"smooth": true +}, +{ +"x": 158, +"y": 685, +"type": "cubic" +}, +{ +"x": 135, +"y": 662, +"type": "cubic" +}, +{ +"x": 135, +"y": 632, +"smooth": true +}, +{ +"x": 135, +"y": 602, +"type": "cubic" +}, +{ +"x": 158, +"y": 580, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 348, +"y": 580, +"smooth": true +}, +{ +"x": 378, +"y": 580, +"type": "cubic" +}, +{ +"x": 401, +"y": 602, +"type": "cubic" +}, +{ +"x": 401, +"y": 632, +"smooth": true +}, +{ +"x": 401, +"y": 662, +"type": "cubic" +}, +{ +"x": 378, +"y": 685, +"type": "cubic" +}, +{ +"x": 348, +"y": 685, +"smooth": true +}, +{ +"x": 318, +"y": 685, +"type": "cubic" +}, +{ +"x": 295, +"y": 662, +"type": "cubic" +}, +{ +"x": 295, +"y": 632, +"smooth": true +}, +{ +"x": 295, +"y": 602, +"type": "cubic" +}, +{ +"x": 318, +"y": 580, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 534, +"y": 531 +}, +{ +"x": 415, +"y": 531 +}, +{ +"x": 270, +"y": 82 +}, +{ +"x": 124, +"y": 531 +}, +{ +"x": 1, +"y": 531 +}, +{ +"x": 215, +"y": -25 +}, +{ +"x": 207, +"y": -44, +"smooth": true +}, +{ +"x": 183, +"y": -106, +"type": "cubic" +}, +{ +"x": 149, +"y": -127, +"type": "cubic" +}, +{ +"x": 99, +"y": -127, +"smooth": true +}, +{ +"x": 88, +"y": -127, +"type": "cubic" +}, +{ +"x": 77, +"y": -127, +"type": "cubic" +}, +{ +"x": 64, +"y": -126 +}, +{ +"x": 64, +"y": -207 +}, +{ +"x": 80, +"y": -210, +"type": "cubic" +}, +{ +"x": 94, +"y": -210, +"type": "cubic" +}, +{ +"x": 116, +"y": -210, +"smooth": true +}, +{ +"x": 212, +"y": -210, +"type": "cubic" +}, +{ +"x": 269, +"y": -160, +"type": "cubic" +}, +{ +"x": 318, +"y": -34, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 537 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/yen.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/yen.json new file mode 100644 index 0000000000..f0a72b4495 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/yen.json @@ -0,0 +1,126 @@ +{ +"name": "yen", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 396, +"y": 363 +}, +{ +"x": 577, +"y": 690 +}, +{ +"x": 456, +"y": 690 +}, +{ +"x": 304, +"y": 367 +}, +{ +"x": 149, +"y": 690 +}, +{ +"x": 23, +"y": 690 +}, +{ +"x": 204, +"y": 363 +}, +{ +"x": 87, +"y": 363 +}, +{ +"x": 87, +"y": 297 +}, +{ +"x": 241, +"y": 297 +}, +{ +"x": 246, +"y": 287 +}, +{ +"x": 246, +"y": 235 +}, +{ +"x": 87, +"y": 235 +}, +{ +"x": 87, +"y": 169 +}, +{ +"x": 246, +"y": 169 +}, +{ +"x": 246, +"y": 0 +}, +{ +"x": 355, +"y": 0 +}, +{ +"x": 355, +"y": 169 +}, +{ +"x": 514, +"y": 169 +}, +{ +"x": 514, +"y": 235 +}, +{ +"x": 355, +"y": 235 +}, +{ +"x": 355, +"y": 289 +}, +{ +"x": 359, +"y": 297 +}, +{ +"x": 514, +"y": 297 +}, +{ +"x": 514, +"y": 363 +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ygrave.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ygrave.json new file mode 100644 index 0000000000..259cbeca87 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/ygrave.json @@ -0,0 +1,139 @@ +{ +"name": "ygrave", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 243, +"y": 578 +}, +{ +"x": 309, +"y": 578 +}, +{ +"x": 241, +"y": 692 +}, +{ +"x": 141, +"y": 692 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 534, +"y": 531 +}, +{ +"x": 415, +"y": 531 +}, +{ +"x": 270, +"y": 82 +}, +{ +"x": 124, +"y": 531 +}, +{ +"x": 1, +"y": 531 +}, +{ +"x": 215, +"y": -25 +}, +{ +"x": 207, +"y": -44, +"smooth": true +}, +{ +"x": 183, +"y": -106, +"type": "cubic" +}, +{ +"x": 149, +"y": -127, +"type": "cubic" +}, +{ +"x": 99, +"y": -127, +"smooth": true +}, +{ +"x": 88, +"y": -127, +"type": "cubic" +}, +{ +"x": 77, +"y": -127, +"type": "cubic" +}, +{ +"x": 64, +"y": -126 +}, +{ +"x": 64, +"y": -207 +}, +{ +"x": 80, +"y": -210, +"type": "cubic" +}, +{ +"x": 94, +"y": -210, +"type": "cubic" +}, +{ +"x": 116, +"y": -210, +"smooth": true +}, +{ +"x": 212, +"y": -210, +"type": "cubic" +}, +{ +"x": 269, +"y": -160, +"type": "cubic" +}, +{ +"x": 318, +"y": -34, +"smooth": true +} +], +"isClosed": true +} +] +}, +"xAdvance": 537 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/z.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/z.json new file mode 100644 index 0000000000..c1ed01f9d6 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/z.json @@ -0,0 +1,66 @@ +{ +"name": "z", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 449, +"y": 79 +}, +{ +"x": 148, +"y": 79 +}, +{ +"x": 445, +"y": 448 +}, +{ +"x": 445, +"y": 527 +}, +{ +"x": 44, +"y": 527 +}, +{ +"x": 44, +"y": 448 +}, +{ +"x": 323, +"y": 448 +}, +{ +"x": 24, +"y": 76 +}, +{ +"x": 24, +"y": 0 +}, +{ +"x": 449, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 478 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/zacute.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/zacute.json new file mode 100644 index 0000000000..f394fc1f51 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/zacute.json @@ -0,0 +1,87 @@ +{ +"name": "zacute", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 269, +"y": 578 +}, +{ +"x": 372, +"y": 692 +}, +{ +"x": 272, +"y": 692 +}, +{ +"x": 203, +"y": 578 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 449, +"y": 79 +}, +{ +"x": 148, +"y": 79 +}, +{ +"x": 445, +"y": 448 +}, +{ +"x": 445, +"y": 527 +}, +{ +"x": 44, +"y": 527 +}, +{ +"x": 44, +"y": 448 +}, +{ +"x": 323, +"y": 448 +}, +{ +"x": 24, +"y": 76 +}, +{ +"x": 24, +"y": 0 +}, +{ +"x": 449, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 478 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/zcaron.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/zcaron.json new file mode 100644 index 0000000000..eed6eac493 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/zcaron.json @@ -0,0 +1,99 @@ +{ +"name": "zcaron", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 202, +"y": 578 +}, +{ +"x": 283, +"y": 578 +}, +{ +"x": 349, +"y": 692 +}, +{ +"x": 276, +"y": 692 +}, +{ +"x": 243, +"y": 626 +}, +{ +"x": 210, +"y": 692 +}, +{ +"x": 136, +"y": 692 +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 449, +"y": 79 +}, +{ +"x": 148, +"y": 79 +}, +{ +"x": 445, +"y": 448 +}, +{ +"x": 445, +"y": 527 +}, +{ +"x": 44, +"y": 527 +}, +{ +"x": 44, +"y": 448 +}, +{ +"x": 323, +"y": 448 +}, +{ +"x": 24, +"y": 76 +}, +{ +"x": 24, +"y": 0 +}, +{ +"x": 449, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 478 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/zdotaccent.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/zdotaccent.json new file mode 100644 index 0000000000..189a1d8234 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/zdotaccent.json @@ -0,0 +1,131 @@ +{ +"name": "zdotaccent", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 242, +"y": 589, +"smooth": true +}, +{ +"x": 279, +"y": 589, +"type": "cubic" +}, +{ +"x": 307, +"y": 616, +"type": "cubic" +}, +{ +"x": 307, +"y": 653, +"smooth": true +}, +{ +"x": 307, +"y": 689, +"type": "cubic" +}, +{ +"x": 279, +"y": 716, +"type": "cubic" +}, +{ +"x": 242, +"y": 716, +"smooth": true +}, +{ +"x": 205, +"y": 716, +"type": "cubic" +}, +{ +"x": 178, +"y": 689, +"type": "cubic" +}, +{ +"x": 178, +"y": 653, +"smooth": true +}, +{ +"x": 178, +"y": 616, +"type": "cubic" +}, +{ +"x": 205, +"y": 589, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 449, +"y": 79 +}, +{ +"x": 148, +"y": 79 +}, +{ +"x": 445, +"y": 448 +}, +{ +"x": 445, +"y": 527 +}, +{ +"x": 44, +"y": 527 +}, +{ +"x": 44, +"y": 448 +}, +{ +"x": 323, +"y": 448 +}, +{ +"x": 24, +"y": 76 +}, +{ +"x": 24, +"y": 0 +}, +{ +"x": 449, +"y": 0 +} +], +"isClosed": true +} +] +}, +"xAdvance": 478 +} +} +} +} diff --git a/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/zero.json b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/zero.json new file mode 100644 index 0000000000..1e988003a7 --- /dev/null +++ b/.skills-data-prompt/.testfonts/Aileron-SemiBold.fontra/glyphs/zero.json @@ -0,0 +1,151 @@ +{ +"name": "zero", +"sources": [ +{ +"name": "", +"layerName": "8486bc93", +"locationBase": "8486bc93" +} +], +"layers": { +"8486bc93": { +"glyph": { +"path": { +"contours": [ +{ +"points": [ +{ +"x": 300, +"y": 704, +"smooth": true +}, +{ +"x": 108, +"y": 704, +"type": "cubic" +}, +{ +"x": 42, +"y": 554, +"type": "cubic" +}, +{ +"x": 42, +"y": 345, +"smooth": true +}, +{ +"x": 42, +"y": 138, +"type": "cubic" +}, +{ +"x": 108, +"y": -14, +"type": "cubic" +}, +{ +"x": 300, +"y": -14, +"smooth": true +}, +{ +"x": 493, +"y": -14, +"type": "cubic" +}, +{ +"x": 558, +"y": 138, +"type": "cubic" +}, +{ +"x": 558, +"y": 345, +"smooth": true +}, +{ +"x": 558, +"y": 554, +"type": "cubic" +}, +{ +"x": 493, +"y": 704, +"type": "cubic" +} +], +"isClosed": true +}, +{ +"points": [ +{ +"x": 300, +"y": 70, +"smooth": true +}, +{ +"x": 202, +"y": 70, +"type": "cubic" +}, +{ +"x": 161, +"y": 168, +"type": "cubic" +}, +{ +"x": 161, +"y": 345, +"smooth": true +}, +{ +"x": 161, +"y": 524, +"type": "cubic" +}, +{ +"x": 202, +"y": 620, +"type": "cubic" +}, +{ +"x": 300, +"y": 620, +"smooth": true +}, +{ +"x": 399, +"y": 620, +"type": "cubic" +}, +{ +"x": 439, +"y": 524, +"type": "cubic" +}, +{ +"x": 439, +"y": 345, +"smooth": true +}, +{ +"x": 439, +"y": 168, +"type": "cubic" +}, +{ +"x": 399, +"y": 70, +"type": "cubic" +} +], +"isClosed": true +} +] +}, +"xAdvance": 601 +} +} +} +} diff --git a/.skills-data-prompt/MEKA-AGENT-audit-report.md b/.skills-data-prompt/MEKA-AGENT-audit-report.md new file mode 100644 index 0000000000..9796e1b496 --- /dev/null +++ b/.skills-data-prompt/MEKA-AGENT-audit-report.md @@ -0,0 +1,46 @@ +# Fontra Code Audit & Improvement Report + +## Overview +This report provides an audit of the current Fontra codebase, focusing on structure, UI consistency, and extensibility. It includes identified areas for improvement and future ideas for the project, as requested. + +## 1. Accomplishments: Icon Correction +Following the user request, the following tools have been reverted to their default icons to maintain visual consistency with the original Fontra design language: +- **Sidebearing Tool**: Reverted to `/images/sidebearingtool.svg`. +- **Kerning Tool**: Reverted to `/images/kerningtool.svg`. + +## 2. Code Audit Findings + +### Software Architecture & Extensibility +- **Plugin System**: The current plugin initialization in `editor.js` (`initPlugins`) is functional but minimal. It relies on a `plugin.json` and a specific entry point. + - *Improvement*: Formalize the Plugin API with a dedicated manager class that handles lifecycles (init, activate, deactivate, destroy) and provides scoped access to Fontra APIs. +- **Circular Dependencies**: Some modules (like `edit-tools-triangle-guardian.js`) use lazy imports to avoid circular dependencies. + - *Improvement*: Refactor shared geometry or utility functions into a separate `core` module to break these cycles and allow for cleaner static imports. + +### UI/UX & Consistency +- **Icon Strategy**: The codebase currently mixes Phosphor Icons with custom Fontra SVGs. + - *Improvement*: Standardize all tool icons to use either the custom Fontra set (in `/images/`) or Phosphor Icons, but not both intermittently. +- **Micro-Animations**: The UI is functional but feels "static". + - *Improvement*: Add subtle transitions to panel expansions and tool switching to make the interface feel more premium and responsive. +- **Sidebar Management**: Sidebar width is managed through a fixed constant `MIN_SIDEBAR_WIDTH`. + - *Improvement*: Implement a more flexible layout engine (likely using CSS Grid/Flexbox with resizable handles) that persists specific widths per panel to localStorage. + +### Performance +- **Asset Loading**: Icons and images are fetched as individual SVG files. + - *Improvement*: Bundle core icons into an SVG sprite or use an icon font to reduce HTTP requests during initial load. + +## 3. Future Ideas & Improvements + +### A. Intelligent Design Assistance (Pro Advice) +- **Visual Overlays**: Instead of just text advice in the `ProAdvicePanel`, implement visual guides that draw over the glyph (e.g., showing where overshoots should be or highlighting stem consistency). +- **Auto-Correction Suggestions**: Add a "Fix" button in the advice panel that applies common optical corrections (like adding 1-2% overshoot to round glyphs) automatically. + +### B. Enhanced Workflow Tools +- **Contextual Inspector**: A floating or dedicated "Selection" panel that changes its options based on what is selected (contour, point, anchor, component), reducing the need to look through multiple panels. +- **Glyph DNA Tracking**: A system that remembers the relationships between glyphs (e.g., 'o' informs 'c', 'e', 'd', 'p', 'q') and prompts the user to update related glyphs when the foundation glyph changes. + +### C. Advanced Visualization +- **Curvature Comb & Speedpunk Integration**: (Already planned/in progress) Deeply integrate high-end curvature analysis into the default visualization layers. +- **Comparison Mode**: A split-screen or overlay mode to compare the current glyph across different axes or masters in real-time. + +--- +*Report generated by Antigravity on 2026-04-18.* diff --git a/.skills-data-prompt/fontra-dev-logo/FontraIcon.png b/.skills-data-prompt/fontra-dev-logo/FontraIcon.png index 2472909c2c..bf5229f0fa 100644 Binary files a/.skills-data-prompt/fontra-dev-logo/FontraIcon.png and b/.skills-data-prompt/fontra-dev-logo/FontraIcon.png differ diff --git a/.skills-data-prompt/fontra-dev-logo/FontraIconDev.ico b/.skills-data-prompt/fontra-dev-logo/FontraIconDev.ico index b16e05b216..808b6a8c40 100644 Binary files a/.skills-data-prompt/fontra-dev-logo/FontraIconDev.ico and b/.skills-data-prompt/fontra-dev-logo/FontraIconDev.ico differ diff --git a/.skills-data-prompt/fontra-panel-custom-elements-skill.md b/.skills-data-prompt/fontra-panel-custom-elements-skill.md new file mode 100644 index 0000000000..7c45c22f4c --- /dev/null +++ b/.skills-data-prompt/fontra-panel-custom-elements-skill.md @@ -0,0 +1,128 @@ +# Fontra Panel Custom Elements Skill + +> **Purpose**: Prevent and fix `TypeError: Illegal constructor` when creating new sidebar panels in Fontra. +> **Applies to**: Any new `Panel` subclass added to `src-js/views-editor/src/panel-*.js`. + +--- + +## The Rule + +**Every class that extends `Panel` (or any `HTMLElement` subclass) MUST be registered with `customElements.define()` before it is instantiated with `new`.** + +Fontra's `Panel` class inherits: + +``` +Panel → SimpleElement → HTMLElement +``` + +`SimpleElement` calls `super()` (i.e. `HTMLElement`'s constructor), which **requires** the class to be registered as a custom element. If you call `new MyPanel()` before `customElements.define("my-panel", MyPanel)`, modern browsers throw: + +``` +Uncaught (in promise) TypeError: Illegal constructor. + SimpleElement html-utils.js:38 + Panel panel.js:41 + MyPanel panel-my-feature.js:23 + initSidebars editor.js:1079 +``` + +--- + +## Required Pattern + +### 1. Register the custom element at module scope + +At the **bottom** of every `panel-*.js` file, add: + +```js +customElements.define("panel-", ); +``` + +**Example** (from `panel-settings.js`): + +```js +export default class SettingsPanel extends Panel { + identifier = "settings"; + inlineSVG = `...`; + // ... +} + +customElements.define("panel-settings", SettingsPanel); +``` + +### 2. Verify against existing panels + +All 10+ existing panels follow this exact pattern: + +| Panel file | Registration line | +|-----------|-------------------| +| `panel-text-entry.js` | `customElements.define("panel-text-entry", TextEntryPanel);` | +| `panel-reference-font.js` | `customElements.define("panel-reference-font", ReferenceFontPanel);` | +| `panel-transformation.js` | `customElements.define("panel-transformation", TransformationPanel);` | +| `panel-selection-info.js` | `customElements.define("panel-selection-info", SelectionInfoPanel);` | +| `panel-glyph-note.js` | `customElements.define("panel-glyph-note", GlyphNotePanel);` | +| `panel-designspace-navigation.js` | `customElements.define("panel-designspace-navigation", DesignspaceNavigationPanel);` | +| `panel-related-glyphs.js` | `customElements.define("panel-related-glyph", RelatedGlyphPanel);` | +| `panel-glyph-search.js` | `customElements.define("panel-glyph-search", GlyphSearchPanel);` | +| `panel-characters-glyphs.js` | `customElements.define("panel-characters-glyphs", CharactersGlyphsPanel);` | +| `panel-pro-advice.js` | `customElements.define("panel-pro-advice", ProAdvicePanel);` | + +**If your new panel does not have `customElements.define()`, the editor will crash on load.** + +--- + +## Quick Checklist for New Panels + +Before testing a new panel in the browser, verify: + +- [ ] Class `extends Panel` (imported from `./panel.js`) +- [ ] `identifier` property is set (used as `data-sidebarName`) +- [ ] `iconPath` or `inlineSVG` property is set (for the tab icon) +- [ ] `customElements.define("panel-", ClassName)` exists at module scope +- [ ] `getContentElement()` returns a DOM element +- [ ] `toggle(on, focus)` method exists (can be empty) +- [ ] Panel is added in `editor.js` via `this.addSidebarPanel(new MyPanel(this), "left" | "right")` + +--- + +## Debugging + +### Symptom: `Illegal constructor` in console + +**Cause**: Missing or incorrect `customElements.define()`. + +**Fix**: +1. Open the panel's `.js` file. +2. Search for `customElements.define`. +3. If missing, add it at the bottom of the file. +4. If present, check that the tag name matches the class name and the identifier. + +### Symptom: Panel tab appears but content is blank + +**Cause**: `getContentElement()` returns `undefined` or throws. + +**Fix**: Add a `try/catch` in `getContentElement()` and log errors. + +### Symptom: `toggle is not a function` + +**Cause**: Class does not extend `Panel` or `Panel`'s prototype is lost. + +**Fix**: Ensure `import Panel from "./panel.js";` and `class MyPanel extends Panel`. + +--- + +## Related Files + +| File | Role | +|------|------| +| `src-js/views-editor/src/panel.js` | Base `Panel` class extending `SimpleElement` | +| `src-js/fontra-core/src/html-utils.js` | `SimpleElement` class extending `HTMLElement` | +| `src-js/views-editor/src/sidebar.js` | Sidebar system that appends panels to the DOM | +| `src-js/views-editor/src/editor.js` | `initSidebars()` where panels are instantiated | + +--- + +## References + +- [MDN: Custom Elements](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements) +- Fontra `panel.js` source: `src-js/views-editor/src/panel.js` +- Fontra `html-utils.js` source: `src-js/fontra-core/src/html-utils.js` diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000000..022f793d6c --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "saoudrizwan.claude-dev" + ] +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 88cc687725..47510e8ec8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,32 @@ # Changelog for Fontra -## 2026-04-?? [version 2026.4.4] +## 2026-05-?? [version 2026.5.0] + +### Improvements + +- [shaping] When the "Apply text shaping and features" option is _off_, don't do any positioning emulation. [Issue 2517](https://github.com/fontra/fontra/issues/2517), [PR 2571](https://github.com/fontra/fontra/pull/2571) +- [shaping debugger] Improved message formatting in feature debugger. Contributed by Khaled Hosny. [PR 2566](https://github.com/fontra/fontra/pull/2566) +- [opentype feature editor] When navigating to a line from an error message or from the shaping debugger, scroll the selected line into the center of the view like most editors do, instead of near the edge. Contributed by Khaled Hosny. [PR 2565](https://github.com/fontra/fontra/pull/2565) + +### Fixes + +- [editor view] Fix inconsistent advance widths for undefined glyphs. [Issue 2572](https://github.com/fontra/fontra/issues/2572), [PR 2575](https://github.com/fontra/fontra/pull/2575) +- [editor view] Fix display glitch with Safari on very large screens. Contributed by Qwerasd. [PR 2567](https://github.com/fontra/fontra/pull/2567) +- [fontra-glyphs] Use the correct encoding when reading .plist files. This fixes read errors with certain .glyphs and .glyphspackage files. [fontra-glyphs Issue 140](https://github.com/fontra/fontra-glyphs/issues/140), [fontra-glyphs PR 141](https://github.com/fontra/fontra-glyphs/pull/141) + +## 2026-04-29 [version 2026.4.4] ### New features - [Windows installer] Add option to add a desktop shortcut. [fontra-pak Issue 239](https://github.com/fontra/fontra-pak/issues/239), [fontra-pak PR 240](https://github.com/fontra/fontra-pak/pull/240) +### Fixes + +- [fontra-pak] Reinstate export as .rcjk. This was accidentally removed when .rcjk was removed as an option for new fonts. [fontra-pak PR 244](https://github.com/fontra/fontra-pak/pull/244) +- [rcjk] Fix .rcjk export by ignoring empty conditional substitutions. [PR 2557](https://github.com/fontra/fontra/pull/2557) +- [conditional substitutions] Fix axis (`avar`) mapping logic for conditional substitutions. Previously Fontra could substitute glyphs at not quite the correct locations, if an axis had an `avar` mapping. [Issue 2556](https://github.com/fontra/fontra/issues/2556), [PR 2558](https://github.com/fontra/fontra/pull/2558) +- [conditional substitutions] Fix previewing behavior when a rule has multiple condition sets. [build-shaper-font Issue 30](https://github.com/fontra/build-shaper-font/issues/30), [build-shaper-font PR 31](https://github.com/fontra/build-shaper-font/pull/31) + ## 2026-04-15 [version 2026.4.3] ### New features diff --git a/fontra-pak b/fontra-pak index c8b2312113..dfa7325141 160000 --- a/fontra-pak +++ b/fontra-pak @@ -1 +1 @@ -Subproject commit c8b231211392a031185e2df588aa9ce7ea52c409 +Subproject commit dfa7325141049f74299f1339b27c4088e862d859 diff --git a/package-lock.json b/package-lock.json index f385bf6166..d89a3c2ae0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "src-js/views-fontoverview" ], "dependencies": { - "@babel/preset-env": "^7.29.2", + "@babel/preset-env": "^7.29.3", "@babel/preset-typescript": "^7.28.5", "@codemirror/autocomplete": "^6.20.1", "@codemirror/highlight": "^0.19.8", @@ -23,6 +23,7 @@ "@codemirror/language": "^6.12.3", "@codemirror/legacy-modes": "^6.5.2", "@lezer/highlight": "^1.2.3", + "@phosphor-icons/core": "^2.1.1", "babel-loader": "^10.1.1", "codemirror": "^6.0.2", "dompurify": "^3.3.3" @@ -31,12 +32,12 @@ "copy-webpack-plugin": "^14.0.0", "css-loader": "^7.1.4", "html-bundler-webpack-plugin": "^4.23.0", - "npm": "^11.12.1", + "npm": "^11.13.0", "prettier-plugin-organize-imports": "^4.3.0", "prettier-plugin-sort-json": "^4.2.0", - "ts-loader": "^9.5.4", - "typescript": "^6.0.2", - "webpack": "^5.105.4", + "ts-loader": "^9.5.7", + "typescript": "^6.0.3", + "webpack": "^5.106.2", "webpack-cli": "^7.0.2" } }, @@ -66,9 +67,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz", + "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -443,6 +444,22 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.3.tgz", + "integrity": "sha512-SRS46DFR4HqzUzCVgi90/xMoL+zeBDBvWdKYXSEzh79kXswNFEglUpMKxR04//dPqwYXWUBJ3mpUd933ru9Kmg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", @@ -1385,18 +1402,19 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.2.tgz", - "integrity": "sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==", + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.3.tgz", + "integrity": "sha512-ySZypNLAIH1ClygLDQzVMoGQRViATnkHkYYV6TcNDz+8+jwZCdsguGvsb3EY5d9wyWyhmF1iSuFM0Yh5XPnqSA==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.29.0", + "@babel/compat-data": "^7.29.3", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", @@ -1941,6 +1959,12 @@ "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==" }, + "node_modules/@phosphor-icons/core": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@phosphor-icons/core/-/core-2.1.1.tgz", + "integrity": "sha512-v4ARvrip4qBCImOE5rmPUylOEK4iiED9ZyKjcvzuezqMaiRASCHKcRIuvvxL/twvLpkfnEODCOJp5dM4eZilxQ==", + "license": "MIT" + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "dev": true, @@ -2403,9 +2427,9 @@ "license": "MIT" }, "node_modules/build-shaper-font": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/build-shaper-font/-/build-shaper-font-0.1.7.tgz", - "integrity": "sha512-YNEs7KisQgX1MBgJIVxrJ/llbYisuApqO8G5BjQB/sG1DRtOwkyiRohTxYW2KGdXjd1ukNxshRPJs0n6EFKN5A==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/build-shaper-font/-/build-shaper-font-0.1.8.tgz", + "integrity": "sha512-w+RmFwOjwAwmB55PoaupDzCtLWeeQranw/13StbFYH6UACzLaszjZXXK9/JxKjaCx9Ft3yd7Vd4kaaN1/K+2WA==", "license": "Apache-2.0" }, "node_modules/camel-case": { @@ -3102,9 +3126,9 @@ "license": "ISC" }, "node_modules/harfbuzzjs": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/harfbuzzjs/-/harfbuzzjs-0.10.3.tgz", - "integrity": "sha512-GJnLUrgLMadlMYrBGEXwYEimObbysy3prWT4HyPpFQERvgTU/OZ+ReUlEPOum6w4RBtFXzXiCCmECOr4sz3qwQ==", + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/harfbuzzjs/-/harfbuzzjs-1.0.0-beta.1.tgz", + "integrity": "sha512-a7NY74Lu9Cvt4Vt+lLimQ9k5k1blO8rs0DFNPyaYNUZX1/ZVkkWx5eaXkUJ/Uo/Z/y92vN6uoZ6ZvXIYd4aiRg==", "license": "MIT" }, "node_modules/has-flag": { @@ -3484,11 +3508,6 @@ "node": ">=6" } }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "devOptional": true, - "license": "MIT" - }, "node_modules/json-schema-traverse": { "version": "1.0.0", "devOptional": true, @@ -3515,9 +3534,9 @@ } }, "node_modules/lib-font": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lib-font/-/lib-font-3.0.0.tgz", - "integrity": "sha512-+RNcDvMFDCVUqiH6PFAEvdfqxrnMKb+qkcBVDvdrNHD0hfLvFzMUSGApgdvBjVqggnrvUifCMtVpiph82inxYg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lib-font/-/lib-font-3.0.1.tgz", + "integrity": "sha512-X9+pIQPPAfr/r97abYTraSaHJOg8n//0JCebB3/pt+da5JIgK2yuZD3gOlPF+cRYXN0gcU0wGOlALXgR3Bgayw==", "license": "LICENSE.md" }, "node_modules/loader-runner": { @@ -3614,32 +3633,23 @@ } }, "node_modules/mime-db": { - "version": "1.52.0", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "devOptional": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -3698,7 +3708,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.8", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -3743,9 +3755,9 @@ } }, "node_modules/npm": { - "version": "11.12.1", - "resolved": "https://registry.npmjs.org/npm/-/npm-11.12.1.tgz", - "integrity": "sha512-zcoUuF1kezGSAo0CqtvoLXX3mkRqzuqYdL6Y5tdo8g69NVV3CkjQ6ZBhBgB4d7vGkPcV6TcvLi3GRKPDFX+xTA==", + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-11.13.0.tgz", + "integrity": "sha512-cRmhaghDWA1lFgl3Ug4/VxDJdPBK/U+tNtnrl9kXunFqhWw1x4xL5txkNn7qzPuVfvXOmXyjHpMwsuk2uisbkg==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -3824,7 +3836,7 @@ ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^9.4.2", + "@npmcli/arborist": "^9.4.3", "@npmcli/config": "^10.8.1", "@npmcli/fs": "^5.0.0", "@npmcli/map-workspaces": "^5.0.3", @@ -3846,24 +3858,24 @@ "hosted-git-info": "^9.0.2", "ini": "^6.0.0", "init-package-json": "^8.2.5", - "is-cidr": "^6.0.3", + "is-cidr": "^6.0.4", "json-parse-even-better-errors": "^5.0.0", "libnpmaccess": "^10.0.3", - "libnpmdiff": "^8.1.5", - "libnpmexec": "^10.2.5", - "libnpmfund": "^7.0.19", + "libnpmdiff": "^8.1.6", + "libnpmexec": "^10.2.6", + "libnpmfund": "^7.0.20", "libnpmorg": "^8.0.1", - "libnpmpack": "^9.1.5", + "libnpmpack": "^9.1.6", "libnpmpublish": "^11.1.3", "libnpmsearch": "^9.0.1", "libnpmteam": "^8.0.2", "libnpmversion": "^8.0.3", "make-fetch-happen": "^15.0.5", - "minimatch": "^10.2.4", + "minimatch": "^10.2.5", "minipass": "^7.1.3", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^12.2.0", + "node-gyp": "^12.3.0", "nopt": "^9.0.0", "npm-audit-report": "^7.0.0", "npm-install-checks": "^8.0.0", @@ -3882,7 +3894,7 @@ "spdx-expression-parse": "^4.0.0", "ssri": "^13.0.1", "supports-color": "^10.2.2", - "tar": "^7.5.11", + "tar": "^7.5.13", "text-table": "~0.2.0", "tiny-relative-date": "^2.0.2", "treeverse": "^3.0.0", @@ -3941,7 +3953,7 @@ } }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "9.4.2", + "version": "9.4.3", "dev": true, "inBundle": true, "license": "ISC", @@ -4192,7 +4204,7 @@ } }, "node_modules/npm/node_modules/@sigstore/protobuf-specs": { - "version": "0.5.0", + "version": "0.5.1", "dev": true, "inBundle": true, "license": "Apache-2.0", @@ -4334,7 +4346,7 @@ } }, "node_modules/npm/node_modules/brace-expansion": { - "version": "5.0.4", + "version": "5.0.5", "dev": true, "inBundle": true, "license": "MIT", @@ -4403,7 +4415,7 @@ } }, "node_modules/npm/node_modules/cidr-regex": { - "version": "5.0.3", + "version": "5.0.4", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -4459,7 +4471,7 @@ } }, "node_modules/npm/node_modules/diff": { - "version": "8.0.3", + "version": "8.0.4", "dev": true, "inBundle": true, "license": "BSD-3-Clause", @@ -4635,12 +4647,12 @@ } }, "node_modules/npm/node_modules/is-cidr": { - "version": "6.0.3", + "version": "6.0.4", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "cidr-regex": "^5.0.1" + "cidr-regex": "^5.0.4" }, "engines": { "node": ">=20" @@ -4708,12 +4720,12 @@ } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "8.1.5", + "version": "8.1.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.4.2", + "@npmcli/arborist": "^9.4.3", "@npmcli/installed-package-contents": "^4.0.0", "binary-extensions": "^3.0.0", "diff": "^8.0.2", @@ -4727,13 +4739,13 @@ } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "10.2.5", + "version": "10.2.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@gar/promise-retry": "^1.0.0", - "@npmcli/arborist": "^9.4.2", + "@npmcli/arborist": "^9.4.3", "@npmcli/package-json": "^7.0.0", "@npmcli/run-script": "^10.0.0", "ci-info": "^4.0.0", @@ -4750,12 +4762,12 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "7.0.19", + "version": "7.0.20", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.4.2" + "@npmcli/arborist": "^9.4.3" }, "engines": { "node": "^20.17.0 || >=22.9.0" @@ -4775,12 +4787,12 @@ } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "9.1.5", + "version": "9.1.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.4.2", + "@npmcli/arborist": "^9.4.3", "@npmcli/run-script": "^10.0.0", "npm-package-arg": "^13.0.0", "pacote": "^21.0.2" @@ -4850,7 +4862,7 @@ } }, "node_modules/npm/node_modules/lru-cache": { - "version": "11.2.7", + "version": "11.3.5", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", @@ -4882,12 +4894,12 @@ } }, "node_modules/npm/node_modules/minimatch": { - "version": "10.2.4", + "version": "10.2.5", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^5.0.5" }, "engines": { "node": "18 || 20 || >=22" @@ -4935,35 +4947,17 @@ } }, "node_modules/npm/node_modules/minipass-flush": { - "version": "1.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", + "version": "1.0.6", "dev": true, "inBundle": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "yallist": "^4.0.0" + "minipass": "^7.1.3" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/npm/node_modules/minipass-flush/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", "dev": true, @@ -5043,7 +5037,7 @@ } }, "node_modules/npm/node_modules/node-gyp": { - "version": "12.2.0", + "version": "12.3.0", "dev": true, "inBundle": true, "license": "MIT", @@ -5051,12 +5045,12 @@ "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^15.0.0", "nopt": "^9.0.0", "proc-log": "^6.0.0", "semver": "^7.3.5", "tar": "^7.5.4", "tinyglobby": "^0.2.12", + "undici": "^6.25.0", "which": "^6.0.0" }, "bin": { @@ -5503,7 +5497,7 @@ } }, "node_modules/npm/node_modules/tar": { - "version": "7.5.11", + "version": "7.5.13", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", @@ -5531,13 +5525,13 @@ "license": "MIT" }, "node_modules/npm/node_modules/tinyglobby": { - "version": "0.2.15", + "version": "0.2.16", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -5564,7 +5558,7 @@ } }, "node_modules/npm/node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", + "version": "4.0.4", "dev": true, "inBundle": true, "license": "MIT", @@ -5599,6 +5593,15 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/npm/node_modules/undici": { + "version": "6.25.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=18.17" + } + }, "node_modules/npm/node_modules/util-deprecate": { "version": "1.0.2", "dev": true, @@ -5769,7 +5772,9 @@ } }, "node_modules/postcss": { - "version": "8.5.1", + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.12.tgz", + "integrity": "sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==", "dev": true, "funding": [ { @@ -5788,7 +5793,7 @@ "license": "MIT", "peer": true, "dependencies": { - "nanoid": "^3.3.8", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -6373,9 +6378,9 @@ } }, "node_modules/ts-loader": { - "version": "9.5.4", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", - "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", + "version": "9.5.7", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.7.tgz", + "integrity": "sha512-/ZNrKgA3K3PtpMYOC71EeMWIloGw3IYEa5/t1cyz2r5/PyUwTXGzYJvcD3kfUvmhlfpz1rhV8B2O6IVTQ0avsg==", "dev": true, "license": "MIT", "dependencies": { @@ -6433,9 +6438,9 @@ } }, "node_modules/typescript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz", - "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -6549,9 +6554,9 @@ } }, "node_modules/webpack": { - "version": "5.105.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", - "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", + "version": "5.106.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.2.tgz", + "integrity": "sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==", "devOptional": true, "license": "MIT", "peer": true, @@ -6572,9 +6577,8 @@ "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.3.1", - "mime-types": "^2.1.27", + "mime-db": "^1.54.0", "neo-async": "^2.6.2", "schema-utils": "^4.3.3", "tapable": "^2.3.0", @@ -6800,10 +6804,10 @@ "dependencies": { "@fontra/core": "file:", "bezier-js": "^6.1.4", - "build-shaper-font": "^0.1.7", + "build-shaper-font": "^0.1.8", "fflate": "^0.8.2", - "harfbuzzjs": "^0.10.3", - "lib-font": "^3.0.0", + "harfbuzzjs": "^1.0.0-beta.1", + "lib-font": "^3.0.1", "tsc": "^2.0.4" }, "devDependencies": { diff --git a/package.json b/package.json index 7c99177ca0..eedb90fbf2 100644 --- a/package.json +++ b/package.json @@ -10,12 +10,12 @@ "copy-webpack-plugin": "^14.0.0", "css-loader": "^7.1.4", "html-bundler-webpack-plugin": "^4.23.0", - "npm": "^11.12.1", + "npm": "^11.13.0", "prettier-plugin-organize-imports": "^4.3.0", "prettier-plugin-sort-json": "^4.2.0", - "ts-loader": "^9.5.4", - "typescript": "^6.0.2", - "webpack": "^5.105.4", + "ts-loader": "^9.5.7", + "typescript": "^6.0.3", + "webpack": "^5.106.2", "webpack-cli": "^7.0.2" }, "workspaces": [ @@ -28,7 +28,7 @@ "src-js/views-fontoverview" ], "dependencies": { - "@babel/preset-env": "^7.29.2", + "@babel/preset-env": "^7.29.3", "@babel/preset-typescript": "^7.28.5", "@codemirror/autocomplete": "^6.20.1", "@codemirror/highlight": "^0.19.8", @@ -36,6 +36,7 @@ "@codemirror/language": "^6.12.3", "@codemirror/legacy-modes": "^6.5.2", "@lezer/highlight": "^1.2.3", + "@phosphor-icons/core": "^2.1.1", "babel-loader": "^10.1.1", "codemirror": "^6.0.2", "dompurify": "^3.3.3" diff --git a/pyproject.toml b/pyproject.toml index f958e6bd3f..60e353210d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,7 +21,7 @@ dependencies = [ "ufomerge>=1.8.0", "skia-pathops>=0.8.0.post1", "pillow>=11.0.0", - "ufo2ft>=3.7.0", + "ufo2ft>=3.7.2", ] dynamic = ["version"] requires-python = ">=3.10" diff --git a/requirements-dev.txt b/requirements-dev.txt index 7e99981bf7..df6e5f3d94 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,7 +1,7 @@ -glyphsLib==6.13.0 -mypy==1.20.0 -pre-commit==4.5.1 +glyphsLib==6.13.1 +mypy==1.20.2 +pre-commit==4.6.0 pytest==9.0.3 pytest-asyncio==1.3.0 -types-PyYAML==6.0.12.20250915 +types-PyYAML==6.0.12.20260408 unicodedata2==17.0.1 diff --git a/requirements.txt b/requirements.txt index d8b8c92587..13298eaa0a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ cattrs==26.1.0 fonttools[ufo,unicode]==4.62.1 pillow==12.2.0 pyyaml==6.0.3 -ufo2ft==3.7.1 +ufo2ft==3.7.2 ufoLib2==0.18.1 ufomerge==1.9.6 watchfiles==1.1.1 diff --git a/src-js/fontra-core/assets/css/figma-theme.css b/src-js/fontra-core/assets/css/figma-theme.css new file mode 100644 index 0000000000..750f1cada9 --- /dev/null +++ b/src-js/fontra-core/assets/css/figma-theme.css @@ -0,0 +1,184 @@ +/* + * Fontra Figma-Inspired Theme + * High-contrast, modern design system inspired by Figma's UI + * Features: crisp borders, elevated surfaces, vibrant accents + */ + +:root.figma-theme { + /* === Figma Color Palette === */ + --fontra-red-color: #f54859; + --fontra-light-red-color: #ff6b7a; + + /* === Base Colors - Higher Contrast === */ + --foreground-color-light: #1e1e1e; + --foreground-color-dark: #e8e8e8; + + --background-color-light: #ffffff; + --background-color-dark: #2c2c2c; + + /* === UI Elements - Elevated Surfaces === */ + --ui-element-foreground-color-light: #1e1e1e; + --ui-element-foreground-color-dark: #f0f0f0; + + --ui-element-background-color-light: #f5f5f5; + --ui-element-background-color-dark: #383838; + + /* === Text Inputs - Higher Contrast Borders === */ + --text-input-foreground-color-light: #1e1e1e; + --text-input-foreground-color-dark: #f0f0f0; + + --text-input-background-color-light: #ffffff; + --text-input-background-color-dark: #2c2c2c; + + /* === Top Bar - Figma-style dark header === */ + --top-bar-background-color-light: #f0f0f0; + --top-bar-background-color-dark: #1e1e1e; + + /* === Figma Accent Colors === */ + --figma-blue: #0d99ff; + --figma-blue-hover: #007be5; + --figma-purple: #a258de; + --figma-green: #1fa855; + --figma-orange: #ff7c38; + --figma-yellow: #ffbf00; + + /* === Component Tokens === */ + --border-radius-sm: 4px; + --border-radius-md: 6px; + --border-radius-lg: 8px; + + --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.08); + --shadow-md: 0 2px 8px rgba(0, 0, 0, 0.12); + --shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.16); + + --border-color-light: #e0e0e0; + --border-color-dark: #444444; + --border-color: var(--border-color-light, var(--border-color-dark)); +} + +/* === Editor Tool Buttons - Figma Style === */ +:root.figma-theme { + --editor-tool-button-hover-background-color-light: #e8e8e8; + --editor-tool-button-hover-background-color-dark: #404040; + + --editor-tool-button-active-background-color-light: #d8d8d8; + --editor-tool-button-active-background-color-dark: #505050; + + --editor-tool-button-selected-background-color-light: var(--figma-blue); + --editor-tool-button-selected-background-color-dark: var(--figma-blue); + + --editor-mini-console-background-color-light: #f5f5f5; + --editor-mini-console-background-color-dark: #383838; + + --editor-mini-console-foreground-color-light: #1e1e1e; + --editor-mini-console-foreground-color-dark: #f0f0f0; +} + +/* === Override default styles for Figma theme === */ +:root.figma-theme { + --horizontal-rule-color: var(--border-color); +} + +/* Tool buttons with Figma styling */ +:root.figma-theme .tool-button, +:root.figma-theme .subtool-button { + border-radius: var(--border-radius-md); + border: 1px solid transparent; + transition: all 0.15s ease; +} + +:root.figma-theme .tool-button:hover { + border-color: var(--border-color); + box-shadow: var(--shadow-sm); +} + +:root.figma-theme .tool-button.selected { + background-color: var(--figma-blue); + fill: white; + border-color: var(--figma-blue); + box-shadow: var(--shadow-md); +} + +:root.figma-theme .tool-button.selected .icon-tabler { + stroke: white; +} + +:root.figma-theme .tool-icon { + transition: transform 0.15s ease; +} + +:root.figma-theme .tool-icon:hover { + transform: scale(1.15, 1.15); +} + +/* Sidebar and panels */ +:root.figma-theme .sidebar-container { + border-right: 1px solid var(--border-color); +} + +:root.figma-theme .sidebar-tab { + border-radius: var(--border-radius-md); + transition: all 0.12s ease; +} + +:root.figma-theme .sidebar-tab:hover { + background-color: var(--ui-element-background-color); + box-shadow: var(--shadow-sm); +} + +:root.figma-theme .sidebar-tab.selected { + background-color: var(--figma-blue); + fill: white; +} + +:root.figma-theme .sidebar-tab.selected inline-svg { + fill: white; +} + +:root.figma-theme .sidebar-tab.selected .icon-tabler { + stroke: white; +} + +/* Top bar */ +:root.figma-theme .top-bar-container { + box-shadow: var(--shadow-md); + border-bottom: 1px solid var(--border-color); +} + +/* Tools overlay */ +:root.figma-theme .tools-item { + border-radius: var(--border-radius-lg); + box-shadow: var(--shadow-lg); + border: 1px solid var(--border-color); +} + +/* Mini console */ +:root.figma-theme #mini-console { + border-radius: var(--border-radius-sm); + border: 1px solid var(--border-color); + box-shadow: var(--shadow-md); +} + +/* Input styling */ +:root.figma-theme input[type="text"], +:root.figma-theme input[type="number"], +:root.figma-theme input[type="password"] { + border: 1px solid var(--border-color); + border-radius: var(--border-radius-sm); + transition: border-color 0.15s ease, box-shadow 0.15s ease; +} + +:root.figma-theme input[type="text"]:focus, +:root.figma-theme input[type="number"]:focus, +:root.figma-theme input[type="password"]:focus { + border-color: var(--figma-blue); + box-shadow: 0 0 0 2px rgba(13, 153, 255, 0.2); + outline: none; +} + +/* Metrics handles */ +:root.figma-theme { + --metrics-handle-color: rgb(100, 100, 100); + --positive-metrics-handle-color: var(--figma-blue); + --negative-metrics-handle-color: var(--fontra-red-color); +} diff --git a/src-js/fontra-core/assets/data/glyph-data.csv b/src-js/fontra-core/assets/data/glyph-data.csv index d0d10731ef..338860f8ae 100644 --- a/src-js/fontra-core/assets/data/glyph-data.csv +++ b/src-js/fontra-core/assets/data/glyph-data.csv @@ -30,19 +30,19 @@ unicode;name;category;subCategory;case;direction;script;description;production 000D;CR;Separator;;;;;CARRIAGE RETURN; 007F;DEL;Separator;;;;;DELETE; 0020;space;Separator;Space;;;;SPACE; -0021;exclam;Punctuation;;upper;;;EXCLAMATION MARK; -0022;quotedbl;Punctuation;Quote;;;;QUOTATION MARK; +0021;exclam;Punctuation;;upper;BIDI;;EXCLAMATION MARK; +0022;quotedbl;Punctuation;Quote;;BIDI;;QUOTATION MARK; 0023;numbersign;Punctuation;;;;;NUMBER SIGN; 0024;dollar;Symbol;Currency;;;;DOLLAR SIGN; 0025;percent;Symbol;Math;;;;PERCENT SIGN; 0026;ampersand;Symbol;;;;;AMPERSAND; -0027;quotesingle;Punctuation;Quote;;;;APOSTROPHE; -0028;parenleft;Punctuation;Parenthesis;;;;LEFT PARENTHESIS; -0029;parenright;Punctuation;Parenthesis;;;;RIGHT PARENTHESIS; -002A;asterisk;Punctuation;;;;;ASTERISK; +0027;quotesingle;Punctuation;Quote;;BIDI;;APOSTROPHE; +0028;parenleft;Punctuation;Parenthesis;;BIDI;;LEFT PARENTHESIS; +0029;parenright;Punctuation;Parenthesis;;BIDI;;RIGHT PARENTHESIS; +002A;asterisk;Punctuation;;;BIDI;;ASTERISK; 002B;plus;Symbol;Math;;;;PLUS SIGN; -002C;comma;Punctuation;;;;;COMMA; -002D;hyphen;Punctuation;Dash;;;;HYPHEN-MINUS; +002C;comma;Punctuation;;;BIDI;;COMMA; +002D;hyphen;Punctuation;Dash;;BIDI;;HYPHEN-MINUS; 002E;period;Punctuation;;;;;FULL STOP; 002F;slash;Punctuation;;;;;SOLIDUS; 0030;zero;Number;Decimal Digit;;;;DIGIT ZERO; @@ -56,11 +56,11 @@ unicode;name;category;subCategory;case;direction;script;description;production 0038;eight;Number;Decimal Digit;;;;DIGIT EIGHT; 0039;nine;Number;Decimal Digit;;;;DIGIT NINE; 003A;colon;Punctuation;;;;;COLON; -003B;semicolon;Punctuation;;;;;SEMICOLON; +003B;semicolon;Punctuation;;;BIDI;;SEMICOLON; 003C;less;Symbol;Math;lower;;;LESS-THAN SIGN; 003D;equal;Symbol;Math;;;;EQUALS SIGN; 003E;greater;Symbol;Math;lower;;;GREATER-THAN SIGN; -003F;question;Punctuation;;upper;;;QUESTION MARK; +003F;question;Punctuation;;upper;BIDI;;QUESTION MARK; 0040;at;Symbol;;;;;COMMERCIAL AT; 0041;A;Letter;;upper;;latin;LATIN CAPITAL LETTER A; 0042;B;Letter;;upper;;latin;LATIN CAPITAL LETTER B; @@ -88,10 +88,10 @@ unicode;name;category;subCategory;case;direction;script;description;production 0058;X;Letter;;upper;;latin;LATIN CAPITAL LETTER X; 0059;Y;Letter;;upper;;latin;LATIN CAPITAL LETTER Y; 005A;Z;Letter;;upper;;latin;LATIN CAPITAL LETTER Z; -005B;bracketleft;Punctuation;Parenthesis;;;;LEFT SQUARE BRACKET; -005D;bracketright;Punctuation;Parenthesis;;;;RIGHT SQUARE BRACKET; -005C;backslash;Punctuation;;;;;REVERSE SOLIDUS; -005F;underscore;Punctuation;Dash;;;;LOW LINE; +005B;bracketleft;Punctuation;Parenthesis;;BIDI;;LEFT SQUARE BRACKET; +005D;bracketright;Punctuation;Parenthesis;;BIDI;;RIGHT SQUARE BRACKET; +005C;backslash;Punctuation;;;BIDI;;REVERSE SOLIDUS; +005F;underscore;Punctuation;Dash;;BIDI;;LOW LINE; 0061;a;Letter;;lower;;latin;LATIN SMALL LETTER A; 0062;b;Letter;;lower;;latin;LATIN SMALL LETTER B; 0063;c;Letter;;lower;;latin;LATIN SMALL LETTER C; @@ -118,12 +118,12 @@ unicode;name;category;subCategory;case;direction;script;description;production 0078;x;Letter;;lower;;latin;LATIN SMALL LETTER X; 0079;y;Letter;;lower;;latin;LATIN SMALL LETTER Y; 007A;z;Letter;;lower;;latin;LATIN SMALL LETTER Z; -007B;braceleft;Punctuation;Parenthesis;;;;LEFT CURLY BRACKET; -007D;braceright;Punctuation;Parenthesis;;;;RIGHT CURLY BRACKET; +007B;braceleft;Punctuation;Parenthesis;;BIDI;;LEFT CURLY BRACKET; +007D;braceright;Punctuation;Parenthesis;;BIDI;;RIGHT CURLY BRACKET; 007C;bar;Symbol;;;;;VERTICAL LINE; 007E;asciitilde;Symbol;Math;;;;TILDE; 00A0;nbspace;Separator;Space;;;;NO-BREAK SPACE;uni00A0 -00A1;exclamdown;Punctuation;;lower;;;INVERTED EXCLAMATION MARK; +00A1;exclamdown;Punctuation;;lower;BIDI;;INVERTED EXCLAMATION MARK; 00A2;cent;Symbol;Currency;;;;CENT SIGN; 00A3;sterling;Symbol;Currency;;;;POUND SIGN; 00A4;currency;Symbol;Currency;;;;CURRENCY SIGN; @@ -1919,7 +1919,7 @@ A66F;vzmetcomb-cy;Mark;Nonspacing;;;cyrillic;COMBINING CYRILLIC VZMET;uniA66F A670;tenmillionscomb-cy;Mark;Enclosing;;;cyrillic;COMBINING CYRILLIC TEN MILLIONS SIGN;uniA670 A671;hundredmillionscomb-cy;Mark;Enclosing;;;cyrillic;COMBINING CYRILLIC HUNDRED MILLIONS SIGN;uniA671 A672;thousandmillionscomb-cy;Mark;Enclosing;;;cyrillic;COMBINING CYRILLIC THOUSAND MILLIONS SIGN;uniA672 -A673;asterisk-cy;Punctuation;;;;cyrillic;SLAVONIC ASTERISK;uniA673 +A673;asterisk-cy;Punctuation;;;BIDI;cyrillic;SLAVONIC ASTERISK;uniA673 A674;ieukrainiancomb-cy;Mark;Nonspacing;;;cyrillic;COMBINING CYRILLIC LETTER UKRAINIAN IE;uniA674 A675;icomb-cy;Mark;Nonspacing;;;cyrillic;COMBINING CYRILLIC LETTER I;uniA675 A676;yicomb-cy;Mark;Nonspacing;;;cyrillic;COMBINING CYRILLIC LETTER YI;uniA676 @@ -1930,8 +1930,8 @@ A67A;softsigncomb-cy;Mark;Nonspacing;;;cyrillic;COMBINING CYRILLIC LETTER SOFT S A67B;omegacomb-cy;Mark;Nonspacing;;;cyrillic;COMBINING CYRILLIC LETTER OMEGA;uniA67B A67C;kavykacomb-cy;Mark;Nonspacing;;;cyrillic;COMBINING CYRILLIC KAVYKA;uniA67C A67D;payerokcomb-cy;Mark;Nonspacing;;;cyrillic;COMBINING CYRILLIC PAYEROK;uniA67D -A67E;kavyka-cy;Punctuation;;;;cyrillic;CYRILLIC KAVYKA;uniA67E -A67F;payerok-cy;Letter;Modifier;;;cyrillic;CYRILLIC PAYEROK;uniA67F +A67E;kavyka-cy;Punctuation;;;BIDI;cyrillic;CYRILLIC KAVYKA;uniA67E +A67F;payerok-cy;Letter;Modifier;;BIDI;cyrillic;CYRILLIC PAYEROK;uniA67F A680;Dwe-cy;Letter;;upper;;cyrillic;CYRILLIC CAPITAL LETTER DWE;uniA680 A681;dwe-cy;Letter;;lower;;cyrillic;CYRILLIC SMALL LETTER DWE;uniA681 A682;Dzwe-cy;Letter;;upper;;cyrillic;CYRILLIC CAPITAL LETTER DZWE;uniA682 @@ -2224,86 +2224,86 @@ FB17;men_xeh-arm;Letter;Ligature;lower;;armenian;ARMENIAN SMALL LIGATURE MEN XEH 10FD;aen-georgian;Letter;;lower;;georgian;GEORGIAN LETTER AEN;uni10FD 10FE;hardSign-georgian;Letter;;lower;;georgian;GEORGIAN LETTER HARD SIGN;uni10FE 10FF;labial-georgian;Letter;;lower;;georgian;GEORGIAN LETTER LABIAL SIGN;uni10FF -10A0;An-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER AN;uni10A0 -10A1;Ban-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER BAN;uni10A1 -10A2;Gan-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER GAN;uni10A2 -10A3;Don-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER DON;uni10A3 -10A4;En-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER EN;uni10A4 -10A5;Vin-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER VIN;uni10A5 -10A6;Zen-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER ZEN;uni10A6 -10A7;Tan-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER TAN;uni10A7 -10A8;In-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER IN;uni10A8 -10A9;Kan-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER KAN;uni10A9 -10AA;Las-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER LAS;uni10AA -10AB;Man-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER MAN;uni10AB -10AC;Nar-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER NAR;uni10AC -10AD;On-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER ON;uni10AD -10AE;Par-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER PAR;uni10AE -10AF;Zhar-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER ZHAR;uni10AF -10B0;Rae-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER RAE;uni10B0 -10B1;San-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER SAN;uni10B1 -10B2;Tar-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER TAR;uni10B2 -10B3;Un-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER UN;uni10B3 -10B4;Phar-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER PHAR;uni10B4 -10B5;Khar-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER KHAR;uni10B5 -10B6;Ghan-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER GHAN;uni10B6 -10B7;Qar-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER QAR;uni10B7 -10B8;Shin-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER SHIN;uni10B8 -10B9;Chin-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER CHIN;uni10B9 -10BA;Can-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER CAN;uni10BA -10BB;Jil-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER JIL;uni10BB -10BC;Cil-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER CIL;uni10BC -10BD;Char-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER CHAR;uni10BD -10BE;Xan-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER XAN;uni10BE -10BF;Jhan-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER JHAN;uni10BF -10C0;Hae-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER HAE;uni10C0 -10C1;He-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER HE;uni10C1 -10C2;Hie-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER HIE;uni10C2 -10C3;We-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER WE;uni10C3 -10C4;Har-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER HAR;uni10C4 -10C5;Hoe-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER HOE;uni10C5 -10C7;Yn-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER YN;uni10C7 -10CD;Aen-oldgeorgian;Letter;;upper;;georgian;Old GEORGIAN CAPITAL LETTER AEN;uni10CD -2D00;an-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER AN;uni2D00 -2D01;ban-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER BAN;uni2D01 -2D02;gan-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER GAN;uni2D02 -2D03;don-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER DON;uni2D03 -2D04;en-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER EN;uni2D04 -2D05;vin-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER VIN;uni2D05 -2D06;zen-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER ZEN;uni2D06 -2D07;tan-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER TAN;uni2D07 -2D08;in-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER IN;uni2D08 -2D09;kan-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER KAN;uni2D09 -2D0A;las-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER LAS;uni2D0A -2D0B;man-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER MAN;uni2D0B -2D0C;nar-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER NAR;uni2D0C -2D0D;on-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER ON;uni2D0D -2D0E;par-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER PAR;uni2D0E -2D0F;zhar-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER ZHAR;uni2D0F -2D10;rae-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER RAE;uni2D10 -2D11;san-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER SAN;uni2D11 -2D12;tar-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER TAR;uni2D12 -2D13;un-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER UN;uni2D13 -2D14;phar-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER PHAR;uni2D14 -2D15;khar-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER KHAR;uni2D15 -2D16;ghan-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER GHAN;uni2D16 -2D17;qar-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER QAR;uni2D17 -2D18;shin-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER SHIN;uni2D18 -2D19;chin-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER CHIN;uni2D19 -2D1A;can-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER CAN;uni2D1A -2D1B;jil-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER JIL;uni2D1B -2D1C;cil-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER CIL;uni2D1C -2D1D;char-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER CHAR;uni2D1D -2D1E;xan-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER XAN;uni2D1E -2D1F;jhan-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER JHAN;uni2D1F -2D20;hae-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER HAE;uni2D20 -2D21;he-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER HE;uni2D21 -2D22;hie-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER HIE;uni2D22 -2D23;we-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER WE;uni2D23 -2D24;har-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER HAR;uni2D24 -2D25;hoe-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER HOE;uni2D25 -2D27;yn-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER YN;uni2D27 -2D2D;aen-oldgeorgian;Letter;;lower;;georgian;Old GEORGIAN LETTER AEN;uni2D2D +10A0;An-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER AN;uni10A0 +10A1;Ban-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER BAN;uni10A1 +10A2;Gan-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER GAN;uni10A2 +10A3;Don-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER DON;uni10A3 +10A4;En-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER EN;uni10A4 +10A5;Vin-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER VIN;uni10A5 +10A6;Zen-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER ZEN;uni10A6 +10A7;Tan-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER TAN;uni10A7 +10A8;In-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER IN;uni10A8 +10A9;Kan-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER KAN;uni10A9 +10AA;Las-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER LAS;uni10AA +10AB;Man-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER MAN;uni10AB +10AC;Nar-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER NAR;uni10AC +10AD;On-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER ON;uni10AD +10AE;Par-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER PAR;uni10AE +10AF;Zhar-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER ZHAR;uni10AF +10B0;Rae-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER RAE;uni10B0 +10B1;San-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER SAN;uni10B1 +10B2;Tar-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER TAR;uni10B2 +10B3;Un-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER UN;uni10B3 +10B4;Phar-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER PHAR;uni10B4 +10B5;Khar-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER KHAR;uni10B5 +10B6;Ghan-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER GHAN;uni10B6 +10B7;Qar-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER QAR;uni10B7 +10B8;Shin-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER SHIN;uni10B8 +10B9;Chin-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER CHIN;uni10B9 +10BA;Can-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER CAN;uni10BA +10BB;Jil-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER JIL;uni10BB +10BC;Cil-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER CIL;uni10BC +10BD;Char-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER CHAR;uni10BD +10BE;Xan-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER XAN;uni10BE +10BF;Jhan-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER JHAN;uni10BF +10C0;Hae-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER HAE;uni10C0 +10C1;He-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER HE;uni10C1 +10C2;Hie-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER HIE;uni10C2 +10C3;We-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER WE;uni10C3 +10C4;Har-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER HAR;uni10C4 +10C5;Hoe-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER HOE;uni10C5 +10C7;Yn-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER YN;uni10C7 +10CD;Aen-oldgeorgian;Letter;;upper;;old georgian;Old GEORGIAN CAPITAL LETTER AEN;uni10CD +2D00;an-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER AN;uni2D00 +2D01;ban-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER BAN;uni2D01 +2D02;gan-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER GAN;uni2D02 +2D03;don-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER DON;uni2D03 +2D04;en-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER EN;uni2D04 +2D05;vin-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER VIN;uni2D05 +2D06;zen-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER ZEN;uni2D06 +2D07;tan-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER TAN;uni2D07 +2D08;in-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER IN;uni2D08 +2D09;kan-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER KAN;uni2D09 +2D0A;las-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER LAS;uni2D0A +2D0B;man-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER MAN;uni2D0B +2D0C;nar-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER NAR;uni2D0C +2D0D;on-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER ON;uni2D0D +2D0E;par-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER PAR;uni2D0E +2D0F;zhar-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER ZHAR;uni2D0F +2D10;rae-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER RAE;uni2D10 +2D11;san-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER SAN;uni2D11 +2D12;tar-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER TAR;uni2D12 +2D13;un-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER UN;uni2D13 +2D14;phar-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER PHAR;uni2D14 +2D15;khar-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER KHAR;uni2D15 +2D16;ghan-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER GHAN;uni2D16 +2D17;qar-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER QAR;uni2D17 +2D18;shin-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER SHIN;uni2D18 +2D19;chin-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER CHIN;uni2D19 +2D1A;can-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER CAN;uni2D1A +2D1B;jil-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER JIL;uni2D1B +2D1C;cil-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER CIL;uni2D1C +2D1D;char-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER CHAR;uni2D1D +2D1E;xan-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER XAN;uni2D1E +2D1F;jhan-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER JHAN;uni2D1F +2D20;hae-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER HAE;uni2D20 +2D21;he-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER HE;uni2D21 +2D22;hie-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER HIE;uni2D22 +2D23;we-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER WE;uni2D23 +2D24;har-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER HAR;uni2D24 +2D25;hoe-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER HOE;uni2D25 +2D27;yn-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER YN;uni2D27 +2D2D;aen-oldgeorgian;Letter;;lower;;old georgian;Old GEORGIAN LETTER AEN;uni2D2D 10FB;paragraph-georgian;Punctuation;;;;georgian;GEORGIAN PARAGRAPH SEPARATOR;uni10FB 10FC;narMod-georgian;Letter;Modifier;;;georgian;MODIFIER LETTER GEORGIAN NAR;uni10FC 10C80;A-rovas;Letter;;upper;RTL;rovas;OLD HUNGARIAN CAPITAL LETTER A;u10C80 @@ -3699,6 +3699,86 @@ AA5F;tripleDanda-cham;Punctuation;;;;cham;CHAM PUNCTUATION TRIPLE DANDA;uniAA5F 11141;danda-chakma;Punctuation;;;;chakma;CHAKMA DANDA;u11141 11142;dandaDouble-chakma;Punctuation;;;;chakma;CHAKMA DOUBLE DANDA;u11142 11143;question-chakma;Punctuation;;;;chakma;CHAKMA QUESTION MARK;u11143 +11380;a-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER A;u11380 +11381;aa-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER AA;u11381 +11382;i-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER I;u11382 +11383;ii-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER II;u11383 +11384;u-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER U;u11384 +11385;uu-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER UU;u11385 +11386;rVocalic-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER VOCALIC R;u11386 +11387;rrVocalic-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER VOCALIC RR;u11387 +11388;lVocalic-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER VOCALIC L;u11388 +11389;llVocalic-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER VOCALIC LL;u11389 +1138B;ee-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER EE;u1138B +1138E;ai-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER AI;u1138E +11390;oo-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER OO;u11390 +11391;au-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER AU;u11391 +11392;ka-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER KA;u11392 +11393;kha-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER KHA;u11393 +11394;ga-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER GA;u11394 +11395;gha-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER GHA;u11395 +11396;nga-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER NGA;u11396 +11397;ca-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER CA;u11397 +11398;cha-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER CHA;u11398 +11399;ja-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER JA;u11399 +1139A;jha-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER JHA;u1139A +1139B;nya-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER NYA;u1139B +1139C;tta-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER TTA;u1139C +1139D;ttha-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER TTHA;u1139D +1139E;dda-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER DDA;u1139E +1139F;ddha-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER DDHA;u1139F +113A0;nna-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER NNA;u113A0 +113A1;ta-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER TA;u113A1 +113A2;tha-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER THA;u113A2 +113A3;da-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER DA;u113A3 +113A4;dha-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER DHA;u113A4 +113A5;na-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER NA;u113A5 +113A6;pa-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER PA;u113A6 +113A7;pha-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER PHA;u113A7 +113A8;ba-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER BA;u113A8 +113A9;bha-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER BHA;u113A9 +113AA;ma-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER MA;u113AA +113AB;ya-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER YA;u113AB +113AC;ra-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER RA;u113AC +113AD;la-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER LA;u113AD +113AE;va-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER VA;u113AE +113AF;sha-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER SHA;u113AF +113B0;ssa-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER SSA;u113B0 +113B1;sa-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER SA;u113B1 +113B2;ha-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER HA;u113B2 +113B3;lla-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER LLA;u113B3 +113B4;rra-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER RRA;u113B4 +113B5;llla-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI LETTER LLLA;u113B5 +113B7;avagraha-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI SIGN AVAGRAHA;u113B7 +113B8;aaMatra-tutg;Mark;Spacing;;;tulu tigalari;TULU-TIGALARI VOWEL SIGN AA;u113B8 +113B9;iMatra-tutg;Mark;Spacing;;;tulu tigalari;TULU-TIGALARI VOWEL SIGN I;u113B9 +113BA;iiMatra-tutg;Mark;Spacing;;;tulu tigalari;TULU-TIGALARI VOWEL SIGN II;u113BA +113BB;uMatra-tutg;Mark;Nonspacing;;;tulu tigalari;TULU-TIGALARI VOWEL SIGN U;u113BB +113BC;uuMatra-tutg;Mark;Nonspacing;;;tulu tigalari;TULU-TIGALARI VOWEL SIGN UU;u113BC +113BD;rVocalicMatra-tutg;Mark;Nonspacing;;;tulu tigalari;TULU-TIGALARI VOWEL SIGN VOCALIC R;u113BD +113BE;rrVocalicMatra-tutg;Mark;Nonspacing;;;tulu tigalari;TULU-TIGALARI VOWEL SIGN VOCALIC RR;u113BE +113BF;lVocalicMatra-tutg;Mark;Nonspacing;;;tulu tigalari;TULU-TIGALARI VOWEL SIGN VOCALIC L;u113BF +113C0;llVocalicMatra-tutg;Mark;Nonspacing;;;tulu tigalari;TULU-TIGALARI VOWEL SIGN VOCALIC LL;u113C0 +113C2;eeMatra-tutg;Mark;Spacing;;;tulu tigalari;TULU-TIGALARI VOWEL SIGN EE;u113C2 +113C5;aiMatra-tutg;Mark;Spacing;;;tulu tigalari;TULU-TIGALARI VOWEL SIGN AI;u113C5 +113C7;ooMatra-tutg;Mark;Spacing;;;tulu tigalari;TULU-TIGALARI VOWEL SIGN OO;u113C7 +113C8;auMatra-tutg;Mark;Spacing;;;tulu tigalari;TULU-TIGALARI VOWEL SIGN AU;u113C8 +113C9;auLength-tutg;Mark;Spacing;;;tulu tigalari;TULU-TIGALARI AU LENGTH MARK;u113C9 +113CA;candraAnunasika-tutg;Mark;Spacing;;;tulu tigalari;TULU-TIGALARI SIGN CANDRA ANUNASIKA;u113CA +113CC;anusvara-tutg;Mark;Spacing;;;tulu tigalari;TULU-TIGALARI SIGN ANUSVARA;u113CC +113CD;visarga-tutg;Mark;Spacing;;;tulu tigalari;TULU-TIGALARI SIGN VISARGA;u113CD +113CE;virama-tutg;Mark;Nonspacing;;;tulu tigalari;TULU-TIGALARI SIGN VIRAMA;u113CE +113CF;loopedVirama-tutg;Mark;Spacing;;;tulu tigalari;TULU-TIGALARI SIGN LOOPED VIRAMA;u113CF +113D0;conjoiner-tutg;Mark;Nonspacing;;;tulu tigalari;TULU-TIGALARI CONJOINER;u113D0 +113D1;repha-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI REPHA;u113D1 +113D2;gemination-tutg;Mark;Nonspacing;;;tulu tigalari;TULU-TIGALARI GEMINATION MARK;u113D2 +113D3;pluta-tutg;Letter;;;;tulu tigalari;TULU-TIGALARI SIGN PLUTA;u113D3 +113D4;danda-tutg;Punctuation;;;;tulu tigalari;TULU-TIGALARI DANDA;u113D4 +113D5;dbldanda-tutg;Punctuation;;;;tulu tigalari;TULU-TIGALARI DOUBLE DANDA;u113D5 +113D7;omPushpika-tutg;Punctuation;;;;tulu tigalari;TULU-TIGALARI SIGN OM PUSHPIKA;u113D7 +113D8;shriiPushpika-tutg;Punctuation;;;;tulu tigalari;TULU-TIGALARI SIGN SHRII PUSHPIKA;u113D8 +113E1;svarita-tutg;Mark;Nonspacing;;;tulu tigalari;TULU-TIGALARI VEDIC TONE SVARITA;u113E1 +113E2;anudatta-tutg;Mark;Nonspacing;;;tulu tigalari;TULU-TIGALARI VEDIC TONE ANUDATTA;u113E2 11900;a-divesakuru;Letter;;;;divesakuru;DIVES AKURU LETTER A;u11900 11901;aa-divesakuru;Letter;;;;divesakuru;DIVES AKURU LETTER AA;u11901 11902;i-divesakuru;Letter;;;;divesakuru;DIVES AKURU LETTER I;u11902 @@ -5794,7 +5874,7 @@ FBC1;tahbelowSymbol-ar;Punctuation;;;RTL;arabic;ARABIC SYMBOL SMALL TAH BELOW;un 06E4;maddalong-ar;Mark;Nonspacing;;RTL;arabic;ARABIC SMALL HIGH MADDA;uni06E4 06E7;yehabove-ar;Mark;Nonspacing;;RTL;arabic;ARABIC SMALL HIGH YEH;uni06E7 06E8;noonabove-ar;Mark;Nonspacing;;RTL;arabic;ARABIC SMALL HIGH NOON;uni06E8 -06E9;sajdah-ar;Symbol;;;;arabic;ARABIC PLACE OF SAJDAH;uni06E9 +06E9;sajdah-ar;Symbol;;;BIDI;arabic;ARABIC PLACE OF SAJDAH;uni06E9 06EA;rhombusStopbelow-ar;Mark;Nonspacing;;RTL;arabic;ARABIC EMPTY CENTRE LOW STOP;uni06EA 06EB;rhombusStopabove-ar;Mark;Nonspacing;;RTL;arabic;ARABIC EMPTY CENTRE HIGH STOP;uni06EB 06EC;dotStopabove-ar;Mark;Nonspacing;;RTL;arabic;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;uni06EC @@ -5830,8 +5910,8 @@ FBC1;tahbelowSymbol-ar;Punctuation;;;RTL;arabic;ARABIC SYMBOL SMALL TAH BELOW;un 066B;decimalseparator-ar;Number;;;;arabic;ARABIC DECIMAL SEPARATOR;uni066B 066C;thousandseparator-ar;Number;;;;arabic;ARABIC THOUSANDS SEPARATOR;uni066C 066D;asterisk-ar;Punctuation;;;RTL;arabic;ARABIC FIVE POINTED STAR;uni066D -FD3E;parenleft-ar;Punctuation;Parenthesis;;;arabic;ORNATE LEFT PARENTHESIS;uniFD3E -FD3F;parenright-ar;Punctuation;Parenthesis;;;arabic;ORNATE RIGHT PARENTHESIS;uniFD3F +FD3E;parenleft-ar;Punctuation;Parenthesis;;BIDI;arabic;ORNATE LEFT PARENTHESIS;uniFD3E +FD3F;parenright-ar;Punctuation;Parenthesis;;BIDI;arabic;ORNATE RIGHT PARENTHESIS;uniFD3F 0601;year-ar;Punctuation;;;RTL;arabic;ARABIC SIGN SANAH;uni0601 0602;footnotemarker-ar;Punctuation;;;RTL;arabic;ARABIC FOOTNOTE MARKER;uni0602 0603;pagenumber-ar;Punctuation;;;RTL;arabic;ARABIC SIGN SAFHA;uni0603 @@ -8592,11 +8672,11 @@ A839;quantity-northindic;Symbol;;;;;NORTH INDIC QUANTITY MARK;uniA839 1099;nine-shan;Number;Decimal Digit;;;myanmar;MYANMAR SHAN DIGIT NINE;uni1099 109A;tone1-khamti;Mark;Spacing Combining;;;myanmar;MYANMAR SIGN KHAMTI TONE-1;uni109A 109B;tone3-khamti;Mark;Spacing Combining;;;myanmar;MYANMAR SIGN KHAMTI TONE-3;uni109B -109C;a-aiton;Mark;Spacing Combining;;;myanmar;MYANMAR VOWEL SIGN AITON A;uni109C -109D;aiMark-aiton;Mark;Nonspacing;;;myanmar;MYANMAR VOWEL SIGN AITON AI;uni109D +109C;aAiton-myanmar;Mark;Spacing Combining;;;myanmar;MYANMAR VOWEL SIGN AITON A;uni109C +109D;aiAitonMark-myanmar;Mark;Nonspacing;;;myanmar;MYANMAR VOWEL SIGN AITON AI;uni109D 109E;oneSymbol-shan;Symbol;;;;myanmar;MYANMAR SYMBOL SHAN ONE;uni109E 109F;exclam-shan;Symbol;;;;myanmar;MYANMAR SYMBOL SHAN EXCLAMATION;uni109F -AA77;exclam-aiton;Symbol;;;;myanmar;MYANMAR SYMBOL AITON EXCLAMATION;uniAA77 +AA77;exclamAiton-myanmar;Symbol;;;;myanmar;MYANMAR SYMBOL AITON EXCLAMATION;uniAA77 AA60;ga-khamti;Letter;;;;myanmar;MYANMAR LETTER KHAMTI GA;uniAA60 AA61;ca-khamti;Letter;;;;myanmar;MYANMAR LETTER KHAMTI CA;uniAA61 AA62;cha-khamti;Letter;;;;myanmar;MYANMAR LETTER KHAMTI CHA;uniAA62 @@ -8620,9 +8700,9 @@ AA73;ra-khamti;Letter;;;;myanmar;MYANMAR LETTER KHAMTI RA;uniAA73 AA74;oay-khamti;Letter;;;;myanmar;MYANMAR LOGOGRAM KHAMTI OAY;uniAA74 AA75;qn-khamti;Letter;;;;myanmar;MYANMAR LOGOGRAM KHAMTI QN;uniAA75 AA76;hm-khamti;Letter;;;;myanmar;MYANMAR LOGOGRAM KHAMTI HM;uniAA76 -AA78;oneSymbol-aiton;Symbol;;;;myanmar;MYANMAR SYMBOL AITON ONE;uniAA78 -AA79;twoSymbol-aiton;Symbol;;;;myanmar;MYANMAR SYMBOL AITON TWO;uniAA79 -AA7A;ra-aiton;Letter;;;;myanmar;MYANMAR LETTER AITON RA;uniAA7A +AA78;oneAitonSymbol-myanmar;Symbol;;;;myanmar;MYANMAR SYMBOL AITON ONE;uniAA78 +AA79;twoAitonSymbol-myanmar;Symbol;;;;myanmar;MYANMAR SYMBOL AITON TWO;uniAA79 +AA7A;raAiton-myanmar;Letter;;;;myanmar;MYANMAR LETTER AITON RA;uniAA7A AA7B;tone-paokaren;Mark;Spacing Combining;;;myanmar;MYANMAR SIGN PAO KAREN TONE;uniAA7B AA7C;tone2-tailaing;Mark;Nonspacing;;;myanmar;MYANMAR SIGN TAI LAING TONE-2;uniAA7C AA7D;tone5-tailaing;Mark;Spacing Combining;;;myanmar;MYANMAR SIGN TAI LAING TONE-5;uniAA7D @@ -9745,15 +9825,15 @@ A9FE;bha-tailaing;Letter;;;;myanmar;MYANMAR LETTER TAI LAING BHA;uniA9FE 301E;quotedoubleprime;Punctuation;Quote;;;;DOUBLE PRIME QUOTATION MARK;uni301E 301F;lowquotedoubleprime;Punctuation;Quote;;;;LOW DOUBLE PRIME QUOTATION MARK;uni301F 3020;postalmarkface;Symbol;;;;;POSTAL MARK FACE;uni3020 -3021;one-hangzhou;Number;;;;han;HANGZHOU NUMERAL ONE;uni3021 -3022;two-hangzhou;Number;;;;han;HANGZHOU NUMERAL TWO;uni3022 -3023;three-hangzhou;Number;;;;han;HANGZHOU NUMERAL THREE;uni3023 -3024;four-hangzhou;Number;;;;han;HANGZHOU NUMERAL FOUR;uni3024 -3025;five-hangzhou;Number;;;;han;HANGZHOU NUMERAL FIVE;uni3025 -3026;six-hangzhou;Number;;;;han;HANGZHOU NUMERAL SIX;uni3026 -3027;seven-hangzhou;Number;;;;han;HANGZHOU NUMERAL SEVEN;uni3027 -3028;eight-hangzhou;Number;;;;han;HANGZHOU NUMERAL EIGHT;uni3028 -3029;nine-hangzhou;Number;;;;han;HANGZHOU NUMERAL NINE;uni3029 +3021;one-han;Number;;;;han;HANGZHOU NUMERAL ONE;uni3021 +3022;two-han;Number;;;;han;HANGZHOU NUMERAL TWO;uni3022 +3023;three-han;Number;;;;han;HANGZHOU NUMERAL THREE;uni3023 +3024;four-han;Number;;;;han;HANGZHOU NUMERAL FOUR;uni3024 +3025;five-han;Number;;;;han;HANGZHOU NUMERAL FIVE;uni3025 +3026;six-han;Number;;;;han;HANGZHOU NUMERAL SIX;uni3026 +3027;seven-han;Number;;;;han;HANGZHOU NUMERAL SEVEN;uni3027 +3028;eight-han;Number;;;;han;HANGZHOU NUMERAL EIGHT;uni3028 +3029;nine-han;Number;;;;han;HANGZHOU NUMERAL NINE;uni3029 302A;leveltone-han;Mark;Nonspacing;;;han;IDEOGRAPHIC LEVEL TONE MARK;uni302A 302B;risingtone-han;Mark;Nonspacing;;;han;IDEOGRAPHIC RISING TONE MARK;uni302B 302C;departingtone-han;Mark;Nonspacing;;;han;IDEOGRAPHIC DEPARTING TONE MARK;uni302C @@ -9768,9 +9848,9 @@ A9FE;bha-tailaing;Letter;;;;myanmar;MYANMAR LETTER TAI LAING BHA;uniA9FE 3035;repeatLowerhalf-kana;Letter;Modifier;;;kana;VERTICAL KANA REPEAT MARK LOWER HALF;uni3035 3036;postalmark.circled;Symbol;;;;;CIRCLED POSTAL MARK;uni3036 3037;telegraphLineFeed-han;Symbol;;;;han;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;uni3037 -3038;ten-hangzhou;Number;;;;han;HANGZHOU NUMERAL TEN;uni3038 -3039;twenty-hangzhou;Number;;;;han;HANGZHOU NUMERAL TWENTY;uni3039 -303A;thirty-hangzhou;Number;;;;han;HANGZHOU NUMERAL THIRTY;uni303A +3038;ten-han;Number;;;;han;HANGZHOU NUMERAL TEN;uni3038 +3039;twenty-han;Number;;;;han;HANGZHOU NUMERAL TWENTY;uni3039 +303A;thirty-han;Number;;;;han;HANGZHOU NUMERAL THIRTY;uni303A 303B;ninojiten-han;Letter;Modifier;;;han;VERTICAL IDEOGRAPHIC ITERATION MARK;uni303B 303C;masumark;Letter;;;;;MASU MARK;uni303C 303D;partalternationmark;Punctuation;;;;;PART ALTERNATION MARK;uni303D @@ -23761,6 +23841,31 @@ ABBF;ya-cherokee;Letter;;lower;;cherokee;CHEROKEE SMALL LETTER YA;uniABBF 16EE;arlaug-runic;Symbol;;;;runic;RUNIC ARLAUG SYMBOL;uni16EE 16EF;tvimadur-runic;Symbol;;;;runic;RUNIC TVIMADUR SYMBOL;uni16EF 16F0;belgthor-runic;Symbol;;;;runic;RUNIC BELGTHOR SYMBOL;uni16F0 +1700;a-baybayin;Letter;;;;tagalog;TAGALOG LETTER A;uni1700 +1701;i-baybayin;Letter;;;;tagalog;TAGALOG LETTER I;uni1701 +1702;u-baybayin;Letter;;;;tagalog;TAGALOG LETTER U;uni1702 +170A;ba-baybayin;Letter;;;;tagalog;TAGALOG LETTER BA;uni170A +1703;ka-baybayin;Letter;;;;tagalog;TAGALOG LETTER KA;uni1703 +1707;da-baybayin;Letter;;;;tagalog;TAGALOG LETTER DA;uni1707 +1704;ga-baybayin;Letter;;;;tagalog;TAGALOG LETTER GA;uni1704 +1711;ha-baybayin;Letter;;;;tagalog;TAGALOG LETTER HA;uni1711 +170E;la-baybayin;Letter;;;;tagalog;TAGALOG LETTER LA;uni170E +170B;ma-baybayin;Letter;;;;tagalog;TAGALOG LETTER MA;uni170B +1708;na-baybayin;Letter;;;;tagalog;TAGALOG LETTER NA;uni1708 +1705;nga-baybayin;Letter;;;;tagalog;TAGALOG LETTER NGA;uni1705 +1709;pa-baybayin;Letter;;;;tagalog;TAGALOG LETTER PA;uni1709 +170D;ra-baybayin;Letter;;;;tagalog;TAGALOG LETTER RA;uni170D +1710;sa-baybayin;Letter;;;;tagalog;TAGALOG LETTER SA;uni1710 +1706;ta-baybayin;Letter;;;;tagalog;TAGALOG LETTER TA;uni1706 +170F;wa-baybayin;Letter;;;;tagalog;TAGALOG LETTER WA;uni170F +170C;ya-baybayin;Letter;;;;tagalog;TAGALOG LETTER YA;uni170C +171F;raArchaic-baybayin;Letter;;;;tagalog;TAGALOG LETTER ARCHAIC RA;uni171F +1712;iPatinig-baybayin;Mark;Nonspacing;;;tagalog;TAGALOG VOWEL SIGN I;uni1712 +1713;uPatinig-baybayin;Mark;Nonspacing;;;tagalog;TAGALOG VOWEL SIGN U;uni1713 +1714;virama-baybayin;Mark;Nonspacing;;;tagalog;TAGALOG SIGN VIRAMA;uni1714 +1715;pamudpod-baybayin;Mark;Spacing;;;tagalog;TAGALOG SIGN PAMUDPOD;uni1715 +1735;isabantas-baybayin;Punctuation;;;;tagalog;PHILIPPINE SINGLE PUNCTUATION;uni1735 +1736;dalawabantas-baybayin;Punctuation;;;;tagalog;PHILIPPINE DOUBLE PUNCTUATION;uni1736 18B0;oy-canadian;Letter;;;;canadian;CANADIAN SYLLABICS OY;uni18B0 18B1;ay-canadian;Letter;;;;canadian;CANADIAN SYLLABICS AY;uni18B1 18B2;aay-canadian;Letter;;;;canadian;CANADIAN SYLLABICS AAY;uni18B2 diff --git a/src-js/fontra-core/assets/lang/en.js b/src-js/fontra-core/assets/lang/en.js index 41d41e8d8a..7aae4b1694 100644 --- a/src-js/fontra-core/assets/lang/en.js +++ b/src-js/fontra-core/assets/lang/en.js @@ -471,6 +471,7 @@ export const strings = { "sidebar.user-settings.theme": "Theme settings", "sidebar.user-settings.theme.auto": "Automatic (use OS setting)", "sidebar.user-settings.theme.dark": "Dark", + "sidebar.user-settings.theme.figma": "Figma (High Contrast)", "sidebar.user-settings.theme.light": "Light", "sources.button.go-to-nearest-source": "Go to nearest source", "sources.button.new-font-source": "New font source...", diff --git a/src-js/fontra-core/assets/phosphor-icons/arrows-horizontal.svg b/src-js/fontra-core/assets/phosphor-icons/arrows-horizontal.svg new file mode 100644 index 0000000000..1c4010c8b2 --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/arrows-horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/arrows-out.svg b/src-js/fontra-core/assets/phosphor-icons/arrows-out.svg new file mode 100644 index 0000000000..90251325b0 --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/arrows-out.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/book-open.svg b/src-js/fontra-core/assets/phosphor-icons/book-open.svg new file mode 100644 index 0000000000..2909321dc8 --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/book-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/circle.svg b/src-js/fontra-core/assets/phosphor-icons/circle.svg new file mode 100644 index 0000000000..e7b12e1a0d --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/columns.svg b/src-js/fontra-core/assets/phosphor-icons/columns.svg new file mode 100644 index 0000000000..d49fadf9b7 --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/columns.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/cursor.svg b/src-js/fontra-core/assets/phosphor-icons/cursor.svg new file mode 100644 index 0000000000..6e5a220b03 --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/cursor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/frame-corners.svg b/src-js/fontra-core/assets/phosphor-icons/frame-corners.svg new file mode 100644 index 0000000000..e61580a0e9 --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/frame-corners.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/git-branch.svg b/src-js/fontra-core/assets/phosphor-icons/git-branch.svg new file mode 100644 index 0000000000..4b442e263c --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/git-branch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/hand-grabbing.svg b/src-js/fontra-core/assets/phosphor-icons/hand-grabbing.svg new file mode 100644 index 0000000000..e08cc21b11 --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/hand-grabbing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/info.svg b/src-js/fontra-core/assets/phosphor-icons/info.svg new file mode 100644 index 0000000000..96369e212e --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/knife.svg b/src-js/fontra-core/assets/phosphor-icons/knife.svg new file mode 100644 index 0000000000..3bfe8b7061 --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/knife.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/magnifying-glass.svg b/src-js/fontra-core/assets/phosphor-icons/magnifying-glass.svg new file mode 100644 index 0000000000..2bdda58966 --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/magnifying-glass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/note.svg b/src-js/fontra-core/assets/phosphor-icons/note.svg new file mode 100644 index 0000000000..7e5a2433e1 --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/note.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/pen-nib.svg b/src-js/fontra-core/assets/phosphor-icons/pen-nib.svg new file mode 100644 index 0000000000..2aadeecb43 --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/pen-nib.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/pen.svg b/src-js/fontra-core/assets/phosphor-icons/pen.svg new file mode 100644 index 0000000000..08af65a032 --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/pen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/polygon.svg b/src-js/fontra-core/assets/phosphor-icons/polygon.svg new file mode 100644 index 0000000000..5f49505b6c --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/polygon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/rectangle.svg b/src-js/fontra-core/assets/phosphor-icons/rectangle.svg new file mode 100644 index 0000000000..2660e0b989 --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/rectangle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/ruler.svg b/src-js/fontra-core/assets/phosphor-icons/ruler.svg new file mode 100644 index 0000000000..839a58cac8 --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/ruler.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/sliders-horizontal.svg b/src-js/fontra-core/assets/phosphor-icons/sliders-horizontal.svg new file mode 100644 index 0000000000..4aa2aa3434 --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/sliders-horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/assets/phosphor-icons/text-t.svg b/src-js/fontra-core/assets/phosphor-icons/text-t.svg new file mode 100644 index 0000000000..3d23f5062f --- /dev/null +++ b/src-js/fontra-core/assets/phosphor-icons/text-t.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-js/fontra-core/package.json b/src-js/fontra-core/package.json index 75065c8ad5..b2dab94038 100644 --- a/src-js/fontra-core/package.json +++ b/src-js/fontra-core/package.json @@ -3,10 +3,10 @@ "dependencies": { "@fontra/core": "file:", "bezier-js": "^6.1.4", - "build-shaper-font": "^0.1.7", + "build-shaper-font": "^0.1.8", "fflate": "^0.8.2", - "harfbuzzjs": "^0.10.3", - "lib-font": "^3.0.0", + "harfbuzzjs": "^1.0.0-beta.1", + "lib-font": "^3.0.1", "tsc": "^2.0.4" }, "exports": { diff --git a/src-js/fontra-core/src/canvas-controller.js b/src-js/fontra-core/src/canvas-controller.js index 972d0d35eb..2904fc27d1 100644 --- a/src-js/fontra-core/src/canvas-controller.js +++ b/src-js/fontra-core/src/canvas-controller.js @@ -92,10 +92,33 @@ export class CanvasController { const width = this.canvasWidth; const height = this.canvasHeight; const scale = this.devicePixelRatio; - this.canvas.width = Math.floor(width * scale); - this.canvas.height = Math.floor(height * scale); - this.canvas.style.width = width + "px"; - this.canvas.style.height = height + "px"; + + // We want to be sure that we have at least enough pixels to cover the + // entire area of the canvas, accounting for dpi and browser scaling. + // + // To do this, we take the ceiling of the CSS pixel width and height + // values multiplied by the pixel ratio, which is a number that should + // be guaranteed to be equal to or greater than the final number of screen + // pixels that the canvas element (or rather its container) takes up. + this.canvas.width = Math.ceil(width * scale); + this.canvas.height = Math.ceil(height * scale); + + // We then take those numbers and divide them back down by the scale + // and tell the browser to display the canvas at that many CSS pixels + // wide and tall. This should ensure that there is a 1 to 1 mapping + // between pixels in the canvas's data buffer and pixels as displayed + // on screen for the user. + // + // If we didn't do this, and just used the container's size, then the + // browser might end up stretching the canvas data very slightly to + // make it fit the final size. This isn't ideal but usually isn't + // noticeable except in Safari where the scaling is switched to + // nearest neighbor if the texture is more than 2K pixels wide, + // which can cause a column or row of pixels in the center of + // the canvas to be repeated and it's very noticeable. + this.canvas.style.width = this.canvas.width / scale + "px"; + this.canvas.style.height = this.canvas.height / scale + "px"; + const parentOffsetX = this.canvas.parentElement.offsetLeft; const parentOffsetY = this.canvas.parentElement.offsetTop; diff --git a/src-js/fontra-core/src/font-controller.js b/src-js/fontra-core/src/font-controller.js index 3c9cd52e1a..8694fe0732 100644 --- a/src-js/fontra-core/src/font-controller.js +++ b/src-js/fontra-core/src/font-controller.js @@ -674,8 +674,12 @@ export class FontController { return instanceController; } + get fallbackXAdvance() { + return this.unitsPerEm / 2; + } + getDummyGlyphInstanceController(glyphName = "") { - const dummyGlyph = StaticGlyph.fromObject({ xAdvance: this.unitsPerEm / 2 }); + const dummyGlyph = StaticGlyph.fromObject({ xAdvance: this.fallbackXAdvance }); return new StaticGlyphController(glyphName, dummyGlyph, undefined); } diff --git a/src-js/fontra-core/src/shaper-controller.js b/src-js/fontra-core/src/shaper-controller.js index 8d6278008a..e6998eca1b 100644 --- a/src-js/fontra-core/src/shaper-controller.js +++ b/src-js/fontra-core/src/shaper-controller.js @@ -92,6 +92,7 @@ export class ShaperController { glyphOrder, isGlyphMarkFunc: (glyphName) => markGlyphsSet.has(glyphName), insertMarkers, + fallbackXAdvance: this.fontController.fallbackXAdvance, }; // If compiling the font failed (!fontData) and we have a previous @@ -102,8 +103,7 @@ export class ShaperController { : getShaper(shaperSupport); if (textShaping && fontData) { - // The new shaper is good, help harfbuzzjs with GS and close the old one - this._previousShaper?.close(); + // The new shaper is good this._previousShaper = shaper; } @@ -170,6 +170,7 @@ export class ShaperController { const conditionalSubstitutions = prepareConditionalSubstitutions( await this.fontController.getConditionalSubstitutions(), this.fontController.fontAxes, + this.fontController.fontAxesSourceSpace, this.fontController.glyphMap ); @@ -319,13 +320,25 @@ function ensureNotdef(glyphOrder) { glyphOrder.unshift(".notdef"); } -function prepareConditionalSubstitutions(substitutions, fontAxes, glyphMap) { +function prepareConditionalSubstitutions( + substitutions, + fontAxes, + fontAxesSourceSpace, + glyphMap +) { const axesByName = Object.fromEntries(fontAxes.map((axis) => [axis.name, axis])); const mapFuncs = Object.fromEntries( - fontAxes.map((axis) => { - const mapping = axis.mapping - ? Object.fromEntries(axis.mapping.map(([a, b]) => [b, a])) - : null; + fontAxesSourceSpace.map((axisSourceSpace) => { + const axis = axesByName[axisSourceSpace.name]; + // We don't "unapply" avar mapping, we just *scale* from source space to user space + const mapping = + axis.mapping && axis.minValue != undefined + ? { + [axisSourceSpace.minValue]: axis.minValue, + [axisSourceSpace.defaultValue]: axis.defaultValue, + [axisSourceSpace.maxValue]: axis.maxValue, + } + : null; return [axis.name, mapping ? (v) => piecewiseLinearMap(v, mapping) : (v) => v]; }) ); diff --git a/src-js/fontra-core/src/shaper.js b/src-js/fontra-core/src/shaper.js index 1d8ca6fccb..b451cc1e5b 100644 --- a/src-js/fontra-core/src/shaper.js +++ b/src-js/fontra-core/src/shaper.js @@ -1,8 +1,6 @@ -import hbPromise from "harfbuzzjs"; +import * as hb from "harfbuzzjs"; import { assert, enumerate, mapObjectValues, range, reversed } from "./utils.js"; -const hb = await hbPromise; - export function getShaper(shaperSupport) { const shaperClass = shaperSupport.fontData ? HBShaper : DumbShaper; @@ -15,8 +13,13 @@ const EMULATED_FEATURE_TAGS = ["curs", "kern", "mark", "mkmk"]; class ShaperBase { constructor(shaperSupport) { - const { nominalGlyphFunc, glyphOrder, isGlyphMarkFunc, insertMarkers } = - shaperSupport; + const { + nominalGlyphFunc, + glyphOrder, + isGlyphMarkFunc, + insertMarkers, + fallbackXAdvance, + } = shaperSupport; this.glyphOrder = glyphOrder; this.isGlyphMarkFunc = isGlyphMarkFunc; @@ -30,6 +33,7 @@ class ShaperBase { !!this.insertMarkers.find(({ tag }) => tag === emulatedTag), ]) ); + this.fallbackXAdvance = fallbackXAdvance ?? 500; if (glyphOrder) { this.glyphNameToID = {}; @@ -114,11 +118,11 @@ class HBShaper extends ShaperBase { super(shaperSupport); const { fontData } = shaperSupport; - this.blob = hb.createBlob(fontData); - this.face = hb.createFace(this.blob, 0); - this.font = hb.createFont(this.face); + this.blob = new hb.Blob(fontData); + this.face = new hb.Face(this.blob, 0); + this.font = new hb.Font(this.face); - this.fontFuncs = hb.createFontFuncs(); + this.fontFuncs = new hb.FontFuncs(); if (this.nominalGlyph) { this.fontFuncs.setNominalGlyphFunc((font, codePoint) => @@ -134,7 +138,6 @@ class HBShaper extends ShaperBase { const subFont = this.font.subFont(); subFont.setFuncs(this.fontFuncs); - this.font.destroy(); this.font = subFont; } @@ -145,13 +148,23 @@ class HBShaper extends ShaperBase { return { glyphs: [], requiredGlyphs: [], direction }; } - const buffer = hb.createBuffer(); + const buffer = new hb.Buffer(); buffer.addCodePoints(codePoints); - buffer.guessSegmentProperties(); // Set script, language and direction buffer.setClusterLevel(1); // HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS if (direction) { - buffer.setDirection(direction); + let hbDirection; + switch (direction) { + case "ltr": + hbDirection = hb.Direction.LTR; + break; + case "rtl": + hbDirection = hb.Direction.RTL; + break; + default: + throw new Error(`Unknown or unsupported direction: ${direction}`); + } + buffer.setDirection(hbDirection); } if (script) { buffer.setScript(hb.otTagToScript(script)); @@ -160,6 +173,8 @@ class HBShaper extends ShaperBase { buffer.setLanguage(hb.otTagToLanguage(language)); } + buffer.guessSegmentProperties(); // Guess script, language and direction if not provided. + this.font.setVariations(variations || {}); this._messages = options.trace ? [] : null; @@ -185,7 +200,6 @@ class HBShaper extends ShaperBase { hb.shape(this.font, buffer, features); const glyphs = this.getGlyphInfoFromBuffer(buffer); - buffer.destroy(); // If we are *not* using the message API (we're not tracing, and *all* insertMarkers // indicate that emulation should be done "at the end"), then we may still have some @@ -223,7 +237,8 @@ class HBShaper extends ShaperBase { getGlyphInfoFromBuffer(buffer) { const glyphs = buffer.getGlyphInfosAndPositions(); - const bufferContainsUnicode = buffer.getContentType() != "GLYPHS"; + const bufferContainsUnicode = + buffer.getContentType() != hb.BufferContentType.GLYPHS; if (bufferContainsUnicode) { // Convert Unicode code points to glyph IDs @@ -237,22 +252,24 @@ class HBShaper extends ShaperBase { const glyphName = this.glyphOrder ? this.glyphOrder[glyph.codepoint] : this.font.glyphName(glyph.codepoint); - if (glyph.x_advance == undefined || bufferContainsUnicode) { + if (glyph.xAdvance == undefined || bufferContainsUnicode) { // 1. During the GSUB phase, the positioning fields are undefined, so // we fill them in so we can render something. // 2. When the buffer has been populated with code points, the // positioning fields are still zero, which doesn't render nice. - glyph.x_advance = this._glyphObjects[glyphName]?.xAdvance ?? 500; - glyph.y_advance = 0; // TODO - glyph.x_offset = 0; - glyph.y_offset = 0; + glyph.xAdvance = Math.round( + this._glyphObjects[glyphName]?.xAdvance ?? this.fallbackXAdvance + ); + glyph.yAdvance = 0; // TODO + glyph.xOffset = 0; + glyph.yOffset = 0; } glyph.glyphname = glyphName; - glyph.mark = this.face.getGlyphClass(glyph.codepoint) == "MARK"; + glyph.mark = this.face.getGlyphClass(glyph.codepoint) == hb.GlyphClass.MARK; if (glyph.mark) { - glyph.x_advance = 0; // Force marks to be zero-width + glyph.xAdvance = 0; // Force marks to be zero-width } }); @@ -353,11 +370,8 @@ class HBShaper extends ShaperBase { lookupId ] : undefined; - const sourceLocation = sourceInfo?.[1] - ? `${sourceInfo[0]} (${sourceInfo[1]})` - : sourceInfo - ? `${sourceInfo[0]}` - : undefined; + const sourceLocation = sourceInfo?.[0]; + const lookupName = sourceInfo?.[1]; messages.push({ message, @@ -365,6 +379,7 @@ class HBShaper extends ShaperBase { this._previousGlyphsSerialized && glyphsSerialized != this._previousGlyphsSerialized, sourceLocation, + lookupName, }); this._previousGlyphsSerialized = glyphsSerialized; @@ -402,7 +417,7 @@ class HBShaper extends ShaperBase { _getHAdvanceFunc(font, glyphID) { const glyphName = this.glyphOrder[glyphID]; - return Math.round(this._glyphObjects[glyphName]?.xAdvance ?? 500); + return Math.round(this._glyphObjects[glyphName]?.xAdvance ?? this.fallbackXAdvance); } getFeatureInfo(otTableTag) { @@ -463,7 +478,7 @@ class HBShaper extends ShaperBase { get debugInfo() { if (this._debugInfo === undefined) { - const debgTable = this.face.reference_table("Debg"); + const debgTable = this.face.referenceTable("Debg"); this._debugInfo = debgTable ? JSON.parse(new TextDecoder().decode(debgTable)) : null; @@ -471,12 +486,6 @@ class HBShaper extends ShaperBase { return this._debugInfo; } - - close() { - this.font.destroy(); - this.face.destroy(); - this.blob.destroy(); - } } function applyEmulatedPositioningForFeature( @@ -534,18 +543,18 @@ class DumbShaper extends ShaperBase { for (const [i, codePoint] of enumerate(codePoints)) { const glyphName = this.nominalGlyph(codePoint); - const xAdvance = Math.round(glyphObjects[glyphName]?.xAdvance ?? 500); - const isMark = this.isGlyphMarkFunc(glyphName); glyphs.push({ codepoint: glyphName ? this.glyphNameToID[glyphName] : 0, cluster: i, glyphname: glyphName ?? ".notdef", - mark: isMark, - x_advance: isMark ? 0 : xAdvance, - y_advance: 0, - x_offset: 0, - y_offset: 0, + mark: false, + xAdvance: Math.round( + glyphObjects[glyphName]?.xAdvance ?? this.fallbackXAdvance + ), + yAdvance: 0, + xOffset: 0, + yOffset: 0, }); } @@ -553,31 +562,18 @@ class DumbShaper extends ShaperBase { glyphs.reverse(); } - const skipFeatures = this._getInitialSkipEmulatedFeatures(options.emulatedFeatures); - this.applyEmulatedPositioning( - glyphs, - glyphObjects, - skipFeatures, - options.kerningPairFunc, - options.direction - ); - const requiredGlyphs = glyphs.map((g) => g.glyphname); - return { glyphs, requiredGlyphs }; + return { glyphs, requiredGlyphs, direction }; } getFeatureInfo(otTableTag) { - return super.getFeatureInfo(otTableTag) ?? {}; + return {}; } getScriptAndLanguageInfo() { return {}; } - - close() { - // noop - } } export function applyKerning( @@ -610,10 +606,10 @@ export function applyKerning( const kernValue = Math.round(pairFunc(previousGlyphName, glyphName) ?? 0); if (kernValue) { if (rightToLeft) { - glyph.x_advance += kernValue; - glyph.x_offset += kernValue; + glyph.xAdvance += kernValue; + glyph.xOffset += kernValue; } else { - previousGlyph.x_advance += kernValue; + previousGlyph.xAdvance += kernValue; } messageFunc?.(glyphs, `kerned glyphs at ${displayIndex - 1},${displayIndex}`); didModify = true; @@ -682,16 +678,16 @@ export function applyCursiveAttachments( ); // Horizontal adjustment - previousGlyph.x_advance = Math.max( + previousGlyph.xAdvance = Math.max( 0, - Math.round(previousGlyph.x_advance + exitAnchor.x - previousXAdvance) + Math.round(previousGlyph.xAdvance + exitAnchor.x - previousXAdvance) ); - glyph.x_advance = Math.max(0, glyph.x_advance - Math.round(entryAnchor.x)); - glyph.x_offset -= Math.round(entryAnchor.x); + glyph.xAdvance = Math.max(0, glyph.xAdvance - Math.round(entryAnchor.x)); + glyph.xOffset -= Math.round(entryAnchor.x); // Vertical adjustment - glyph.y_offset = Math.round( - previousGlyph.y_offset + exitAnchor.y - entryAnchor.y + glyph.yOffset = Math.round( + previousGlyph.yOffset + exitAnchor.y - entryAnchor.y ); didModify = true; @@ -793,8 +789,8 @@ function _applyMarkPositioning( glyphObject.propagatedAnchors, "", "", - glyph.x_offset - (rightToLeft ? 0 : glyph.x_advance), - glyph.y_offset + glyph.xOffset - (rightToLeft ? 0 : glyph.xAdvance), + glyph.yOffset ); if (ligatureProps & IS_LIG_BASE) { @@ -812,7 +808,7 @@ function _applyMarkPositioning( baseAnchors.splice(-1, 1, { ...moveAnchors( baseAnchors.at(-1), - rightToLeft ? glyph.x_advance : -glyph.x_advance + rightToLeft ? glyph.xAdvance : -glyph.xAdvance ), ...newBaseAnchors, }); @@ -844,8 +840,8 @@ function _applyMarkPositioning( `attaching mark glyph at ${glyphIndex} to glyph at ${baseAnchor.glyphIndex}` ); - glyph.x_offset = Math.round(baseAnchor.x - markAnchor.x); - glyph.y_offset = Math.round(baseAnchor.y - markAnchor.y); + glyph.xOffset = Math.round(baseAnchor.x - markAnchor.x); + glyph.yOffset = Math.round(baseAnchor.y - markAnchor.y); didModify = true; messageFunc?.( @@ -868,8 +864,8 @@ function _applyMarkPositioning( for (const [anchorName, markAnchor] of Object.entries(markBaseAnchors)) { baseAnchors[componentIndex][anchorName] = { name: anchorName, - x: markAnchor.x + glyph.x_offset, - y: markAnchor.y + glyph.y_offset, + x: markAnchor.x + glyph.xOffset, + y: markAnchor.y + glyph.yOffset, glyphIndex, }; } diff --git a/src-js/fontra-core/src/theme-settings.js b/src-js/fontra-core/src/theme-settings.js index da6fbcc370..857bba07b8 100644 --- a/src-js/fontra-core/src/theme-settings.js +++ b/src-js/fontra-core/src/theme-settings.js @@ -4,6 +4,7 @@ function setupThemeOverride(value) { const rootElement = document.querySelector("html"); rootElement.classList.remove("light-theme"); rootElement.classList.remove("dark-theme"); + rootElement.classList.remove("figma-theme"); if (value !== "automatic") { rootElement.classList.add(value + "-theme"); } diff --git a/src-js/fontra-core/src/webpack-base.js b/src-js/fontra-core/src/webpack-base.js index f646f05ffb..8250b72e32 100644 --- a/src-js/fontra-core/src/webpack-base.js +++ b/src-js/fontra-core/src/webpack-base.js @@ -12,6 +12,7 @@ const fallback = { stream: false, path: false, url: false, + module: false, buffer: import.meta.resolve("buffer"), }; diff --git a/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/font-data.json b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/font-data.json new file mode 100644 index 0000000000..b2dccb4e2b --- /dev/null +++ b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/font-data.json @@ -0,0 +1,182 @@ +{ +"unitsPerEm": 2048, +"fontInfo": { +"familyName": "Cond Subst Test", +"versionMajor": 1, +"versionMinor": 0, +"copyright": "", +"trademark": "", +"description": "", +"sampleText": "", +"designer": "", +"designerURL": "", +"manufacturer": "", +"manufacturerURL": "", +"licenseDescription": "", +"licenseInfoURL": "", +"vendorID": "" +}, +"axes": { +"axes": [ +{ +"name": "Weight", +"label": "Weight", +"tag": "wght", +"minValue": 400, +"defaultValue": 400, +"maxValue": 900, +"mapping": [ +[ +400, +160 +], +[ +500, +203 +], +[ +600, +220 +], +[ +700, +253 +], +[ +800, +313 +], +[ +900, +384 +] +] +} +] +}, +"sources": { +"Black": { +"name": "Black", +"location": { +"Weight": 384 +}, +"lineMetricsHorizontalLayout": { +"ascender": { +"value": 1300, +"zone": 20 +}, +"capHeight": { +"value": 1300, +"zone": 20 +}, +"xHeight": { +"value": 850, +"zone": 20 +}, +"descender": { +"value": -300, +"zone": -20 +}, +"baseline": { +"value": 0, +"zone": -20 +} +} +}, +"Regular": { +"name": "Regular", +"location": { +"Weight": 160 +}, +"lineMetricsHorizontalLayout": { +"ascender": { +"value": 1300, +"zone": 20 +}, +"capHeight": { +"value": 1300, +"zone": 20 +}, +"xHeight": { +"value": 850, +"zone": 20 +}, +"descender": { +"value": -300, +"zone": -20 +}, +"baseline": { +"value": 0, +"zone": -20 +} +} +} +}, +"conditionalSubstitutions": { +"featureTags": [ +"rvrn" +], +"rules": [ +{ +"name": "Weight.205", +"conditionSets": [ +{ +"conditions": [ +{ +"name": "Weight", +"minValue": 205, +"maxValue": 384 +} +] +}, +{ +"conditions": [ +{ +"name": "Weight", +"minValue": 170, +"maxValue": 175 +} +] +} +], +"substitutions": { +"fi": "fi.rvrn" +} +}, +{ +"name": "Weight.280", +"conditionSets": [ +{ +"conditions": [ +{ +"name": "Weight", +"minValue": 280, +"maxValue": 384 +} +] +} +], +"substitutions": { +"cent": "cent.rvrn" +} +}, +{ +"name": "Weight.310", +"conditionSets": [ +{ +"conditions": [ +{ +"name": "Weight", +"minValue": 310, +"maxValue": 384 +} +] +} +], +"substitutions": { +"oslash": "oslash.rvrn" +} +} +] +} +} diff --git a/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyph-info.csv b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyph-info.csv new file mode 100644 index 0000000000..a955cb936f --- /dev/null +++ b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyph-info.csv @@ -0,0 +1,8 @@ +glyph name;code points +cent;U+00A2 +cent.rvrn; +fi;U+FB01 +fi.rvrn; +oslash;U+00F8 +oslash.rvrn; +space;U+0020 diff --git a/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/cent.json b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/cent.json new file mode 100644 index 0000000000..de83ef1c86 --- /dev/null +++ b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/cent.json @@ -0,0 +1,27 @@ +{ +"name": "cent", +"sources": [ +{ +"name": "", +"layerName": "Regular", +"locationBase": "Regular" +}, +{ +"name": "", +"layerName": "Black", +"locationBase": "Black" +} +], +"layers": { +"Black": { +"glyph": { +"xAdvance": 800 +} +}, +"Regular": { +"glyph": { +"xAdvance": 800 +} +} +} +} diff --git a/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/cent.rvrn.json b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/cent.rvrn.json new file mode 100644 index 0000000000..43e68114ef --- /dev/null +++ b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/cent.rvrn.json @@ -0,0 +1,27 @@ +{ +"name": "cent.rvrn", +"sources": [ +{ +"name": "", +"layerName": "Regular", +"locationBase": "Regular" +}, +{ +"name": "", +"layerName": "Black", +"locationBase": "Black" +} +], +"layers": { +"Black": { +"glyph": { +"xAdvance": 800 +} +}, +"Regular": { +"glyph": { +"xAdvance": 800 +} +} +} +} diff --git a/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/fi.json b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/fi.json new file mode 100644 index 0000000000..a977c4c550 --- /dev/null +++ b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/fi.json @@ -0,0 +1,27 @@ +{ +"name": "fi", +"sources": [ +{ +"name": "", +"layerName": "Regular", +"locationBase": "Regular" +}, +{ +"name": "", +"layerName": "Black", +"locationBase": "Black" +} +], +"layers": { +"Black": { +"glyph": { +"xAdvance": 800 +} +}, +"Regular": { +"glyph": { +"xAdvance": 800 +} +} +} +} diff --git a/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/fi.rvrn.json b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/fi.rvrn.json new file mode 100644 index 0000000000..70de5b75bc --- /dev/null +++ b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/fi.rvrn.json @@ -0,0 +1,27 @@ +{ +"name": "fi.rvrn", +"sources": [ +{ +"name": "", +"layerName": "Regular", +"locationBase": "Regular" +}, +{ +"name": "", +"layerName": "Black", +"locationBase": "Black" +} +], +"layers": { +"Black": { +"glyph": { +"xAdvance": 800 +} +}, +"Regular": { +"glyph": { +"xAdvance": 800 +} +} +} +} diff --git a/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/oslash.json b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/oslash.json new file mode 100644 index 0000000000..e5b222e51b --- /dev/null +++ b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/oslash.json @@ -0,0 +1,27 @@ +{ +"name": "oslash", +"sources": [ +{ +"name": "", +"layerName": "Regular", +"locationBase": "Regular" +}, +{ +"name": "", +"layerName": "Black", +"locationBase": "Black" +} +], +"layers": { +"Black": { +"glyph": { +"xAdvance": 800 +} +}, +"Regular": { +"glyph": { +"xAdvance": 800 +} +} +} +} diff --git a/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/oslash.rvrn.json b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/oslash.rvrn.json new file mode 100644 index 0000000000..56d759afba --- /dev/null +++ b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/oslash.rvrn.json @@ -0,0 +1,27 @@ +{ +"name": "oslash.rvrn", +"sources": [ +{ +"name": "", +"layerName": "Regular", +"locationBase": "Regular" +}, +{ +"name": "", +"layerName": "Black", +"locationBase": "Black" +} +], +"layers": { +"Black": { +"glyph": { +"xAdvance": 800 +} +}, +"Regular": { +"glyph": { +"xAdvance": 800 +} +} +} +} diff --git a/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/space.json b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/space.json new file mode 100644 index 0000000000..0a3afa0373 --- /dev/null +++ b/src-js/fontra-core/tests/data/cond-subst/cond-subst.fontra/glyphs/space.json @@ -0,0 +1,27 @@ +{ +"name": "space", +"sources": [ +{ +"name": "", +"layerName": "Regular", +"locationBase": "Regular" +}, +{ +"name": "", +"layerName": "Black", +"locationBase": "Black" +} +], +"layers": { +"Black": { +"glyph": { +"xAdvance": 800 +} +}, +"Regular": { +"glyph": { +"xAdvance": 800 +} +} +} +} diff --git a/src-js/fontra-core/tests/test-shaper.js b/src-js/fontra-core/tests/test-shaper.js index e004c83176..efce5ca0db 100644 --- a/src-js/fontra-core/tests/test-shaper.js +++ b/src-js/fontra-core/tests/test-shaper.js @@ -28,75 +28,75 @@ describe("shaper tests", () => { const testInputCodePoints = [..."😻VABCÄS"].map((c) => ord(c)); - function getExpectedGlyphs(useGlyphObjects) { + function getExpectedGlyphs(useGlyphObjects, applyShaping = true) { return [ { codepoint: 0, cluster: 0, - x_advance: 500, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 500, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: ".notdef", mark: false, }, { codepoint: 24, cluster: 1, - x_advance: useGlyphObjects ? 301 : 300, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: !applyShaping ? 401 : useGlyphObjects ? 301 : 300, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "V", mark: false, }, { codepoint: 1, cluster: 2, - x_advance: 396, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 396, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "A", mark: false, }, { codepoint: 4, cluster: 3, - x_advance: 443, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 443, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "B", mark: false, }, { codepoint: 5, cluster: 4, - x_advance: 499, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 499, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "C", mark: false, }, { codepoint: 3, cluster: 5, - x_advance: 396, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 396, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "Adieresis", mark: false, }, { codepoint: 21, cluster: 6, - x_advance: 393, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 393, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "S", mark: false, }, @@ -312,7 +312,7 @@ describe("shaper tests", () => { kerningPairFunc: (g1, g2) => kerning.getGlyphPairValue(g1, g2), }); - expect(glyphs).to.deep.equal(getExpectedGlyphs(true)); + expect(glyphs).to.deep.equal(getExpectedGlyphs(true, false)); }); it("test DumbShaper RTL", () => { @@ -332,59 +332,76 @@ describe("shaper tests", () => { ]); }); - const testInputCodePointsKerningSkipMarks = [..."V\u0304A"].map((c) => ord(c)); - const expectedGlyphsKerningSkipMarks = [ - { - codepoint: 24, - cluster: 0, - glyphname: "V", - mark: false, - x_advance: 301, - y_advance: 0, - x_offset: 0, - y_offset: 0, - }, - { - codepoint: 51, - cluster: 1, - glyphname: "macroncomb", - mark: true, - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, - }, - { - codepoint: 1, - cluster: 2, - glyphname: "A", - mark: false, - x_advance: 396, - y_advance: 0, - x_offset: 0, - y_offset: 0, - }, - ]; + it("test applyKerning skip marks", () => { + const glyphs = [ + { + codepoint: 24, + cluster: 0, + glyphname: "V", + mark: false, + xAdvance: 401, + yAdvance: 0, + xOffset: 0, + yOffset: 0, + }, + { + codepoint: 51, + cluster: 1, + glyphname: "macroncomb", + mark: true, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, + }, + { + codepoint: 1, + cluster: 2, + glyphname: "A", + mark: false, + xAdvance: 396, + yAdvance: 0, + xOffset: 0, + yOffset: 0, + }, + ]; - const defaultInsertMarkers = [ - { tag: "curs", lookupId: undefined }, - { tag: "kern", lookupId: undefined }, - { tag: "mark", lookupId: undefined }, - { tag: "mkmk", lookupId: undefined }, - ]; + const expectedOutputGlyphs = [ + { + codepoint: 24, + cluster: 0, + glyphname: "V", + mark: false, + xAdvance: 301, + yAdvance: 0, + xOffset: 0, + yOffset: 0, + }, + { + codepoint: 51, + cluster: 1, + glyphname: "macroncomb", + mark: true, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, + }, + { + codepoint: 1, + cluster: 2, + glyphname: "A", + mark: false, + xAdvance: 396, + yAdvance: 0, + xOffset: 0, + yOffset: 0, + }, + ]; - it("test applyKerning skip marks", () => { - const shaper = getShaper({ - nominalGlyphFunc, - glyphOrder, - isGlyphMarkFunc, - insertMarkers: defaultInsertMarkers, - }); - const { glyphs } = shaper.shape(testInputCodePointsKerningSkipMarks, glyphObjects, { - kerningPairFunc: (g1, g2) => kerning.getGlyphPairValue(g1, g2), - }); + applyKerning(glyphs, (g1, g2) => kerning.getGlyphPairValue(g1, g2)); - expect(glyphs).to.deep.equal(expectedGlyphsKerningSkipMarks); + expect(glyphs).to.deep.equal(expectedOutputGlyphs); }); it("test getGlyphNameCodePoint", () => { @@ -436,85 +453,85 @@ describe("shaper tests", () => { { inputGlyphs: [], expectedGlyphs: [], rightToLeft: false }, { inputGlyphs: [ - { glyphname: "A", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, - { glyphname: "B", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "A", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, + { glyphname: "B", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, ], expectedGlyphs: [ - { glyphname: "A", x_advance: 450, y_advance: 0, x_offset: 0, y_offset: 0 }, - { glyphname: "B", x_advance: 475, y_advance: 0, x_offset: -25, y_offset: 150 }, + { glyphname: "A", xAdvance: 450, yAdvance: 0, xOffset: 0, yOffset: 0 }, + { glyphname: "B", xAdvance: 475, yAdvance: 0, xOffset: -25, yOffset: 150 }, ], rightToLeft: false, }, { inputGlyphs: [ - { glyphname: "A", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, - { glyphname: "B", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, - { glyphname: "C", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "A", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, + { glyphname: "B", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, + { glyphname: "C", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, ], expectedGlyphs: [ - { glyphname: "A", x_advance: 450, y_advance: 0, x_offset: 0, y_offset: 0 }, - { glyphname: "B", x_advance: 425, y_advance: 0, x_offset: -25, y_offset: 150 }, - { glyphname: "C", x_advance: 475, y_advance: 0, x_offset: -25, y_offset: 300 }, + { glyphname: "A", xAdvance: 450, yAdvance: 0, xOffset: 0, yOffset: 0 }, + { glyphname: "B", xAdvance: 425, yAdvance: 0, xOffset: -25, yOffset: 150 }, + { glyphname: "C", xAdvance: 475, yAdvance: 0, xOffset: -25, yOffset: 300 }, ], rightToLeft: false, }, { inputGlyphs: [ - { glyphname: "A", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "A", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "mark", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, - { glyphname: "B", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, - { glyphname: "C", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "B", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, + { glyphname: "C", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, ], expectedGlyphs: [ - { glyphname: "A", x_advance: 450, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "A", xAdvance: 450, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "mark", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, - { glyphname: "B", x_advance: 425, y_advance: 0, x_offset: -25, y_offset: 150 }, - { glyphname: "C", x_advance: 475, y_advance: 0, x_offset: -25, y_offset: 300 }, + { glyphname: "B", xAdvance: 425, yAdvance: 0, xOffset: -25, yOffset: 150 }, + { glyphname: "C", xAdvance: 475, yAdvance: 0, xOffset: -25, yOffset: 300 }, ], rightToLeft: false, }, // RTL { inputGlyphs: [ - { glyphname: "teh-ar", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, - { glyphname: "beh-ar", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "teh-ar", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, + { glyphname: "beh-ar", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "alef-ar", - x_advance: 500, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 500, + yAdvance: 0, + xOffset: 0, + yOffset: 0, }, ], expectedGlyphs: [ - { glyphname: "teh-ar", x_advance: 475, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "teh-ar", xAdvance: 475, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "beh-ar", - x_advance: 425, - y_advance: 0, - x_offset: -50, - y_offset: -150, + xAdvance: 425, + yAdvance: 0, + xOffset: -50, + yOffset: -150, }, { glyphname: "alef-ar", - x_advance: 450, - y_advance: 0, - x_offset: -50, - y_offset: -300, + xAdvance: 450, + yAdvance: 0, + xOffset: -50, + yOffset: -300, }, ], rightToLeft: true, @@ -525,29 +542,29 @@ describe("shaper tests", () => { inputGlyphs: [ { glyphname: "alef-ar", - x_advance: 500, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 500, + yAdvance: 0, + xOffset: 0, + yOffset: 0, }, - { glyphname: "beh-ar", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, - { glyphname: "teh-ar", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "beh-ar", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, + { glyphname: "teh-ar", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, ], expectedGlyphs: [ - { glyphname: "alef-ar", x_advance: 50, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "alef-ar", xAdvance: 50, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "beh-ar", - x_advance: 0, - y_advance: 0, - x_offset: -475, - y_offset: 150, + xAdvance: 0, + yAdvance: 0, + xOffset: -475, + yOffset: 150, }, { glyphname: "teh-ar", - x_advance: 25, - y_advance: 0, - x_offset: -475, - y_offset: 300, + xAdvance: 25, + yAdvance: 0, + xOffset: -475, + yOffset: 300, }, ], rightToLeft: false, @@ -611,218 +628,218 @@ describe("shaper tests", () => { { inputGlyphs: [], expectedGlyphs: [] }, { inputGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, ], expectedGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, ], }, { inputGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, ], expectedGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: -10, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: -10, mark: true, }, - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: -10, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: -10, mark: true, }, ], }, { inputGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotbelowcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, ], expectedGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: -10, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: -10, mark: true, }, { glyphname: "dotbelowcomb", - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: 0, mark: true, }, ], }, { inputGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, ], expectedGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: -10, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: -10, mark: true, }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: 160, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: 160, mark: true, }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: 330, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: 330, mark: true, }, ], }, { inputGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotbelowcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotbelowcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, ], expectedGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: -10, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: -10, mark: true, }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: 160, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: 160, mark: true, }, { glyphname: "dotbelowcomb", - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: 0, mark: true, }, { glyphname: "dotbelowcomb", - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: -170, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: -170, mark: true, }, ], @@ -832,72 +849,72 @@ describe("shaper tests", () => { inputGlyphs: [ { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotbelowcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotbelowcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, ], expectedGlyphs: [ { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 150, - y_offset: 160, + xAdvance: 0, + yAdvance: 0, + xOffset: 150, + yOffset: 160, mark: true, }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 150, - y_offset: -10, + xAdvance: 0, + yAdvance: 0, + xOffset: 150, + yOffset: -10, mark: true, }, { glyphname: "dotbelowcomb", - x_advance: 0, - y_advance: 0, - x_offset: 150, - y_offset: -170, + xAdvance: 0, + yAdvance: 0, + xOffset: 150, + yOffset: -170, mark: true, }, { glyphname: "dotbelowcomb", - x_advance: 0, - y_advance: 0, - x_offset: 150, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 150, + yOffset: 0, mark: true, }, - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, ], rightToLeft: true, }, @@ -916,96 +933,96 @@ describe("shaper tests", () => { const testDataMarkToBasePositioning = [ { inputGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotbelowcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, ], expectedGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: -10, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: -10, mark: true, }, { glyphname: "dotbelowcomb", - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: 0, mark: true, }, ], }, { inputGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, ], expectedGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: -10, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: -10, mark: true, }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: -10, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: -10, mark: true, }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: -10, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: -10, mark: true, }, ], @@ -1028,96 +1045,96 @@ describe("shaper tests", () => { const testDataMarkToMarkPositioning = [ { inputGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotbelowcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, ], expectedGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotbelowcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, ], }, { inputGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, ], expectedGlyphs: [ - { glyphname: "H", x_advance: 500, y_advance: 0, x_offset: 0, y_offset: 0 }, + { glyphname: "H", xAdvance: 500, yAdvance: 0, xOffset: 0, yOffset: 0 }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, mark: true, }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 170, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 170, mark: true, }, { glyphname: "dotaccentcomb", - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 340, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 340, mark: true, }, ], @@ -1171,50 +1188,50 @@ feature liga { { codepoint: 2, cluster: 0, - x_advance: 800, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 800, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "H_H", mark: false, }, { codepoint: 5, cluster: 0, - x_advance: 0, - y_advance: 0, - x_offset: -720, - y_offset: -14, + xAdvance: 0, + yAdvance: 0, + xOffset: -720, + yOffset: -14, glyphname: "macroncomb", mark: true, }, { codepoint: 3, cluster: 0, - x_advance: 0, - y_advance: 0, - x_offset: -650, - y_offset: 140, + xAdvance: 0, + yAdvance: 0, + xOffset: -650, + yOffset: 140, glyphname: "dotaccentcomb", mark: true, }, { codepoint: 3, cluster: 4, - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: -10, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: -10, glyphname: "dotaccentcomb", mark: true, }, { codepoint: 5, cluster: 5, - x_advance: 0, - y_advance: 0, - x_offset: -420, - y_offset: 156, + xAdvance: 0, + yAdvance: 0, + xOffset: -420, + yOffset: 156, glyphname: "macroncomb", mark: true, }, @@ -1274,20 +1291,20 @@ table GDEF { codepoint: 1, glyphname: "H", mark: false, - x_advance: 500, - x_offset: 0, - y_advance: 0, - y_offset: 0, + xAdvance: 500, + xOffset: 0, + yAdvance: 0, + yOffset: 0, }, { cluster: 1, codepoint: 5, glyphname: "macroncomb", mark: false, - x_advance: 500, - x_offset: 0, - y_advance: 0, - y_offset: 0, + xAdvance: 500, + xOffset: 0, + yAdvance: 0, + yOffset: 0, }, ]; @@ -1396,10 +1413,10 @@ describe("shaper tests compare emulation with native", () => { expectedGlyphs: [ { cluster: 0, - x_advance: 800, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 800, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "H_H", mark: false, }, @@ -1410,28 +1427,28 @@ describe("shaper tests compare emulation with native", () => { expectedGlyphs: [ { cluster: 0, - x_advance: 450, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 450, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "A", mark: false, }, { cluster: 1, - x_advance: 425, - y_advance: 0, - x_offset: -25, - y_offset: 150, + xAdvance: 425, + yAdvance: 0, + xOffset: -25, + yOffset: 150, glyphname: "B", mark: false, }, { cluster: 2, - x_advance: 475, - y_advance: 0, - x_offset: -25, - y_offset: 300, + xAdvance: 475, + yAdvance: 0, + xOffset: -25, + yOffset: 300, glyphname: "C", mark: false, }, @@ -1442,64 +1459,64 @@ describe("shaper tests compare emulation with native", () => { expectedGlyphs: [ { cluster: 0, - x_advance: 800, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 800, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "H_H", mark: false, }, { cluster: 0, - x_advance: 0, - y_advance: 0, - x_offset: -650, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: -650, + yOffset: 0, glyphname: "dotbelowcomb", mark: true, }, { cluster: 0, - x_advance: 0, - y_advance: 0, - x_offset: -720, - y_offset: -14, + xAdvance: 0, + yAdvance: 0, + xOffset: -720, + yOffset: -14, glyphname: "macroncomb", mark: true, }, { cluster: 0, - x_advance: 0, - y_advance: 0, - x_offset: -650, - y_offset: 140, + xAdvance: 0, + yAdvance: 0, + xOffset: -650, + yOffset: 140, glyphname: "dotaccentcomb", mark: true, }, { cluster: 5, - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: 0, glyphname: "dotbelowcomb", mark: true, }, { cluster: 5, - x_advance: 0, - y_advance: 0, - x_offset: -350, - y_offset: -10, + xAdvance: 0, + yAdvance: 0, + xOffset: -350, + yOffset: -10, glyphname: "dotaccentcomb", mark: true, }, { cluster: 7, - x_advance: 0, - y_advance: 0, - x_offset: -420, - y_offset: 156, + xAdvance: 0, + yAdvance: 0, + xOffset: -420, + yOffset: 156, glyphname: "macroncomb", mark: true, }, @@ -1510,19 +1527,19 @@ describe("shaper tests compare emulation with native", () => { expectedGlyphs: [ { cluster: 0, - x_advance: 500, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 500, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "H", mark: false, }, { cluster: 1, - x_advance: 0, - y_advance: 0, - x_offset: -420, - y_offset: -14, + xAdvance: 0, + yAdvance: 0, + xOffset: -420, + yOffset: -14, glyphname: "macroncomb", mark: true, }, @@ -1534,28 +1551,28 @@ describe("shaper tests compare emulation with native", () => { expectedGlyphs: [ { cluster: 0, - x_advance: 500, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 500, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "H", mark: false, }, { cluster: 0, - x_advance: 500, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 500, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "A", mark: false, }, { cluster: 1, - x_advance: 0, - y_advance: 0, - x_offset: -920, - y_offset: -14, + xAdvance: 0, + yAdvance: 0, + xOffset: -920, + yOffset: -14, glyphname: "macroncomb", mark: true, }, @@ -1573,10 +1590,10 @@ describe("shaper tests compare emulation with native", () => { expectedGlyphs: [ { cluster: 0, - x_advance: 658, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 658, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "alef-ar", mark: false, }, @@ -1588,19 +1605,19 @@ describe("shaper tests compare emulation with native", () => { expectedGlyphs: [ { cluster: 0, - x_advance: 0, - y_advance: 0, - x_offset: 5, - y_offset: 191, + xAdvance: 0, + yAdvance: 0, + xOffset: 5, + yOffset: 191, glyphname: "dotabove-ar", mark: true, }, { cluster: 0, - x_advance: 295, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 295, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "noonghunna-ar", mark: false, }, @@ -1612,91 +1629,91 @@ describe("shaper tests compare emulation with native", () => { expectedGlyphs: [ { cluster: 5, - x_advance: 0, - y_advance: 0, - x_offset: 593, - y_offset: 93, + xAdvance: 0, + yAdvance: 0, + xOffset: 593, + yOffset: 93, glyphname: "fatha-ar", mark: true, }, { cluster: 4, - x_advance: 0, - y_advance: 0, - x_offset: 803, - y_offset: 264, + xAdvance: 0, + yAdvance: 0, + xOffset: 803, + yOffset: 264, glyphname: "twodotsverticalabove-ar", mark: true, }, { cluster: 4, - x_advance: 984, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 984, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "behDotless-ar.fina", mark: false, }, { cluster: 3, - x_advance: 0, - y_advance: 0, - x_offset: -9, - y_offset: 392, + xAdvance: 0, + yAdvance: 0, + xOffset: -9, + yOffset: 392, glyphname: "dotabove-ar.beh", mark: true, }, { cluster: 3, - x_advance: 0, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 0, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "_c.seen.beh", mark: false, }, { cluster: 3, - x_advance: 130, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 130, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "behDotless-ar.init.high", mark: false, }, { cluster: 0, - x_advance: 0, - y_advance: 0, - x_offset: 491, - y_offset: 594, + xAdvance: 0, + yAdvance: 0, + xOffset: 491, + yOffset: 594, glyphname: "fatha-ar", mark: true, }, { cluster: 0, - x_advance: 0, - y_advance: 0, - x_offset: 673, - y_offset: 432, + xAdvance: 0, + yAdvance: 0, + xOffset: 673, + yOffset: 432, glyphname: "fatha-ar", mark: true, }, { cluster: 0, - x_advance: 0, - y_advance: 0, - x_offset: 553, - y_offset: 394, + xAdvance: 0, + yAdvance: 0, + xOffset: 553, + yOffset: 394, glyphname: "dotabove-ar", mark: true, }, { cluster: 0, - x_advance: 960, - y_advance: 0, - x_offset: 400, - y_offset: 0, + xAdvance: 960, + yAdvance: 0, + xOffset: 400, + yOffset: 0, glyphname: "fehDotless_alef-ar", mark: false, }, @@ -1708,37 +1725,37 @@ describe("shaper tests compare emulation with native", () => { expectedGlyphs: [ { cluster: 1, - x_advance: 177, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 177, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "lam-ar.fina", mark: false, }, { cluster: 0, - x_advance: 0, - y_advance: 0, - x_offset: -31, - y_offset: 381, + xAdvance: 0, + yAdvance: 0, + xOffset: -31, + yOffset: 381, glyphname: "twodotsverticalabove-ar", mark: true, }, { cluster: 0, - x_advance: 174, - y_advance: 0, - x_offset: 0, - y_offset: 0, + xAdvance: 174, + yAdvance: 0, + xOffset: 0, + yOffset: 0, glyphname: "_c.feh.init.beh", mark: false, }, { cluster: 0, - x_advance: 220, - y_advance: 0, - x_offset: -114, - y_offset: 0, + xAdvance: 220, + yAdvance: 0, + xOffset: -114, + yOffset: 0, glyphname: "fehDotless-ar.init", mark: false, }, @@ -1814,6 +1831,82 @@ describe("test conditional substitutions", () => { }); }); +describe("test conditional substitutions with mapping", () => { + it("test conditional substitutions with mapping", async () => { + const testFontPath = moduleDirName.joinPath( + "data", + "cond-subst", + "cond-subst.fontra" + ); + + const shapeFunc = await getEmulatedShapeFuncForPath(testFontPath); + + const inputCodePoints = [..."¢øfi"].map(ord); + + const { glyphs: glyphs1 } = await shapeFunc(inputCodePoints); + const glyphNames1 = glyphs1.map((g) => g.glyphname); + expect(glyphNames1).to.deep.equal(["cent", "oslash", "fi"]); + + const { glyphs: glyphs2 } = await shapeFunc(inputCodePoints, { + variations: { wght: 500 }, + }); + const glyphNames2 = glyphs2.map((g) => g.glyphname); + expect(glyphNames2).to.deep.equal(["cent", "oslash", "fi"]); + + // Source coords *scaled* to User coords (but not unapplying avar) + // conditionalSubstitutions = { + // featureTags: ["rvrn"], + // rules: [ + // [ + // [ + // { wght: [500.44642857142856, 900] }, + // { wght: [422.32142857142856, 433.48214285714283] }, + // ], + // { fi: "fi.rvrn" }, + // ], + // [[{ wght: [667.8571428571429, 900] }], { cent: "cent.rvrn" }], + // [[{ wght: [734.8214285714286, 900] }], { oslash: "oslash.rvrn" }], + // ], + // }; + + const { glyphs: glyphs3 } = await shapeFunc(inputCodePoints, { + variations: { wght: 501 }, + }); + const glyphNames3 = glyphs3.map((g) => g.glyphname); + expect(glyphNames3).to.deep.equal(["cent", "oslash", "fi.rvrn"]); + + const { glyphs: glyphs4 } = await shapeFunc(inputCodePoints, { + variations: { wght: 667 }, + }); + const glyphNames4 = glyphs4.map((g) => g.glyphname); + expect(glyphNames4).to.deep.equal(["cent", "oslash", "fi.rvrn"]); + + const { glyphs: glyphs5 } = await shapeFunc(inputCodePoints, { + variations: { wght: 668 }, + }); + const glyphNames5 = glyphs5.map((g) => g.glyphname); + expect(glyphNames5).to.deep.equal(["cent.rvrn", "oslash", "fi.rvrn"]); + + const { glyphs: glyphs6 } = await shapeFunc(inputCodePoints, { + variations: { wght: 734 }, + }); + const glyphNames6 = glyphs6.map((g) => g.glyphname); + expect(glyphNames6).to.deep.equal(["cent.rvrn", "oslash", "fi.rvrn"]); + + const { glyphs: glyphs7 } = await shapeFunc(inputCodePoints, { + variations: { wght: 735 }, + }); + const glyphNames7 = glyphs7.map((g) => g.glyphname); + expect(glyphNames7).to.deep.equal(["cent.rvrn", "oslash.rvrn", "fi.rvrn"]); + + const { glyphs: glyphs8 } = await shapeFunc(inputCodePoints, { + variations: { wght: 423 }, + }); + const glyphNames8 = glyphs8.map((g) => g.glyphname); + expect(glyphNames8).to.deep.equal(["cent", "oslash", "fi.rvrn"]); + }); +}); + function stripGlyphIDs(glyphs) { return glyphs.map((glyph) => { glyph = { ...glyph }; diff --git a/src-js/fontra-core/webpack.config.cjs b/src-js/fontra-core/webpack.config.cjs index 138dd49d98..69d8f19abc 100644 --- a/src-js/fontra-core/webpack.config.cjs +++ b/src-js/fontra-core/webpack.config.cjs @@ -25,9 +25,6 @@ module.exports = { context: path.resolve(__dirname, "assets"), from: "**/*", }, - { - from: "node_modules/harfbuzzjs/hb.wasm", - }, ], }), new WatchRunPlugin(), diff --git a/src-js/fontra-webcomponents/src/inline-svg.js b/src-js/fontra-webcomponents/src/inline-svg.js index c11935b205..0f4d85b410 100644 --- a/src-js/fontra-webcomponents/src/inline-svg.js +++ b/src-js/fontra-webcomponents/src/inline-svg.js @@ -33,7 +33,12 @@ export class InlineSVG extends HTMLElement { } async fetchSVG(svgSRC) { - const svgElement = htmlToElement(await cachedSVGData(svgSRC)); + const svgData = await cachedSVGData(svgSRC); + const svgElement = htmlToElement(svgData); + if (!svgElement || typeof svgElement.removeAttribute !== "function") { + console.warn(`Could not parse SVG from ${svgSRC}`); + return; + } svgElement.removeAttribute("width"); svgElement.removeAttribute("height"); this.innerHTML = ""; diff --git a/src-js/projectmanager-filesystem/landing.html b/src-js/projectmanager-filesystem/landing.html index dcee89f40c..e983a1403a 100644 --- a/src-js/projectmanager-filesystem/landing.html +++ b/src-js/projectmanager-filesystem/landing.html @@ -1,22 +1,26 @@ - - - Fontra - - - - - -
-
-
- -
+ + + Fontra + + + + + -
+ +
+ +
+
+
- - - + +
+
+ + + + \ No newline at end of file diff --git a/src-js/views-applicationsettings/applicationsettings.html b/src-js/views-applicationsettings/applicationsettings.html index 13dfdec95d..d46a4b900e 100644 --- a/src-js/views-applicationsettings/applicationsettings.html +++ b/src-js/views-applicationsettings/applicationsettings.html @@ -1,20 +1,24 @@ - - - - - - - Fontra Application Settings - - - -
-
-
-
-
- - - + + + + + + + + + Fontra Application Settings + + + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src-js/views-applicationsettings/src/panel-theme-settings.js b/src-js/views-applicationsettings/src/panel-theme-settings.js index 50979912ae..121531d269 100644 --- a/src-js/views-applicationsettings/src/panel-theme-settings.js +++ b/src-js/views-applicationsettings/src/panel-theme-settings.js @@ -51,6 +51,10 @@ export class ThemeSettingsPanel extends MultiPanelBasePanel { key: "dark", displayName: translate("sidebar.user-settings.theme.dark"), }, + { + key: "figma", + displayName: translate("sidebar.user-settings.theme.figma"), + }, ], }, ], diff --git a/src-js/views-editor/disabled-triangle-guardian/panel-triangle-guardian.js b/src-js/views-editor/disabled-triangle-guardian/panel-triangle-guardian.js deleted file mode 100644 index 13c4cfbca1..0000000000 --- a/src-js/views-editor/disabled-triangle-guardian/panel-triangle-guardian.js +++ /dev/null @@ -1,247 +0,0 @@ -import Panel from "@fontra/editor/panel.js"; -import { ObservableController } from "@fontra/core/observable-object.js"; -import { div, label, input, span } from "@fontra/core/html-utils.js"; -import { state } from "./triangle-guardian-state.js"; - -export default class TriangleGuardianPanel extends Panel { - identifier = "triangle-guardian-panel"; - inlineSVG = ``; - - static styles = ` - #tg-panel { padding: 12px; display: flex; flex-direction: column; gap: 12px; } - .tg-section { display: flex; flex-direction: column; gap: 6px; } - .tg-section-title { - font-size: 11px; font-weight: 500; text-transform: uppercase; - letter-spacing: .05em; color: var(--ui-element-foreground-color); - opacity: .55; padding-bottom: 2px; - border-bottom: 0.5px solid var(--ui-element-background-color-1); - } - .tg-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; } - .tg-label { font-size: 12px; color: var(--ui-element-foreground-color); } - .tg-violation-list { min-height: 80px; } - .tg-empty { font-size: 11px; opacity: .5; padding: 8px 0; text-align: center; } - `; - - constructor(editorController) { - super(editorController); - } - - getContentElement() { - this._controller = new ObservableController({ - enabled: state.enabled, - educationalMode: state.educationalMode, - showAllSegments: state.showAllSegments, - highlightViolations: state.highlightViolations, - showSCurveLabels: state.showSCurveLabels, - triangleOpacity: Math.round(state.triangleOpacity * 100), - }); - - // Sync controller → shared state → canvas update - const keys = Object.keys(state); - keys.forEach((key) => { - this._controller.addKeyListener(key, () => { - const val = this._controller.model[key]; - if (key === "triangleOpacity") { - state[key] = val / 100; - } else { - state[key] = val; - } - this.editorController.canvasController.requestUpdate(); - if (key !== "triangleOpacity") this._scheduleViolationScan(); - }); - }); - - // Listen to glyph changes - this.editorController.sceneController.addCurrentGlyphChangeListener(() => - this._scheduleViolationScan() - ); - - this.editorController.sceneController.sceneSettingsController.addKeyListener( - "selectedGlyphName", - () => this._scheduleViolationScan() - ); - - this._violationList = document.createElement("div"); - this._violationList.className = "tg-violation-list"; - - this._scheduleViolationScan(); - - return div({ id: "tg-panel" }, [ - this._buildModeSection(), - this._buildAppearanceSection(), - this._buildViolationsSection(), - ]); - } - - _buildModeSection() { - const title = div({ class: "tg-section-title" }, "Mode"); - const rows = []; - - const toggles = [ - { key: "showAllSegments", label: "Show all segments" }, - { key: "educationalMode", label: "Educational mode" }, - { key: "highlightViolations", label: "Highlight violations" }, - { key: "showSCurveLabels", label: "S-curve labels" }, - ]; - - for (const { key, label: lbl } of toggles) { - const chk = input({ type: "checkbox", checked: this._controller.model[key] }); - chk.addEventListener("change", () => { - this._controller.setItem(key, chk.checked, { senderID: this }); - }); - rows.push( - div({ class: "tg-row" }, [ - label({ class: "tg-label" }, lbl), - chk, - ]) - ); - } - - return div({ class: "tg-section" }, [title, ...rows]); - } - - _buildAppearanceSection() { - const title = div({ class: "tg-section-title" }, "Appearance"); - const slider = input({ - type: "range", - min: 0, - max: 100, - value: this._controller.model.triangleOpacity, - }); - slider.addEventListener("input", () => { - this._controller.setItem("triangleOpacity", parseInt(slider.value), { - senderID: this, - }); - }); - - const valLabel = span( - { class: "tg-label" }, - `${this._controller.model.triangleOpacity}%` - ); - - this._controller.addKeyListener("triangleOpacity", () => { - slider.value = this._controller.model.triangleOpacity; - valLabel.textContent = `${this._controller.model.triangleOpacity}%`; - }); - - return div({ class: "tg-section" }, [ - title, - div({ class: "tg-row" }, [label({ class: "tg-label" }, "Triangle opacity"), slider, valLabel]), - ]); - } - - _buildViolationsSection() { - const title = div({ class: "tg-section-title" }, "Violations"); - return div({ class: "tg-section" }, [title, this._violationList]); - } - - async _scheduleViolationScan() { - if (this._pending) return; - this._pending = this._runViolationScan(); - await this._pending; - delete this._pending; - } - - async _runViolationScan() { - const sceneController = this.editorController.sceneController; - const sceneModel = sceneController.sceneModel; - const glyphName = sceneController.sceneSettings.selectedGlyphName; - if (!glyphName) { - this._violationList.innerHTML = '
No glyph selected
'; - return; - } - - // Use sceneModel.getGlyphInstance which automatically applies the current source location - const instance = await sceneModel.getGlyphInstance(glyphName); - if (!instance || !instance.path) { - this._violationList.innerHTML = '
No path data
'; - return; - } - - const path = instance.path; - const violations = []; - - for (let ci = 0; ci < path.numContours; ci++) { - for (const segment of path.iterContourDecomposedSegments(ci)) { - if (segment.type !== "cubic" || segment.points.length !== 4) continue; - - const [P0, P1, P2, P3] = segment.points; - if (isDegenerate(P0, P1, P2, P3)) continue; - - const { apex, isSCurve } = computeApex(P0, P1, P2, P3); - if (isSCurve) { - violations.push({ contour: ci, segment: segment.segmentIndex || ci, issue: "S-curve" }); - continue; - } - if (!apex) continue; - - const p1Out = !pointInTriangle(P1, P0, P3, apex); - const p2Out = !pointInTriangle(P2, P0, P3, apex); - if (p1Out || p2Out) { - const parts = []; - if (p1Out) parts.push("handle A"); - if (p2Out) parts.push("handle B"); - violations.push({ contour: ci, segment: segment.segmentIndex || ci, issue: parts.join(", ") }); - } - } - } - - if (violations.length === 0) { - this._violationList.innerHTML = '
No violations
'; - } else { - const items = violations.map( - (v) => - div( - { - class: "tg-row", - style: "cursor: pointer; padding: 2px 0;", - }, - [ - span({ class: "tg-label", style: "width: 48px;" }, `c${v.contour}`), - span({ class: "tg-label", style: "width: 36px;" }, `s${v.segment}`), - span({ class: "tg-label", style: "color: var(--fontra-red);" }, v.issue), - ] - ) - ); - this._violationList.replaceChildren(...items); - } - } -} - -// Inline imports to avoid circular deps in panel -function isDegenerate(P0, P1, P2, P3) { - if (P0.x === P3.x && P0.y === P3.y) return true; - if (P0.x === P1.x && P0.y === P1.y) return true; - if (P3.x === P2.x && P3.y === P2.y) return true; - return false; -} - -function computeApex(P0, P1, P2, P3) { - const d1x = P1.x - P0.x; - const d1y = P1.y - P0.y; - const d2x = P2.x - P3.x; - const d2y = P2.y - P3.y; - const denom = d1x * d2y - d1y * d2x; - if (Math.abs(denom) < 1e-6) return { apex: null, isSCurve: false }; - const dx = P3.x - P0.x; - const dy = P3.y - P0.y; - const t = (dx * d2y - dy * d2x) / denom; - const s = (dx * d1y - dy * d1x) / denom; - const isSCurve = t < 0 || s < 0; - const apex = { x: P0.x + t * d1x, y: P0.y + t * d1y }; - return { apex, isSCurve }; -} - -function pointInTriangle(pt, A, B, C, eps = 0.5) { - function sign(ax, ay, bx, by, cx, cy) { - return (ax - cx) * (by - cy) - (bx - cx) * (ay - cy); - } - const d1 = sign(pt.x, pt.y, A.x, A.y, B.x, B.y); - const d2 = sign(pt.x, pt.y, B.x, B.y, C.x, C.y); - const d3 = sign(pt.x, pt.y, C.x, C.y, A.x, A.y); - const hasNeg = d1 < -eps || d2 < -eps || d3 < -eps; - const hasPos = d1 > eps || d2 > eps || d3 > eps; - return !(hasNeg && hasPos); -} - -customElements.define("panel-triangle-guardian", TriangleGuardianPanel); diff --git a/src-js/views-editor/disabled-triangle-guardian/triangle-guardian-layer.js b/src-js/views-editor/disabled-triangle-guardian/triangle-guardian-layer.js deleted file mode 100644 index ab498bc111..0000000000 --- a/src-js/views-editor/disabled-triangle-guardian/triangle-guardian-layer.js +++ /dev/null @@ -1,186 +0,0 @@ -import { registerVisualizationLayerDefinition, glyphSelector } from "@fontra/editor/visualization-layer-definitions.js"; -import { parseSelection } from "@fontra/core/utils.js"; -import { state } from "./triangle-guardian-state.js"; -import { computeApex, pointInTriangle, isDegenerate, drawLine } from "./triangle-guardian-geometry.js"; - -registerVisualizationLayerDefinition({ - identifier: "com.fontra.plugins.triangle-guardian.overlay", - name: "Triangle Guardian", - selectionFunc: glyphSelector("editing"), - userSwitchable: true, - defaultOn: true, - zIndex: 200, - screenParameters: { - strokeWidth: 1, - triangleOpacity: 0.18, - violationColor: "#E24B4A", - okColor: "#1D9E75", - sCurveColor: "#185FA5", - apexRadius: 3, - dashLength: 5, - dashGap: 4, - }, - draw(context, positionedGlyph, parameters, model, controller) { - if (!state.enabled) return; - - const glyph = positionedGlyph.glyph; - if (!glyph || !glyph.path) return; - - const path = glyph.path; - const educMode = state.educationalMode; - const showAll = state.showAllSegments; - - // Parse selection to get point indices - const { point: selectedPointIndices } = parseSelection(model.selection); - const { point: hoveredPointIndices } = parseSelection(model.hoverSelection); - const selectedSet = new Set(selectedPointIndices); - const hoveredSet = new Set(hoveredPointIndices); - - for (let ci = 0; ci < path.numContours; ci++) { - for (const segment of path.iterContourDecomposedSegments(ci)) { - if (segment.type !== "cubic" || segment.points.length !== 4) continue; - - const [P0, P1, P2, P3] = segment.points; - const indices = segment.parentPointIndices; - - // Determine visibility - const isSelected = educMode || showAll || isSegmentSelected(indices, selectedSet, hoveredSet); - if (!isSelected) continue; - - // Skip degenerate - if (isDegenerate(P0, P1, P2, P3)) continue; - - // Compute apex - const { apex, isSCurve } = computeApex(P0, P1, P2, P3); - if (!apex && !isSCurve) continue; - - // Check violations - const p1Outside = apex && !pointInTriangle(P1, P0, P3, apex); - const p2Outside = apex && !pointInTriangle(P2, P0, P3, apex); - - context.save(); - - if (isSCurve) { - drawSCurveTriangles(context, P0, P1, P2, P3, parameters); - } else { - drawSimpleTriangle(context, P0, P1, P2, P3, apex, p1Outside, p2Outside, parameters); - } - - context.restore(); - } - } - }, -}); - -function isSegmentSelected(indices, selectedSet, hoveredSet) { - // A segment is selected if any of its four points is in the selection or hover set - for (const idx of indices) { - if (selectedSet.has(idx) || hoveredSet.has(idx)) return true; - } - return false; -} - -function drawSimpleTriangle(ctx, P0, P1, P2, P3, apex, p1Outside, p2Outside, p) { - const anyViolation = p1Outside || p2Outside; - const fillColor = anyViolation ? p.violationColor : p.okColor; - - // Triangle fill - ctx.beginPath(); - ctx.moveTo(P0.x, P0.y); - ctx.lineTo(apex.x, apex.y); - ctx.lineTo(P3.x, P3.y); - ctx.closePath(); - ctx.globalAlpha = p.triangleOpacity; - ctx.fillStyle = fillColor; - ctx.fill(); - ctx.globalAlpha = 1; - - // Dashed triangle stroke - ctx.setLineDash([p.dashLength, p.dashGap]); - ctx.strokeStyle = fillColor; - ctx.lineWidth = p.strokeWidth; - ctx.stroke(); - ctx.setLineDash([]); - - // Apex dot - ctx.beginPath(); - ctx.arc(apex.x, apex.y, p.apexRadius, 0, Math.PI * 2); - ctx.fillStyle = fillColor; - ctx.fill(); - - // Handle extension lines (dotted) - ctx.setLineDash([2, 3]); - ctx.strokeStyle = fillColor; - ctx.globalAlpha = 0.5; - ctx.lineWidth = p.strokeWidth * 0.7; - ctx.beginPath(); - drawLine(ctx, P0, apex); - ctx.stroke(); - ctx.beginPath(); - drawLine(ctx, P3, apex); - ctx.stroke(); - ctx.setLineDash([]); - ctx.globalAlpha = 1; - - // Violation markers - if (state.highlightViolations) { - if (p1Outside) drawViolationMarker(ctx, P1, p); - if (p2Outside) drawViolationMarker(ctx, P2, p); - } -} - -function drawViolationMarker(ctx, pt, p) { - const r = p.apexRadius * 1.8; - ctx.beginPath(); - ctx.arc(pt.x, pt.y, r, 0, Math.PI * 2); - ctx.strokeStyle = p.violationColor; - ctx.lineWidth = p.strokeWidth * 1.5; - ctx.stroke(); - - // Cross - ctx.beginPath(); - ctx.moveTo(pt.x - r * 0.6, pt.y - r * 0.6); - ctx.lineTo(pt.x + r * 0.6, pt.y + r * 0.6); - ctx.moveTo(pt.x + r * 0.6, pt.y - r * 0.6); - ctx.lineTo(pt.x - r * 0.6, pt.y + r * 0.6); - ctx.strokeStyle = p.violationColor; - ctx.stroke(); -} - -function drawSCurveTriangles(ctx, P0, P1, P2, P3, p) { - const M = { x: (P0.x + P3.x) / 2, y: (P0.y + P3.y) / 2 }; - - // Triangle A: P0 — M — P1 - drawHalfTriangle(ctx, P0, M, P1, p.sCurveColor, p); - // Triangle B: P3 — M — P2 - drawHalfTriangle(ctx, P3, M, P2, p.sCurveColor, p); - - // S-curve label - if (state.showSCurveLabels) { - const screenPx = Math.round(9 / ctx.getTransform().a); - ctx.font = `${screenPx}px sans-serif`; - ctx.fillStyle = p.sCurveColor; - ctx.globalAlpha = 0.7; - ctx.textAlign = "center"; - ctx.fillText("S", M.x, M.y - 6); - ctx.globalAlpha = 1; - } -} - -function drawHalfTriangle(ctx, A, B, C, color, p) { - ctx.beginPath(); - ctx.moveTo(A.x, A.y); - ctx.lineTo(B.x, B.y); - ctx.lineTo(C.x, C.y); - ctx.closePath(); - ctx.globalAlpha = p.triangleOpacity * 0.7; - ctx.fillStyle = color; - ctx.fill(); - ctx.globalAlpha = 1; - - ctx.setLineDash([p.dashLength, p.dashGap]); - ctx.strokeStyle = color; - ctx.lineWidth = p.strokeWidth; - ctx.stroke(); - ctx.setLineDash([]); -} diff --git a/src-js/views-editor/editor.html b/src-js/views-editor/editor.html index 249a9f605f..eaf901dba3 100644 --- a/src-js/views-editor/editor.html +++ b/src-js/views-editor/editor.html @@ -1,106 +1,83 @@ - - - Fontra - - - - - - - - + -
+ + -
-
- -
- +
-
- -
+
+
+ +
+ -
+
+ +
-
-
- -
-
-
-
- +
+ +
+
+ +
+
+
+
+ +
+
+
+ +
+
+
-
-
- -
-
- -
-
- -
-
- - -
+
+ +
+
+ +
-
- -
-
-
- + +
+ + + - - + \ No newline at end of file diff --git a/src-js/views-editor/src/edit-tools-hand.js b/src-js/views-editor/src/edit-tools-hand.js index 3d2490880f..a821ccdc31 100644 --- a/src-js/views-editor/src/edit-tools-hand.js +++ b/src-js/views-editor/src/edit-tools-hand.js @@ -1,7 +1,7 @@ import { BaseTool } from "./edit-tools-base.js"; export class HandTool extends BaseTool { - iconPath = "/images/hand.svg"; + iconPath = "/phosphor-icons/hand-grabbing.svg"; identifier = "hand-tool"; handleHover(event) { diff --git a/src-js/views-editor/src/edit-tools-knife.js b/src-js/views-editor/src/edit-tools-knife.js index d5d684e1c3..dd04c923b5 100644 --- a/src-js/views-editor/src/edit-tools-knife.js +++ b/src-js/views-editor/src/edit-tools-knife.js @@ -12,7 +12,7 @@ import { } from "./visualization-layer-definitions.js"; export class KnifeTool extends BaseTool { - iconPath = "/images/knifetool.svg"; + iconPath = "/phosphor-icons/knife.svg"; identifier = "knife-tool"; setCursor() { diff --git a/src-js/views-editor/src/edit-tools-metrics.js b/src-js/views-editor/src/edit-tools-metrics.js index 1762674f3a..5a6282439a 100644 --- a/src-js/views-editor/src/edit-tools-metrics.js +++ b/src-js/views-editor/src/edit-tools-metrics.js @@ -482,7 +482,7 @@ class SidebearingTool extends MetricsBaseTool { positionedGlyph.x + (selection.has("left") || selection.has("shape") ? positionedGlyph.glyph.xAdvance / - (selection.has("right") || selection.has("shape") ? 2 : 1) + (selection.has("right") || selection.has("shape") ? 2 : 1) : 0) ); } @@ -933,7 +933,7 @@ class SidebearingHandle extends BaseMetricHandle { hasSelection(selector) { assert( this.selector.lineIndex === selector.lineIndex && - this.selector.glyphIndex === selector.glyphIndex + this.selector.glyphIndex === selector.glyphIndex ); return !isDisjoint(metricSelectionSet(selector), this._selection); } @@ -941,7 +941,7 @@ class SidebearingHandle extends BaseMetricHandle { toggleSelection(selector, onOff = undefined) { assert( this.selector.lineIndex === selector.lineIndex && - this.selector.glyphIndex === selector.glyphIndex + this.selector.glyphIndex === selector.glyphIndex ); const newSelection = metricSelectionSet(selector); @@ -1508,7 +1508,7 @@ class KerningHandle extends BaseMetricHandle { hasSelection(selector) { assert( this.selector.lineIndex === selector.lineIndex && - this.selector.glyphIndex === selector.glyphIndex + this.selector.glyphIndex === selector.glyphIndex ); return this.selected; } @@ -1516,7 +1516,7 @@ class KerningHandle extends BaseMetricHandle { toggleSelection(selector, onOff = undefined) { assert( this.selector.lineIndex === selector.lineIndex && - this.selector.glyphIndex === selector.glyphIndex + this.selector.glyphIndex === selector.glyphIndex ); this.classList.toggle("selected", onOff); } diff --git a/src-js/views-editor/src/edit-tools-pen.js b/src-js/views-editor/src/edit-tools-pen.js index 3b7f11ca52..4f5df5c61a 100644 --- a/src-js/views-editor/src/edit-tools-pen.js +++ b/src-js/views-editor/src/edit-tools-pen.js @@ -19,7 +19,7 @@ export class PenTool { } export class PenToolCubic extends BaseTool { - iconPath = "/images/pointeradd.svg"; + inlineSVG = ``; identifier = "pen-tool-cubic"; handleHover(event) { @@ -266,7 +266,7 @@ export class PenToolCubic extends BaseTool { } export class PenToolQuad extends PenToolCubic { - iconPath = "/images/pointeraddquad.svg"; + inlineSVG = ``; identifier = "pen-tool-quad"; get curveType() { diff --git a/src-js/views-editor/src/edit-tools-pointer.js b/src-js/views-editor/src/edit-tools-pointer.js index 5e8a4f6c45..cc30af6a59 100644 --- a/src-js/views-editor/src/edit-tools-pointer.js +++ b/src-js/views-editor/src/edit-tools-pointer.js @@ -53,7 +53,7 @@ export class PointerTools { } export class PointerTool extends BaseTool { - iconPath = "/images/pointer.svg"; + inlineSVG = ``; identifier = "pointer-tool"; handleHover(event) { @@ -683,9 +683,9 @@ export class PointerTool extends BaseTool { const resizeHandles = getTransformHandles(bounds, handleMargin + handleSize / 2); const rotationHandles = rotation ? getTransformHandles( - bounds, - handleMargin + (handleSize * rotationHandleSizeFactor) / 2 + handleSize / 2 - ) + bounds, + handleMargin + (handleSize * rotationHandleSizeFactor) / 2 + handleSize / 2 + ) : {}; for (const [handleName, handle] of Object.entries(resizeHandles)) { const inCircle = pointInCircleHandle(point, handle, handleSize); @@ -748,8 +748,8 @@ function getSelectModeFunction(event) { ? difference : symmetricDifference : event[commandKeyProperty] - ? union - : replace; + ? union + : replace; } registerVisualizationLayerDefinition({ @@ -823,7 +823,7 @@ registerVisualizationLayerDefinition({ }); export class PointerToolScale extends PointerTool { - iconPath = "/images/pointerscale.svg"; + inlineSVG = ``; identifier = "pointer-tool-scale"; get scalingEditBehavior() { diff --git a/src-js/views-editor/src/edit-tools-power-ruler.js b/src-js/views-editor/src/edit-tools-power-ruler.js index abea9c16c6..2241b23949 100644 --- a/src-js/views-editor/src/edit-tools-power-ruler.js +++ b/src-js/views-editor/src/edit-tools-power-ruler.js @@ -42,7 +42,7 @@ registerVisualizationLayerDefinition({ }); export class PowerRulerTool extends BaseTool { - iconPath = "/images/ruler.svg"; + iconPath = "/phosphor-icons/ruler.svg"; identifier = "power-ruler-tool"; constructor(editor) { diff --git a/src-js/views-editor/src/edit-tools-shape.js b/src-js/views-editor/src/edit-tools-shape.js index ad77d8df3e..798b09146a 100644 --- a/src-js/views-editor/src/edit-tools-shape.js +++ b/src-js/views-editor/src/edit-tools-shape.js @@ -13,7 +13,7 @@ export class ShapeTool { } export class ShapeToolRect extends BaseTool { - iconPath = "/images/rectangletool.svg"; + iconPath = "/phosphor-icons/rectangle.svg"; identifier = "shape-tool-rectangle"; shapeNames = ["rectangle", "square"]; @@ -196,7 +196,7 @@ export function getUnpackedContoursRect(x, y, width, height, contourType = "cubi } export class ShapeToolEllipse extends ShapeToolRect { - iconPath = "/images/ovaltool.svg"; + iconPath = "/phosphor-icons/circle.svg"; identifier = "shape-tool-ellipse"; shapeNames = ["ellipse", "circle"]; diff --git a/src-js/views-editor/src/edit-tools-triangle-guardian.js b/src-js/views-editor/src/edit-tools-triangle-guardian.js index 466088f00e..a9b0a14196 100644 --- a/src-js/views-editor/src/edit-tools-triangle-guardian.js +++ b/src-js/views-editor/src/edit-tools-triangle-guardian.js @@ -89,7 +89,7 @@ export function pointInTriangle(pt, A, B, C, eps = 0.01) { } export class TriangleGuardianTool extends BaseTool { - iconPath = "/images/triangle-guardian.svg"; + inlineSVG = ``; identifier = "triangle-guardian"; constructor(editor) { @@ -124,7 +124,6 @@ export class TriangleGuardianTool extends BaseTool { import("./panel-triangle-guardian.js").then((mod) => { const TriangleGuardianPanel = mod.default; const panel = new TriangleGuardianPanel(editor); - panel.iconPath = "/images/triangle-guardian.svg"; panel.tool = this; editor.addSidebarPanel(panel, "right"); }); diff --git a/src-js/views-editor/src/editor.js b/src-js/views-editor/src/editor.js index 04ae3e7ae4..24b70b8e01 100644 --- a/src-js/views-editor/src/editor.js +++ b/src-js/views-editor/src/editor.js @@ -100,6 +100,7 @@ import SelectionInfoPanel from "./panel-selection-info.js"; import TextEntryPanel from "./panel-text-entry.js"; import TransformationPanel from "./panel-transformation.js"; import Panel from "./panel.js"; +import SettingsPanel from "./panel-settings.js"; const MIN_CANVAS_SPACE = 200; @@ -1028,10 +1029,17 @@ export class EditorController extends ViewController { "data-tooltipposition": "bottom", }, [ - html.createDomElement("inline-svg", { - class: "tool-icon", - src: toolDef.iconPath, - }), + (() => { + const iconOpts = { class: "tool-icon" }; + if (toolDef.iconPath) { + iconOpts.src = toolDef.iconPath; + } + const iconElement = html.createDomElement("inline-svg", iconOpts); + if (toolDef.inlineSVG) { + iconElement.innerHTML = toolDef.inlineSVG; + } + return iconElement; + })(), ] ); @@ -1048,6 +1056,7 @@ export class EditorController extends ViewController { initSidebars() { this.addSidebar(new Sidebar("left")); this.addSidebar(new Sidebar("right")); + this.addSidebarPanel(new SettingsPanel(this), "left"); this.addSidebarPanel(new TextEntryPanel(this), "left"); this.addSidebarPanel(new GlyphSearchPanel(this), "left"); this.addSidebarPanel(new DesignspaceNavigationPanel(this), "left"); diff --git a/src-js/views-editor/src/panel-characters-glyphs.js b/src-js/views-editor/src/panel-characters-glyphs.js index a455304b78..964c0b53ab 100644 --- a/src-js/views-editor/src/panel-characters-glyphs.js +++ b/src-js/views-editor/src/panel-characters-glyphs.js @@ -22,7 +22,7 @@ import { equalGlyphSelection } from "./scene-controller.js"; export default class CharactersGlyphsPanel extends Panel { identifier = "characters-glyphs"; - iconPath = "/tabler-icons/columns.svg"; + inlineSVG = ``; static styles = ` .main-section { @@ -140,25 +140,25 @@ export default class CharactersGlyphsPanel extends Panel { const menuItems = this.characterList.items.length ? [ - { - title: "Replace this character...", - callback: () => this.replaceSelectedCharacter(), - }, - { - title: "Insert character before this character...", - callback: () => this.insertCharacter(itemIndex), - }, - { - title: "Insert character after this character...", - callback: () => this.insertCharacter(itemIndex + 1), - }, - ] + { + title: "Replace this character...", + callback: () => this.replaceSelectedCharacter(), + }, + { + title: "Insert character before this character...", + callback: () => this.insertCharacter(itemIndex), + }, + { + title: "Insert character after this character...", + callback: () => this.insertCharacter(itemIndex + 1), + }, + ] : [ - { - title: "Insert character...", - callback: () => this.insertCharacter(itemIndex), - }, - ]; + { + title: "Insert character...", + callback: () => this.insertCharacter(itemIndex), + }, + ]; showMenu(menuItems, event); }); @@ -233,12 +233,12 @@ export default class CharactersGlyphsPanel extends Panel { { key: "formattedMessage", title: "Message", - width: 200, + width: 250, minWidth: 100, }, { key: "sourceLocation", - title: "Feature source", + title: "Source location", get: (item) => { const match = item.sourceLocation?.match( /^:(?\d+):(?\d+)/ @@ -253,7 +253,7 @@ export default class CharactersGlyphsPanel extends Panel { href: opentypeFeaturesURL, target: `fontra.fontinfo.${this.editorController.projectIdentifier}`, }, - [item.sourceLocation] + [`${lineno}:${column}`] ); } else { return item.sourceLocation?.split(/\\|\//).at(-1); @@ -285,6 +285,10 @@ export default class CharactersGlyphsPanel extends Panel { background-color: #C8F5; } + .lookup-name { + background-color: #CFC5; + } + .indent-block { display: inline-block; width: 1em; // don't change: it'll change the icon size @@ -416,9 +420,9 @@ export default class CharactersGlyphsPanel extends Panel { const glyphItems = positionedLine.glyphs.map((glyph) => ({ glyphName: glyph.glyphName, - advance: glyph.glyphInfo.x_advance, // TODO: y_advance for vertical - dx: glyph.glyphInfo.x_offset, - dy: glyph.glyphInfo.y_offset, + advance: glyph.glyphInfo.xAdvance, // TODO: yAdvance for vertical + dx: glyph.glyphInfo.xOffset, + dy: glyph.glyphInfo.yOffset, cluster: glyph.cluster, originalAdvance: glyph.glyphInfo.mark ? 0 : Math.round(glyph.glyph.xAdvance), // TODO: yAdvance for vertical })); @@ -590,30 +594,29 @@ export default class CharactersGlyphsPanel extends Panel { const changedElement = changed || messageItem.childChanged ? html.createDomElement("inline-svg", { - class: `indent-block changed-icon ${ - messageItem.childChanged ? "nested" : "" + class: `indent-block changed-icon ${messageItem.childChanged ? "nested" : "" }`, - src: "/tabler-icons/arrow-big-right.svg", - }) + src: "/tabler-icons/arrow-big-right.svg", + }) : html.span({ class: "indent-block changed-icon" }); const foldingChevron = children?.length ? html.createDomElement("inline-svg", { - class: `indent-block folding-icon ${messageItem.open ? "" : "closed"}`, - src: "/tabler-icons/chevron-up.svg", - onclick: (event) => { - event.preventDefault(); - event.stopImmediatePropagation(); - this._toggleShaperMessageItem(messageItem, event.altKey); - }, - }) + class: `indent-block folding-icon ${messageItem.open ? "" : "closed"}`, + src: "/tabler-icons/chevron-up.svg", + onclick: (event) => { + event.preventDefault(); + event.stopImmediatePropagation(); + this._toggleShaperMessageItem(messageItem, event.altKey); + }, + }) : html.span({ class: "indent-block folding-icon" }); messageItem.formattedMessage = html.span({}, [ changedElement, ...repeat(level, () => html.span({ class: "indent-block" })), foldingChevron, - ...formatShaperMessage(message), + ...formatShaperMessage(message, messageItem.lookupName), ]); }); @@ -762,13 +765,18 @@ function sameGlyphNames(items1, items2) { return key1 == key2; } -function formatShaperMessage(message) { - const parts = [message]; +function formatShaperMessage(message, lookupName) { + const parts = [ + message + .replace(/(lookup \d+) (feature '.+?')/, `$2 $1`) + .replace(/lookup \d+/, lookupName ? `$& '${lookupName}'` : "$&"), + ]; for (const [cls, regex] of [ ["ot-tag table-tag", /(?<=table )(GSUB|GPOS)/], ["ot-tag script-tag", /(?<=script tag )'(.+?)'/], ["ot-tag feature-tag", /(?<=feature )'(.+?)'/], + ["ot-tag lookup-name", /(?<=lookup \d+ )'(.+?)'/], ]) { const part = parts.at(-1); const m = part.match(regex); diff --git a/src-js/views-editor/src/panel-designspace-navigation.js b/src-js/views-editor/src/panel-designspace-navigation.js index c3f36b13b1..5417220e2a 100644 --- a/src-js/views-editor/src/panel-designspace-navigation.js +++ b/src-js/views-editor/src/panel-designspace-navigation.js @@ -73,7 +73,7 @@ const LIST_HEADER_ANIMATION_STYLE = ` export default class DesignspaceNavigationPanel extends Panel { identifier = "designspace-navigation"; - iconPath = "/images/sliders.svg"; + iconPath = "/phosphor-icons/sliders-horizontal.svg"; constructor(editorController) { super(editorController); @@ -626,9 +626,9 @@ export default class DesignspaceNavigationPanel extends Panel { const newValue = item === selectedItem || (!selectedItem || - item?.interpolationStatus?.error || - selectedItem?.interpolationStatus?.error || - item?.interpolationStatus?.discreteLocationKey !== discreteLocationKey + item?.interpolationStatus?.error || + selectedItem?.interpolationStatus?.error || + item?.interpolationStatus?.discreteLocationKey !== discreteLocationKey ? false : !item[key]); return { newValue, selectItem: !selectedItem }; @@ -818,11 +818,11 @@ export default class DesignspaceNavigationPanel extends Panel { const onOff = selectedItem?.interpolationStatus?.error ? false : selectedItem && - !items.every( - (item) => - item.editing || - item.interpolationStatus?.discreteLocationKey !== discreteLocationKey - ); + !items.every( + (item) => + item.editing || + item.interpolationStatus?.discreteLocationKey !== discreteLocationKey + ); const editingLayers = {}; for (const item of items) { @@ -1958,8 +1958,8 @@ export default class DesignspaceNavigationPanel extends Panel { inputController.model.copyCurrentLayer && currentLayerGlyph ? currentLayerGlyph : { - xAdvance: glyph.layers[selectedSourceItem.layerName].glyph.xAdvance, - } + xAdvance: glyph.layers[selectedSourceItem.layerName].glyph.xAdvance, + } ), }); @@ -2125,9 +2125,9 @@ export default class DesignspaceNavigationPanel extends Panel { const nestedGlyphs = error.glyphs?.length > 1 ? error.glyphs - .slice(1) - .map((gn) => "→\u00A0" + gn) - .join(" ") + ": " + .slice(1) + .map((gn) => "→\u00A0" + gn) + .join(" ") + ": " : ""; const msg = `${nestedGlyphs}${error.message}`; infoElement.appendChild( @@ -2208,18 +2208,18 @@ function interpolationErrorCell(item, colDesc) { const value = item[colDesc.key]; return value?.error ? html.createDomElement("inline-svg", { - src: value.isModelError - ? "/tabler-icons/alert-circle.svg" - : "/tabler-icons/bug.svg", - style: "width: 1.2em; height: 1.2em; color: var(--fontra-light-red-color);", - onclick: (event) => { - event.stopImmediatePropagation(); - message( - translate("sources.warning.interpolation-incompatibility"), - escapeHTMLCharacters(value.error) - ); - }, - }) + src: value.isModelError + ? "/tabler-icons/alert-circle.svg" + : "/tabler-icons/bug.svg", + style: "width: 1.2em; height: 1.2em; color: var(--fontra-light-red-color);", + onclick: (event) => { + event.stopImmediatePropagation(); + message( + translate("sources.warning.interpolation-incompatibility"), + escapeHTMLCharacters(value.error) + ); + }, + }) : ""; } diff --git a/src-js/views-editor/src/panel-glyph-note.js b/src-js/views-editor/src/panel-glyph-note.js index e947f8b3b8..8f2b315d44 100644 --- a/src-js/views-editor/src/panel-glyph-note.js +++ b/src-js/views-editor/src/panel-glyph-note.js @@ -6,7 +6,7 @@ import Panel from "./panel.js"; export default class GlyphNotePanel extends Panel { identifier = "glyph-note"; - iconPath = "/tabler-icons/notes.svg"; + iconPath = "/phosphor-icons/note.svg"; static styles = ` #glyph-note-textarea { @@ -113,8 +113,8 @@ export default class GlyphNotePanel extends Panel { this.glyphNoteHeaderElement.innerHTML = varGlyph ? `${translate("sidebar.glyph-note.glyph-note-for-glyph", escapeHTML(varGlyph.name))}` : `${translate("sidebar.glyph-note")} ${translate( - "sidebar.glyph-note.no-glyph-selected" - )}`; + "sidebar.glyph-note.no-glyph-selected" + )}`; const glyphNote = varGlyph?.customData["fontra.glyph.note"] ?? ""; this.glyphNoteElement.value = glyphNote; this.glyphNoteElement.disabled = !varGlyph; diff --git a/src-js/views-editor/src/panel-glyph-search.js b/src-js/views-editor/src/panel-glyph-search.js index fa12053a36..594d175a61 100644 --- a/src-js/views-editor/src/panel-glyph-search.js +++ b/src-js/views-editor/src/panel-glyph-search.js @@ -10,7 +10,7 @@ import Panel from "./panel.js"; export default class GlyphSearchPanel extends Panel { identifier = "glyph-search"; - iconPath = "/images/magnifyingglass.svg"; + iconPath = "/phosphor-icons/magnifying-glass.svg"; static styles = ` .glyph-search-section { diff --git a/src-js/views-editor/src/panel-pro-advice.js b/src-js/views-editor/src/panel-pro-advice.js index 61796b68c1..c6056d6f5c 100644 --- a/src-js/views-editor/src/panel-pro-advice.js +++ b/src-js/views-editor/src/panel-pro-advice.js @@ -19,7 +19,7 @@ async function loadKnowledgeBase() { export default class ProAdvicePanel extends Panel { identifier = "pro-advice"; - inlineSVG = ``; + inlineSVG = ``; static styles = ` .pro-advice-container { diff --git a/src-js/views-editor/src/panel-reference-font.js b/src-js/views-editor/src/panel-reference-font.js index 85f3331123..a8ed69e9dc 100644 --- a/src-js/views-editor/src/panel-reference-font.js +++ b/src-js/views-editor/src/panel-reference-font.js @@ -185,7 +185,7 @@ async function writeFontFileToOPFS(fileName, file) { export default class ReferenceFontPanel extends Panel { identifier = "reference-font"; - iconPath = "/images/reference.svg"; + iconPath = "/phosphor-icons/book-open.svg"; static styles = ` .reference-font-section { diff --git a/src-js/views-editor/src/panel-related-glyphs.js b/src-js/views-editor/src/panel-related-glyphs.js index 79ad0a1992..ee7b675cbd 100644 --- a/src-js/views-editor/src/panel-related-glyphs.js +++ b/src-js/views-editor/src/panel-related-glyphs.js @@ -15,7 +15,7 @@ import { showMenu } from "@fontra/web-components/menu-panel.js"; export default class RelatedGlyphPanel extends Panel { identifier = "related-glyphs"; - iconPath = "/tabler-icons/binary-tree-2.svg"; + iconPath = "/phosphor-icons/git-branch.svg"; static styles = ` glyph-cell-view { @@ -106,9 +106,9 @@ export default class RelatedGlyphPanel extends Panel { const glyphName = this.sceneController.sceneSettings.selectedGlyphName; const character = glyphName ? getCharFromCodePoint( - this.fontController.codePointForGlyph(glyphName) || - getCodePointFromGlyphName(glyphName) - ) || "" + this.fontController.codePointForGlyph(glyphName) || + getCodePointFromGlyphName(glyphName) + ) || "" : ""; const codePoint = character ? character.codePointAt(0) : undefined; diff --git a/src-js/views-editor/src/panel-selection-info.js b/src-js/views-editor/src/panel-selection-info.js index db54c51be3..64523dbbde 100644 --- a/src-js/views-editor/src/panel-selection-info.js +++ b/src-js/views-editor/src/panel-selection-info.js @@ -25,7 +25,7 @@ import Panel from "./panel.js"; export default class SelectionInfoPanel extends Panel { identifier = "selection-info"; - iconPath = "/images/info.svg"; + iconPath = "/phosphor-icons/info.svg"; constructor(editorController) { super(editorController); @@ -188,8 +188,8 @@ export default class SelectionInfoPanel extends Panel { this.fontController.readOnly ? "sidebar.selection-info.glyph-locking.tooltip.read-only" : glyphLocked - ? "sidebar.selection-info.glyph-locking.tooltip.unlock" - : "sidebar.selection-info.glyph-locking.tooltip.lock" + ? "sidebar.selection-info.glyph-locking.tooltip.unlock" + : "sidebar.selection-info.glyph-locking.tooltip.lock" ), "data-tooltipposition": "left", }), @@ -464,7 +464,7 @@ export default class SelectionInfoPanel extends Panel { const value = component.location[axis.name]; const currentGlobalAxisLocationValue = this.sceneController.sceneSettingsController.model.fontLocationSourceMapped[ - axisName + axisName ] ?? axis.defaultValue; locationItems.push({ @@ -918,9 +918,9 @@ export default class SelectionInfoPanel extends Panel { this.fontController.glyphMap, (nameObject, name) => nameObject[name] || - (sidebearingOpposites[metricProperty] && - name.endsWith("!") && - nameObject[name.slice(0, -1)]) + (sidebearingOpposites[metricProperty] && + name.endsWith("!") && + nameObject[name.slice(0, -1)]) ? 1 : undefined ); diff --git a/src-js/views-editor/src/panel-settings.js b/src-js/views-editor/src/panel-settings.js new file mode 100644 index 0000000000..fc0b0f8f88 --- /dev/null +++ b/src-js/views-editor/src/panel-settings.js @@ -0,0 +1,177 @@ +import { applicationSettingsController } from "@fontra/core/application-settings.js"; +import { themeController } from "@fontra/core/theme-settings.js"; +import * as html from "@fontra/core/html-utils.js"; +import { translate } from "@fontra/core/localization.js"; +import Panel from "./panel.js"; + +export default class SettingsPanel extends Panel { + identifier = "settings"; + inlineSVG = ``; + + _visible = false; + + constructor(editorController) { + super(editorController); + } + + getContentElement() { + this._container = html.div({ + class: "panel-section panel-section--scrollable", + style: "height: 100%; box-sizing: border-box;", + }); + return html.div({ class: "panel" }, [this._container]); + } + + async toggle(on, focus) { + this._visible = on; + if (on) { + this._render(); + } + } + + _render() { + this._container.innerHTML = ""; + + const t = (key, fallback) => { + const res = translate(key); + return res === key ? fallback : res; + }; + + // ── Section: Theme ────────────────────────────────────────────────── + this._container.appendChild(this._makeHeader(t("sidebar.settings.theme", "Theme"))); + this._container.appendChild( + this._makeCheckbox( + "setting-theme-dark", + t("sidebar.settings.dark-mode", "Dark Mode"), + themeController.model.theme === "dark", + (checked) => { + themeController.model.theme = checked ? "dark" : "light"; + } + ) + ); + + // ── Section: Toolbar ──────────────────────────────────────────────── + this._container.appendChild( + this._makeHeader(t("sidebar.settings.toolbar", "Toolbar")) + ); + this._container.appendChild( + this._makeCheckbox( + "setting-toolbar-bottom", + t("sidebar.settings.toolbar-bottom", "Toolbar at Bottom"), + applicationSettingsController.model.toolsMenuPosition === "bottom", + (checked) => { + applicationSettingsController.model.toolsMenuPosition = checked + ? "bottom" + : "top"; + } + ) + ); + + // ── Section: Editor Appearance (Visualization Layers) ─────────────── + this._container.appendChild( + this._makeHeader( + t("action-topics.glyph-editor-appearance", "Editor Appearance") + ) + ); + const layerDefs = this.editorController.visualizationLayers.definitions.filter( + (layer) => layer.userSwitchable + ); + for (const layerDef of layerDefs) { + this._container.appendChild( + this._makeCheckbox( + `setting-layer-${layerDef.identifier}`, + t(layerDef.name, layerDef.name), + !!this.editorController.visualizationLayersSettings.model[layerDef.identifier], + (checked) => { + this.editorController.visualizationLayersSettings.model[ + layerDef.identifier + ] = checked; + } + ) + ); + } + + // ── Section: Application Settings ─────────────────────────────────── + this._container.appendChild( + this._makeHeader(t("sidebar.settings.application", "Application Settings")) + ); + + const boolSettings = [ + { + key: "rectSelectLiveModifierKeys", + label: t( + "sidebar.settings.rectSelectLiveModifierKeys", + "Live Modifier Keys for Rect Select" + ), + }, + { + key: "alwaysShowGlobalAxesInComponentLocation", + label: t( + "sidebar.settings.alwaysShowGlobalAxesInComponentLocation", + "Always Show Global Axes in Component Location" + ), + }, + { + key: "sortComponentLocationGlyphAxes", + label: t( + "sidebar.settings.sortComponentLocationGlyphAxes", + "Sort Component Location Glyph Axes" + ), + }, + { + key: "disableAdHocMarks", + label: t("sidebar.settings.disableAdHocMarks", "Disable Ad-Hoc Marks"), + }, + { + key: "shapingDebuggerShowIneffectiveItems", + label: t( + "sidebar.settings.shapingDebuggerShowIneffectiveItems", + "Show Ineffective Items in Shaping Debugger" + ), + }, + ]; + + for (const { key, label } of boolSettings) { + this._container.appendChild( + this._makeCheckbox( + `setting-app-${key}`, + label, + !!applicationSettingsController.model[key], + (checked) => { + applicationSettingsController.model[key] = checked; + } + ) + ); + } + } + + // ── Helpers ───────────────────────────────────────────────────────────── + + _makeHeader(title) { + return html.div( + { + style: + "font-weight: 600; font-size: 0.75em; text-transform: uppercase; letter-spacing: 0.05em; opacity: 0.6; margin-top: 1.2em; margin-bottom: 0.4em;", + }, + [title] + ); + } + + _makeCheckbox(id, label, checked, onChange) { + const checkbox = html.input({ + type: "checkbox", + id, + onchange: (e) => onChange(e.target.checked), + }); + checkbox.checked = checked; + + const lbl = html.label({ for: id, style: "cursor: pointer;" }, [label]); + + return html.div( + { class: "panel-section--checkbox", style: "margin-bottom: 0.35em;" }, + [checkbox, lbl] + ); + } +} + +customElements.define("panel-settings", SettingsPanel); diff --git a/src-js/views-editor/src/panel-text-entry.js b/src-js/views-editor/src/panel-text-entry.js index 30c97a3ab5..a55210e8c2 100644 --- a/src-js/views-editor/src/panel-text-entry.js +++ b/src-js/views-editor/src/panel-text-entry.js @@ -103,7 +103,7 @@ const dynamicFeatures = new Set([ export default class TextEntryPanel extends Panel { identifier = "text-entry"; - iconPath = "/images/texttool.svg"; + inlineSVG = ``; static styles = ` .text-entry-section { @@ -681,8 +681,8 @@ export default class TextEntryPanel extends Panel { horizontalOnFeatures.has(tag) && emulateDefaultValue ? true : dynamicFeatures.has(tag) - ? undefined - : false; + ? undefined + : false; element.append( ...featureTagButton(this.textSettingsController, tag, label, { diff --git a/src-js/views-editor/src/panel-transformation.js b/src-js/views-editor/src/panel-transformation.js index 4060cec18f..96bd30c5a0 100644 --- a/src-js/views-editor/src/panel-transformation.js +++ b/src-js/views-editor/src/panel-transformation.js @@ -29,7 +29,7 @@ import Panel from "./panel.js"; export default class TransformationPanel extends Panel { identifier = "selection-transformation"; - iconPath = "/tabler-icons/shape.svg"; + inlineSVG = ``; static stylesForm = ` .ui-form-label { @@ -201,7 +201,7 @@ export default class TransformationPanel extends Panel { "class": "ui-form-radio-button", "checked": keyX === this.transformParameters.originX && - keyY === this.transformParameters.originY + keyY === this.transformParameters.originY ? "checked" : "", "onclick": (event) => this._changeOrigin(keyX, keyY), @@ -680,13 +680,13 @@ export default class TransformationPanel extends Panel { const settings = this.sceneController.sceneSettings; const bounds = glyph && - settings.selectedGlyph?.isEditing && - settings.selectedGlyphName && - settings.selection?.size + settings.selectedGlyph?.isEditing && + settings.selectedGlyphName && + settings.selection?.size ? glyph.getSelectionBounds( - this.sceneController.selection, - this.fontController.getBackgroundImageBoundsFunc - ) + this.sceneController.selection, + this.fontController.getBackgroundImageBoundsFunc + ) : null; const { width, height } = bounds ? rectSize(bounds) : { width: null, height: null }; @@ -941,7 +941,7 @@ export default class TransformationPanel extends Panel { const contourStartIndex = !contourIndex ? 0 : layerGlyphController.instance.path.contourInfo[contourIndex - 1].endPoint + - 1; + 1; const contourEndIndex = path.contourInfo[contourIndex].endPoint + 1; const contourPoints = Array.from(range(contourStartIndex, contourEndIndex)); @@ -1231,10 +1231,10 @@ class DistributeObjectsDescriptor { compareObjects(a, b, glyphController, getBackgroundImageBoundsFunc) { return ( rectCenter(a.computeBounds(glyphController, getBackgroundImageBoundsFunc))[ - this.deltaProperty + this.deltaProperty ] - rectCenter(b.computeBounds(glyphController, getBackgroundImageBoundsFunc))[ - this.deltaProperty + this.deltaProperty ] ); } diff --git a/src-js/views-editor/src/panel-triangle-guardian.js b/src-js/views-editor/src/panel-triangle-guardian.js index b8689ce229..1555f44b0a 100644 --- a/src-js/views-editor/src/panel-triangle-guardian.js +++ b/src-js/views-editor/src/panel-triangle-guardian.js @@ -18,7 +18,7 @@ const TRIANGLE_GUARDIAN_IDENTIFIER = "fontra.triangle.guardian"; export default class TriangleGuardianPanel extends Panel { identifier = "triangle-guardian-panel"; - iconPath = "/images/triangle-guardian.svg"; + inlineSVG = ``; static styles = ` #tg-panel { padding: 12px; display: flex; flex-direction: column; gap: 12px; } diff --git a/src-js/views-editor/src/scene-model.js b/src-js/views-editor/src/scene-model.js index 0ce1c324a1..5fd9b8c505 100644 --- a/src-js/views-editor/src/scene-model.js +++ b/src-js/views-editor/src/scene-model.js @@ -1383,8 +1383,8 @@ class LineSetter { const codePoint = isUndefined ? fallbackCodePoint : codePointForGlyph; glyphs.push({ - x: x + glyphInfo.x_offset, - y: y + glyphInfo.y_offset, + x: x + glyphInfo.xOffset, + y: y + glyphInfo.yOffset, kernValue, glyph: glyphInstance, varGlyph, @@ -1399,8 +1399,8 @@ class LineSetter { glyphInfo, }); - x += glyphInfo.x_advance + xAdvanceLayerDifference; - y += glyphInfo.y_advance + yAdvanceLayerDifference; + x += glyphInfo.xAdvance + xAdvanceLayerDifference; + y += glyphInfo.yAdvance + yAdvanceLayerDifference; } let offset = 0; diff --git a/src-js/views-fontinfo/fontinfo.html b/src-js/views-fontinfo/fontinfo.html index 16b0ffa6b2..6daa6afb90 100644 --- a/src-js/views-fontinfo/fontinfo.html +++ b/src-js/views-fontinfo/fontinfo.html @@ -1,20 +1,24 @@ - - - - - - - Fontra Font Info - - - -
-
-
-
-
- - - + + + + + + + + + Fontra Font Info + + + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src-js/views-fontinfo/src/panel-opentype-feature-code.js b/src-js/views-fontinfo/src/panel-opentype-feature-code.js index b160c0b0f1..cb660c00cc 100644 --- a/src-js/views-fontinfo/src/panel-opentype-feature-code.js +++ b/src-js/views-fontinfo/src/panel-opentype-feature-code.js @@ -504,7 +504,7 @@ export class OpenTypeFeatureCodePanel extends BaseInfoPanel { ], 0 ), - scrollIntoView: true, + effects: EditorView.scrollIntoView(spanFrom, { y: "center" }), }); this.editorView.focus(); diff --git a/src-js/views-fontoverview/fontoverview.html b/src-js/views-fontoverview/fontoverview.html index ad8c52f185..eee38ae62d 100644 --- a/src-js/views-fontoverview/fontoverview.html +++ b/src-js/views-fontoverview/fontoverview.html @@ -1,21 +1,25 @@ - - - - - - - Fontra Font Overview - - - -
-
-
- -
-
- - - + + + + + + + + + Fontra Font Overview + + + + +
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/src/fontra/backends/base.py b/src/fontra/backends/base.py index 9fdc9cfae9..33ebd7089d 100644 --- a/src/fontra/backends/base.py +++ b/src/fontra/backends/base.py @@ -93,4 +93,7 @@ async def putGlyphInfos(self, glyphInfos: dict[str, Any]) -> None: async def putConditionalSubstitutions( self, substitutions: ConditionalSubstitutions ) -> None: - raise NotImplementedError() + if substitutions.rules: + raise NotImplementedError( + "writing conditional substitutions is not supported" + ) diff --git a/test-common/fonts/MutatorSans.fontra/glyphs/G^1.json b/test-common/fonts/MutatorSans.fontra/glyphs/G^1.json index 638d1f731b..0cef0a9f0f 100644 --- a/test-common/fonts/MutatorSans.fontra/glyphs/G^1.json +++ b/test-common/fonts/MutatorSans.fontra/glyphs/G^1.json @@ -494,11 +494,41 @@ }, { "x": 90, -"y": 599, +"y": 424, "type": "cubic" }, { -"x": 161, +"x": 96, +"y": 481, +"type": "cubic" +}, +{ +"x": 107, +"y": 526, +"smooth": true +}, +{ +"x": 118, +"y": 571, +"type": "cubic" +}, +{ +"x": 133, +"y": 604, +"type": "cubic" +}, +{ +"x": 152, +"y": 627, +"smooth": true +}, +{ +"x": 180, +"y": 661, +"type": "cubic" +}, +{ +"x": 216, "y": 674, "type": "cubic" }, @@ -513,13 +543,43 @@ "smooth": true }, { -"x": 348, +"x": 304, "y": 674, "type": "cubic" }, { -"x": 396, -"y": 618, +"x": 334, +"y": 662, +"type": "cubic" +}, +{ +"x": 357, +"y": 633, +"smooth": true +}, +{ +"x": 370, +"y": 617, +"type": "cubic" +}, +{ +"x": 380, +"y": 596, +"type": "cubic" +}, +{ +"x": 388, +"y": 569, +"smooth": true +}, +{ +"x": 398, +"y": 536, +"type": "cubic" +}, +{ +"x": 406, +"y": 494, "type": "cubic" }, { @@ -531,12 +591,42 @@ "y": 447 }, { -"x": 432, -"y": 638, +"x": 443.09581233528496, +"y": 519.0310895095237, "type": "cubic" }, { -"x": 370, +"x": 437.38945954345667, +"y": 608.9326485478521, +"type": "cubic" +}, +{ +"x": 389, +"y": 667, +"smooth": true +}, +{ +"x": 376, +"y": 683, +"type": "cubic" +}, +{ +"x": 359, +"y": 693, +"type": "cubic" +}, +{ +"x": 338, +"y": 700, +"smooth": true +}, +{ +"x": 318, +"y": 707, +"type": "cubic" +}, +{ +"x": 294, "y": 710, "type": "cubic" }, @@ -551,13 +641,28 @@ "smooth": true }, { -"x": 134, +"x": 205, "y": 710, "type": "cubic" }, { +"x": 163, +"y": 696, +"type": "cubic" +}, +{ +"x": 130, +"y": 662, +"smooth": true +}, +{ +"x": 79, +"y": 610, +"type": "cubic" +}, +{ "x": 50, -"y": 615, +"y": 512, "type": "cubic" }, {