On 10/3/2018 3:29 PM, Hans Hagen wrote:
On 10/3/2018 12:33 PM, mf wrote:
Hello list,
i'm trying to add a smallcaps variant to the MyriadPro font, since it
does not implement the smcp opentype feature.
My strategy:
- "transplant" the uppercase letters of the MyriadPro-Regular into the
lowercase letters of the same font with a font fallback that scales
down the glyphs ("FakeSansCaps" in the following source)
- since the scaled down glyphs get also thinner traits, embolden them
with a font feature effect ("emboldened" in the following source) to
make them consistent with the "real" uppercase letters
What is not working: i don't know how to map the uppercase letters to
the lowercase range; i tried to specify an offset of -32 in
\definefontfallback[FakeSansCaps][SansEmboldened][0x61-0x7a][rscale=.8,force=yes,offset=-32]
but it does not work.
Here's the minimal (not) working example:
\starttypescriptcollection [myriadpro]
\definefontfeature[emboldened][effect={width=0.1,delta=0.4,factor=0.3}]
\starttypescript [sans] [myriadpro]
\definefontsynonym [Sans] [file:MyriadPro-Regular.otf]
[features=default]
\definefontsynonym [SansItalic] [file:MyriadPro-It.otf]
[features=default]
\definefontsynonym [SansBold] [file:MyriadPro-Bold.otf]
[features=default]
\definefontsynonym [SansBoldItalic]
[file:MyriadPro-BoldIt.otf] [features=default]
\definefontsynonym [SansSlanted] [file:MyriadPro-It.otf]
[features=default]
\definefontsynonym [SansBoldSlanted]
[file:MyriadPro-BoldIt.otf] [features=default]
\definefontsynonym [SansEmboldened] [Sans] [features=emboldened]
\definefontfallback[FakeSansCaps] [SansEmboldened]
[0x61-0x7a] [rscale=.8,force=yes] % offset?
\definefontsynonym [SansCaps] [file:MyriadPro-Regular.otf]
[fallbacks=FakeSansCaps]
\stoptypescript
\starttypescript [myriadpro]
\definetypeface [myriadpro] [ss] [sans] [myriadpro] [default]
\stoptypescript
\stoptypescriptcollection
\usetypescript[myriadpro]
\setupbodyfont[myriadpro,ss]
\starttext
% scaled up 4 times to appreciate the thickness compensation
\scale[sx=4,sy=4]{\sc SoMe CaMeLcAsE TeXt.}\par
\stoptext
'offset' offsets the original, i'll add 'target' so that you can do
\definefontfallback[FakeSansCaps] [SansEmboldened]
[0x61-0x7a] [rscale=.8,force=yes,target=0x41]
ok, even nicer:
\definefontfallback[FakeSansCaps] [SansEmboldened]
[0x0000-0xFFFF] [rscale=.8,method=uppercase]
which will remap all lowercase in the font so that you also get accented
characters
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
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the
Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________