Simple Typescript Example

From Wiki
Revision as of 07:30, 30 January 2014 by Thangalin (talk | contribs)
Jump to navigation Jump to search


Overview

This page describes how to map a Sans Serif font to the \ss command and a Serif font to the \rm command.

Requirements

This example uses Nimbus, which is a GPL font. Check to see if Nimbus is available by running the following command:

mtxrun --script fonts --list --all --pattern=nimbus*

This should reveal a list similar to the following:

nimbusromno9lmedi          nimbusromno9lmedi        utmb8a.afm
nimbusromno9lmedibold      nimbusromno9lmedi        utmb8a.afm
nimbusromno9lmediital      nimbusromno9lmediital    utmbi8a.afm
nimbusromno9lregu          nimbusromno9lregu        utmr8a.afm
nimbusromno9lreguital      nimbusromno9lreguital    utmri8a.afm
nimbusromno9lregunormal    nimbusromno9lregu        utmr8a.afm
nimbussanlbold             nimbussanlbold           uhvb8a.afm
nimbussanlboldital         nimbussanlboldital       uhvbo8a.afm
nimbussanlregu             nimbussanlregu           uhvr8a.afm
nimbussanlreguital         nimbussanlreguital       uhvro8a.afm
nimbussanlregunormal       nimbussanlregu           uhvr8a.afm

If the font is not shown, you might have to install the font, which can be found on some systems at:

/usr/share/fonts/type1/gsfonts

You may use a different font; please see how to install fonts to MkIV for details.

Script

The ConTeXt code to configure the font follows:

% Enable Unicode fonts
\enableregime[utf]

% Enable Capital Letter use
\setupcapitals[sc=yes]

% Define a script named [serif][nimbus]
\starttypescript [serif] [nimbus]
  \definefontsynonym [Serif]             [name:nimbusromno9lregu]
  \definefontsynonym [SerifBold]         [name:nimbusromno9lbold]
  \definefontsynonym [SerifItalic]       [name:nimbusromno9lreguital]
  \definefontsynonym [SerifSlanted]      [name:nimbusromno9lreguital]
  \definefontsynonym [SerifBoldItalic]   [name:nimbusromno9lboldital]
  \definefontsynonym [SerifBoldSlanted]  [name:nimbusromno9lboldital]
  \definefontsynonym [SerifCaps]         [name:nimbusromno9lregu]
\stoptypescript

% Define a second script named [sans][nimbus]
\starttypescript [sans] [nimbus]
  \definefontsynonym [Sans]             [name:nimbussanlregu]
  \definefontsynonym [SansBold]         [name:nimbussanlbold]
  \definefontsynonym [SansItalic]       [name:nimbussanlreguital]
  \definefontsynonym [SansSlanted]      [name:nimbussanlreguital]
  \definefontsynonym [SansBoldItalic]   [name:nimbussanlboldital]
  \definefontsynonym [SansBoldSlanted]  [name:nimbussanlboldital]
  \definefontsynonym [SansCaps]         [name:nimbussanlregu]
\stoptypescript

% Define the typeface nimbus; use serif for rm-fonts, sans serif for ss-fonts.
\definetypeface [nimbus]  [rm]  [serif] [nimbus]
\definetypeface [nimbus]  [ss]  [sans]  [nimbus]

% Indicate the typeface to use.
\usetypescript[nimbus][uc]
\setupbodyfont[nimbus,rm,10pt]

\starttext

Regular, {\it Italic}, {\bf Bold}, {\bi Bold-Italic}, {\sc KaPiTaLe}

\showbodyfont

\stoptext

Both scripts map the fonts names to the different (existing) font style. Usage is implemented as follows:

1. The \setupbodyfont command calls the typeface nimbus. 1. The typeface nimbus calls the typescript [serif][nimbus] for the rm-fonts, or typescript [sans][nimbus] for the ss-fonts.

The scripts then map the fonts to different font styles.

Small extension

To show how to call a typescript directly we extend the script a little:

...
\definefontsynonym [SansCaps]           [name:nimbusromno9lregu]
\stoptypescript

\starttypescript [nimbus]
  \definetypeface [nimbus]	[rm]	[serif]	[nimbus]
  \definetypeface [nimbus]	[ss]	[sans]	[nimbus]
\stoptypescript

\usetypescript[nimbus]
\setupbodyfont[nimbus,rm,10pt]

\starttext
...

Annotations:

  • A third typescript is defined named [nimbus]
  • usetypescript calls the typescript [nimbus] in which the typeface [nimbus] is defined
  • typeface [nimbus] and typescript [nimbus] are two totally different things
  • if the typescript [nimbus] would not be called via usetypescript then the typeface [nimbus] would not be defined

References

  • setupbodyfont
  • showbodyfont
  • definetypeface (not found in the references)
  • starttypescript / stoptypescript (not found in the references)
  • definefontsynonym (not found in the references)