Projekt: Hesla Jednoty bratrské/Jannon

Z Wikiverzity

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