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