tasayco@phoenix.Princeton.EDU (Maria Tasayco) (01/24/91)
A few days ago I posted an article asking for help with the generation of TeX fonts for a write-white engine (Ricoh). I received some mail from people who where also interested in the answers since they had the same problem, so I am posting the messages I got thus far. After I tried changing some of the parameters in the mode_def for Ricoh I finally went back to the original parameters, which seem to give the best results (original means: the ones in the file U_Wash.mf which you can get from labrea.stanford.edu; and don't forget to get also the file white_setup.mf, which is needed for write-white printers). OK, here follow the messages: From pjt@cpac.washington.edu Wed Jan 16 00:34:04 1991 Posted-Date: Tue, 15 Jan 91 21:38:28 -0800 Received-Date: Wed, 16 Jan 91 00:34:04 EST Received: from Princeton.EDU by lutece.rutgers.edu (5.52/5.51) id AA23559; Wed, 16 Jan 91 00:34:04 EST Received: from phoenix.Princeton.EDU by Princeton.EDU (5.61++/2.62/princeton) id AA28360; Wed, 16 Jan 91 00:37:15 -0500 From: pjt@cpac.washington.edu Received: from dharma.cpac.washington.edu by phoenix.princeton.edu (4.1/1.106) id AA21397; Wed, 16 Jan 91 00:37:13 EST Received: by dharma.cpac.washington.edu (5.65/UW-NDC Revision: 2.4 ) id AA04068; Tue, 15 Jan 91 21:38:28 -0800 Date: Tue, 15 Jan 91 21:38:28 -0800 Message-Id: <9101160538.AA04068@dharma.cpac.washington.edu> To: tasayco@phoenix.Princeton.EDU (Maria Tasayco) In-Reply-To: tasayco@phoenix.Princeton.EDU's message of 15 Jan 91 15:31:55 GMT Subject: METAFONT setup for Ricoh engine Status: RO If you aren't using a Ricoh (or at least some write-white engine)-specific mode, you should. You can also find write-white fonts in a subdirectory of the fonts that come (came, anyway) with the standard TeX distribution (the directory is called white, or wfonts, or something like that). Coincidentally, they left the mode_def used to create those fonts as readable text at the tail end of the pk files, so you can use it to generate more than the (somewhat small) default write-white font set. Larry Setlow From @RutVM1.Rutgers.Edu:AUBORD@uni2a.unige.ch Wed Jan 16 03:26:08 1991 Posted-Date: Wed, 16 Jan 91 09:16 N Received-Date: Wed, 16 Jan 91 03:26:08 EST Received: from rutvm1.rutgers.edu by lutece.rutgers.edu (5.52/5.51) id AA23664; Wed, 16 Jan 91 03:26:08 EST Received: from RUTVM1.RUTGERS.EDU by RutVM1.Rutgers.Edu (IBM VM SMTP R1.2.1MX) with BSMTP id 2224; Wed, 16 Jan 91 03:31:32 EST Received: from cgeuge53.bitnet by RUTVM1.RUTGERS.EDU (Mailer R2.07) with BSMTP id 2223; Wed, 16 Jan 91 03:31:31 EST Received: from uni2a.unige.ch by cgeuge53.bitnet; Wed, 16 Jan 91 09:11 N Date: Wed, 16 Jan 91 09:16 N From: AUBORD%uni2a.unige.ch@RutVM1.Rutgers.Edu Subject: Ricoh set-up To: figuei@lutece.rutgers.edu Message-Id: <D364BB88B03F00247B@cgeuge51.bitnet> X-Envelope-To: figuei@lutece.rutgers.edu X-Vms-To: IN%"figuei@lutece.rutgers.edu" Status: RO Here is the ricoh set up we use here at the university of Geneva. I don't know if it's different from your set up % Ricoh 4080: for the TI Omnilaser (Stan Osborne's values TUGboat 8,2,134) mode_def RicohFourZeroEightZero = let font_setup=white_setup; % use the write-white font_setup proofing:=0; % no, we're not making proofs fontmaking:=1; % yes, we are making a font tracingtitles:=0; % no, don't show titles at all pixels_per_inch:=300; % Ricoh write-white engine. blacker:=.2; % Don't overblack the small fonts fillin:=-.2; % reverse compensation for diagonal fillin o_correction:=.5; % but don't overshoot as much enddef; A.Aubord My address: Bitnet: AUBORD@CGEUGE51.bitnet UUCP:aubord@cui.UUCP X.400:aubord@cui.unige.ch Path: mcsun!cui!aubord Surface Mail: A.Aubord University Of Geneva Services Informatiques 24 rue General-Dufour 1211 Geneva Switzerland. From wjw%eb.ele.tue.nl@Princeton.EDU Wed Jan 16 04:35:20 1991 Posted-Date: Wed, 16 Jan 91 10:36:10 +0100 Received-Date: Wed, 16 Jan 91 04:35:20 EST Received: from Princeton.EDU by lutece.rutgers.edu (5.52/5.51) id AA23713; Wed, 16 Jan 91 04:35:20 EST Received: from phoenix.Princeton.EDU by Princeton.EDU (5.61++/2.62/princeton) id AA03498; Wed, 16 Jan 91 04:37:33 -0500 Received: from eb.ele.tue.nl ([131.155.2.25]) by phoenix.princeton.edu (4.1/1.106) id AA28452; Wed, 16 Jan 91 04:36:27 EST Received: by eb.ele.tue.nl; id AA00923; Wed, 16 Jan 91 10:36:10 +0100 Date: Wed, 16 Jan 91 10:36:10 +0100 From: wjw%eb.ele.tue.nl@Princeton.EDU (Willem Jan Withagen) Message-Id: <9101160936.AA00923@eb.ele.tue.nl> To: tasayco@phoenix.Princeton.EDU Subject: Re: METAFONT setup for Ricoh engine Newsgroups: comp.text.tex In-Reply-To: <5377@idunno.Princeton.EDU> Organization: Eindhoven University of Technology, The Netherlands Cc: Status: RO The Ricoh device is known to be a write white device. It gets you horrible character is you print with the std-fonts. The following will correct this. Don't get shocked, I do not understand it myself. But it works. The other thing is that we have a complete collection of fonts on our anonymous ftp ftp.eb.ele.tue.nl (131.155.2.25 ) /pub/tex/fonts/300WWdpi. Not all are really WW, but the once I did not/could not make are linked to the normal 300dpi ones. I havent gotten any problems though. Regards, Willem Jan Withagen Eindhoven University of Technology DomainName: wjw@eb.ele.tue.nl Digital Systems Group, Room EH 10.10 BITNET: ELEBWJ@HEITUE5.BITNET P.O. 513 Tel: +31-40-473401 5600 MB Eindhoven The Netherlands ------- snipe snipe --------- % The basic correction for write-white fonts occurs in the definition % font_setup. This can be used to overwrite the write-black % definition in cmbase.mf % def white_setup = if monospace: let adjust_fit=mono_adjust_fit; def mfudged=fudged enddef; mono_charic#:=body_height#*slant; if mono_charic#<0: mono_charic#:=0; fi mono_charwd#:=9u#; define_whole_pixels(mono_charwd); else: let adjust_fit=normal_adjust_fit; def mfudged= enddef; fi if math_fitting: let math_fit=do_math_fit else: let math_fit=ignore_math_fit fi; define_pixels(u,width_adj,serif_fit,cap_serif_fit,jut,cap_jut,beak, bar_height,dish,bracket,beak_jut,stem_corr,vair_corr,apex_corr); define_blacker_pixels(notch_cut,cap_notch_cut); forsuffixes $=notch_cut,cap_notch_cut: if $<3: $:=3; fi endfor define_whole_pixels(letter_fit,fine,crisp,tiny); define_whole_vertical_pixels(body_height,asc_height, cap_height,fig_height,x_height,comma_depth,desc_depth,serif_drop); define_whole_blacker_pixels(thin_join,hair,stem,curve,flare, dot_size,cap_hair,cap_stem,cap_curve); define_whole_vertical_blacker_pixels(vair,bar,slab,cap_bar,cap_band); define_corrected_pixels(o,apex_o); forsuffixes $=hair,stem,cap_stem: fudged$.#:=fudge*$.#; fudged$:=hround(fudged$.#*hppp+blacker); forever: exitif fudged$>.9fudge*$; fudged$:=fudged$+1; endfor endfor rule_thickness:=ceiling(rule_thickness#*hppp); heavy_rule_thickness:=ceiling(3rule_thickness#*hppp); oo:=vround(.5o#*hppp*o_correction)+eps; apex_oo:=vround(.5apex_o#*hppp*o_correction)+eps; lowres_fix(stem,curve,flare) 1.3; lowres_fix(stem,curve) 1.2; lowres_fix(cap_stem,cap_curve) 1.2; lowres_fix(hair,cap_hair) 1.2; lowres_fix(cap_band,cap_bar,bar,slab) 1.2; stem':=hround(stem-stem_corr); cap_stem':=hround(cap_stem-stem_corr); vair':=vround(vair+vair_corr); vstem:=vround .8[vair,stem]; cap_vstem:=vround .8[vair,cap_stem]; ess:=(ess#/stem#)*stem; cap_ess:=(cap_ess#/cap_stem#)*cap_stem; dw:=(curve#-stem#)*hppp; bold:=curve#*hppp+blacker; dh#:=.6designsize; stem_shift#:=if serifs: 2stem_corr# else: 0 fi; more_super:=max(superness,sqrt .77superness); hein_super:=max(superness,sqrt .81225258superness); % that's $2^{-.3}$ clear_pen_memory; if fine=0: fine:=1; fi 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]:=$; forsuffixes $$=lft,rt,top,bot: shiftdef($.$$,$$ 0); endfor endfor %%% @ $ %%%% restore ordinary formatting for $ min_Vround:=max(fine.breadth,crisp.breadth,tiny.breadth,2); % "WRITE WHITE" ONLY! if min_Vround<vround min_Vround: min_Vround:=vround min_Vround; fi if flare<vround flare: flare:=vround flare; fi forsuffixes $=vair,bar,slab,cap_bar,cap_band,vair',vstem,cap_vstem,bold: if $<min_Vround: $:=min_Vround; fi endfor pickup pencircle scaled rule_thickness; rule.nib:=savepen; math_axis:=good.y(math_axis#*hppp); pickup pencircle scaled if hefty:(.6[vair,fudged.hair]) else:fudged.hair fi; light_rule.nib:=savepen; pickup pencircle xscaled cap_curve yscaled cap_hair rotated 30; cal.nib:=savepen; pair cal.extension; cal.extension:=(.75cap_curve,0) rotated 30; pickup pencircle xscaled cap_curve yscaled cap_hair rotated 70; tilted.nib:=savepen; pickup pencircle xscaled curve yscaled cap_hair rotated 70; med_tilted.nib:=savepen; pickup pencircle xscaled cap_stem yscaled cap_hair rotated 30; med_cal.nib:=savepen; pickup pencircle xscaled stem yscaled cap_hair rotated 30; light_cal.nib:=savepen; pickup pencircle xscaled(cap_curve+dw) yscaled cap_hair rotated 30; heavy_cal.nib:=savepen; bot_flourish_line:=-.5u-o; pair bend; bend=(.5u,0); pair flourish_change; flourish_change=(4u,.2asc_height); join_radius:=u; currenttransform:=identity slanted slant yscaled aspect_ratio scaled granularity; if currenttransform=identity: let t_=relax else: def t_ = transformed currenttransform enddef fi; numeric paren_depth#; .5[body_height#,-paren_depth#]=math_axis#; numeric asc_depth#; .5[asc_height#,-asc_depth#]=math_axis#; body_depth:=desc_depth+body_height-asc_height; shrink_fit:=1+hround(2letter_fit#*hppp)-2letter_fit; if not string mode: if mode<=smoke: shrink_fit:=0; fi fi forsuffixes $=thin_join,hair,curve,flare,dot_size,cap_hair,cap_curve, vair,bar,slab,cap_bar,cap_band,stem',cap_stem',vair',fudged.hair, fudged.stem,fudged.cap_stem: $:=max($,2); endfor % "WRITE WHITE" ONLY! enddef;