ipsetter (Sat Oct 25 2014 01:31:01)


This program processes files in a funny SGML-like feed into a native setter
code - actually it is very simple markup language.

It loops around a queue, when a file arrives it processes it into the codes and
works out width and depth.

It passes the file onto the next stage which can either be directly to the
setter or a holding queue for later inclusion into a page or block.

The device file, tables/form/SETTER, is used to define fonts and character
The current version supports PostScript only.

FIP Header fields in the incoming file are searched for :
	FK:	Sort key - used generally by the User Interface 'form' for
		collecting and collating many files that have been processed
		individually previously - like election results for example.
	FN:	File name of the output file if different from the incoming
		file. This name is Overwritten by the Sort Key if there is one.
	SN:	Name of data file. This can be either the SN field or the actual
		filename if there is NO FipHdr or Fip-style filename.
	FQ:	Output queue for PostScript file. This defaults to spool/setit.
	FU:	Destination for output file. Generally if a destination is
		to be added, the file also need to be sent to 'spool/2go' for
		IPWHEEL to redistribute - use FQ for this ie :
		where 'nextstep' is a valid destination in the USERS file.
	FCR:	Should CR, NL (LF) be thought of as quads ? Normally yes !
		Add 'FCR:' to the Fip Hdr of the incoming file and all CRs and
		NLs are ignored and a quad is ONLY the Quad command <q:?>
		(where ? is l, c or r).
	FP:	Page number to start with - for books and documents only.
		This can be changed with the 'newFP' parameter in the SETPAGE file
		eg if you want to use PV	newFP:PV
	FH:	name of PS HEADER file in tables/form/postscript if NOT the -h
		input option or, failing that, the default (PSHDR). To specify
		NO header file use a null parameter eg #SH:bigpage#FH:#FP:99#
	FEC:	name of a file containing extra PS Comments to add before the
		%%EndComments. The default is none.
	FAC1:	name of a file containing PS commands to add after the
		%%EndComments and BEFORE the PSHDR. The default is none.
			FAC1: to FAC9: are available.
	FM:	USER file to include after PSHDR header file and before main
		body of the text. This overrides the -u input option whether it
		has been specified or not. The file should be pure PostScript
		and be in tables/form/postscript. FM is case-sensitive.
	FAM1:	After USERS file to include after the USERS file.!
		Same conditions exists as for FM:
			FAM1: to FAM9: are available.
	FT:	name of PS TRAILER file in tables/form/postscript if NOT the -t
		input parameter or, if no -t, the default (PSTLR). To specify
		NO header file use a null parameter eg #SH:lilpage#FH:#FM:#FT:#
	FF:	Use the normal font on the setter or use a reencoded one which
		will be supplied in the PS HEADER file. Default is use the
		normal font with the name supplied. Options are :
			FF:yes		Use normal font
			FF:no		Use Encoded font as defined by CMP array
					in the PSHEADER.
			FF:small	Use the Small changes to the font as
					defined in the FipSmallVec and called
					by FipReEncodeSmall in the PS HEADER.
	FZ:	Name of SETTER file to use if not the default in tables/form
	FA:	Name of SETPAGE file to use if not the default in tables/form
	FG:	FG:block	Set <b> to Block-is-group as default for this job only.
		FG:colhdr	Set <b> to Block-is-column-header as default for this job only.
		This overrides the -G Input switch for this job or the default.
	FBBOX-ONLY: Only write the PostScript Header with Bounding Box as output
		This option does NOT write any data from the file.
		When the PSHDR etc are read, the 4 values of the Bounding Box
		are available as FipHdr fields F0 to F3.
		This  will generate 4 new FipHdrs F4 to F7 which will be the
		F0 - F3 multiplied by this number. Use this with FMETA* to
		create booking/billing records in millimetres for example :
	FBBOX: Override the calculated bounding box with these values
		There MUST be 4 values - just like %%BoundingBox
			FBBOX:0 0 860 1100
	FMULTIPLE: (number) For 'book:', put (number) of pages in each file.
		The default is 1 page per file.
	FIPHDR: Copy the incoming FipHdr onto the output file and add
		these extra FipHdr fields to the end of it
		eg :	FIPHDR:nRH:opi3
		To copy the original FipHdr with no change  :
		Do NOT use '#' in the FIPHDR: string as they are intpreted as
		end of the FIPHDR: string - not as part of the new FipHdr you
		want to put on the output file.
		Certain FipHdr fields are zapped automatically, others can be
		zapped using ZAP-FIPHDR:XX,XX,XX,XX
			where XX is obviously a FipHdr field.
		Automatically zapped are XP, XT, XZ and XN
	FnoFIPHDR:	Do NOT add a FipHdr to the output file
	FSCRIPT: (path to a script)
		Run after a File (which may be a page) has been sent
		Run before a File (which may be a page) has been sent
		(Run after the whole input file has finished)
		This will run a script after the output file has been created
		with the fullpath and name of the file as the last parameter.
		Fipseq may be used to specify other parameters :
			FSCRIPT:/fip/local/create_view_file FN %d-$m-$y
		Do NOT add a 4 digit sequence on the end of the book as the name
		is in FipSeq and caters for it.
			ie in the setpage file	page:Biggy	book:	name:PFPbiggy.pdf
		(Also triggered by the '-S' input switch)
		add EPSF to %!PS line	default: yes
		Log missing/slow included EPSFs		default: yes
		FLOG-EPSF:999 will print on the screen '.r1024-2 ' for each block read where
the 1st number is the blocksize and the second the number of secs since the
	FOUTPUT-META-FILE: (fullpath and filename in FipSeq)
		Create another output file which is ONLY the FipHdr of the
		original file plus any generated FipHdr fields like the Bounding
		Box etc (the F* fields described below)
	FOUTPUT-META-APPEND:  append any meta data to an existing file
	FOUTPUT-META-OUTPUT: (string to output in place of the FipHdr)
	FSTYLE-FILE: (fullpath and filename in FipSeq)
		Read this file - which contains Markup and FipSeq for data and
		use for output. In this case the data part of the incoming file
		is ignored !!
		If using this any FIpHdr fields used should be checked beforehand so that
		any '<', '>', CR, NL and '#' are mapped out of the way
		Generally '<' is 0376 xFE, '>' is 0377 or xFF, CR and NL are SPC
		FipHdr fields in this case can be up to 16k in length rather than the normal
