# This file belongs to the TeX Gyre collection of fonts. The work is
# released under the GUST Font License. See the MANIFEST-TeX-Gyre-Heroscn.txt
# and README-TeX-Gyre-Heroscn.txt files for the details.
# For the most recent version of this license see
# http://www.gust.org.pl/fonts/licenses/GUST-FONT-LICENSE.txt or
# http://tug.org/fonts/licenses/GUST-FONT-LICENSE.txt

# This is a `feature file' used to generate texgyreheroscn-regular.otf
# with the Adobe Font Development Kit for OpenType
# (FDK v2.0 Aug 31 2006 build 21; the later version,
# FDK v2.0 May 5 2007 build 26, was not used because the resulting
# OTF files were apparently malformed -- something was wrong with
# the language information)

languagesystem DFLT dflt;
languagesystem latn dflt;
languagesystem latn AZE;
languagesystem latn CRT;
languagesystem latn MOL;
languagesystem latn NLD;
languagesystem latn PLK;
languagesystem latn ROM;
languagesystem latn TRK;
languagesystem cyrl dflt;

# complete features
table head{
  FontRevision 2.004;
} head;

@altsrc1=[# all alternates
at copyright fraction paragraph registered
epsilon mu pi phi rho theta
macron macron.cap Imacron imacron imacron.sc];
#
@altsrc2=[# "genuine" alternates
at copyright fraction paragraph registered];
#
@altsrc3=[# "Greek" alternates
epsilon mu pi phi rho theta];
#
@altsrc4=[# "Idris" alternates
macron macron.cap Imacron imacron imacron.sc];

@altres1=[# all alternates
at.alt copyright.alt fraction.alt paragraph.alt registered.alt
epsilon.alt mu.greek uni03D6 uni03D5 rho.alt uni03D1
macron.alt macron.cap.alt Imacron.alt imacron.alt imacron.alt.sc];
#
@altres2=[# "genuine" alternates
at.alt copyright.alt fraction.alt paragraph.alt registered.alt];
@altres3=[# "Greek" alternates
epsilon.alt mu.greek uni03D6 uni03D5 rho.alt uni03D1];
#
@altres4=[# "Idris" alternates
macron.alt macron.cap.alt Imacron.alt imacron.alt imacron.alt.sc];

@othbas=[ampersand cent dollar];

@othold=[ampersand # ampersand.oldstyle in the future?
cent.oldstyle dollar.oldstyle];

@figlintab=[zero one two three four five six seven eight nine];

@figlinprop=[zero.prop one.prop two.prop three.prop four.prop five.prop
six.prop seven.prop eight.prop nine.prop];

@figoldtab=[zero.taboldstyle one.taboldstyle two.taboldstyle three.taboldstyle
four.taboldstyle five.taboldstyle six.taboldstyle seven.taboldstyle
eight.taboldstyle nine.taboldstyle];

@figoldprop=[zero.oldstyle one.oldstyle two.oldstyle three.oldstyle
four.oldstyle five.oldstyle six.oldstyle seven.oldstyle eight.oldstyle
nine.oldstyle];

@letcapbas=[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z];
@letsmabas=[a b c d e f g h i j k l m n o p q r s t u v w x y z];
@letcscbas=[a.sc b.sc c.sc d.sc e.sc f.sc g.sc h.sc i.sc j.sc k.sc l.sc m.sc
n.sc o.sc p.sc q.sc r.sc s.sc t.sc u.sc v.sc w.sc x.sc y.sc z.sc];

