From 54dbcfb8e6ba47c20fad0f37930f50d9423cf4e8 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Wed, 26 Apr 2017 18:17:30 -0700 Subject: [PATCH] working custom encoding --- pitfall/pitfall/glyph-list.rkt | 645 ++++++++++++++++++++++++ pitfall/pitfall/sample-ext-encoding.rkt | 143 ++++++ 2 files changed, 788 insertions(+) create mode 100644 pitfall/pitfall/glyph-list.rkt create mode 100644 pitfall/pitfall/sample-ext-encoding.rkt diff --git a/pitfall/pitfall/glyph-list.rkt b/pitfall/pitfall/glyph-list.rkt new file mode 100644 index 00000000..f65d4fe4 --- /dev/null +++ b/pitfall/pitfall/glyph-list.rkt @@ -0,0 +1,645 @@ +#lang at-exp br +#| +# ----------------------------------------------------------- +# Copyright 2002, 2010, 2015 Adobe Systems Incorporated. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or +# without modification, are permitted provided that the +# following conditions are met: +# +# Redistributions of source code must retain the above +# copyright notice, this list of conditions and the following +# disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials +# provided with the distribution. +# +# Neither the name of Adobe Systems Incorporated nor the names +# of its contributors may be used to endorse or promote +# products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# ----------------------------------------------------------- +# Name: Adobe Glyph List +# Table version: 2.0 +# Date: September 20, 2002 +# URL: https://github.com/adobe-type-tools/agl-aglfn +# +# Format: two semicolon-delimited fields: +# (1) glyph name--upper/lowercase letters and digits +# (2) Unicode scalar value--four uppercase hexadecimal digits + +|# + +(define raw-list + @string-append{ + 0041;A;LATIN CAPITAL LETTER A + 00C6;AE;LATIN CAPITAL LETTER AE + 01FC;AEacute;LATIN CAPITAL LETTER AE WITH ACUTE + 00C1;Aacute;LATIN CAPITAL LETTER A WITH ACUTE + 0102;Abreve;LATIN CAPITAL LETTER A WITH BREVE + 00C2;Acircumflex;LATIN CAPITAL LETTER A WITH CIRCUMFLEX + 00C4;Adieresis;LATIN CAPITAL LETTER A WITH DIAERESIS + 00C0;Agrave;LATIN CAPITAL LETTER A WITH GRAVE + 0391;Alpha;GREEK CAPITAL LETTER ALPHA + 0386;Alphatonos;GREEK CAPITAL LETTER ALPHA WITH TONOS + 0100;Amacron;LATIN CAPITAL LETTER A WITH MACRON + 0104;Aogonek;LATIN CAPITAL LETTER A WITH OGONEK + 00C5;Aring;LATIN CAPITAL LETTER A WITH RING ABOVE + 01FA;Aringacute;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + 00C3;Atilde;LATIN CAPITAL LETTER A WITH TILDE + 0042;B;LATIN CAPITAL LETTER B + 0392;Beta;GREEK CAPITAL LETTER BETA + 0043;C;LATIN CAPITAL LETTER C + 0106;Cacute;LATIN CAPITAL LETTER C WITH ACUTE + 010C;Ccaron;LATIN CAPITAL LETTER C WITH CARON + 00C7;Ccedilla;LATIN CAPITAL LETTER C WITH CEDILLA + 0108;Ccircumflex;LATIN CAPITAL LETTER C WITH CIRCUMFLEX + 010A;Cdotaccent;LATIN CAPITAL LETTER C WITH DOT ABOVE + 03A7;Chi;GREEK CAPITAL LETTER CHI + 0044;D;LATIN CAPITAL LETTER D + 010E;Dcaron;LATIN CAPITAL LETTER D WITH CARON + 0110;Dcroat;LATIN CAPITAL LETTER D WITH STROKE + 2206;Delta;INCREMENT + 0045;E;LATIN CAPITAL LETTER E + 00C9;Eacute;LATIN CAPITAL LETTER E WITH ACUTE + 0114;Ebreve;LATIN CAPITAL LETTER E WITH BREVE + 011A;Ecaron;LATIN CAPITAL LETTER E WITH CARON + 00CA;Ecircumflex;LATIN CAPITAL LETTER E WITH CIRCUMFLEX + 00CB;Edieresis;LATIN CAPITAL LETTER E WITH DIAERESIS + 0116;Edotaccent;LATIN CAPITAL LETTER E WITH DOT ABOVE + 00C8;Egrave;LATIN CAPITAL LETTER E WITH GRAVE + 0112;Emacron;LATIN CAPITAL LETTER E WITH MACRON + 014A;Eng;LATIN CAPITAL LETTER ENG + 0118;Eogonek;LATIN CAPITAL LETTER E WITH OGONEK + 0395;Epsilon;GREEK CAPITAL LETTER EPSILON + 0388;Epsilontonos;GREEK CAPITAL LETTER EPSILON WITH TONOS + 0397;Eta;GREEK CAPITAL LETTER ETA + 0389;Etatonos;GREEK CAPITAL LETTER ETA WITH TONOS + 00D0;Eth;LATIN CAPITAL LETTER ETH + 20AC;Euro;EURO SIGN + 0046;F;LATIN CAPITAL LETTER F + 0047;G;LATIN CAPITAL LETTER G + 0393;Gamma;GREEK CAPITAL LETTER GAMMA + 011E;Gbreve;LATIN CAPITAL LETTER G WITH BREVE + 01E6;Gcaron;LATIN CAPITAL LETTER G WITH CARON + 011C;Gcircumflex;LATIN CAPITAL LETTER G WITH CIRCUMFLEX + 0120;Gdotaccent;LATIN CAPITAL LETTER G WITH DOT ABOVE + 0048;H;LATIN CAPITAL LETTER H + 25CF;H18533;BLACK CIRCLE + 25AA;H18543;BLACK SMALL SQUARE + 25AB;H18551;WHITE SMALL SQUARE + 25A1;H22073;WHITE SQUARE + 0126;Hbar;LATIN CAPITAL LETTER H WITH STROKE + 0124;Hcircumflex;LATIN CAPITAL LETTER H WITH CIRCUMFLEX + 0049;I;LATIN CAPITAL LETTER I + 0132;IJ;LATIN CAPITAL LIGATURE IJ + 00CD;Iacute;LATIN CAPITAL LETTER I WITH ACUTE + 012C;Ibreve;LATIN CAPITAL LETTER I WITH BREVE + 00CE;Icircumflex;LATIN CAPITAL LETTER I WITH CIRCUMFLEX + 00CF;Idieresis;LATIN CAPITAL LETTER I WITH DIAERESIS + 0130;Idotaccent;LATIN CAPITAL LETTER I WITH DOT ABOVE + 2111;Ifraktur;BLACK-LETTER CAPITAL I + 00CC;Igrave;LATIN CAPITAL LETTER I WITH GRAVE + 012A;Imacron;LATIN CAPITAL LETTER I WITH MACRON + 012E;Iogonek;LATIN CAPITAL LETTER I WITH OGONEK + 0399;Iota;GREEK CAPITAL LETTER IOTA + 03AA;Iotadieresis;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA + 038A;Iotatonos;GREEK CAPITAL LETTER IOTA WITH TONOS + 0128;Itilde;LATIN CAPITAL LETTER I WITH TILDE + 004A;J;LATIN CAPITAL LETTER J + 0134;Jcircumflex;LATIN CAPITAL LETTER J WITH CIRCUMFLEX + 004B;K;LATIN CAPITAL LETTER K + 039A;Kappa;GREEK CAPITAL LETTER KAPPA + 004C;L;LATIN CAPITAL LETTER L + 0139;Lacute;LATIN CAPITAL LETTER L WITH ACUTE + 039B;Lambda;GREEK CAPITAL LETTER LAMDA + 013D;Lcaron;LATIN CAPITAL LETTER L WITH CARON + 013F;Ldot;LATIN CAPITAL LETTER L WITH MIDDLE DOT + 0141;Lslash;LATIN CAPITAL LETTER L WITH STROKE + 004D;M;LATIN CAPITAL LETTER M + 039C;Mu;GREEK CAPITAL LETTER MU + 004E;N;LATIN CAPITAL LETTER N + 0143;Nacute;LATIN CAPITAL LETTER N WITH ACUTE + 0147;Ncaron;LATIN CAPITAL LETTER N WITH CARON + 00D1;Ntilde;LATIN CAPITAL LETTER N WITH TILDE + 039D;Nu;GREEK CAPITAL LETTER NU + 004F;O;LATIN CAPITAL LETTER O + 0152;OE;LATIN CAPITAL LIGATURE OE + 00D3;Oacute;LATIN CAPITAL LETTER O WITH ACUTE + 014E;Obreve;LATIN CAPITAL LETTER O WITH BREVE + 00D4;Ocircumflex;LATIN CAPITAL LETTER O WITH CIRCUMFLEX + 00D6;Odieresis;LATIN CAPITAL LETTER O WITH DIAERESIS + 00D2;Ograve;LATIN CAPITAL LETTER O WITH GRAVE + 01A0;Ohorn;LATIN CAPITAL LETTER O WITH HORN + 0150;Ohungarumlaut;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE + 014C;Omacron;LATIN CAPITAL LETTER O WITH MACRON + 2126;Omega;OHM SIGN + 038F;Omegatonos;GREEK CAPITAL LETTER OMEGA WITH TONOS + 039F;Omicron;GREEK CAPITAL LETTER OMICRON + 038C;Omicrontonos;GREEK CAPITAL LETTER OMICRON WITH TONOS + 00D8;Oslash;LATIN CAPITAL LETTER O WITH STROKE + 01FE;Oslashacute;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + 00D5;Otilde;LATIN CAPITAL LETTER O WITH TILDE + 0050;P;LATIN CAPITAL LETTER P + 03A6;Phi;GREEK CAPITAL LETTER PHI + 03A0;Pi;GREEK CAPITAL LETTER PI + 03A8;Psi;GREEK CAPITAL LETTER PSI + 0051;Q;LATIN CAPITAL LETTER Q + 0052;R;LATIN CAPITAL LETTER R + 0154;Racute;LATIN CAPITAL LETTER R WITH ACUTE + 0158;Rcaron;LATIN CAPITAL LETTER R WITH CARON + 211C;Rfraktur;BLACK-LETTER CAPITAL R + 03A1;Rho;GREEK CAPITAL LETTER RHO + 0053;S;LATIN CAPITAL LETTER S + 250C;SF010000;BOX DRAWINGS LIGHT DOWN AND RIGHT + 2514;SF020000;BOX DRAWINGS LIGHT UP AND RIGHT + 2510;SF030000;BOX DRAWINGS LIGHT DOWN AND LEFT + 2518;SF040000;BOX DRAWINGS LIGHT UP AND LEFT + 253C;SF050000;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL + 252C;SF060000;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL + 2534;SF070000;BOX DRAWINGS LIGHT UP AND HORIZONTAL + 251C;SF080000;BOX DRAWINGS LIGHT VERTICAL AND RIGHT + 2524;SF090000;BOX DRAWINGS LIGHT VERTICAL AND LEFT + 2500;SF100000;BOX DRAWINGS LIGHT HORIZONTAL + 2502;SF110000;BOX DRAWINGS LIGHT VERTICAL + 2561;SF190000;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE + 2562;SF200000;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE + 2556;SF210000;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE + 2555;SF220000;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE + 2563;SF230000;BOX DRAWINGS DOUBLE VERTICAL AND LEFT + 2551;SF240000;BOX DRAWINGS DOUBLE VERTICAL + 2557;SF250000;BOX DRAWINGS DOUBLE DOWN AND LEFT + 255D;SF260000;BOX DRAWINGS DOUBLE UP AND LEFT + 255C;SF270000;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE + 255B;SF280000;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE + 255E;SF360000;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE + 255F;SF370000;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE + 255A;SF380000;BOX DRAWINGS DOUBLE UP AND RIGHT + 2554;SF390000;BOX DRAWINGS DOUBLE DOWN AND RIGHT + 2569;SF400000;BOX DRAWINGS DOUBLE UP AND HORIZONTAL + 2566;SF410000;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL + 2560;SF420000;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT + 2550;SF430000;BOX DRAWINGS DOUBLE HORIZONTAL + 256C;SF440000;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL + 2567;SF450000;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE + 2568;SF460000;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE + 2564;SF470000;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE + 2565;SF480000;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE + 2559;SF490000;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE + 2558;SF500000;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE + 2552;SF510000;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE + 2553;SF520000;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE + 256B;SF530000;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE + 256A;SF540000;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE + 015A;Sacute;LATIN CAPITAL LETTER S WITH ACUTE + 0160;Scaron;LATIN CAPITAL LETTER S WITH CARON + 015E;Scedilla;LATIN CAPITAL LETTER S WITH CEDILLA + 015C;Scircumflex;LATIN CAPITAL LETTER S WITH CIRCUMFLEX + 03A3;Sigma;GREEK CAPITAL LETTER SIGMA + 0054;T;LATIN CAPITAL LETTER T + 03A4;Tau;GREEK CAPITAL LETTER TAU + 0166;Tbar;LATIN CAPITAL LETTER T WITH STROKE + 0164;Tcaron;LATIN CAPITAL LETTER T WITH CARON + 0398;Theta;GREEK CAPITAL LETTER THETA + 00DE;Thorn;LATIN CAPITAL LETTER THORN + 0055;U;LATIN CAPITAL LETTER U + 00DA;Uacute;LATIN CAPITAL LETTER U WITH ACUTE + 016C;Ubreve;LATIN CAPITAL LETTER U WITH BREVE + 00DB;Ucircumflex;LATIN CAPITAL LETTER U WITH CIRCUMFLEX + 00DC;Udieresis;LATIN CAPITAL LETTER U WITH DIAERESIS + 00D9;Ugrave;LATIN CAPITAL LETTER U WITH GRAVE + 01AF;Uhorn;LATIN CAPITAL LETTER U WITH HORN + 0170;Uhungarumlaut;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE + 016A;Umacron;LATIN CAPITAL LETTER U WITH MACRON + 0172;Uogonek;LATIN CAPITAL LETTER U WITH OGONEK + 03A5;Upsilon;GREEK CAPITAL LETTER UPSILON + 03D2;Upsilon1;GREEK UPSILON WITH HOOK SYMBOL + 03AB;Upsilondieresis;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA + 038E;Upsilontonos;GREEK CAPITAL LETTER UPSILON WITH TONOS + 016E;Uring;LATIN CAPITAL LETTER U WITH RING ABOVE + 0168;Utilde;LATIN CAPITAL LETTER U WITH TILDE + 0056;V;LATIN CAPITAL LETTER V + 0057;W;LATIN CAPITAL LETTER W + 1E82;Wacute;LATIN CAPITAL LETTER W WITH ACUTE + 0174;Wcircumflex;LATIN CAPITAL LETTER W WITH CIRCUMFLEX + 1E84;Wdieresis;LATIN CAPITAL LETTER W WITH DIAERESIS + 1E80;Wgrave;LATIN CAPITAL LETTER W WITH GRAVE + 0058;X;LATIN CAPITAL LETTER X + 039E;Xi;GREEK CAPITAL LETTER XI + 0059;Y;LATIN CAPITAL LETTER Y + 00DD;Yacute;LATIN CAPITAL LETTER Y WITH ACUTE + 0176;Ycircumflex;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX + 0178;Ydieresis;LATIN CAPITAL LETTER Y WITH DIAERESIS + 1EF2;Ygrave;LATIN CAPITAL LETTER Y WITH GRAVE + 005A;Z;LATIN CAPITAL LETTER Z + 0179;Zacute;LATIN CAPITAL LETTER Z WITH ACUTE + 017D;Zcaron;LATIN CAPITAL LETTER Z WITH CARON + 017B;Zdotaccent;LATIN CAPITAL LETTER Z WITH DOT ABOVE + 0396;Zeta;GREEK CAPITAL LETTER ZETA + 0061;a;LATIN SMALL LETTER A + 00E1;aacute;LATIN SMALL LETTER A WITH ACUTE + 0103;abreve;LATIN SMALL LETTER A WITH BREVE + 00E2;acircumflex;LATIN SMALL LETTER A WITH CIRCUMFLEX + 00B4;acute;ACUTE ACCENT + 0301;acutecomb;COMBINING ACUTE ACCENT + 00E4;adieresis;LATIN SMALL LETTER A WITH DIAERESIS + 00E6;ae;LATIN SMALL LETTER AE + 01FD;aeacute;LATIN SMALL LETTER AE WITH ACUTE + 00E0;agrave;LATIN SMALL LETTER A WITH GRAVE + 2135;aleph;ALEF SYMBOL + 03B1;alpha;GREEK SMALL LETTER ALPHA + 03AC;alphatonos;GREEK SMALL LETTER ALPHA WITH TONOS + 0101;amacron;LATIN SMALL LETTER A WITH MACRON + 0026;ampersand;AMPERSAND + 2220;angle;ANGLE + 2329;angleleft;LEFT-POINTING ANGLE BRACKET + 232A;angleright;RIGHT-POINTING ANGLE BRACKET + 0387;anoteleia;GREEK ANO TELEIA + 0105;aogonek;LATIN SMALL LETTER A WITH OGONEK + 2248;approxequal;ALMOST EQUAL TO + 00E5;aring;LATIN SMALL LETTER A WITH RING ABOVE + 01FB;aringacute;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE + 2194;arrowboth;LEFT RIGHT ARROW + 21D4;arrowdblboth;LEFT RIGHT DOUBLE ARROW + 21D3;arrowdbldown;DOWNWARDS DOUBLE ARROW + 21D0;arrowdblleft;LEFTWARDS DOUBLE ARROW + 21D2;arrowdblright;RIGHTWARDS DOUBLE ARROW + 21D1;arrowdblup;UPWARDS DOUBLE ARROW + 2193;arrowdown;DOWNWARDS ARROW + 2190;arrowleft;LEFTWARDS ARROW + 2192;arrowright;RIGHTWARDS ARROW + 2191;arrowup;UPWARDS ARROW + 2195;arrowupdn;UP DOWN ARROW + 21A8;arrowupdnbse;UP DOWN ARROW WITH BASE + 005E;asciicircum;CIRCUMFLEX ACCENT + 007E;asciitilde;TILDE + 002A;asterisk;ASTERISK + 2217;asteriskmath;ASTERISK OPERATOR + 0040;at;COMMERCIAL AT + 00E3;atilde;LATIN SMALL LETTER A WITH TILDE + 0062;b;LATIN SMALL LETTER B + 005C;backslash;REVERSE SOLIDUS + 007C;bar;VERTICAL LINE + 03B2;beta;GREEK SMALL LETTER BETA + 2588;block;FULL BLOCK + 007B;braceleft;LEFT CURLY BRACKET + 007D;braceright;RIGHT CURLY BRACKET + 005B;bracketleft;LEFT SQUARE BRACKET + 005D;bracketright;RIGHT SQUARE BRACKET + 02D8;breve;BREVE + 00A6;brokenbar;BROKEN BAR + 2022;bullet;BULLET + 0063;c;LATIN SMALL LETTER C + 0107;cacute;LATIN SMALL LETTER C WITH ACUTE + 02C7;caron;CARON + 21B5;carriagereturn;DOWNWARDS ARROW WITH CORNER LEFTWARDS + 010D;ccaron;LATIN SMALL LETTER C WITH CARON + 00E7;ccedilla;LATIN SMALL LETTER C WITH CEDILLA + 0109;ccircumflex;LATIN SMALL LETTER C WITH CIRCUMFLEX + 010B;cdotaccent;LATIN SMALL LETTER C WITH DOT ABOVE + 00B8;cedilla;CEDILLA + 00A2;cent;CENT SIGN + 03C7;chi;GREEK SMALL LETTER CHI + 25CB;circle;WHITE CIRCLE + 2297;circlemultiply;CIRCLED TIMES + 2295;circleplus;CIRCLED PLUS + 02C6;circumflex;MODIFIER LETTER CIRCUMFLEX ACCENT + 2663;club;BLACK CLUB SUIT + 003A;colon;COLON + 20A1;colonmonetary;COLON SIGN + 002C;comma;COMMA + 2245;congruent;APPROXIMATELY EQUAL TO + 00A9;copyright;COPYRIGHT SIGN + 00A4;currency;CURRENCY SIGN + 0064;d;LATIN SMALL LETTER D + 2020;dagger;DAGGER + 2021;daggerdbl;DOUBLE DAGGER + 010F;dcaron;LATIN SMALL LETTER D WITH CARON + 0111;dcroat;LATIN SMALL LETTER D WITH STROKE + 00B0;degree;DEGREE SIGN + 03B4;delta;GREEK SMALL LETTER DELTA + 2666;diamond;BLACK DIAMOND SUIT + 00A8;dieresis;DIAERESIS + 0385;dieresistonos;GREEK DIALYTIKA TONOS + 00F7;divide;DIVISION SIGN + 2593;dkshade;DARK SHADE + 2584;dnblock;LOWER HALF BLOCK + 0024;dollar;DOLLAR SIGN + 20AB;dong;DONG SIGN + 02D9;dotaccent;DOT ABOVE + 0323;dotbelowcomb;COMBINING DOT BELOW + 0131;dotlessi;LATIN SMALL LETTER DOTLESS I + 22C5;dotmath;DOT OPERATOR + 0065;e;LATIN SMALL LETTER E + 00E9;eacute;LATIN SMALL LETTER E WITH ACUTE + 0115;ebreve;LATIN SMALL LETTER E WITH BREVE + 011B;ecaron;LATIN SMALL LETTER E WITH CARON + 00EA;ecircumflex;LATIN SMALL LETTER E WITH CIRCUMFLEX + 00EB;edieresis;LATIN SMALL LETTER E WITH DIAERESIS + 0117;edotaccent;LATIN SMALL LETTER E WITH DOT ABOVE + 00E8;egrave;LATIN SMALL LETTER E WITH GRAVE + 0038;eight;DIGIT EIGHT + 2208;element;ELEMENT OF + 2026;ellipsis;HORIZONTAL ELLIPSIS + 0113;emacron;LATIN SMALL LETTER E WITH MACRON + 2014;emdash;EM DASH + 2205;emptyset;EMPTY SET + 2013;endash;EN DASH + 014B;eng;LATIN SMALL LETTER ENG + 0119;eogonek;LATIN SMALL LETTER E WITH OGONEK + 03B5;epsilon;GREEK SMALL LETTER EPSILON + 03AD;epsilontonos;GREEK SMALL LETTER EPSILON WITH TONOS + 003D;equal;EQUALS SIGN + 2261;equivalence;IDENTICAL TO + 212E;estimated;ESTIMATED SYMBOL + 03B7;eta;GREEK SMALL LETTER ETA + 03AE;etatonos;GREEK SMALL LETTER ETA WITH TONOS + 00F0;eth;LATIN SMALL LETTER ETH + 0021;exclam;EXCLAMATION MARK + 203C;exclamdbl;DOUBLE EXCLAMATION MARK + 00A1;exclamdown;INVERTED EXCLAMATION MARK + 2203;existential;THERE EXISTS + 0066;f;LATIN SMALL LETTER F + 2640;female;FEMALE SIGN + 2012;figuredash;FIGURE DASH + 25A0;filledbox;BLACK SQUARE + 25AC;filledrect;BLACK RECTANGLE + 0035;five;DIGIT FIVE + 215D;fiveeighths;VULGAR FRACTION FIVE EIGHTHS + 0192;florin;LATIN SMALL LETTER F WITH HOOK + 0034;four;DIGIT FOUR + 2044;fraction;FRACTION SLASH + 20A3;franc;FRENCH FRANC SIGN + 0067;g;LATIN SMALL LETTER G + 03B3;gamma;GREEK SMALL LETTER GAMMA + 011F;gbreve;LATIN SMALL LETTER G WITH BREVE + 01E7;gcaron;LATIN SMALL LETTER G WITH CARON + 011D;gcircumflex;LATIN SMALL LETTER G WITH CIRCUMFLEX + 0121;gdotaccent;LATIN SMALL LETTER G WITH DOT ABOVE + 00DF;germandbls;LATIN SMALL LETTER SHARP S + 2207;gradient;NABLA + 0060;grave;GRAVE ACCENT + 0300;gravecomb;COMBINING GRAVE ACCENT + 003E;greater;GREATER-THAN SIGN + 2265;greaterequal;GREATER-THAN OR EQUAL TO + 00AB;guillemotleft;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + 00BB;guillemotright;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + 2039;guilsinglleft;SINGLE LEFT-POINTING ANGLE QUOTATION MARK + 203A;guilsinglright;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + 0068;h;LATIN SMALL LETTER H + 0127;hbar;LATIN SMALL LETTER H WITH STROKE + 0125;hcircumflex;LATIN SMALL LETTER H WITH CIRCUMFLEX + 2665;heart;BLACK HEART SUIT + 0309;hookabovecomb;COMBINING HOOK ABOVE + 2302;house;HOUSE + 02DD;hungarumlaut;DOUBLE ACUTE ACCENT + 002D;hyphen;HYPHEN-MINUS + 0069;i;LATIN SMALL LETTER I + 00ED;iacute;LATIN SMALL LETTER I WITH ACUTE + 012D;ibreve;LATIN SMALL LETTER I WITH BREVE + 00EE;icircumflex;LATIN SMALL LETTER I WITH CIRCUMFLEX + 00EF;idieresis;LATIN SMALL LETTER I WITH DIAERESIS + 00EC;igrave;LATIN SMALL LETTER I WITH GRAVE + 0133;ij;LATIN SMALL LIGATURE IJ + 012B;imacron;LATIN SMALL LETTER I WITH MACRON + 221E;infinity;INFINITY + 222B;integral;INTEGRAL + 2321;integralbt;BOTTOM HALF INTEGRAL + 2320;integraltp;TOP HALF INTEGRAL + 2229;intersection;INTERSECTION + 25D8;invbullet;INVERSE BULLET + 25D9;invcircle;INVERSE WHITE CIRCLE + 263B;invsmileface;BLACK SMILING FACE + 012F;iogonek;LATIN SMALL LETTER I WITH OGONEK + 03B9;iota;GREEK SMALL LETTER IOTA + 03CA;iotadieresis;GREEK SMALL LETTER IOTA WITH DIALYTIKA + 0390;iotadieresistonos;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + 03AF;iotatonos;GREEK SMALL LETTER IOTA WITH TONOS + 0129;itilde;LATIN SMALL LETTER I WITH TILDE + 006A;j;LATIN SMALL LETTER J + 0135;jcircumflex;LATIN SMALL LETTER J WITH CIRCUMFLEX + 006B;k;LATIN SMALL LETTER K + 03BA;kappa;GREEK SMALL LETTER KAPPA + 0138;kgreenlandic;LATIN SMALL LETTER KRA + 006C;l;LATIN SMALL LETTER L + 013A;lacute;LATIN SMALL LETTER L WITH ACUTE + 03BB;lambda;GREEK SMALL LETTER LAMDA + 013E;lcaron;LATIN SMALL LETTER L WITH CARON + 0140;ldot;LATIN SMALL LETTER L WITH MIDDLE DOT + 003C;less;LESS-THAN SIGN + 2264;lessequal;LESS-THAN OR EQUAL TO + 258C;lfblock;LEFT HALF BLOCK + 20A4;lira;LIRA SIGN + 2227;logicaland;LOGICAL AND + 00AC;logicalnot;NOT SIGN + 2228;logicalor;LOGICAL OR + 017F;longs;LATIN SMALL LETTER LONG S + 25CA;lozenge;LOZENGE + 0142;lslash;LATIN SMALL LETTER L WITH STROKE + 2591;ltshade;LIGHT SHADE + 006D;m;LATIN SMALL LETTER M + 00AF;macron;MACRON + 2642;male;MALE SIGN + 2212;minus;MINUS SIGN + 2032;minute;PRIME + 00B5;mu;MICRO SIGN + 00D7;multiply;MULTIPLICATION SIGN + 266A;musicalnote;EIGHTH NOTE + 266B;musicalnotedbl;BEAMED EIGHTH NOTES + 006E;n;LATIN SMALL LETTER N + 0144;nacute;LATIN SMALL LETTER N WITH ACUTE + 0149;napostrophe;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE + 0148;ncaron;LATIN SMALL LETTER N WITH CARON + 0039;nine;DIGIT NINE + 2209;notelement;NOT AN ELEMENT OF + 2260;notequal;NOT EQUAL TO + 2284;notsubset;NOT A SUBSET OF + 00F1;ntilde;LATIN SMALL LETTER N WITH TILDE + 03BD;nu;GREEK SMALL LETTER NU + 0023;numbersign;NUMBER SIGN + 006F;o;LATIN SMALL LETTER O + 00F3;oacute;LATIN SMALL LETTER O WITH ACUTE + 014F;obreve;LATIN SMALL LETTER O WITH BREVE + 00F4;ocircumflex;LATIN SMALL LETTER O WITH CIRCUMFLEX + 00F6;odieresis;LATIN SMALL LETTER O WITH DIAERESIS + 0153;oe;LATIN SMALL LIGATURE OE + 02DB;ogonek;OGONEK + 00F2;ograve;LATIN SMALL LETTER O WITH GRAVE + 01A1;ohorn;LATIN SMALL LETTER O WITH HORN + 0151;ohungarumlaut;LATIN SMALL LETTER O WITH DOUBLE ACUTE + 014D;omacron;LATIN SMALL LETTER O WITH MACRON + 03C9;omega;GREEK SMALL LETTER OMEGA + 03D6;omega1;GREEK PI SYMBOL + 03CE;omegatonos;GREEK SMALL LETTER OMEGA WITH TONOS + 03BF;omicron;GREEK SMALL LETTER OMICRON + 03CC;omicrontonos;GREEK SMALL LETTER OMICRON WITH TONOS + 0031;one;DIGIT ONE + 2024;onedotenleader;ONE DOT LEADER + 215B;oneeighth;VULGAR FRACTION ONE EIGHTH + 00BD;onehalf;VULGAR FRACTION ONE HALF + 00BC;onequarter;VULGAR FRACTION ONE QUARTER + 2153;onethird;VULGAR FRACTION ONE THIRD + 25E6;openbullet;WHITE BULLET + 00AA;ordfeminine;FEMININE ORDINAL INDICATOR + 00BA;ordmasculine;MASCULINE ORDINAL INDICATOR + 221F;orthogonal;RIGHT ANGLE + 00F8;oslash;LATIN SMALL LETTER O WITH STROKE + 01FF;oslashacute;LATIN SMALL LETTER O WITH STROKE AND ACUTE + 00F5;otilde;LATIN SMALL LETTER O WITH TILDE + 0070;p;LATIN SMALL LETTER P + 00B6;paragraph;PILCROW SIGN + 0028;parenleft;LEFT PARENTHESIS + 0029;parenright;RIGHT PARENTHESIS + 2202;partialdiff;PARTIAL DIFFERENTIAL + 0025;percent;PERCENT SIGN + 002E;period;FULL STOP + 00B7;periodcentered;MIDDLE DOT + 22A5;perpendicular;UP TACK + 2030;perthousand;PER MILLE SIGN + 20A7;peseta;PESETA SIGN + 03C6;phi;GREEK SMALL LETTER PHI + 03D5;phi1;GREEK PHI SYMBOL + 03C0;pi;GREEK SMALL LETTER PI + 002B;plus;PLUS SIGN + 00B1;plusminus;PLUS-MINUS SIGN + 211E;prescription;PRESCRIPTION TAKE + 220F;product;N-ARY PRODUCT + 2282;propersubset;SUBSET OF + 2283;propersuperset;SUPERSET OF + 221D;proportional;PROPORTIONAL TO + 03C8;psi;GREEK SMALL LETTER PSI + 0071;q;LATIN SMALL LETTER Q + 003F;question;QUESTION MARK + 00BF;questiondown;INVERTED QUESTION MARK + 0022;quotedbl;QUOTATION MARK + 201E;quotedblbase;DOUBLE LOW-9 QUOTATION MARK + 201C;quotedblleft;LEFT DOUBLE QUOTATION MARK + 201D;quotedblright;RIGHT DOUBLE QUOTATION MARK + 2018;quoteleft;LEFT SINGLE QUOTATION MARK + 201B;quotereversed;SINGLE HIGH-REVERSED-9 QUOTATION MARK + 2019;quoteright;RIGHT SINGLE QUOTATION MARK + 201A;quotesinglbase;SINGLE LOW-9 QUOTATION MARK + 0027;quotesingle;APOSTROPHE + 0072;r;LATIN SMALL LETTER R + 0155;racute;LATIN SMALL LETTER R WITH ACUTE + 221A;radical;SQUARE ROOT + 0159;rcaron;LATIN SMALL LETTER R WITH CARON + 2286;reflexsubset;SUBSET OF OR EQUAL TO + 2287;reflexsuperset;SUPERSET OF OR EQUAL TO + 00AE;registered;REGISTERED SIGN + 2310;revlogicalnot;REVERSED NOT SIGN + 03C1;rho;GREEK SMALL LETTER RHO + 02DA;ring;RING ABOVE + 2590;rtblock;RIGHT HALF BLOCK + 0073;s;LATIN SMALL LETTER S + 015B;sacute;LATIN SMALL LETTER S WITH ACUTE + 0161;scaron;LATIN SMALL LETTER S WITH CARON + 015F;scedilla;LATIN SMALL LETTER S WITH CEDILLA + 015D;scircumflex;LATIN SMALL LETTER S WITH CIRCUMFLEX + 2033;second;DOUBLE PRIME + 00A7;section;SECTION SIGN + 003B;semicolon;SEMICOLON + 0037;seven;DIGIT SEVEN + 215E;seveneighths;VULGAR FRACTION SEVEN EIGHTHS + 2592;shade;MEDIUM SHADE + 03C3;sigma;GREEK SMALL LETTER SIGMA + 03C2;sigma1;GREEK SMALL LETTER FINAL SIGMA + 223C;similar;TILDE OPERATOR + 0036;six;DIGIT SIX + 002F;slash;SOLIDUS + 263A;smileface;WHITE SMILING FACE + 0020;space;SPACE + 2660;spade;BLACK SPADE SUIT + 00A3;sterling;POUND SIGN + 220B;suchthat;CONTAINS AS MEMBER + 2211;summation;N-ARY SUMMATION + 263C;sun;WHITE SUN WITH RAYS + 0074;t;LATIN SMALL LETTER T + 03C4;tau;GREEK SMALL LETTER TAU + 0167;tbar;LATIN SMALL LETTER T WITH STROKE + 0165;tcaron;LATIN SMALL LETTER T WITH CARON + 2234;therefore;THEREFORE + 03B8;theta;GREEK SMALL LETTER THETA + 03D1;theta1;GREEK THETA SYMBOL + 00FE;thorn;LATIN SMALL LETTER THORN + 0033;three;DIGIT THREE + 215C;threeeighths;VULGAR FRACTION THREE EIGHTHS + 00BE;threequarters;VULGAR FRACTION THREE QUARTERS + 02DC;tilde;SMALL TILDE + 0303;tildecomb;COMBINING TILDE + 0384;tonos;GREEK TONOS + 2122;trademark;TRADE MARK SIGN + 25BC;triagdn;BLACK DOWN-POINTING TRIANGLE + 25C4;triaglf;BLACK LEFT-POINTING POINTER + 25BA;triagrt;BLACK RIGHT-POINTING POINTER + 25B2;triagup;BLACK UP-POINTING TRIANGLE + 0032;two;DIGIT TWO + 2025;twodotenleader;TWO DOT LEADER + 2154;twothirds;VULGAR FRACTION TWO THIRDS + 0075;u;LATIN SMALL LETTER U + 00FA;uacute;LATIN SMALL LETTER U WITH ACUTE + 016D;ubreve;LATIN SMALL LETTER U WITH BREVE + 00FB;ucircumflex;LATIN SMALL LETTER U WITH CIRCUMFLEX + 00FC;udieresis;LATIN SMALL LETTER U WITH DIAERESIS + 00F9;ugrave;LATIN SMALL LETTER U WITH GRAVE + 01B0;uhorn;LATIN SMALL LETTER U WITH HORN + 0171;uhungarumlaut;LATIN SMALL LETTER U WITH DOUBLE ACUTE + 016B;umacron;LATIN SMALL LETTER U WITH MACRON + 005F;underscore;LOW LINE + 2017;underscoredbl;DOUBLE LOW LINE + 222A;union;UNION + 2200;universal;FOR ALL + 0173;uogonek;LATIN SMALL LETTER U WITH OGONEK + 2580;upblock;UPPER HALF BLOCK + 03C5;upsilon;GREEK SMALL LETTER UPSILON + 03CB;upsilondieresis;GREEK SMALL LETTER UPSILON WITH DIALYTIKA + 03B0;upsilondieresistonos;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + 03CD;upsilontonos;GREEK SMALL LETTER UPSILON WITH TONOS + 016F;uring;LATIN SMALL LETTER U WITH RING ABOVE + 0169;utilde;LATIN SMALL LETTER U WITH TILDE + 0076;v;LATIN SMALL LETTER V + 0077;w;LATIN SMALL LETTER W + 1E83;wacute;LATIN SMALL LETTER W WITH ACUTE + 0175;wcircumflex;LATIN SMALL LETTER W WITH CIRCUMFLEX + 1E85;wdieresis;LATIN SMALL LETTER W WITH DIAERESIS + 2118;weierstrass;SCRIPT CAPITAL P + 1E81;wgrave;LATIN SMALL LETTER W WITH GRAVE + 0078;x;LATIN SMALL LETTER X + 03BE;xi;GREEK SMALL LETTER XI + 0079;y;LATIN SMALL LETTER Y + 00FD;yacute;LATIN SMALL LETTER Y WITH ACUTE + 0177;ycircumflex;LATIN SMALL LETTER Y WITH CIRCUMFLEX + 00FF;ydieresis;LATIN SMALL LETTER Y WITH DIAERESIS + 00A5;yen;YEN SIGN + 1EF3;ygrave;LATIN SMALL LETTER Y WITH GRAVE + 007A;z;LATIN SMALL LETTER Z + 017A;zacute;LATIN SMALL LETTER Z WITH ACUTE + 017E;zcaron;LATIN SMALL LETTER Z WITH CARON + 017C;zdotaccent;LATIN SMALL LETTER Z WITH DOT ABOVE + 0030;zero;DIGIT ZERO + 03B6;zeta;GREEK SMALL LETTER ZETA}) + +(define glyph-list + (for*/list ([rec (in-list (string-split raw-list "\n"))] + [recfields (in-value (string-split rec ";"))]) + (cons (string->number (first recfields) 16) + (string->symbol (second recfields))))) + +(provide glyph-list) \ No newline at end of file diff --git a/pitfall/pitfall/sample-ext-encoding.rkt b/pitfall/pitfall/sample-ext-encoding.rkt new file mode 100644 index 00000000..f7d327c6 --- /dev/null +++ b/pitfall/pitfall/sample-ext-encoding.rkt @@ -0,0 +1,143 @@ +#lang at-exp br +(require pitfall/render) + +(define cosh (make-co-hash)) + +;; catalog object +(+co-hash cosh 1 (co-catalog #:pages (make-co-io-ref 2))) + +;; pages +(+co-hash cosh 2 (co-pages #:kids (list (make-co-io-ref 3)) + #:count 1)) +;; page +(+co-hash cosh 3 (co-page #:parent (make-co-io-ref 2) + #:mediabox '(0 0 400 400) + #:resources (make-co-io-ref 4) + #:contents (make-co-io-ref 5) + + ; the value of annots must be an array + #:annots (co-array (list (make-co-io-ref 7))) + )) +#;#:annots #;(make-co-io-ref 7) + +;; resources +(+co-hash cosh 4 + (make-co-dict + 'ProcSet (co-array '(PDF Text)) + 'Font (make-co-dict 'F1 (make-co-io-ref 6) + 'F2 (make-co-io-ref 9) + 'F3 (make-co-io-ref 12)))) + + + + +(define (typeset-text str size font-path) + (string->bytes/latin-1 + (string-append* + (for/list ([c (in-string str)]) + (format "(~a) Tj ~a 0 Td" c (/ (* size (measure-char font-path c)) 1000.0)))))) + + + +;; Charter font +(define charter-font-path "charter.otf") +(+co-hash cosh 6 + (make-co-dict + 'Type 'Font + 'Subtype 'Type1 + 'Name 'F1 + 'FontDescriptor (make-co-dict + 'Type 'FontDescriptor + 'FontFile3 (make-co-io-ref 8) + 'Flags 4 + 'FontBBox (co-array '(-177 -269 1123 866)) + 'MissingWidth 255 + 'StemV 105 + 'StemH 45 + 'CapHeight 660 + 'XHeight 394 + 'Ascent 720 + 'Descent -270 + 'Leading 83 + 'MaxWidth 1212 + 'AvgWidth 478 + 'ItalicAngle 0) + 'Encoding (make-co-io-ref 25))) + +(require "glyph-list.rkt") +(+co-hash cosh 25 + (make-co-dict + 'Type 'Encoding + 'Differences + (co-array (flatten glyph-list)))) + +(+co-hash cosh 8 (make-font-co-stream charter-font-path)) + +;; Miso font +(define miso-font-path "miso.otf") +(+co-hash cosh 9 + (make-co-dict + 'Type 'Font + 'Subtype 'Type1 + 'Name 'F2 + 'FontDescriptor (make-co-dict + 'Type 'FontDescriptor + 'FontFile3 (make-co-io-ref 10) + 'Flags 4 + 'FontBBox (co-array '(-177 -269 1123 866)) + 'MissingWidth 255 + 'StemV 105 + 'StemH 45 + 'CapHeight 660 + 'XHeight 394 + 'Ascent 720 + 'Descent -270 + 'Leading 83 + 'MaxWidth 1212 + 'AvgWidth 478 + 'ItalicAngle 0) + 'Encoding (make-co-io-ref 25))) + +(+co-hash cosh 10 (make-font-co-stream miso-font-path)) + +;; fira font +(define fira-font-path "fira.otf") +(+co-hash cosh 12 + (make-co-dict + 'Type 'Font + 'Subtype 'Type1 + 'Name 'F3 + 'FontDescriptor (make-co-dict + 'Type 'FontDescriptor + 'FontFile3 (make-co-io-ref 13) + 'Flags 4 + 'FontBBox (co-array '(-177 -269 1123 866)) + 'MissingWidth 255 + 'StemV 105 + 'StemH 45 + 'CapHeight 660 + 'XHeight 394 + 'Ascent 720 + 'Descent -270 + 'Leading 83 + 'MaxWidth 1212 + 'AvgWidth 478 + 'ItalicAngle 0) + 'Encoding (make-co-io-ref 25))) + +(+co-hash cosh 13 (make-font-co-stream fira-font-path)) + + +;; contents +(+co-hash cosh 5 + (make-co-stream + (bytes-append + #"BT /F1 36 Tf 50 50 Td" + (typeset-text "Héllo Wørld 4-1" 36 charter-font-path) + #"/F2 36 Tf -250 50 Td" + (typeset-text "Ençhîládà 10" 36 miso-font-path) + #"/F3 36 Tf -150 50 Td" + (typeset-text "Bõîng Mé 5" 36 fira-font-path) + #"ET"))) + +(render cosh)