help with Sabon

Lars Hellström Lars.Hellstrom@math.umu.se
Sun, 16 Sep 2001 22:54:49 +0200


At 01.25 +0200 2001-09-16, Fernando Gouvea wrote:
>4) I get an error message:
>
> (d:/TeX/texmf/tex/fontinst/etx/8r.etx
>Warning: \ligature for unknown slot `ffi'.
>Warning: \ligature for unknown slot `ffl'.
>Warning: \ligature for unknown slot `fi'.
>Warning: \ligature for unknown slot `ff'.
>Warning: \ligature for unknown slot `fl'.
>) (d:/TeX/texmf/tex/fontinst/etx/8r.etx)
>Font written on psbrc8r.pl.
>INFO> run \installfont <psbrc7t><psbrc8r,latin><OT1><OT1><psb><m><sc>
>(./psbrc8r.mtx) (d:/TeX/texmf/tex/fontinst/mtx/latin.mtx
>! Missing number, treated as zero.
><to be read again>
>                   \setsomething_global
>\x_resetint ...etsomething_global \ifnum \result <
>                                                  \max_mathchardef \ifnum
>						  0>...
>
>\setint ...ifx {i-#1}\x_relax \x_resetint {#1}{#2}
>                                                  \fi
>l.141 \setint{descender}{\depth{g}}
>
>5) This seems to mean that fontinst is looking for a character "g" to find
>its depth, but since this is a small caps font there is no g, only a
>Gsmall.

You're quite right about what goes wrong here. I hadn't realized before
that \width, \depth, etc. fails in such an ugly manner when the glyph isn't
defined; something ought to be done about that (if it doesn't slow things
down too much). It's also clear that latin.mtx is buggy there; it should
check if the glyph is defined first. I suspect that these integers are
usually already set when you get to that piece of code and that this has
hidden the bug (since fontinst then never tries to evaluate \depth{g}).

>So: what am I doing wrong?

As far as I can see, nothing in particular. You can try to mend latin.mtx
by replacing

\setint{xheight}{\height{x}}
\setint{capheight}{\height{A}}
\setint{ascender}{\height{d}}
\setint{descender}{\depth{g}}

by e.g.

\ifisglyph{x}\then
   \setint{xheight}{\height{x}}
\else
   \setint{xheight}{500}
\fi

\ifisglyph{X}\then
   \setint{capheight}{\height{X}}
\else
   \setint{capheight}{750}
\fi

\ifisglyph{d}\then
   \setint{ascender}{\height{d}}
\else
   \ifisint{capheight}\then
        \setint{ascender}{\int{capheight}}
   \else
        \setint{ascender}{750}
\fi\fi

\ifisint{descender_neg}\then
  \setint{descender}{\neg{\int{descender_neg}}}
 \else
    \ifisglyph{p}\then
      \setint{descender}{\depth{p}}
   \else
      \setint{descender}{250}
   \fi
\fi

(these commands were copied from t1.etx).

At 01.55 +0200 2001-09-16, Fernando Gouvea wrote:
>I've made a bit of progress. Removing the psbrc8a.afm/pfb files seems to
>make the thing run (presumably using psbrcj instead?). But I'm not sure
>I know the correct incantation for the dvips pfonts.map file. What I have
>now doesn't seem to be picking up the oldstyle numbers at all.

You could try using the map file fragment writer, even though I can assure
you that it understands much less than you do. It's described in Subsection
3.4 of the fontinst v1.9 source.

>The
>sabon.sty file says to load "psb" as default roman; should it be "psbj"
>instead?

If you want it to make that family the default, then quite clearly yes. If
you want to be more advanced you could consider adding an option to the
package which lets you choose.

Lars Hellström