Do you want to use the Serif Italic instead of the default Italic?
Now is possible to customize PragmataPro, and other fonts, using OpenType features via OpenType Feature Freezer
A very useful tool, available also as command-line, designed by Adam Twardoch and others that freeze OpenType features to fonts, by remapping their Unicode assignments.
The complete command-line syntax:
usage: pyftfeatfreeze [-h] [-f FEATURES] [-s SCRIPT] [-l LANG] [-z] [-S]
[-U USESUFFIX] [-R REPLACENAMES] [-i] [-r] [-n] [-v]
[-V]
inpath [outpath]
With pyftfeatfreeze you can "freeze" some OpenType features into a font. These
features are then "on by default", even in apps that don't support OpenType
features. Internally, the tool remaps the "cmap" table of the font by applying
the specified GSUB features. Only single and alternate substitutions are
supported.
positional arguments:
inpath input .otf or .ttf font file
outpath output .otf or .ttf font file (optional)
optional arguments:
-h, --help show this help message and exit
options to control feature freezing:
-f FEATURES, --features FEATURES
comma-separated list of OpenType feature tags, e.g.
'smcp,c2sc,onum'
-s SCRIPT, --script SCRIPT
OpenType script tag, e.g. 'cyrl' (default: 'latn')
-l LANG, --lang LANG OpenType language tag, e.g. 'SRB ' (optional)
-z, --zapnames zap glyphnames from the font ('post' table version 3,
.ttf only)
options to control font renaming:
-S, --suffix add a suffix to the font family name (by default, the
suffix will be constructed from the OpenType feature
tags)
-U USESUFFIX, --usesuffix USESUFFIX
use a custom suffix when --suffix is provided
-R REPLACENAMES, --replacenames REPLACENAMES
search for strings in the font naming tables and
replace them, format is
'search1/replace1,search2/replace2,...'
-i, --info update font version string
reporting options:
-r, --report report languages, scripts and features in font
-n, --names output names of remapped glyphs during processing
-v, --verbose print additional information during processing
-V, --version show program's version number and exit
Some snippets:
PragmataPro Mono Liga Script (Italics → Script)
pyftfeatfreeze -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Script' PragmataPro_Mono_R_liga_0830.ttf PragmataPro_Mono_R_liga_0830_Script.ttf && pyftfeatfreeze -f 'ss06' -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Script' PragmataPro_Mono_I_liga_0830.ttf PragmataPro_Mono_I_liga_0830_Script.ttf && pyftfeatfreeze -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Script' PragmataPro_Mono_B_liga_0830.ttf PragmataPro_Mono_B_liga_0830_Script.ttf && pyftfeatfreeze -f 'ss07' -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Script' PragmataPro_Mono_Z_liga_0830.ttf PragmataPro_Mono_Z_liga_0830_Script.ttf
PragmataPro Mono Liga Serif (Italics & Bolds → Serif)
pyftfeatfreeze -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Serif' PragmataPro_Mono_R_liga_0830.ttf PragmataPro_Mono_R_liga_0830_Serif.ttf && pyftfeatfreeze -f 'ss09' -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Serif' PragmataPro_Mono_I_liga_0830.ttf PragmataPro_Mono_I_liga_0830_Serif.ttf && pyftfeatfreeze -f 'ss08' -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Serif' PragmataPro_Mono_B_liga_0830.ttf PragmataPro_Mono_B_liga_0830_Serif.ttf && pyftfeatfreeze -f 'ss10' -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Serif' PragmataPro_Mono_Z_liga_0830.ttf PragmataPro_Mono_Z_liga_0830_Serif.ttf
PragmataPro Mono Liga Fraktur (Italics → Fraktur)
pyftfeatfreeze -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Fraktur' PragmataPro_Mono_R_liga_0830.ttf PragmataPro_Mono_R_liga_0830_Fraktur.ttf && pyftfeatfreeze -f 'ss03' -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Fraktur' PragmataPro_Mono_I_liga_0830.ttf PragmataPro_Mono_I_liga_0830_Fraktur.ttf && pyftfeatfreeze -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Fraktur' PragmataPro_Mono_B_liga_0830.ttf PragmataPro_Mono_B_liga_0830_Fraktur.ttf && pyftfeatfreeze -f 'ss04' -R 'PragmataPro Mono Liga/PragmataPro Mono Liga Fraktur' PragmataPro_Mono_Z_liga_0830.ttf PragmataPro_Mono_Z_liga_0830_Fraktur.ttf
A lighter MacOS script by Benas Svipas if somebody wants to use it instead of OpenType Feature Freezer GUI:
#!/usr/bin/env bash # Install - python and pipx brew install python pipx &> /dev/null pipx ensurepath &> /dev/null # Download - OpenType Feature Freezer (https://github.com/twardoch/fonttools-opentype-feature-freezer) pipx install opentype-feature-freezer &> /dev/null # Build - Italic stylistic alternates pyftfeatfreeze -f 'ss09' PragmataProI_liga_0830.ttf PragmataProI_liga_0830_script.ttf pyftfeatfreeze -f 'ss09' PragmataPro_Mono_I_liga_0830.ttf PragmataPro_Mono_I_liga_0830_script.ttf echo "Italic stylistic alternates have been built" # Build - Bold Italic stylistic alternates pyftfeatfreeze -f 'ss10' PragmataProZ_liga_0830.ttf PragmataProZ_liga_0830_script.ttf pyftfeatfreeze -f 'ss10' PragmataPro_Mono_Z_liga_0830.ttf PragmataPro_Mono_Z_liga_0830_script.ttf echo "Bold Italic stylistic alternates have been built"
After it’s done you will find new .ttf files which will end with _script.ttf. Install them and you’re good to go. Remember to kill and relaunch your IDE or Terminal so it recognizes new font files.
The actual PragmataPro OpenType feature list:
To understand better how OT features works on PragmataPro I suggest to take a look at PragmataPro Handbook










