Swedish characters in postscript files printing as space
Nigel Bennington
nigel.bennington at royalskandia.com
Mon Feb 14 01:04:30 PST 2011
Hi,
I've analysed the document, and the only fonts used in it are Courier, Times-Roman and Times-Bold, all of which are installed in the printer. Times-Bold is in force when the swedish characters are invoked.
When we were on Solaris 8, using the base solaris printing, these documents printed fine, to the same printers - Is there any processing involved in printing a ps file with CUPS, or is it just passed directly to the printer? I note there is a pstops filter in 1.4.5, and in 1.1.21, the PPD invoked foomatics-rip. Could this be where the issue lies?
In case I haven't already said by the way, many, many thanks for the assistance.
Cheers,
> Nigel Bennington wrote:
>
> > Actually, they are coded using ISO8859P1, which should be OK, and I
> > thought UTF-8 was the font CUPS preferred? It certainly seems to be the
> > default in everything I've read. Any hints on how to tell CUPS what
> > character set encoding is in use?
> >
> > Bear in mind that the PS files are produced by a third party app, and
> > woked fine on Solaris 8, using standard SUN printing, it;'s only since
> > moving to Solaris 10 and CUPS that the issue has begun.
> >
> >> Nigel Bennington wrote:
> >>
> >> > Apologies for the delayed reply, I have been ill for a couple of days.
> >> >
> >> > I have a copy of one of the postscript files with swedish characters
> >> > in, from which I have redacted all confidential information.
> >> >
> >> > To summarise:
> >> >
> >> > On Solaris 10 (sparc), using CUPS 1,1,21 or CUPS 1.4.5, swedish
> >> > characters do not display.
> >> >
> >> > On Solaris 10 (sparc), using ghostscript to view the file, swedish
> >> > characters do not display.
> >> >
> >> > On Windows XP, using Adobe Acrobat Reader to view the file (via
> >> > conversion to pdf), swedish characters do not display.
> >> >
> >> > On Windows XP, using ghostscript to view the file, swedish characters
> >> > display without a problem.
> >> >
> >> > I can't see an upload mechanism on the forum, how do I upload the file
> >> > for you?
> >> >
> >> > Just in case, I have embedded it below the line of hyphens. below.
> >> >
> >> >
> >>
> -------------------------------------------------------------------------------
> >> >
> >> > %!PS-Adobe-1.0
> >> > % Postscri.str - SQR Postscript startup file
> >> > %
> >> > % Copyright (C) 1994 MITI All Worldwide Rights Reserved
> >> > %
> >> > % Edit:
> >> > % -----
> >> > % 02-25-93 PAB (SQR-0194)
> >> > % Modifications were made to support the various
> >> > viewers
> >> > % available on the market. (e.g. pageview on SUN Sparc)
> >> > % (_V2.5.6_)
> >> > % 05-13-94 GLD (DEV-1009) - Added 'Worldwide' Rights
> >> > % (_V3.0_)
> >> > % 08-03-94 DAN (M-023)
> >> > % Corrected location of place calculation in hline,
> >> > vline, box.
> >> > % Will be in effect on very wide lines.
> >> > % Correction made to enable overlapping lines / boxes
> >> > % 08-03-94 JLK (DEV-3016) Allow for multiple print options
> >> > % o Increased dictionary size to 100
> >> > % 09-02-94 EMP (DEV-3008) Added macros for Grafsmap PS definitions
> >> > % 09-02-94 EMP (DEV-3009)
> >> > % o Added cbox for 'crossed' box when image provided to
> >> > SQR
> >> > % is not proper
> >> > % o Added epsimg to perform EPS/AI translation and
> >> > scaling
> >> > % 09-08-94 PAB (DEV-1033)
> >> > % o Added ^D at end of file to prevent timeouts
> >> > % (_V3.5_)
> >> > % 07-31-95 PAB (DEV-4007)
> >> > % o Account for minus sign (-) floating into comma
> >> > % position when processing SPF_PNUM packet.
> >> > % 08-03-95 PAB (DEV-4001)
> >> > % o Redesigned the /ns macro for to handle alternate
> >> > % characters for the money-sign, thousand-separator
> >> > and
> >> > % decimal-separator. It now will work with EBCDIC
> >> > strings.
> >> > % o Increased dictionary size to 150.
> >> > % (_V4.0_)
> >> > % 08-13-96 PAB (OH-1753)
> >> > % o Put back the old '/ns' macro under the name '/nsv1'
> >> > for
> >> > % older SPF files.
> >> > % o Increased dictionary size to 200.
> >> > % 10-01-96 PAB (OH-1969)
> >> > % o Added 'save/restore' to instantiate each page.
> >> > % (_V4.3.2_)
> >> > % 09-01-98 PAB (TS-4353)
> >> > % o Changed comments about GRAPHIC command to
> >> > ALTER-PRINTER. % (_V4.3.5_)
> >> > % 07-14-99 PAB (OH-8391)
> >> > % o The "ns" macro now takes the textual characters for
> >> > the
> >> > % thousand and decimal indicators instead of their
> >> > % numerical value.
> >> > % (_V6.0_)
> >> > % 11-29-99 PAB (OH-9346)
> >> > % o Added /fillbox and /ebf to support COLOR
> >> > % (_EOH_)
> >> > % Note: The lines beginning '%PROLOG1' and '%PROLOG2' are required.
> >> >
> >> > /server save def % Save postscript VM stack
> >> > /sqdict 200 dict def
> >> > sqdict begin
> >> >
> >> > /FS { % pass font scale, name
> >> > findfont exch scalefont
> >> > } bind def
> >> >
> >> > /LM 0.5 def
> >> > /TM 0.1 def
> >> > /PS 12.0000 def
> >> > /CS 6.00000 def
> >> > /OR /l def
> >> > /PL 8.50 def
> >> >
> >> > % Font names: These may be changed to any fonts that are supported by
> >> > your
> >> > % printer. You may add or delete fonts. Be careful not to
> >> > % delete fonts or change font numbers in use by existing
> >> > % SQR programs. The Font_default_size is the point size used
> >> > % when no explicit size is requested.
> >> > %
> >> > % The Number's assigned below have been initialized to somewhat
> >> > % emulate the Typeface numbers used by the HP LaserJet
> >> > % (especially 3,4,5 -- Courier, Helvetica and Times-Roman) so
> >> > % SQR programs designed for both printers can use the same
> >> > % font numbers and produce similar results. If this is not
> >> > % important to you these font numbers may be reassigned any way
> >> > % you like. NOTE: SQR assumes font 3 (Courier) is a monospaced
> >> > % (not proportional) font.
> >> > %
> >> > % The first font in the list will be used if a font number is
> >> > % not found. The default font number for DECLARE PRINTER is 3.
> >> > %
> >> > % Up to three point sizes per font are cached.
> >> > %
> >> > % A boldface font (switched to automatically with the BOLD
> >> > % qualifier to the PRINT command) must have a number equal to
> >> > % 100 times the font number of its associated lightface font.
> >> > % Numbers assigned to lightface fonts must be between 1 and 99.
> >> > %
> >> > /Fonts [ % Array of point sizes and font names
> >> > % (leave these as zeros)
> >> > % Number Name Size_A Size_B Size_C ID_A ID_B ID_C
> >> > % ------ ---------------- ------ ------ ------ ---- ----
> >> > ----
> >> > 3 /Courier 0 0 0 0 0 0
> >> > 300 /Courier-Bold 0 0 0 0 0 0
> >> > 4 /Helvetica 0 0 0 0 0 0
> >> > 400 /Helvetica-Bold 0 0 0 0 0 0
> >> > 5 /Times-Roman 0 0 0 0 0 0
> >> > 500 /Times-Bold 0 0 0 0 0 0
> >> > 6 /AvantGarde-Book 0 0 0 0 0 0
> >> > 8 /Palatino-Roman 0 0 0 0 0 0
> >> > 800 /Palatino-Bold 0 0 0 0 0 0
> >> > 11 /Symbol 0 0 0 0 0 0
> >> > 12 /ZapfDingbats 0 0 0 0 0 0
> >> > 17 /ZapfChancery-MediumItalic 0 0 0 0 0 0
> >> > 18 /Bookman-Light 0 0 0 0 0 0
> >> > 23 /NewCenturySchlbk-Roman 0 0 0 0 0 0
> >> > 2300 /NewCenturySchlbk-Bold 0 0 0 0 0 0
> >> > 30 /Courier-Oblique 0 0 0 0 0 0
> >> > 3000 /Courier-BoldOblique 0 0 0 0 0 0
> >> > 31 /Helvetica-Oblique 0 0 0 0 0 0
> >> > 3100 /Helvetica-BoldOblique 0 0 0 0 0 0
> >> > 32 /Times-Italic 0 0 0 0 0 0
> >> > 3200 /Times-BoldItalic 0 0 0 0 0 0
> >> > 33 /AvantGarde-Demi 0 0 0 0 0 0
> >> > 34 /AvantGarde-BookOblique 0 0 0 0 0 0
> >> > 35 /AvantGarde-DemiOblique 0 0 0 0 0 0
> >> > 36 /Palatino-Italic 0 0 0 0 0 0
> >> > 3600 /Palatino-BoldItalic 0 0 0 0 0 0
> >> > 37 /NewCenturySchlbk-Italic 0 0 0 0 0 0
> >> > 3700 /NewCenturySchlbk-BoldItalic 0 0 0 0 0 0
> >> > 38 /Helvetica-Narrow 0 0 0 0 0 0
> >> > 3800 /Helvetica-Narrow-Bold 0 0 0 0 0 0
> >> > 39 /Helvetica-Narrow-Oblique 0 0 0 0 0 0
> >> > 3900 /Helvetica-Narrow-BoldOblique 0 0 0 0 0 0
> >> > 40 /Bookman-Demi 0 0 0 0 0 0
> >> > 41 /Bookman-LightItalic 0 0 0 0 0 0
> >> > 42 /Bookman-DemiItalic 0 0 0 0 0 0
> >> > ] def
> >> > /Font_i 8 def % Items in each Font element
> >> > /Font_default_size 12 def % Default point size
> >> >
> >> > % Select font: You can switch from one font to another within a report
> >> > by
> >> > % using the ALTER-PRINTER command and specifying the font you want:
> >> > %
> >> > % ALTER-PRINTER FONT=23 POINT-SIZE=14 ! NewCenturySchlbk-Roman, 14
> >> > points. %
> >> > % Font is setup in printer only first time it is used, for speed.
> >> > %
> >> > /SF { % Select Font: Pass number of font as defined in Fonts array,
> >> > % and point size.
> >> > /psiz exch dup 0 eq {pop Font_default_size} if def
> >> > /fid exch def
> >> > /flen Fonts length def
> >> > % Find location of font number, use 0 if not found
> >> > /fno 0 def
> >> > {fno flen ge {/fno 0 def exit} if
> >> > Fonts fno get fid eq
> >> > {exit} {/fno fno Font_i add def} ifelse} loop
> >> > % fno now points to font_number. Now find matching point size.
> >> > /fid fno def
> >> > /fno fno 2 add def
> >> > /flen fno 2 add def % Limit for sizes in array
> >> > {fno flen gt
> >> > {/fno fid 2 add def Fonts fno 3 add 0 put Fonts fno psiz put exit}
> >> > {Fonts fno get dup psiz eq
> >> > {pop exit} if 0 eq {Fonts fno psiz put exit} if} ifelse
> >> > /fno fno 1 add def} loop
> >> > % fno now points to location for point size.
> >> > Fonts fno 3 add get dup 0 eq
> >> > % Font not loaded yet.
> >> > {pop psiz Fonts fid 1 add get FS dup
> >> > Fonts exch fno 3 add exch put} if
> >> > setfont
> >> > (w) stringwidth pop (W) stringwidth pop eq
> >> > {/Font_Is_Fixed 1 def} {/Font_Is_Fixed 0 def} ifelse
> >> > } bind def
> >> >
> >> > /lmarg LM 72 mul def % Left margin
> >> > /tmarg TM 72 mul def % Top margin
> >> > /pglen PL 72 mul def % Page length
> >> >
> >> > /port % Setup for portrait
> >> > {/ypos pglen tmarg sub def
> >> > initmatrix % In case preceded by landscape page
> >> > lmarg ypos moveto} def
> >> >
> >> > /portrait
> >> > {port
> >> > /pgtop pglen tmarg sub def
> >> > /np { % New-page macro
> >> > showpage
> >> > port
> >> > } def
> >> > } def
> >> >
> >> > /land % Setup for landscape
> >> > {/ypos 612 tmarg sub def
> >> > initmatrix
> >> > 90 rotate
> >> > 0 -612 translate
> >> > lmarg ypos moveto} def
> >> >
> >> > /landscape
> >> > {land
> >> > /pgtop 612 tmarg sub def
> >> > /np { % New-page macro
> >> > showpage
> >> > land
> >> > } def
> >> > } def
> >> >
> >> > /go { % Goto location - pass SQR line, col
> >> > 1 sub CS mul lmarg add exch
> >> > 1 sub PS mul pgtop exch sub
> >> > moveto
> >> > } bind def
> >> >
> >> > /hline { % Make horizontal line.
> >> > % Pass line, col, length, thickness
> >> > % Line goes to right from location indicated
> >> > /thick exch def thick setlinewidth
> >> > /len exch CS mul def
> >> > 1 sub CS mul lmarg add exch
> >> > 1 sub PS mul pgtop exch sub
> >> > PS .15 mul thick .5 mul add sub % alter y, just below baseline
> >> > moveto
> >> > len 0 rlineto stroke
> >> > } def
> >> >
> >> > /vline { % Make vertical line.
> >> > % Pass line, col, length, thickness
> >> > % Line goes down from location indicated
> >> > /thick exch def thick setlinewidth
> >> > /len exch PS mul def
> >> > 1 sub CS mul lmarg add thick .5 mul sub exch
> >> > 1 sub PS mul pgtop exch sub
> >> > PS .15 mul sub % alter y, just below baseline
> >> > moveto
> >> > 0 len -1 mul rlineto stroke
> >> > } def
> >> >
> >> > /box { % Make box.
> >> > % Pass line, col, depth, width, thickness, shading
> >> > % Location passed is upper left corner of box
> >> > % If shading = 1, then box is not filled, but lines are
> >> > % stroked using thickness
> >> > gsave
> >> > /shading exch def
> >> > /thick exch def
> >> > shading 1 eq {thick setlinewidth} {/thick 0 def} ifelse
> >> > /width exch CS mul def
> >> > /depth exch PS mul def
> >> > 1 sub CS mul lmarg add
> >> > exch 2 sub PS mul pgtop exch sub
> >> > PS .15 mul thick .5 mul add sub % alter y, just below baseline
> >> > moveto
> >> > width 0 rlineto % Top of box
> >> > 0 depth -1 mul rlineto % Right edge
> >> > width -1 mul 0 rlineto % Bottom
> >> > closepath % Closes box
> >> > shading 1 eq {stroke} {shading setgray fill} ifelse
> >> > grestore
> >> > } def
> >> >
> >> > /fillbox { % Make box.
> >> > % Pass line, col, depth, width, thickness
> >> > % Location passed is upper left corner of box
> >> > gsave
> >> > /thick exch def
> >> > /width exch CS mul def
> >> > /depth exch PS mul def
> >> > 1 sub CS mul lmarg add
> >> > exch 2 sub PS mul pgtop exch sub
> >> > PS .15 mul thick .5 mul add sub % alter y, just below baseline
> >> > moveto
> >> > width 0 rlineto % Top of box
> >> > 0 depth -1 mul rlineto % Right edge
> >> > width -1 mul 0 rlineto % Bottom
> >> > closepath % Closes box
> >> > fill
> >> > grestore
> >> > } def
> >> >
> >> > /cbox
> >> > {
> >> > %% SQRx SQRy SQRw SQRh
> >> > gsave
> >> > %% make box
> >> > 2 index 4 index 2 index 4 index 0.2 1.00 box
> >> > newpath
> >> > 0.2 setlinewidth
> >> > 1 1 go
> >> > 0 PS PS .15 mul sub rmoveto
> >> > %% Upper left of SQR frame
> >> > 3 index 1 sub CS mul
> >> > 3 index 1 exch sub PS mul rmoveto
> >> > %% Lower right of SQR frame
> >> > 1 index CS mul
> >> > 1 index 0 exch sub PS mul rlineto
> >> > closepath
> >> > stroke
> >> > pop pop pop pop
> >> > grestore
> >> > } def
> >> >
> >> > /mtrx matrix def
> >> >
> >> > /epsimg {
> >> >
> >> > %% SQRx SQRy SQRw SQRh EPSx EPSy EPSw EPSh
> >> > 1 1 go
> >> > %% Upper left of SQR frame
> >> > 7 index 1 sub CS mul
> >> > 7 index 1 exch sub PS mul rmoveto
> >> > %% Lower left of SQR frame
> >> > 4 index 1 exch sub PS mul
> >> > 0 exch rmoveto
> >> > %% Translate from currentpoint
> >> > currentpoint translate
> >> > %% Scale to proper size
> >> > 5 index CS mul
> >> > 2 index div
> >> > 5 index PS mul
> >> > 2 index div
> >> > scale
> >> > %% Translate from EPS lower left corner
> >> > 3 index 0 exch sub
> >> > 3 index 0 exch sub
> >> > translate
> >> > %% Pop off items from stack
> >> > pop pop pop pop pop pop pop pop
> >> > } def
> >> >
> >> > /bu { % Begin underline or box or shade
> >> > currentpoint /Uy exch def /Ux exch def
> >> > } bind def
> >> >
> >> > /eu { % End underline
> >> > gsave
> >> > currentpoint
> >> > PS 6.75 div sub moveto
> >> > Ux Uy PS 6.75 div sub lineto
> >> > PS 16.67 div setlinewidth
> >> > stroke
> >> > grestore
> >> > } bind def
> >> >
> >> > /eb { % End box or shade.
> >> > % Pass line, col, depth, thickness, shading
> >> > % Calculate width, put it between depth and thickness on stack, and
> >> > % call box.
> >> > currentpoint pop Ux sub CS div 3 1 roll
> >> > box
> >> > } bind def
> >> >
> >> > /ebf { % End box or shade.
> >> > % Pass line, col, depth, thickness, shading
> >> > % Calculate width, put it between depth and thickness on stack, and
> >> > % call box.
> >> > currentpoint pop Ux sub CS div 2 1 roll
> >> > fillbox
> >> > } bind def
> >> >
> >> > /nsv1 { % Number set - pass line, col, dollar-sym, string
> >> > % Sets number in fixed character locations - for proportional fonts
> >> > % in string: _ = $ floated into comma, ' = ( floated into comma,
> >> > % ` = blank for width of comma.
> >> > /str exch def
> >> > /dlr exch def
> >> > /col exch def
> >> > /lin exch def
> >> > /j 0 def
> >> > /tchr (a) def
> >> > /digw (0) stringwidth pop def
> >> > /comw (,) stringwidth pop def
> >> > /addw digw def
> >> > /newcs col 1 sub CS mul lmarg add def
> >> > /thisln lin 1 sub PS mul pgtop exch sub def
> >> > str length
> >> > {str j get /tcod exch def
> >> > tchr 0 tcod put
> >> > /j j 1 add def
> >> > % check for special characters, set up addw
> >> > tcod 95 eq % _ - convert to $
> >> > {tchr 0 dlr put
> >> > /newcs newcs digw comw sub sub def} if
> >> > tcod 39 eq % ' - convert to (
> >> > {tchr 0 40 put
> >> > /newcs newcs digw comw sub sub def} if
> >> > tcod 78 eq % N/A
> >> > {newcs comw sub thisln moveto (N/A) sh exit} if
> >> > tcod 110 eq % n/a
> >> > {newcs thisln moveto (n/a) sh exit} if
> >> > tcod 96 eq % ` - convert to space
> >> > {tchr 0 32 put /addw comw def}
> >> > {tcod 44 eq tcod 46 eq or % , or .
> >> > {/addw comw def} {/addw digw def} ifelse}
> >> > ifelse
> >> > newcs thisln moveto tchr sh
> >> > /newcs newcs addw add def} repeat
> >> > } bind def
> >> >
> >> > /ns
> >> > {
> >> > % Number set: Sets number in fixed character locations for
> >> > % proportional fonts.
> >> > % Arguments: DecimalSep, ThousandSep, String
> >> > %
> >> > % Special # = Money-Sign (single character) floated into comma
> >> > % % = ( floated into comma
> >> > % | = blank for width of comma (was * character)
> >> > % @ = blank for width of comma
> >> > % ! = Start of Money-Sign
> >> > % = = - floated into comma
> >> > %
> >> > /String exch def
> >> > /Seps exch def
> >> > /DecimalSep Seps 0 get def
> >> > /ThousandSep Seps 1 get def
> >> >
> >> > /Dash (-) 0 get def
> >> > /Space ( ) 0 get def
> >> > /Asterick (*) 0 get def
> >> > /PoundSign (#) 0 get def
> >> > /Percent (%) 0 get def
> >> > /AtSign (@) 0 get def
> >> > /VertBar (|) 0 get def
> >> > /Bang (!) 0 get def
> >> > /Equal (=) 0 get def
> >> > /LeftParen (\() 0 get def
> >> > /RightParen (\)) 0 get def
> >> > /TextChar (a) def
> >> >
> >> > Font_Is_Fixed 1 eq
> >> > {
> >> > /Index 0 def
> >> > /Skip 0 def
> >> > String length
> >> > {
> >> > Skip 0 eq
> >> > {String Index get /TextCode exch def
> >> > TextChar 0 TextCode put
> >> > TextCode Equal eq
> >> > {TextChar 0 Dash put}
> >> > {TextCode AtSign eq
> >> > {TextChar 0 Space put}
> >> > {TextCode Percent eq
> >> > {TextChar 0 LeftParen put}
> >> > {TextCode VertBar eq
> >> > {TextChar 0 Asterick put}
> >> > if}
> >> > ifelse}
> >> > ifelse}
> >> > ifelse
> >> > TextCode Bang eq TextCode PoundSign eq or
> >> > {MS sh /Skip MS length 1 sub def}
> >> > {TextChar sh} ifelse
> >> > }
> >> > {
> >> > /Skip Skip 1 sub def
> >> > } ifelse
> >> > /Index Index 1 add def
> >> > } repeat
> >> > }
> >> > {
> >> > /ThousandChar (a) def
> >> > /DecimalChar (a) def
> >> > /DigitWidth (0) stringwidth pop def
> >> > /MSChar (a) def
> >> > /MSCode 0 def
> >> >
> >> > /ThoSepWidth ThousandChar 0 ThousandSep put ThousandChar stringwidth
> >> > pop def /DecSepWidth DecimalChar 0 DecimalSep put DecimalChar
> >> > stringwidth pop def /Nudge DigitWidth ThoSepWidth sub def
> >> >
> >> > /MoneySignWidth 0 def
> >> > /Index 0 def
> >> > String length
> >> > {
> >> > String Index get /TextCode exch def
> >> > TextCode Bang eq TextCode PoundSign eq or
> >> > {/Loop 0 def
> >> > MS length
> >> > {
> >> > MS Loop get /MSCode exch def
> >> > MSChar 0 MSCode put
> >> > /Width MSChar stringwidth pop def
> >> >
> >> > String Index get /TextCode exch def
> >> > TextCode AtSign eq
> >> > {/Width Width ThoSepWidth sub def} if
> >> > /MoneySignWidth MoneySignWidth Width add def
> >> >
> >> > /Loop Loop 1 add def
> >> > /Index Index 1 add def
> >> > } repeat
> >> > exit
> >> > } if
> >> > /Index Index 1 add def
> >> > } repeat
> >> >
> >> > %
> >> > % Get the current line and column coordinates
> >> > %
> >> > currentpoint /ThisLine exch def /NewColumn exch def
> >> >
> >> > %
> >> > % Remember the current line and column coordinates
> >> > %
> >> > /OrigColm NewColumn def
> >> > /OrigLine ThisLine def
> >> >
> >> > %
> >> > % Process each character of the number string
> >> > %
> >> > /HadMoneySign 0 def
> >> > /Index 0 def
> >> > String length
> >> > {
> >> > String Index get /TextCode exch def
> >> > TextChar 0 TextCode put
> >> > /Index Index 1 add def
> >> > TextCode PoundSign eq
> >> > {TextChar 0 MS 0 get put
> >> > /Width MoneySignWidth def
> >> > /NewColumn NewColumn Nudge sub def}
> >> > {TextCode Percent eq
> >> > {TextChar 0 LeftParen put
> >> > /Width DigitWidth def
> >> > /NewColumn NewColumn Nudge sub def}
> >> > {TextCode VertBar eq
> >> > {TextChar 0 Space put
> >> > /Width ThoSepWidth def}
> >> > {TextCode AtSign eq
> >> > {TextChar 0 Space put
> >> > /Width ThoSepWidth def}
> >> > {TextCode Equal eq
> >> > {TextChar 0 Dash put
> >> > /Width DigitWidth def
> >> > /NewColumn NewColumn Nudge sub def}
> >> > {TextCode Bang eq
> >> > {HadMoneySign 0 eq
> >> > {/HadMoneySign 1 def
> >> > /NewColumn NewColumn MoneySignWidth add def} if
> >> > /Width 0 def}
> >> > {TextCode ThousandSep eq
> >> > {/Width ThoSepWidth def}
> >> > {TextCode DecimalSep eq
> >> > {/Width DecSepWidth def}
> >> > {TextCode Space eq TextCode RightParen eq or
> >> > {TextCode Dash eq or TextCode LeftParen eq or
> >> > {/Width DigitWidth def}
> >> > {/Width TextChar stringwidth pop def}
> >> > ifelse}
> >> > ifelse}
> >> > ifelse}
> >> > ifelse}
> >> > ifelse}
> >> > ifelse}
> >> > ifelse}
> >> > ifelse}
> >> > ifelse
> >> >
> >> > Width 0 ne
> >> > {NewColumn ThisLine moveto TextChar sh
> >> > /NewColumn NewColumn Width add def
> >> > } if
> >> > } repeat
> >> >
> >> > %
> >> > % If the string had a Money-Sign in it then we need to put it
> >> > % in since the above logic simply left enough space for it.
> >> > %
> >> > HadMoneySign 1 eq
> >> > {
> >> > %
> >> > % Remember our location
> >> > %
> >> > currentpoint /CurrLine exch def /CurrColm exch def
> >> >
> >> > %
> >> > % Position to the beginning of the string
> >> > %
> >> > OrigColm OrigLine moveto
> >> >
> >> > %
> >> > % Process each character (advancing position) until we get to the
> >> > % start of the Money-String then we simply output the string.
> >> > %
> >> > /Index 0 def
> >> > String length
> >> > {
> >> > String Index get /TextCode exch def
> >> > TextChar 0 TextCode put
> >> > /Width TextChar stringwidth pop def
> >> > TextCode Space eq TextCode Dash eq or TextCode LeftParen eq or
> >> > {/Width DigitWidth def}
> >> > {TextCode Percent eq
> >> > {/Width DigitWidth Nudge sub def}
> >> > {TextCode AtSign eq
> >> > {/Width ThoSepWidth def}
> >> > {TextCode Bang eq
> >> > {MS sh exit}
> >> > if}
> >> > ifelse}
> >> > ifelse}
> >> > ifelse
> >> >
> >> > /OrigColm OrigColm Width add def
> >> > OrigColm OrigLine moveto
> >> > /Index Index 1 add def
> >> > } repeat
> >> > %
> >> > % Restore our location
> >> > %
> >> > CurrColm CurrLine moveto
> >> > } if
> >> > } ifelse
> >> > } bind def
> >> >
> >> > /sh {show} bind def % show macro
> >> >
> >> > OR /l eq {landscape} {portrait} ifelse % Choose portrait or landscape
> >> >
> >> > % for Grafsman driver
> >> >
> >> > /master /Times-Roman findfont 1.3 scalefont def
> >> > /n {newpath} def
> >> > /m {moveto} def
> >> > /l {lineto} def
> >> > /s {stroke} def
> >> > /f {gsave fill grestore} def
> >> > /d {setdash} def
> >> > /g {setgray} def
> >> > /c {closepath} def
> >> > /t {dup stringwidth exch -.5 mul exch rmoveto show} def
> >> >
> >> > end % End sqdict definitions
> >> >
> >> > %%EndProlog
> >> >
> >> > %%Page: 1 1
> >> > sqdict begin save
> >> >
> >> > 3 12 SF
> >> > /MS ($) def
> >> > 3 1 go () sh
> >> > 5 15 SF 9 1 go () sh
> >> > 9 54 go 500 15 SF (INVESTMENT REPORT) sh
> >> > 5 15 SF 5 9 SF 11 10 go (13 02926 625) sh
> >> > 11 25 go (30 September xxxx) sh
> >> > 11 45 go (.,) (000000000) ns
> >> > 5 11 SF 11 54 go 500 11 SF (Mr Björn & Mrs xxxxx-xxxxx xxxxxxx) sh
> >> > 5 11 SF 5 8 SF 13 9 go (Mr Björn & Mrs xxxxx-xxxxx xxxxxxx) sh
> >> > 14 9 go (xxxxxxxxxxxxx x) sh
> >> > 15 9 go (x-xxx xx xxxxxxxx) sh
> >> > 16 9 go (xxxxxx) sh
> >> > 17 9 go ( ) sh
> >> > 18 45 go () sh
> >> > 17 43 go (xxx) sh
> >> > 24 1 go () sh
> >> > 25 1 go () sh
> >> > 5 7 SF 26 1 go () sh
> >> > 28 26 7 81 0.00 0.86 box
> >> > 28 32 go (This statement does not confer any rights distinct from those
> >> > set out in the Policy Terms. The values quoted are for information
> >> > purposes only ) sh 29 32 go (and may not include any quarterly
> >> > Portfolio Fund charges accrued but not yet applied. The value is based
> >> > upon the latest valuation data available ) sh 30 32 go (to us and may
> >> > not reflect any applicable interest or redemption charges which may
> >> > apply in the event of the realisation of an asset. The ) sh 31 32 go
> >> > (surrender/encashment value* will be 100% of the Portfolio Fund value
> >> > reduced by any applicable charges shown in your Charges Schedule. ) sh
> >> > 32 32 go ( The death benefit* on the death of the Relevant Life Assured
> >> > \(not applicable to Redemption Bond contracts\) will be 101% of the
> >> > fund value ) sh 33 32 go (reduced by any applicable charge shown in
> >> > your Charges Schedule unless your Schedule shows a higher amount.
> >> > Please check and advise xxxxx xxxxxxx ) sh 34 32 go (within 1 month
> >> > from the date of the valuation of any discrepancies. * calculated on
> >> > the date stated in your Policy Bond Terms.) sh 37 23 go () sh 37 32 go
> >> > 500 7 SF (An invoice for the Portfolio Fund charges accrued during the
> >> > last quarter will be sent to your Fund Manager. You or your appointed
> >> > fund adviser ) sh 5 7 SF 38 32 go 500 7 SF (may wish to liaise with
> >> > them to ensure that sufficient cash is available to pay the charges.)
> >> > sh 5 7 SF 39 124 go () sh 40 124 go () sh 47 124 go () sh 47 32 go
> >> > (Member of the Association of International Life Offices. Authorised by
> >> > the FSA.xxx.xxxxxxxxxxxx.xxx) sh
> >> > 5 5 SF 50 125 go (Page 1) sh
> >> > 50 129 go (of) sh
> >> > 50 131 go (8) sh
> >> > 50 132 go 5 9 SF np
> >> > restore end
> >> > %%Page: 2 2
> >> > sqdict begin save
> >> > 5 9 SF
> >> > /MS ($) def
> >> > 9 1 go () sh
> >> > 5 15 SF 9 51 go 500 15 SF (VALUATION SUMMARY) sh
> >> > 5 15 SF 5 12 SF 11 38 go 500 12 SF (Policy No) sh
> >> > 5 12 SF 11 48 go 500 12 SF (.,) (000000000) ns
> >> > 5 12 SF 11 78 go 500 12 SF (30 September 0000) sh
> >> > 5 12 SF 5 7 SF 14 38 go 500 7 SF (SECURITY TYPE) sh
> >> > 5 7 SF 14 62 go 500 7 SF (GBP MARKET VALUE) sh
> >> > 5 7 SF 14 89 go 500 7 SF (%VALUE) sh
> >> > 5 7 SF 16 38 go (CASH) sh
> >> > 16 63 go (.,) ( @ @ @ 10,901.32) ns
> >> > 16 83 go (.,) ( @ @ @ @ 3.36) ns
> >> > 18 38 go (DEBT INSTRUMENTS) sh
> >> > 18 63 go (.,) ( @ @ @313,574.08) ns
> >> > 18 83 go (.,) ( @ @ @ @ 96.64) ns
> >> > 20 38 go 500 7 SF (TOTAL VALUE) sh
> >> > 5 7 SF 20 63 go (.,) ( @ @ @000,000.00) ns
> >> > 20 91 go 500 7 SF (100.00) sh
> >> > 5 7 SF 5 8 SF 5 5 SF 50 125 go (Page 2) sh
> >> > 50 129 go (of) sh
> >> > 50 131 go (8) sh
> >> > 50 132 go 5 9 SF np
> >> > restore end
> >> > %%Page: 3 3
> >> > sqdict begin save
> >> > 5 9 SF
> >> > /MS ($) def
> >> > 5 15 SF 9 1 go () sh
> >> > 9 51 go 500 15 SF (PORTFOLIO VALUATION) sh
> >> > 5 15 SF 5 12 SF 11 43 go 500 12 SF (Policy No) sh
> >> > 5 12 SF 11 53 go 500 12 SF (.,) (000000000) ns
> >> > 5 12 SF 11 81 go 500 12 SF (30 September 0000) sh
> >> > 5 12 SF 12 1 go () sh
> >> > 5 10 SF 17 1 go () sh
> >> > 12 1 go () sh
> >> > 14 55 go 500 10 SF (DEBT INSTRUMENTS) sh
> >> > 5 10 SF 5 7 SF 16 1 go 500 7 SF (SECURITY) sh
> >> > 5 7 SF 17 1 go 500 7 SF (NUMBER) sh
> >> > 5 7 SF 16 10 go 500 7 SF (COMPANY & STOCK NAME) sh
> >> > 5 7 SF 16 31 go 500 7 SF (CURRENCY) sh
> >> > 5 7 SF 16 42 go 500 7 SF (UNITS) sh
> >> > 5 7 SF 16 51 go 500 7 SF (GBP BK COST) sh
> >> > 5 7 SF 16 62 go 500 7 SF (MKT PRICE) sh
> >> > 5 7 SF 16 73 go 500 7 SF (GBP RATE) sh
> >> > 5 7 SF 16 83 go 500 7 SF (GBP VALUE) sh
> >> > 5 7 SF 16 92 go 500 7 SF (ACCRUED ) sh
> >> > 5 7 SF 17 92 go 500 7 SF (DAYS ) sh
> >> > 5 7 SF 16 92 go () sh
> >> > 16 104 go 500 7 SF (ACCRUED ) sh
> >> > 5 7 SF 17 104 go 500 7 SF (INTEREST ) sh
> >> > 5 7 SF 16 108 go () sh
> >> > 16 116 go 500 7 SF (UNREALISED) sh
> >> > 5 7 SF 16 126 go 500 7 SF (%PROFIT) sh
> >> > 5 7 SF 21 133 go () sh
> >> > 16 133 go () sh
> >> > 18 1 go (0000000) sh
> >> > 18 10 go (xxxxxxxxxxxxx) sh
> >> > 19 10 go (xxxx xxxxxx xx xxx) sh
> >> > 18 33 go (xxx) sh
> >> > 18 34 go (.,) ( @ @ @000,000.00000) ns
> >> > 18 47 go (.,) ( @ @ @ 00,000.00) ns
> >> > 18 60 go (.,) ( @ 00.0000000) ns
> >> > 18 71 go (.,) ( @ 00.000000) ns
> >> > 18 78 go (.,) ( @ @ @ 00,000.00) ns
> >> > 18 96 go (.,) ( @ @ @ @ 0.00) ns
> >> > 18 111 go (.,) ( @ @ @ 0,000.00) ns
> >> > 18 126 go (.,) ( 0.00) ns
> >> > 23 136 go () sh
> >> > 18 136 go () sh
> >> > 20 1 go (0000000) sh
> >> > 20 10 go (xxxxxxxxxxxxx) sh
> >> > 21 10 go (xxxx xxxxxx xx xxx) sh
> >> > 20 33 go (xxx) sh
> >> > 20 34 go (.,) ( @ @ @000,000.00000) ns
> >> > 20 47 go (.,) ( @ @ @ 0,000.00) ns
> >> > 20 60 go (.,) ( @ 00.0000000) ns
> >> > 20 71 go (.,) ( @ 00.000000) ns
> >> > 20 78 go (.,) ( @ @ @ 0,000.00) ns
> >> > 20 96 go (.,) ( @ @ @ @ 0.00) ns
> >> > 20 111 go (.,) ( @ @ @ @000.00) ns
> >> > 20 126 go (.,) ( 0.00) ns
> >> > 25 136 go () sh
> >> > 20 136 go () sh
> >> > 22 1 go (xxxxxxx) sh
> >> > 22 10 go (xxxxxxx xxxxxxxxxx) sh
> >> > 23 10 go (0% xxx/xxx 00/00/00 000 xxxxxxx xxx) sh
> >> > 22 33 go (xxx) sh
> >> > 22 34 go (.,) ( @ @ @000,000.00000) ns
> >> > 22 47 go (.,) ( @ @ @ 00,000.00) ns
> >> > 22 60 go (.,) ( @ 00.0000000) ns
> >> > 22 71 go (.,) ( @ 00.000000) ns
> >> > 22 78 go (.,) ( @ @ @ 00,000.00) ns
> >> > 22 96 go (.,) ( @ @ @ @ 0.00) ns
> >> > 22 111 go (.,) ( @ @ @ 0,000.00) ns
> >> > 22 126 go (.,) ( 00.00) ns
> >> > 27 136 go () sh
> >> > 22 136 go () sh
> >> > 24 1 go (xxxxxxx) sh
> >> > 24 10 go (xxxxxxx xxxxxxxxxx) sh
> >> > 25 10 go (000 x 00/00/00 000000 xxx) sh
> >> > 24 33 go (xxx) sh
> >> > 24 34 go (.,) ( @ @ @000,000.00000) ns
> >> > 24 47 go (.,) ( @ @ @ 00,000.00) ns
> >> > 24 60 go (.,) ( @000.0000000) ns
> >> > 24 71 go (.,) ( @ 00.000000) ns
> >> > 24 78 go (.,) ( @ @ @ 00,000.00) ns
> >> > 24 96 go (.,) ( @ @ @ @ 0.00) ns
> >> > 24 111 go (.,) ( @ @ @ 0,000.00) ns
> >> > 24 126 go (.,) ( 00.00) ns
> >> > 29 136 go () sh
> >> > 24 136 go () sh
> >> > 26 1 go (xxxxxxx) sh
> >> > 26 10 go (xxxxxxx xxxxxxxxxx) sh
> >> > 27 10 go (00/00/00 000 x 000000 xxx) sh
> >> > 26 33 go (xxx) sh
> >> > 26 34 go (.,) ( @ @ @000,000.00000) ns
> >> > 26 47 go (.,) ( @ @ @ 00,000.00) ns
> >> > 26 60 go (.,) ( @000.0000000) ns
> >> > 26 71 go (.,) ( @ 00.000000) ns
> >> > 26 78 go (.,) ( @ @ @ 00,000.00) ns
> >> > 26 96 go (.,) ( @ @ @ @ 0.00) ns
> >> > 26 111 go (.,) ( @ @ @ 0,000.00) ns
> >> > 26 126 go (.,) ( 00.00) ns
> >> > 31 136 go () sh
> >> > 26 136 go () sh
> >> > 28 1 go (xxxxxxx) sh
> >> > 28 10 go (xxx) sh
> >> > 29 10 go (xx 000 x 00/00/00 xxx) sh
> >> > 28 33 go (xxx) sh
> >> > 28 34 go (.,) ( @ @ @000,000.00000) ns
> >> > 28 47 go (.,) ( @ @ @ 00,000.00) ns
> >> > 28 60 go (.,) ( @ 00.0000000) ns
> >> > 28 71 go (.,) ( @ 00.000000) ns
> >> > 28 78 go (.,) ( @ @ @ 00,000.00) ns
> >> > 28 96 go (.,) ( @ @ @ @ 0.00) ns
> >> > 28 111 go (.,) ( @ @ @ 0,000.00) ns
> >> > 28 126 go (.,) ( 0.00) ns
> >> > 33 136 go () sh
> >> > 28 136 go () sh
> >> > 30 1 go (xxxxxxx) sh
> >> > 30 10 go (xxxx) sh
> >> > 31 10 go (xxxx xxxx xxxxxxxxxxx 000000 xxx) sh
> >> > 30 33 go (xxx) sh
> >> > 30 34 go (.,) ( @ @ @000,000.00000) ns
> >> > 30 47 go (.,) ( @ @ @ 0,000.00) ns
> >> > 30 60 go (.,) ( @ 00.0000000) ns
> >> > 30 71 go (.,) ( @ 00.000000) ns
> >> > 30 78 go (.,) ( @ @ @ 0,000.00) ns
> >> > 30 96 go (.,) ( @ @ @ @ 0.00) ns
> >> > 30 111 go (.,) ( @ @ @ @000.00) ns
> >> > 30 126 go (.,) ( 0.00) ns
> >> > 35 136 go () sh
> >> > 30 136 go () sh
> >> > 32 1 go (xxxxxxx) sh
> >> > 32 10 go (xxxxxxx xxxxxxxxxx) sh
> >> > 33 10 go (xxxx xxxx 00/00/00 xxx) sh
> >> > 32 33 go (xxX) sh
> >> > 32 34 go (.,) ( @ @ @000,000.00000) ns
> >> > 32 47 go (.,) ( @ @ @ 0,000.00) ns
> >> > 32 60 go (.,) ( @ 00.0000000) ns
> >> > 32 71 go (.,) ( @ 00.000000) ns
> >> > 32 78 go (.,) ( @ @ @ 0,000.00) ns
> >> > 32 96 go (.,) ( @ @ @ @ 0.00) ns
> >> > 32 111 go (.,) ( @ @ @ @000.00) ns
> >> > 32 126 go (.,) ( 0.00) ns
> >> > 37 136 go () sh
> >> > 32 136 go () sh
> >> > 34 1 go (xxxxxxx) sh
> >> > 34 10 go (xxxxxxx xxxxxxxxxx) sh
> >> > 35 10 go (xxxx xxxx xxx) sh
> >> > 34 33 go (xxx) sh
> >> > 34 34 go (.,) ( @ @ @000,000.00000) ns
> >> > 34 47 go (.,) ( @ @ @ 00,000.00) ns
> >> > 34 60 go (.,) ( @ 00.0000000) ns
> >> > 34 71 go (.,) ( @ 00.000000) ns
> >> > 34 78 go (.,) ( @ @ @ 00,000.00) ns
> >> > 34 96 go (.,) ( @ @ @ @ 0.00) ns
> >> > 34 111 go (.,) ( @ @ @ @000.00) ns
> >> > 34 126 go (.,) ( 0.00) ns
> >> > 39 136 go () sh
> >> > 34 136 go () sh
> >> > 36 1 go (0000000) sh
> >> > 36 10 go (xxx) sh
> >> > 37 10 go (xxxx 00/00/00 xxx) sh
> >> > 36 33 go (xxx) sh
> >> > 36 34 go (.,) ( @ @ @000,000.00000) ns
> >> > 36 47 go (.,) ( @ @ @ 0,000.00) ns
> >> > 36 60 go (.,) ( @000.0000000) ns
> >> > 36 71 go (.,) ( @ 00.000000) ns
> >> > 36 78 go (.,) ( @ @ @ 00,000.00) ns
> >> > 36 96 go (.,) ( @ @ @ @ 0.00) ns
> >> > 36 111 go (.,) ( @ @ @ 0,000.00) ns
> >> > 36 126 go (.,) ( 00.00) ns
> >> > 41 136 go () sh
> >> > 36 136 go () sh
> >> > 38 1 go (xxxxxxx) sh
> >> > 38 10 go (xxxx) sh
> >> > 39 10 go (xxxxx 000000 xxx) sh
> >> > 38 33 go (xxx) sh
> >> > 38 34 go (.,) ( @ @ @000,000.00000) ns
> >> > 38 47 go (.,) ( @ @ @ 00,000.00) ns
> >> > 38 60 go (.,) ( @ 00.0000000) ns
> >> > 38 71 go (.,) ( @ 00.000000) ns
> >> > 38 78 go (.,) ( @ @ @ 00,000.00) ns
> >> > 38 96 go (.,) ( @ @ @ @ 0.00) ns
> >> > 38 111 go (.,) ( @ @ @ =000.00) ns
> >> > 38 126 go (.,) ( -0.00) ns
> >> > 43 136 go () sh
> >> > 38 136 go () sh
> >> > 40 1 go (xxxxxxx) sh
> >> > 40 10 go (xxxxxxx xxxxxxxxxx) sh
> >> > 41 10 go (xxxxx 000000 xxx) sh
> >> > 40 33 go (xxx) sh
> >> > 40 34 go (.,) ( @ @ @000,000.00000) ns
> >> > 40 47 go (.,) ( @ @ @ 00,000.00) ns
> >> > 40 60 go (.,) ( @000.0000000) ns
> >> > 40 71 go (.,) ( @ 00.000000) ns
> >> > 40 78 go (.,) ( @ @ @ 00,000.00) ns
> >> > 40 96 go (.,) ( @ @ @ @ 0.00) ns
> >> > 40 111 go (.,) ( @ @ @ 0,000.00) ns
> >> > 40 126 go (.,) ( 00.00) ns
> >> > 45 136 go () sh
> >> > 40 136 go () sh
> >> > 42 1 go (xxxxxxx) sh
> >> > 42 10 go (xxxxxxx xxxxxxxxxx) sh
> >> > 43 10 go (0% xxx xxx 00/00/0000 xxx ) sh
> >> > 42 33 go (xxx) sh
> >> > 42 34 go (.,) ( @ @ @000,000.00000) ns
> >> > 42 47 go (.,) ( @ @ @ 00,000.00) ns
> >> > 42 60 go (.,) ( @000.0000000) ns
> >> > 42 71 go (.,) ( @ 00.000000) ns
> >> > 42 78 go (.,) ( @ @ @ 00,000.00) ns
> >> > 42 96 go (.,) ( @ @ @ @ 0.00) ns
> >> > 42 111 go (.,) ( @ @ @ 0,000.00) ns
> >> > 42 126 go (.,) ( 00.00) ns
> >> > 47 136 go () sh
> >> > 42 136 go () sh
> >> > 44 1 go (xxxxxxx) sh
> >> > 44 10 go (xxxxxxx xxxxxxxxxx) sh
> >> > 45 10 go (xxx xxxxx 00/00/0000 xxx) sh
> >> > 44 33 go (xxx) sh
> >> > 44 34 go (.,) ( @ @ @000,000.00000) ns
> >> > 44 47 go (.,) ( @ @ @ 00,000.00) ns
> >> > 44 60 go (.,) ( @000.0000000) ns
> >> > 44 71 go (.,) ( @ 00.000000) ns
> >> > 44 78 go (.,) ( @ @ @ 00,000.00) ns
> >> > 44 96 go (.,) ( @ @ @ @ 0.00) ns
> >> > 44 111 go (.,) ( @ @ @ 0,000.00) ns
> >> > 44 126 go (.,) ( 00.00) ns
> >> > 5 8 SF 5 5 SF 50 125 go (Page 3) sh
> >> > 50 129 go (of) sh
> >> > 50 131 go (8) sh
> >> > 50 132 go 5 9 SF np
> >> > restore end
> >> > %%Page: 4 4
> >> > sqdict begin save
> >> > 5 9 SF
> >> > /MS ($) def
> >> > 8 136 go () sh
> >> > 7 136 go () sh
> >> > 5 10 SF 8 55 go 500 10 SF (DEBT INSTRUMENTS) sh
> >> > 5 10 SF 5 7 SF 10 1 go 500 7 SF (SECURITY) sh
> >> > 5 7 SF 11 1 go 500 7 SF (NUMBER) sh
> >> > 5 7 SF 10 10 go 500 7 SF (COMPANY & STOCK NAME) sh
> >> > 5 7 SF 10 31 go 500 7 SF (CURRENCY) sh
> >> > 5 7 SF 10 42 go 500 7 SF (UNITS) sh
> >> > 5 7 SF 10 51 go 500 7 SF (GBP BK COST) sh
> >> > 5 7 SF 10 62 go 500 7 SF (MKT PRICE) sh
> >> > 5 7 SF 10 73 go 500 7 SF (GBP RATE) sh
> >> > 5 7 SF 10 83 go 500 7 SF (GBP VALUE) sh
> >> > 5 7 SF 10 92 go 500 7 SF (ACCRUED ) sh
> >> > 5 7 SF 11 92 go 500 7 SF (DAYS ) sh
> >> > 5 7 SF 10 92 go () sh
> >> > 10 104 go 500 7 SF (ACCRUED ) sh
> >> > 5 7 SF 11 104 go 500 7 SF (INTEREST ) sh
> >> > 5 7 SF 10 108 go () sh
> >> > 10 116 go 500 7 SF (UNREALISED) sh
> >> > 5 7 SF 10 126 go 500 7 SF (%PROFIT) sh
> >> > 5 7 SF 12 1 go (xxxxxxx) sh
> >> > 12 10 go (xxxxxxx xxxxxxxxxxxxx) sh
> >> > 13 10 go (0% xxx xxx xxx 00/0000 xxx) sh
> >> > 12 33 go (xxx) sh
> >> > 12 34 go (.,) ( @ @ @000,000.00000) ns
> >> > 12 47 go (.,) ( @ @ @ 0,000.00) ns
> >> > 12 60 go (.,) ( @000.0000000) ns
> >> > 12 71 go (.,) ( @ 00.000000) ns
> >> > 12 78 go (.,) ( @ @ @ 00,000.00) ns
> >> > 12 96 go (.,) ( @ @ @ @ 0.00) ns
> >> > 12 111 go (.,) ( @ @ @ 0,000.00) ns
> >> > 12 126 go (.,) ( 00.00) ns
> >> > 17 136 go () sh
> >> > 12 136 go () sh
> >> > 14 1 go (xxxxxxx) sh
> >> > 14 10 go (xxxxxxx xxxxxxxxxx) sh
> >> > 15 10 go (0% xxx xxx 00/00/0000 xxx) sh
> >> > 14 33 go (xxx) sh
> >> > 14 34 go (.,) ( @ @ @000,000.00000) ns
> >> > 14 47 go (.,) ( @ @ @ 00,000.00) ns
> >> > 14 60 go (.,) ( @ 00.0000000) ns
> >> > 14 71 go (.,) ( @ 00.000000) ns
> >> > 14 78 go (.,) ( @ @ @ 00,000.00) ns
> >> > 14 96 go (.,) ( @ @ @ @ 0.00) ns
> >> > 14 111 go (.,) ( @ @ @ 0,000.00) ns
> >> > 14 126 go (.,) ( 0.00) ns
> >> > 15 74 go 500 7 SF (TOTAL) sh
> >> > 5 7 SF 15 78 go (.,) ( @ @ @000,000.00) ns
> >> > 5 8 SF 5 5 SF 50 125 go (Page 4) sh
> >> > 50 129 go (of) sh
> >> > 50 131 go (8) sh
> >> > 50 132 go 5 9 SF np
> >> > restore end
> >> > %%Page: 5 5
> >> > sqdict begin save
> >> > 5 9 SF
> >> > /MS ($) def
> >> > 9 1 go () sh
> >> > 5 15 SF 9 43 go 500 15 SF (CASH ACCOUNT SUMMARY) sh
> >> > 5 15 SF 5 12 SF 11 40 go 500 12 SF (Policy No) sh
> >> > 5 12 SF 11 50 go 500 12 SF (.,) (000000000) ns
> >> > 5 12 SF 11 78 go 500 12 SF (00 xxxxxxxxx 0000) sh
> >> > 5 12 SF 12 95 go () sh
> >> > 5 7 SF 14 8 go 500 7 SF (ACCOUNT TYPE) sh
> >> > 5 7 SF 14 28 go 500 7 SF (LOCATION) sh
> >> > 5 7 SF 14 46 go 500 7 SF (REFERENCE) sh
> >> > 5 7 SF 14 65 go 500 7 SF (CURRENCY) sh
> >> > 5 7 SF 14 82 go 500 7 SF (BALANCE) sh
> >> > 5 7 SF 14 93 go 500 7 SF (EXCHANGE RATE) sh
> >> > 5 7 SF 14 117 go 500 7 SF (GBP BALANCE) sh
> >> > 5 7 SF 15 8 go (CURRENT ACCOUNT) sh
> >> > 15 28 go (xxx-x) sh
> >> > 15 46 go (00000 xxx 0-000000) sh
> >> > 15 65 go (xxX) sh
> >> > 15 76 go (.,) ( @ @ @ @-00.00) ns
> >> > 15 96 go (.,) ( @ 0.000000) ns
> >> > 15 114 go (.,) ( @ @ @ @-00.00) ns
> >> > 18 136 go () sh
> >> > 15 136 go () sh
> >> > 16 8 go (CURRENT ACCOUNT) sh
> >> > 16 28 go (xxx-x) sh
> >> > 16 46 go (00000 xxx 0-000000) sh
> >> > 16 65 go (xxx) sh
> >> > 16 76 go (.,) ( @ @ @ @ 0.00) ns
> >> > 16 96 go (.,) ( @ 0.000000) ns
> >> > 16 114 go (.,) ( @ @ @ @ 0.00) ns
> >> > 19 136 go () sh
> >> > 16 136 go () sh
> >> > 17 8 go (CURRENT ACCOUNT) sh
> >> > 17 28 go (xxx-x) sh
> >> > 17 46 go (00000 xxx 0-000000) sh
> >> > 17 65 go (xxx) sh
> >> > 17 76 go (.,) ( @ @ @000,000.00) ns
> >> > 17 96 go (.,) ( @ 00.000000) ns
> >> > 17 114 go (.,) ( @ @ @ 00,000.00) ns
> >> > 20 136 go () sh
> >> > 17 136 go () sh
> >> > 18 8 go (CURRENT ACCOUNT) sh
> >> > 18 28 go (xxx-x) sh
> >> > 18 46 go (00000 xxx 0-000000) sh
> >> > 18 65 go (xxX) sh
> >> > 18 76 go (.,) ( @ @ @ @ 0.00) ns
> >> > 18 96 go (.,) ( @ 0.000000) ns
> >> > 18 114 go (.,) ( @ @ @ @ 0.00) ns
> >> > 21 136 go () sh
> >> > 18 136 go () sh
> >> > 20 100 go 500 7 SF (TOTAL) sh
> >> > 5 7 SF 20 114 go (.,) ( @ @ @ 00,000.00) ns
> >> > 5 8 SF 47 90 go 5 5 SF 50 125 go (Page 5) sh
> >> > 50 129 go (of) sh
> >> > 50 131 go (8) sh
> >> > 50 132 go 5 9 SF np
> >> > restore end
> >> > %%Page: 6 6
> >> > sqdict begin save
> >> > 5 9 SF
> >> > /MS ($) def
> >> > 9 1 go () sh
> >> > 5 15 SF 9 47 go 500 15 SF (CASH ACCOUNT TRANSACTIONS) sh
> >> > 5 15 SF 5 12 SF 11 37 go 500 12 SF (Policy No) sh
> >> > 5 12 SF 11 47 go 500 12 SF (.,) (000000000) ns
> >> > 5 12 SF 11 81 go 500 12 SF (00 xxxxxxxxx 0000) sh
> >> > 5 12 SF 5 7 SF 14 5 go 500 7 SF (ACCOUNT CURRENCY : ) sh
> >> > 5 7 SF 14 24 go (xxx-xxxxx xxxxxxxx) sh
> >> > 15 5 go 500 7 SF (ACCOUNT TYPE : ) sh
> >> > 5 7 SF 15 24 go (xxxxxxx xxxxxxx-xxx-x) sh
> >> > 16 5 go 500 7 SF (ACCOUNT REFERENCE :) sh
> >> > 5 7 SF 16 24 go (00000 xxx 0-000000) sh
> >> > 18 5 go 500 7 SF (VALUATION DATE) sh
> >> > 5 7 SF 18 23 go 500 7 SF (REFERENCE) sh
> >> > 5 7 SF 18 43 go 500 7 SF (PARTICULARS) sh
> >> > 5 7 SF 18 92 go 500 7 SF (DEBIT) sh
> >> > 5 7 SF 18 106 go 500 7 SF (CREDIT) sh
> >> > 5 7 SF 18 119 go 500 7 SF (BALANCE) sh
> >> > 5 7 SF 5 8 SF 19 23 go (brought forward) sh
> >> > 5 7 SF 19 113 go (.,) ( @ @ @ =000.00) ns
> >> > 20 5 go (00-000-0000) sh
> >> > 20 23 go (xx-xxxxxxx) sh
> >> > 5 8 SF 20 43 go (xx-xxxxxxx:xxxxxxxxxxxxx xxxxxx: xx) sh
> >> > 5 7 SF 20 83 go (.,) ( @ @ @ @ 00.00) ns
> >> > 20 113 go (.,) ( @ @ @ =000.00) ns
> >> > 23 135 go () sh
> >> > 20 135 go () sh
> >> > 21 5 go (00-xxx-0000) sh
> >> > 21 23 go (00-0000000) sh
> >> > 5 8 SF 21 43 go (00-0000000: xxxxxxxxxxxxxxx: xxxxxxxx xxxx xxx) sh
> >> > 5 7 SF 21 98 go (.,) ( @ @ @ @ 00.00) ns
> >> > 21 113 go (.,) ( @ @ @ =000.00) ns
> >> > 24 135 go () sh
> >> > 21 135 go () sh
> >> > 22 92 go 500 7 SF (ACCOUNT TOTAL) sh
> >> > 5 7 SF 22 113 go (.,) ( @ @ @ =000.00) ns
> >> > 5 8 SF 5 5 SF 50 125 go (Page 6) sh
> >> > 50 129 go (of) sh
> >> > 50 131 go (8) sh
> >> > 50 132 go 5 9 SF np
> >> > restore end
> >> > %%Page: 7 7
> >> > sqdict begin save
> >> > 5 9 SF
> >> > /MS ($) def
> >> > 5 15 SF 9 1 go () sh
> >> > 9 47 go 500 15 SF (CASH ACCOUNT TRANSACTIONS) sh
> >> > 5 15 SF 5 12 SF 11 37 go 500 12 SF (Policy No) sh
> >> > 5 12 SF 11 47 go 500 12 SF (.,) (000000000) ns
> >> > 5 12 SF 11 81 go 500 12 SF (00 xxxxxxxxx 0000) sh
> >> > 5 12 SF 5 7 SF 14 5 go 500 7 SF (ACCOUNT CURRENCY : ) sh
> >> > 5 7 SF 14 24 go (xxx-xxxxx xxxxxxxx) sh
> >> > 15 5 go 500 7 SF (ACCOUNT TYPE : ) sh
> >> > 5 7 SF 15 24 go (xxxxxxx xxxxxxx-xxx-x) sh
> >> > 16 5 go 500 7 SF (ACCOUNT REFERENCE :) sh
> >> > 5 7 SF 16 24 go (00000 xxx 0-000000) sh
> >> > 18 5 go 500 7 SF (VALUATION DATE) sh
> >> > 5 7 SF 18 23 go 500 7 SF (REFERENCE) sh
> >> > 5 7 SF 18 43 go 500 7 SF (PARTICULARS) sh
> >> > 5 7 SF 18 92 go 500 7 SF (DEBIT) sh
> >> > 5 7 SF 18 106 go 500 7 SF (CREDIT) sh
> >> > 5 7 SF 18 119 go 500 7 SF (BALANCE) sh
> >> > 5 7 SF 5 8 SF 19 23 go (brought forward) sh
> >> > 5 7 SF 19 113 go (.,) ( @ @ @ @ 0.00) ns
> >> > 20 5 go (00-xxx-0000) sh
> >> > 20 23 go (000-0000000) sh
> >> > 5 8 SF 20 43 go (000:0000000-0:xxxxxX/xxx at 00.000000) sh
> >> > 5 7 SF 20 98 go (.,) ( @ @ @ @ 00.00) ns
> >> > 20 113 go (.,) ( @ @ @ @ 00.00) ns
> >> > 23 135 go () sh
> >> > 20 135 go () sh
> >> > 21 5 go (00-xxx-0000) sh
> >> > 21 23 go (00-0000000) sh
> >> > 5 8 SF 21 43 go (00-0000000: xxxxxxxxxxxxxxx: xxxxxxxx xx xxx) sh
> >> > 5 7 SF 21 83 go (.,) ( @ @ @ @ 00.00) ns
> >> > 21 113 go (.,) ( @ @ @ @ 0.00) ns
> >> > 24 135 go () sh
> >> > 21 135 go () sh
> >> > 22 92 go 500 7 SF (ACCOUNT TOTAL) sh
> >> > 5 7 SF 22 113 go (.,) ( @ @ @ @ 0.00) ns
> >> > 5 8 SF 5 5 SF 50 125 go (Page 7) sh
> >> > 50 129 go (of) sh
> >> > 50 131 go (8) sh
> >> > 50 132 go 5 9 SF np
> >> > restore end
> >> > %%Page: 8 8
> >> > sqdict begin save
> >> > 5 9 SF
> >> > /MS ($) def
> >> > 5 15 SF 9 1 go () sh
> >> > 9 47 go 500 15 SF (CASH ACCOUNT TRANSACTIONS) sh
> >> > 5 15 SF 5 12 SF 11 37 go 500 12 SF (Policy No) sh
> >> > 5 12 SF 11 47 go 500 12 SF (.,) (000000000) ns
> >> > 5 12 SF 11 81 go 500 12 SF (00 xxxxxxxxX 0000) sh
> >> > 5 12 SF 5 7 SF 14 5 go 500 7 SF (ACCOUNT CURRENCY : ) sh
> >> > 5 7 SF 14 24 go (xxx-xxxxxxx xxxxx) sh
> >> > 15 5 go 500 7 SF (ACCOUNT TYPE : ) sh
> >> > 5 7 SF 15 24 go (xxxxxxx xxxxxxx-xxx-x) sh
> >> > 16 5 go 500 7 SF (ACCOUNT REFERENCE :) sh
> >> > 5 7 SF 16 24 go (33978 SEK 1-369126) sh
> >> > 18 5 go 500 7 SF (VALUATION DATE) sh
> >> > 5 7 SF 18 23 go 500 7 SF (REFERENCE) sh
> >> > 5 7 SF 18 43 go 500 7 SF (PARTICULARS) sh
> >> > 5 7 SF 18 92 go 500 7 SF (DEBIT) sh
> >> > 5 7 SF 18 106 go 500 7 SF (CREDIT) sh
> >> > 5 7 SF 18 119 go 500 7 SF (BALANCE) sh
> >> > 5 7 SF 5 8 SF 19 23 go (brought forward) sh
> >> > 5 7 SF 19 113 go (.,) ( @ @ @000,000.00) ns
> >> > 20 5 go (00-xxx-0000) sh
> >> > 20 23 go (000-0000000) sh
> >> > 5 8 SF 20 43 go (000:0000000-0:xxxxxx/xxx at 00.000000) sh
> >> > 5 7 SF 20 83 go (.,) ( @ @ @ 0,000.00) ns
> >> > 20 113 go (.,) ( @ @ @000,000.00) ns
> >> > 23 135 go () sh
> >> > 20 135 go () sh
> >> > 21 92 go 500 7 SF (ACCOUNT TOTAL) sh
> >> > 5 7 SF 21 113 go (.,) ( @ @ @000,000.00) ns
> >> > 5 8 SF 5 5 SF 50 125 go (Page 8) sh
> >> > 50 129 go (of) sh
> >> > 50 131 go (8) sh
> >> > 50 132 go 5 9 SF np
> >> > restore end
> >> >
> >> > % After data:
> >> > %%Trailer
> >> > server restore % Restore Postscript VM stack
> >> >
> >> >> Nigel Bennington wrote:
> >> >>
> >> >> > Unfortunately, I can't post the documents, as they are
> >> >> > client-confidential.
> >> >> >
> >> >> > I assume that they are correctly formed, since the exact same
> >> >> > document prints perfectly when printed from a windows machine, using
> >> >> > Adobe Reader.
> >> >> >
> >> >> >> Nigel Bennington wrote:
> >> >> >>
> >> >> >> > Hi guys,
> >> >> >> >
> >> >> >> > I'm hoping you can point me in the right direction here, as I am
> >> >> >> > racking my brains over this one.
> >> >> >> >
> >> >> >> > I am running CUPS 1.1.21 (I think, that's the version string in
> >> >> >> > cupsd.conf) on Solaris 10 - If it helps, it's the CUPS from the
> >> >> >> > 10/04 companion CD.
> >> >> >> >
> >> >> >> > I have all locales installed, and base locale is set to Northern
> >> >> >> > Europe, with ISO8859P1 as the default character set.
> >> >> >> >
> >> >> >> > The problem I have is that postscript or pfd files containing
> >> >> >> > swedish characters are substituting spaces for the swedish
> >> >> >> > characters. They also display as spaces in Ghostscript.
> >> >> >> >
> >> >> >> > If I ftp the same files down to a windows system, they both print
> >> >> >> > and display correctly.
> >> >> >> >
> >> >> >> > Any pointers as to what I am doing wrong?
> >> >> >>
> >> >> >> Please post (an URL to) a sample file (PostScript preferred).
> >> >> >> If the files are created on your system, I guess either the fonts
> >> >> >> installed on your system do not contain the glyphs for the swedish
> >> >> >> characters or the creating applications do not correctly reencode
> >> >> >> the fonts.
> >> >> >>
> >> >> >> Helge
> >> >> >>
> >> >>
> >> >> Well, then, at least, do the following:
> >> >>
> >> >> Open such a file in Adobe Reader, select "properties" from the file
> >> >> menu, go to the "fonts" tab, and post what it tells about the used
> >> >> fonts (at least for some of them).
> >> >>
> >> >> Helge
> >> >>
> >>
> >> Well, as far as I can see, the "swedish characters" are encoded as UTF-8
> >> characters, and PostScript does not support UTF-8 by default. Moreover,
> >> your PS job uses the needed fonts "as is", which means - for Type1 fonts
> >> - the set of accessible glyphs ("characters") is restricted to the one
> >> defined by the "Adobe stadard encoding" (and implies similar restrictions
> >> for TrueType fonts as well).
> >>
> >> To settle the issue, you need to either
> >>
> >> a) recode the text to, say, ISO8849-1 by your application and reencode
> >> the fonts to IsoLatin1Encoding by a PostScript routine,
> >>
> >> or
> >>
> >> b) set up all the needed fonts as CID kyed composite fonts using a
> >> suitable CMap which sets up UTF-8 handling as far as needed.
> >>
> >> Approach a) is suitable only if your text data are restricted to what is
> >> called western european scripts, and approach b) is restricted only by
> >> the glyph sets of the used base fonts but is quite laborious to
> >> implement.
> >>
> >> Helge
> >>
> >>
>
> Well, only when printing plain text and friends (all the document formats
> defined as text/xxxx in mime.types) cups requires UTF-8 encoding.
>
> Postscript and PDF are onother story, the text encoding in PS or PDF files
> is completely independent of cups requirements for plain text.
>
> So if you retain the original encoding (ISO8859P1), it should be OK, but you
> still need to reencode the fonts (short of Symbol) from their native
> encoding to IsoLatn1Encoding and embed the fonts (except if this is the nat
> native encoding of the fonts installed in the printer(s).
>
> Helge
>
>
More information about the cups
mailing list