From: nathan@laplace.biology.yale.edu (Nathan F. Janette)
Subject: NeXT-FAQ.printing: Questions about printing on the NeXT
Reply-To: nathan@laplace.biology.yale.edu
Organization: Yale University, Department of Computer Science, New Haven, CT
Date: Thu, 23 Jul 1992 21:51:31 GMT
Expires: Fri, 28 Aug 1992 00:00:00 GMT

NeXT-FAQ.printing: Questions about printing on the NeXT


*** Subject: H1. What are some other sources of toner cartridges for the NeXT  
laser printer?

The toner cartridge is a standard EP-S cartridge, the
same that fits the HP LaserJet III and other printers. 


*** Subject: H2. What alternative printers (laser or otherwise) may be used  
with the NeXT?

Adding supported postscript printers is rather simple:  

	1. Get a serial cable (e.g., Macintosh to LaserWriter Plus), but
	check whether that works with your printer 
	(see below for HP-printers)!
	2. Configure using Print Manager
	3. Configure printer communication according to manufacturer's 
	recommendations. (9600 baud software flow control).

If you plan to connect an HP LaserJet (II, IIP, III, etc.)
you need to make a special cable in order for the NeXT 040
and HP to get the hardware handshaking correct.  This is
true for whatever version of the OS you are running. 

NeXT 68040 to HP LaserJet III Cable (not a Null-modem cable):
 
	Mini-Din       HP DB-25
 
	1   (DTR)      nc 
	2   (DCD)      4  (RTS)	
	3   (TXD)      3  (RXD)
	4   (GND)      7  (GND)
	5   (RXD)      2  (TXD)
	6   (RTS)      5  (CTS)
	7   (RTXC)	    nc	     
	8   (CTS)      20 (DTR)

  
You may want to use hardware flow control for reliability
(ie /dev/ttyfa).

A sample printcap entry needs to be loaded into the
netinfo database. You can use either "niload printcap . <
myprintcap", or use NetInfoManager to change the br and
lp properties of your LaserJet. Using the default baud
rate  and /dev/ttya will also work, for most print jobs. 

LaserJet_III: \
	:note=LaserJet_III:ty=HP LaserJet III PostScript: \
	:sd=/usr/spool/NeXT/LaserJet_III:lp=/dev/ttyfa: \
	:lf=/usr/adm/lpd-errs:af=/usr/adm/lp.acct:br=19200:rw:fc#0000374: \
	:fs#0000003:xc#0:xs#0040040:mx#0:sf:sb:if=/usr/lib/transcript/psif: \
	:of=/usr/lib/transcript/psof:gf=/usr/lib/transcript/psgf: \
	:nf=/usr/lib/transcript/psnf:tf=/usr/lib/transcript/pstf: \
	:rf=/usr/lib/transcript/psrf:vf=/usr/lib/transcript/psvf: \
	:cf=/usr/lib/transcript/pscf:df=/usr/lib/transcript/psdf:

