Difference between revisions of "Fonts"

From Wiki
Jump to navigation Jump to search
m (Text replacement - "pragma-ade.com" to "pragma-ade.nl")
 
(125 intermediate revisions by 3 users not shown)
Line 1: Line 1:
= How to use one of the provided fonts: 4 steps, 10 sec. =
+
__NOTOC__
  
; #1. First, be aware of the [[ConTeXt distribution's Fonts|21 fonts provided]] and their "nickname".
+
Using fonts with TeX was once a Jedi fight, before XeTeX and LuaTeX development. Nowadays, using fonts is simple.
  
; #2. Give a name to the set of fonts you want to use and select a first font
+
= Using fonts =  
:* Use the command {{cmd|definefontfamily}}.
 
:* Let's take an example, for a Serif font, for which TeX practice is to refer to them as '''roman''' (=rm)
 
:* <texcode>\definefontfamily[MyFontIdentifier][rm][nickname of the serif font]</texcode>
 
  
; #3. Declare it as your default font family for your document
+
You will find here the preliminary steps before actually playing with the fonts in your input file.
:* Use the command with {{cmd|setupbodyfont}}
+
At the end, with one or two commands, you will make your document enable to use any fonts available on your computer.
:* <texcode>\setupbodyfont[MyFontIdentifier]</texcode>
 
  
; #4. Specify the font size
 
:* <texcode>\setupbodyfont[xxpt]</texcode>
 
  
To learn how to use different alternative styles of a given font, like regular / bold / italic, see the [[Font_Switching]] in the [[Basics]].
+
{{TwoColumnsHighlight
 
 
== Example ==
 
{{TwoColumnsUnderLevel1
 
|
 
Let see what give the defaults:
 
<context source=yes>
 
\setupbodyfont[12pt]
 
{The quick brown fox jumps over the lazy dog}\\
 
{\bf The quick brown fox jumps over the lazy dog}\\
 
{\it The quick brown fox jumps over the lazy dog}\\
 
</context>
 
|
 
And let's add the two lines, using Tex Gyre Pagella Serif font (ref:texgyrepagella):
 
<context source=yes>
 
\definefontfamily [MyFontIdentifier] [rm] [texgyrepagella]
 
\setupbodyfont[MyFontIdentifier]
 
\setupbodyfont[12pt]
 
{The quick brown fox jumps over the lazy dog}\\
 
{\bf The quick brown fox jumps over the lazy dog}\\
 
{\it The quick brown fox jumps over the lazy dog}\\
 
</context>
 
}}
 
 
 
= How to use more than one of the provided fonts: 1 step, 5 sec. =
 
 
 
; #1. Very similarly to above, just add more font in your font family.
 
:* for a Sans Serif font, for which TeX practice is to refer to them as '''Sans Serif''' (=ss)
 
:* <texcode>\definefontfamily[MyFontIdentifier][ss][refcode to the sans serif font]</texcode>
 
:* for a monospaced font, for which TeX practice is to refer to them as '''TypewriTer''' (=tt)
 
:* <texcode>\definefontfamily[MyFontIdentifier][tt][refcode to the monospaced font]</texcode>
 
:* for a math font, for which TeX practice is to refer to them as '''MatheMatics''' (=mm)
 
:* <texcode>\definefontfamily[MyFontIdentifier][mm][refcode to the math font]</texcode>
 
:* the limit is that in TeX practice, we only have one roman, one sans serif, per font family.
 
:* in order to use more (like variation condensed, extralight etc...) we have to define other font family (MyFontIdentifier-condensed, MyFontIdentifier-light)
 
 
 
== Example ==
 
{{TwoColumnsUnderLevel1
 
 
|
 
|
This basic input is typeset with the default font, Latin Modern:
+
=== [[Use fonts distributed with ConTeXt| Use fonts distributed with ConTeXt]] ===
<context source=yes>
+
* How to use the [[ConTeXt distribution's Fonts|21 provided fonts]].
\setupbodyfont[12pt]
+
* These are the basics you may want to start with, in 2 or 3 steps, less than 3 minutes.
{\rm    The quick brown fox jumps over the lazy dog}\\
+
|
{\rm\bf The quick brown fox jumps over the lazy dog}\\
+
=== [[Use_the_fonts_you_want| Use any other font ]] ===
{\rm\it The quick brown fox jumps over the lazy dog}\\
+
* Case 1: Quick "one shot" (< 5min.)
\\
+
* Case 2: Comprehensive approach (~10min.)
{\ss    The quick brown fox jumps over the lazy dog}\\
 
{\ss\bf The quick brown fox jumps over the lazy dog}\\
 
{\ss\it The quick brown fox jumps over the lazy dog}\\
 
\\
 
{\tt    The quick brown fox jumps over the lazy dog}\\
 
{\tt\bf The quick brown fox jumps over the lazy dog}\\
 
{\tt\it The quick brown fox jumps over the lazy dog}\\
 
</context>
 
|
 
And by adding the two lines discussed above, and using the reference to Tex Gyre Pagella Serif font (texgyrepagella) we obtain:
 
<context source=yes>
 
\definefontfamily [MyFontIdentifier] [rm] [texgyrepagella]
 
\definefontfamily [MyFontIdentifier] [ss] [texgyreadventor]
 
\definefontfamily [MyFontIdentifier] [tt] [texgyrecursor]
 
\setupbodyfont[MyFontIdentifier]
 
\setupbodyfont[12pt]
 
{\rm    The quick brown fox jumps over the lazy dog}\\
 
{\rm\bf The quick brown fox jumps over the lazy dog}\\
 
{\rm\it The quick brown fox jumps over the lazy dog}\\
 
\\
 
{\ss    The quick brown fox jumps over the lazy dog}\\
 
{\ss\bf The quick brown fox jumps over the lazy dog}\\
 
{\ss\it The quick brown fox jumps over the lazy dog}\\
 
\\
 
{\tt    The quick brown fox jumps over the lazy dog}\\
 
{\tt\bf The quick brown fox jumps over the lazy dog}\\
 
{\tt\it The quick brown fox jumps over the lazy dog}\\
 
</context>
 
 
}}
 
}}
  
= Using a newly downloaded font  =
 
  
== Quickly use one of the styles (3 steps, 1 min.) ==
+
The actual use of fonts within your document is detailed in '''[[Font Switching]]''':
 +
* how to define font size,
 +
* how to use alternative styles like regular / bold / italic / small caps
 +
* how to switch between serif, sans serif, monospaced, or to another fonts with {{cmd|switchtobodyfont}}
 +
* how to underline, strike...
  
Let's take a example, we want to use [https://fonts.google.com/specimen/Noto+Serif Noto Serif]. The google website enable us to download a zip file with the 4 alternative styles:
+
= Advanced stuff =
* Regular 400
 
* Regular 400 italic
 
* Bold 700
 
* Bold 700 italic
 
  
; #1. Store them is a dedicated folder
+
== The Manuals ==
:* create a "Noto-serif" in the ConTeXt distribution <code>tex/texmf-fonts</code>.
 
:* unzip and store the .ttf file in <code>tex/texmf-fonts/Noto-serif/</code>.
 
  
; #2. Regenerate ConTeXt databases
+
* [http://www.pragma-ade.nl/general/manuals/fonts-mkiv.pdf 2016 Fonts manual, all the details] for advanced users
:* the file database: <code>mtxrun --generate</code>
+
* [http://context.aanhet.net/svn/contextman/context-reference/en/co-fonts.pdf the 2013 font chapter] as a separate document
:* the fonts database: <code>mtxrun --script font --reload</code>
+
* [http://pmrb.free.fr/contextref.pdf#&#91;145,{%22name%22:%22Fit%22}&#93; 2013 reference manual] never officially released, with the 2013 font chapter
:* and check the situation <code>mtxrun --script font --list --file -pattern=*noto*</code>:
 
<texcode>familyname  weight  style    width    variant  fontname              filename                  subfont  fontweight
 
  
notoserif    bold    normal  normal  normal    notoserifbold        NotoSerif-Bold.ttf
+
== Deep dive into typescripts ==
notoserif    bold    italic  normal  normal    notoserifbolditalic  NotoSerif-BoldItalic.ttf
 
notoserif    normal  italic  normal  normal    notoserifitalic      NotoSerif-Italic.ttf
 
notoserif    normal  normal  normal  normal    notoserif            NotoSerif-Regular.ttf
 
</texcode>
 
  
; #3. Your are done! You can use the font anywhere on in your input files.
+
* [[Typescripts examples]] look at the existing examples to build your own Typescripts.
:* Use the commands {{cmd|definedfont}}
+
* [[Featuresets]], and here some of common option for {{cmd|definefontfeature}}
<texcode>
+
** <code>onum=yes</code> for old style numbers, vs <code>lnum=yes</code> for lining numbers
\definedfont[file:NotoSerif-BoldItalic at 12pt]
+
** <code>kern=yes</code> for kerning
The quick brown fox jumps over the lazy dog
+
** See [[Ligatures]] (2017). <code>liga=yes</code> for common ligature and <code>dlig=yes</code> for discretionary ligature (like st), <code>calt=yes</code> for contextual alternates.
</texcode>
+
** for small caps, the font must propose Caps variation like "EBGaramondSC12-Regular.otf" et "AlegreyaSC-Regular.otf"
[[File:result_of_test_with_noto-serif_one.png]]
+
** [https://helpx.adobe.com/fonts/using/open-type-syntax.html Syntax for OpenType features] from Adobe
 +
* [[Fontsize|What defines the size in a font?]] (2019)
 +
* [[Optical Size|How to set up a font family with optical size options]]
 +
* [[Protrusion]] (also known as hanging or font handling) is a more subtle typographic effect  (2012 need update).
  
== Use all the styles (3 steps, 1 min.) ==
+
* [https://source.contextgarden.net/?search=s-fonts- the source browser] for s-fonts- files, that a user can run (to get an example) or use as module for own fonts
 +
* Lua Font Goodies with examples.
  
; #1. Define them as a new typescript (ConTeXt vocabulary) in your input file.
 
:* Use the commands {{cmd|starttypescript}} and {{cmd|definefontsynonym}} to declare
 
  
<texcode>
+
Finally, for older content, refering to mkii, we keep a [[Fonts - Old Content|specific zone in the wiki]]. Work is also need to merge content of [[Fonts_in_LuaTeX]] here.
\starttypescript [serif] [notoserif]
 
  \definefontsynonym[NotoSerif-Regular]         [file:NotoSerif-Regular]
 
  \definefontsynonym[NotoSerif-Italic]          [file:NotoSerif-Italic]
 
  \definefontsynonym[NotoSerif-Bold]            [file:NotoSerif-Bold]
 
  \definefontsynonym[NotoSerif-BoldItalic]      [file:NotoSerif-BoldItalic]
 
\stoptypescript
 
</texcode>
 
  
; #2. Define them as part of your font family, here as a roman
 
<texcode>
 
\definefontfamily [MyFontIdentifier] [rm] [notoserif]
 
</texcode>
 
  
; #3. You are done! Finally, we have the following input file:
 
 
<texcode>
 
\starttypescript [serif] [notoserif]
 
  \definefontsynonym[NotoSerif-Regular]        [file:NotoSerif-Regular]
 
  \definefontsynonym[NotoSerif-Italic]          [file:NotoSerif-Italic]
 
  \definefontsynonym[NotoSerif-Bold]            [file:NotoSerif-Bold]
 
  \definefontsynonym[NotoSerif-BoldItalic]      [file:NotoSerif-BoldItalic]
 
\stoptypescript
 
 
\definefontfamily [MyFontIdentifier] [rm] [notoserif]
 
 
\setupbodyfont[MyFontIdentifier]
 
\setupbodyfont[12pt]
 
{\rm    The quick brown fox jumps over the lazy dog}\\
 
{\rm\bf The quick brown fox jumps over the lazy dog}\\
 
{\rm\it The quick brown fox jumps over the lazy dog}\\
 
</texcode>
 
 
And it gives:
 
 
[[File:result_of_test_with_noto-serif.png]]
 
 
= Next ? =
 
 
== You want to play with bigger set of font ? ==
 
 
For example, how to use the 7 weights of Noto Serif SC ?
 
* Extra-light 200
 
* Light 300
 
* Regular 400
 
* Medium 500
 
* Semi-bold 600
 
* Bold 700
 
* Black 900
 
 
You have to define specific name like
 
* \starttypescript [serif] [notoserifscextralight]
 
* \starttypescript [serif] [notoserifsclight]
 
* \starttypescript [serif] [notoserifscreg]
 
* \starttypescript [serif] [notoserifscmed]
 
 
and you will switch between each other with \switchtobodyfont[notoserifscxxx] like it's done [[ConTeXt_distribution's_Fonts#Overview| for this example of the available fonts]].
 
 
There are any ready to go typpescript file, tex/texmf-context/tex/context/fonts/mkiv/ for example :
 
* Included
 
** DejaVu with \setupbodyfont[dejavu] or condensed version with \setupbodyfont[dejavu-condensed]
 
** Gentium with \setupbodyfont[gentium]
 
** Iwona with \setupbodyfont[iwona]
 
** Kurier with \setupbodyfont[kurier]
 
** Latin Modern with \setupbodyfont[latinmodern]
 
** Gentium with \setupbodyfont[gentium]
 
* Non included
 
** Sabon MT with \setupbodyfont[sabon]
 
** Cambria with \setupbodyfont[cambria]
 
** Garamond with \setupbodyfont[ebgaramond]
 
** Zapfino MT with \setupbodyfont[zapfino]
 
** Optima Nova with \setupbodyfont[optima-nova], or \setupbodyfont[optima-nova-light] \setupbodyfont[optima-nova-medium]
 
** Palatino Nova with \setupbodyfont[palatino-nova], or \setupbodyfont[palatino-nova-light] \setupbodyfont[palatino-nova-medium], and \setupbodyfont[palatino-sans] \setupbodyfont[palatino-informal]
 
** Liberation with \setupbodyfont[liberation]
 
** Libertine with \setupbodyfont[liberatine]
 
** Lucida with \setupbodyfont[lucida-opentype]  OR \setupbodyfont[lucida]
 
** Minion with \setupbodyfont[minion]
 
** MacOSx default: baskerville, gillsans, futura, helvetica-neue and -ultralight, -light, -boldcondensed, ...
 
** IMB plex :
 
*** plex, -thin, -extralight, -light, -text, -medium, -semibold, -bold
 
*** ibmplexnarrow, -thin, -extralight, -light
 
 
 
 
 
You have to define "definefontfallback"
 
 
A quite complete example: [[Alegreya_Typescript]]
 
 
And to swith during
 
 
I want IBM Plex
 
* Sans — Thin
 
* Sans — Thin Italic
 
* Sans — Regular
 
* Sans — Regular Italic
 
* Sans — Bold
 
* Sans — Bold Italic
 
* Sans Condensed — Regular
 
* Sans Condensed — Regular Italic
 
* Serif — Regular
 
* Serif — Regular Italic
 
* Mono — Regular
 
* Mono — Regular Italic
 
 
Style : [http://context.aanhet.net/svn/contextman/context-reference/en/co-fonts.pdf#&#91;4,{%22name%22:%22Fit%22}&#93; font chapter of the reference manual]
 
 
== Already prepared typescript files ==
 
 
== I just want to use fonts of my system ==
 
 
== I want use specific features ==
 
 
* Small caps
 
* Ligatures
 
* Kerning
 
* expansion=quality
 
* protrusion=quality,
 
* other: tlig, ccmp, fonts-mkiv.pdf page 65.
 
 
 
weight light, regular, medium, bold, extra...
 
width : condensed, Semi Condensed , regular, Semi Extended , Extended
 
shape : regular, italic
 
caps : regular, smallcaps
 
 
= Liens =
 
 
* [[Style_and_Color_Parameters]]
 
 
* {{cmd|definefontfamily}}
 
* {{cmd|definefontfamily}}
 
* {{cmd|definedfont}}
 
* {{cmd|definedfont}}
  
I just have realised that \definefont requires fontname of font not identifier neither familyname.
 
 
 
{{todo|naming conventions for definefontssymonym ?}}
 
  
{{todo:How to use font from your system.}}
+
[[Category:Fonts]]

Latest revision as of 08:26, 2 July 2022


Using fonts with TeX was once a Jedi fight, before XeTeX and LuaTeX development. Nowadays, using fonts is simple.

Using fonts

You will find here the preliminary steps before actually playing with the fonts in your input file. At the end, with one or two commands, you will make your document enable to use any fonts available on your computer.



The actual use of fonts within your document is detailed in Font Switching:

  • how to define font size,
  • how to use alternative styles like regular / bold / italic / small caps
  • how to switch between serif, sans serif, monospaced, or to another fonts with \switchtobodyfont
  • how to underline, strike...

Advanced stuff

The Manuals

Deep dive into typescripts

  • the source browser for s-fonts- files, that a user can run (to get an example) or use as module for own fonts
  • Lua Font Goodies with examples.


Finally, for older content, refering to mkii, we keep a specific zone in the wiki. Work is also need to merge content of Fonts_in_LuaTeX here.