@letcapoth=[Aacute Abreve Abreveacute Abrevedotbelow Abrevegrave
Abrevehookabove Abrevetilde Acircumflex Acircumflexacute Acircumflexdotbelow
Acircumflexgrave Acircumflexhookabove Acircumflextilde Adblgrave Adieresis
Adotbelow AE AEacute Agrave Ahookabove Amacron Aogonek Aogonekacute Aring
Aringacute Atilde Cacute Ccaron Ccedilla Ccircumflex Cdotaccent Dcaron Dcroat
Ddotbelow Dlinebelow Eacute Ebreve Ecaron Ecircumflex Ecircumflexacute
Ecircumflexdotbelow Ecircumflexgrave Ecircumflexhookabove Ecircumflextilde
Edblgrave Edieresis Edotaccent Edotbelow Egrave Ehookabove Emacron Eng
Eogonek Eogonekacute Ereversed Eth Etilde Gacute Gbreve Gcaron Gcircumflex
Gcommaaccent Gdotaccent S_S # Germandbls
 Hbar Hbrevebelow Hcircumflex Hdieresis Hdotbelow
 H_uni0303 # Htilde
 I_J Iacute Ibreve Icircumflex Idblgrave Idieresis Idotbelow Igrave
Ihookabove Imacron Imacron.alt Iogonek Iogonekacute Itilde Jacute Jcircumflex
Kcommaaccent Lacute Lcaron Lcommaaccent Ldot Ldotbelow Ldotbelowmacron Lslash
 L_uni0303 # Ltilde
 Mdotbelow Nacute Ncaron Ncommaaccent Ndotaccent Ndotbelow Ntilde
Oacute Obreve Ocircumflex Ocircumflexacute Ocircumflexdotbelow
Ocircumflexgrave Ocircumflexhookabove Ocircumflextilde Odblgrave Odieresis
Odotbelow OE Ograve Ohookabove Ohorn Ohornacute Ohorndotbelow Ohorngrave
Ohornhookabove Ohorntilde Ohungarumlaut Omacron Oogonek Oogonekacute Oslash
Oslashacute Otilde Racute Rcaron Rcommaaccent Rdblgrave Rdotaccent Rdotbelow
Rdotbelowmacron Sacute Scaron Scedilla Scircumflex
 uni0218 # Scommaaccent
 Sdotbelow Tcaron Tcedilla
 uni021A # Tcommaaccent
 T_uni0308 # Tdieresis
 Tdotbelow Thorn Tlinebelow T_uni0303 # Ttilde
 Uacute Ubreve Ubrevebelowinverted Ucircumflex Udblgrave Udieresis Udotbelow
Ugrave Uhookabove Uhorn Uhornacute Uhorndotbelow Uhorngrave Uhornhookabove
Uhorntilde Uhungarumlaut Umacron Uogonek Uring Utilde Wacute Wcircumflex
Wdieresis Wgrave Yacute Ycircumflex Ydieresis Ydotbelow Ygrave Yhookabove
Ytilde Zacute Zcaron Zdotaccent Zdotbelow];

@letsmaoth=[aacute abreve abreveacute abrevedotbelow abrevegrave
abrevehookabove abrevetilde acircumflex acircumflexacute acircumflexdotbelow
acircumflexgrave acircumflexhookabove acircumflextilde adblgrave adieresis
adotbelow ae aeacute agrave ahookabove amacron aogonek aogonekacute aring
aringacute atilde cacute ccaron ccedilla ccircumflex cdotaccent dcaron dcroat
ddotbelow dlinebelow eacute ebreve ecaron ecircumflex ecircumflexacute
ecircumflexdotbelow ecircumflexgrave ecircumflexhookabove ecircumflextilde
edblgrave edieresis edotaccent edotbelow egrave ehookabove emacron eng
eogonek eogonekacute ereversed eth etilde gacute gbreve gcaron gcircumflex
gcommaaccent gdotaccent germandbls hbar hbrevebelow hcircumflex hdieresis
 hdotbelow h_uni0303 # htilde
 i_j iacute ibreve icircumflex idblgrave idieresis idotbelow igrave
ihookabove imacron imacron.alt iogonek iogonekacute itilde jacute jcircumflex
kcommaaccent lacute lcaron lcommaaccent ldot ldotbelow ldotbelowmacron lslash
 l_uni0303 # ltilde
 mdotbelow nacute ncaron ncommaaccent ndotaccent ndotbelow ntilde
oacute obreve ocircumflex ocircumflexacute ocircumflexdotbelow
ocircumflexgrave ocircumflexhookabove ocircumflextilde odblgrave odieresis
odotbelow oe ograve ohookabove ohorn ohornacute ohorndotbelow ohorngrave
ohornhookabove ohorntilde ohungarumlaut omacron oogonek oogonekacute oslash
oslashacute otilde racute rcaron rcommaaccent rdblgrave rdotaccent rdotbelow
rdotbelowmacron sacute scaron scedilla scircumflex
 uni0219 # scommaaccent
 sdotbelow tcaron tcedilla
 uni021B # tcommaaccent
 tdieresis tdotbelow thorn tlinebelow t_uni0303 # ttilde
 uacute ubreve ubrevebelowinverted ucircumflex udblgrave udieresis udotbelow
ugrave uhookabove uhorn uhornacute uhorndotbelow uhorngrave uhornhookabove
uhorntilde uhungarumlaut umacron uogonek uring utilde wacute wcircumflex
wdieresis wgrave yacute ycircumflex ydieresis ydotbelow ygrave yhookabove
ytilde zacute zcaron zdotaccent zdotbelow];