1023 chrs

	FDCS-PLATES: (DCS Plates in order separated by '%')
		This generates a single file containing as many plates as your have
		requested.  Note that Black, if specified, should be the FIRST plate.

		Just to confuse, 'ipsetter' will output the plates in REVERSE
		order so that the first plate, which should be Black, will be
		the LAST plate output. This is so that any subsequent process
		can wait for the Black plate before processing.

		This looks for several sub files in form/postscript called:
			1. Extra Comments for the top of the file BEFORE
			the %%EndComments. The file is called :
			where (plate) is uppercase.

				%%DocumentProcessColors: Black
				%%PlateColor: Black
				%%DocumentCustomColors: (My_Green)
				%%CMYKCustomColor: 1 0 1 0 (My_Green)
				%%PlateColor: My_Green

			2. Start of Plate. Placed AFTER the PSHDR/PSUSER and
			BEFORE any data. The file is called :

				statusdict /jobname (SN) put
				%%BeginProcessColor: Black
				%%Page: 1 1
				5 2 FV (color FD) 0 90 1315 -887 beginmark
				%%BeginDocument: ------ 0

			3. End of Plate. Placed AFTER the data.
			The file is called :


		The thing to note is that you need to Begin/End everything in the correct

		FNO-DATA:	Do NOT output any data.
				This is usually used with 'log-data' to output page infomation
				or BBOX-ONLY to output the bounding Box only
			Same as the setpage 'col:*' keyword

			Same as the setpage 'columns-per-page' keyword

			Same as the setpage 'allow-last-page-head' keyword
			Same as the setpage 'col:' keyword
			Same as the setpage 'number-of-columns' keyword
			Same as the setpage 'hole-on-every-page' keyword

