Changes

Jump to navigation Jump to search
6,688 bytes added ,  15:55, 13 January 2021
m
Fixed typo
< [[Basic Text Formatting]] | [[Fonts]] | [[Font Sizes]] >In ConTeXt there are four ways to switch fonts:
== Introduction ==* font style/alternative commands ({{cmd|rm}}, {{cmd|ss}}, etc.),* font size commands ({{cmd|tfa}}, {{cmd|tfb}}, etc.),* mnemonic command aliases ({{cmd|bold}}, {{cmd|sans}}, etc.),* a complete font change ({{cmd|setupbodyfont}}, {{cmd|switchtobodyfont}}).
This is a wikified version of this[http://www== Before you start .tug.org/TUGboat/Articles/tb28-2/tb89mahajan.pdf Tugboat article]. ==
In this article I will discuss how to use the various 1. Placing a font styles inConTeXt. Fonts are one of switch at the most complicated parts begin of TeXa paragraph can sometimes generate unexpected side-effects. Fortunately,This can be avoided by forcing horizontal mode before any font change:the macro developers take care of the dirty stuff, and most of the user<texcode>interface \dontleavehmode{\bf Warning!} Care must be taken when a font switch is clean. Nevertheless, understanding used at the various options beginning of theuser interface can be intimidating. As a beginner, one does not want to knowall the nitty-gritty details, but just the basic featuresparagraph. We hope to\parpresent these in this article.</texcode>
In ConTeXt there are four ways 2. It is usually a bad style to switch fonts:use explicit font switches in the text. It is better to define a semantic command that takes care of the font switching. For example, instead of using <code>{\bf\red important text}</code><texcode>\definehighlight[important][style=bold, color=red]</texcode>and then use <code>\important{important text}</code> in the text.
* font style (<cmd>rm</cmd>, <cmd>ss</cmd>, etc.),* font size (<cmd>tfa</cmd>, <cmd>tfb</cmd>, etc.),* alternative font style (<cmd>bold</cmd>, <cmd>sans</cmd>, etc.),* a complete font change (<cmd>setupbodyfont</cmd>, <cmd>switchtobodyfont</cmd>).== Font styles and alternatives ==
I will briefly explain each There are three main types of font styles: serif, sans serif, and teletype. Toswitch between thesestyles, use {{cmd|rm}} for serif, {{cmd|ss}} forsans serif, and {{cmd|tt}} for teletype.
== Font Each of these styles ==comes in different alternatives: normal, bold, italic,slanted, bold-italic, bold-slanted, and small-capped. To switch to a differentalternative, use {{cmd|tf}} ("typeface") for normal, {{cmd|bf}} for bold, {{cmd|it}}for italic, {{cmd|sl}} for slanted, {{cmd|bi}} for bold-italic,{{cmd|bs}} for bold-slanted, and {{cmd|sc}} for small-capped.
There are three types of You can generally combine font families: serifstyles with alternatives, so if you want toswitch to bold sans serif, and teletype. Toswitch between these families, you can use either <cmd>rm</cmd> for serif, <cmdcode>\bf\ss</cmdcode> fororsans serif, and <cmdcode>tt\ss\bf</cmdcode> for teletype. The various combinations look like the following.
Each of these families come in different styles: upright, bold, italic<context mode="mkiv">\setupbodyfont[8pt]\setupcolors[rgb,state=start]slanted\definecolor[one][c=0, bold-italic, bold-slanted, and small-cappedm=. To switch to a differentstyle, use <cmd>tf</cmd> for upright4, <cmd>bf</cmd> for boldy=1, <cmd>it</cmd>k=0]for italic\definecolor[two][c=0, <cmd>sl</cmd> for slantedm=.2, <cmd>bi</cmd> for bold-italicy=.5,k=0]<cmd>bs</cmd> for bold-slanted\setupTABLE[frame=off, and <cmd>sc</cmd> for small-cappedoffset=0.5em]
You can generally combine font families and font styles, so if you want to\setupTABLE[c][2][style=\rm]switch to bold sans serif, you can use either <code>\bfsetupTABLE[c][3][style=\ss</code> or]<code>\sssetupTABLE[c][4][style=\tt]\setupTABLE[r][1][background=color, backgroundcolor=one]\bf</code>. setupTABLE[c][1][background=color, backgroundcolor=one]
There is a font switch <cmd>em</cmd> to ''emphasize'' text. This is somewhat\startTABLEspecial: \NC \NC \type{\rm} serif \NC \type{\ss} sans serif \NC \type{\tt} teletype \NC \NR \NC \type{\tf} \NC Normal \NC Normal \NC Normal \NC \NR \NC \type{\bf} \NC \bf Bold \NC \bf Bold \NC \bf Bold \NC \NR \NC \type{\it} \NC \it Italic \NC \it Italic \NC \it does automatic italic correction and changes the style dependingItalic \NC \NR \NC \type{\sl} \NC \sl Slanted \NC \sl Slanted \NC \sl Slanted\NC \NR \NC \type{\bi} \NC \bi Bold Italic \NC \bi Bold Italic \NC \bi Bold Italic\NC \NRon the current font style. For example, if the current font style is upright, \NC \type{\bs} \NC \bs Bold Slanted \NC \bs Bold Slanted \NC \bs Bold Slanted\NC \NR<cmd>em</cmd> switches to slanted; and if the current font style is slanted, \NC \type{\sc} \NC \sc Smallcaps \NC \sc Smallcaps \NC \sc Smallcaps\NC \NR<cmd>em</cmd> switches to upright.\stopTABLE
ConTeXt uses the Latin Modern fonts by default; these fonts looksimilar to the original Computer Modern fonts, but have a much largercharacter repertoire. As it happens, in the Latin Modern (and ComputerModern) fonts, the slanted font does not stand out from theupright font enough for some tastes; so, many people prefer to use theitalic font for emphasis. To do that use <texcode>\definebodyfontenvironment[default][em=italic]</texcodecontext>
A font switch remains valid for the rest of the ''group''. So, if you want to
temporarily switch to a different font, use the font style command inside a
group. The easiest way to start a group is to enclose the text within braces
This is serif text
{\ss This is sans serif}
This is serif again
{\tt and this is typewriter}
And serif again
</texcode>
This is serif text \crlf
{\ss This is sans serif} \crlf
This is serif again \crlf{\tt and this is typewriter}\crlfAnd serif again</context> == Emphasizing text ==There is a font switch {{cmd|em}} to ''emphasize'' text. This is somewhatspecial: it does automatic italic correction and changes the alternative dependingon the current alternative. For example, if the current font alternative is normal (i.e. upright),{{cmd|em}} switches to slanted; and if the current font alternative is slanted,{{cmd|em}} switches to normal. <context>\starttabulate[|l|f{\tf}l|f{\it}l|f{\sl}l|f{\bf}l|f{\bi}l|f{\bs}l|]\NC \NC \tttf \tex{tf} \NC \tttf \tex{it} \NC \tttf \tex{sl} \NC\tttf \tex{bf} \NC \tttf \tex{bi} \NC \tttf \tex{bs} \NC\NR\NC \NC Text \NC Text \NC Text \NCText \NC Text \NC Text \NC\NR\NC \tex{em} \NC \em Text \NC \em Text \NC \em Text \NC\em Text \NC \em Text \NC \em Text \NC\NR\NC \tex{boldface} \NC \boldface Text \NC \boldface Text \NC \boldface Text \NC\boldface Text \NC \boldface Text \NC \boldface Text \NC\NR\NC \tex{typeface} \NC \typeface Text \NC \typeface Text \NC \typeface Text \NC\typeface Text \NC \typeface Text \NC \typeface Text \NC\NR\NC \tex{swapface} \NC \swapface Text \NC \swapface Text \NC \swapface Text \NC\swapface Text \NC \swapface Text \NC \swapface Text \NC\NR\stoptabulate
</context>
 
ConTeXt uses the Latin Modern fonts by default; these fonts look
similar to the original Computer Modern fonts, but have a much larger
character repertoire. As it happens, in the Latin Modern (and Computer
Modern) fonts, the slanted font does not stand out from the
upright font enough for some tastes; so, many people prefer to use the
italic font for emphasis. To do that use
<texcode>
\definebodyfontenvironment[default][em=italic]
</texcode>
 
{{note| For Opentype fonts, italic correction needs to be set using
<texcode>\definefontfeature[default][default][itlc=yes]</texcode>}}
== Font sizes ==
Occasionally one needs to change the use a font sizedifferent from the bodyfont. ConTeXt provides two seriesof commands for that. To increase the For a larger font size, you can use <{{cmd>|tfa</cmd> }} to scalethe font size by a factor of <code>1.2</code>, <{{cmd>|tfb</cmd> }} to scale by a factor of<code>(1.2)^2 = 1.44</code>, <{{cmd>|tfc</cmd> }} to scale by <code>(1.2)^3 = 1.728</code> and <{{cmd>|tfd</cmd> }} toscale by <code>(1.2)^4 = 2.074</code>. The scale is relative to the current bodyfont size.
To decrease the font size, you can use <cmd>tfx</cmd>
to scale the font by a factor of <code>0.8</code> and <cmd>tfxx</cmd> to scale by a factor
of <code>0.6</code>. The scale factors can be a function of the current font size and can
be changed by <cmd>definebodyfontenvironment</cmd>.
For exampleTo decrease the font size, if you wantcan use {{cmd|tfx}}to scale the font by a factor of <code>0.8</code> and {{cmd|tfxx}} to scale by a factorof <code>tfa0.6</code>. The complete set of relative font sizes are listed below:{| style="border:1px solid #ffcc00; width:100%; padding: 0.5em;" |- align="right"!size||factor ||4pt||5pt||6pt||7pt||8pt||9pt||10pt||11pt||12pt||14.4pt||17.3pt||20.7pt|- align="right"|xx ||0.6 ||4 ||5 ||5 ||5 ||5 ||5 ||6 ||7 ||8 ||10 ||12 ||14.4|- align="right"|x ||0.8 ||4 ||5 ||5 ||6 ||6 ||7 ||8 ||9 ||10 ||12 ||14.4 ||17.3|- align="right" style="background-color: #ffeebb;"|tf ||1.0 ||4 ||5 ||6 ||7 ||8 ||9 ||10 ||11 ||12 ||14.4 ||17.3 ||20.7|- align="right"|a ||1.2 ||4.8||6.0||7.2||8.4||9.6||10.8||12.0||13.2||14.4||17.3 ||20.7 ||24.8|- align="right"|b ||1.44 ||5.8||7.2||8.6||10.1||11.5||13.0||14.4||15.8||17.3||20.7||24.9 ||29.8|- align="right"|c ||1.728 ||6.9||8.6||10.4||12.1||13.8||15.6||17.3||19.0||20.7||24.9||29.9||35.8|- align="right"|d ||2.074 ||8.3||10.4||12.4||14.5||16.6||18.7||20.7||22.8||24.9||29.9||35.9||42.9|-| _|- align="right"|scriptscript|| 0.5 ||4 ||5 ||5 ||5 ||5 ||5 ||5 ||6 ||7 ||9 ||10 ||12|- align="right"|script|| 0.7 ||4 ||5 ||5 ||6 ||6 ||7 ||7 ||8 ||9 ||11 ||12 ||14.4|- align="right"|small|| 0.8 ||4 ||4 ||5 ||5 ||6 ||7 ||8 ||9 ||10 ||12 ||14.4||17.3|- align="right"|big || 1.2 ||6 ||7 ||8 ||9 ||10 ||11 ||12 ||12 ||14.4||17.3||20.7||20.7|} As defined in [[source:font-ini.mkvi|font-ini]]. All sizes in pt, except factor.  The mapping of particular command suffixes (a, x, etc.) and current bodyfont size to effective font size canbe changed by {{cmd|definebodyfontenvironment}}. The default values defined in [[source:font-ini.mkiv|font-ini]] are:<texcode>\definebodyfontenvironment [\s!default] [ \s!text=1.0, \s!script=0.7, \s!scriptscript=0.5, \c!a=1.200, \c!b=1.440, \c!c=1.728, \c!d=2.074, *=\currentfontscale, % wildcard \c!x=0.8, \c!xx=0.6, \c!big=1.2, \c!small=0.8, \c!interlinespace=, \c!em=\v!slanted]</texcode> '''N.B.''': <code>scirpt</code> and <code>scriptsize</code> are used in math mode. It is also possible to be equal set the scaling factors for specific font sizes. For example, if you want {{cmd|tfa}} to set the effective font size to 12pt when you are using the bodyfont size is 10pt font, and be equal to set the effective font size to14pt when you are using the bodyfont size is 11pt font, then add
<texcode>
\definebodyfontenvironment [10pt] [a=12pt]
\definebodyfontenvironment [11pt] [a=14pt]
</texcode>
 '''Note:''' When the first parameter is <cmdcode>default</code>, the scaling factors ''must'' have numerical values. When the first parameter is a font size (e.g., <code>definebodyfontenvironment12pt</code>), the scaling factors can either be numerical value or a dimension.  {{cmd> |definebodyfontenvironment}} is described in detail in the ConTeXt manual and the [[source:font-ini.texmkiv|font-ini.tex]] source file.
Font size can be combined with font styles. As a shortcut, you can use
<{{cmd>|bfa</cmd> }} to get bold font scaled by <code>1.2</code>, <{{cmd>|bfx</cmd> }} to get a bold font
scaled by <code>0.8</code> and similar commands for other font styles.
These quick font size switches are meant for changing the font style, alternative, or size of a fewwords: they do not change the bodyfont, so they don't affect interline spacing and or math font sizes. So, if
you want to change the font size of an entire paragraph, use
<{{cmd>|switchtobodyfont</cmd> }} described below in [[Font_Switching#Complete_font_change|Complete Font Change]]. However, it
is fine to use them as style directives in setup commands, that is, using them
as an option for <code>[[Style_and_Color_Parameters|style=]]...</code> in any setup command that accepts
<code>style</code> option.
== Alternative Mnemonic font styles switches ==
While learning a document markup language like ConTeXt, it can be hard to
remember all the commands. ConTeXt provides other, easy -to -remember alternativefontfont stylesswitches. So for bold you can use <{{cmd>|bold</cmd>}}, for italic you can use<{{cmd>|italic</cmd>}}, for slanted you can use <{{cmd>|slanted</cmd>}}, and so on. You can
probably guess what the following do:
{|
| <{{cmd>|normal</cmd> }} | <{{cmd>|slanted</cmd>}}
|-
| <{{cmd>|boldslanted</cmd>}} | <{{cmd>|slantedbold</cmd>}}
|-
| <{{cmd>|bolditalic</cmd>}} | <{{cmd>|italicbold</cmd>}}
|-
| <{{cmd>|small</cmd>}} | <{{cmd>|smallnormal</cmd>}}
|-
| <{{cmd>|smallbold</cmd>}} | <{{cmd>|smallslanted</cmd>}}
|-
| <{{cmd>|smallboldslanted</cmd>}} | <{{cmd>|smallslantedbold</cmd>}}
|-
| <{{cmd>|smallbolditalic</cmd>}} | <{{cmd>|smallitalicbold</cmd>}}
|-
| <{{cmd>|sans</cmd>}} | <{{cmd>|sansserif</cmd>}}
|-
| <{{cmd>|sansbold</cmd>}} | <{{cmd>|smallcaps</cmd> }}
|}
In addition, the commands <{{cmd>|smallbodyfont</cmd> }} and<{{cmd>|bigbodyfont</cmd> }} can be used to change the font size. The relative size depends on the value of <code>big</code> and <code>small</code> in {{cmd|definebodyfontenvironment}}.
These alternative mnemonic font styles switches are pretty smart. You can either use them asfont style switches inside a { ''group'' }, or as a font changing command that takes an
argument. For example,
<context source="yes">
This is {\bold bold} and so is \bold{this}. But this is not.
</context>
These alternative mnemonic font styles switches can also be used for all <code>style=...</code>
options, and while using them as style options, you can just give the command
name, for without the backslash. For example:
<texcode>
\setuphead[section][style=bold]
</texcode>
(<code>\boldface</code> shown above is also defined to parallel the<code>\typeface</code> and <code>\swapface</code> switches.) == Capitalizing words == * Note that {{cmd|WORD}}, {{cmd|Word}} and all following macros aren't ''switches'', but ''commands'' (brackets behind, not around): <tt>{</tt>{{cmd|em}} <tt>switch}</tt>, vs {{cmd|Word}}<tt>{macro}</tt>. == Underline, strike through, and overline == * Underlined, struck, and overlined text can be achieved with {{cmd|overbar}} , {{cmd|overbars}}, {{cmd|overstrike}}, {{cmd|overstrikes}}, {{cmd|underbar}}, and {{cmd|underbars}}. The canonical way is <code>\overstrike{text}</code>. However, it you're using mycrotypography with <code>\setupalign[hz,hanging]</code> expect the rule to be placed over the character (with the Latin Modern fonts you should not have this problem, experienced with Linux Libertine and mkiv). This is not what is expected. The workaround is to put the overstriked text in a <code>\inframed[frame=off]{}</code>.  E.g.<texcode>bla bla bla \inframed[frame=off]{\overstrike{striked}} bla bla</texcode> <context>bla bla bla \inframed[frame=off]{\overstrike{striked}} bla bla</context> Disabling mycrotypography also works, but probably not desiderable. <pre>\setupalign[nothanging,nohz]\strikeout{text}\setupalign[hanging,hz]</pre> == Complete font (bodyfont) change ==
If you need to change to a different font size and take care of interline
spacing, you can use <change the bodyfont by using {{cmd>|switchtobodyfont</cmd>}}. For example, to switch to 12pt
you can use <code>\switchtobodyfont[12pt]</code>.
ConTeXt provides two relative sizes, called ''big'' and ''small''. So, to go to abigger font increase the bodyfont size , use <code>\switchtobodyfont[big]</code> (or <code>\setbigbodyfont</code>), and to use asmaller font decrease the bodyfont size , use <code>\switchtobodyfont[small]</code>(or <code>\setsmallbodyfont</code>). The exact
size used for big and small can be set using
<{{cmd>|definebodyfontenvironment</cmd>}}.
The <{{cmd>|setupbodyfont</cmd> }} command accepts all the same arguments as<{{cmd>|switchtobodyfont</cmd>}}. The difference between the two is that<{{cmd>|setupbodyfont</cmd> }} also changes the font for headers, footers and otherpage markings, while <{{cmd>|switchtobodyfont</cmd> }} does not. So you should use<{{cmd>|setupbodyfont</cmd> }} for global font definitions to apply to the whole document, and<{{cmd>|switchtobodyfont</cmd> }} for local font changes(i.e. changes to the running text only). The effect of<{{cmd>|switchtobodyfont</cmd> }} can be localized within a group as usual.
== Different Switching typefaces ==
So far we have discussed style and size changes within a given typeface
family. If you want to use a different typeface altogether, such as Times or
Palatino, use `\switchtobodyfont[times]` or `\switchtobodyfont[palatino]`. Here `times` and `palatino` refer to the Pragma web site has recipes covering all name of the typescript definitions for the font. ConTeXt distribution comes with some pre-defined typescripts; if you want to switch to another font, you need to define your own typescript. For details, see [[Fonts | the commonly availablepage on fonts]].typefaces == From font-var.mkvi [httphttps://pragma-adesource.contextgarden.comnet/generaltex/manualscontext/showfontbase/mkiv/font-var.pdfmkvi?search=fontface#l49], while a== <context source=yes>% fontclass % modern dejavu% fontbody % ... 10pt 11pt 12pt ...% fontstyle % rm ss tt mm hw cg ...separate manual describes how to write support for new typefaces% fontalternative % tf bf sl it bs bi sc ...[http://pragma-ade% fontsize % a b c d .com/general/manuals/mfonts.pdf].% fontface % 0=normal 1=text 2=script 3=scriptscript 4=x 5=xx (math are temporary) class: \fontclass body : \fontbody style: \fontstyle alternative: \fontalternative size: \fontsize
The recipes as given work with the standalone ConTeXt distribution, but notwith TeX Live et al. [httpface://pragma-ade.com/general/technotes/tfmetrics.pdf]explains why ConText uses separate font metrics, and gives some differencesbetween the sets. To use the recipes with other distributions,try adding one of <code>\usetypescript[berry][ec]</code> or<code>\usetypescript[adobekb][ec]</code>.fontface
== Conclusion ==</context>
There are many other ways of choosing font styles in ConTeXt. If these
basic styles do not satisfy your needs, have a look at the [[Official ConTeXt Documentation| manuals]],
or ask on the [[ConTeXt Mailing Lists]].
[[Category:Fonts]]
10

edits

Navigation menu