![](https://secure.gravatar.com/avatar/e07e15a8be3c4c1723f5a0397bc17424.jpg?s=120&d=mm&r=g)
While working to get italic smallcaps in a secondary font face, I came across an issue with \switchbodyfont. When this is used in a certain way, the \tf font-style is changed, but not the \it, \bf, and so on. The example below compiles cleanly as presented, and the problem is not present. Each test line shows the expected font name and text. When the Oops! line is uncommented, the only test line for the test font that is correct is the \tf line. Other lines use the default font face in the specified font styles, but the font features are a mix (note that some are onum, some lining, and that long-s t ligatures are inconsistent). When the newotf module is enabled, the example fails to compile without errors, but produces similar results to non-newotf when the errors are ignored. This is not a problem with individual fonts—I have tried a variety of fonts both as default and secondary and get the same result. %\usemodule[newotf] \setupwhitespace[medium] \define\testAlphabet{\purefontname\font\quad ABCDEFGHIJKLmnopqrsſtuvwxyz \& 012345789} \starttypescript[Secondary] \definetypeface[Secondary][rm][serif][ebgaramond][default] % \definetypeface[Secondary][rm][serif][palatino][default] % \definetypeface[Secondary][rm][serif][libertine][default] \stoptypescript \setupbodyfont [modern, 10pt] %\setupbodyfont [palatino, 10pt] \starttext % {\switchtobodyfont[Secondary]Oops!\par}% Oops! Default tf: {\tf \testAlphabet}\par Default bf: {\bf \testAlphabet}\par Default it: {\it \testAlphabet}\par Default sl: {\sl \testAlphabet}\par Default bi: {\bi \testAlphabet}\par Default bs: {\bs \testAlphabet}\par Default sc: {\sc \testAlphabet}\par Default xx: {\it\setff{smallcaps}\testAlphabet}\par \switchtobodyfont[Secondary] Secondary tf: {\tf \testAlphabet}\par Secondary bf: {\bf \testAlphabet}\par Secondary it: {\it \testAlphabet}\par Secondary sl: {\sl \testAlphabet}\par Secondary bi: {\bi \testAlphabet}\par Secondary bs: {\bs \testAlphabet}\par Secondary sc: {\sc \testAlphabet}\par Secondary xx: {\it\setff{smallcaps}\testAlphabet}\par \stoptext Have I failed to properly specify the secondary typeface? Do I need a more complete typescript? Or is there a bug here? -- Rik
![](https://secure.gravatar.com/avatar/49e63acb01f2ca80efce7eed08310ce8.jpg?s=120&d=mm&r=g)
On 8/20/2015 8:34 PM, Rik Kabel wrote:
While working to get italic smallcaps in a secondary font face, I came across an issue with \switchbodyfont. When this is used in a certain way, the \tf font-style is changed, but not the \it, \bf, and so on.
The example below compiles cleanly as presented, and the problem is not present. Each test line shows the expected font name and text.
When the Oops! line is uncommented, the only test line for the test font that is correct is the \tf line. Other lines use the default font face in the specified font styles, but the font features are a mix (note that some are onum, some lining, and that long-s t ligatures are inconsistent).
When the newotf module is enabled, the example fails to compile without errors, but produces similar results to non-newotf when the errors are ignored.
This is not a problem with individual fonts—I have tried a variety of fonts both as default and secondary and get the same result.
%\usemodule[newotf] \setupwhitespace[medium] \define\testAlphabet{\purefontname\font\quad ABCDEFGHIJKLmnopqrsſtuvwxyz \& 012345789} \starttypescript[Secondary] \definetypeface[Secondary][rm][serif][ebgaramond][default] % \definetypeface[Secondary][rm][serif][palatino][default] % \definetypeface[Secondary][rm][serif][libertine][default] \stoptypescript \setupbodyfont [modern, 10pt] %\setupbodyfont [palatino, 10pt] \starttext % {\switchtobodyfont[Secondary]Oops!\par}% Oops! Default tf: {\tf \testAlphabet}\par Default bf: {\bf \testAlphabet}\par Default it: {\it \testAlphabet}\par Default sl: {\sl \testAlphabet}\par Default bi: {\bi \testAlphabet}\par Default bs: {\bs \testAlphabet}\par Default sc: {\sc \testAlphabet}\par Default xx: {\it\setff{smallcaps}\testAlphabet}\par \switchtobodyfont[Secondary] Secondary tf: {\tf \testAlphabet}\par Secondary bf: {\bf \testAlphabet}\par Secondary it: {\it \testAlphabet}\par Secondary sl: {\sl \testAlphabet}\par Secondary bi: {\bi \testAlphabet}\par Secondary bs: {\bs \testAlphabet}\par Secondary sc: {\sc \testAlphabet}\par Secondary xx: {\it\setff{smallcaps}\testAlphabet}\par \stoptext
Have I failed to properly specify the secondary typeface? Do I need a
mostly changed names of the fonts, a missing directive (i'll add a fallback for that) and such ... patched in the next beta Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
![](https://secure.gravatar.com/avatar/e07e15a8be3c4c1723f5a0397bc17424.jpg?s=120&d=mm&r=g)
On 2015-08-21 09:10, Hans Hagen wrote:
mostly changed names of the fonts, a missing directive (i'll add a fallback for that) and such ... patched in the next beta
Hans, This morning's release fixed the newotf module problem, but not the font face problem. Was that to be expected? -- Rik
![](https://secure.gravatar.com/avatar/49e63acb01f2ca80efce7eed08310ce8.jpg?s=120&d=mm&r=g)
On 8/21/2015 11:50 PM, Rik Kabel wrote:
On 2015-08-21 09:10, Hans Hagen wrote:
mostly changed names of the fonts, a missing directive (i'll add a fallback for that) and such ... patched in the next beta
Hans,
This morning's release fixed the newotf module problem, but not the font face problem. Was that to be expected?
The font switching mechanism is quite optimized (for performance) and makes some assumptions about namespaces. When you define a font, normally each call will check the definition i.e. be dynamic, but a bodyfont assumes a more frozen use. Specially with in-document typescripts that can have side effects. In your case, just say \setupbodyfont [Secondary,10pt] before the modern one, as it will then define Secondary in its own namespace and also not have a local/global mix side effects that comes from a first call to a bodyfont switch inside a group. Such a global initialization also has the effect of more efficient definitions of related bodyfont environments. It's also good to add a math font definition: \starttypescript[Secondary] \definetypeface[Secondary][rm][serif][ebgaramond][default] \definetypeface[Secondary][mm][math][modern][default] as some symbols might come from math. Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
participants (2)
-
Hans Hagen
-
Rik Kabel