Projekt: Hesla Jednoty bratrské/Jannon

Instalace řezu Jannon Text Moderne do TeXu.

Teorie editovat

Volba řezu editovat

V souboru maker si volím použitý font:

% fonty
\input ofs [sjannon] \loadingenc=1  % Olšákův fontový systém, ke stáhnutí na: ftp://math.feld.cvut.cz/pub/olsak/ofs/
% Moved to: http:/petr.olsak.net/ftp/olsak/ofs/
% \input ofs [sjbasker]             % (pro případ Baskerville)   
\setfonts [JannonTextModerne/10pt]  % základní font pro Hesla
% \setfonts [JBaskervilleText/10pt] %
% \setfonts [ComputerModern/10pt]   %

Pokud příslušný řez nemám nainstalovaný, dostanu v logu chybovou hlášku:

 This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdfcsplain 2019.3.4)  16 MAR 2019 13:21
entering extended mode
 restricted \write18 enabled.
 %&-line parsing enabled.
 encTeX v. Jun. 2004, reencoding enabled
**hesla20.tex
(./hesla20.tex The format: csplain <Apr. 2016>.
The cs-fonts are preloaded and A4 size implicitly defined.
The utf8->iso8859-2 re-encoding of Czech+Slovak alphabet activated by encTeX
(/usr/share/texlive/texmf-dist/tex/generic/ofs/ofs.tex
OFS (Olsak's Font System) based on plain initialized. <May 2004>
\loadingenc=\count28

(/usr/share/texlive/texmf-dist/tex/generic/ofs/ofsdef.tex))
! I can't find file `sjannon'.
\next ... ^^X#1\let \next =\relax \else \input #1
                                                  \fi \next
\readOFSoptions ...xt =\processOFSoption \next #1,
                                                  ^^X,
l.22 \input ofs [sjannon]
                          \loadingenc=1  % Olšákův fontový systém, ke s...

Pokud bylo (na starším počítači HP EliteBook 8530w) vše správně nainstalováno, bylo v logu:

This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015/Debian) (preloaded format=pdfcsplain 2018.10.13)  16 MAR 2019 14:03
entering extended mode
 restricted \write18 enabled.
 %&-line parsing enabled.
 encTeX v. Jun. 2004, reencoding enabled
**hesla20.tex
(./hesla20.tex The format: csplain <Jan. 2016a>.
The cs-fonts are preloaded and A4 size implicitly defined.
The utf8->iso8859-2 re-encoding of Czech+Slovak alphabet activated by encTeX
(/home/petr/.texmf-var/tex/csplain/ofs.tex
OFS (Olsak's Font System) based on plain initialized. <May 2004>
\loadingenc=\count28

(/home/petr/.texmf-var/tex/csplain/ofsdef.tex))
(/home/petr/.texmf-var/tex/csplain/storm/sjannon.tex
(/home/petr/.texmf-var/tex/csplain/storm/stormenc.tex
(/home/petr/.texmf-var/tex/csplain/enc/ofs-8z.tex
OFS (l.12): Characters + accents of 8z encoding defined.
)
OFS (l.15): Characters + accents of fonts by Storm Type Foundry defined.
OFS (l.22): "\copyright" is defined already, \characterdef ignored.
OFS (l.125): "\P" is defined already, \characterdef ignored.
OFS (l.128): "\copyright" is defined already, \characterdef ignored.
))
OFS (l.24): Font family JannonTextModerne at10pt (enc=8z) activated:

(/home/petr/.texmf-var/tex/csplain/enc/ofs-6s.tex
OFS (l.14): Characters + accents of fonts by Storm Type Foundry defined.
)
OFS (l.24):  \rm () \bf (Bold) \it (Italic) \bi (BoldItalic)
OFS (l.28): Define \mesf as \setfonts [-bf/14pt].
OFS (l.29): Define \dencf as \setfonts [-bf/mag1.0].
OFS (l.30): Define \denf as \setfonts [-bf/mag1.0].
OFS (l.32): Define \pisenf as \setfonts [-it/8.5pt].
OFS (l.33): Define \cislopisnef as \setfonts [-rm/8.5pt].
OFS (l.34): Define \svatf as \setfonts [-bf/mag1.0].
OFS (l.35): Define \vyznamf as \setfonts [-it/mag1.0].
OFS (l.36): Define \zdrojf as \setfonts [-it/mag1.0].
OFS (l.37): Define \vysf as \setfonts [-rm/mag1.0].
OFS (l.38): Define \vyrocif as \setfonts [-it/8pt].
OFS (l.39): Define \reklf as \setfonts [-it/mag1.0].
OFS (l.40): Define \nadf as \setfonts [-bf/14pt].
OFS (l.41): Define \adrif as \setfonts [-it/mag1.0].
OFS (l.42): Define \tirf as \setfonts [/8.5pt].
OFS (l.43): Define \smallf as \setfonts [/8.5pt].
OFS (l.44): Define \citatf as \setfonts [-it/8.5pt].
OFS (l.45): Define \autorf as \setfonts [-it/8.5pt].
OFS (l.46): Define \monof as \setfonts [-tt/8.5pt].

cs hyphenation used (\language=5). \frenchspacing is set on.
\pismobox=\box16
\zahskip=\dimen16
\linkaw=\dimen17
\oddpagehoffset=\dimen18
\evenpagehoffset=\dimen19
\heslonum=\count29
\cteninum=\count30
\datumbox=\box17
 (./hes2001.tex
[2{/home/petr/.texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
OFS (l.6): Loading single font JannonTextModerne-bf at14pt (enc=8z).
OFS (l.9): Loading single font JannonTextModerne-it at10.0pt (enc=8z).
OFS (l.11): Loading single font JannonTextModerne-it at8.5pt (enc=8z).
OFS (l.13): Loading single font JannonTextModerne-bf at10.0pt (enc=8z).
... atd.

Adresáře editovat

Po dřívější instalaci TeX Live 2017 mám v domácím adresáři podadresář:

~/.texlive2017

a v něm podadresář

~/.texlive2017/texmf-var

atd. až

~/.texlive2017/texmf-var/fonts/tfm

Celá instalace má necelých 10 MB. Instalovat budeme do adresáře:

~/.texlive2017/texmf-var/fonts

Zde pak budeme mít podadresáře:

./enc
./map
./tfm
./type1

enc editovat

./enc/dvips/cs/*.enc

Encoding vektory: stormex.enc, stormex2.enc, stormex3.enc, storml2.enc, stormt1.enc (5 souborů)

Odpovídá kódování:

  • StormExEncoding – Extra characters
  • StormEx2Encoding – Extra characters
  • StormEx3Encoding – Extra characters
  • StormL2Encoding – upperset of XL2 encoding
  • StormT1Encoding – very similar to standard T1 encoding

map editovat

./map/dvips/cs/storm.map

Propojení Encoding vektorů s 8bitovými metrikami TFM *.map – textový soubor, 12 řádků:

%%% Jannon Text
sjnrg8z JannonTextModerne "StormL2Encoding ReEncodeFont" <storml2.enc <jannontm.pfb
sjnbg8z JannonTextModerne-Bold "StormL2Encoding ReEncodeFont" <storml2.enc <jannotmb.pfb
sjnrig8z JannonTextModerne-Italic "StormL2Encoding ReEncodeFont" <storml2.enc <jannotmi.pfb
sjnbig8z JannonTextModerne-BoldItalic "StormL2Encoding ReEncodeFont" <storml2.enc <janntmbi.pfb
sjnrg8t JannonTextModerne "StormT1Encoding ReEncodeFont" <stormt1.enc <jannontm.pfb
sjnbg8t JannonTextModerne-Bold "StormT1Encoding ReEncodeFont" <stormt1.enc <jannotmb.pfb
sjnrig8t JannonTextModerne-Italic "StormT1Encoding ReEncodeFont" <stormt1.enc <jannotmi.pfb
sjnbig8t JannonTextModerne-BoldItalic "StormT1Encoding ReEncodeFont" <stormt1.enc <janntmbi.pfb
sjnrg6s JannonTextModerne "StormExEncoding ReEncodeFont" <stormex.enc <jannontm.pfb
sjnbg6s JannonTextModerne-Bold "StormExEncoding ReEncodeFont" <stormex.enc <jannotmb.pfb
sjnrig6s JannonTextModerne-Italic "StormExEncoding ReEncodeFont" <stormex.enc <jannotmi.pfb
sjnbig6s JannonTextModerne-BoldItalic "StormExEncoding ReEncodeFont" <stormex.enc <janntmbi.pfb

tfm editovat

./tfm/storm/sjn*.tfm

Viz w:en: TeX font metric

20 souborů:

  • ./sjnbg6s.tfm
  • ./sjnbg8t.tfm
  • ./sjnbg8z.tfm
  • ./sjnbig6s.tfm
  • ./sjnbig8t.tfm
  • ./sjnbig8z.tfm
  • ./sjnrg6s.tfm
  • ./sjnrg8t.tfm
  • ./sjnrg8z.tfm
  • ./sjnrig6s.tfm
  • ./sjnrig8t.tfm
  • ./sjnrig8z.tfm
  • ./sjntmbi8t.tfm
  • ./sjntmbi8z.tfm
  • ./sjntmb8t.tfm
  • ./sjntmb8z.tfm
  • ./sjntmri8t.tfm
  • ./sjntmri8z.tfm
  • ./sjntmr8t.tfm
  • ./sjntmr8z.tfm

type1 editovat

./type1

Type1 = obvyklý formát fontů v PostScriptu.

Soubory:

  • ./jannontm.pfb – regular, 397 glyfů
  • ./jannotmb.pfb – bold, 394 glyfů
  • ./jannotmi.pfb – italics, 404 glyfů
  • ./janntmbi.pfb – bold italics, 399 glyfů

Info:

Soubory lze jej otevřít např. utilitou Fonty, která je i umožní nainstalovat do systému:

gnome-font-viewer --version
  Prohlížeč fontů GNOME 3.28.0

Zahučí všech 8 jader a běží: Web Content, což moc nechápu:

2688 ?        Rl     2:30 /usr/lib/firefox/firefox -contentproc -childID 5 -isForBrowser -prefsLen 7350 -prefMapSize 177585 -parentBuildID 20190410105841 -greomni /usr/lib/firefox/omni.ja -

Upravovat se dají např. pomocí w:en: FontForge

Poznámky editovat

./map/.../updmap/*.map

Tady v těch souborech se píše: maintained by the script updmap. Don't change this file directly. Edit texmf/web2c/updmap.cfg and run updmap to recreate this file. Tak je otázka, jestli to s tím jannonem neudělat také.

./pk/modeless/storm

Asi metafonty. Udělá se nějak samo – prázdné podadresáře

Instalace editovat

Soubory editovat

Zkopíruji příslušné soubory do příslušných adresářů:

.texmf-var/fonts/enc/dvips/cs:
stormex.enc
stormex2.enc
stormex3.enc
storml2.enc
stormt1.enc

.texmf-var/fonts/map/dvips/cs:
storm.map

.texmf-var/fonts/tfm/storm:
sjnbg6s.tfm
sjnbg8t.tfm
sjnbg8z.tfm
sjnbig6s.tfm
sjnbig8t.tfm
sjnbig8z.tfm
sjnrg6s.tfm
sjnrg8t.tfm
sjnrg8z.tfm
sjnrig6s.tfm
sjnrig8t.tfm
sjnrig8z.tfm
sjntmbi8t.tfm
sjntmbi8z.tfm
sjntmb8t.tfm
sjntmb8z.tfm
sjntmri8t.tfm
sjntmri8z.tfm
sjntmr8t.tfm
sjntmr8z.tfm

.texmf-var/fonts/type1/storm:
jannontm.pfb
jannotmb.pfb
jannotmi.pfb
janntmbi.pfb

Kouzla editovat

Jak se dá očekávat, překopíroání souborů nestačí, nutno udělat ještě několik kouzel, aby TeX našel ty soubory, které potřebuje atd.

texhash editovat

Asi to bude to samé jako:

mktexlsr - create ls-R databases

mktexlsr is used to generate the ls-R databases used by the kpathsea library. It will create them for the specified directories, or for a default list if no directories are specified

sudo texhash
   texhash: Updating /usr/local/share/texmf/ls-R... 
   texhash: Updating /var/lib/texmf/ls-R-TEXLIVEDIST... 
   texhash: Updating /var/lib/texmf/ls-R-TEXMFMAIN... 
   texhash: Updating /var/lib/texmf/ls-R... 
   texhash: Done.

Nepomohlo.

pdfcsplain hesla20.tex

zase hlásí:

! I can't find file `sjannon'.

Zřejmě to vyvolal řádek:

\input ofs [sjannon] \loadingenc=1

Tak hledám a na svém starém počítači nacházím:

~/.texmf-var/tex/csplain/storm/sjannon.tex

Takže ještě raději hledám všechny stormy a ještě tam nacházím:

~/.texmf-var/tex/csplain/storm/stormenc.tex

Tak nakopíruji oba. A funguje, ani netřeba znova spouštět texhash

updmap editovat

Netřeba použít. (Naopak, posledně se tím něco pomrvilo.)

mktexpk editovat

Tak ještě není všem problémům konec, pdfcsplain projel všech 128 stránek Hesel a nakonec zahlásil:

This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdfcsplain)
 restricted \write18 enabled.
entering extended mode
 encTeX v. Jun. 2004, reencoding enabled.
(./hesla20-mesice.tex The format: csplain <Apr. 2016>.
The cs-fonts are preloaded and A4 size implicitly defined.
The utf8->iso8859-2 re-encoding of Czech+Slovak alphabet activated by encTeX
(/usr/share/texlive/texmf-dist/tex/generic/ofs/ofs.tex
OFS (Olsak's Font System) based on plain initialized. <May 2004>
(/usr/share/texlive/texmf-dist/tex/generic/ofs/ofsdef.tex))
(/home/petr/.texlive2017/texmf-var/tex/csplain/storm/sjannon.tex
(/home/petr/.texlive2017/texmf-var/tex/csplain/storm/stormenc.tex
(/usr/share/texlive/texmf-dist/tex/generic/ofs/ofs-8z.tex)))
(/usr/share/texlive/texmf-dist/tex/generic/ofs/ofs-6s.tex)
cs hyphenation used (\language=5). \frenchspacing is set on. (./hes2001.tex
[2{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [3]
WARNING: unknown UTF-8 code: `– = ^^e2^^80^^93' (line: 92) [4] [5] [6]
[7] [8] [9]
Underfull \hbox (badness 2426) in paragraph at lines 348--350
[]\JannonTextModerne-bf/at10.0pt 25.sobota \JannonTextModerne-rm/at10pt Což-pa
k ne-víš? Což-pak jsi nesly-šel?
[10] [11]) (./hes2002.tex [12] [13] [14] [15] [16] [17] [18] [19] [20] [21]
[22]) (./hes2003.tex [23] [24] [25] [26] [27]
WARNING: unknown UTF-8 code: `– = ^^e2^^80^^93' (line: 178) [28] [29]
[30] [31] [32] [33]) (./hes2004.tex [34] [35] [36] [37] [38] [39] [40] [41]
[42] [43] [44]) (./hes2005.tex [45] [46] [47] [48] [49] [50] [51] [52] [53]
[54] [55]) (./hes2006.tex [56] [57] [58] [59] [60] [61] [62] [63] [64])
(./hes2007.tex [65] [66] [67] [68] [69] [70] [71] [72] [73] [74])
(./hes2008.tex [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85])
(./hes2009.tex [86] [87] WARNING: unknown UTF-8 code: `Ć =
^^c4^^86' (line: 91) [88] [89] [90] [91] [92] [93] [94] [95]) (./hes2010.tex
[96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106]) (./hes2011.tex
[107] [108] [109] [110] [111] [112] [113] [114] [115] [116]) (./hes2012.tex
[117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127]) [128] )

kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 0+480/600 --dpi 480 sjnrig8z
mktexpk: don't know how to create bitmap font for sjnrig8z.
mktexpk: perhaps sjnrig8z is missing from the map file.
kpathsea: Appending font creation commands to missfont.log.
(see the transcript file for additional information)
!pdfTeX error: pdfcsplain (file sjnrig8z): Font sjnrig8z at 480 not found
 ==> Fatal error occurred, no output PDF file produced!

Tak co teď s tím?

V souboru ./map/dvips/cs/storm.map mám řádek:

sjnrig8z JannonTextModerne-Italic "StormL2Encoding ReEncodeFont" <storml2.enc <jannotmi.pfb

Pak tu mám soubor: ./tfm/storm/sjnrig8z.tfm

Pak ale nerozumím té hlášce: mktexpk: perhaps sjnrig8z is missing from the map file.

Co dělá mktexpk?

man mktexpk

mktexpk - create a PK file for a font
mktexpk is used to generate a pk file from the Metafont source files or type1 sources for font, if possible.

Co je to takévé PK file?

Co v logu? Nic více, než bylo řečeno:

!pdfTeX error: pdfcsplain (file sjnrig8z): Font sjnrig8z at 480 not found
 ==> Fatal error occurred, no output PDF file produced!

Jo ještě se mi tu objevil soubor missfont.log:

mktexpk --mfmode / --bdpi 600 --mag 0+480/600 --dpi 480 sjnrig8z
mktexpk --mfmode / --bdpi 600 --mag 0+480/600 --dpi 480 sjnrig8z

Tak něco mu asi ještě chybělo. Nevím co. Zkrátka jsem do adresáře ~/texmf-var strčil vše, co jsem měl na starém počítači v adresáři ~/.texmf-var, a vše běží jako po drátku. Kdybych to udělal rovnou, ušetřil jsem si půlden práce a nemusel jsem nad ničím koumat, když by to fungovalo bez dalšího přemýšlení.