Date: Fri, 7 Aug 87 10:19:38 EST From: crl@maxwell.physics.purdue.edu (Charles R. LaBrec) To: TEXHAX@score.stanford.edu Subject: Mode definitions for LN03 and LN03+ I have recently been playing with metafont for an LN03, and have come up with something that seem to produce acceptable output, but is by no means "completely" tested. The problem with the write-white LN03 is that you cannot use a one-pixel wide line ever, since it becomes far, far too light. This is why my previous version of the LN03 mode used a "blacker" parameter that was very big. From metafont 1.3, I started using the write-white cmbase, but even this didn't provide a wide enough line in various places. It was really obvious for things that used only the light_rule.nib pen. This fact made me notice that even though all sorts of parameters were set to a minimum of two, the pens that were saved could have widths of one. I thus decided to try to modify cmbase further, setting minimum pencircle widths of two. I enclose the decln mode I've used, along with a diff of the write-white version of cmbase.mf. I am VERY interested in comments/suggestions as to whether everyone thinks this solution is valid/produces good output. If so, then perhaps metafont should get a new mode parameter which is the minimum pen{circle/square} scaling, so that such things could be more easily handled in base files. Charles LaBrec crl @ maxwell.physics.purdue.edu % decln mode: for the DEC LN03 (Ricoh engine, a write-white device) mode_def decln = % decln mode proofing:=0; % no, we're not making proofs fontmaking:=1; % yes, we are making a font tracingtitles:=0; % no, don't show titles in the log pixels_per_inch:=300; blacker:=0.2; % make pens a bit blacker fillin:=-0.2; % darken diagonals a bit o_correction:=0.5; % don't overshoot as much enddef; *** /tmp/,RCSt1007354 Fri Aug 7 09:53:44 1987 --- cmbase.mf Fri Aug 7 09:52:44 1987 *************** *** 385,391 penlabels(1,2,3,4,5,6,7); enddef; def left_angle(expr breadth) = ! pickup pencircle scaled breadth; x1=x3=good.x(w-u)+eps; lft x2=hround u-eps; top y1=h+eps; .5[y1,y3]=y2=good.y .5[-d+eps,h]; draw z1--z2--z3; % diagonals --- 385,391 ----- penlabels(1,2,3,4,5,6,7); enddef; def left_angle(expr breadth) = ! pickup pencircle scaled max(breadth,2); % WRITE WHITE x1=x3=good.x(w-u)+eps; lft x2=hround u-eps; top y1=h+eps; .5[y1,y3]=y2=good.y .5[-d+eps,h]; draw z1--z2--z3; % diagonals *************** *** 392,398 labels(1,2,3); enddef; def right_angle(expr breadth) = ! pickup pencircle scaled breadth; x1=x3=good.x u-eps; rt x2=hround(w-u)+eps; top y1=h+eps; .5[y1,y3]=y2=good.y .5[-d+eps,h]; draw z1--z2--z3; % diagonals --- 392,398 ----- labels(1,2,3); enddef; def right_angle(expr breadth) = ! pickup pencircle scaled max(breadth,2); % WRITE WHITE x1=x3=good.x u-eps; rt x2=hround(w-u)+eps; top y1=h+eps; .5[y1,y3]=y2=good.y .5[-d+eps,h]; draw z1--z2--z3; % diagonals *************** *** 399,405 labels(1,2,3); enddef; def big_slash(expr breadth) = ! adjust_fit(-letter_fit#,-letter_fit#); pickup pencircle scaled breadth; rt x1=hround(w-u); lft x2=hround u; top y1=h+eps; bot y2=1-d-eps; draw z1--z2; % diagonal labels(1,2); enddef; --- 399,405 ----- labels(1,2,3); enddef; def big_slash(expr breadth) = ! adjust_fit(-letter_fit#,-letter_fit#); pickup pencircle scaled max(breadth,2); % WRITE WHITE rt x1=hround(w-u); lft x2=hround u; top y1=h+eps; bot y2=1-d-eps; draw z1--z2; % diagonal labels(1,2); enddef; *************** *** 405,411 labels(1,2); enddef; def big_blash(expr breadth) = ! adjust_fit(-letter_fit#,-letter_fit#); pickup pencircle scaled breadth; lft x1=hround u; rt x2=hround(w-u); top y1=h+eps; bot y2=1-d-eps; draw z1--z2; % diagonal labels(1,2); enddef; --- 405,411 ----- labels(1,2); enddef; def big_blash(expr breadth) = ! adjust_fit(-letter_fit#,-letter_fit#); pickup pencircle scaled max(breadth,2); % WRITE WHITE lft x1=hround u; rt x2=hround(w-u); top y1=h+eps; bot y2=1-d-eps; draw z1--z2; % diagonal labels(1,2); enddef; *************** *** 536,541 forsuffixes $=fine,crisp,tiny: %%% fine $ %%%% temporary formatting convention for MFT if $>fudged.hair: $:=fudged.hair; fi $.breadth:=$; pickup if $=0: nullpen else: pencircle scaled $; $:=$-eps fi; $.nib:=savepen; breadth_[$.nib]:=$; --- 536,542 ----- forsuffixes $=fine,crisp,tiny: %%% fine $ %%%% temporary formatting convention for MFT if $>fudged.hair: $:=fudged.hair; fi + if $>0: $:=max($,2); fi % WRITE WHITE $.breadth:=$; pickup if $=0: nullpen else: pencircle scaled $; $:=$-eps fi; $.nib:=savepen; breadth_[$.nib]:=$; *************** *** 546,551 if flare