On Mon, May 30, 2005 at 06:05:40PM +0200, Dr. Werner Fink wrote: > Hi, > > just found out that `dvips -Ppdf' catch an error: > > werner/Tests> mktexpk --mfmode dpdfezzz --bdpi 8000 --mag 1+0/8000 --dpi > 8000 tcrm1000 > mktexpk: Running mf-nowin -progname=mf \mode:=dpdfezzz; mag:=1+0/8000; > nonstopmode; input tcrm1000 > This is METAFONT, Version 2.71828 (Web2C 7.5.4) > ! Enormous number has been reduced. > <*> \mode:=dpdfezzz; mag:=1+0/8000 > ; nonstopmode; input tcrm1000 > ? > ! Emergency stop. > <*> \mode:=dpdfezzz; mag:=1+0/8000 > ; nonstopmode; input tcrm1000 > Transcript written on mfput.log. > grep: tcrm1000.log: No such file or directory > mktexpk: `mf-nowin -progname=mf \mode:=dpdfezzz; mag:=1+0/8000; > nonstopmode; input tcrm1000' failed to make tcrm1000.8000pk. > werner/Tests> > > A workaround would be a recalculation of the 0/8000 value, just like > done with > > werner/Tests> mktexpk --mfmode dpdfezzz --bdpi 8000 --mag '1+0/(4000*2)' > --dpi 8000 tcrm1000 > > comments?
I've atached a simple fix Werner -- "Having a smoking section in a restaurant is like having a peeing section in a swimming pool." -- Edward Burr
--- texk/kpathsea/tex-make.c +++ texk/kpathsea/tex-make.c 2005-06-02 12:38:14.000000000 +0000 @@ -55,7 +55,25 @@ (void) kpse_magstep_fix (dpi, bdpi, &m); if (m == 0) - sprintf (q, "%d+%d/%d", dpi / bdpi, dpi % bdpi, bdpi); + { + if (bdpi <= 4000) + sprintf (q, "%u+%u/%u", dpi / bdpi, dpi % bdpi, bdpi); + else + { + unsigned f = bdpi/4000; + unsigned r = bdpi%4000; + + if (f > 1) + { + if (r > 0) + sprintf (q, "%u+%u/(%u*%u + %u)", dpi/bdpi, dpi%bdpi, f, (bdpi - r)/f, r); + else + sprintf (q, "%u+%u/(%u*%u)", dpi/bdpi, dpi%bdpi, f, bdpi/f); + } + else + sprintf (q, "%u+%u/(%u + %u)", dpi/bdpi, dpi%bdpi, bdpi, r); + } + } else { /* m is encoded with LSB being a ``half'' bit (see magstep.h). Are we making an assumption here about two's complement? Probably.