@letcscoth=[aacute.sc abreve.sc abreveacute.sc abrevedotbelow.sc
abrevegrave.sc abrevehookabove.sc abrevetilde.sc acircumflex.sc
acircumflexacute.sc acircumflexdotbelow.sc acircumflexgrave.sc
acircumflexhookabove.sc acircumflextilde.sc adblgrave.sc adieresis.sc
adotbelow.sc ae.sc aeacute.sc agrave.sc ahookabove.sc amacron.sc aogonek.sc
aogonekacute.sc aring.sc aringacute.sc atilde.sc cacute.sc ccaron.sc
 ccedilla.sc ccircumflex.sc cdotaccent.sc dcaron.sc dcroat.sc ddotbelow.sc
dlinebelow.sc eacute.sc ebreve.sc ecaron.sc ecircumflex.sc
ecircumflexacute.sc ecircumflexdotbelow.sc ecircumflexgrave.sc
ecircumflexhookabove.sc ecircumflextilde.sc edblgrave.sc edieresis.sc
edotaccent.sc edotbelow.sc egrave.sc ehookabove.sc emacron.sc eng.sc
eogonek.sc eogonekacute.sc ereversed.sc eth.sc etilde.sc gacute.sc gbreve.sc
gcaron.sc gcircumflex.sc gcommaaccent.sc gdotaccent.sc germandbls.sc hbar.sc
hbrevebelow.sc hcircumflex.sc hdieresis.sc hdotbelow.sc
 h_uni0303.sc # htilde.sc
 i_j.sc iacute.sc ibreve.sc icircumflex.sc idblgrave.sc idieresis.sc
idotbelow.sc igrave.sc ihookabove.sc imacron.sc imacron.alt.sc iogonek.sc
iogonekacute.sc itilde.sc jacute.sc jcircumflex.sc kcommaaccent.sc lacute.sc
lcaron.sc lcommaaccent.sc ldot.sc ldotbelow.sc ldotbelowmacron.sc lslash.sc
 l_uni0303.sc # ltilde.sc
 mdotbelow.sc nacute.sc ncaron.sc ncommaaccent.sc ndotaccent.sc ndotbelow.sc
ntilde.sc oacute.sc obreve.sc ocircumflex.sc ocircumflexacute.sc
ocircumflexdotbelow.sc ocircumflexgrave.sc ocircumflexhookabove.sc
ocircumflextilde.sc odblgrave.sc odieresis.sc odotbelow.sc oe.sc ograve.sc
ohookabove.sc ohorn.sc ohornacute.sc ohorndotbelow.sc ohorngrave.sc
ohornhookabove.sc ohorntilde.sc ohungarumlaut.sc omacron.sc oogonek.sc
oogonekacute.sc oslash.sc oslashacute.sc otilde.sc racute.sc rcaron.sc
rcommaaccent.sc rdblgrave.sc rdotaccent.sc rdotbelow.sc rdotbelowmacron.sc
sacute.sc scaron.sc scedilla.sc scircumflex.sc
 uni0219.sc # scommaaccent.sc
 sdotbelow.sc tcaron.sc tcedilla.sc
 uni021B.sc # tcommaaccent.sc
 tdieresis.sc tdotbelow.sc thorn.sc tlinebelow.sc
 t_uni0303.sc # ttilde.sc
 uacute.sc ubreve.sc ubrevebelowinverted.sc ucircumflex.sc udblgrave.sc
udieresis.sc udotbelow.sc ugrave.sc uhookabove.sc uhorn.sc uhornacute.sc
uhorndotbelow.sc uhorngrave.sc uhornhookabove.sc uhorntilde.sc
uhungarumlaut.sc umacron.sc uogonek.sc uring.sc utilde.sc wacute.sc
wcircumflex.sc wdieresis.sc wgrave.sc yacute.sc ycircumflex.sc ydieresis.sc
ydotbelow.sc ygrave.sc yhookabove.sc ytilde.sc zacute.sc zcaron.sc
zdotaccent.sc zdotbelow.sc];

