[NTG-context] simplefonts

Michael Saunders odradek5 at gmail.com
Sun Mar 14 14:12:05 CET 2010

Thomas A. Schmitz:

Thank you, Thomas.  I've been studying this closely.

> A typescript file can contain a series of typeface definitions, e.g., one for serif, one for sans, one for mono, one for math, etc. hence the syntax \starttypescript

[<typeface>] [<identifier>]

I see!  So, I'm guessing that it is this <typeface> which connects the
typescripts to the font switching commands like \rm.  My guess is:
<typeface>     switch
serif              \rm
sans              \ss
mono            \tt
math             \mm
??                 \hw
??                 \cg
and that Context only permits these six families?

> > In the typography manual, Hans says,
> > "The third and fourth
> > arguments to \definetypeface are pointers to already declared font
> > sets; these are defined elsewhere."  I think by "font set" he must
> > mean a typescript like garamondprem, but I don't know where  the font
> > set (typescript?) "serif" is or why two font sets need to be pointed
> > to.

> ???

That's how I feel.  The command in question was:
\definetypeface [GaramondPrem] [rm] [serif] [garamondprem] [default]
The typography document says that the "[serif] [garamondprem]"
"are pointers to already declared font sets; these are defined elsewhere."
I know now that "[garamondprem]" is the "font set" in your typescript.
I don't know what font set "[serif]" points to or why.

> The same  typography document goes on to explain the fifth
> argument:
> "The fifth argument to \definetypeface specifies specific font size
> setups (if any), these will be covered in section ?? in the next
> chapter."
> This is getting scary, but I'm hoping putting "[optical]" there will
> solve everything.
I don't follow.

says:   "The fifth argument to \definetypeface specifies specific font
size setups (if any), these will be covered in section ?? in the next
If this chapter were inserted into the manual, the next chapter would
be about color and backgrounds, so, no luck searching there.
But, I noticed that that fifth argument was filled by "[optical]" at
the bottom of this page:
so:  "\definetypeface [minion-pro] [rm] [serif] [minion-pro] [optical]"

> > I'm confused about how [GaramondPremUpper] and [garamondpremupper]
> > seem to be getting associated with [rm] and [serif] after they were
> > already associated with
> > [GaramondPrem] and [garamondprem].  I don't see how, when I now use \rm, the
> > machine is going to know whether I mean garamondpremupper or garamondprem.
> > The rest of the file seems straightforward.

> In ConTeXt, you are always within a certain bodyfont (the one defined with the \definetypeface command). A switch like \it or \rm will thus take the italic/roman from this bodyfont. Meaning: when you say \setubodyfont[GaramondPrem], it will use "normal" Garamond Premier, if you use \switchtobodyfont[GaramondPremUpper], it will use the superior numbers variant.

Ahhh, okay.  It wasn't intuitive to me, as a user, that a relatively
small change (from, say, oldstyle to superiors) would take a much
bigger switch (of the whole bodyfont) than would a relatively big
change (from, say, roman to italic, which only needs a little \it).  I
wrote a set of font switches once (in LaTeX) that were all little
digraph codes

(major axis: rm, it, sl, ui; minor axis:  rg, ac, sc, sw, in, su, nu,
de, po, pl, to, tl  +  ornaments, which handles all of the variations
that Adobe makes, anyway).  Maybe I'll be able to reproduce it once I
get this working.

> > I get the error:
> > !undefined control sequence
> > <recently read>  \usetypescript
> > l.12 \usetypescript
> >                         [GaramondPrem]

> Then we will need your example - this is not normal behavior.


First, I put an almost exact copy of your file (with your comments
commented out) in type-garamondprem.tex in
and ran luatools --generate, which seems to see the directory alright.
Then I put the commands:
\usetypescriptfile [type-garamondprem]
\usetypescript [GaramondPremUpper]
\usetypsecript [GaramondPrem]
\setupbodyfont [GaramondPrem,12pt]
 in my preamble, with nothing else.

When I try to run Context, the above error was returned.  For the
record, here is the exact contents of type-garamondprem.tex:

%So we define a set of such features for the different font instances
we want to define.
%In my case, I want regular text with oldstyle figures, small caps
with lining figures, and superior numerals. This goes into your




%Next step: we set up the "normal" and smallcaps font:

\starttypescript [serif] [garamondprem]
 \definefontsynonym [Garamond-Roman]
[name:garamondpremierpro]  [features=myroman]
 \definefontsynonym [Garamond-Bold]
[name:garamondpremierprobold]  [features=myroman]
 \definefontsynonym [Garamond-Italic]
[name:garamondpremierproitalic]  [features=myroman]
 \definefontsynonym [Garamond-Bold-Italic]
[name:garamondpremierprobolditalicc] [features=myroman]
 \definefontsynonym [Garamond-SmallCaps]
[name:garamondpremierpro]  [features=mysmcp]

\starttypescript [serif] [garamondprem]
 \definefontsynonym [Serif]           [Garamond-Roman] [features=myroman]
 \definefontsynonym [SerifItalic]     [Garamond-Italic] [features=myroman]
 \definefontsynonym [SerifBold]       [Garamond-Bold] [features=myroman]
 \definefontsynonym [SerifBoldItalic] [Garamond-Bold-Italic] [features=myroman]
 \definefontsynonym [SerifCaps]       [Garamond-SmallCaps] [features=mysmcp]

%Finally, define your first typeface:

\starttypescript [GaramondPrem]
 \definetypeface [GaramondPrem] [rm] [serif] [garamondprem] [default]

%Next step: defining a typeface with superior numbers for footnote
references etc.:

\starttypescript [serif] [garamondpremupper]
 \definefontsynonym [GaramondPremUpper-Roman]
[name:agaramondproregular]  [features=mysup]

\starttypescript [serif] [garamondpremupper]
 \definefontsynonym [Serif]           [GaramondPremUpper-Roman]
 \definefontsynonym [SerifItalic]     [Serif]
 \definefontsynonym [SerifBold]       [Serif]
 \definefontsynonym [SerifBoldItalic] [Serif]
 \definefontsynonym [SerifCaps]       [Serif]

\starttypescript [GaramondPremUpper]
 \definetypeface [GaramondPremUpper] [rm] [serif] [garamondpremupper] [default]

%Save this typescript somewhere where ConTeXt can find it and run
luatools --generate. To use these in your documents, you need these

Thank you again, this has been a huge help.

More information about the ntg-context mailing list