<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p><br>
</p>
<div class="moz-cite-prefix">On 4/8/22 09:37, Igor Liferenko wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAJyx360a7vYHnz=KzrmkUoUOtk4h+Dp1vzFUeUsUrNRS7=5+fg@mail.gmail.com">
<pre class="moz-quote-pre" wrap="">Dvips does not load tfm-files for fonts which are not listed in psfonts.map</pre>
</blockquote>
<p>An excerpt from Donald Knuth, Virtual Fonts: More Fun for Grand
Wizards,<br>
<a class="moz-txt-link-freetext"
href="https://tug.org/tugboat/tb11-1/tb27knut.pdf">https://tug.org/tugboat/tb11-1/tb27knut.pdf</a>:<br>
<br>
</p>
<p><span style="left: 461.601px; top: 473.557px; font-size:
16.6667px; font-family: serif; transform: scaleX(0.823375);"
role="presentation" dir="ltr">The</span><span style="left:
493.068px; top: 473.557px; font-size: 16.6667px; font-family:
serif;" role="presentation" dir="ltr"> </span><span
style="left: 503.201px; top: 473.557px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.854967);"
role="presentation" dir="ltr">idea is this:</span><span
style="left: 586.318px; top: 473.557px; font-size: 16.6667px;
font-family: serif;" role="presentation" dir="ltr"> </span><span
style="left: 599.201px; top: 473.557px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.891604);"
role="presentation" dir="ltr">For each font specified in a dvi</span><br
role="presentation">
<span style="left: 460.001px; top: 491.957px; font-size:
16.6667px; font-family: serif; transform: scaleX(0.861035);"
role="presentation" dir="ltr">file, the software looks first in
a special table to see</span><br role="presentation">
<span style="left: 460.001px; top: 512.757px; font-size:
16.6667px; font-family: serif; transform: scaleX(0.836927);"
role="presentation" dir="ltr">if the font is device-resident</span><span
style="left: 658.618px; top: 512.757px; font-size: 16.6667px;
font-family: serif;" role="presentation" dir="ltr"> </span><span
style="left: 671.201px; top: 512.757px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.860073);"
role="presentation" dir="ltr">(in which case the tfm</span><br
role="presentation">
<span style="left: 460.001px; top: 531.957px; font-size:
16.6667px; font-family: serif; transform: scaleX(0.850804);"
role="presentation" dir="ltr">file is loaded,</span><span
style="left: 555.801px; top: 531.957px; font-size: 16.6667px;
font-family: serif;" role="presentation" dir="ltr"> </span><span
style="left: 567.202px; top: 531.957px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.839776);"
role="presentation" dir="ltr">to get the character</span><span
style="left: 709.068px; top: 531.957px; font-size: 16.6667px;
font-family: serif;" role="presentation" dir="ltr"> </span><span
style="left: 722.401px; top: 531.957px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.799122);"
role="presentation" dir="ltr">widths);</span><span style="left:
777.034px; top: 531.957px; font-size: 16.6667px; font-family:
serif;" role="presentation" dir="ltr"> </span><span
style="left: 790.401px; top: 531.957px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.813396);"
role="presentation" dir="ltr">failing</span><br
role="presentation">
<span style="left: 460.001px; top: 551.957px; font-size:
16.6667px; font-family: serif; transform: scaleX(0.740898);"
role="presentation" dir="ltr">that,</span><span style="left:
489.168px; top: 551.957px; font-size: 16.6667px; font-family:
serif;" role="presentation" dir="ltr"> </span><span
style="left: 500.001px; top: 551.957px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.842505);"
role="presentation" dir="ltr">it looks for a suitable gf or pk
file; failing that,</span><br role="presentation">
<span style="left: 460.001px; top: 570.357px; font-size:
16.6667px; font-family: serif; transform: scaleX(0.849895);"
role="presentation" dir="ltr">it looks for a vf file, which may
in turn lead to other</span><br role="presentation">
<span style="left: 459.201px; top: 587.157px; font-size:
16.6667px; font-family: serif; transform: scaleX(0.837723);"
role="presentation" dir="ltr">actual or virtual</span><span
style="left: 573.118px; top: 587.157px; font-size: 16.6667px;
font-family: serif;" role="presentation" dir="ltr"> </span><span
style="left: 583.201px; top: 587.157px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.842355);"
role="presentation" dir="ltr">files. The latter</span><span
style="left: 691.851px; top: 587.157px; font-size: 16.6667px;
font-family: serif;" role="presentation" dir="ltr"> </span><span
style="left: 702.401px; top: 587.157px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.845731);"
role="presentation" dir="ltr">files should not be</span><br
role="presentation">
<span style="left: 459.201px; top: 610.357px; font-size:
16.6667px; font-family: serif; transform: scaleX(0.786431);"
role="presentation" dir="ltr">loaded</span><span style="left:
503.635px; top: 610.357px; font-size: 16.6667px; font-family:
serif;" role="presentation" dir="ltr"> </span><span
style="left: 514.401px; top: 610.357px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.816485);"
role="presentation" dir="ltr">immediately,</span><span
style="left: 601.901px; top: 610.357px; font-size: 16.6667px;
font-family: serif;" role="presentation" dir="ltr"> </span><span
style="left: 613.601px; top: 610.357px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.758007);"
role="presentation" dir="ltr">but</span><span style="left:
634.901px; top: 610.357px; font-size: 16.6667px; font-family:
serif;" role="presentation" dir="ltr"> </span><span
style="left: 645.601px; top: 610.357px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.858912);"
role="presentation" dir="ltr">only on demand,</span><span
style="left: 765.734px; top: 610.357px; font-size: 16.6667px;
font-family: serif;" role="presentation" dir="ltr"> </span><span
style="left: 778.401px; top: 610.357px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.765047);"
role="presentation" dir="ltr">because</span><br
role="presentation">
<span style="left: 459.201px; top: 630.357px; font-size:
16.6667px; font-family: serif; transform: scaleX(0.82395);"
role="presentation" dir="ltr">the process is recursive.</span><span
style="left: 629.251px; top: 630.357px; font-size: 16.6667px;
font-family: serif;" role="presentation" dir="ltr"> </span><span
style="left: 642.401px; top: 630.357px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.813036);"
role="presentation" dir="ltr">Incidentally,</span><span
style="left: 726.185px; top: 630.357px; font-size: 16.6667px;
font-family: serif;" role="presentation" dir="ltr"> </span><span
style="left: 737.601px; top: 630.357px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.817117);"
role="presentation" dir="ltr">if no resident</span><br
role="presentation">
<span style="left: 459.201px; top: 650.357px; font-size:
16.6667px; font-family: serif; transform: scaleX(0.864189);"
role="presentation" dir="ltr">or gf</span><span style="left:
493.884px; top: 650.357px; font-size: 16.6667px; font-family:
serif;" role="presentation" dir="ltr"> </span><span
style="left: 504.001px; top: 650.357px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.899819);"
role="presentation" dir="ltr">or pk or vf file is found, a tfm
file should be</span><br role="presentation">
<span style="left: 459.201px; top: 668.757px; font-size:
16.6667px; font-family: serif; transform: scaleX(0.786431);"
role="presentation" dir="ltr">loaded</span><span style="left:
503.635px; top: 668.757px; font-size: 16.6667px; font-family:
serif;" role="presentation" dir="ltr"> </span><span
style="left: 514.401px; top: 668.757px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.851388);"
role="presentation" dir="ltr">as a last resort,</span><span
style="left: 626.118px; top: 668.757px; font-size: 16.6667px;
font-family: serif;" role="presentation" dir="ltr"> </span><span
style="left: 638.401px; top: 668.757px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.817942);"
role="presentation" dir="ltr">so that</span><span style="left:
685.801px; top: 668.757px; font-size: 16.6667px; font-family:
serif;" role="presentation" dir="ltr"> </span><span
style="left: 698.401px; top: 668.757px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.790375);"
role="presentation" dir="ltr">the characters</span><span
style="left: 795.552px; top: 668.757px; font-size: 16.6667px;
font-family: serif;" role="presentation" dir="ltr"> </span><span
style="left: 809.601px; top: 668.757px; font-size: 16.6667px;
font-family: serif; transform: scaleX(0.771111);"
role="presentation" dir="ltr">can</span><br role="presentation">
<span style="left: 458.401px; top: 687.479px; font-size:
18.3333px; font-family: serif; transform: scaleX(0.79591);"
role="presentation" dir="ltr">be left blank with appropriate
widths.</span></p>
<blockquote type="cite"
cite="mid:CAJyx360a7vYHnz=KzrmkUoUOtk4h+Dp1vzFUeUsUrNRS7=5+fg@mail.gmail.com">
<pre class="moz-quote-pre" wrap="">This can be verified with this these commands:
echo 'A \bye' >x.tex
tex x
dvips -Ppdf -d -1 x 2>&1 | grep 'fopen.*tfm' # tfm is opened
dvips -Ppk -d -1 x 2>&1 | grep 'fopen.*tfm' # tfm not opened
Virtual fonts are not present in map-file.
But their metrics should be loaded, as these metrics are actually
used during the typesetting (not the metrics of underlying fonts).
Let's check:
echo '\font\ptm=ptmr7t \ptm A \bye' >y.tex
tex y
dvips -Ppk -d -1 y 2>&1 | grep 'fopen.*tfm'
We see that ptmr7t.tfm is not loaded. Why?</pre>
</blockquote>
<p>Because ptmr7t.vf is found/loaded. tfm is needed by tex, <br>
but not necessarily by dvips.<br>
</p>
<blockquote type="cite"
cite="mid:CAJyx360a7vYHnz=KzrmkUoUOtk4h+Dp1vzFUeUsUrNRS7=5+fg@mail.gmail.com">
<pre class="moz-quote-pre" wrap="">Also, which rules determine that ptmr8r.tfm is loaded? </pre>
</blockquote>
<p>If you convert vf to vpl:<br>
$ vftovp ptmr7t.vf ptmr7t.tfm ptmr7t.vpl</p>
<p>and inspect vpl file, you will see that ptmr7t font maps to MTMI
and ptmr8r fonts:<br>
(MAPFONT D 0<br>
(FONTNAME MTMI)<br>
(FONTCHECKSUM O 26441631172)<br>
(FONTAT R 1.0)<br>
(FONTDSIZE R 10.0)<br>
)<br>
(MAPFONT D 1<br>
(FONTNAME ptmr8r)<br>
(FONTCHECKSUM O 23057243327)<br>
(FONTAT R 1.0)<br>
(FONTDSIZE R 10.0)<br>
)<br>
</p>
<br>
<blockquote type="cite"
cite="mid:CAJyx360a7vYHnz=KzrmkUoUOtk4h+Dp1vzFUeUsUrNRS7=5+fg@mail.gmail.com">
<pre class="moz-quote-pre" wrap="">And if a
virtual font would
consist of more that one font, will metrics for all of them be loaded?</pre>
</blockquote>
<p>Yes, all fonts will be expanded and loaded.</p>
<p>I think the above mentioned article by DEK should answer most of
your questions. <br>
</p>
<p>- best, deimi<br>
</p>
<p><br>
</p>
</body>
</html>