# RE: bug in fontinst 1.801: rounding problems (was: duplicated ker nings)

• To: fontinst@cogs.susx.ac.uk
• Subject: RE: bug in fontinst 1.801: rounding problems (was: duplicated ker nings)
• From: Lars Hellström <Lars.Hellstrom@math.umu.se>
• Date: Mon, 5 Oct 1998 13:19:28 +0100 (MET)

Alan Jeffrey wrote:
>Gosh, what a remarkable bit of detective work, well done!
>
Actually, it was pure luck. I happend to be looking at that part of
fontinst, when a sudden "Waaaiiit a minute! What if ..." struck me. I might
have found the murder weapon, but the murderer is still to be caught.

>I guess the question is now what the fix is: peraps all generations of
>MAPFONT should go through the divide by 8 multiply by 8 again' routine to
>make sure they're all rounded.  This won't make any difference to dimens
>that have gone through the process, and will round others appropriately.
>
Actually, I would prefer it if scalings with a factor of 1000 were not made
at all. Not scaling uses less of TeX's memory and is most likely faster.

>btw, why scaling with factor 1000 occurs in the first place? :-) it
>was not requested in the test file which demonstrates a bug (and in ae
>fonts too).

Many of the metric commands requires a scaling factor. If you want to make
a glyph punctdash that is the same thing as emdash (latin.mtx does this),
you have to write

\setglyph{punctdash}
\glyph{emdash}{1000}
\endsetglyph

This is where the scaling sneaks in.

Rowland wrote:

As "present-day processors" was used, I believe the even the 68LC040 would
qualify with a margin. Its ancestor 68000 probably would not.

Finally, I would like to point out that we might also consider doing
scaling with some kind of multiple word arthimetic. To me, it seems like

\def\int_scale#1#2{
% #1 is a \count register whose contents should be scaled.
% #2 is the scaling factor. I assume it is a valid TeX <number>,
%    rather than a fontinst <integer expression>.
\a_count=#1
\b_count=\a_count
\divide \a_count 10000
\c_count=\a_count
\multiply \c_count 10000
\multiply \a_count #2
\multiply \b_count #2
\multiply \a_count 10
\divide \b_count 1000 % One could do something fancier here, to
% achieve proper rounding rather than mere
% truncation.
`