Difference between revisions of "Fonts"

From Wiki
Jump to navigation Jump to search
(97 intermediate revisions by the same user 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 (2013 / 2015 ?) and LuaTeX development.
:* If required, you can [[Mtxrun#fonts| regenerate the font database]] <code>mtxrun --script font --reload --force</code>
 
  
; #2. Give a name to the set of fonts you want to use and select a first font
+
= Nowadays, Fonts are a piece of cake =  
:* 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 of available on your computer.
:* <texcode>\setupbodyfont[MyFontIdentifier]</texcode>
 
  
; #4. Specify the font size
+
{{ThreeColumnsHighlight
:* <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]].
 
 
 
== Example ==
 
{{TwoColumnsUnderLevel1
 
 
|
 
|
Let see what give the defaults:
+
=== [[Use_fonts_provided_with_ConTeXt|#1 Use fonts provided with ConTeXt]] ===
<context source=yes>
+
Really the basics, in 2 or 3 steps, less than 1 minute.
\setupbodyfont[12pt]
+
|
{The quick brown fox jumps over the lazy dog}\\
+
=== [[Use fonts found on the web|#2 Use fonts found on the web]] ===
{\bf The quick brown fox jumps over the lazy dog}\\
+
Also the basics, in 2 or 3 steps, less than 5 minutes.
{\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):
+
=== [[Use_fonts_of_your_Operating_System|#3 Use fonts of your Operating System]] ===
<context source=yes>
+
Few preliminary commands, then it's as easy as '''#2'''
\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.
+
The actual use of fonts within your document are details in [[Font_Switching]]:
:* for a Sans Serif font, for which TeX practice is to refer to them as '''Sans Serif''' (=ss)
+
* how to define font size,  
:* <texcode>\definefontfamily[MyFontIdentifier][ss][refcode to the sans serif font]</texcode>
+
* how to use alternative styles like regular / bold / italic / small caps
:* for a monospaced font, for which TeX practice is to refer to them as '''TypewriTer''' (=tt)
+
* how to switch between serif, sans serif, monospaced, or to another fonts with {{cmd|switchtobodyfont}}
:* <texcode>\definefontfamily[MyFontIdentifier][tt][refcode to the monospaced font]</texcode>
+
* how to underline, strike...
:* 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 ==
+
= Advanced stuff =
{{TwoColumnsUnderLevel1
 
|
 
This basic input is typeset with the default font, Latin Modern:
 
<context source=yes>
 
\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>
 
|
 
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>
 
}}
 
  
= How to use my new font: 6 steps, 3 minutes =
+
{{todo| continue to link with existing and up-to-date wiki material + references to manuals + improve structure}}
  
Let's take a example, we want to use [https://fonts.google.com/specimen/Noto+Serif Noto Serif].
+
== A little bit further ==
  
; #1. Download
+
Vocabulary, What is the scope of ==> reference to manuals pages ?
:*The google website enable us to download a zip file with the 4 alternative styles:
+
* a font
:** Regular 400
+
* a style
:** Regular 400 italic
+
* a fontfamily
:** Bold 700
+
* a typeface
:** Bold 700 italic
+
* a typescript
 +
* a typescriptcollection
  
; #2. Store them is a dedicated folder
+
How to work with fonts which include:
:* create a "Noto-serif" in the ConTeXt distribution <code>tex/texmf-fonts</code>.
+
* different weights (light, extra-light, dark, extra-bold)
:* unzip and store the .ttf file in <code>tex/texmf-fonts/Noto-serif/</code>.
+
* different widths (condensed, expanded)
 +
* different style (inline, shadowed, outline)
 +
* [[Fontsize|What defines the size in a font?]] (2019)
 +
* [[Optical Size]] ('''!!! WARNING !!!''' 2010 = TO KEEP OR NOT ?)
  
; #3. Regenerate ConTeXt databases
+
== Deep dive into typescripts ==
:* the file database:  <code>mtxrun --generate</code>
 
:* the fonts database: <code>mtxrun --script font --reload</code>
 
  
; #4. Check if the 4 files are identified by ConTeXt now:
+
* [https://source.contextgarden.net/?search=type-imp- the source browser] for type-imp- files.
:* <code>mtxrun --script font --list --file -pattern=*noto*</code>
+
* [[Alegreya Typescript]]: a quite complete example (2019), MkIV for the Alegreya fonts by Huerta Tipográfica / Juan Pablo del Peral, downloadable from [https://fonts.google.com/?query=Alegreya Google Fonts].
 +
* [[Fraktur_fonts|Summary of experiences of three Fraktur]] (2019)
 +
* [[Typescripts_examples]] (Cf Thomas Hala)
 +
* Using Font Fallbacks (and perhaps a different page for Fallbacks for math fonts)
 +
* Creating virtual math fonts from type 1 fonts (still needed?)
  
; #5. Define them as a new typescript (ConTeXt vocabulary) in your input file.
+
== Activate fonts features ==
:* Use the commands {{cmd|starttypescript}} and {{cmd|definefontsynonym}} to declare
 
  
<texcode>
+
* Small caps
\starttypescript [serif] [notoserif]
+
* [[Ligatures]] (2017)
  \definefontsynonym[NotoSerif-Regular]        [file:NotoSerif-Regular]
+
* protrusion
  \definefontsynonym[NotoSerif-Italic]          [file:NotoSerif-Italic]
+
* old style numbers
  \definefontsynonym[NotoSerif-Bold]            [file:NotoSerif-Bold]
+
* Kerning
  \definefontsynonym[NotoSerif-BoldItalic]      [file:NotoSerif-BoldItalic]
+
* [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
\stoptypescript
+
* Lua Font Goodies with examples.
</texcode>
 
 
 
; #6. Define them as part of your font family, here as a roman
 
<texcode>
 
\definefontfamily [MyFontIdentifier] [rm] [notoserif]
 
</texcode>
 
 
 
 
 
Finally, we have:
 
 
 
<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]].
 
 
 
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
 
 
== 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.
 
  
 +
* Font chapter of the reference manual
 +
** [http://www.pragma-ade.com/general/manuals/cont-enp.pdf#&#91;106,{%22name%22:%22Fit%22}&#93; 2001 reference manual] ('''!!! WARNING !!!''' TO KEEP OR NOT TO KEEP)
 +
** [http://pmrb.free.fr/contextref.pdf#&#91;145,{%22name%22:%22Fit%22}&#93; 2013 reference manual] never officially released, with a font chapter
 +
** [http://context.aanhet.net/svn/contextman/context-reference/en/co-fonts.pdf the 2013 font chapter] as a separate document
  
  
{{todo|naming conventions for definefontssymonym ?}}
 
  
{{todo:How to use font from your system.}}
+
* {{cmd|definefontfamily}}
 +
* {{cmd|definedfont}}

Revision as of 20:50, 1 June 2020


Using fonts with TeX was once a Jedi fight, before (2013 / 2015 ?) and LuaTeX development.

Nowadays, Fonts are a piece of cake

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 of available on your computer.


The actual use of fonts within your document are details 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


TODO: continue to link with existing and up-to-date wiki material + references to manuals + improve structure (See: To-Do List)


A little bit further

Vocabulary, What is the scope of ==> reference to manuals pages ?

  • a font
  • a style
  • a fontfamily
  • a typeface
  • a typescript
  • a typescriptcollection

How to work with fonts which include:

  • different weights (light, extra-light, dark, extra-bold)
  • different widths (condensed, expanded)
  • different style (inline, shadowed, outline)
  • What defines the size in a font? (2019)
  • Optical Size (!!! WARNING !!! 2010 = TO KEEP OR NOT ?)

Deep dive into typescripts

Activate fonts features

  • Small caps
  • Ligatures (2017)
  • protrusion
  • old style numbers
  • Kerning
  • 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.