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: Fri, 13 Nov 1992 20:03:02 GMT
Expires: Fri, 18 Dec 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. 

For more information:

	RightBrain/The Font Hotline
	Vox: (415) 326-2974
	Vox: 800-472-7246

____________________________________________________________________________

*** 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. 

____________________________________________________________________________

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

The NeXT/Canon color printer, of course!

[heinz.in-berlin.de]:

With Dots Color, the HP DeskJet 500C can print in color *today*, under   
NeXTStep
2.1, and it costs significantly less than $1000 (in Germany at  least).  

You can get more information from

	d'ART Software GmbH
	Virchowstr. 17-19
	W-2000 Hamburg 50
	Germany
	(+49 40) 380 23 - 0
	(+49 40) 380 23 - 290 fax
	software@dart.de


____________________________________________________________________________

NeXT-FAQ 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