Where do I find the stylistic sets/variants described?

FontForge can be used to inspect the replacements by the stylistic variants:

Element -> Font Info -> Lookups -> GSUB -> ss01, ss02, ss03, ss04

In short:

  • ss01: seems to be the union of ss02, ss03 and ss04.
  • ss02: at, copyright, fraction, paragraph, registered are replaced by their alternatives, e.g. copyright in superscript position.
  • ss03: alternatives for some Greek letters.
  • ss04: alternatives for macron accent and letters with macron, the alternative form is shorter.

Without FontForge

TeXGyrePagellaX-Regular.otf seems to be derived from texgyrepagella-regular.pdf. Its documentation can be found in:

TDS:doc/fonts/tex-gyre/
  • qpl-info.pdf shows some features and the glyph shapes.
  • qplr.fea contains the feature definitions.

I downloaded the Adobe Font Development Kit from http://www.adobe.com/devnet/opentype/afdko.html and installed it.

Then I ran

spot -F /usr/local/texlive/2016/texmf-dist/fonts/opentype/public/newpx/TeXGyrePagellaX-Regular.otf

getting a list of features:

GSUB Features:
Script 'DFLT'
    Default language system
        [ 0]='aalt' LookupListIndex: 0 1 
        [ 1]='c2sc' LookupListIndex: 14 
        [ 2]='dlig' LookupListIndex: 13 
        [ 3]='frac' LookupListIndex: 4 
        [ 4]='hlig' LookupListIndex: 12 
        [ 5]='liga' LookupListIndex: 10 11 
        [ 6]='lnum' LookupListIndex: 6 
        [ 7]='onum' LookupListIndex: 5 
        [ 8]='pnum' LookupListIndex: 7 
        [ 9]='salt' LookupListIndex: 15 
        [10]='smcp' LookupListIndex: 3 
        [11]='ss01' LookupListIndex: 16 
        [12]='ss02' LookupListIndex: 17 
        [13]='ss03' LookupListIndex: 18 
        [14]='ss04' LookupListIndex: 19 
        [15]='sups' LookupListIndex: 9 
        [16]='tnum' LookupListIndex: 8 
        [17]='zero' LookupListIndex: 20 

The next step is to look at the GSUB tables

spot -t GSUB /usr/local/texlive/2016/texmf-dist/fonts/opentype/public/newpx/TeXGyrePagellaX-Regular.otf > gsub.txt

The file I got is quite long, but also pretty informative. Searching for Lookup [16] reveals

--- Lookup [16] (00ac)
LookupType   =0001
LookupFlag   =0000
SubTableCount=1
--- SubTable[index]=offset
[0]=10c6 
--- Subtable [0] (000010c6)
--- SingleSubst
SubstFormat=2
Coverage   =0026
GlyphCount =16
--- Substitute[index]=glyphId glyphName/CID
[0]=833 (at.alt) [1]=881 (copyright.alt) [2]=870 (registered.alt) [3]=820 (macron.alt) [4]=435 (mu) [5]=865 (paragraph.alt) [6]=883 (Imacron.alt) [7]=882 (imacron.alt) [8]=453 (uni03F5) [9]=449 (uni03D1) [10]=451 (uni03D6) [11]=452 (uni03F1) [12]=450 (uni03D5) [13]=642 (fraction.alt) [14]=819 (macron.cap.alt) [15]=710 (imacron.alt.sc) 
--- Coverage (0026)
CoverageFormat=1
GlyphCount    =16
--- GlyphArray[index]=glyphId glyphName/CID
[0]=33 (at) [1]=105 (copyright) [2]=110 (registered) [3]=111 (macron) [4]=117 (uni00B5) [5]=118 (paragraph) [6]=234 (Imacron) [7]=235 (imacron) [8]=428 (epsilon) [9]=431 (theta) [10]=439 (pi) [11]=440 (rho) [12]=445 (phi) [13]=611 (fraction) [14]=818 (macron.cap) [15]=937 (imacron.sc) 

--- Lookup [17] (00b4)
LookupType   =0001
LookupFlag   =0000
SubTableCount=1
--- SubTable[index]=offset
[0]=1108 
--- Subtable [0] (00001108)
--- SingleSubst
SubstFormat=2
Coverage   =0010
GlyphCount =5
--- Substitute[index]=glyphId glyphName/CID
[0]=833 (at.alt) [1]=881 (copyright.alt) [2]=870 (registered.alt) [3]=865 (paragraph.alt) [4]=642 (fraction.alt) 
--- Coverage (0010)
CoverageFormat=1
GlyphCount    =5
--- GlyphArray[index]=glyphId glyphName/CID
[0]=33 (at) [1]=105 (copyright) [2]=110 (registered) [3]=118 (paragraph) [4]=611 (fraction) 

--- Lookup [18] (00bc)
LookupType   =0001
LookupFlag   =0000
SubTableCount=1
--- SubTable[index]=offset
[0]=111e 
--- Subtable [0] (0000111e)
--- SingleSubst
SubstFormat=2
Coverage   =0012
GlyphCount =6
--- Substitute[index]=glyphId glyphName/CID
[0]=435 (mu) [1]=453 (uni03F5) [2]=449 (uni03D1) [3]=451 (uni03D6) [4]=452 (uni03F1) [5]=450 (uni03D5) 
--- Coverage (0012)
CoverageFormat=1
GlyphCount    =6
--- GlyphArray[index]=glyphId glyphName/CID
[0]=117 (uni00B5) [1]=428 (epsilon) [2]=431 (theta) [3]=439 (pi) [4]=440 (rho) [5]=445 (phi) 

--- Lookup [19] (00c4)
LookupType   =0001
LookupFlag   =0000
SubTableCount=1
--- SubTable[index]=offset
[0]=1138 
--- Subtable [0] (00001138)
--- SingleSubst
SubstFormat=2
Coverage   =0010
GlyphCount =5
--- Substitute[index]=glyphId glyphName/CID
[0]=820 (macron.alt) [1]=883 (Imacron.alt) [2]=882 (imacron.alt) [3]=819 (macron.cap.alt) [4]=710 (imacron.alt.sc) 
--- Coverage (0010)
CoverageFormat=1
GlyphCount    =5
--- GlyphArray[index]=glyphId glyphName/CID
[0]=111 (macron) [1]=234 (Imacron) [2]=235 (imacron) [3]=818 (macron.cap) [4]=937 (imacron.sc) 

which is the list you were looking for.