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 ofss02
,ss03
andss04
.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.