Changes

Jump to navigation Jump to search
5,816 bytes added ,  16:55, 28 May 2020
< [[Basic Text FormattingBasics#Basics_of_ConTeXt_text_formatting|Basics of text formatting]] | [[Fonts]] | [[Font Sizes]] >
* a complete font change ({{cmd|setupbodyfont}}, {{cmd|switchtobodyfont}}).
== Warning Before you start ... ==
1. Placing a font switch at the begin of a paragraph can sometimesgenerate unexpected side-effetseffects. This can be avoided by forcinghorizontal mode before any font change:
<texcode>
\dontleavehmode{\bf Warning!} Care must be taken when a font switch is usedat the beginning of a paragraph.\par
</texcode>
 
2. It is usually a bad style to 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 styles and alternatives ==
You can generally combine font styles with alternatives, so if you want to
switch to bold sans serif, you can use either <code>\bf\ss</code> or
<code>\ss\bf</code>. The various combinations look like the following. <context mode="mkiv">\setupbodyfont[8pt]\setupcolors[rgb, state=start]\definecolor[one][c=0, m=.4, y=1, k=0]\definecolor[two][c=0, m=.2, y=.5, k=0]\setupTABLE[frame=off,offset=0.5em] \setupTABLE[c][2][style=\rm]\setupTABLE[c][3][style=\ss]\setupTABLE[c][4][style=\tt]\setupTABLE[r][1][background=color, backgroundcolor=one]\setupTABLE[c][1][background=color, backgroundcolor=one]
There is a font switch \startTABLE \NC \NC \type{\rm} serif \NC \type{cmd|em\ss}sans serif \NC \type{\tt} to ''emphasize'' text. This is somewhatteletype \NC \NRspecial: it does automatic italic correction and changes the alternative depending \NC \type{\tf} \NC Normal \NC Normal \NC Normal \NC \NRon the current alternative. For example, if the current font alternative is normal (i.e. upright), \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 Italic \NC \NR \NC \type{cmd|em\sl} \NC \sl Slanted \NC \sl Slanted \NC \sl Slanted\NC \NR \NC \type{\bi} switches to slanted; and if the current font alternative is slanted, \NC \bi Bold Italic \NC \bi Bold Italic \NC \bi Bold Italic\NC \NR \NC \type{\bs} \NC \bs Bold Slanted \NC \bs Bold Slanted \NC \bs Bold Slanted\NC \NR \NC \type{cmd|em\sc}} switches to normal. \NC \sc Smallcaps \NC \sc Smallcaps \NC \sc Smallcaps\NC \NR\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
And serif again
</context>
 
== Emphasizing text ==
There is a font switch {{cmd|em}} to ''emphasize'' text. This is somewhat
special: it does automatic italic correction and changes the alternative depending
on 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 \NC
Text \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 ==
<code>(1.2)^2 = 1.44</code>, {{cmd|tfc}} to scale by <code>(1.2)^3 = 1.728</code> and {{cmd|tfd}} to
scale 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}}
to scale the font by a factor of <code>0.8</code> and {{cmd|tfxx}} to scale by a factor
of <code>0.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 can
be 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 set the scaling factors for specific font sizes. For example, if you want{{cmd|tfa}} to set the effective font size to 12pt when the bodyfont size is 10pt, and to set the effective font size to
14pt when the bodyfont size is 11pt, then add
<texcode>
\definebodyfontenvironment [11pt] [a=14pt]
</texcode>
 
'''Note:''' When the first parameter is <code>default</code>, the scaling factors ''must'' have numerical values. When the first parameter is a font size (e.g., <code>12pt</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
In addition, the commands {{cmd|smallbodyfont}} and
{{cmd|bigbodyfont}} 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 mnemonic font switches are pretty smart. You can either use them as
\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 ==
{{cmd|switchtobodyfont}} 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, see the Pragma web site has recipes covering all the commonly availabletypefaces [http://pragma-ade.com/general/manuals/showfont.pdf], while aseparate manual describes how to write support for new typefaces[http://pragma-ade.com/general/manuals/mfonts.pdf]following articles.
The recipes as given work with the standalone ConTeXt distribution, but not
with TeX Live et al. [http://pragma-ade.com/general/technotes/tfmetrics.pdf]
explains why ConText uses separate font metrics, and gives some differences
between the sets. To use the recipes with other distributions,
try adding one of <code>\usetypescript[berry][ec]</code> or
<code>\usetypescript[adobekb][ec]</code>.
* [[Simple Typescript Example]]
* [[Linux Libertine on mkiv]]
== Conclusion ==
There are many other ways of choosing font styles in ConTeXt. If thesebasic styles do not satisfy your needs, have a look at the [[Manuals|manuals]],or ask on the [[ConTeXt Mailing Lists]].
[[Category:Fonts]]

Navigation menu