[comp.text.tex] Problem building font

neubauer@bsu-ucs.uucp (Paul Neubauer) (09/12/90)

I apologize for the large size of this posting, but I thought that some of the
detail might be helpful.

I have been trying to build the IPA fonts from the ymir archives.  I have
acquired all of the files and have tried to build the font files from the MF
sources.  MF says it is running out of memory.  (That is, its memory, not the
computer's memory.)  The IPA fonts are CM-based fonts used by linguists and
dictionary writers for phonetic transcription.  (For anyone who does not know,
but cares, IPA stands for International Phonetic Alphabet.)

If I had written the MF files myself, I would assume that my code was simply
buggy, but since the MF code is unchanged and from a reputable archive, my
default assumption is that the code itself has probably been used successfully
by others.

I first started by trying to build the most general and, thus, presumably the
most useful of the fonts, i.e., WSUIPA10.  For this, I used the unchanged
metafont binary from the DECUS CD-ROM (this is on a VAX) and a CM.BAS built
from the (unchanged) CMBASE.MF file also from the same CD. Following is the
(edited) listing of the attempted build of WSUIPA10.GF:

----------------------------------
This is METAFONT, Vax/VMS Version 1.7 (preloaded base=cm 90.9.10)  12 SEP 1990 08:57
**&cm wsuipa10
(PAUL$FILES:[MF.IPA]WSUIPA10.MF;1 (PAUL$FILES:[MF.IPA]IPAROMAN.MF;2
(PAUL$FILES:[MF.IPA]IROMANL.MF;1
The letter inverted a [0]
Calling BLANKRECTANGLE(0,500,0,336)
Calling UPDATESCREEN

Calling BLANKRECTANGLE(0,500,0,336)
Calling PAINTROW(335,1;50,51,70,71,90,91,110,111,130,131,150,151,170....
:
:
Calling PAINTROW(29,1;50,231)
Calling UPDATESCREEN

letter script a [1]
! METAFONT capacity exceeded, sorry [main memory size=30001].
<for(160.00049)> ...XPR0),body_height)t_);
                                           ENDFOR
makebox->...h)t_,(x,body_height)t_);endfor
                                          .if.charic<>0:(TEXT0)((r+ch...
endchar->...splaying>0:makebox(screenrule)
                                          ;showit;fi.endgroup
l.79 penlabels(0,1,2,3,4,5,6,7); endchar
                                        ;
If you really absolutely need more capacity,
you can ask a wizard to enlarge me.
---------------------------------------------

Since we have a shortage of wizards around here, I have had to try to stand in
for one.  (I am as close as we have to a TeX and METAFONT support person, and
that is not very close (yet).)  Consequently, I tried to build a larger version
of METAFONT with mem_max of 50000 instead of 30000 and then ran that using the
same input file.  It successfully loaded CMBASE and proceeded as before.  The
only substantial difference in the next listing, then, is the line:

! METAFONT capacity exceeded, sorry [main memory size=50001].

This indicated to me that something seemed to be running away with memory.  I
decided that it was less likely to be a problem with MF.EXE than with something
about the font source file.  Not knowing where it might be, I decided to try a
different size font to see if the top level file might be at fault.  I know
that is not the most likely place for the error, but it seemed easiest to
check.  (I lost my keys over there, but I'm looking here because the light's
better. :-)  And, after all, I might learn something :-).  Anyway, when I tried
to build the 8 point font rather than the 10 point font, I got the following,
rather informative, listing:

-------------------------------------
This is METAFONT, Vax/VMS Version 1.7 (preloaded base=cm 90.9.10)  12 SEP 1990 08:53
**&cm wsuipa8.mf;1
(PAUL$FILES:[MF.IPA]WSUIPA8.MF;1 (PAUL$FILES:[MF.IPA]IPAROMAN.MF;2
(PAUL$FILES:[MF.IPA]IROMANL.MF;1
The letter inverted a [0]
Calling BLANKRECTANGLE(0,500,0,336)
:
letter script a [1]
:
Inverted script letter a [3]
:
The letter crossed b [5]
:
The letter barred b [6]
:
The letter slashed b [7]
:
The letter hooktop b [8]
:
The letter open o (turned c) [61]
:
The letter curly-tail c [11]
:
The letter stretched c [12]
:
The letter slashed c [10]
:
The letter barred d [14]
:
The letter slashed d [15]
:
The letter hooktop d [16]
:
The letter right-tailed d [17]
! METAFONT capacity exceeded, sorry [main memory size=30001].
<for(204.00293)> ...XPR0),body_height)t_);
                                           ENDFOR
makebox->...h)t_,(x,body_height)t_);endfor
                                          .if.charic<>0:(TEXT0)((r+ch...
endchar->...splaying>0:makebox(screenrule)
                                          ;showit;fi.endgroup
l.500 ...2,3,4,5,6,7,15,16,17,20); endchar
                                          ;
:
-------------------------------------

With the omitted portions being the obvious calls to PAINTROW, UPDATESCREEN and
the equally obvious, and useless, advice to call in a wizard.  However, it does
seem that this exercise may have imparted some information after all.  Metafont
got further in the 8 point font than in the 10 point font.  What remains
unclear to me is why.  It did not crash at letter `script a', but continued
until it got to `right-tailed d' before it crashed.

The BIGMF with a memory size of 50000 also crashed at exactly the same place
with the message:

! METAFONT capacity exceeded, sorry [main memory size=50001].

And, in fact, I even constructed a really BIGMF with a memory size of 64000
(there is a hard limit, according to MF.WEB, of 65535) and it also crashed at
the same place, at right-tailed d.  This strikes me as reducing the probability
that the problem really is too small a memory.

When I commented out right-tailed d, MF went on for a couple more characters
before crashing and when I commented out right-hook schwa, it went several
characters beyond that before crashing.  It appears to me that either (the
version I got of) IROMANL.MF is corrupt (in several places) or (possibly more
likely) METAFONT is incorrectly configured somehow.

Any advice or help that anyone can offer will be gratefully appreciated.

====
    Paul Neubauer    00prneubauer@bsu-ucs.uucp  or  00PRNEUBAUER@BSUVAX1.BITNET
                     neubauer@bsu-cs.uucp
                     {backbones}!iuvax!bsu-cs!neubauer

wilcox@blob.cis.ohio-state.edu (Patricia P Wilcox) (09/14/90)

In article <40682@bsu-ucs.uucp> neubauer@bsu-ucs.uucp (Paul Neubauer) writes:

>I have been trying to build the IPA fonts from the ymir archives.  I have
>acquired all of the files and have tried to build the font files from the MF
>sources.  MF says it is running out of memory.  

You haven't given us the original command you used to run Metafont, so this
is just a guess, but did you specify a mode (something like "mode=imagen")
on the command line?  If not, MF is creating huge (proof-mode) characters,
and may very well be running out of memory.

--Pat Wilcox   (wilcox@cis.ohio-state.edu)

chooft@ruunsa.fys.ruu.nl (Rob Hooft) (09/14/90)

In <83591@tut.cis.ohio-state.edu> wilcox@blob.cis.ohio-state.edu (Patricia P Wilcox) writes:

>In article <40682@bsu-ucs.uucp> neubauer@bsu-ucs.uucp (Paul Neubauer) writes:

>>I have been trying to build the IPA fonts from the ymir archives.  I have
>>acquired all of the files and have tried to build the font files from the MF
>>sources.  MF says it is running out of memory.  

>You haven't given us the original command you used to run Metafont, so this
>is just a guess, but did you specify a mode (something like "mode=imagen")
>on the command line?  If not, MF is creating huge (proof-mode) characters,
>and may very well be running out of memory.

Is that true? In that case enlarging would help. But isn't it true that you
included the cm base twice? I'm not a wizard too (about the same, as close as
we have), but I saw that your startup specified the cm base, and you
re-included it. Can that do any harm? Wizards?
-- 
--
Rob Hooft, Chemistry department University of Utrecht.
hooft@hutruu54.bitnet hooft@chem.ruu.nl chooft@fys.ruu.nl

