Difference between revisions of "Fonts"

From Wiki
Jump to navigation Jump to search
(Created page with " ConTeXt distribution's Fonts")
 
(76 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
= How to use one of the provided fonts: 4 steps, 10 sec. =
  
[[ConTeXt distribution's Fonts]]
+
; #1. First, be aware of the [[ConTeXt distribution's Fonts|21 fonts provided]] and their "nickname".
 +
:* 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
 +
:* 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
 +
:* Use the command with {{cmd|setupbodyfont}}
 +
:* <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]].
 +
 
 +
== 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:
 +
<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 =
 +
 
 +
Let's take a example, we want to use [https://fonts.google.com/specimen/Noto+Serif Noto Serif].
 +
 
 +
; #1. Download
 +
:*The google website enable us to download a zip file with the 4 alternative styles:
 +
:** Regular 400
 +
:** Regular 400 italic
 +
:** Bold 700
 +
:** Bold 700 italic
 +
 
 +
; #2. Store them is a dedicated folder
 +
:* 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>.
 +
 
 +
; #3. Regenerate ConTeXt databases
 +
:* 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:
 +
:* <code>mtxrun --script font --list --file -pattern=*noto*</code>
 +
 
 +
; #5. Define them as a new typescript (ConTeXt vocabulary) in your input file.
 +
:* Use the commands {{cmd|starttypescript}} and {{cmd|definefontsynonym}} to declare
 +
 
 +
<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
 +
</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.
 +
 
 +
 
 +
 
 +
{{todo|naming conventions for definefontssymonym ?}}
 +
 
 +
{{todo:How to use font from your system.}}

Revision as of 21:09, 31 May 2020

How to use one of the provided fonts: 4 steps, 10 sec.

#1. First, be aware of the 21 fonts provided and their "nickname".
#2. Give a name to the set of fonts you want to use and select a first font
  • Use the command \definefontfamily.
  • Let's take an example, for a Serif font, for which TeX practice is to refer to them as roman (=rm)
  • \definefontfamily[MyFontIdentifier][rm][nickname of the serif font]
#3. Declare it as your default font family for your document
#4. Specify the font size
  • \setupbodyfont[xxpt]

To learn how to use different alternative styles of a given font, like regular / bold / italic, see the Font_Switching in the Basics.

Example

  • Let see what give the defaults:
    \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}\\
    
  • And let's add the two lines, using Tex Gyre Pagella Serif font (ref:texgyrepagella):
    \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}\\
    

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)
  • \definefontfamily[MyFontIdentifier][ss][refcode to the sans serif font]
  • for a monospaced font, for which TeX practice is to refer to them as TypewriTer (=tt)
  • \definefontfamily[MyFontIdentifier][tt][refcode to the monospaced font]
  • for a math font, for which TeX practice is to refer to them as MatheMatics (=mm)
  • \definefontfamily[MyFontIdentifier][mm][refcode to the math font]
  • 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

  • This basic input is typeset with the default font, Latin Modern:
    \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}\\
    
  • And by adding the two lines discussed above, and using the reference to Tex Gyre Pagella Serif font (texgyrepagella) we obtain:
    \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}\\
    

How to use my new font: 6 steps, 3 minutes

Let's take a example, we want to use Noto Serif.

#1. Download
  • The google website enable us to download a zip file with the 4 alternative styles:
    • Regular 400
    • Regular 400 italic
    • Bold 700
    • Bold 700 italic
#2. Store them is a dedicated folder
  • create a "Noto-serif" in the ConTeXt distribution tex/texmf-fonts.
  • unzip and store the .ttf file in tex/texmf-fonts/Noto-serif/.
#3. Regenerate ConTeXt databases
  • the file database: mtxrun --generate
  • the fonts database: mtxrun --script font --reload
#4. Check if the 4 files are identified by ConTeXt now
  • mtxrun --script font --list --file -pattern=*noto*
#5. Define them as a new typescript (ConTeXt vocabulary) in your input file.
\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
#6. Define them as part of your font family, here as a roman
\definefontfamily [MyFontIdentifier] [rm] [notoserif]


Finally, we have:

\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}\\

And it gives:

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 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.



TODO: naming conventions for definefontssymonym ? (See: To-Do List)


Template:todo:How to use font from your system.