12

I updated my texlive 2017 installation on my Linux Mint 17.2 machine and since then I can't compile this minimal (not) working example. A complete reinstall (complete version) of texlive didn't change the error.


\documentclass{beamer}    
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}    
\begin{document}    
\frame{
    Hello World!
}    
\end{document}

The pdf is created and seems fine, but using METAFONT with ecss0400 fails. Changing the documentclass to scrartcl results in no error.

If I compile this MWE with pdflatex, it invokes something with ecss0400 and that fails.


Prozess gestartet: pdflatex -synctex=1 -interaction=nonstopmode -shell-escape "beispiel".tex    
kpathsea: Running mktextfm ecss0400    
mktextfm: Running mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input ecss0400

! Font T1/cmss/m/n/4=ecss0400 at 4.0pt not loadable: Metric (TFM) file not foun
d.
<to be read again> 
                   relax 
l.12 }

I wasn't able to read the size data for this font,
so I will ignore the font specification.
[Wizards can fix TFM files using TFtoPL/PLtoTF.]
You might try inserting a different font spec;
e.g., type `I\font<same font id>=<substitute font name>'.

Two additional log files are created. first the missfont.log file contains several lines of "mktextfm ecss0400".

The other file is called "ecss0400.log" and is very long, so i will only post some sections. It starts with

This is METAFONT, Version 2.7182818 (TeX Live 2017) (preloaded base=mf 2017.7.28)  28 JUL 2017 11:23
**\mode:=ljfour; mag:=1; nonstopmode; input ecss0400
(/home/ME/.texlive2017/texmf-var/fonts/source/jknappen/ec/ecss0400.mf
(/localhdd/ME/texlive/2017/texmf-dist/fonts/source/jknappen/ec/exbase.mf)
(/localhdd/ME/texlive/2017/texmf-dist/fonts/source/jknappen/ec/ecss.mf
(/localhdd/ME/texlive/2017/texmf-dist/fonts/source/jknappen/ec/exroman.mf
 Ok
(/localhdd/ME/texlive/2017/texmf-dist/fonts/source/jknappen/ec/exaccess.mf
 Ok)
(/localhdd/ME/texlive/2017/texmf-dist/fonts/source/jknappen/ec/expseudo.mf
 Ok)
(/localhdd/ME/texlive/2017/texmf-dist/fonts/source/jknappen/ec/exruwest.mf
 Ok [192] [193] [194] [195] [196] [197] [198] [199] [200] [201] [202] [203]
[204] [205] [206] [207] [208] [209] [210] [211] [212] [213] [214] [215]
[216] [217] [218] [219] [220] [221] [222] [223])
(/localhdd/ME/texlive/2017/texmf-dist/fonts/source/jknappen/ec/exrlwest.mf
 Ok [224] [225] [226] [227] [228] [229] [230] [231] [232] [233] [234] [235]
[236] [237] [238] [239] [240] [241] [242] [243] [244] [245] [246] [247]
[248] [249] [250] [251] [252]
> 0 NNE 1 NNW WNW 2 (WSW) SSW 3 (SSE ESE) ENE NNE ENE ESE SSE SSW 4 5 WSW 0 (WN
W NNW)
! Strange path (turning number is zero).
<to be read again> 
                   ;
<for(%CAPSULE10676)> ...oke.z3e---z5e...{left}z6e;
                                                  pickup.fine.nib;pos6'(bot_...
l.1012 repeat_once
                  ;
The path doesn't have a counterclockwise orientation,
so I'll probably have trouble drawing it.
(See Chapter 27 of The METAFONTbook for more help.)

There are several errors like

[184]
! Square root of -1.16454 has been replaced by 0.
diag_ratio->...((EXPR2)*((EXPR5)++(EXPR4)*sqrt.a_)
                                                  -b_*(EXPR5))/a_/(EXPR4)end...
<for(1)> ...stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3))
                                                  ;penpos1(alpha*(z_stem-tin...
l.1025 repeat_once
                  ;
Since I don't take square roots of negative numbers,
I'm zeroing this one. Proceed, with fingers crossed.

But it ends with

Font metrics written on ecss0400.tfm.
Output written on ecss0400.600gf (256 characters, 20732 bytes).

I'm currently assuming that there are errors in the font files provides by texlive. So is there anything I can do?

If I compile with lualatex everything works.

18

The beamer class, more precisely beamerbasefont.sty, has its own \DeclareFontShape for the Computer Modern/European Modern fonts.

The declarations are disputable, as the standard don't dare to choose fonts with design size below 5pt (below this threshold fonts are scaled). Compare with fix-cm.sty that does

\DeclareFontShape{T1}{cmss}{m}{n}{
        <-9>    ecss0800
        <9-10>  ecss0900
        <10-12> ecss1000
        <12-17> ecss1200
        <17->   ecss1728
      }{}

whereas beamerbasefont.sty has

\def\EC@family#1#2#3#4#5{%
  \DeclareFontShape{#1}{#2}{#3}{#4}%
  {<3><4><5><6><7><8><9><10><10.95><12><14.4>%
   <17.28><20.74><24.88><29.86><35.83><42.99><51.59>genb*#5}{}}

\EC@family{T1}{cmss}{m}{n}{ecss}

which is the culprit: when \Tiny is processed, which chooses a base font size of 4pt, TeX needs to generate ecss0400, which is not a tested design size and, indeed, its creation fails.

The package beamerfontsize.sty should be fixed not to use such small design sizes and to use instead fix-cm.sty.

Workaround: \usepackage{lmodern}.

| improve this answer | |
  • 1
    Thanks for the detailed answer and the workaround. I can confirm that \usepackage{lmodern} is solving the problem. – Jan K Jul 31 '17 at 7:06
  • I find that \usepackage{lmodern} must be placed before \usepackage{bm}, if you're using it. – kennyB Aug 30 '17 at 2:58
-1

The first question is, why on earth does this seemingly innocent file calls for a font ecss0400 which is at 4pt design size?

Unfortunately, at such a small size the METAFONT sources for the ec fonts aren't tested to work, and errors are expected to be present. This is a feature of the fonts, not a bug.

| improve this answer | |
  • 1
    The beamer class defines \Tiny and \TINY to choose base font size 4pt and 3pt respectively. Whether this is sensible is a question for the author of the class. – egreg Jul 28 '17 at 14:43
  • Moreover beamerbasefont.sty does its own \DeclareFontShape commands, in a very wrong way. – egreg Jul 28 '17 at 14:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.