On Sat, 8 Feb 2025 at 10:00, Hans Hagen <[email protected]> wrote:
> On 2/8/2025 9:32 AM, luigi scarso wrote:
> >
> >
> > On Sat, 8 Feb 2025 at 09:09, Hironori KITAGAWA via luatex
> > <[email protected] <mailto:[email protected]>> wrote:
> >
> > Hello all,
> >
> > I found that TFM-based fonts do not scale in the development
> > version of LuaTeX:
> >
> > ----
> > \input luaotfload.sty
> > \font\la=file:lmroman10-regular.otf scaled 2000
> > \font\lb=file:lmroman10-regular.otf at 100pt
> > \font\ca=cmr10 scaled 2000
> > \font\cb=cmr10 at 100pt
> > \la abc\lb xyz % ==> OK
> > \ca abc\cb xyz % ==> typeset in 10pt
> > \bye
> > ----
> >
> > I suspect the cause is the following code of font/tfmofm.c,
> > which is introduced by a recent commit.
> > ----
> > if ((arith_error) || (z>= 01000000000)) {
> > char err[256];
> > const char *errhelp[] = {
> > "I will ignore the scaling factor.",
> > NULL
> > };
> > snprintf(err, 255, "Font scaled to 2048pt or higher");
> > tex_error(err, errhelp);
> > }
> > z = sw ;
> > arith_error = saved_arith_error;
> > }
> > ----
> >
> >
> > Ok, I am checking it.
>
> - we can change z >= 01000000000 to z > 01000000000 so that the 2048 is
> still okay but larger fonts aren't valid (for whatever reason, mostly in
> order to be compatible with other engines)
>
> - we can in addition just clip to that max and stick to a warning, no
> need to error
>
> but as a starter
>
> if ((arith_error) || (z > 01000000000)) {
>
> could work ok for those choosing 2048 or some scale that results in that
> value
>
hm I think that this is wrong
tex_error(err, errhelp);
}
z = sw ;
arith_error = saved_arith_error;
It should be
tex_error(err, errhelp);
z = sw ;
}
arith_error = saved_arith_error;
(As a weak excuse: My translation from pascalweb to C (a change file, too)
is quite rusty. Sorry.)
--
luigi