Output fields are :
	FX, FY	x = width, y = depth in points*scale
	FL	no of lines
	FS	scale
	HT	is either passed thru or added (time in LONG format)
	FP	this pageno (can be changed with the 'newFP' parameter
	FD	DCS only - the Name of the current Plate
	FV	DCS only - the Number (in sequence from 1) of the current Plate

Where the file will be merged with several others by the MUI, form, you may
optionally NOT include font calls, header and trailers.

Formatting commands use the syntax :
	< (cmd) [ optional (: or =) (parameter) ] >
	Only the first letter of the command is required.
	All measurements are in points.

Commands are :
	f	Change Font			<font=times>
			Font name MUST be in the SETTER table

	p	Change Point and Set size	<p=20>

	s	Change Set size			<s:20>
		This defaults to the point size - and changes on change of point size too.

	c	Change Column width		<c=174>
		This takes effect immediately so take care.

	l	Change Leading			<l=8>
		The leading value is that moved in the Y or down direction after a Quad.
		If you need to set negative leading - well it can happen - note that
		you need to specify option 'L' first with '<o:l>' - see options below.

	q	Quad (default is Quad Left)	<q>, <q:l>, <q:r>, <q:c>, <q:m>, <q:z>
		Quad may be Left, Right, Centre or Middle (ie stretch to fill).
		All quads except Zero will then Lead down the Leading value.

		Quad:zero formats text on the line and then returns to the
		left hand margin at the same Y position.
		Note that if FipHdr Field 'FCR:' is NOT set, any combination of
		CR and/or NL will be treated as a Quad:Left as well

	t	Tab				<t:z>, <t:s 10,15,25,40>
		Tab may be Left, Right, Centre, Set, Clear, Save or Restore.
		Tab Left, Right and Centre do just that.
		Remember to set tabs beforehand using one of the three Tab Set commands.
		If no tabs have been set, a Tab LRorC becomes a Quad.

		There are 3 different ways of specifying tabs :
			- X position. ie distance from lefthand margin.
			- Width of each field
			- Divide the column width proportionally
		Tab Set <t:s ...> :
			Each tab is the X distance from the left hand margin
			in points. The righthand margin need not be specified.
			Note the tabs increment !
			<t:s 12,24,66,78,90>
		Tab Set-Width <t:w ...> :
			Each tab is the width of that tab in points.
			<t:w 12,12,42,12,12>
			Tab Set-Width can also have a REMAINDER flag set in 1
			of the fields. In this case, if the total width of all
			the tabs is less that the column width, the extra is
			added to this tab. eg <t:w 10,20R,10>  <t:w 25,R,10>
		Tab Set-Proportional <t:p ...> :
			Each tab is a proportion of the whole width :
			<t:p 1,1,2,1,1>
		Tab Clear is <t:z> This clears and ignores all tabs.
		Tab Save <t:x> notes the current settings and clears.
		Tab Restore <t:y> restores to last settings.
			This only works after a TabSave (x) NOT a TabClear (z)
		If you change Column width, re-specify (ie t:S, t:P or t:W) the tabs.

	w	White and Fixed Horizontal Space	<w>, <w:12>
		If specified with no parameter this is a White Space command
		which will force any data left and/or right within the quad
		or tab irrespective of whether the Quad/tab is L,R or C.
		Negative amounts are valid.
			eg   X123<ws>456X<t>
				X123	   456X

	x	Xtra Lead command		<x:72>, <x:-123.1>
		This drops immediately the amount specified which may be negative.

	z	Pass thru command		<z:n%%Include:JimmysFilen>
		Use this to access PostScript routines you have written in your PSHDR or USER
		The whole string assumed to be in FipSeq and is parsed before output.
		This does assume you know a little bit about PostScript, so use with care.
		Please note that if you MUST preserve (or save/restore) the
		currentpoint, use the Option '<o:z>' on or off. Normally the
		currentpoint is assumed to have been zapped.
		A PassThru is assumed to have NO width so to stop overprinting, add a
		using '<w:99>' - see above.

	n	Notes or Comment 		<n:Next Section here Please>
		This will appear in the output file as a PostScript comment
		complete with preceeding '%' :
				<n: Next Section here Please>
		becomes		% FipComment - Next Section here Please

	r	Rules				<r:10:174>
		Specify width (default is column width) then height.
		Specify up and back using a '-'	<r:10:-99.5>
		Tint (as a percentage) is an optional third parameter (default is 100 for
			eq a 25% tinted box 10 points wide and 200 up:
		To specify a coloured rule, specify the 4 CMYK values as parameters 4 to 7
				These are percentages from 0 to 100
		To specify a diagonal line, use a 5th parameter to mark the offset Y point

		Note that rules go to the RIGHT (x direction) and UP (y dir)
		To force LEFT or DOWN, use negative values.

		Coloured tints/rules may be specified by 4 numbers for CMYK in the 4th field
		 - note these go from 0 (nothing) to 1 (100%) and are C.M.Y.K
		 - separate the values with space(s)
				<r = 10 = 200 == .3 .5 0 0>

	d	Leader dots			<d>, <d:0>
		The parameter is the leader character and defaults to '.'.

	m	Set mark.			 <m:24>
		Up to 100 marks are permitted. Note that both X and Y values
		of the current position are saved.
		Note that the X value normally includes any text or spaces on the line
		up to the point where the Mark is made. To use the X from the start of the
		(or tab stop) use the option <o:x:no> (and to turn back on <o:x:yes>)
	j	Jump to Mark			<j:24>
		The Mark should have been set beforehand.
		Take care to avoid where a column or page turn comes between the
		mark and the jump as the results may be slightly weird.
		There are special cases for :
			- jump to the bottom of the current column	<j:bottom>
			- jump to the maximum Y so far			<j:maxy>
			These should normally be embedded inside Block/Block-End so that a column
			turn does not lead to weird output !

	i	Indent				<i>, <i:l:12>, <i:12>
		Specify whether left (default) or right or both.
		To clear indent, use WITHOUT parameters		 <i>.
		Indent can be used with an optional delay and/or maximum number of lines.
		Syntax: <i : left/right/both : (width) [opt : (startingLine) : (forLines)] >
			where width is is points, starting at line is where the line
			may not be the first; forLines is the indent stops after x lines
			A line is considered a Quad-with-depth which is any <q:?> except
			for a ZeroLead quad : <q:z>.
		If the indent command is specified as the first command on the line, it
		takes effect immediately. If not it starts on the next line. However the
		StartingLine does NOT alter.

	g	Page heading
		<g:/[q]Continued on Page 2[q]/[q]Continued from Page 1[q]>
		The 1st parameter is the End of the last Page and the second
		is the top of the next Page. Note the punctuation /, to separate
		the FROM from the TO - this should be unique in the string.
		This is ONLY triggered if paginated.
		Square brackets are used to signify commands.
		The End of last page is NOT counted in the depth - pls make
		allowance manually in SETPAGE.
		However the Continued to IS taken into account.
		To do different LEFT(even page) and RIGHT (odd page) headers,
			<g:L+endofRight+beginning of Left>
			<g:R+endofLeft +beginning of Right>

	h	Column headings.		<h:[f:timesb][p:12]Account[q:l]>
		This is ONLY triggered if paginated.
		Square brackets are used to signify commands.
		Do NOT embed NL or CR as these, plus the end command '>' are
		used to end the command.
		These can be replaced by a heading by specifying 'rephead:all'
		in the SETPAGE file. A heading in this case meaning the last
		block (ie between <b> and <e>).
		An alternative Col heading can be specified for the replacement
		by using :	<h:[f:roman][p:24]Prices[q]>
		Do NOT mix the separator, ':' or '=', in the same command.
		The flag must be '1' for normal and '2' for alternate hdrs.
		Use 'althead:all' to flag you want the alternate option.
		Note althead IGNORES the next block - ie replaces both the
		header and the normal column header.

	v	Dis/Allow Vertical Justification. <v:n>, <v:y>
		or Note VJ point and set max VJ addition, <v>,	<v:10>
		By default, VJ is ON automatically for pagination.
		If Vj is OFF (with a <vj:no>) then all VJ points (<v:100>, <vj> etc)
		are ignored until the next <vj:yes> or <v:y>.
		Note that you can limit the maximum amount that VJ can add
		by the 'vjinc' command in the SETPAGE file. By default this is
		120 points.

	b,e	Block				<b>, <e>
		Flag the start or end of a Block. This block will NOT be split
		by VJ unless forced to by the force: parameter in the file.
		<b> signals the beginning of the block and <e> the end.
		Blocks are used to group items together which will NOT be VJed.
		There are two types of blocks depending on :
			1. whether the input switch -G is on
			2. presence of the FipHdr field 'FG:'
		Normally <b> is Block-as-column-header meaning the program will
		attempt to float this to the top of the column. If 'rephead' or'althead'
		have been specified then the contents of the block will become
		the actual headings, replacing any default column headings.
		It is considered the best-place-to-turn-a-col-is-here and has
		higher precedence over any ColTurn-Here (<a:1> to <a:9>) except
		for Must-Turn-column-NOW (<a> on its own). It follows therefore
		that all widow and orphan checking is ignored in this case.

		If -G is ON or 'FG:block' in the FipHdr or <b:group> is specified,
		this <b> is a Block-as-group which signals that this is to be
		considered as a discrete line which can be turned only at the
		end of the block. All widow and orphan controls are
		still valid.

		For 'book' work, they can also be used to strip extra markup at the
		top of a page - see below in Column Turn point (<a>)

	a	Column turn point.
			Column MUST turn at this point		<a>
		OR	Optionally Turn column at this point	<a:3>
		OR	Do NOT turn column on BEFORE next line	<a:no>

		For optionals, the number is a priority turn (1 being highest).
		If found when checking for Widows/Orphans, this is used instead of
		number of lines. Note that <a> or <a:0> is a 'MUST turn here'
		while <a:5>, <a:9> etc are 'if you have to turn, turn here'.

		For 'book:' work the syntax is slightly different. An extra
		parameter is added which is the depth that MUST remain in the
		page/column. If less, the page/column is turned and any text
		between <b:sameNo> and <e> or <e:sameno> in the page/col hdr
		is stripped.

		The last option is <a:no> which means do-not-turn-the-column-
		before-this-line pls. You can still turn after though. This
		option is only triggered properly if orphan is >= 1.
		The optional number can be in the range 1 -> 9.

		The ColTurn marker is attached to a valid line which is defined as
		ending with a quad-with-lead - ie any Quad EXCEPT QuadZero -
		that is NOT within in Block-Column/End (within <b>...<e>).

		Note that there is an OPTION cmd <o:a:10> which will ONLY turn columns
		on <a:9> (where 9 is a number for 0 to 9) and NOT on Quads (see below)

	y	Yank or Save all text from <y> until a <Y:end>		<y>
		All data between the <y> and <y:end> is saved including
		markup. So this can be a neat way of changing Column Headings
		for continuations where a Name is required which is in the data.
	u	Unsave or restore the previously saved (ie yanked) text	<u>

	o	Options :
		There are a number of Options which all use a 2nd parameter and often a
		Note that an <o> with no other parameters will reset most options to defaults
			- Disable PointSize squeeze.
			- Set Line Justified (Ragged Off).
			- Set Word/LetterSpacing to 10% maximum.
			- Zap PassThru CurrentPoint.
			- Turn Columns on any quad, turn-point.
			- Disable Wrap within a tab.
			- Disable negative leading.
			- Allow line break.
			- Allow VJ.
			- Set min and max values for leading in VJ
			- Disable Hyphenation.

		Create an unprintable character		<o:unprintable:321>, <o:u=xFD>
			Use this option to create characters which cannot be typed in
			your word processor - or that get translated somewhere.
			The default number system is (normally) octal unless changed.
			For Hex, use the 'xZZ' notation where ZZ is 2 hex chrs : 0-9, a-f.
			Only one chr at a time can be typed in.

		Reduce Point and Set Size to squeeze data into tab or column.
			Allow			<o:p:3>
			Disable			<o:p>
			These allow/stop squeeze of data into a tab column where normally the
			data would wrap to the next line or overprint the next tab.
			The value is the minimum point size acceptable. The program
			will start by shrinking SetSize up to 25% less than current
			SetSize and then start shrinking both Point and Set proportionally.
			Note that you can also wrap text onto the next line of a column
			using 'Allow Wrap' (see below).

		Set Ragged Left, Centre or Right
			To set ragged			<o:r:left>. <o:r:r>, <o:r:c>
			To set justified (default)	<o:r>

		Allow Word and LetterSpacing
			Allow or Squeeze 		<o:c:5> - to 5 %
			Disable				<o:c>
			The default is <o:c:10> for 10% allowable squeezeover the whole line.
		Set text to letterspaced
			Add 2 pt between letters	<o:y:2>
			Disable						<o:y>
		Disable any and all Vertical Justification at all
			Disable all					<o:j> <o:justOFF>
			Ignore any OverMatter in the last column	<o:j:over>
			This just ignores any VJ command '<v>' and does NOT add extra leading.
			Columns, if specified, are turned with no stretching/shrinking.
			Any over matter is run on at the end of the last column.
			The Bounding Box will be that of the whole job. So to force use
			'bboxX', 'bboxY' (and possibly 'bboxX-zero' and 'bboxY-zero'
			in the SETPAGE file.
			The second variant <o:j:over> still allows small VJ adjustments to a column
			it does not fit exactly.

		Enable zero and negative leading	<o:l>
			Normally <l:0> and <l:-40> are ignored so that quads always increment down
the page.
			This affects ONLY Leading ie '<l:99>' as xtra lead like '<x:24>' can have
			positive or negative movements at any time.

		Reset Page Number for book/document work	<o:n:58>
		Output Page Number for book/document work	<o:n>
			This is the format used for pass thrus -	<o:n><z: ResetOnNewPage>
		Output Page Number for book/document work	<o:n:text>
			Use this for inserting the text in-line as though it was an ordinary string
				"This Page is Number <o:n:text> of millions"
		Add extra FipHdr data 				<o:n:fiphdr:Z1:towernZ2:$u>
			use escapes and FipSeq for end of lines, control chrs etc

		Make default quad Left, Centre, Right		<o:q:r>
			The normal default is Left. Use this for setting the currentpoint
			for PassThru commands to the left, centre or right of tab or column.
			(This is ONLY used if the PassThru Fudge flag is ON - otherwise the PassThru
			is placed exactly where you specify).

		For PassThru, assume the currentpoint is preserved or zapped :
			<o:z:preserve> or <o:z:p> and <o:z:zap or <o:z:z>
			Zap is the default. Zap will force a MOVETO before the
			next text while Preserve will place any text following.

		Create Fraction				<o:f:1/3>, <o:f:1 2>
			with bar or without (use space as separator)
			This will create a fraction chr by shrinking font and moving
			The advantage is that setter can determine the width.
			The Fraction Bar can be any valid chr except space and numbers. If
			it is not-printable, use XXX format to specify an octal number

		Save or Display Variables		<o:v:c22:22.9>, <o:v:a*>
			Please see the section below on variables.

		Allow/Disable Line break
			Allow line to broken at any suitable point	<o:b>, <o:b:y>
			Do NOT break line				<o:b:n>
			Use this to group text which MUST not turn.
			The default, naturally enough, is 'Allow'.

		Allow/Disable Hyphenation
			Allow Hyphenation (default)		<o:h>, <o:h:y>
			Do NOT hyphenate			<o:h:n>
			The default, naturally enough, is 'Allow'.

		Add a soft Hyphen				<o:softhyphen>
		Add a soft Quad					<o:softquad> or <o:softquad:right>
			Softs are used to hint where a line should break if there are no obvious

		Allow Wrap within tab				<o:w:yes> <o:wrap>
		Disable Wrap within tab				<o:w:no>  <o:wrap:no>
			Normally the program tries to squeeze data into a tab column for
			10% reduction (or more if using the Option Squeeze Pointsize (see
			above). This will wrap text within a tab stop.
			Care should be taken to make sure that a wrapped tab does not
			drop lower than the column depth as it will NOT be checked.
		Wrap leaders			<o:w:leaders>
						or <o:w:topleaders>
						or <o:w:bottomleaders>
			Only if Allow Wrap is ON, if a leader is specified the break will
			occur on the leader and the leader continued on the next line.
			The 'leaders' option sets leaders on both lines.
			The 'topleaders' option sets leaders on the top only.
			The 'bottomleaders' option sets leaders on the bottom only.

		Turn columns ONLY at specified (Opt) Col Turn points	<o:a:15>
		Turn columns normally on Quads, Col Turns etc		<o:a:no> (default)
			Normally columns are turned at the nearest line OR at the
			nearest Opt Col Turn (<a:5> for example).
			Specify <o:a:99> to IGNORE quads and turn ONLY on

		For EPSF, Create an OPI call rather than including the EPSF	<o:k:(OPI stub
			The Stub file should be in tables/form/postscript if not preceeded
			by a '/'.
			Specify <o:k> to turn OFF.
			Some Extra FipHdr fields are available for the OPI call
				Bounding Box parameters		- F1, F2, F3, F4
				Bounding Box plus x/y offset	- F5, F6, F7, F8
				Just the filename name		- FJ
				Full path and name		- FR
		eg :
			%%BeginObject: FipOpi $V
			%ALDImageFileName: /FJ
			%ALDImageCropRect: F1 F2 F3 F4
			%ALDImagePosition: F5 F6 F5 F8 F7 F8 F7 F6

		For setting the maximum or minimum leading acceptable
			Minimum					<o:min:3.3>
			Maximum					<o:max:9.3>
			To reset max				<o:max>
			To reset both				<o:m>

		To ignore text on the line for a Mark		<o:x:no>
		To account for text on the line for a Mark	<o:x:yes>	default
		Note that the X value normally includes any text or spaces on the line
		up to the point where the Mark is made. To use the X from the start of the
		(or tab stop) use the option <o:x:no> (and to turn back on <o:x:yes>)

	k	Include file - for PostScript this is an EPSF <k:name>
		The pathname is /fip/spool/epsf unless changed on startup.
		Note that the currentpoint is NOT set explictly so that you may
		insert after text. However normally you will want to <q> just
		before. eg for a 32 pt blob :
			GOOD	:  <x:32><q><k:widget>
			BAD	:  <q><x:32><k:widget>
				32pt xlead will be ignored
		Note also that the filename is exactly that specfied. So if you
		specify spaces, they will need to be in the file :
			<k:A Long EPSF>		"/fip/spool/epsf/A Long EPSF"
			<k:  A Long EPSF>	"/fip/spool/epsf/  A Long EPSF"
			<k:/data1/oinky/01234.eps>	"/data1/oinky/01234.eps"
			<k:../oinky/01234.eps>	"/fip/spool/oinky/01234.eps"

		These can be OPI calls if the Option 'k' flag is set:
		Here we have a Jump back to a 'marked' position.
		Then and X and Y movement
		Then we state we want this to be an OPI call using OPI-STUB-D
		as a parameter file (see the Options section above)
		The 4 numbers in the 'k' are the Aldus corner positions
			bottom left		150.24,-467.72
			top right		293.39,595.28
			Actual OPI filename	10945-1.EPS
		Finally we turn OFF opi calls with <o:k>

Note that if you want to set a < or > - which are normally cmd chrs - use the
alernate chrs which are usually 0376 for < and 0377 for >.

------------------ SETPAGE FILE -----------------------------------

The Pagination parameter file, SETPAGE, is optional and is used for ONLY those
files requiring some sort of pagination. The syntax is :

Note that there can be several lines for the same page - all starting with the
'page:' keyword. In fact for any parameters that may be specified several
times, such as 'hole:', these MUST be on separate lines otherwise only the last
on the line will be used.

	; comment
	page: (filename) 	col: (col1),(col2)..
	page: (filename)	name: (newname)
	page: (filename)	filename-size: (length)
	page: (filename)	hole:(col):(depth):(StartPosn)
	page: (filename)	noholecolhdr:
	page: (filename)	gutter: (width)
	page: (filename)	vjinc:12
	page: (filename)	widow: (NoOfLines)
	page: (filename)	orphan: (NoOfLines)
	page: (filename)	pagebreak: (col), (col)...
	page: (filename)	rules:(indent),(width),(top),(bottom)
	page: (filename)	shortrules:
	page: (filename)	rephead: (col), (col)...
			or	rephead:all
	page: (filename)	althead: (col), (col)...
			or	althead:all
	page: (filename)	bboxX: (replacement bounding box width)
	page: (filename)	bboxY: (replacement bounding box depth)
	page: (filename)	bboxX-zero: (b-box X start if not 0)
	page: (filename)	bboxY-zero: (b-box Y start if not 0)
	page: (filename)	bboxX-delta:
	page: (filename)	bboxY-delta:
	page: (filename)	all-in-one-file:
	; these are percentages
		These two are hints for the HNJ to set tight or loose.

where  filename is case-sensitive and is the name specified in the
	hdr field FK or FN or SN.
- NAME is an new name for the output file. This is forced to a
	maximum of 31 chrs, Mac style, unless amended by 'filename-size'.
	If more than one page (which means output file) is specified
	using the 'pagebreak' parameter, then the name show have some means
	of uniqueness like sequence number OR a different name.
	To specify a sequence number:	page:OINKY	name:Oinky.$s
	To Specify different names:	page:OINKY	name:Oinky1,Oinky2,BigOinky.$d
	Note that any FipSeq can be used including System Variables and Fip Hdr
	fields from the incoming file.	page:OINKY	name:SN.$d
- FILENAME-SIZE is the maximum filename size - default is 31 chrs
- GUTTER is the width in points of the gutter AND column.
	This is the left movement for the start of a new column.
- WIDOW is the no of lines required at the bottom of a column.
	Maximum is 100 lines.
- ORPHAN is the no of lines required at the top of a column.
	Maximum is 100 lines.
	Eg:	page:SHARES	widow:10	orphan:10
- COL is the no of points per column. There can be multiple 'col'.
- REPHEAD will allow column header replacement if a Block (which is
	normally a header) is at the top of the column. This can be the
	word ALL or a series of columns.  Note we assume the first
	column ALWAYS has a Block.  see note below.
- ALTHEAD uses the alternate header. This also replaces the next header
	block. The alt header is assumed to be the same depth as the
	normal header. It needs rephead to be flagged previously on the
	columns is question.
- VJINC is the maximum extra lead to inset at each vj point.
	This defaults to 120 points.
	example:	page:MICMAC	vjinc:300
- PAGEBREAK will start newpages/output files at the top of this/these columns
	example:	page:PAGE3	pagebreak:3,6
			page:PAGE3	col:100,100,100,100,100,120,120,200,200
	This will create 3 files, the first containing 2 cols, the second
	3 cols and the third 4 cols.
- RULES allows you to specify column rules in the gutters indent is the
	1st rule from the gutter measurement.  width is the width of
	the rule.  top is the drop from the top of the page. bottom is
	the bong from the bottom of the page.
		page:ricicles	rules:2,.5,2,2
- SHORTRULES is for when 2 adjacent columns are of different length. Normally
	the column rule will be to the longer of the two. This keyword
	forces the rule to the bottom of the SHORTER column only.
	No other parameters are required for 'shortrules' as 'rules'
	specifies the lot. This is no longer valid as of v41k
- HOLE allows you to leave a hole in a column for a specified depth
	either from the top of the column (default) or from a start
	depth. Where a block covers several columns, specify a 'hole'
	for each column. There is no restriction on the number of holes
	in a column.
	In the SETPAGE file, only one hole can be specified per line. So to
	specify several, use multiple lines :
	example:	page:BIGGO	col:300,300,300,300
			page:BIGGO	hole:2,20
			page:BIGGO	hole:3,20
	This will leave a space of 20 points at the top of cols 2 and 3.
	Note for 'book' the 'hole' eill only apply to the first col/page
	unless the FipHdr field FHOLE-ON-EVERY-PAGE or setpage
		page (pagename)	hole-on-every-page:
- HOLE-ON-EVERY-PAGE - see above; books only.
- BOOK:	Variable no of pages using the same col depth - no VJ.
	No Widow and orphan control - use <a:3:50> to check before
- DOCUMENT: Variable no of pages which are VJed and/or widow/orphan.
	Max is about 200 pages of 200 lines
- BBOXX: Replacement bounding box width in points.
- BBOXY: Replacement bounding box depth in points.
- BBOXX-ZERO: Replacement bounding box X position (default 0) in points.
- BBOXY-ZERO: Replacement bounding box Y position (default 0) in points.
	Normally the bounding box is calculated internally. This allows
	a different BB to be specified when you may have used PassThru
	(z command) to add extra text and rules.
	These are in points and can ONLY be defined as whole numbers
	These can also be specified as BBOX-ZERO-X and -Y for clarity (!)
- BBOX-ROUND-UP - round the BoundingBox measurements up to the nearest point
(rather than the default which is down). If the actual X or Y amount is
negetive, it is rounded down.
	Normally ipsetter runs tight - and ignores slight BBox overspill.
	Use this where some device is clipping exactly to the BBox and is
	shaving the image by a couple of decipoints
- BBOX-DELTA-X (and ..-Y) add this number of points to the BoundingBox.
- NOHOLECOLHDR: if using Holes - Do NOT add a col hdr if the Hole
	is in the middle of text - ie holes for island ads
	but still place them at the top of each Column wherever it starts.
- ALWAYS-SET-LOOSE	Flag for NEVER set tight lines for hyphenation
- CALCULATE-ZERO-BBOX	track the 0.0 position for the Bounding Box.
- EMAIL-IGNORE-HYPHENS:yes/no if hyphenation is ON, break long email addresses
but do NOT hyphenate. Default: hyphenate

------------------ SETTER FILE -----------------------------------

The parameter file holding font information, normally SETTER, has the following
syntax :

	; comment
	name: postscript		name of the output device
	defscale:1000			default scale if none specified
	band:5				band
	letterspace:3			letterspace
	unprint:o			number system used for non-printable chrs
					o - octal (default), d - decimal, h - hex.
	; first font = this will be font 0
	font:helvroman:Helvetica	font: IpsetterName : OutputDeviceName
	scale:960			scale if different from the default
	222='`ijl			widths - all letters in this font
						with this width
	afminclude:FranklinGothicITCbyBT-Book Name of an AFM file in form/fonts.
	cawtinclude:FranklinGothicITCbyBT-Book Name of an Cawt file in form/cawts.

	Width is repeated for each different width for all the chrs of a font.
	Font and widths may be repeated as many times as is needed.
	If the character is not printable, it can be specified in the normal 00
fashion. NOTE that backslash should be specified as either \ or 134.
	Note also that comments start with a semi-colon - ';'. So to Specify a
semicolon, use 73 (if octal) or 59 (decimal).

	The font can be embedded in the output file if a PFB file is left in
	Specify :
		embedfont:(Filename in form/fonts)
	eg	embedfont:EuroLogon.pfb

------------------ INPUT SWITCHES -----------------------------------

Input parameters are (all optional) :
	-1 : Name of a single file to process then stop.	default: spooled
	-0 : do NOT flag zero width chrs in the item log.	default: yes
	-b : do NOT add bounding box		default: YES
	-c : do NOT output comments		default: leave comments in
	-C : copy the output file		default: link it
		The output queue is normally on the same partition as
		/fip/x. If NOT, use -C to copy the file over.
	-d : default output destination if not overwritten by FU FK or FN hdr
		fields				default: none
	-e : Path for EPSF includes		default: spool/epsf
	-E : do NOT flag missing epsfs		default: log errors
	-f : exclude font calls			default: include
	-F : default is NOT EPSF on %!PS line	default: add
	-G : Block-as-group is default		default: Block-as-column-header
	-h : def header file name		default: tables/form/postscript/PSHDR
	-H : no ps header or trailer pls	default: add both
	-i : input queue if not default		default: spool/2set
	-l : do NOT log items through		default: log
	-L : log items AND log each col details	default: log only
	-n : Name of this Setter		default: SETTER
		Used ONLY for the Sequence Numbers
	-o : output queue if not default 	default: spool/setit
	-O : default Output filename in FipSeq	default: SN FipHdr field or 'name:' in
the SetPage file
	-p : default output parameter file 	default: tables/form/SETTER
	-P : Pass Thru fudge			default: do NOT fudge
		see notes below
	-r : use an encoding table for fonts	default: use the raw font
		This is usually CMP in the PSHDR file.
	-s : Split Input files using this splitter string	default: none
		Use this when the input file is really several files with a
		splitter string between.
	-S : For Book work, use a single output file
		with multiple pages inside	default: one file per page
	-t : def trailer file name		default: tables/form/postscript/PSTLR
	-u : User header file name in tables/form/postscript default: none
	-w : do NOT overwrite this file		default: replace
	-W : file creep time in seconds		default: none
		For files arriving from a network, this is the wait time
		Generally this should be 5 secs or more for NFS/FTP/RCPed files etc.
	-x : make x, y independent (ie transform)
	-v : version and exit

------------------ VARIABLES -----------------------------------

There are a number of save zones available to store and reuse settings. For the
following types, up to 100 zones can be saved :
	- Font Numbers
	- PointSize
	- SetSize
	- Leading
	- Column Width
	- Xlead values (vertical movement)
	- White Space (horizontal movement)

plus there are 9 marks (numbers 1-9) whose positions can be used.

- Of the 100 zones, note that zone 1 (one) is used by the system to hold the
current value and zone 0 (zero) is used to hold the previous - ie current one
before the last change.

- There are several notations used :

	The normal one is to ignore these save zones and just put the fixed amount in
the markup
		<ws: 20>			20 points of white space
		<xtraLead= 99.3>		99.3 points of extra lead
		<tab:s 10mm, 20mm, 30mm>	Tabs set at 10, 20 and 30 millimetres
	The normal one is
		% (optional Type Code) (Zone Number or Current flag or Previous flag)
	The % (percent) is the precedent char for a variable.
	The Type Code can be :
		f - Font Numbers
		p - PointSize
		s - SetSize
		l - Leading
		c - Column Width
		x - Xlead values (vertical movement)
		w - White Space (horizontal movement)
		j - Offsets from certain Mark.Jumps
		The Type Code can be left out if it is the same as that specifed.
			ie These are the same	:	<p:%p88>		<p:%88>
							<colwidth= %c66>	<c:%66>
	Current value can be specified (QuarkLike) as a '$' (dollar) :
		make setsize the current pointsize :	<s:%p$>	or <s:%p1>
	Previous valid value can be specified as '#' (hash/numbersign :
		reload the pointsize used before the last change :	<p:#> or <p:%p0>

	The six main types are :
		%p22	Use contents of PointSize zone 22.
		%22	Use contents of zone 22 of whatever you are specifying.
		%p$	Use the current pointsize
		%p#	Use the previous value pointsize
		$	Use the current value of whatever you are specifying
		#	Use the previous value of whatever you are specifying
	or	-%l$	Use the negative of the current leading

	There is a special case for offsets against a Mark or Jump.
		There are 20 marks available
		The syntax is '%j' (mark number) (0 to 5 type number)
		The folowing examples show the 6 options or variants :
			option 0 %j40 - for mark 4 - the X value of that mark
			option 1 %j81 - for mark 8 - the difference between the Column Width and the
X value of the mark
			option 2 %j72 - for mark 7 - the difference between the X value of the mark
and the current X posn
			option 3 %j33 - for mark 3 - the Y value of that mark
			option 4 %j94 - for mark 9 - the difference between the Y value of the mark
and the current Y posn
			option 5 %j95 - for mark 9 - the difference between the maximum Y attained
on the page/column and Y value of the mark

Obviously Current and Previous values (zones 1 and 0) are loaded automatically
by the program. To Load values in other zones, use the Option command :
	<o:v:c23:22.2>		load 22.2 into colwidth zone 23
	<o:v:s88 : %p88>	save contents of pointsize zone 88 in setsize zone 88
	<o:v:l66 : %p$>		save the current pointsize as leading zone 66

These values may be DISPLAYED as a PostScript Comment in the output file. Note
that the values are held as DECIpoints which appear to be 10 times bigger that
they need to be. This makes it easier for the program to process.

To Display, use Option with NO load values :
	<o:v:c77>	display the contents of colwidth zone 77
	This produces :
		%FipSet Variables:ColumnWidth : 77 = 2000
	or	%FipSet Variables:ColumnWidth : 77 = NotInUse

To Display ALL zones with data stored, use a '*' (star) :
	<o:v:p*>	display all Pointsize zones used.
To Display ALL Types and ALL zones with data stored, use a type code of 'a' and
'*' (star) :
	<o:v:a*>	display all zones used.
		%FipSet Variables:Font : Previous = f17 (0), Current = helvroman (90)
		%FipSet Variables:PointSize : Previous = 240, Current = 260, 22 = 2000

------------------ Tips, Hints and Notes -----------------------------------

-- To Spread data within a tab : ie push data either side of the centre, use
<ws> (a <w> command with no parameter)
	will be presented as 	(tab)12345	789(tab)

- Note that SOME the included header and trailer files MAY contain FipSeq :
	FH-PSHDR and FM-PSUSER - are added to the file with NO alterations
All others - FEC, FAC1-9, FT-PSTLR, FAM1-9 and all the DCS files are FipSeq'ed.
This may be important if you have files with '' in.
- Millimetres were introduced at 41j. They can be used for boh markup and
SETPAGE definitions.
	eg 	<p:9m>
		page:Shares	col:137.65mm,143.33mm

- Indents and tabs - dont mix them in this version.
	wot you can do is strip tabs, redo col width, add indent TEXT ..
	say no turn here (a:n), quad and reverse, reset col, reset tabs and tab
	goddit ?

-- RULE is placed at gutter minus diff from left of column
	ie if gutter:132 and rules:6,.5 = rule .5 pt wide drawn at 126 pts
-- COL is depth ignoring any holes
-- HOLES - pls specify only one per line only. If you have more than one hole,
use more than one line!
-- GUTTER - currently only possible to set a regular gutter - use PassThru to
alter/Translate if you need different

-- Notes on PassThru :
	- Note that the scale factor is 1000 so all sizes, Moves etc need to
multiplied by 1000.
	- ALWAYS top and tail gsave and grestore so that the address space is NOT
	- preserve currentpoint .... use gsave/grestore and opt Z <o:z:p>

-- The -P for the PassThru Fudge :
	if -P is off - ie the default - any passthru ois placed where you specify it.
text, leader dots etc can all be added before and after
	if -P is specified, if the 'z:' is FIRST item on a line or in a tab it is
flush left (or right if <o:p:r> is set) otherwise it is where it should be on
the line.
Note that both EPSFs and PassThrus has no width - even if you give one. The
currentpoint AFTER either is exactly the same as that before. So if you have
one in the middle of the line, add a white space after the EPSF/PassThru ( eg
<ws:10> ) with the width in points of the item. Plus you need to preserve
Currentpoint with a <o:p:p>.
	This works for a single pass thru ONLY per line or tab.

-- Ignore DOCUMENT for the moment - use BOOK.

-- WIDOWS and ORPHANS can be up to 100

-- If you get a log message :
Wed Sep 18 00:06:11 ipsetter !x : ** Pls Check for Missing Data - End of Data
and NOT last column  AMEX 4
	More often than NOT it is because you have added a <b> at the begining of a
fixed block and forgotten to end it with a <e>. This message says it has been
unable to turn the column as there is no break point within a fixed block.
	OR, on Unix, you are copying a large file into the spooled queue rather than
	OR you have forgotten to put any QUADS in (except Quad:Zero) - <q>, <q:r>
	OR the leading is set to 0 or a negative - <l:0>

-- Use <b> and <e> to top and tail Pagehdrs and ColHdrs (using [b] and [e]) of

Version Control
;043z12	08jan05 added embedfont:(pfb filename)
	;d-e 30may05 tuning shrink
	;f-g 01dec05 added email-ignore-hyphens in SETPAGE and opi-script/eps-script
	;h-j 10dec05 redid save_mark
	;k 6apr06 added newFP
	;l-m 15apr06 added colour to tints and allow gutter rules for book
	;n-s 14may06 bug in Break/NoBreak and colhdrs (43r also tabs bugette with lots
of dec places)
	;t 11dec06 added FBBOX: to override the bounding box on the fly
	;u-v 21feb07 small bugette with shrink and the last col
	;w-y 27mar07 added cawtinclude and o:y letterspacing and rule offset
	;z1-5 28jul07 added slow check and F/FSET ;2 rework of pfb
		;3 15feb11 bugette with tight lines ;4 variables simplified ;5 bugette when 2
'z' in sequence
		;6 upped max Marx to 100
		;7-9 25mar14 added -O default new name and <o:n:fiphdr....> plus use ipset.h
		;10-12 25jul14 v long and stupid words in hyp and softquads

;042z	28nov02	2 bugs in hyphenation
	plus W not A if 100% plus if totx<mcol & QC, allow original quad
	;c 23jan03 added bbox-round-up: and bbox-delta-x/y
	;d 11feb03 added spcIsOpt for when spacing is :
		exact=0, OKtight=-1, OKloose=1 TOOtight=-2 TOOloose=2
	;e-j 27feb03 added -s splitter and log begin/end
	;k 21jun03/01may03 added bbox-round-up: and bbox-delta-x/y as globals for ALL
pages in setpage file
	;l 04aug03 added neg BBox tracking 'calculate-zero-bbox:'
	;m 11nov03 allow other drives for WinNT includes : <k:S:/live/ads/1234>
	;n 01dec03 rounding errors - <ws:0.04000) treated wrongly
	;o 30jan04 added option cap K for scale EPSF
	<o:K:143:93>	scale the next eps to fit in a box 143 wide by 93 high
	(bugette todo - ts is NOT mm/inch)
	;p 17feb04 added -D to display NOT copy file
	;q-r 26feb04 BUG - hyphenation version where there was no separator
		- plus shrink_line not always being called correctly
	;s-u 01apr04 BUG where a line ended ' ) spc ws '
	;v-y 10dec04 added -Z for Fip OPI
	;z 03jan05 added Variables for Fonts, buglette is vary for Set
;041z	02dec00 added col:* and columns-per-page ;a/b 25jan01 bugette was
	;c 22feb01 strip leading/trailing spaces from afminclude filenames
	;d 13mar01 X amount for mark now includes any <w>
	;e 22mar01 in DCS, output the black plate LAST
	;f 30apr01 added FnoFipHdr: for output files.. plus FQ not just under
	;g/h 09may01 added FAM1-9 plus allow negative wpsc : <ws:-20>
	;j 27jun01 allow setpage in millimetres
	;k 01aug01 added filename-size in setpage plus allow setpage in inches
	;l/m 05oct01 bugette - bboxX may occasionally be too big if a full
		width rule is involved
	;o 15jan02 allow althead and colhead to have diff (and varying) depth
		added h:althead:(depth) and h:depth:(depth)
	;p 19jun02 added output-metadata-file
	;r 28jun02 output queue is now in FipSeq	FQ:/data/\PP/\PO
			(remember to use double \)
	;s 09jul02 added FSTYLE-FILE
	;u/v/w 10oct02 indents revisited
	;x/y/z 06nov02 better control of spacing and hyphens and scaling
;040z	23apr99	OPI calls and FEC: extra PS comments plus added -1 single
		plus added 'noholecolhdr:island/all'
	;a 18jun99 added top/bottomleaders <o:w:bottomleaders>
	;b 23jul99 added min-leading and max-leading
	;c 21oct99 started all-in-one-file:
	;d 19nov99 -S single book file plus WINNT bug for Binary files
	;e 22nov99 added FMULTIPLE
	;f 22feb00 added FIPHDR: and do_widgets
	;g 16mar00 added FSCRIPT: and FAC1-9:
	;h/i 03may00 redid SETTER chr widths code and added afminclude
	;j 12may00 bugette in INDENT
	;k 20jul00 NOTE new version of parse -> use $V not $S
	;m 31jul00 seqno on SetterName
	;n 10aug00 OPI- Aldus include better
	;o 06sep00 variables now work for rules too
	;p 21sep00 bugette in ColHdrs-rephead if using JUMPS
	;r 27sep00 added FDCS-PLATES for Outputting DCS Plates
	;s 03oct00 added Parse of PSTLR for NoOfCopies.....
	;t 05oct00 bugette when mixing z:PassThru and k:EpsfOrOpi on same line
	;u 19oct00 added FP as FipHdr with PageNumber..
	;v/w 23nov00 cleanup/added FKEEP-BOOK-NAME
	;y/z 27nov00 added FAM !

(copyright) 2014 and previous years FingerPost Ltd.