neubauer@bsu-ucs.uucp (Paul Neubauer) (09/14/90)

In article <1471@ruunsa.fys.ruu.nl>, chooft@ruunsa.fys.ruu.nl (Rob Hooft) writes:
> In <83591@tut.cis.ohio-state.edu> wilcox@blob.cis.ohio-state.edu (Patricia P Wilcox) writes:
> 
>>In article <40682@bsu-ucs.uucp> neubauer@bsu-ucs.uucp (Paul Neubauer) writes:
> 
>>>I have been trying to build the IPA fonts from the ymir archives.  I have
>>>acquired all of the files and have tried to build the font files from the MF
>>>sources.  MF says it is running out of memory.  
> 
>>You haven't given us the original command you used to run Metafont, so this
>>is just a guess, but did you specify a mode (something like "mode=imagen")
>>on the command line?  If not, MF is creating huge (proof-mode) characters,
>>and may very well be running out of memory.
> 
> Is that true? In that case enlarging would help. But isn't it true that you
> included the cm base twice? I'm not a wizard too (about the same, as close as
> we have), but I saw that your startup specified the cm base, and you
> re-included it. Can that do any harm? Wizards?

Thank you both Pat and Rob.  I'll see if these suggestions lead me anywhere. 
No, I did not include "mode=something" on the command line.  I'll try that. 
The plain.bas that I was using, and on which I built cm.bas, does include the
line "localfont:=ln", which I thought was supposed to make ln (for the DEC
LN03) the default mode.  Did I misunderstand that?

On Rob's suggestion about loading cm twice, I'm not sure.  In fact, I have
tried it both using and not using "preloaded" cm and the crashes occurred at
the same place, so I doubt that that is the cause.  For reference, the commands
I used were the following:

(VMS requires that I first define what it calls "foreign commands" in order to
pass arguments to programs from the command line.  I first set the following
symbols:)

	MF :== $TEX_ROOT:[EXE] &PLAIN
	CM :== $TEX_ROOT:[EXE] &CM
	BIGMF :== $TEX_ROOT:[EXE] &BIGPLAIN

Both of the listings I put into my posting were generated using the command:

	CM WSUIPA10

However, in my testing, I also tried command lines of the form:

	MF WSUIPA10

This crashed in the same location.  Note that the difference here is  that a
different base is called for _from_the_command_line_.  The same executable is
called in either case, but it reads the command line and "preloads" the
appropriate base (noting the preloaded base in the identification "This is"
line).  Then it echoes the command line parameters:

	&cm wsuipa10

before doing anything else.  I believe that this is what made it appear to Rob
that cm was being loaded twice.  (If anyone can show me that this analysis is
wrong, please do.)  I have now also trie it with a mode specification on the
command line to see if that made a difference.  It did not.  Metafont crashed
again at the same place with the same message.  The command I used was:

	CM WSUIPA10 MODE=LN

(VMS is NOT case-sensitive.)  Thanks for these suggestions, but I am afraid I
still need some more ideas.  Does anybody have any?

Thanks in advance.

====
    Paul Neubauer    00prneubauer@bsu-ucs.uucp  or  00PRNEUBAUER@BSUVAX1.BITNET
                     neubauer@bsu-cs.uucp
                     {backbones}!iuvax!bsu-cs!neubauer