# DTL default OpenType Layout features file adapted for DTL Flamande # Version 2.1 Revision 17 (the version number in the file's name should not be changed, because of related batch files that point to it) # Supports AFDKO 2.0 and newer # Specific for DTL Flamande # Changed character naming to AGLFN version 1.5 specs # Includes Cyrillic and Greek # Last update: 19 August 2017 # Copyright (c) Dutch Type Library, 2017. All rights reserved #--------------------------------------- # table OS/2 { # TypoAscender 000; # TypoDescender -000; # Panose 0 0 0 0 0 0 0 0 0 0; # XHeight 000; # CapHeight 000; # FSType 0; # } OS/2; #--------------------------------------- # The following is controlled via the 'include (featname.txt)' statement at the end of this file. # This will use the UFM naming entries. If this statement is disabled then the naming below can be used for proprietary purposes. # table name { # nameid 0 "Copyright \00a9 Dutch Type Library, All rights reserved"; # nameid 0 1 "Copyright \00a9 Dutch Type Library, All rights reserved"; # nameid 1 ""; # nameid 1 1 ""; # nameid 2 ""; # nameid 2 1 ""; # nameid 3 ""; # nameid 3 1 ""; # nameid 4 ""; # nameid 4 1 ""; # nameid 5 ""; # nameid 5 1 ""; # nameid 6 ""; # nameid 6 1 ""; # nameid 7 " is a trademark of the Dutch Type Library"; # nameid 7 1 " is a trademark of the Dutch Type Library"; # nameid 8 "Dutch Type Library"; # nameid 8 1 "Dutch Type Library"; # nameid 9 ""; # nameid 9 1 ""; # nameid 10 ""; # nameid 10 1 ""; # nameid 11 "http://www.dutchtypelibrary.nl"; # nameid 11 1 "http://www.dutchtypelibrary.nl"; # nameid 12 ""; # nameid 12 1 ""; # nameid 13 "By downloading, unpacking and/or installing DTL Font Software you acknowledge that you have read the DTL End User License Agreement, understand it and that together with the related invoice it is the complete and exclusive statement of your agreement with the Dutch Type Library concerning this purchase of DTL Font Software and that your obligations under this agreement shall inure to the benefit of Dutch Type Library licensors whose rights are licensed under this agreement. No variation of the terms of this agreement will be enforceable against the Dutch Type Library unless the Dutch Type Library gives it expressed consent in writing signed by an officer of the Dutch Type Library. By installing the software you accept your own liability to comply with all terms and conditions of the license. If you do not agree completely with the license, do not download, unpack and/or install DTL Font Software."; # nameid 13 1 "By downloading, unpacking and/or installing DTL Font Software you acknowledge that you have read the DTL End User License Agreement, understand it and that together with the related invoice it is the complete and exclusive statement of your agreement with the Dutch Type Library concerning this purchase of DTL Font Software and that your obligations under this agreement shall inure to the benefit of Dutch Type Library licensors whose rights are licensed under this agreement. No variation of the terms of this agreement will be enforceable against the Dutch Type Library unless the Dutch Type Library gives it expressed consent in writing signed by an officer of the Dutch Type Library. By installing the software you accept your own liability to comply with all terms and conditions of the license. If you do not agree completely with the license, do not download, unpack and/or install DTL Font Software."; # nameid 14 "http://www.dutchtypelibrary.nl"; # nameid 14 1 "http://www.dutchtypelibrary.nl"; # nameid 16 1 ""; # nameid 17 1 ""; # nameid 18 ""; # nameid 19 "The quick brown fox jumps over the lazy dog"; # nameid 19 1 "The quick brown fox jumps over the lazy dog"; # } name; # Note: The original Adobe HOT tool would not take the names in the range of 1-6 # (the standard range) from a feature file. # The modified URW++ HOT tool will take any ID but you will get a warning that # the respective name may not be compatible with some names in the 'CFF ' table. #--------------------------------------- # --- GLYPH GROUPINGS # --- Latin @LETTERS_UC = [ A - Z AE Lslash Oslash OE Thorn Eth Aacute Abreve Acircumflex Adieresis Agrave Amacron Aogonek Aring Atilde Cacute Ccaron Ccedilla Dcaron Dcroat Eacute Ecaron Ecircumflex Edieresis Edotaccent Egrave Emacron Eogonek Gbreve Gcommaaccent Iacute Icircumflex Idieresis Igrave Imacron Iogonek Kcommaaccent Lacute Lcaron Lcommaaccent Nacute Ncaron Ncommaaccent Ntilde Oacute Ocircumflex Odieresis Ograve Ohungarumlaut Omacron Otilde Racute Rcaron Rcommaaccent Sacute Scaron Scedilla Scommaaccent Tcaron Tcommaaccent Uacute Ucircumflex Udieresis Ugrave Uhungarumlaut Umacron Uogonek Uring Yacute Ydieresis Zacute Zcaron Zdotaccent ]; @ACCENTS_UC = [ acute.cap breve.cap caron.cap cedilla.cap circumflex.cap commaaccent.cap dieresis.cap dotaccent.cap grave.cap hungarumlaut.cap macron.cap ogonek.cap ring.cap tilde.cap ]; @LETTERS_LC = [ a - z ae lslash oslash oe thorn eth aacute abreve acircumflex adieresis agrave amacron aogonek aring atilde cacute ccaron ccedilla dcaron dcroat eacute ecaron ecircumflex edieresis edotaccent egrave emacron eogonek gbreve gcommaaccent iacute icircumflex idieresis igrave imacron iogonek kcommaaccent lacute lcaron lcommaaccent nacute ncaron ncommaaccent ntilde oacute ocircumflex odieresis ograve ohungarumlaut omacron otilde racute rcaron rcommaaccent sacute scaron scedilla scommaaccent tcaron tcommaaccent uacute ucircumflex udieresis ugrave uhungarumlaut umacron uogonek uring yacute ydieresis zacute zcaron zdotaccent ]; @ACCENTS_LC = [ acute breve caron cedilla circumflex commaaccent dieresis dotaccent grave hungarumlaut macron ogonek ring tilde ]; @LETTERS_SC = [ a.sc - z.sc ae.sc lslash.sc oslash.sc oe.sc thorn.sc eth.sc aacute.sc abreve.sc acircumflex.sc adieresis.sc agrave.sc amacron.sc aogonek.sc aring.sc atilde.sc cacute.sc ccaron.sc ccedilla.sc dcaron.sc dcroat.sc eacute.sc ecaron.sc ecircumflex.sc edieresis.sc edotaccent.sc egrave.sc emacron.sc eogonek.sc gbreve.sc gcommaaccent.sc iacute.sc icircumflex.sc idieresis.sc igrave.sc imacron.sc iogonek.sc kcommaaccent.sc lacute.sc lcaron.sc lcommaaccent.sc nacute.sc ncaron.sc ncommaaccent.sc ntilde.sc oacute.sc ocircumflex.sc odieresis.sc ograve.sc ohungarumlaut.sc omacron.sc otilde.sc racute.sc rcaron.sc rcommaaccent.sc sacute.sc scaron.sc scedilla.sc scommaaccent.sc tcaron.sc tcommaaccent.sc uacute.sc ucircumflex.sc udieresis.sc ugrave.sc uhungarumlaut.sc umacron.sc uogonek.sc uring.sc yacute.sc ydieresis.sc zacute.sc zcaron.sc zdotaccent.sc ]; @ACCENTS_SC = [ acute.sc breve.sc caron.sc cedilla.sc circumflex.sc commaaccent.sc dieresis.sc dotaccent.sc grave.sc hungarumlaut.sc macron.sc ogonek.sc ring.sc tilde.sc ]; @LETTERS_SUPERIOR = [ a.superior b.superior d.superior e.superior h.superior i.superior l.superior m.superior n.superior o.superior r.superior s.superior t.superior ]; @PUNCT_DEFAULT = [ ampersand exclam exclamdown question questiondown ]; @PUNCT_SC = [ ampersand.sc exclam.sc exclamdown.sc question.sc questiondown.sc ]; @PUNCT_LC = [ at braceleft braceright bracketleft bracketright emdash endash exclamdown guillemotleft guillemotright guilsinglleft guilsinglright hyphen parenleft parenright periodcentered questiondown ]; @PUNCT_UC = [ at.cap braceleft.cap braceright.cap bracketleft.cap bracketright.cap emdash.cap endash.cap exclamdown.cap guillemotleft.cap guillemotright.cap guilsinglleft.cap guilsinglright.cap hyphen.cap parenleft.cap parenright.cap periodcentered.cap questiondown.cap ]; # --- Cyrillic @LETTERS_UC_CYRILLIC = [ afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10046 afii10045 afii10044 afii10047 afii10048 afii10049 afii10050 afii10051 afii10053 afii10054 afii10055 afii10057 afii10058 afii10059 afii10060 afii10145 uni04E8 uni0496 uni04AE uni04D8 uni04BA uni0492 uni04B0 afii10023 afii10027 afii10052 afii10056 afii10061 afii10062 uni04E2 uni04EE uni049C uni049A uni04A2 uni04B2 uni04B8 uni04B6 uni0400 uni040D ]; @LETTERS_LC_CYRILLIC = [ afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097 afii10098 afii10099 afii10101 afii10102 afii10103 afii10105 afii10106 afii10107 afii10108 afii10193 uni04E9 uni0497 uni04AF afii10846 uni04BB uni0493 uni04B1 afii10071 afii10075 afii10100 afii10104 afii10109 afii10110 uni04E3 uni04EF uni049D uni049B uni04A3 uni04B3 uni04B9 uni04B7 uni0450 uni045D ]; @LETTERS_SC_CYRILLIC = [ afii10065.sc afii10066.sc afii10067.sc afii10068.sc afii10069.sc afii10070.sc afii10072.sc afii10073.sc afii10074.sc afii10076.sc afii10077.sc afii10078.sc afii10079.sc afii10080.sc afii10081.sc afii10082.sc afii10083.sc afii10084.sc afii10085.sc afii10086.sc afii10087.sc afii10088.sc afii10089.sc afii10090.sc afii10091.sc afii10092.sc afii10093.sc afii10094.sc afii10095.sc afii10096.sc afii10097.sc afii10098.sc afii10099.sc afii10101.sc afii10102.sc afii10103.sc afii10105.sc afii10106.sc afii10107.sc afii10108.sc afii10193.sc uni04E9.sc uni0497.sc uni04AF.sc afii10846.sc uni04BB.sc uni0493.sc uni04B1.sc afii10071.sc afii10075.sc afii10100.sc afii10104.sc afii10109.sc afii10110.sc uni04E3.sc uni04EF.sc uni049D.sc uni049B.sc uni04A3.sc uni04B3.sc uni04B9.sc uni04B7.sc uni0450.sc uni045D.sc ]; # --- Greek @LETTERS_UC_GREEK = [ Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lambda Mu Nu Xi Omicron Pi Rho Sigma Tau Upsilon Phi Chi Psi Omega Iotadieresis Upsilondieresis Alphatonos Epsilontonos Etatonos Iotatonos Omicrontonos Omegatonos Upsilontonos Iotadieresistonos ]; @LETTERS_LC_GREEK = [ alpha beta gamma delta epsilon zeta eta theta iota kappa lambda mu nu xi omicron pi rho sigma tau upsilon phi chi psi omega iotadieresis upsilondieresis alphatonos epsilontonos etatonos iotatonos omicrontonos omegatonos upsilontonos iotadieresistonos ]; @LETTERS_SC_GREEK = [ alpha.sc beta.sc gamma.sc delta.sc epsilon.sc zeta.sc eta.sc theta.sc iota.sc kappa.sc lambda.sc mu.sc nu.sc xi.sc omicron.sc pi.sc rho.sc sigma.sc tau.sc upsilon.sc phi.sc chi.sc psi.sc omega.sc iotadieresis.sc upsilondieresis.sc alphatonos.sc epsilontonos.sc etatonos.sc iotatonos.sc omicrontonos.sc omegatonos.sc upsilontonos.sc iotadieresistonos.sc ]; # --- Titling @LETTERS_UC_TITLING = [ A.titling - Z.titling AE.titling Lslash.titling Oslash.titling OE.titling Thorn.titling Eth.titling Aacute.titling Abreve.titling Acircumflex.titling Adieresis.titling Agrave.titling Amacron.titling Aogonek.titling Aring.titling Atilde.titling Cacute.titling Ccaron.titling Ccedilla.titling Dcaron.titling Dcroat.titling Eacute.titling Ecaron.titling Ecircumflex.titling Edieresis.titling Edotaccent.titling Egrave.titling Emacron.titling Eogonek.titling Gbreve.titling Gcommaaccent.titling Iacute.titling Icircumflex.titling Idieresis.titling Igrave.titling Imacron.titling Iogonek.titling Kcommaaccent.titling Lacute.titling Lcaron.titling Lcommaaccent.titling Nacute.titling Ncaron.titling Ncommaaccent.titling Ntilde.titling Oacute.titling Ocircumflex.titling Odieresis.titling Ograve.titling Ohungarumlaut.titling Omacron.titling Otilde.titling Racute.titling Rcaron.titling Rcommaaccent.titling Sacute.titling Scaron.titling Scedilla.titling Scommaaccent.titling Tcaron.titling Tcommaaccent.titling Uacute.titling Ucircumflex.titling Udieresis.titling Ugrave.titling Uhungarumlaut.titling Umacron.titling Uogonek.titling Uring.titling Yacute.titling Ydieresis.titling Zacute.titling Zcaron.titling Zdotaccent.titling ]; @ACCENTS_UC_TITLING = [ acute.titling breve.titling caron.titling cedilla.titling circumflex.titling commaaccent.titling dieresis.titling dotaccent.titling grave.titling hungarumlaut.titling macron.titling ogonek.titling ring.titling tilde.titling ]; @PUNCT_UC_TITLING = [ at.captitling braceleft.captitling braceright.captitling bracketleft.captitling bracketright.captitling emdash.captitling endash.captitling exclamdown.captitling guillemotleft.captitling guillemotright.captitling guilsinglleft.captitling guilsinglright.captitling hyphen.captitling parenleft.captitling parenright.captitling periodcentered.captitling questiondown.captitling ]; # --- Swash @LETTERS_UC_SWASH = [ A.swash - Z.swash AE.swash Lslash.swash Oslash.swash OE.swash Thorn.swash Eth.swash Aacute.swash Abreve.swash Acircumflex.swash Adieresis.swash Agrave.swash Amacron.swash Aogonek.swash Aring.swash Atilde.swash Cacute.swash Ccaron.swash Ccedilla.swash Dcaron.swash Dcroat.swash Eacute.swash Ecaron.swash Ecircumflex.swash Edieresis.swash Edotaccent.swash Egrave.swash Emacron.swash Eogonek.swash Gbreve.swash Gcommaaccent.swash Iacute.swash Icircumflex.swash Idieresis.swash Igrave.swash Imacron.swash Iogonek.swash Kcommaaccent.swash Lacute.swash Lcaron.swash Lcommaaccent.swash Nacute.swash Ncaron.swash Ncommaaccent.swash Ntilde.swash Oacute.swash Ocircumflex.swash Odieresis.swash Ograve.swash Ohungarumlaut.swash Omacron.swash Otilde.swash Racute.swash Rcaron.swash Rcommaaccent.swash Sacute.swash Scaron.swash Scedilla.swash Scommaaccent.swash Tcaron.swash Tcommaaccent.swash Uacute.swash Ucircumflex.swash Udieresis.swash Ugrave.swash Uhungarumlaut.swash Umacron.swash Uogonek.swash Uring.swash Yacute.swash Ydieresis.swash Zacute.swash Zcaron.swash Zdotaccent.swash ]; @LETTERS_LC_SWASH = [ a.swash - z.swash ae.swash lslash.swash oslash.swash oe.swash thorn.swash eth.swash aacute.swash abreve.swash acircumflex.swash adieresis.swash agrave.swash amacron.swash aogonek.swash aring.swash atilde.swash cacute.swash ccaron.swash ccedilla.swash dcaron.swash dcroat.swash eacute.swash ecaron.swash ecircumflex.swash edieresis.swash edotaccent.swash egrave.swash emacron.swash eogonek.swash gbreve.swash gcommaaccent.swash iacute.swash icircumflex.swash idieresis.swash igrave.swash imacron.swash iogonek.swash kcommaaccent.swash lacute.swash lcaron.swash lcommaaccent.swash nacute.swash ncaron.swash ncommaaccent.swash ntilde.swash oacute.swash ocircumflex.swash odieresis.swash ograve.swash ohungarumlaut.swash omacron.swash otilde.swash racute.swash rcaron.swash rcommaaccent.swash sacute.swash scaron.swash scedilla.swash scommaaccent.swash tcaron.swash tcommaaccent.swash uacute.swash ucircumflex.swash udieresis.swash ugrave.swash uhungarumlaut.swash umacron.swash uogonek.swash uring.swash yacute.swash ydieresis.swash zacute.swash zcaron.swash zdotaccent.swash ]; @LETTERS_SC_SWASH = [ a.sc.swash - z.sc.swash ae.sc.swash lslash.sc.swash oslash.sc.swash oe.sc.swash thorn.sc.swash eth.sc.swash aacute.sc.swash abreve.sc.swash acircumflex.sc.swash adieresis.sc.swash agrave.sc.swash amacron.sc.swash aogonek.sc.swash aring.sc.swash atilde.sc.swash cacute.sc.swash ccaron.sc.swash ccedilla.sc.swash dcaron.sc.swash dcroat.sc.swash eacute.sc.swash ecaron.sc.swash ecircumflex.sc.swash edieresis.sc.swash edotaccent.sc.swash egrave.sc.swash emacron.sc.swash eogonek.sc.swash gbreve.sc.swash gcommaaccent.sc.swash iacute.sc.swash icircumflex.sc.swash idieresis.sc.swash igrave.sc.swash imacron.sc.swash iogonek.sc.swash kcommaaccent.sc.swash lacute.sc.swash lcaron.sc.swash lcommaaccent.sc.swash nacute.sc.swash ncaron.sc.swash ncommaaccent.sc.swash ntilde.sc.swash oacute.sc.swash ocircumflex.sc.swash odieresis.sc.swash ograve.sc.swash ohungarumlaut.sc.swash omacron.sc.swash otilde.sc.swash racute.sc.swash rcaron.sc.swash rcommaaccent.sc.swash sacute.sc.swash scaron.sc.swash scedilla.sc.swash scommaaccent.sc.swash tcaron.sc.swash tcommaaccent.sc.swash uacute.sc.swash ucircumflex.sc.swash udieresis.sc.swash ugrave.sc.swash uhungarumlaut.sc.swash umacron.sc.swash uogonek.sc.swash uring.sc.swash yacute.sc.swash ydieresis.sc.swash zacute.sc.swash zcaron.sc.swash zdotaccent.sc.swash ]; # --- Alternate 'general' variations (always applicable alternative characters) @LETTERS_UC_ALT = [ A.alt - Z.alt AE.alt Lslash.alt Oslash.alt OE.alt Thorn.alt Eth.alt Aacute.alt Abreve.alt Acircumflex.alt Adieresis.alt Agrave.alt Amacron.alt Aogonek.alt Aring.alt Atilde.alt Cacute.alt Ccaron.alt Ccedilla.alt Dcaron.alt Dcroat.alt Eacute.alt Ecaron.alt Ecircumflex.alt Edieresis.alt Edotaccent.alt Egrave.alt Emacron.alt Eogonek.alt Gbreve.alt Gcommaaccent.alt Iacute.alt Icircumflex.alt Idieresis.alt Igrave.alt Imacron.alt Iogonek.alt Kcommaaccent.alt Lacute.alt Lcaron.alt Lcommaaccent.alt Nacute.alt Ncaron.alt Ncommaaccent.alt Ntilde.alt Oacute.alt Ocircumflex.alt Odieresis.alt Ograve.alt Ohungarumlaut.alt Omacron.alt Otilde.alt Racute.alt Rcaron.alt Rcommaaccent.alt Sacute.alt Scaron.alt Scedilla.alt Scommaaccent.alt Tcaron.alt Tcommaaccent.alt Uacute.alt Ucircumflex.alt Udieresis.alt Ugrave.alt Uhungarumlaut.alt Umacron.alt Uogonek.alt Uring.alt Yacute.alt Ydieresis.alt Zacute.alt Zcaron.alt Zdotaccent.alt ]; @ACCENTS_UC_ALT = [ acute.cap.alt breve.cap.alt caron.cap.alt cedilla.cap.alt circumflex.cap.alt commaaccent.cap.alt dieresis.cap.alt dotaccent.cap.alt grave.cap.alt hungarumlaut.cap.alt macron.cap.alt ogonek.cap.alt ring.cap.alt tilde.cap.alt ]; @LETTERS_LC_ALT = [ a.alt - z.alt ae.alt lslash.alt oslash.alt oe.alt thorn.alt eth.alt aacute.alt abreve.alt acircumflex.alt adieresis.alt agrave.alt amacron.alt aogonek.alt aring.alt atilde.alt cacute.alt ccaron.alt ccedilla.alt dcaron.alt dcroat.alt eacute.alt ecaron.alt ecircumflex.alt edieresis.alt edotaccent.alt egrave.alt emacron.alt eogonek.alt gbreve.alt gcommaaccent.alt iacute.alt icircumflex.alt idieresis.alt igrave.alt imacron.alt iogonek.alt kcommaaccent.alt lacute.alt lcaron.alt lcommaaccent.alt nacute.alt ncaron.alt ncommaaccent.alt ntilde.alt oacute.alt ocircumflex.alt odieresis.alt ograve.alt ohungarumlaut.alt omacron.alt otilde.alt racute.alt rcaron.alt rcommaaccent.alt sacute.alt scaron.alt scedilla.alt scommaaccent.alt tcaron.alt tcommaaccent.alt uacute.alt ucircumflex.alt udieresis.alt ugrave.alt uhungarumlaut.alt umacron.alt uogonek.alt uring.alt yacute.alt ydieresis.alt zacute.alt zcaron.alt zdotaccent.alt ]; @ACCENTS_LC_ALT = [ acute.alt breve.alt caron.alt cedilla.alt circumflex.alt commaaccent.alt dieresis.alt dotaccent grave.alt hungarumlaut.alt macron.alt ogonek.alt ring.alt tilde.alt ]; @LETTERS_SC_ALT = [ a.sc.alt - z.sc.alt ae.sc.alt lslash.sc.alt oslash.sc.alt oe.sc.alt thorn.sc.alt eth.sc.alt aacute.sc.alt abreve.sc.alt acircumflex.sc.alt adieresis.sc.alt agrave.sc.alt amacron.sc.alt aogonek.sc.alt aring.sc.alt atilde.sc.alt cacute.sc.alt ccaron.sc.alt ccedilla.sc.alt dcaron.sc.alt dcroat.sc.alt eacute.sc.alt ecaron.sc.alt ecircumflex.sc.alt edieresis.sc.alt edotaccent.sc.alt egrave.sc.alt emacron.sc.alt eogonek.sc.alt gbreve.sc.alt gcommaaccent.sc.alt iacute.sc.alt icircumflex.sc.alt idieresis.sc.alt igrave.sc.alt imacron.sc.alt iogonek.sc.alt kcommaaccent.sc.alt lacute.sc.alt lcaron.sc.alt lcommaaccent.sc.alt nacute.sc.alt ncaron.sc.alt ncommaaccent.sc.alt ntilde.sc.alt oacute.sc.alt ocircumflex.sc.alt odieresis.sc.alt ograve.sc.alt ohungarumlaut.sc.alt omacron.sc.alt otilde.sc.alt racute.sc.alt rcaron.sc.alt rcommaaccent.sc.alt sacute.sc.alt scaron.sc.alt scedilla.sc.alt scommaaccent.sc.alt tcaron.sc.alt tcommaaccent.sc.alt uacute.sc.alt ucircumflex.sc.alt udieresis.sc.alt ugrave.sc.alt uhungarumlaut.sc.alt umacron.sc.alt uogonek.sc.alt uring.sc.alt yacute.sc.alt ydieresis.sc.alt zacute.sc.alt zcaron.sc.alt zdotaccent.sc.alt ]; @ACCENTS_SC_ALT = [ acute.sc.alt breve.sc.alt caron.sc.alt cedilla.sc.alt circumflex.sc commaaccent.sc.alt dieresis.sc.alt dotaccent.sc.alt grave.sc.alt hungarumlaut.sc macron.sc.alt ogonek.sc.alt ring.sc.alt tilde.sc.alt ]; # --- @LETTERS_UC_ALT2 = [ A.alt2 - Z.alt2 AE.alt2 Lslash.alt2 Oslash.alt2 OE.alt2 Thorn.alt2 Eth.alt2 Aacute.alt2 Abreve.alt2 Acircumflex.alt2 Adieresis.alt2 Agrave.alt2 Amacron.alt2 Aogonek.alt2 Aring.alt2 Atilde.alt2 Cacute.alt2 Ccaron.alt2 Ccedilla.alt2 Dcaron.alt2 Dcroat.alt2 Eacute.alt2 Ecaron.alt2 Ecircumflex.alt2 Edieresis.alt2 Edotaccent.alt2 Egrave.alt2 Emacron.alt2 Eogonek.alt2 Gbreve.alt2 Gcommaaccent.alt2 Iacute.alt2 Icircumflex.alt2 Idieresis.alt2 Igrave.alt2 Imacron.alt2 Iogonek.alt2 Kcommaaccent.alt2 Lacute.alt2 Lcaron.alt2 Lcommaaccent.alt2 Nacute.alt2 Ncaron.alt2 Ncommaaccent.alt2 Ntilde.alt2 Oacute.alt2 Ocircumflex.alt2 Odieresis.alt2 Ograve.alt2 Ohungarumlaut.alt2 Omacron.alt2 Otilde.alt2 Racute.alt2 Rcaron.alt2 Rcommaaccent.alt2 Sacute.alt2 Scaron.alt2 Scedilla.alt2 Scommaaccent.alt2 Tcaron.alt2 Tcommaaccent.alt2 Uacute.alt2 Ucircumflex.alt2 Udieresis.alt2 Ugrave.alt2 Uhungarumlaut.alt2 Umacron.alt2 Uogonek.alt2 Uring.alt2 Yacute.alt2 Ydieresis.alt2 Zacute.alt2 Zcaron.alt2 Zdotaccent.alt2 ]; @ACCENTS_UC_ALT2 = [ acute.cap.alt2 breve.cap.alt2 caron.cap.alt2 cedilla.cap.alt2 circumflex.cap.alt2 commaaccent.cap.alt2 dieresis.cap.alt2 dotaccent.cap.alt2 grave.cap.alt2 hungarumlaut.cap.alt2 macron.cap.alt2 ogonek.cap.alt2 ring.cap.alt2 tilde.cap.alt2 ]; @LETTERS_LC_ALT2 = [ a.alt2 - z.alt2 ae.alt2 lslash.alt2 oslash.alt2 oe.alt2 thorn.alt2 eth.alt2 aacute.alt2 abreve.alt2 acircumflex.alt2 adieresis.alt2 agrave.alt2 amacron.alt2 aogonek.alt2 aring.alt2 atilde.alt2 cacute.alt2 ccaron.alt2 ccedilla.alt2 dcaron.alt2 dcroat.alt2 eacute.alt2 ecaron.alt2 ecircumflex.alt2 edieresis.alt2 edotaccent.alt2 egrave.alt2 emacron.alt2 eogonek.alt2 gbreve.alt2 gcommaaccent.alt2 iacute.alt2 icircumflex.alt2 idieresis.alt2 igrave.alt2 imacron.alt2 iogonek.alt2 kcommaaccent.alt2 lacute.alt2 lcaron.alt2 lcommaaccent.alt2 nacute.alt2 ncaron.alt2 ncommaaccent.alt2 ntilde.alt2 oacute.alt2 ocircumflex.alt2 odieresis.alt2 ograve.alt2 ohungarumlaut.alt2 omacron.alt2 otilde.alt2 racute.alt2 rcaron.alt2 rcommaaccent.alt2 sacute.alt2 scaron.alt2 scedilla.alt2 scommaaccent.alt2 tcaron.alt2 tcommaaccent.alt2 uacute.alt2 ucircumflex.alt2 udieresis.alt2 ugrave.alt2 uhungarumlaut.alt2 umacron.alt2 uogonek.alt2 uring.alt2 yacute.alt2 ydieresis.alt2 zacute.alt2 zcaron.alt2 zdotaccent.alt2 ]; @ACCENTS_LC_ALT2 = [ acute.alt2 breve.alt2 caron.alt2 cedilla.alt2 circumflex.alt2 commaaccent.alt2 dieresis.alt2 dotaccent grave.alt2 hungarumlaut.alt2 macron.alt2 ogonek.alt2 ring.alt2 tilde.alt2 ]; @LETTERS_SC_ALT2 = [ a.sc.alt2 - z.sc.alt2 ae.sc.alt2 lslash.sc.alt2 oslash.sc.alt2 oe.sc.alt2 thorn.sc.alt2 eth.sc.alt2 aacute.sc.alt2 abreve.sc.alt2 acircumflex.sc.alt2 adieresis.sc.alt2 agrave.sc.alt2 amacron.sc.alt2 aogonek.sc.alt2 aring.sc.alt2 atilde.sc.alt2 cacute.sc.alt2 ccaron.sc.alt2 ccedilla.sc.alt2 dcaron.sc.alt2 dcroat.sc.alt2 eacute.sc.alt2 ecaron.sc.alt2 ecircumflex.sc.alt2 edieresis.sc.alt2 edotaccent.sc.alt2 egrave.sc.alt2 emacron.sc.alt2 eogonek.sc.alt2 gbreve.sc.alt2 gcommaaccent.sc.alt2 iacute.sc.alt2 icircumflex.sc.alt2 idieresis.sc.alt2 igrave.sc.alt2 imacron.sc.alt2 iogonek.sc.alt2 kcommaaccent.sc.alt2 lacute.sc.alt2 lcaron.sc.alt2 lcommaaccent.sc.alt2 nacute.sc.alt2 ncaron.sc.alt2 ncommaaccent.sc.alt2 ntilde.sc.alt2 oacute.sc.alt2 ocircumflex.sc.alt2 odieresis.sc.alt2 ograve.sc.alt2 ohungarumlaut.sc.alt2 omacron.sc.alt2 otilde.sc.alt2 racute.sc.alt2 rcaron.sc.alt2 rcommaaccent.sc.alt2 sacute.sc.alt2 scaron.sc.alt2 scedilla.sc.alt2 scommaaccent.sc.alt2 tcaron.sc.alt2 tcommaaccent.sc.alt2 uacute.sc.alt2 ucircumflex.sc.alt2 udieresis.sc.alt2 ugrave.sc.alt2 uhungarumlaut.sc.alt2 umacron.sc.alt2 uogonek.sc.alt2 uring.sc.alt2 yacute.sc.alt2 ydieresis.sc.alt2 zacute.sc.alt2 zcaron.sc.alt2 zdotaccent.sc.alt2 ]; @ACCENTS_SC_ALT2 = [ acute.sc.alt2 breve.sc.alt2 caron.sc.alt2 cedilla.sc.alt2 circumflex.sc commaaccent.sc.alt2 dieresis.sc.alt2 dotaccent.sc.alt2 grave.sc.alt2 hungarumlaut.sc macron.sc.alt2 ogonek.sc.alt2 ring.sc.alt2 tilde.sc.alt2 ]; # --- @LETTERS_UC_ALT3 = [ A.alt3 - Z.alt3 AE.alt3 Lslash.alt3 Oslash.alt3 OE.alt3 Thorn.alt3 Eth.alt3 Aacute.alt3 Abreve.alt3 Acircumflex.alt3 Adieresis.alt3 Agrave.alt3 Amacron.alt3 Aogonek.alt3 Aring.alt3 Atilde.alt3 Cacute.alt3 Ccaron.alt3 Ccedilla.alt3 Dcaron.alt3 Dcroat.alt3 Eacute.alt3 Ecaron.alt3 Ecircumflex.alt3 Edieresis.alt3 Edotaccent.alt3 Egrave.alt3 Emacron.alt3 Eogonek.alt3 Gbreve.alt3 Gcommaaccent.alt3 Iacute.alt3 Icircumflex.alt3 Idieresis.alt3 Igrave.alt3 Imacron.alt3 Iogonek.alt3 Kcommaaccent.alt3 Lacute.alt3 Lcaron.alt3 Lcommaaccent.alt3 Nacute.alt3 Ncaron.alt3 Ncommaaccent.alt3 Ntilde.alt3 Oacute.alt3 Ocircumflex.alt3 Odieresis.alt3 Ograve.alt3 Ohungarumlaut.alt3 Omacron.alt3 Otilde.alt3 Racute.alt3 Rcaron.alt3 Rcommaaccent.alt3 Sacute.alt3 Scaron.alt3 Scedilla.alt3 Scommaaccent.alt3 Tcaron.alt3 Tcommaaccent.alt3 Uacute.alt3 Ucircumflex.alt3 Udieresis.alt3 Ugrave.alt3 Uhungarumlaut.alt3 Umacron.alt3 Uogonek.alt3 Uring.alt3 Yacute.alt3 Ydieresis.alt3 Zacute.alt3 Zcaron.alt3 Zdotaccent.alt3 ]; @ACCENTS_UC_ALT3 = [ acute.cap.alt3 breve.cap.alt3 caron.cap.alt3 cedilla.cap.alt3 circumflex.cap.alt3 commaaccent.cap.alt3 dieresis.cap.alt3 dotaccent.cap.alt3 grave.cap.alt3 hungarumlaut.cap.alt3 macron.cap.alt3 ogonek.cap.alt3 ring.cap.alt3 tilde.cap.alt3 ]; @LETTERS_LC_ALT3 = [ a.alt3 - z.alt3 ae.alt3 lslash.alt3 oslash.alt3 oe.alt3 thorn.alt3 eth.alt3 aacute.alt3 abreve.alt3 acircumflex.alt3 adieresis.alt3 agrave.alt3 amacron.alt3 aogonek.alt3 aring.alt3 atilde.alt3 cacute.alt3 ccaron.alt3 ccedilla.alt3 dcaron.alt3 dcroat.alt3 eacute.alt3 ecaron.alt3 ecircumflex.alt3 edieresis.alt3 edotaccent.alt3 egrave.alt3 emacron.alt3 eogonek.alt3 gbreve.alt3 gcommaaccent.alt3 iacute.alt3 icircumflex.alt3 idieresis.alt3 igrave.alt3 imacron.alt3 iogonek.alt3 kcommaaccent.alt3 lacute.alt3 lcaron.alt3 lcommaaccent.alt3 nacute.alt3 ncaron.alt3 ncommaaccent.alt3 ntilde.alt3 oacute.alt3 ocircumflex.alt3 odieresis.alt3 ograve.alt3 ohungarumlaut.alt3 omacron.alt3 otilde.alt3 racute.alt3 rcaron.alt3 rcommaaccent.alt3 sacute.alt3 scaron.alt3 scedilla.alt3 scommaaccent.alt3 tcaron.alt3 tcommaaccent.alt3 uacute.alt3 ucircumflex.alt3 udieresis.alt3 ugrave.alt3 uhungarumlaut.alt3 umacron.alt3 uogonek.alt3 uring.alt3 yacute.alt3 ydieresis.alt3 zacute.alt3 zcaron.alt3 zdotaccent.alt3 ]; @ACCENTS_LC_ALT3 = [ acute.alt3 breve.alt3 caron.alt3 cedilla.alt3 circumflex.alt3 commaaccent.alt3 dieresis.alt3 dotaccent grave.alt3 hungarumlaut.alt3 macron.alt3 ogonek.alt3 ring.alt3 tilde.alt3 ]; @LETTERS_SC_ALT3 = [ a.sc.alt3 - z.sc.alt3 ae.sc.alt3 lslash.sc.alt3 oslash.sc.alt3 oe.sc.alt3 thorn.sc.alt3 eth.sc.alt3 aacute.sc.alt3 abreve.sc.alt3 acircumflex.sc.alt3 adieresis.sc.alt3 agrave.sc.alt3 amacron.sc.alt3 aogonek.sc.alt3 aring.sc.alt3 atilde.sc.alt3 cacute.sc.alt3 ccaron.sc.alt3 ccedilla.sc.alt3 dcaron.sc.alt3 dcroat.sc.alt3 eacute.sc.alt3 ecaron.sc.alt3 ecircumflex.sc.alt3 edieresis.sc.alt3 edotaccent.sc.alt3 egrave.sc.alt3 emacron.sc.alt3 eogonek.sc.alt3 gbreve.sc.alt3 gcommaaccent.sc.alt3 iacute.sc.alt3 icircumflex.sc.alt3 idieresis.sc.alt3 igrave.sc.alt3 imacron.sc.alt3 iogonek.sc.alt3 kcommaaccent.sc.alt3 lacute.sc.alt3 lcaron.sc.alt3 lcommaaccent.sc.alt3 nacute.sc.alt3 ncaron.sc.alt3 ncommaaccent.sc.alt3 ntilde.sc.alt3 oacute.sc.alt3 ocircumflex.sc.alt3 odieresis.sc.alt3 ograve.sc.alt3 ohungarumlaut.sc.alt3 omacron.sc.alt3 otilde.sc.alt3 racute.sc.alt3 rcaron.sc.alt3 rcommaaccent.sc.alt3 sacute.sc.alt3 scaron.sc.alt3 scedilla.sc.alt3 scommaaccent.sc.alt3 tcaron.sc.alt3 tcommaaccent.sc.alt3 uacute.sc.alt3 ucircumflex.sc.alt3 udieresis.sc.alt3 ugrave.sc.alt3 uhungarumlaut.sc.alt3 umacron.sc.alt3 uogonek.sc.alt3 uring.sc.alt3 yacute.sc.alt3 ydieresis.sc.alt3 zacute.sc.alt3 zcaron.sc.alt3 zdotaccent.sc.alt3 ]; @ACCENTS_SC_ALT3 = [ acute.sc.alt3 breve.sc.alt3 caron.sc.alt3 cedilla.sc.alt3 circumflex.sc commaaccent.sc.alt3 dieresis.sc.alt3 dotaccent.sc.alt3 grave.sc.alt3 hungarumlaut.sc macron.sc.alt3 ogonek.sc.alt3 ring.sc.alt3 tilde.sc.alt3 ]; # --- @LETTERS_UC_ALT4 = [ A.alt4 - Z.alt4 AE.alt4 Lslash.alt4 Oslash.alt4 OE.alt4 Thorn.alt4 Eth.alt4 Aacute.alt4 Abreve.alt4 Acircumflex.alt4 Adieresis.alt4 Agrave.alt4 Amacron.alt4 Aogonek.alt4 Aring.alt4 Atilde.alt4 Cacute.alt4 Ccaron.alt4 Ccedilla.alt4 Dcaron.alt4 Dcroat.alt4 Eacute.alt4 Ecaron.alt4 Ecircumflex.alt4 Edieresis.alt4 Edotaccent.alt4 Egrave.alt4 Emacron.alt4 Eogonek.alt4 Gbreve.alt4 Gcommaaccent.alt4 Iacute.alt4 Icircumflex.alt4 Idieresis.alt4 Igrave.alt4 Imacron.alt4 Iogonek.alt4 Kcommaaccent.alt4 Lacute.alt4 Lcaron.alt4 Lcommaaccent.alt4 Nacute.alt4 Ncaron.alt4 Ncommaaccent.alt4 Ntilde.alt4 Oacute.alt4 Ocircumflex.alt4 Odieresis.alt4 Ograve.alt4 Ohungarumlaut.alt4 Omacron.alt4 Otilde.alt4 Racute.alt4 Rcaron.alt4 Rcommaaccent.alt4 Sacute.alt4 Scaron.alt4 Scedilla.alt4 Scommaaccent.alt4 Tcaron.alt4 Tcommaaccent.alt4 Uacute.alt4 Ucircumflex.alt4 Udieresis.alt4 Ugrave.alt4 Uhungarumlaut.alt4 Umacron.alt4 Uogonek.alt4 Uring.alt4 Yacute.alt4 Ydieresis.alt4 Zacute.alt4 Zcaron.alt4 Zdotaccent.alt4 ]; @ACCENTS_UC_ALT4 = [ acute.cap.alt4 breve.cap.alt4 caron.cap.alt4 cedilla.cap.alt4 circumflex.cap.alt4 commaaccent.cap.alt4 dieresis.cap.alt4 dotaccent.cap.alt4 grave.cap.alt4 hungarumlaut.cap.alt4 macron.cap.alt4 ogonek.cap.alt4 ring.cap.alt4 tilde.cap.alt4 ]; @LETTERS_LC_ALT4 = [ a.alt4 - z.alt4 ae.alt4 lslash.alt4 oslash.alt4 oe.alt4 thorn.alt4 eth.alt4 aacute.alt4 abreve.alt4 acircumflex.alt4 adieresis.alt4 agrave.alt4 amacron.alt4 aogonek.alt4 aring.alt4 atilde.alt4 cacute.alt4 ccaron.alt4 ccedilla.alt4 dcaron.alt4 dcroat.alt4 eacute.alt4 ecaron.alt4 ecircumflex.alt4 edieresis.alt4 edotaccent.alt4 egrave.alt4 emacron.alt4 eogonek.alt4 gbreve.alt4 gcommaaccent.alt4 iacute.alt4 icircumflex.alt4 idieresis.alt4 igrave.alt4 imacron.alt4 iogonek.alt4 kcommaaccent.alt4 lacute.alt4 lcaron.alt4 lcommaaccent.alt4 nacute.alt4 ncaron.alt4 ncommaaccent.alt4 ntilde.alt4 oacute.alt4 ocircumflex.alt4 odieresis.alt4 ograve.alt4 ohungarumlaut.alt4 omacron.alt4 otilde.alt4 racute.alt4 rcaron.alt4 rcommaaccent.alt4 sacute.alt4 scaron.alt4 scedilla.alt4 scommaaccent.alt4 tcaron.alt4 tcommaaccent.alt4 uacute.alt4 ucircumflex.alt4 udieresis.alt4 ugrave.alt4 uhungarumlaut.alt4 umacron.alt4 uogonek.alt4 uring.alt4 yacute.alt4 ydieresis.alt4 zacute.alt4 zcaron.alt4 zdotaccent.alt4 ]; @ACCENTS_LC_ALT4 = [ acute.alt4 breve.alt4 caron.alt4 cedilla.alt4 circumflex.alt4 commaaccent.alt4 dieresis.alt4 dotaccent grave.alt4 hungarumlaut.alt4 macron.alt4 ogonek.alt4 ring.alt4 tilde.alt4 ]; @LETTERS_SC_ALT4 = [ a.sc.alt4 - z.sc.alt4 ae.sc.alt4 lslash.sc.alt4 oslash.sc.alt4 oe.sc.alt4 thorn.sc.alt4 eth.sc.alt4 aacute.sc.alt4 abreve.sc.alt4 acircumflex.sc.alt4 adieresis.sc.alt4 agrave.sc.alt4 amacron.sc.alt4 aogonek.sc.alt4 aring.sc.alt4 atilde.sc.alt4 cacute.sc.alt4 ccaron.sc.alt4 ccedilla.sc.alt4 dcaron.sc.alt4 dcroat.sc.alt4 eacute.sc.alt4 ecaron.sc.alt4 ecircumflex.sc.alt4 edieresis.sc.alt4 edotaccent.sc.alt4 egrave.sc.alt4 emacron.sc.alt4 eogonek.sc.alt4 gbreve.sc.alt4 gcommaaccent.sc.alt4 iacute.sc.alt4 icircumflex.sc.alt4 idieresis.sc.alt4 igrave.sc.alt4 imacron.sc.alt4 iogonek.sc.alt4 kcommaaccent.sc.alt4 lacute.sc.alt4 lcaron.sc.alt4 lcommaaccent.sc.alt4 nacute.sc.alt4 ncaron.sc.alt4 ncommaaccent.sc.alt4 ntilde.sc.alt4 oacute.sc.alt4 ocircumflex.sc.alt4 odieresis.sc.alt4 ograve.sc.alt4 ohungarumlaut.sc.alt4 omacron.sc.alt4 otilde.sc.alt4 racute.sc.alt4 rcaron.sc.alt4 rcommaaccent.sc.alt4 sacute.sc.alt4 scaron.sc.alt4 scedilla.sc.alt4 scommaaccent.sc.alt4 tcaron.sc.alt4 tcommaaccent.sc.alt4 uacute.sc.alt4 ucircumflex.sc.alt4 udieresis.sc.alt4 ugrave.sc.alt4 uhungarumlaut.sc.alt4 umacron.sc.alt4 uogonek.sc.alt4 uring.sc.alt4 yacute.sc.alt4 ydieresis.sc.alt4 zacute.sc.alt4 zcaron.sc.alt4 zdotaccent.sc.alt4 ]; @ACCENTS_SC_ALT4 = [ acute.sc.alt4 breve.sc.alt4 caron.sc.alt4 cedilla.sc.alt4 circumflex.sc commaaccent.sc.alt4 dieresis.sc.alt4 dotaccent.sc.alt4 grave.sc.alt4 hungarumlaut.sc macron.sc.alt4 ogonek.sc.alt4 ring.sc.alt4 tilde.sc.alt4 ]; # --- Alternate variations for the beginning-of-word boundery @LETTERS_UC_BEGINNING = [ A - Z AE Lslash Oslash OE Thorn Eth Aacute Abreve Acircumflex Adieresis Agrave Amacron Aogonek Aring Atilde Cacute Ccaron Ccedilla Dcaron Dcroat Eacute Ecaron Ecircumflex Edieresis Edotaccent Egrave Emacron Eogonek Gbreve Gcommaaccent Iacute Icircumflex Idieresis Igrave Imacron Iogonek Kcommaaccent Lacute Lcaron Lcommaaccent Nacute Ncaron Ncommaaccent Ntilde Oacute Ocircumflex Odieresis Ograve Ohungarumlaut Omacron Otilde Racute Rcaron Rcommaaccent Sacute Scaron Scedilla Scommaaccent Tcaron Tcommaaccent Uacute Ucircumflex Udieresis Ugrave Uhungarumlaut Umacron Uogonek Uring Yacute Ydieresis Zacute Zcaron Zdotaccent ]; @LETTERS_LC_BEGINNING = [ a - z ae lslash oslash oe thorn eth aacute abreve acircumflex adieresis agrave amacron aogonek aring atilde cacute ccaron ccedilla dcaron dcroat eacute ecaron ecircumflex edieresis edotaccent egrave emacron eogonek gbreve gcommaaccent iacute icircumflex idieresis igrave imacron iogonek kcommaaccent lacute lcaron lcommaaccent nacute ncaron ncommaaccent ntilde oacute ocircumflex odieresis ograve ohungarumlaut omacron otilde racute rcaron rcommaaccent sacute scaron scedilla scommaaccent tcaron tcommaaccent uacute ucircumflex udieresis ugrave uhungarumlaut umacron uogonek uring yacute ydieresis zacute zcaron zdotaccent ]; @LETTERS_SC_BEGINNING = [ a.sc - z.sc ae.sc lslash.sc oslash.sc oe.sc thorn.sc eth.sc aacute.sc abreve.sc acircumflex.sc adieresis.sc agrave.sc amacron.sc aogonek.sc aring.sc atilde.sc cacute.sc ccaron.sc ccedilla.sc dcaron.sc dcroat.sc eacute.sc ecaron.sc ecircumflex.sc edieresis.sc edotaccent.sc egrave.sc emacron.sc eogonek.sc gbreve.sc gcommaaccent.sc iacute.sc icircumflex.sc idieresis.sc igrave.sc imacron.sc iogonek.sc kcommaaccent.sc lacute.sc lcaron.sc lcommaaccent.sc nacute.sc ncaron.sc ncommaaccent.sc ntilde.sc oacute.sc ocircumflex.sc odieresis.sc ograve.sc ohungarumlaut.sc omacron.sc otilde.sc racute.sc rcaron.sc rcommaaccent.sc sacute.sc scaron.sc scedilla.sc scommaaccent.sc tcaron.sc tcommaaccent.sc uacute.sc ucircumflex.sc udieresis.sc ugrave.sc uhungarumlaut.sc umacron.sc uogonek.sc uring.sc yacute.sc ydieresis.sc zacute.sc zcaron.sc zdotaccent.sc ]; @LETTERS_UC_START = [ A.start - Z.start AE.start Lslash.start Oslash.start OE.start Thorn.start Eth.start Aacute.start Abreve.start Acircumflex.start Adieresis.start Agrave.start Amacron.start Aogonek.start Aring.start Atilde.start Cacute.start Ccaron.start Ccedilla.start Dcaron.start Dcroat.start Eacute.start Ecaron.start Ecircumflex.start Edieresis.start Edotaccent.start Egrave.start Emacron.start Eogonek.start Gbreve.start Gcommaaccent.start Iacute.start Icircumflex.start Idieresis.start Igrave.start Imacron.start Iogonek.start Kcommaaccent.start Lacute.start Lcaron.start Lcommaaccent.start Nacute.start Ncaron.start Ncommaaccent.start Ntilde.start Oacute.start Ocircumflex.start Odieresis.start Ograve.start Ohungarumlaut.start Omacron.start Otilde.start Racute.start Rcaron.start Rcommaaccent.start Sacute.start Scaron.start Scedilla.start Scommaaccent.start Tcaron.start Tcommaaccent.start Uacute.start Ucircumflex.start Udieresis.start Ugrave.start Uhungarumlaut.start Umacron.start Uogonek.start Uring.start Yacute.start Ydieresis.start Zacute.start Zcaron.start Zdotaccent.start ]; @LETTERS_LC_START = [ a.start - z.start ae.start lslash.start oslash.start oe.start thorn.start eth.start aacute.start abreve.start acircumflex.start adieresis.start agrave.start amacron.start aogonek.start aring.start atilde.start cacute.start ccaron.start ccedilla.start dcaron.start dcroat.start eacute.start ecaron.start ecircumflex.start edieresis.start edotaccent.start egrave.start emacron.start eogonek.start gbreve.start gcommaaccent.start iacute.start icircumflex.start idieresis.start igrave.start imacron.start iogonek.start kcommaaccent.start lacute.start lcaron.start lcommaaccent.start nacute.start ncaron.start ncommaaccent.start ntilde.start oacute.start ocircumflex.start odieresis.start ograve.start ohungarumlaut.start omacron.start otilde.start racute.start rcaron.start rcommaaccent.start sacute.start scaron.start scedilla.start scommaaccent.start tcaron.start tcommaaccent.start uacute.start ucircumflex.start udieresis.start ugrave.start uhungarumlaut.start umacron.start uogonek.start uring.start yacute.start ydieresis.start zacute.start zcaron.start zdotaccent.start ]; @LETTERS_SC_START = [ a.sc.start - z.sc.start ae.sc.start lslash.sc.start oslash.sc.start oe.sc.start thorn.sc.start eth.sc.start aacute.sc.start abreve.sc.start acircumflex.sc.start adieresis.sc.start agrave.sc.start amacron.sc.start aogonek.sc.start aring.sc.start atilde.sc.start cacute.sc.start ccaron.sc.start ccedilla.sc.start dcaron.sc.start dcroat.sc.start eacute.sc.start ecaron.sc.start ecircumflex.sc.start edieresis.sc.start edotaccent.sc.start egrave.sc.start emacron.sc.start eogonek.sc.start gbreve.sc.start gcommaaccent.sc.start iacute.sc.start icircumflex.sc.start idieresis.sc.start igrave.sc.start imacron.sc.start iogonek.sc.start kcommaaccent.sc.start lacute.sc.start lcaron.sc.start lcommaaccent.sc.start nacute.sc.start ncaron.sc.start ncommaaccent.sc.start ntilde.sc.start oacute.sc.start ocircumflex.sc.start odieresis.sc.start ograve.sc.start ohungarumlaut.sc.start omacron.sc.start otilde.sc.start racute.sc.start rcaron.sc.start rcommaaccent.sc.start sacute.sc.start scaron.sc.start scedilla.sc.start scommaaccent.sc.start tcaron.sc.start tcommaaccent.sc.start uacute.sc.start ucircumflex.sc.start udieresis.sc.start ugrave.sc.start uhungarumlaut.sc.start umacron.sc.start uogonek.sc.start uring.sc.start yacute.sc.start ydieresis.sc.start zacute.sc.start zcaron.sc.start zdotaccent.sc.start ]; # --- Alternate variations for the ending-of-word boundery @LETTERS_UC_ENDING = [ A - Z AE Lslash Oslash OE Thorn Eth Aacute Abreve Acircumflex Adieresis Agrave Amacron Aogonek Aring Atilde Cacute Ccaron Ccedilla Dcaron Dcroat Eacute Ecaron Ecircumflex Edieresis Edotaccent Egrave Emacron Eogonek Gbreve Gcommaaccent Iacute Icircumflex Idieresis Igrave Imacron Iogonek Kcommaaccent Lacute Lcaron Lcommaaccent Nacute Ncaron Ncommaaccent Ntilde Oacute Ocircumflex Odieresis Ograve Ohungarumlaut Omacron Otilde Racute Rcaron Rcommaaccent Sacute Scaron Scedilla Scommaaccent Tcaron Tcommaaccent Uacute Ucircumflex Udieresis Ugrave Uhungarumlaut Umacron Uogonek Uring Yacute Ydieresis Zacute Zcaron Zdotaccent ]; @LETTERS_LC_ENDING = [ a - z ae lslash oslash oe thorn eth aacute abreve acircumflex adieresis agrave amacron aogonek aring atilde cacute ccaron ccedilla dcaron dcroat eacute ecaron ecircumflex edieresis edotaccent egrave emacron eogonek gbreve gcommaaccent iacute icircumflex idieresis igrave imacron iogonek kcommaaccent lacute lcaron lcommaaccent nacute ncaron ncommaaccent ntilde oacute ocircumflex odieresis ograve ohungarumlaut omacron otilde racute rcaron rcommaaccent sacute scaron scedilla scommaaccent tcaron tcommaaccent uacute ucircumflex udieresis ugrave uhungarumlaut umacron uogonek uring yacute ydieresis zacute zcaron zdotaccent ]; @LETTERS_SC_ENDING = [ a.sc - z.sc ae.sc lslash.sc oslash.sc oe.sc thorn.sc eth.sc aacute.sc abreve.sc acircumflex.sc adieresis.sc agrave.sc amacron.sc aogonek.sc aring.sc atilde.sc cacute.sc ccaron.sc ccedilla.sc dcaron.sc dcroat.sc eacute.sc ecaron.sc ecircumflex.sc edieresis.sc edotaccent.sc egrave.sc emacron.sc eogonek.sc gbreve.sc gcommaaccent.sc iacute.sc icircumflex.sc idieresis.sc igrave.sc imacron.sc iogonek.sc kcommaaccent.sc lacute.sc lcaron.sc lcommaaccent.sc nacute.sc ncaron.sc ncommaaccent.sc ntilde.sc oacute.sc ocircumflex.sc odieresis.sc ograve.sc ohungarumlaut.sc omacron.sc otilde.sc racute.sc rcaron.sc rcommaaccent.sc sacute.sc scaron.sc scedilla.sc scommaaccent.sc tcaron.sc tcommaaccent.sc uacute.sc ucircumflex.sc udieresis.sc ugrave.sc uhungarumlaut.sc umacron.sc uogonek.sc uring.sc yacute.sc ydieresis.sc zacute.sc zcaron.sc zdotaccent.sc ]; @LETTERS_UC_END = [ A.end - Z.end AE.end Lslash.end Oslash.end OE.end Thorn.end Eth.end Aacute.end Abreve.end Acircumflex.end Adieresis.end Agrave.end Amacron.end Aogonek.end Aring.end Atilde.end Cacute.end Ccaron.end Ccedilla.end Dcaron.end Dcroat.end Eacute.end Ecaron.end Ecircumflex.end Edieresis.end Edotaccent.end Egrave.end Emacron.end Eogonek.end Gbreve.end Gcommaaccent.end Iacute.end Icircumflex.end Idieresis.end Igrave.end Imacron.end Iogonek.end Kcommaaccent.end Lacute.end Lcaron.end Lcommaaccent.end Nacute.end Ncaron.end Ncommaaccent.end Ntilde.end Oacute.end Ocircumflex.end Odieresis.end Ograve.end Ohungarumlaut.end Omacron.end Otilde.end Racute.end Rcaron.end Rcommaaccent.end Sacute.end Scaron.end Scedilla.end Scommaaccent.end Tcaron.end Tcommaaccent.end Uacute.end Ucircumflex.end Udieresis.end Ugrave.end Uhungarumlaut.end Umacron.end Uogonek.end Uring.end Yacute.end Ydieresis.end Zacute.end Zcaron.end Zdotaccent.end ]; @LETTERS_LC_END = [ a.end - z.end ae.end lslash.end oslash.end oe.end thorn.end eth.end aacute.end abreve.end acircumflex.end adieresis.end agrave.end amacron.end aogonek.end aring.end atilde.end cacute.end ccaron.end ccedilla.end dcaron.end dcroat.end eacute.end ecaron.end ecircumflex.end edieresis.end edotaccent.end egrave.end emacron.end eogonek.end gbreve.end gcommaaccent.end iacute.end icircumflex.end idieresis.end igrave.end imacron.end iogonek.end kcommaaccent.end lacute.end lcaron.end lcommaaccent.end nacute.end ncaron.end ncommaaccent.end ntilde.end oacute.end ocircumflex.end odieresis.end ograve.end ohungarumlaut.end omacron.end otilde.end racute.end rcaron.end rcommaaccent.end sacute.end scaron.end scedilla.end scommaaccent.end tcaron.end tcommaaccent.end uacute.end ucircumflex.end udieresis.end ugrave.end uhungarumlaut.end umacron.end uogonek.end uring.end yacute.end ydieresis.end zacute.end zcaron.end zdotaccent.end ]; @LETTERS_SC_END = [ a.sc.end - z.sc.end ae.sc.end lslash.sc.end oslash.sc.end oe.sc.end thorn.sc.end eth.sc.end aacute.sc.end abreve.sc.end acircumflex.sc.end adieresis.sc.end agrave.sc.end amacron.sc.end aogonek.sc.end aring.sc.end atilde.sc.end cacute.sc.end ccaron.sc.end ccedilla.sc.end dcaron.sc.end dcroat.sc.end eacute.sc.end ecaron.sc.end ecircumflex.sc.end edieresis.sc.end edotaccent.sc.end egrave.sc.end emacron.sc.end eogonek.sc.end gbreve.sc.end gcommaaccent.sc.end iacute.sc.end icircumflex.sc.end idieresis.sc.end igrave.sc.end imacron.sc.end iogonek.sc.end kcommaaccent.sc.end lacute.sc.end lcaron.sc.end lcommaaccent.sc.end nacute.sc.end ncaron.sc.end ncommaaccent.sc.end ntilde.sc.end oacute.sc.end ocircumflex.sc.end odieresis.sc.end ograve.sc.end ohungarumlaut.sc.end omacron.sc.end otilde.sc.end racute.sc.end rcaron.sc.end rcommaaccent.sc.end sacute.sc.end scaron.sc.end scedilla.sc.end scommaaccent.sc.end tcaron.sc.end tcommaaccent.sc.end uacute.sc.end ucircumflex.sc.end udieresis.sc.end ugrave.sc.end uhungarumlaut.sc.end umacron.sc.end uogonek.sc.end uring.sc.end yacute.sc.end ydieresis.sc.end zacute.sc.end zcaron.sc.end zdotaccent.sc.end ]; # --- Figures & numerators @FIG_TAB_LINING = [ zero one two three four five six seven eight nine ]; @FIG_TAB_OLDSTYLE = [ zero.taboldstyle one.taboldstyle two.taboldstyle three.taboldstyle four.taboldstyle five.taboldstyle six.taboldstyle seven.taboldstyle eight.taboldstyle nine.taboldstyle ]; @FIG_TAB_SC = [ zero.sc one.sc two.sc three.sc four.sc five.sc six.sc seven.sc eight.sc nine.sc ]; @FIG_FIT_LINING = [ zero.fitted one.fitted two.fitted three.fitted four.fitted five.fitted six.fitted seven.fitted eight.fitted nine.fitted ]; @FIG_FIT_OLDSTYLE = [ zero.oldstyle one.oldstyle two.oldstyle three.oldstyle four.oldstyle five.oldstyle six.oldstyle seven.oldstyle eight.oldstyle nine.oldstyle ]; @FIG_FIT_SC = [ zero.scfitted one.scfitted two.scfitted three.scfitted four.scfitted five.scfitted six.scfitted seven.scfitted eight.scfitted nine.scfitted ]; @FIGURES = [ @FIG_TAB_LINING @FIG_FIT_LINING @FIG_FIT_OLDSTYLE @FIG_TAB_OLDSTYLE ]; @FIG_TITLING = [ zero.titling one.titling two.titling three.titling four.titling five.titling six.titling seven.titling eight.titling nine.titling ]; @FIG_TAB_LINING_TITLING = [ zero.titling one.titling two.titling three.titling four.titling five.titling six.titling seven.titling eight.titling nine.titling ]; @FIG_SUPERIOR = [ zerosuperior onesuperior twosuperior threesuperior foursuperior fivesuperior sixsuperior sevensuperior eightsuperior ninesuperior ]; @FIG_INFERIOR = [ zeroinferior oneinferior twoinferior threeinferior fourinferior fiveinferior sixinferior seveninferior eightinferior nineinferior ]; @FIG_NUMERATOR = [ zero.numerator one.numerator two.numerator three.numerator four.numerator five.numerator six.numerator seven.numerator eight.numerator nine.numerator ]; @FIG_DENOMINATOR = [ zero.denominator one.denominator two.denominator three.denominator four.denominator five.denominator six.denominator seven.denominator eight.denominator nine.denominator ]; # --- math operators @MATH_STANDARD =[ less greater logicalnot asciitilde plus minus multiply equal ]; @MATH_OLDSTYLE =[ less.oldstyle greater.oldstyle logicalnot.oldstyle asciitilde.oldstyle plus.oldstyle minus.oldstyle multiply.oldstyle equal.oldstyle ]; @MATH_SMALLCAPS =[ less.sc greater.sc logicalnot.sc asciitilde.sc plus.sc minus.sc multiply.sc equal.sc ]; # --- Currency & miscellaneous @CURRENCY_LINING = [ cent dollar sterling florin yen Euro colonmonetary ]; @CURRENCY_LINING_ALT = [ cent.alt dollar.alt sterling.alt florin.alt yen.alt Euro.alt colonmonetary.alt ]; @CURRENCY_LINING2 = [ franc lira peseta ]; @CURRENCY_LINING3 = [ cent dollar sterling florin yen ]; @CURRENCY_SC = [ cent.sc dollar.sc sterling.sc florin.sc yen.sc euro.sc colonmonetary.sc ]; @CURRENCY_TAB_OLDSTYLE = [ cent.taboldstyle dollar.taboldstyle sterling.taboldstyle florin.taboldstyle yen.taboldstyle Euro.taboldstyle colonmonetary.taboldstyle ]; @CURRENCY_TAB_OLDSTYLE2 = [ cent.taboldstyle dollar.taboldstyle sterling.taboldstyle florin.taboldstyle yen.taboldstyle ]; @CURRENCY_FIT_OLDSTYLE = [ centoldstyle dollaroldstyle ]; @CURRENCY_TITLING = [ cent.titling dollar.titling sterling.titling florin.titling yen.titling ]; @MISC_LINING = [ period comma cent dollar parenleft parenright hyphen ]; @MISC_SUPERIOR = [ period.superior comma.superior centsuperior dollarsuperior parenleft.superior parenright.superior hyphensuperior ]; @MISC_INFERIOR = [ periodinferior commainferior centinferior dollarinferior parenleftinferior parenrightinferior hypheninferior ]; @MISC_NUMERATOR = [ period.numerator comma.numerator cent.numerator dollar.numerator parenleft.numerator parenright.numerator hyphen.numerator ]; @MISC_DENOMINATOR = [ period.denominator comma.denominator cent.denominator dollar.denominator parenleft.denominator parenright.denominator hyphen.denominator ]; @ORNAMENTS = [ orn.001 orn.002 orn.003 orn.004 orn.005 orn.006 orn.007 orn.008 orn.009 orn.010 orn.011 orn.012 orn.013 orn.014 orn.015 orn.016 orn.017 orn.018 orn.019 orn.020 orn.021 orn.022 orn.023 orn.024 orn.025 orn.026 orn.027 orn.028 orn.029 orn.030 orn.031 orn.032 orn.033 orn.034 orn.035 orn.036 orn.037 orn.038 orn.039 orn.040 orn.041 orn.042 orn.043 orn.044 orn.045 orn.046 orn.047 orn.048 orn.049 orn.050 orn.051 orn.052 orn.053 orn.054 orn.055 orn.056 orn.057 orn.058 orn.059 orn.060 orn.061 orn.062 orn.063 orn.064 orn.065 orn.066 orn.067 orn.068 orn.069 orn.070 orn.071 orn.072 orn.073 orn.074 orn.075 orn.076 orn.077 orn.078 orn.079 orn.080 orn.081 orn.082 orn.083 orn.084 orn.085 orn.086 orn.087 orn.088 orn.089 orn.090 orn.091 orn.092 orn.093 orn.094 orn.095 orn.096 orn.097 orn.098 orn.099 orn.100 orn.101 orn.102 orn.103 orn.104 orn.105 orn.106 orn.107 orn.108 orn.109 orn.110 orn.111 orn.112 orn.113 orn.114 orn.115 orn.116 orn.117 orn.118 orn.119 orn.120 orn.121 orn.122 orn.123 orn.124 orn.125 orn.126 orn.127 orn.128 orn.129 orn.130 orn.131 orn.132 orn.133 orn.134 orn.135 orn.136 orn.137 orn.138 orn.139 orn.140 orn.141 orn.142 orn.143 orn.144 orn.145 orn.146 orn.147 orn.148 orn.149 orn.150 orn.151 orn.152 orn.153 orn.154 orn.155 orn.156 orn.157 orn.158 orn.159 orn.160 orn.161 orn.162 orn.163 orn.164 orn.165 orn.166 orn.167 orn.168 orn.169 orn.170 orn.171 orn.172 orn.173 orn.174 orn.175 orn.176 orn.177 orn.178 orn.179 orn.180 orn.181 orn.182 orn.183 orn.184 orn.185 orn.186 orn.187 orn.188 orn.189 orn.190 orn.191 orn.192 orn.193 orn.194 orn.195 orn.196 orn.197 orn.198 orn.199 orn.200 orn.201 orn.202 orn.203 orn.204 orn.205 orn.206 orn.207 orn.208 orn.209 orn.210 orn.211 orn.212 orn.213 orn.214 orn.215 orn.216 orn.217 orn.218 orn.219 orn.220 orn.221 orn.222 orn.223 orn.224 orn.225 orn.226 orn.227 orn.228 orn.229 orn.230 orn.231 orn.232 orn.233 orn.234 orn.235 orn.236 orn.237 orn.238 orn.239 orn.240 orn.241 orn.242 orn.243 orn.244 orn.245 orn.246 orn.247 orn.248 orn.249 orn.250 orn.251 orn.252 orn.253 orn.254 orn.255 orn.256 orn.257 orn.258 orn.259 orn.260 orn.261 orn.262 orn.263 orn.264 orn.265 orn.266 orn.267 orn.268 orn.269 orn.270 orn.271 orn.272 orn.273 orn.274 orn.275 orn.276 orn.277 orn.278 orn.279 orn.280 orn.281 orn.282 orn.283 orn.284 orn.285 orn.286 orn.287 orn.288 orn.289 orn.290 orn.291 orn.292 orn.293 orn.294 orn.295 orn.296 orn.297 orn.298 orn.299 orn.300 orn.301 orn.302 orn.303 orn.304 orn.305 orn.306 orn.307 orn.308 orn.309 orn.310 orn.311 orn.312 orn.313 orn.314 orn.315 orn.316 orn.317 orn.318 orn.319 orn.320 orn.321 orn.322 orn.323 orn.324 orn.325 orn.326 orn.327 orn.328 orn.329 orn.330 orn.331 orn.332 orn.333 orn.334 orn.335 orn.336 orn.337 orn.338 orn.339 orn.340 orn.341 orn.342 orn.343 orn.344 orn.345 orn.346 orn.347 orn.348 orn.349 orn.350 orn.351 orn.352 orn.353 orn.354 orn.355 orn.356 orn.357 orn.358 orn.359 orn.360 orn.361 orn.362 orn.363 orn.364 orn.365 orn.366 orn.367 orn.368 orn.369 orn.370 orn.371 orn.372 orn.373 orn.374 orn.375 orn.376 orn.377 orn.378 orn.379 orn.380 orn.381 orn.382 orn.383 orn.384 orn.385 orn.386 orn.387 orn.388 orn.389 orn.390 orn.391 orn.392 orn.393 orn.394 orn.395 orn.396 orn.397 orn.398 orn.399 orn.400 ]; #--------------------------------------- # --- FEATURE SUMMARY (description) # --- Substitution (in *alphabetical* order): # CRCY: replaces any currency character with any other one (proprietary; crcy removed from OT specification 1.25) # NFRC: substitutes the standard fractions by nut ones (proprietary) # aalt: access all alternates # c2sc: caps to smallcaps # case: uppercase, math signs and punctuation shift (up) # dlig: discretionary ligatures # dnom: replaces selected figures with denominators # dpng: dipthong subs (removed from OT specification 1.25) # frac: substitutes the existing fractions # hist: historical forms # hlig: historical ligatures # liga: standard ligatures replacement # lnum: changes figures style to lining figures # numr: replaces selected figures with numerators # onum: changes figures style to oldstyle figures # ordn: subs ordinal glyphs after numbers # ornm: allows access to ornaments # pnum: changes figures style to proportional figures # salt: replaces glyphs with alternate variations # sinf: makes numbers inferior # smcp: changes lower case to smallcaps # ss01; Beginning-of-word-boundary alternates # ss02; Ending-of-word-boundary alternates # ss03; identical to 'hist' feature for applications that don't support this # ss04; alternate replacements for discretionary ligatures # ss05-ss10; Reserved for font-specific (contextual) alternates # ss11; Cyrillic alternates # ss12; Bulgarian Cyrillic alternates # ss12-ss20; To be defined # sups: makes numbers superior # titl: replaces default glyphs with .titling variations # tnum: changes proportional figures styles to tabular figures styles # zero: slashed zero #--------------------------------------- # --- POSITIONING # kern: pairs in simple and class form # cpsp: wider spacing for caps in all-cap setting #--------------------------------------- # --- LANGUAGESYSTEMS languagesystem DFLT dflt; languagesystem latn dflt; languagesystem cyrl dflt; languagesystem grek dflt; languagesystem latn AZE; languagesystem latn CRT; languagesystem latn DEU; languagesystem latn MOL; languagesystem latn NLD; languagesystem latn ROM; languagesystem latn TRK; languagesystem cyrl BGR; languagesystem cyrl SRB; #--------------------------------------- # --- SUBSTITUTION feature aalt { sub a by ordfeminine; sub o by ordmasculine; sub numbersign by numbersign.oldstyle; sub hyphen from [endash emdash hyphen.cap hyphen.superior hyphen.inferior hyphen.numerator hyphen.denominator figuredash threequartersemdash minus]; sub hyphen.cap from [endash.cap emdash.cap]; sub period from [ellipsis period.superior period.inferior period.numerator period.denominator onedotenleader twodotenleader]; sub zero.slash from [zero.fitted zero.oldstyle zero.taboldstyle zerosuperior zeroinferior zero.numerator zero.denominator]; sub zero.slashfitted from [zero.fitted zero.oldstyle zero.taboldstyle zerosuperior zeroinferior zero.numerator zero.denominator]; feature locl; feature c2sc; feature smcp; feature case; feature onum; feature lnum; feature pnum; feature tnum; feature CRCY; feature sups; feature sinf; feature numr; feature dnom; feature NFRC; feature hist; # feature salt; feature swsh; feature titl; feature ordn; feature ornm; feature zero; feature ss01; feature ss02; feature ss02; feature ss03; feature ss04; feature ss05; feature ss06; feature ss07; feature ss08; feature ss09; feature ss10; feature ss11; feature ss12; feature ss13; feature ss14; feature ss15; feature ss16; feature ss17; feature ss18; feature ss19; feature ss20; } aalt; #--------------------------------------- feature locl { script latn; language ROM exclude_dflt; lookup LOCL_ROM { sub Scedilla by Scommaaccent; sub scedilla by scommaaccent; sub scedilla.sc by scommaaccent.sc; sub Tcedilla by Tcommaaccent; sub tcedilla by tcommaaccent; sub tcedilla.sc by tcommaaccent.sc; } LOCL_ROM; script latn; language MOL exclude_dflt; lookup LOCL_ROM; script cyrl; language SRB exclude_dflt; lookup LOCL_SRB { sub afii10066 by afii10066.serb; sub afii10068 by afii10068.serb; sub afii10069 by afii10069.serb; sub afii10081 by afii10081.serb; sub afii10084 by afii10084.serb; } LOCL_SRB; } locl; #--------------------------------------- # caps to smallcaps feature c2sc { sub @LETTERS_UC by @LETTERS_SC; sub @LETTERS_UC_GREEK by @LETTERS_SC_GREEK; sub @LETTERS_UC_CYRILLIC by @LETTERS_SC_CYRILLIC; sub @PUNCT_UC by @PUNCT_LC; sub @PUNCT_DEFAULT by @PUNCT_SC; sub @FIG_TAB_LINING by @FIG_TAB_SC; sub @FIG_FIT_LINING by @FIG_FIT_SC; sub @FIG_TAB_OLDSTYLE by @FIG_TAB_SC; sub @FIG_FIT_OLDSTYLE by @FIG_FIT_SC; sub @CURRENCY_LINING by @CURRENCY_TAB_OLDSTYLE; sub @ACCENTS_UC by @ACCENTS_SC; sub [percent perthousand] by [percent.sc perthousand.sc]; sub Idotaccent by i.dotaccentsc; sub @MATH_STANDARD by @MATH_SMALLCAPS; sub @MATH_OLDSTYLE by @MATH_SMALLCAPS; } c2sc; #--------------------------------------- # lower case to smallcaps feature smcp { script DFLT; language dflt; lookup SMCP_DFLT { sub i by i.sc; } SMCP_DFLT; lookup SMCP_ALL { sub @LETTERS_LC by @LETTERS_SC; sub @LETTERS_LC_GREEK by @LETTERS_SC_GREEK; sub @LETTERS_LC_CYRILLIC by @LETTERS_SC_CYRILLIC; sub @PUNCT_DEFAULT by @PUNCT_SC; sub @FIG_TAB_LINING by @FIG_TAB_SC; sub @FIG_FIT_LINING by @FIG_FIT_SC; sub @FIG_TAB_OLDSTYLE by @FIG_TAB_SC; sub @FIG_FIT_OLDSTYLE by @FIG_FIT_SC; sub @CURRENCY_LINING by @CURRENCY_SC; sub @ACCENTS_LC by @ACCENTS_SC; sub dotlessi by dotlessi.sc; sub [percent perthousand] by [percent.sc perthousand.sc]; sub germandbls by germandbls.sc; sub commaaccent by commaaccent.sc; sub [ampersand exclam question exclamdown questiondown] by [ampersand.sc exclam.sc question.sc exclamdown.sc questiondown.sc]; sub acaron by uni01cd.sc; sub numbersign by numbersign.sc; sub numbersign.fitted by numbersign.sc; sub percent by percent.sc; sub perthousand by perthousand.sc; sub estimated by estimated.sc; sub @MATH_STANDARD by @MATH_SMALLCAPS; sub @MATH_OLDSTYLE by @MATH_SMALLCAPS; } SMCP_ALL; script latn; language dflt; lookup SMCP_DFLT; # call lookup defined for DFLT/dflt lookup SMCP_ALL; # call lookup defined for DFLT/dflt language DEU include_dflt; language MOL include_dflt; language ROM include_dflt; language SRB include_dflt; language AZE exclude_dflt; lookup SMCP_TURK { sub i by i.dotaccentsc; } SMCP_TURK; lookup SMCP_ALL; language CRT exclude_dflt; lookup SMCP_TURK; lookup SMCP_ALL; language TRK exclude_dflt; lookup SMCP_TURK; lookup SMCP_ALL; script cyrl; language dflt; lookup SMCP_DFLT; lookup SMCP_ALL; script grek; language dflt; lookup SMCP_DFLT; lookup SMCP_ALL; } smcp; #--------------------------------------- # uppercase, math signs and punctuation shift (up) feature case { sub @FIG_TAB_OLDSTYLE by @FIG_TAB_LINING; sub @FIG_FIT_OLDSTYLE by @FIG_TAB_LINING; sub @FIG_TAB_SC by @FIG_TAB_LINING; sub @FIG_FIT_SC by @FIG_TAB_LINING; sub @CURRENCY_TAB_OLDSTYLE by @CURRENCY_LINING; sub @CURRENCY_FIT_OLDSTYLE by [cent dollar]; sub @CURRENCY_SC by @CURRENCY_LINING; sub @ACCENTS_LC by @ACCENTS_UC; sub @PUNCT_LC by @PUNCT_UC; sub [numbersign.sc percent.sc perthousand.sc] by [numbersign percent perthousand]; sub @MATH_OLDSTYLE by @MATH_STANDARD; sub @MATH_SMALLCAPS by @MATH_STANDARD; } case; #--------------------------------------- # changes figures style to oldstyle figures feature onum { sub @FIG_TAB_LINING by @FIG_FIT_OLDSTYLE; sub @FIG_FIT_LINING by @FIG_FIT_OLDSTYLE; sub @FIG_TAB_SC by @FIG_FIT_OLDSTYLE; sub @FIG_FIT_SC by @FIG_FIT_OLDSTYLE; sub @CURRENCY_LINING by @CURRENCY_TAB_OLDSTYLE; sub [numbersign percent perthousand] by [numbersign.taboldstyle percent.oldstyle perthousand.oldstyle]; sub @MATH_STANDARD by @MATH_OLDSTYLE; sub @MATH_SMALLCAPS by @MATH_OLDSTYLE; } onum; #--------------------------------------- # changes figures style to lining figures feature lnum { sub @FIG_TAB_OLDSTYLE by @FIG_TAB_LINING; sub @FIG_FIT_OLDSTYLE by @FIG_TAB_LINING; sub @FIG_TAB_SC by @FIG_TAB_LINING; sub @FIG_FIT_SC by @FIG_TAB_LINING; sub @CURRENCY_TAB_OLDSTYLE by @CURRENCY_LINING; sub @CURRENCY_FIT_OLDSTYLE by [cent dollar]; sub [numbersign.taboldstyle percent.oldstyle perthousand.oldstyle] by [numbersign percent perthousand]; sub @MATH_OLDSTYLE by @MATH_STANDARD; sub @MATH_SMALLCAPS by @MATH_STANDARD; } lnum; #--------------------------------------- # changes figures style to proportional figures feature pnum { sub @FIG_TAB_LINING by @FIG_FIT_LINING; sub @FIG_TAB_OLDSTYLE by @FIG_FIT_OLDSTYLE; sub @FIG_TAB_SC by @FIG_FIT_SC; sub [cent.taboldstyle dollar.taboldstyle] by @CURRENCY_FIT_OLDSTYLE; } pnum; #--------------------------------------- # changes proportional figures styles to tabular figures styles feature tnum { sub @FIG_FIT_LINING by @FIG_TAB_LINING; sub @FIG_FIT_OLDSTYLE by @FIG_TAB_OLDSTYLE; sub @FIG_FIT_SC by @FIG_TAB_SC; sub @CURRENCY_FIT_OLDSTYLE by [cent.taboldstyle dollar.taboldstyle]; } tnum; #--------------------------------------- feature CRCY { sub Euro from [@CURRENCY_LINING @CURRENCY_LINING2 rupiah currency]; sub Euro.taboldstyle from [@CURRENCY_TAB_OLDSTYLE]; sub cent from [@CURRENCY_LINING @CURRENCY_LINING2 rupiah currency]; sub cent.taboldstyle from [@CURRENCY_TAB_OLDSTYLE]; sub cent.titling from @CURRENCY_TITLING; sub centoldstyle from [@CURRENCY_FIT_OLDSTYLE]; sub colonmonetary from [@CURRENCY_LINING @CURRENCY_LINING2 rupiah currency]; sub colonmonetary.taboldstyle from [@CURRENCY_TAB_OLDSTYLE]; sub currency from [@CURRENCY_LINING @CURRENCY_LINING2 rupiah]; sub dollar from [@CURRENCY_LINING @CURRENCY_LINING2 rupiah currency]; sub dollar.taboldstyle from [@CURRENCY_TAB_OLDSTYLE]; sub dollar.titling from @CURRENCY_TITLING; sub dollaroldstyle from [@CURRENCY_FIT_OLDSTYLE]; sub florin from [@CURRENCY_LINING @CURRENCY_LINING2 rupiah currency]; sub florin.taboldstyle from [@CURRENCY_TAB_OLDSTYLE]; sub florin.titling from @CURRENCY_TITLING; sub franc from [@CURRENCY_LINING @CURRENCY_LINING2 rupiah currency]; sub lira from [@CURRENCY_LINING @CURRENCY_LINING2 rupiah currency]; sub peseta from [@CURRENCY_LINING @CURRENCY_LINING2 rupiah currency]; sub rupiah from [@CURRENCY_LINING @CURRENCY_LINING2 currency]; sub sterling from [@CURRENCY_LINING @CURRENCY_LINING2 rupiah currency]; sub sterling.taboldstyle from [@CURRENCY_TAB_OLDSTYLE]; sub sterling.titling from @CURRENCY_TITLING; sub yen from [@CURRENCY_LINING @CURRENCY_LINING2 rupiah currency]; sub yen.taboldstyle from [@CURRENCY_TAB_OLDSTYLE]; sub yen.titling from @CURRENCY_TITLING; } CRCY; #--------------------------------------- feature sups { sub @FIG_TAB_LINING by @FIG_SUPERIOR; sub @FIG_FIT_LINING by @FIG_SUPERIOR; sub @FIG_FIT_OLDSTYLE by @FIG_SUPERIOR; sub @FIG_TAB_OLDSTYLE by @FIG_SUPERIOR; sub @FIG_FIT_SC by @FIG_SUPERIOR; sub @FIG_INFERIOR by @FIG_SUPERIOR; sub @FIG_NUMERATOR by @FIG_SUPERIOR; sub @FIG_DENOMINATOR by @FIG_SUPERIOR; sub @MISC_LINING by @MISC_SUPERIOR; sub @MISC_INFERIOR by @MISC_SUPERIOR; sub @MISC_NUMERATOR by @MISC_SUPERIOR; sub @MISC_DENOMINATOR by @MISC_SUPERIOR; sub [a b d e h i l m n o r s t] by @LETTERS_SUPERIOR; sub [centoldstyle dollaroldstyle] by [centsuperior dollarsuperior]; sub [cent.taboldstyle dollar.taboldstyle] by [centsuperior dollarsuperior]; } sups; #--------------------------------------- feature sinf { sub @FIG_TAB_LINING by @FIG_INFERIOR; sub @FIG_FIT_LINING by @FIG_INFERIOR; sub @FIG_FIT_OLDSTYLE by @FIG_INFERIOR; sub @FIG_TAB_OLDSTYLE by @FIG_INFERIOR; sub @FIG_FIT_SC by @FIG_INFERIOR; sub @FIG_SUPERIOR by @FIG_INFERIOR; sub @FIG_NUMERATOR by @FIG_INFERIOR; sub @FIG_DENOMINATOR by @FIG_INFERIOR; sub @MISC_LINING by @MISC_INFERIOR; sub @MISC_SUPERIOR by @MISC_INFERIOR; sub @MISC_NUMERATOR by @MISC_INFERIOR; sub @MISC_DENOMINATOR by @MISC_INFERIOR; sub [centoldstyle dollaroldstyle] by [centinferior dollarinferior]; sub [cent.taboldstyle dollar.taboldstyle] by [centinferior dollarinferior]; } sinf; #--------------------------------------- # replaces selected figures with numerators feature numr { sub @FIG_TAB_LINING by @FIG_NUMERATOR; sub @FIG_FIT_LINING by @FIG_NUMERATOR; sub @FIG_FIT_OLDSTYLE by @FIG_NUMERATOR; sub @FIG_TAB_OLDSTYLE by @FIG_NUMERATOR; sub @FIG_FIT_SC by @FIG_NUMERATOR; sub @FIG_TAB_SC by @FIG_NUMERATOR; sub @FIG_SUPERIOR by @FIG_NUMERATOR; sub @FIG_INFERIOR by @FIG_NUMERATOR; sub @FIG_DENOMINATOR by @FIG_NUMERATOR; sub @MISC_LINING by @MISC_NUMERATOR; sub @MISC_INFERIOR by @MISC_NUMERATOR; sub @MISC_SUPERIOR by @MISC_NUMERATOR; sub @MISC_DENOMINATOR by @MISC_NUMERATOR; sub slash by fraction; sub [centoldstyle dollaroldstyle] by [cent.numerator dollar.numerator]; sub [cent.taboldstyle dollar.taboldstyle] by [cent.numerator dollar.numerator]; } numr; #--------------------------------------- # replaces selected figures with denominators feature dnom { sub @FIG_TAB_LINING by @FIG_DENOMINATOR; sub @FIG_FIT_LINING by @FIG_DENOMINATOR; sub @FIG_FIT_OLDSTYLE by @FIG_DENOMINATOR; sub @FIG_TAB_OLDSTYLE by @FIG_DENOMINATOR; sub @FIG_FIT_SC by @FIG_DENOMINATOR; sub @FIG_TAB_SC by @FIG_DENOMINATOR; sub @FIG_NUMERATOR by @FIG_DENOMINATOR; sub @FIG_SUPERIOR by @FIG_DENOMINATOR; sub @FIG_INFERIOR by @FIG_DENOMINATOR; sub @MISC_LINING by @MISC_DENOMINATOR; sub @MISC_INFERIOR by @MISC_DENOMINATOR; sub @MISC_NUMERATOR by @MISC_DENOMINATOR; sub @MISC_SUPERIOR by @MISC_DENOMINATOR; sub slash by fraction; sub [centoldstyle dollaroldstyle] by [cent.denominator dollar.denominator]; sub [cent.taboldstyle dollar.taboldstyle] by [cent.denominator dollar.denominator]; } dnom; #--------------------------------------- # Very 'flat' substitution of fractions, which doesn't change the figure style. # Can be left on by user. # Disadvantage: only pre-composed fractions can be use. feature frac { @FRACTION = [ fraction slash ]; lookup fractions_percent { sub zero @FRACTION zero by percent; sub zero.fitted @FRACTION zero.fitted by percent; sub zero.oldstyle @FRACTION zero.oldstyle by percent; sub zero.taboldstyle @FRACTION zero.taboldstyle by percent; sub zero.sc @FRACTION zero.sc by percent; sub zero.scfitted @FRACTION zero.scfitted by percent; sub zerosuperior @FRACTION zerosuperior by percent; sub zeroinferior @FRACTION zeroinferior by percent; sub zero.numerator @FRACTION zero.numerator by percent; sub zero.denominator @FRACTION zero.denominator by percent; } fractions_percent; lookup fractions_perthousand { sub percent zero by perthousand; sub percent zero.fitted by perthousand; sub percent zero.oldstyle by perthousand; sub percent zero.taboldstyle by perthousand; sub percent zero.sc by perthousand; sub percent zero.scfitted by perthousand; sub percent zerosuperior by perthousand; sub percent zeroinferior by perthousand; sub percent zero.numerator by perthousand; sub percent zero.denominator by perthousand; } fractions_perthousand; lookup fractions_oneone { sub one @FRACTION one by oneone; sub one.fitted @FRACTION one.fitted by oneone; sub one.oldstyle @FRACTION oneeoldstyle by oneone; sub one.taboldstyle @FRACTION one.taboldstyle by oneone; sub one.sc @FRACTION one.sc by oneone; sub one.scfitted @FRACTION one.scfitted by oneone; sub onesuperior @FRACTION onesuperior by oneone; sub oneinferior @FRACTION oneinferior by oneone; sub one.numerator @FRACTION one.numerator by oneone; sub one.denominator @FRACTION one.denominator by oneone; } fractions_oneone; lookup fractions_onehalf { sub one @FRACTION two by onehalf; sub one.fitted @FRACTION two.fitted by onehalf; sub one.oldstyle @FRACTION two.oldstyle by onehalf; sub one.taboldstyle @FRACTION two.taboldstyle by onehalf; sub one.sc @FRACTION two.sc by onehalf; sub one.scfitted @FRACTION two.scfitted by onehalf; sub onesuperior @FRACTION twosuperior by onehalf; sub oneinferior @FRACTION twoinferior by onehalf; sub one.numerator @FRACTION two.numerator by onehalf; sub one.denominator @FRACTION two.denominator by onehalf; } fractions_onehalf; lookup fractions_onethird { sub one @FRACTION three by onethird; sub one.fitted @FRACTION three.fitted by onethird; sub one.oldstyle @FRACTION three.oldstyle by onethird; sub one.taboldstyle @FRACTION three.taboldstyle by onethird; sub one.sc @FRACTION three.sc by onethird; sub one.scfitted @FRACTION three.scfitted by onethird; sub onesuperior @FRACTION threesuperior by onethird; sub oneinferior @FRACTION threeinferior by onethird; sub one.numerator @FRACTION three.numerator by onethird; sub one.denominator @FRACTION three.denominator by onethird; } fractions_onethird; lookup fractions_onequarter { sub one @FRACTION four by onequarter; sub one.fitted @FRACTION four.fitted by onequarter; sub one.oldstyle @FRACTION four.oldstyle by onequarter; sub one.taboldstyle @FRACTION four.taboldstyle by onequarter; sub one.sc @FRACTION four.sc by onequarter; sub one.scfitted @FRACTION four.scfitted by onequarter; sub onesuperior @FRACTION foursuperior by onequarter; sub oneinferior @FRACTION fourinferior by onequarter; sub one.numerator @FRACTION four.numerator by onequarter; sub one.denominator @FRACTION four.denominator by onequarter; } fractions_onequarter; lookup fractions_onefifth { sub one @FRACTION five by onefifth; sub one.fitted @FRACTION five.fitted by onefifth; sub one.oldstyle @FRACTION five.oldstyle by onefifth; sub one.taboldstyle @FRACTION five.taboldstyle by onefifth; sub one.sc @FRACTION five.sc by onefifth; sub one.scfitted @FRACTION five.scfitted by onefifth; sub onesuperior @FRACTION fivesuperior by onefifth; sub oneinferior @FRACTION fiveinferior by onefifth; sub one.numerator @FRACTION five.numerator by onefifth; sub one.denominator @FRACTION five.denominator by onefifth; } fractions_onefifth; lookup fractions_onesixth { sub one @FRACTION six by onesixth; sub one.fitted @FRACTION six.fitted by onesixth; sub one.oldstyle @FRACTION six.oldstyle by onesixth; sub one.taboldstyle @FRACTION six.taboldstyle by onesixth; sub one.sc @FRACTION six.sc by onesixth; sub one.scfitted @FRACTION six.scfitted by onesixth; sub onesuperior @FRACTION sixsuperior by onesixth; sub oneinferior @FRACTION sixinferior by onesixth; sub one.numerator @FRACTION six.numerator by onesixth; sub one.denominator @FRACTION six.denominator by onesixth; } fractions_onesixth; lookup fractions_oneeighth { sub one @FRACTION eight by oneeighth; sub one.fitted @FRACTION eight.fitted by oneeighth; sub one.oldstyle @FRACTION eight.oldstyle by oneeighth; sub one.taboldstyle @FRACTION eight.taboldstyle by oneeighth; sub one.sc @FRACTION eight.sc by oneeighth; sub one.scfitted @FRACTION eight.scfitted by oneeighth; sub onesuperior @FRACTION eightsuperior by oneeighth; sub oneinferior @FRACTION eightinferior by oneeighth; sub one.numerator @FRACTION eight.numerator by oneeighth; sub one.denominator @FRACTION eight.denominator by oneeighth; } fractions_oneeighth; lookup fractions_twothirds { sub two @FRACTION three by twothirds; sub two.fitted @FRACTION three.fitted by twothirds; sub two.oldstyle @FRACTION three.oldstyle by twothirds; sub two.taboldstyle @FRACTION three.taboldstyle by twothirds; sub two.sc @FRACTION three.sc by twothirds; sub two.scfitted @FRACTION three.scfitted by twothirds; sub twosuperior @FRACTION threesuperior by twothirds; sub twoinferior @FRACTION threeinferior by twothirds; sub two.numerator @FRACTION three.numerator by twothirds; sub two.denominator @FRACTION three.denominator by twothirds; } fractions_twothirds; lookup fractions_twofifth { sub two @FRACTION five by twofifth; sub two.fitted @FRACTION five.fitted by twofifth; sub two.oldstyle @FRACTION five.oldstyle by twofifth; sub two.taboldstyle @FRACTION five.taboldstyle by twofifth; sub two.sc @FRACTION five.sc by twofifth; sub two.scfitted @FRACTION five.scfitted by twofifth; sub twosuperior @FRACTION fivesuperior by twofifth; sub twoinferior @FRACTION fiveinferior by twofifth; sub two.numerator @FRACTION five.numerator by twofifth; sub two.denominator @FRACTION five.denominator by twofifth; } fractions_twofifth; lookup fractions_threequarters { sub three @FRACTION four by threequarters; sub three.fitted @FRACTION four.fitted by threequarters; sub three.oldstyle @FRACTION four.oldstyle by threequarters; sub three.taboldstyle @FRACTION four.taboldstyle by threequarters; sub three.sc @FRACTION four.sc by threequarters; sub three.scfitted @FRACTION four.scfitted by threequarters; sub threesuperior @FRACTION foursuperior by threequarters; sub threeinferior @FRACTION fourinferior by threequarters; sub three.numerator @FRACTION four.numerator by threequarters; sub three.denominator @FRACTION four.denominator by threequarters; } fractions_threequarters; lookup fractions_threefifth { sub three @FRACTION five by threefifth; sub three.fitted @FRACTION five.fitted by threefifth; sub three.oldstyle @FRACTION five.oldstyle by threefifth; sub three.taboldstyle @FRACTION five.taboldstyle by threefifth; sub three.sc @FRACTION five.sc by threefifth; sub three.scfitted @FRACTION five.scfitted by threefifth; sub threesuperior @FRACTION fivesuperior by threefifth; sub threeinferior @FRACTION fiveinferior by threefifth; sub three.numerator @FRACTION five.numerator by threefifth; sub three.denominator @FRACTION five.denominator by threefifth; } fractions_threefifth; lookup fractions_threeeighths { sub three @FRACTION eight by threeeighths; sub three.fitted @FRACTION eight.fitted by threeeighths; sub three.oldstyle @FRACTION eight.oldstyle by threeeighths; sub three.taboldstyle @FRACTION eight.taboldstyle by threeeighths; sub three.sc @FRACTION eight.sc by threeeighths; sub three.scfitted @FRACTION eight.scfitted by threeeighths; sub threesuperior @FRACTION eightsuperior by threeeighths; sub threeinferior @FRACTION eightinferior by threeeighths; sub three.numerator @FRACTION eight.numerator by threeeighths; sub three.denominator @FRACTION eight.denominator by threeeighths; } fractions_threeeighths; lookup fractions_fourfifth { sub four @FRACTION five by fourfifth; sub four.fitted @FRACTION five.fitted by fourfifth; sub four.oldstyle @FRACTION five.oldstyle by fourfifth; sub four.taboldstyle @FRACTION five.taboldstyle by fourfifth; sub four.sc @FRACTION five.sc by fourfifth; sub four.scfitted @FRACTION five.scfitted by fourfifth; sub foursuperior @FRACTION fivesuperior by fourfifth; sub fourinferior @FRACTION fiveinferior by fourfifth; sub four.numerator @FRACTION five.numerator by fourfifth; sub four.denominator @FRACTION five.denominator by fourfifth; } fractions_fourfifth; lookup fractions_fivesixth { sub five @FRACTION six by fivesixth; sub five.fitted @FRACTION six.fitted by fivesixth; sub five.oldstyle @FRACTION six.oldstyle by fivesixth; sub five.taboldstyle @FRACTION six.taboldstyle by fivesixth; sub five.sc @FRACTION six.sc by fivesixth; sub five.scfitted @FRACTION six.scfitted by fivesixth; sub fivesuperior @FRACTION sixsuperior by fivesixth; sub fiveinferior @FRACTION sixinferior by fivesixth; sub five.numerator @FRACTION six.numerator by fivesixth; sub five.denominator @FRACTION six.denominator by fivesixth; } fractions_fivesixth; lookup fractions_fiveeighths { sub five @FRACTION eight by fiveeighths; sub five.fitted @FRACTION eight.fitted by fiveeighths; sub five.oldstyle @FRACTION eight.oldstyle by fiveeighths; sub five.taboldstyle @FRACTION eight.taboldstyle by fiveeighths; sub five.sc @FRACTION eight.sc by fiveeighths; sub five.scfitted @FRACTION eight.scfitted by fiveeighths; sub fivesuperior @FRACTION eightsuperior by fiveeighths; sub fiveinferior @FRACTION eightinferior by fiveeighths; sub five.numerator @FRACTION eight.numerator by fiveeighths; sub five.denominator @FRACTION eight.denominator by fiveeighths; } fractions_fiveeighths; lookup fractions_seveneighths { sub seven @FRACTION eight by seveneighths; sub seven.fitted @FRACTION eight.fitted by seveneighths; sub seven.oldstyle @FRACTION eight.oldstyle by seveneighths; sub seven.taboldstyle @FRACTION eight.taboldstyle by seveneighths; sub seven.sc @FRACTION eight.sc by seveneighths; sub seven.scfitted @FRACTION eight.scfitted by seveneighths; sub sevensuperior @FRACTION eightsuperior by seveneighths; sub seveninferior @FRACTION eightinferior by seveneighths; sub seven.numerator @FRACTION eight.numerator by seveneighths; sub seven.denominator @FRACTION eight.denominator by seveneighths; } fractions_seveneighths; } frac; #--------------------------------------- feature NFRC { lookup fractions_percent; lookup fractions_perthousand; lookup fractions_oneone; lookup fractions_onehalf; lookup fractions_onethird; lookup fractions_onequarter; lookup fractions_onefifth; lookup fractions_onesixth; lookup fractions_oneeighth; lookup fractions_twothirds; lookup fractions_twofifth; lookup fractions_threequarters; lookup fractions_threefifth; lookup fractions_threeeighths; lookup fractions_fourfifth; lookup fractions_fivesixth; lookup fractions_fiveeighths; lookup fractions_seveneighths; sub oneone by oneone.nut; sub onehalf by onehalf.nut; sub onethird by onethird.nut; sub twothirds by twothirds.nut; sub onequarter by onequarter.nut; sub threequarters by threequarters.nut; sub onefifth by onefifth.nut; sub twofifth by twofifth.nut; sub threefifth by threefifth.nut; sub fourfifth by fourfifth.nut; sub onesixth by onesixth.nut; sub fivesixth by fivesixth.nut; sub oneeighth by oneeighth.nut; sub threeeighths by threeeighths.nut; sub fiveeighths by fiveeighths.nut; sub seveneighths by seveneighths.nut; sub fraction by fraction.nut; } NFRC; #--------------------------------------- # feature dpng { # sub A E by AE; # sub A e by AE; # sub O E by OE; # sub O e by OE; # sub a e by ae; # sub i j by ij; # sub o e by oe; # sub a.sc e.sc by ae.sc; # sub o.sc e.sc by oe.sc; # sub A e.sc by AE; # sub O e.sc by OE; # sub A.titling E.titling by AE.titling; # sub O.titling E.titling by OE.titling; # } dpng; #--------------------------------------- feature liga { script DFLT; language dflt; lookup FI_LIGS { sub f f i by ffi; sub f i by fi; } FI_LIGS; lookup NOFI { sub f f b by f_f_b; sub f f f by f_f_f; sub f f h by f_f_h; sub f f j by f_f_j; sub f f k by f_f_k; sub f f l by ffl; sub f f t by f_f_t; sub f b by f_b; sub f f by ff; sub f h by f_h; sub f j by f_j; sub f k by f_k; sub f l by fl; sub f r by f_r; sub f t by f_t; sub f adieresis by f_adieresis; sub f odieresis by f_odieresis; sub f udieresis by f_udieresis; } NOFI; script latn; language dflt; lookup FI_LIGS; # call lookup defined for DFLT/dflt lookup NOFI; # call lookup defined for DFLT/dflt language DEU include_dflt; language MOL include_dflt; language ROM include_dflt; language SRB include_dflt; language AZE exclude_dflt; lookup NOFI; language CRT exclude_dflt; lookup NOFI; language TRK exclude_dflt; lookup NOFI; script cyrl; lookup FI_LIGS; lookup NOFI; script grek; lookup FI_LIGS; lookup NOFI; } liga; #--------------------------------------- # feature salt { # sub @LETTERS_UC by @LETTERS_UC_ALT; # sub @ACCENTS_UC by @ACCENTS_UC_ALT; # sub @LETTERS_LC by @LETTERS_LC_ALT; # sub @ACCENTS_LC by @ACCENTS_LC_ALT; # sub @LETTERS_SC by @LETTERS_SC_ALT; # sub @ACCENTS_SC by @ACCENTS_LC_ALT; # } salt; #--------------------------------------- # This feature is only supported by applications that support the Mac OS X native text engines. # Also supported by TEXWorks/XeTex. # For other applications the stylistic set ss03 can be used. feature hist { sub s by longs; sub longs' f by s; sub longs longs' by s; sub f longs' by s; ignore sub longs' @LETTERS_LC; sub longs' by s; sub b r' by r.alt; sub b r.alt2' by r.alt; sub d r' by r.alt; sub d r.alt2' by r.alt; sub g r' by r.alt; sub g r.alt2' by r.alt; sub o r' by r.alt; sub o r.alt2' by r.alt; sub p r' by r.alt; sub p r.alt2' by r.alt; sub v r' by r.alt; sub w r' by r.alt; sub b_o r' by r.alt; sub b_o r.alt2' by r.alt; sub d_o r' by r.alt; sub d_o r.alt2' by r.alt; sub h_o r' by r.alt; sub h_o r.alt2' by r.alt; sub o_o r' by r.alt; sub o_o r.alt2' by r.alt; sub p_o r' by r.alt; sub p_o r.alt2' by r.alt; sub ograve r' by r.alt; sub ograve r.alt2' by r.alt; sub oacute r' by r.alt; sub oacute r.alt2' by r.alt; sub odieresis r' by r.alt; sub odieresis r.alt2' by r.alt; sub otilde r' by r.alt; sub otilde r.alt2' by r.alt; sub ocircumflex r' by r.alt; sub ocircumflex r.alt2' by r.alt; sub omacron r' by r.alt; sub omacron r.alt2' by r.alt; sub pmacron r' by r.alt; sub pmacron r.alt2' by r.alt; sub eth r' by r.alt; sub eth r.alt2' by r.alt; sub thorn r' by r.alt; sub thorn r.alt2' by r.alt; sub f_b r' by r.alt; sub f_b r.alt2' by r.alt; sub longs_b r' by r.alt; sub longs_b r.alt2' by r.alt; sub longs_d r' by r.alt; sub longs_d r.alt2' by r.alt; } hist; #--------------------------------------- feature swsh { sub @LETTERS_UC by @LETTERS_UC_SWASH; sub @LETTERS_LC by @LETTERS_LC_SWASH; sub @LETTERS_SC by @LETTERS_SC_SWASH; } swsh; #--------------------------------------- feature titl { sub @LETTERS_UC by @LETTERS_UC_TITLING; sub @ACCENTS_UC by @ACCENTS_UC_TITLING; sub @PUNCT_UC by @PUNCT_UC_TITLING; sub @FIG_TAB_LINING by @FIG_TAB_LINING_TITLING; } titl; #--------------------------------------- feature dlig { sub T h by T_h; sub Tcommaaccent h by Tcommaaccent_h; sub Tcaron h by Tcaron_h; sub a s by a_s; sub c h by c_h; sub c k by c_k; sub c l by c_l; sub c t by c_t; sub e s by e_s; sub g g by g_g; sub g y by g_y; sub i s by i_s; sub s h by s_h; sub s k by s_k; sub s l by s_l; sub s p by s_p; sub s t by s_t; sub t h by t_h; sub t t by t_t; sub u s by u_s; sub b e by b_e; sub b o by b_o; sub d a by d_a; sub d e by d_e; sub d o by d_o; sub h e by h_e; sub h o by h_o; sub o o by o_o; sub p e by p_e; sub p o by p_o; sub q z by q_z; sub r a by r_a; sub t a by t_a; sub t i by t_i; sub t z by t_z; } dlig; #--------------------------------------- # functions together with 'hist' feature feature hlig { sub longs f i by longs_f_i; sub longs f j by longs_f_j; sub longs f l by longs_f_l; sub longs longs by longs_longs; sub longs longs i by longs_longs_i; sub longs longs l by longs_longs_l; sub longs b by longs_b; sub longs f by longs_f; sub longs h by longs_h; sub longs i by longs_i; sub longs j by longs_j; sub longs k by longs_k; sub longs l by longs_l; sub longs t by longs_t; sub longs adieresis by longs_adieresis; sub longs odieresis by longs_odieresis; sub longs udieresis by longs_udieresis; } hlig; #--------------------------------------- feature ordn { sub @FIGURES a' by ordfeminine; sub @FIGURES o' by ordmasculine; sub @FIGURES period a' by ordfeminine; sub @FIGURES period o' by ordmasculine; sub @FIG_TITLING period.titling a' by ordfeminine.titling; sub @FIG_TITLING period.titling o' by ordmasculine.titling; } ordn; #--------------------------------------- feature ornm { sub bullet from @ORNAMENTS; } ornm; #--------------------------------------- feature zero { sub zero by zero.slash; sub zero.fitted by zero.slash; } zero; #--------------------------------------- # Stylistic sets # As of the OpenType specification 1.6, descriptive names are allowed for stylistic substitution features. # These names are specified within a feature block for a Stylistic Set feature. # The implementation will store the name strings in the name table, and will create a feature parameter data block which references them. # http://www.adobe.com/devnet/opentype/afdko/topic_feature_file_syntax.html#8.c #--------------------------------------- # Provides alternate for lowercase r feature ss01 { featureNames { name "Alternate lowercase r"; name 1 "Alternate lowercase r"; } ; sub r by r.alt2; } ss01; #--------------------------------------- feature ss02 { featureNames { name "Textura currency alternates"; name 1 "Textura currency alternates"; } ; sub @CURRENCY_LINING by @CURRENCY_LINING_ALT; } ss02; #--------------------------------------- feature ss03 { featureNames { name "Roman capitals"; name 1 "Roman capitals"; } ; sub @LETTERS_UC by @LETTERS_UC_ALT3; } ss03; #--------------------------------------- feature ss04 { featureNames { name "Roman capitals alternates"; name 1 "Roman capitals alternates"; } ; sub @LETTERS_UC_ALT3 by @LETTERS_UC_ALT4; } ss04; #--------------------------------------- # feature ss05 { # script latn; # language DEU # featureNames { # name 3 1 0x409 "Capital Eszett"; # name 1 0 0 "Capital Eszett"; # }; # sub S S by uni1E9E; # sub s.sc s.sc by uni1E9E.sc; # } ss05; #--------------------------------------- # Alternative for applications that don't support the 'hist' feature. feature ss06 { featureNames { name "Long_s subsitution"; name 1 "Long_s subsitution"; } ; sub s by longs; sub longs' f by s; sub longs longs' by s; sub f longs' by s; ignore sub longs' @LETTERS_LC; sub longs' by s; } ss06; #--------------------------------------- # Provides alternate for gothic lowercase r after round letter feature ss07 { featureNames { name "r.alt for after round letter"; name 1 "r.alt for after round letter"; } ; sub b r' by r.alt; sub b r_a' by r_a.alt; sub b r.alt2' by r.alt; sub d r' by r.alt; sub d r_a' by r_a.alt; sub d r.alt2' by r.alt; sub g r' by r.alt; sub g r_a' by r_a.alt; sub g r.alt2' by r.alt; sub o r' by r.alt; sub o r_a' by r_a.alt; sub o r.alt2' by r.alt; sub p r' by r.alt; sub p r_a' by r_a.alt; sub p r.alt2' by r.alt; sub v r' by r.alt; sub v r_a' by r_a.alt; sub w r' by r.alt; sub w r_a' by r_a.alt; sub b_o r' by r.alt; sub b_o r.alt2' by r.alt; sub d_o r' by r.alt; sub d_o r.alt2' by r.alt; sub h_o r' by r.alt; sub h_o r.alt2' by r.alt; sub o_o r' by r.alt; sub o_o r.alt2' by r.alt; sub p_o r' by r.alt; sub p_o r.alt2' by r.alt; sub ograve r' by r.alt; sub ograve r.alt2' by r.alt; sub oacute r' by r.alt; sub oacute r.alt2' by r.alt; sub odieresis r' by r.alt; sub odieresis r.alt2' by r.alt; sub otilde r' by r.alt; sub otilde r.alt2' by r.alt; sub ocircumflex r' by r.alt; sub ocircumflex r.alt2' by r.alt; sub omacron r' by r.alt; sub omacron r.alt2' by r.alt; sub pmacron r' by r.alt; sub pmacron r.alt2' by r.alt; sub eth r' by r.alt; sub eth r.alt2' by r.alt; sub thorn r' by r.alt; sub thorn r.alt2' by r.alt; sub f_b r' by r.alt; sub f_b r.alt2' by r.alt; sub longs_b r' by r.alt; sub longs_b r.alt2' by r.alt; sub longs_d r' by r.alt; sub longs_d r.alt2' by r.alt; } ss07; #--------------------------------------- # Enabling the following options will have as a result that the information is taken # from the UFM, PAR and kern files. When disabled, the naming and kerning information will # be taken from this features file. # The CFF table info is always taken from the UFM file's CFF table info, because CFF is just # a compressed copy of the intermediate Type1 font temporarily created with the # URW++ Type1 tool, which 'knows' nothing about features files. # As long as one doesn't specify a features file with it's own name table block, CFF # names and names from "featname.txt" are compatible anyway because they are based # on the same data source, i.e., UFM and PAR. # The default features file contains no real data but simply includes a set of 4 # other temporarily created feature files "featkern.txt", "feathead.txt", # "featname.txt", and "featos2.txt". # 'featkern.txt' contains a 'kern' feature block with kerning data based on the # file selected as "Data Source for Kerning" in the 'Advanced ...' UFM dialog. KPX # pairs from AFM or TFM will be converted to feature positioning ('pos') statements. # 'feathead.txt', 'featname.txt', and 'featos2.txt' contain table blocks for the # 'head', 'name' and 'OS/2' table, with all entries based on the UFM and PAR # files, i.e., anything to be viewed and edited in the "Advanced ..." dialog. # Name IDs from "featname.txt" are in the range of 1-6 (the standard range). # The original Adobe HOT tool would not take these names from a features file. # The modified URW++ HOT tool will take any ID but you will get a warning that # the respective name may not be compatible with some names in the 'CFF' table. # Note: for use with OTM, the following statements should be all disabled. # --- POSITIONING # include (featkern.txt); # --- TABLE DATA # include (featos2.txt); # include (feathead.txt); # include (featname.txt); #--------------------------------------- # --- End of file