# @c2sc1=[@letcapbas @letcapoth @figlinprop @othbas];
# @c2sc2=[@letcscbas @letcscoth @figoldprop @othold];
@c2sc1=[@letcapbas @letcapoth];
@c2sc2=[@letcscbas @letcscoth];

@cpsp1=[@letcapbas @letcapoth];

# @smcp1=[@letsmabas @letsmaoth @figlintab @othbas];
# @smcp2=[@letcscbas @letcscoth @figoldprop @othold];
@smcp1=[@letsmabas @letsmaoth];
@smcp2=[@letcscbas @letcscoth];

@figprop=[@figlinprop @figoldprop @othbas];
@figtab=[@figlintab @figoldtab @othbas];

@lnum1=[@figoldprop @figoldtab @othold];
@lnum2=[@figlinprop @figlintab @othbas];

@onum1=[@figlinprop @figlintab @othbas];
@onum2=[@figoldprop @figoldprop @othold];

@pnum1=[@figlintab @figoldtab];
@pnum2=[@figlinprop @figoldprop];

@tnum1=[@figlinprop @figoldprop];
@tnum2=[@figlintab @figoldtab];

feature aalt{
  feature locl; # Localized Forms
# feature cpsp; # Capital Spacing
# feature frac; # Fractions
  feature onum; # Old Style Figures
  feature lnum; # Lining Figures
  feature pnum; # Proportional Figures
  feature tnum; # Tabular Figures
# feature liga; # Standard Ligatures
# feature dlig; # Discretionary Ligatures
  feature smcp; # Small Capitals
  feature c2sc; # Small Capitals From Capitals
  feature salt; # Stylistic Alternates
  feature ss01; # Stylistic Set 1 = Stylistic Alternates
  feature ss02; # Stylistic Set 2
  feature ss03; # Stylistic Set 3
  feature ss04; # Stylistic Set 4
  feature zero; # Slashed Zero
} aalt;

feature locl { # Localized Forms
  script latn;
# Handling of Romanian [Ss]commaaccent and [Tt]commaaccent
    language ROM exclude_dflt;
      lookup locl_ROM {
        sub [Scedilla scedilla scedilla.sc] by [uni0218 uni0219 uni0219.sc];
        sub [Tcedilla tcedilla tcedilla.sc] by [uni021A uni021B uni021B.sc];
      } locl_ROM;
    language MOL exclude_dflt;
      lookup locl_ROM;
} locl;

feature cpsp { # Capital Spacing
  pos @cpsp1 <7 0 14 0>;
} cpsp;

feature smcp { # Small Capitals
  sub @smcp1 by @smcp2;
} smcp;