HP printer configuration:

	auto cont = off		(doesn't matter)
	I/O = serial		
	serial=rs-232		(for LJ III only)
	baud rate = 19200	(or whatever baud rate you have 
				in ni database/printcap)
	robust xon = on		(doesn't matter)
	dtr polarity = hi
	startpage = off		(doesn't matter)
	language=english
	ret = med		(you choose for LJ III only)	

Note that if you modify the printcap this way you cannot
reconfigure this particular printer entry with
PrintManager.

If you have problems with other printers, check the cable
pinouts in the printer's manual against the one
recommended in the zs man-page!   Refer to Chapter 13 in
Network and System Administration.

If you are using NeXTstep 2.0 and you use remote non-next
printers, there is a bug that can be simply corrected by
doing "dwrite system PrinterResolution 1" for each user
trying to access non-next printers on the network. This
not a problem in NeXTstep 2.1.  


*** Subject: H3. What fonts can I use on my NeXT?

Properly packaged Type 1 or 3 PostScript fonts will work
on the NeXT, certain conversions may be necessary to get
them to work.  Freeware and shareware fonts are available
on sonata.cc.purdue.edu.  There are utilities on the
NeXT to download fonts into postscript printers.

Purdue (nova and sonata) have freeware and shareware
Type 1 and 3 fonts in pub/next/graphics/fonts in files
Fonts-1.0-free.tar.Z and Fonts-2.0-sw.tar.Z. Each
file unpacks into it's own directory.  Within each
directory is a ReadMe.rtf and a Makefile.  See the
ReadMe.rtf for more font descriptions and installation
instructions.  (You may also find comments in the
Makefile of interest.)  These packages were prepared by
Doug Brenner <dbrenner@umaxc.weeg.uiowa.edu>.

The same directory contains fonts Shalom (Hebrew and
Yiddish in Old Style, Stick and Script typefaces, by
Jonathan Brecher, shareware) and CyrillicGothic (san
serif, by Jay Sekora).  These were packaged by Jacob Gore
<jacob@gore.com> to work with the Installer
application.

The archive maintaners know the organization is screwy,
some of the fonts are buggy, and that there are more fonts
"out there" -- and welcome suggestions to make things
better.  Suggestions and comments about the Purdue NeXT
Archives should be addressed to:

	archive-management@cc.purdue.edu

and should have a meaningful Subject because they get a
lot of mail! Submission of new fonts is welcome, too, of
course.

Fonts may be purchased from Adobe (800-USA-FONTS) or
from The Font Hotline, a new division of RightBrain
Software (800-525-FONT).  The Font Company has
discontinued sales of fonts for NeXT. 


*** Subject: H4. How can I save my WriteNow [or other printable] documents to a  
postscript file?

It's easy.  Just select PRINT from the main WriteNow menu,
then select SAVE from the resulting print panel. 


*** Subject: H5. How can I print only the even or odd pages of a document?  I  
wish print on both sides by feeding the paper through twice.

We must recommend against re-using laser printed paper
in your printers.  The reason is that the toner which is
used is not very robust, in that when heated again (which
happens when you print) it can come off the other side of
the paper.  This causes a mess to accumulate in your
printer, and probably some pretty rude things to happen. 

Now to address the even/odd stuff, essentially you need
to write a postscript filter which extracts every other
page.  So you would save your WriteNow document to
postscript file, run the filters, and then print the two
documents with lpr.  There is no packaged filter on the
NeXT to do this.  Corey Satten
<corey@cac.washington.edu> wrote  a toolkit to deal
with this issue.  It is on ftphost.cac.washington.edu
ps-* in the local/bin-next{1.0,2.0} directories. 


*** Subject: H6. What can I do to prevent my NeXT printer from running all the  
time?

The NeXT 400dpi printer powers up every time you boot up
when the print daemon is started
(/usr/lib/NextPrinter/npd in /etc/rc).  Apart from not
running the daemon at boot time (commenting it out and
having to run it by hand later), you can add the following
lines to /etc/rc.local: 

	if [ -f /usr/etc/nppower ]; then
		sleep 3
		/usr/etc/nppower off
		(echo 'powering off NeXTprinter')		>/dev/console
	fi

Once you queue a print job the printer daemon will
automatically power up the NeXT printer for you.  The
printer daemon will not automatically power off the
machine after a print job, you will need to turn off the
printer by typing /usr/etc/nppower off. 


*** Subject: H7. How do I get banner pages on my printer output?

There is a sample banner prologue file in
/usr/lib/NextPrinter that is  sent to the printer before
or after the print job depending on what printer
attributes are set in NetInfo.  Sounds gross, but it
isn't. Start up NetInfo on your printer machine.  Go to the
printer directory, and open up your local printer by
double clicking it. Select the append property from
Directory menu.  Replace the name with BannerAfter (or
BannerBefore if you want the banner page printed first). 
The select the New Value option, and put in the name of the
banner prologue file.  If you do not wish to do fancy
customization of the file, simply put the path to the NeXT
sample banner file: /usr/lib/NextPrinter/banner.pro
Save out the netinfo modifications. 


*** Subject: H8. How do I get [la]TeX files to print correctly on non-NeXT  
printers?

If you are printing to a non-NeXT printer from NeXT TeX
using dvips, make sure you specify the correct
resolution (300 dpi, usually), either on the command
line with -D300, or in the /usr/lib/tex/config.ps file
with a line that looks like 

	D 300

If you are printing from within TeXView, you will have to
choose CustomResolution and enter the correct number
(300, usually) because of the way DefaultResolution
defaults to 0. 

 *** Subject: H9. What if I have a PostScript font has not been ported to the  
NeXT?

Many PostScript fonts port to the NeXT with little
effort.

The easiest case is a font generated by Fontographer
version 3.2 or above (a comment near the top of the file
should say which program generated the font).  This
version of Fontographer can generate fonts "for the
NeXT".  This means that no hacking of the font is needed,
but you may need to make some adjustments to make it appear
in your font panel.  Suppose you were porting the font
family Shalom, which consists of three faces: Old Style,
Stick and Script.  Here is the procedure to follow: 

	1.  In a working folder of yours, create folders called:

		Shalom-OldStyle.font
		Shalom-Script.font
		Shalom-Stick.font

	Note that the font family name is to the left of the hyphen
	("-"), and the typeface name is to the right and with no
	spaces in it.

	2.  Copy the outline font file for each typeface from
	wherever it is into its folder, and give it the name of the
	folder minus the ".font". For example, if you are doing
	this in a Terminal window: 

        cp /Floppy/ShalomOldStyle.NeXT Shalom-OldStyle.font/Shalom-OldStyle
        cp /Floppy/ShalomScript.NeXT   Shalom-Script.font/Shalom-Script
        cp /Floppy/ShalomStick.NeXT    Shalom-Stick.font/Shalom-Stick

	If you are working in Workspace Manager's File Viewer,
	double-click on the big fat F icon to open the font
	directory as a folder, then you'll be able to rename files
	in it. 

	3.  Do the same thing with the font metric files, but make
	the suffix ".afm": 

        cp /Floppy/ShalomOldStyle.AFM Shalom-OldStyle.font/Shalom-OldStyle.afm
        cp /Floppy/ShalomScript.AFM   Shalom-Script.font/Shalom-Script.afm
        cp /Floppy/ShalomStick.AFM    Shalom-Stick.font/Shalom-Stick.afm

	4.  If there is a "read me" file with the font, or any other
	documentation, copy it into the .font folder too.  For
	example, each of the Shalom font folders contains files
	ReadMe, CheatSheet.wn and Sample.wn specific to the
	typeface.

	5.  Edit the outline and font metric files to make them fit
	the NeXT AppKit's Font Panel, which is what most NextStep
	applications use to let you choose your font.

	a.  Editing the outline file, e.g.,
	Shalom-OldStyle.font/Shalom-OldStyle:

	The original used "ShalomOldStyle" as the font's name,
	full name, and family name.  We want the name to be
	"Shalom-OldStyle", the full name "Shalom Old Style",
	and family name just "Shalom". 

	First, find the lines:

		/FullName (ShalomOldStyle) readonly def
		/FamilyName (ShalomOldStyle) readonly def

	and change them to

		/FullName (Shalom Old Style) readonly def
		/FamilyName (Shalom) readonly def

	Then, replace all remaining occurrences of the string
	"ShalomOldStyle" with "Shalom-OldStyle".

	b.  Editing the AFM file, e.g.,
	Shalom-OldStyle.font/Shalom-OldStyle.afm.

	Find the lines:

		FullName ShalomOldStyle
		FamilyName ShalomOldStyle

	and change them to

		FullName Shalom Old Style
		FamilyName Shalom

	Replace all remaining occurrences of the string
	"ShalomOldStyle" with "Shalom-OldStyle".

	Repeat this procedure for the remaining typefaces.

	6.  You now have a font family ready to be installed.  If the
	font family is to be used by your account only, place it in
	~/Library/Fonts (creating it if necessary): 

	mkdirs ~/Library/Fonts
	mv Shalom-*.font ~/Library/Fonts
	buildafmdir ~/Library/Fonts

	If everybody on your system should have access to this font family,
	place it (as superuser) in /LocalLibary/Fonts:

	su
	mkdirs /LocalLibrary/Fonts
	mv Shalom-*.font /LocalLibrary/Fonts
	buildafmdir /LocalLibrary/Fonts
	exit

That's all you need to do for fonts generated by
Fontographer version 3.2 or above.  This will work with
all applications that use AppKit's FontPanel. 
FrameMaker does not, so other changes may need to be done
to keep FrameMaker happy [does anybody have something to
add here?].

 Fonts generated by Fontographer version 3.1 or below
don't work in Display PostScript as they are, because
they use a memory management trick that screws
everything up in a multitasking environment like DPS.
However, there is a simple, though kludgy, way to make
them work. 

The problematic trick uses a dictionary with a name like
"Fog3.1" ("Casa1" in Casady & Green's fonts) in which
most of the font resides. The problem is that
Fontographer puts that whole dictionary into
dictionary 'userdict' and expects it to stay there.  DPS,
however, clears out 'userdict' between tasks,
including the task that loads the font and the task that
uses it.  This makes the font useless on the screen, and
printable only by prepending the outline font file to the
file you want to print and sending the result to print in
one task.

The fix is to move the troublesome dictionary from
'userdict' into the font dictionary itself (unlike
'userdict', the font dictionary does stick around
between tasks).

Perform the following changes in the outline font file
(the font CyrillicGothic is used as the example): 

	1.  Find the line "%%EndProlog".  It will be followed by the
	line like this: 

 		/$CyrillicGothic 23 dict def $CyrillicGothic begin

	Write down the number before 'dict' (in this case, 23).  You will
	need it in the following step.  Delete the dict definition, making
	the line look like this:

		$CyrillicGothic begin

	2.  Go back to the beginning of the file.  near the top of the
	font program, find the following lines:  

		userdict/Fog3.1 known{{currentfile(   )readstring
			{(%%%)eq{exit}if}{pop exit}ifelse}loop}if
		userdict begin/Fog3.1 45 dict def Fog3.1 begin

	and replace them with these:

 		/$CyrillicGothic 24 dict def
		$CyrillicGothic begin/Fog3.1 45 dict def Fog3.1 begin

	The number before 'dict' (in this case, 24) is one greater than the
	number you wrote down in the previous step.

	3.  Find the line that defines procedure BuildChar:

 		/BuildChar{Fog3.1/BuildChar get exec}def

	and change it as follows:

  		/BuildChar{1 index begin Fog3.1/BuildChar get exec end}def

	4.  Go to the end of the file.  The last line looks like this:

		/CyrillicGothic findfont/EFN get Fog3.1 begin{RF}forall end

	Delete it (or comment it out by placing one or more "%" in the
 	beginning of it).

The AFM file requires one adjustment.  Change the line

	EncodingScheme AppleStandard

to

	EncodingScheme AdobeStandardEncoding

This concludes conversion of a font generated by
Fontographer version 3.1 or lower to work on the NeXT.  You
may still need to make the changes described for version
3.2 and above, to make the font fit the NeXT font panel. 



---
Editor:
Nathan Janette nathan@laplace.csb.yale.edu


--
Nathan Janette		"I'm a NeXTstep man,
Dept MB&B, Yale Univ	 I'm a NeXTcube guy"
New Haven, CT
nathan@laplace.biology.yale.edu (NeXT)

Newsgroups: comp.sys.next.announce