If a Font Has Ligature Glyphs But No Feature?
I downloaded something that purports to be Century Expanded from fontsgeek.com. Although the font has fi and fl ligature glyphs, it does not have a ligature font feature and ConTeXt does not use those glyphs. Aside from purchasing a real font product from Linotype at enormous expense and hoping it is better equipped, is there a way to coerce ConTeXt into using the ligature glyphs for fi and fl?
On 7/20/2022 6:31 AM, Michael Urban via ntg-context wrote:
I downloaded something that purports to be Century Expanded from fontsgeek.com. Although the font has fi and fl ligature glyphs, it does not have a ligature font feature and ConTeXt does not use those glyphs.
Aside from purchasing a real font product from Linotype at enormous expense and hoping it is better equipped, is there a way to coerce ConTeXt into using the ligature glyphs for fi and fl? you can define your own ligature feature (examples in test suite and elsewhere) but personally i'd not spend money on a font that is half done (some t1 font converted to ot?); or maybe it does have a feature but it's script / language dependent
Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
On 20 Jul 2022, at 05:31, Michael Urban via ntg-context
wrote: Aside from purchasing a real font product from Linotype at enormous expense and hoping it is better equipped, is there a way to coerce ConTeXt into using the ligature glyphs for fi and fl?
Yes - I had to do the same for a font called Venetian 301 for which I found these 4 files: Filename Name as it appears to MacOS -------- -------------------------- Venetian301BT-Roman.otf Venetian 301 Regular Venetian301BT-Italic.otf Venetian 301 Italic Venetian301BT-Bold.otf Venetian 301 Bold venetian-301-demi-bt.ttf Venetian Dm BT Demi They each had the fi and fl ligatures, but at different character positions depending on which file, and they weren't recognised by default. So I used the following code to add them (and add en and em dash substitution as well). %% ---- start \startluacode fonts.handlers.otf.addfeature { name = "v1", -- these character substitutions will be applied to venetian-301-demi-bt type = "ligature", data = { [0xF001] = { "f", "i" }, [0xF002] = { "f", "l" }, } } fonts.handlers.otf.addfeature { name = "v2", -- these character substitutions will be applied to Venetian301BT type = "ligature", data = { [0xFB01] = { "f", "i" }, [0xFB02] = { "f", "l" }, } } fonts.handlers.otf.addfeature { name = "v3", -- these character substitutions will be applied to both type = "ligature", data = { [0x2013] = { "-", "-" }, -- en dash [0x2014] = { "-", "-", "-" }, -- em dash } } \stopluacode \definefontfeature [venetian-301-demi-ligatures] [v1=yes,v3=yes] \definefontfeature [venetian-301-BT-ligatures] [v2=yes,v3=yes] \starttypescript [serif] [myBookFont] \definefontsynonym [Serif] [file:venetian-301-demi-bt] [features=venetian-301-demi-ligatures] \definefontsynonym [SerifBold] [file:Venetian301BT-Bold] [features=venetian-301-BT-ligatures] \definefontsynonym [SerifItalic] [file:Venetian301BT-Italic] [features=venetian-301-BT-ligatures] \stoptypescript %% ---- end Note that the names v1, v2 and v3 are entirely arbitrary. Also, the \starttypescript section sets the font features to be just those I've defined - potentially losing whatever 'default' would provide. But since the font doesn't seem to have a lot of features in the first place I've so far not noticed any problems. I'm sure a real expert could tell you how to retain 'default' and add the ligatures, if needed. Regards, — Bruce Horrocks Hampshire, UK
Am 20.07.22 um 21:40 schrieb Bruce Horrocks via ntg-context:
\definefontfeature [venetian-301-demi-ligatures] [v1=yes,v3=yes] \definefontfeature [venetian-301-BT-ligatures] [v2=yes,v3=yes]
Note that the names v1, v2 and v3 are entirely arbitrary. Also, the \starttypescript section sets the font features to be just those I've defined - potentially losing whatever 'default' would provide. But since the font doesn't seem to have a lot of features in the first place I've so far not noticed any problems. I'm sure a real expert could tell you how to retain 'default' and add the ligatures, if needed.
Hi Bruce, you can simply inherit your feature sets from default: \definefontfeature [venetian-301-demi-ligatures][default][v1=yes,v3=yes] \definefontfeature [venetian-301-BT-ligatures][default][v2=yes,v3=yes] I’d like to borrow your example for my book, if you don’t object. Hraban
On 20 Jul 2022, at 22:11, Henning Hraban Ramm via ntg-context
wrote: Am 20.07.22 um 21:40 schrieb Bruce Horrocks via ntg-context:
\definefontfeature [venetian-301-demi-ligatures] [v1=yes,v3=yes] \definefontfeature [venetian-301-BT-ligatures] [v2=yes,v3=yes] Note that the names v1, v2 and v3 are entirely arbitrary. Also, the \starttypescript section sets the font features to be just those I've defined - potentially losing whatever 'default' would provide. But since the font doesn't seem to have a lot of features in the first place I've so far not noticed any problems. I'm sure a real expert could tell you how to retain 'default' and add the ligatures, if needed.
Hi Bruce, you can simply inherit your feature sets from default:
\definefontfeature [venetian-301-demi-ligatures][default][v1=yes,v3=yes] \definefontfeature [venetian-301-BT-ligatures][default][v2=yes,v3=yes]
I’d like to borrow your example for my book, if you don’t object.
Thank-you for the tip, and please feel free to use my example in your book. — Bruce Horrocks Hampshire, UK
On 7/20/2022 9:40 PM, Bruce Horrocks via ntg-context wrote:
On 20 Jul 2022, at 05:31, Michael Urban via ntg-context
wrote: Aside from purchasing a real font product from Linotype at enormous expense and hoping it is better equipped, is there a way to coerce ConTeXt into using the ligature glyphs for fi and fl?
Yes - I had to do the same for a font called Venetian 301 for which I found these 4 files:
Filename Name as it appears to MacOS -------- -------------------------- Venetian301BT-Roman.otf Venetian 301 Regular Venetian301BT-Italic.otf Venetian 301 Italic Venetian301BT-Bold.otf Venetian 301 Bold venetian-301-demi-bt.ttf Venetian Dm BT Demi
They each had the fi and fl ligatures, but at different character positions depending on which file, and they weren't recognised by default. So I used the following code to add them (and add en and em dash substitution as well).
%% ---- start \startluacode fonts.handlers.otf.addfeature { name = "v1", -- these character substitutions will be applied to venetian-301-demi-bt type = "ligature", data = { [0xF001] = { "f", "i" }, [0xF002] = { "f", "l" }, } } fonts.handlers.otf.addfeature { name = "v2", -- these character substitutions will be applied to Venetian301BT type = "ligature", data = { [0xFB01] = { "f", "i" }, [0xFB02] = { "f", "l" }, } } fonts.handlers.otf.addfeature { name = "v3", -- these character substitutions will be applied to both type = "ligature", data = { [0x2013] = { "-", "-" }, -- en dash [0x2014] = { "-", "-", "-" }, -- em dash } } \stopluacode \definefontfeature [venetian-301-demi-ligatures] [v1=yes,v3=yes] \definefontfeature [venetian-301-BT-ligatures] [v2=yes,v3=yes]
\starttypescript [serif] [myBookFont] \definefontsynonym [Serif] [file:venetian-301-demi-bt] [features=venetian-301-demi-ligatures] \definefontsynonym [SerifBold] [file:Venetian301BT-Bold] [features=venetian-301-BT-ligatures] \definefontsynonym [SerifItalic] [file:Venetian301BT-Italic] [features=venetian-301-BT-ligatures] \stoptypescript %% ---- end
Note that the names v1, v2 and v3 are entirely arbitrary. Also, the \starttypescript section sets the font features to be just those I've defined - potentially losing whatever 'default' would provide. But since the font doesn't seem to have a lot of features in the first place I've so far not noticed any problems. I'm sure a real expert could tell you how to retain 'default' and add the ligatures, if needed.
just name them 'liga' and default will then do them ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
participants (4)
-
Bruce Horrocks
-
Hans Hagen
-
Henning Hraban Ramm
-
Michael Urban