feature frac { # Fractions
  sub one slash two by onehalf;
  sub one slash four by onequarter;
  sub one fraction two by onehalf;
  sub one fraction four by onequarter;
  sub three slash four by threequarters;
  sub three fraction four by threequarters;
} frac;

feature onum { # Old Style Figures
  sub @onum1 by @onum2;
} onum;

feature lnum { # Lining Figures
  sub @lnum1 by @lnum2;
} lnum;

feature pnum { # Proportional Figures
  sub @pnum1 by @pnum2;
} pnum;

feature tnum { # Tabular Figures
  sub @tnum1 by @tnum2;
} tnum;

feature liga { # Standard Ligatures
  lookup liga_f_f_l {
    sub f f l by f_f_l;
    sub f f by f_f;
    sub f l by f_l;
  } liga_f_f_l;
  script DFLT;
    language dflt;
      lookup liga_f_i {
        sub f_f i by f_f_i;
        sub f i by f_i;
      } liga_f_i;
  script cyrl;
    language dflt;
      lookup liga_f_i;
  script latn;
    language dflt;
      lookup liga_f_i;
    language NLD exclude_dflt;
      lookup liga_NLDa {
        sub i j by i_j;
        sub I J by I_J;
      } liga_NLDa;
      lookup liga_NLDb {
        sub f_f i by f_f_i;
        sub f i by f_i;
      } liga_NLDb;
    language PLK exclude_dflt;
      lookup liga_PLK {
        sub f_f i by f_f_i;
        sub f i by f_i ;
        sub f k by f_k;
      } liga_PLK;
    language MOL exclude_dflt;
      lookup liga_f_i;
    language ROM exclude_dflt;
      lookup liga_f_i;
    language AZE exclude_dflt;
    language CRT exclude_dflt;
    language TRK exclude_dflt;
} liga;

feature dlig { # Discretionary Ligatures
  sub comma comma by quotedblbase;
  sub hyphen hyphen hyphen hyphen by emdash;
  sub hyphen hyphen hyphen by threequartersemdash;
  sub hyphen hyphen by endash;
  sub quoteleft quoteleft by quotedblleft;
  sub quoteright quoteright by quotedblright;
# old Knuthian tradition...
  sub exclam quoteleft by exclamdown;
  sub question quoteleft by questiondown;
# AFDKO places grave at the slot 96 (ANSI / Mac)
  sub exclam grave by exclamdown;
  sub question grave by questiondown;
} dlig;

feature c2sc { # Small Capitals From Capitals
  sub @c2sc1 by @c2sc2;
} c2sc;

feature salt { # Stylistic Alternates
  sub @altsrc1 by @altres1;
} salt;

feature ss01 { # Stylistic Set 1 = Stylistic Alternates
               # see http://www.typophile.com/node/32399 and
               # http://www.typotheque.com/fonts/opentype_feature_support/
  sub @altsrc1 by @altres1;
} ss01;

feature ss02 { # Stylistic Set 2
  sub @altsrc2 by @altres2;
} ss02;

feature ss03 { # Stylistic Set 3
  sub @altsrc3 by @altres3;
} ss03;

feature ss04 { # Stylistic Set 4
  sub @altsrc4 by @altres4;
} ss04;

feature zero { # Slashed Zero
  sub zero by zero.slash;
} zero;

feature kern {
  include (qhvcr.krn);
  script latn;
  language AZE;
  language CRT;
  language MOL;
  language NLD;
  language PLK;
  language ROM;
  language TRK;
} kern;

feature size {
  parameters 100 1 50 200;
  sizemenuname 3 "Regular";
  sizemenuname 1 "Regular";
} size;

table hhea {
  Ascender  1089;
  Descender -282;
  LineGap   0;
} hhea;

table OS/2 {
  FSType        12;
  TypoAscender  793;
  TypoDescender -207;
  TypoLineGap   200;
  XHeight       523;
  CapHeight     718;
  winAscent     1089;
  winDescent    282;
} OS/2;

