summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authormsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2013-05-10 18:56:23 +0000
committermsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2013-05-10 18:56:23 +0000
commitba85c911b93e665549c380dcf690f0a14fe59bfb (patch)
tree99130437b3dcc80bdfa56e4379edae14f87c54d2 /data
downloadcups-release-1.1.14.tar.gz
Import cups.org releasesrelease-1.1.14
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/tags/release-1.1.14@4306 a1ca3aef-8c08-0410-bb20-df032aa958be
Diffstat (limited to 'data')
-rw-r--r--data/HPGLprolog37
-rw-r--r--data/Makefile112
-rw-r--r--data/classified277
-rw-r--r--data/confidential277
-rw-r--r--data/cups.irix3
-rw-r--r--data/cups.pam2
-rw-r--r--data/cups.suse2
-rw-r--r--data/iso-8859-1251
-rw-r--r--data/iso-8859-10251
-rw-r--r--data/iso-8859-13251
-rw-r--r--data/iso-8859-14251
-rw-r--r--data/iso-8859-15251
-rw-r--r--data/iso-8859-2253
-rw-r--r--data/iso-8859-3244
-rw-r--r--data/iso-8859-4251
-rw-r--r--data/iso-8859-5251
-rw-r--r--data/iso-8859-6206
-rw-r--r--data/iso-8859-7246
-rw-r--r--data/iso-8859-8214
-rw-r--r--data/iso-8859-9251
-rw-r--r--data/koi8-r261
-rw-r--r--data/koi8-u259
-rw-r--r--data/psglyphs1051
-rw-r--r--data/secret277
-rw-r--r--data/standard261
-rw-r--r--data/testprint.ps522
-rw-r--r--data/topsecret277
-rw-r--r--data/unclassified277
-rw-r--r--data/utf-839
-rw-r--r--data/windows-1250254
-rw-r--r--data/windows-1251258
-rw-r--r--data/windows-1252254
-rw-r--r--data/windows-1253243
-rw-r--r--data/windows-1254252
-rw-r--r--data/windows-1255236
-rw-r--r--data/windows-1256259
-rw-r--r--data/windows-1257247
-rw-r--r--data/windows-1258250
-rw-r--r--data/windows-874228
39 files changed, 9586 insertions, 0 deletions
diff --git a/data/HPGLprolog b/data/HPGLprolog
new file mode 100644
index 000000000..830458243
--- /dev/null
+++ b/data/HPGLprolog
@@ -0,0 +1,37 @@
+%%BeginResource: procset hpgltops 1.1 0
+%
+% "$Id: HPGLprolog 2010 2002-01-02 17:59:21Z mike $"
+%
+% HP-GL/2 filter procset for the Common UNIX Printing System (CUPS).
+%
+% This procset contains the basic drawing commands that are used to
+% reduce output size. Note the 'MP' (make newpath) definition - this
+% should be called 'NP' (newpath), but GhostScript uses the 'NP' name
+% for 'noaccess put' in some of its font files...
+%
+% Copyright 1993-2002 Easy Software Products
+%
+% These coded instructions, statements, and computer programs are the
+% property of Easy Software Products and are protected by Federal
+% copyright law. Distribution and use rights are outlined in the file
+% "LICENSE.txt" which should have been included with this file. If this
+% file is missing or damaged please contact Easy Software Products
+% at:
+%
+% Attn: CUPS Licensing Information
+% Easy Software Products
+% 44141 Airport View Drive, Suite 204
+% Hollywood, Maryland 20636-3111 USA
+%
+% Voice: (301) 373-9603
+% EMail: cups-info@cups.org
+% WWW: http://www.cups.org
+%
+/MO { moveto } bind def
+/LI { lineto } bind def
+/FI { fill } bind def
+/ST { stroke } bind def
+/CP { closepath } bind def
+/MP { newpath } bind def
+/SP { setlinewidth setrgbcolor } bind def
+%%EndResource
diff --git a/data/Makefile b/data/Makefile
new file mode 100644
index 000000000..1f44c4ba7
--- /dev/null
+++ b/data/Makefile
@@ -0,0 +1,112 @@
+#
+# "$Id$"
+#
+# Datafile makefile for the Common UNIX Printing System (CUPS).
+#
+# Copyright 1993-2002 by Easy Software Products.
+#
+# These coded instructions, statements, and computer programs are the
+# property of Easy Software Products and are protected by Federal
+# copyright law. Distribution and use rights are outlined in the file
+# "LICENSE.txt" which should have been included with this file. If this
+# file is missing or damaged please contact Easy Software Products
+# at:
+#
+# Attn: CUPS Licensing Information
+# Easy Software Products
+# 44141 Airport View Drive, Suite 204
+# Hollywood, Maryland 20636-3111 USA
+#
+# Voice: (301) 373-9603
+# EMail: cups-info@cups.org
+# WWW: http://www.cups.org
+#
+
+include ../Makedefs
+
+#
+# Data files...
+#
+
+BANNERS = classified \
+ confidential \
+ secret \
+ standard \
+ topsecret \
+ unclassified
+
+CHARSETS = windows-874 \
+ windows-1250 \
+ windows-1251 \
+ windows-1252 \
+ windows-1253 \
+ windows-1254 \
+ windows-1255 \
+ windows-1256 \
+ windows-1257 \
+ windows-1258 \
+ koi8-r \
+ koi8-u \
+ iso-8859-1 \
+ iso-8859-2 \
+ iso-8859-3 \
+ iso-8859-4 \
+ iso-8859-5 \
+ iso-8859-6 \
+ iso-8859-7 \
+ iso-8859-8 \
+ iso-8859-9 \
+ iso-8859-10 \
+ iso-8859-13 \
+ iso-8859-14 \
+ iso-8859-15 \
+ koi8-r \
+ koi8-u \
+ utf-8
+DATAFILES = HPGLprolog psglyphs testprint.ps
+
+
+#
+# Make everything...
+#
+
+all:
+
+
+#
+# Clean all config and object files...
+#
+
+clean:
+
+
+#
+# Install files...
+#
+
+install:
+ $(INSTALL_DIR) $(DATADIR)/banners
+ for file in $(BANNERS); do \
+ $(INSTALL_DATA) $$file $(DATADIR)/banners; \
+ done
+ $(INSTALL_DIR) $(DATADIR)/charsets
+ for file in $(CHARSETS); do \
+ $(INSTALL_DATA) $$file $(DATADIR)/charsets; \
+ done
+ $(INSTALL_DIR) $(DATADIR)/data
+ for file in $(DATAFILES); do \
+ $(INSTALL_DATA) $$file $(DATADIR)/data; \
+ done
+ -if test x$(PAMDIR) != x$(BUILDROOT); then \
+ $(INSTALL_DIR) $(PAMDIR); \
+ if test -f /lib/security/pam_unix.so; then \
+ $(INSTALL_DATA) cups.suse $(PAMDIR)/cups; \
+ else \
+ $(INSTALL_DATA) cups.pam $(PAMDIR)/cups; \
+ fi \
+ fi
+
+
+#
+# End of "$Id$".
+#
diff --git a/data/classified b/data/classified
new file mode 100644
index 000000000..df921456f
--- /dev/null
+++ b/data/classified
@@ -0,0 +1,277 @@
+%!PS-Adobe-3.0
+%%BoundingBox: 0 0 612 792
+%%Pages: 1
+%%LanguageLevel: 1
+%%DocumentData: Clean7Bit
+%%DocumentSuppliedResources: procset bannerprint/1.0
+%%DocumentNeededResources: font Helvetica Helvetica-Bold Times-Roman
+%%Creator: Michael Sweet, Easy Software Products
+%%CreationDate: May 10, 2000
+%%Title: Test Page
+%%EndComments
+%%BeginProlog
+%%BeginResource procset bannerprint 1.1 0
+%
+% PostScript banner page for the Common UNIX Printing System ("CUPS").
+%
+% Copyright 1993-2002 Easy Software Products
+%
+% These coded instructions, statements, and computer programs are the
+% property of Easy Software Products and are protected by Federal
+% copyright law. Distribution and use rights are outlined in the file
+% "LICENSE.txt" which should have been included with this file. If this
+% file is missing or damaged please contact Easy Software Products
+% at:
+%
+% Attn: CUPS Licensing Information
+% Easy Software Products
+% 44141 Airport View Drive, Suite 204
+% Hollywood, Maryland 20636-3111 USA
+%
+% Voice: (301) 373-9603
+% EMail: cups-info@cups.org
+% WWW: http://www.cups.org
+%
+/CENTER { % Draw centered text
+ % (name) CENTER -
+ dup stringwidth pop % Get the width of the string
+ 0.5 mul neg 0 rmoveto % Shift left 1/2 of the distance
+ show % Show the string
+} bind def
+/RIGHT { % Draw right-justified text
+ % (name) RIGHT -
+ dup stringwidth pop % Get the width of the string
+ neg 0 rmoveto % Shift left the entire distance
+ show % Show the string
+} bind def
+/NUMBER { % Draw a number
+ % power n NUMBER -
+ 1 index 1 eq { % power == 1?
+ round cvi exch pop % Convert "n" to integer
+ } {
+ 1 index mul round exch div % Truncate extra decimal places
+ } ifelse
+ 100 string cvs show % Convert to a string and show it...
+} bind def
+/CUPSLOGO { % Draw the CUPS logo
+ % height CUPSLOGO
+ % Start with a big C...
+ /Helvetica findfont 1 index scalefont setfont
+ 0 setgray
+ 0 0 moveto
+ (C) show
+
+ % Then "UNIX Printing System" much smaller...
+ /Helvetica-Bold findfont 1 index 9 div scalefont setfont
+ 0.25 mul
+ dup dup 2.0 mul moveto
+ (UNIX) show
+ dup dup 1.6 mul moveto
+ (Printing) show
+ dup 1.2 mul moveto
+ (System) show
+} bind def
+/ESPLOGO { % Draw the ESP logo
+ % height ESPLOGO
+ % Compute the size of the logo...
+ 0 0
+ 2 index 1.5 mul 3 index
+
+ % Do the "metallic" fill from 10% black to 40% black...
+ 1 -0.001 0 {
+ dup % loopval
+ -0.15 mul % loopval * -0.15
+ 0.9 add % 0.9 - loopval * 0.15
+ setgray % set gray shade
+
+ 0 % x
+ 1 index neg % loopval
+ 1 add % 1 - loopval
+ 3 index % height
+ mul % height * (1 - loopval)
+ moveto % starting point
+
+ dup % loopval
+ 3 index % width
+ mul % loopval * width
+ 2 index % height
+ lineto % Next point
+
+ 0 % x
+ 2 index % height
+ lineto % Next point
+
+ closepath
+ fill
+
+ dup % loopval
+ 0.15 mul % loopval * 0.15
+ 0.6 add % 0.6 + loopval * 0.15
+ setgray
+
+ dup % loopval
+ neg 1 add % 1 - loopval
+ 3 index % width
+ mul % (1 - loopval) * width
+ 0 % y
+ moveto % Starting point
+
+ 2 index % width
+ exch % loopval
+ 2 index % height
+ mul % loopval * height
+ lineto % Next point
+
+ 1 index % width
+ 0 % y
+ lineto % Next point
+
+ closepath
+ fill
+ } for
+
+ 0 setgray rectstroke
+
+ /Helvetica-BoldOblique findfont 1 index 3 div scalefont setfont
+ dup 40 div
+
+ dup 4 mul 1 index 25 mul moveto (E) show
+ dup 10 mul 1 index 15 mul moveto (S) show
+ dup 16 mul 1 index 5 mul moveto (P) show
+
+ /Helvetica-BoldOblique findfont 2 index 5 div scalefont setfont
+ dup 14 mul 1 index 29 mul moveto (asy) show
+ dup 20 mul 1 index 19 mul moveto (oftware) show
+ dup 26 mul 1 index 9 mul moveto (roducts) show
+
+ pop
+} bind def
+%%EndResource
+%%EndProlog
+%%Page: 1 1
+gsave
+
+ % Determine the imageable area and device resolution...
+ initclip newpath clippath pathbbox % Get bounding rectangle
+ 72 div /pageTop exch def % Get top margin in inches
+ 72 div /pageRight exch def % Get right margin in inches
+ 72 div /pageBottom exch def % Get bottom margin in inches
+ 72 div /pageLeft exch def % Get left margin in inches
+
+ /pageWidth pageRight pageLeft sub def % pageWidth = pageRight - pageLeft
+ /pageHeight pageTop pageBottom sub def% pageHeight = pageTop - pageBottom
+
+ /boxWidth % width of text box
+ pageWidth pageHeight lt
+ { pageWidth 54 mul }
+ { pageHeight 42 mul }
+ ifelse def
+
+ newpath % Clear bounding path
+
+ % Create fonts...
+ /bigFont /Helvetica-Bold findfont % bigFont = Helvetica-Bold
+ pageHeight 3 mul scalefont def % size = pageHeight * 3 (nominally 33)
+
+ /mediumFont /Helvetica findfont % mediumFont = Helvetica
+ pageHeight 1.5 mul scalefont def % size = pageHeight * 1.5 (nominally 16.5)
+
+ % Offset page to account for lower-left margin...
+ pageLeft 72 mul
+ pageBottom 72 mul
+ translate
+
+ % Draw the label at the top and bottom...
+ 0 setgray % Color
+
+ pageWidth 36 mul % Center of page
+ pageHeight 72 mul % Top of page
+ pageWidth -7 mul add % - 2 lines
+ moveto % Position text
+ bigFont setfont % Font
+ (Classified) CENTER % Show text centered
+
+ pageWidth 36 mul % Center of page
+ pageHeight 6 mul % Bottom of page
+ moveto % Position text
+ bigFont setfont % Font
+ (Classified) CENTER % Show text centered
+
+ % Job information box...
+ pageWidth 36 mul 9 add % x = pageWidth * 1/2 * 72 + 9
+ boxWidth 0.5 mul sub % x-= 1/2 box width
+ pageHeight 30 mul 9 sub % y = pageHeight * 1/2 * 72 - 9
+ boxWidth % w = box width
+ pageHeight 14 mul % h = pageHeight * 1/2 * 72
+ 0.5 setgray rectfill % Draw a shadow
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ boxWidth 0.5 mul sub % x-= 1/2 box width
+ pageHeight 30 mul % y = pageHeight * 1/4 * 72
+ boxWidth % w = box width
+ pageHeight 14 mul % h = pageHeight * 1/2 * 72
+
+ 4 copy 1 setgray rectfill % Clear the box to white
+ 0 setgray rectstroke % Draw a black box around it...
+
+ % Job information text...
+ mediumFont setfont % Medium sized font
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight 5 mul add % y += 2 lines
+ 2 copy % Copy X & Y
+ moveto
+ (Job ID: ) RIGHT
+ moveto
+ ({printer-name}-{job-id}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight 2 mul add % y += 1 line
+ 2 copy % Copy X & Y
+ moveto
+ (Title: ) RIGHT
+ moveto
+ ({job-name}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight -1 mul add % y -= 1 line
+ 2 copy % Copy X & Y
+ moveto
+ (Requesting User: ) RIGHT
+ moveto
+ ({job-originating-user-name}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight -4 mul add % y -= 2 lines
+ 2 copy % Copy X & Y
+ moveto
+ (Billing Info: ) RIGHT
+ moveto
+ ({?job-billing}) show
+
+ % Then the CUPS logo....
+ gsave
+ pageWidth 4 mul
+ pageWidth 6 mul
+ translate
+ pageWidth 9 mul CUPSLOGO
+ grestore
+
+ % And the ESP logo....
+ gsave
+ pageWidth 59 mul
+ pageWidth 6 mul
+ translate
+ pageWidth 6 mul ESPLOGO
+ grestore
+% Show the page...
+grestore
+showpage
+%
+% End of "$Id: classified 2122 2002-01-31 14:19:37Z mike $".
+%
+%%EOF
diff --git a/data/confidential b/data/confidential
new file mode 100644
index 000000000..48744d6ef
--- /dev/null
+++ b/data/confidential
@@ -0,0 +1,277 @@
+%!PS-Adobe-3.0
+%%BoundingBox: 0 0 612 792
+%%Pages: 1
+%%LanguageLevel: 1
+%%DocumentData: Clean7Bit
+%%DocumentSuppliedResources: procset bannerprint/1.0
+%%DocumentNeededResources: font Helvetica Helvetica-Bold Times-Roman
+%%Creator: Michael Sweet, Easy Software Products
+%%CreationDate: May 10, 2000
+%%Title: Test Page
+%%EndComments
+%%BeginProlog
+%%BeginResource procset bannerprint 1.1 0
+%
+% PostScript banner page for the Common UNIX Printing System ("CUPS").
+%
+% Copyright 1993-2002 Easy Software Products
+%
+% These coded instructions, statements, and computer programs are the
+% property of Easy Software Products and are protected by Federal
+% copyright law. Distribution and use rights are outlined in the file
+% "LICENSE.txt" which should have been included with this file. If this
+% file is missing or damaged please contact Easy Software Products
+% at:
+%
+% Attn: CUPS Licensing Information
+% Easy Software Products
+% 44141 Airport View Drive, Suite 204
+% Hollywood, Maryland 20636-3111 USA
+%
+% Voice: (301) 373-9603
+% EMail: cups-info@cups.org
+% WWW: http://www.cups.org
+%
+/CENTER { % Draw centered text
+ % (name) CENTER -
+ dup stringwidth pop % Get the width of the string
+ 0.5 mul neg 0 rmoveto % Shift left 1/2 of the distance
+ show % Show the string
+} bind def
+/RIGHT { % Draw right-justified text
+ % (name) RIGHT -
+ dup stringwidth pop % Get the width of the string
+ neg 0 rmoveto % Shift left the entire distance
+ show % Show the string
+} bind def
+/NUMBER { % Draw a number
+ % power n NUMBER -
+ 1 index 1 eq { % power == 1?
+ round cvi exch pop % Convert "n" to integer
+ } {
+ 1 index mul round exch div % Truncate extra decimal places
+ } ifelse
+ 100 string cvs show % Convert to a string and show it...
+} bind def
+/CUPSLOGO { % Draw the CUPS logo
+ % height CUPSLOGO
+ % Start with a big C...
+ /Helvetica findfont 1 index scalefont setfont
+ 0 setgray
+ 0 0 moveto
+ (C) show
+
+ % Then "UNIX Printing System" much smaller...
+ /Helvetica-Bold findfont 1 index 9 div scalefont setfont
+ 0.25 mul
+ dup dup 2.0 mul moveto
+ (UNIX) show
+ dup dup 1.6 mul moveto
+ (Printing) show
+ dup 1.2 mul moveto
+ (System) show
+} bind def
+/ESPLOGO { % Draw the ESP logo
+ % height ESPLOGO
+ % Compute the size of the logo...
+ 0 0
+ 2 index 1.5 mul 3 index
+
+ % Do the "metallic" fill from 10% black to 40% black...
+ 1 -0.001 0 {
+ dup % loopval
+ -0.15 mul % loopval * -0.15
+ 0.9 add % 0.9 - loopval * 0.15
+ setgray % set gray shade
+
+ 0 % x
+ 1 index neg % loopval
+ 1 add % 1 - loopval
+ 3 index % height
+ mul % height * (1 - loopval)
+ moveto % starting point
+
+ dup % loopval
+ 3 index % width
+ mul % loopval * width
+ 2 index % height
+ lineto % Next point
+
+ 0 % x
+ 2 index % height
+ lineto % Next point
+
+ closepath
+ fill
+
+ dup % loopval
+ 0.15 mul % loopval * 0.15
+ 0.6 add % 0.6 + loopval * 0.15
+ setgray
+
+ dup % loopval
+ neg 1 add % 1 - loopval
+ 3 index % width
+ mul % (1 - loopval) * width
+ 0 % y
+ moveto % Starting point
+
+ 2 index % width
+ exch % loopval
+ 2 index % height
+ mul % loopval * height
+ lineto % Next point
+
+ 1 index % width
+ 0 % y
+ lineto % Next point
+
+ closepath
+ fill
+ } for
+
+ 0 setgray rectstroke
+
+ /Helvetica-BoldOblique findfont 1 index 3 div scalefont setfont
+ dup 40 div
+
+ dup 4 mul 1 index 25 mul moveto (E) show
+ dup 10 mul 1 index 15 mul moveto (S) show
+ dup 16 mul 1 index 5 mul moveto (P) show
+
+ /Helvetica-BoldOblique findfont 2 index 5 div scalefont setfont
+ dup 14 mul 1 index 29 mul moveto (asy) show
+ dup 20 mul 1 index 19 mul moveto (oftware) show
+ dup 26 mul 1 index 9 mul moveto (roducts) show
+
+ pop
+} bind def
+%%EndResource
+%%EndProlog
+%%Page: 1 1
+gsave
+
+ % Determine the imageable area and device resolution...
+ initclip newpath clippath pathbbox % Get bounding rectangle
+ 72 div /pageTop exch def % Get top margin in inches
+ 72 div /pageRight exch def % Get right margin in inches
+ 72 div /pageBottom exch def % Get bottom margin in inches
+ 72 div /pageLeft exch def % Get left margin in inches
+
+ /pageWidth pageRight pageLeft sub def % pageWidth = pageRight - pageLeft
+ /pageHeight pageTop pageBottom sub def% pageHeight = pageTop - pageBottom
+
+ /boxWidth % width of text box
+ pageWidth pageHeight lt
+ { pageWidth 54 mul }
+ { pageHeight 42 mul }
+ ifelse def
+
+ newpath % Clear bounding path
+
+ % Create fonts...
+ /bigFont /Helvetica-Bold findfont % bigFont = Helvetica-Bold
+ pageHeight 3 mul scalefont def % size = pageHeight * 3 (nominally 33)
+
+ /mediumFont /Helvetica findfont % mediumFont = Helvetica
+ pageHeight 1.5 mul scalefont def % size = pageHeight * 1.5 (nominally 16.5)
+
+ % Offset page to account for lower-left margin...
+ pageLeft 72 mul
+ pageBottom 72 mul
+ translate
+
+ % Draw the label at the top and bottom...
+ 0 setgray % Color
+
+ pageWidth 36 mul % Center of page
+ pageHeight 72 mul % Top of page
+ pageWidth -7 mul add % - 2 lines
+ moveto % Position text
+ bigFont setfont % Font
+ (Confidential) CENTER % Show text centered
+
+ pageWidth 36 mul % Center of page
+ pageHeight 6 mul % Bottom of page
+ moveto % Position text
+ bigFont setfont % Font
+ (Confidential) CENTER % Show text centered
+
+ % Job information box...
+ pageWidth 36 mul 9 add % x = pageWidth * 1/2 * 72 + 9
+ boxWidth 0.5 mul sub % x-= 1/2 box width
+ pageHeight 30 mul 9 sub % y = pageHeight * 1/2 * 72 - 9
+ boxWidth % w = box width
+ pageHeight 14 mul % h = pageHeight * 1/2 * 72
+ 0.5 setgray rectfill % Draw a shadow
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ boxWidth 0.5 mul sub % x-= 1/2 box width
+ pageHeight 30 mul % y = pageHeight * 1/4 * 72
+ boxWidth % w = box width
+ pageHeight 14 mul % h = pageHeight * 1/2 * 72
+
+ 4 copy 1 setgray rectfill % Clear the box to white
+ 0 setgray rectstroke % Draw a black box around it...
+
+ % Job information text...
+ mediumFont setfont % Medium sized font
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight 5 mul add % y += 2 lines
+ 2 copy % Copy X & Y
+ moveto
+ (Job ID: ) RIGHT
+ moveto
+ ({printer-name}-{job-id}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight 2 mul add % y += 1 line
+ 2 copy % Copy X & Y
+ moveto
+ (Title: ) RIGHT
+ moveto
+ ({job-name}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight -1 mul add % y -= 1 line
+ 2 copy % Copy X & Y
+ moveto
+ (Requesting User: ) RIGHT
+ moveto
+ ({job-originating-user-name}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight -4 mul add % y -= 2 lines
+ 2 copy % Copy X & Y
+ moveto
+ (Billing Info: ) RIGHT
+ moveto
+ ({?job-billing}) show
+
+ % Then the CUPS logo....
+ gsave
+ pageWidth 4 mul
+ pageWidth 6 mul
+ translate
+ pageWidth 9 mul CUPSLOGO
+ grestore
+
+ % And the ESP logo....
+ gsave
+ pageWidth 59 mul
+ pageWidth 6 mul
+ translate
+ pageWidth 6 mul ESPLOGO
+ grestore
+% Show the page...
+grestore
+showpage
+%
+% End of "$Id: confidential 2122 2002-01-31 14:19:37Z mike $".
+%
+%%EOF
diff --git a/data/cups.irix b/data/cups.irix
new file mode 100644
index 000000000..476383acb
--- /dev/null
+++ b/data/cups.irix
@@ -0,0 +1,3 @@
+#%PAM-1.0
+auth required pam_unix.so shadow nodelay nullok
+account required pam_unix.so
diff --git a/data/cups.pam b/data/cups.pam
new file mode 100644
index 000000000..f38e70184
--- /dev/null
+++ b/data/cups.pam
@@ -0,0 +1,2 @@
+auth required /lib/security/pam_pwdb.so nullok shadow
+account required /lib/security/pam_pwdb.so
diff --git a/data/cups.suse b/data/cups.suse
new file mode 100644
index 000000000..0c26fbe0d
--- /dev/null
+++ b/data/cups.suse
@@ -0,0 +1,2 @@
+auth required /lib/security/pam_unix.so nullok shadow
+account required /lib/security/pam_unix.so
diff --git a/data/iso-8859-1 b/data/iso-8859-1
new file mode 100644
index 000000000..057d8aee3
--- /dev/null
+++ b/data/iso-8859-1
@@ -0,0 +1,251 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for ISO-8859-1
+# (Latin1/West European) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8A 0160
+8B 2039
+8C 0152
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 02DC
+99 2122
+9A 0161
+9B 203A
+9C 0153
+9F 0178
+A0 00A0
+A1 00A1
+A2 00A2
+A3 00A3
+A4 00A4
+A5 00A5
+A6 00A6
+A7 00A7
+A8 00A8
+A9 00A9
+AA 00AA
+AB 00AB
+AC 00AC
+AD 00AD
+AE 00AE
+AF 00AF
+B0 00B0
+B1 00B1
+B2 00B2
+B3 00B3
+B4 00B4
+B5 00B5
+B6 00B6
+B7 00B7
+B8 00B8
+B9 00B9
+BA 00BA
+BB 00BB
+BC 00BC
+BD 00BD
+BE 00BE
+BF 00BF
+C0 00C0
+C1 00C1
+C2 00C2
+C3 00C3
+C4 00C4
+C5 00C5
+C6 00C6
+C7 00C7
+C8 00C8
+C9 00C9
+CA 00CA
+CB 00CB
+CC 00CC
+CD 00CD
+CE 00CE
+CF 00CF
+D0 00D0
+D1 00D1
+D2 00D2
+D3 00D3
+D4 00D4
+D5 00D5
+D6 00D6
+D7 00D7
+D8 00D8
+D9 00D9
+DA 00DA
+DB 00DB
+DC 00DC
+DD 00DD
+DE 00DE
+DF 00DF
+E0 00E0
+E1 00E1
+E2 00E2
+E3 00E3
+E4 00E4
+E5 00E5
+E6 00E6
+E7 00E7
+E8 00E8
+E9 00E9
+EA 00EA
+EB 00EB
+EC 00EC
+ED 00ED
+EE 00EE
+EF 00EF
+F0 00F0
+F1 00F1
+F2 00F2
+F3 00F3
+F4 00F4
+F5 00F5
+F6 00F6
+F7 00F7
+F8 00F8
+F9 00F9
+FA 00FA
+FB 00FB
+FC 00FC
+FD 00FD
+FE 00FE
+FF 00FF
diff --git a/data/iso-8859-10 b/data/iso-8859-10
new file mode 100644
index 000000000..31f55552e
--- /dev/null
+++ b/data/iso-8859-10
@@ -0,0 +1,251 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for ISO-8859-10
+# (Latin6/Nordic) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8A 0160
+8B 2039
+8C 0152
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 02DC
+99 2122
+9A 0161
+9B 203A
+9C 0153
+9F 0178
+A0 00A0
+A1 0104
+A2 0112
+A3 0122
+A4 012A
+A5 0128
+A6 0136
+A7 00A7
+A8 013B
+A9 0110
+AA 0160
+AB 0166
+AC 017D
+AD 00AD
+AE 016A
+AF 014A
+B0 00B0
+B1 0105
+B2 0113
+B3 0123
+B4 012B
+B5 0129
+B6 0137
+B7 00B7
+B8 013C
+B9 0111
+BA 0161
+BB 0167
+BC 017E
+BD 2015
+BE 016B
+BF 014B
+C0 0100
+C1 00C1
+C2 00C2
+C3 00C3
+C4 00C4
+C5 00C5
+C6 00C6
+C7 012E
+C8 010C
+C9 00C9
+CA 0118
+CB 00CB
+CC 0116
+CD 00CD
+CE 00CE
+CF 00CF
+D0 0110
+D1 0145
+D2 014C
+D3 00D3
+D4 00D4
+D5 00D5
+D6 00D6
+D7 0168
+D8 00D8
+D9 0172
+DA 00DA
+DB 00DB
+DC 00DC
+DD 00DD
+DE 00DE
+DF 00DF
+E0 0101
+E1 00E1
+E2 00E2
+E3 00E3
+E4 00E4
+E5 00E5
+E6 00E6
+E7 012F
+E8 010D
+E9 00E9
+EA 0119
+EB 00EB
+EC 0117
+ED 00ED
+EE 00EE
+EF 00EF
+F0 00F0
+F1 0146
+F2 014D
+F3 00F3
+F4 00F4
+F5 00F5
+F6 00F6
+F7 0169
+F8 00F8
+F9 0173
+FA 00FA
+FB 00FB
+FC 00FC
+FD 00FD
+FE 00FD
+FF 0138
diff --git a/data/iso-8859-13 b/data/iso-8859-13
new file mode 100644
index 000000000..dcfacca9d
--- /dev/null
+++ b/data/iso-8859-13
@@ -0,0 +1,251 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for ISO-8859-13
+# (Latin7/Baltic Rim) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8A 0160
+8B 2039
+8C 0152
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 02DC
+99 2122
+9A 0161
+9B 203A
+9C 0153
+9F 0178
+A0 00A0
+A1 201D
+A2 00A2
+A3 00A3
+A4 00A4
+A5 201E
+A6 00A6
+A7 00A7
+A8 00D8
+A9 00A9
+AA 0156
+AB 00AB
+AC 00AC
+AD 00AD
+AE 00AE
+AF 00C6
+B0 00B0
+B1 00B1
+B2 00B2
+B3 00B3
+B4 201C
+B5 00B5
+B6 00B6
+B7 00B7
+B8 00F8
+B9 00B9
+BA 0157
+BB 00BB
+BC 00BC
+BD 00BD
+BE 00BE
+BF 00E6
+C0 0104
+C1 012E
+C2 0100
+C3 0106
+C4 00C4
+C5 00C5
+C6 0118
+C7 0112
+C8 010C
+C9 00C9
+CA 0179
+CB 0116
+CC 0122
+CD 0136
+CE 012A
+CF 013B
+D0 0160
+D1 0143
+D2 0145
+D3 00D3
+D4 014C
+D5 00D5
+D6 00D6
+D7 00D7
+D8 0172
+D9 0141
+DA 015A
+DB 016A
+DC 00DC
+DD 017B
+DE 017D
+DF 00DF
+E0 0105
+E1 012F
+E2 0101
+E3 0107
+E4 00E4
+E5 00E5
+E6 0119
+E7 0113
+E8 010D
+E9 00E9
+EA 017A
+EB 0117
+EC 0123
+ED 0137
+EE 012B
+EF 013C
+F0 0161
+F1 0144
+F2 0146
+F3 00F3
+F4 014D
+F5 00F5
+F6 00F6
+F7 00F7
+F8 0173
+F9 0142
+FA 015B
+FB 016B
+FC 00FC
+FD 017C
+FE 017E
+FF 2019
diff --git a/data/iso-8859-14 b/data/iso-8859-14
new file mode 100644
index 000000000..ca0097a47
--- /dev/null
+++ b/data/iso-8859-14
@@ -0,0 +1,251 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for ISO-8859-14
+# (Latin8/Celtic) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8A 0160
+8B 2039
+8C 0152
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 02DC
+99 2122
+9A 0161
+9B 203A
+9C 0153
+9F 0178
+A0 00A0
+A1 1E02
+A2 1E03
+A3 00A3
+A4 010A
+A5 010B
+A6 1E0A
+A7 00A7
+A8 1E80
+A9 00A9
+AA 1E82
+AB 1E0B
+AC 1EF2
+AD 00AD
+AE 00AE
+AF 0178
+B0 1E1E
+B1 1E1F
+B2 0120
+B3 0121
+B4 1E40
+B5 1E41
+B6 00B6
+B7 1E56
+B8 1E81
+B9 1E57
+BA 1E83
+BB 1E60
+BC 1EF3
+BD 1E84
+BE 1E85
+BF 1E61
+C0 00C0
+C1 00C1
+C2 00C2
+C3 00C3
+C4 00C4
+C5 00C5
+C6 00C6
+C7 00C7
+C8 00C8
+C9 00C9
+CA 00CA
+CB 00CB
+CC 00CC
+CD 00CD
+CE 00CE
+CF 00CF
+D0 0174
+D1 00D1
+D2 00D2
+D3 00D3
+D4 00D4
+D5 00D5
+D6 00D6
+D7 1E6A
+D8 00D8
+D9 00D9
+DA 00DA
+DB 00DB
+DC 00DC
+DD 00DD
+DE 0176
+DF 00DF
+E0 00E0
+E1 00E1
+E2 00E2
+E3 00E3
+E4 00E4
+E5 00E5
+E6 00E6
+E7 00E7
+E8 00E8
+E9 00E9
+EA 00EA
+EB 00EB
+EC 00EC
+ED 00ED
+EE 00EE
+EF 00EF
+F0 0175
+F1 00F1
+F2 00F2
+F3 00F3
+F4 00F4
+F5 00F5
+F6 00F6
+F7 1E6B
+F8 00F8
+F9 00F9
+FA 00FA
+FB 00FB
+FC 00FC
+FD 00FD
+FE 0177
+FF 00FF
diff --git a/data/iso-8859-15 b/data/iso-8859-15
new file mode 100644
index 000000000..334160f4f
--- /dev/null
+++ b/data/iso-8859-15
@@ -0,0 +1,251 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for ISO-8859-15
+# (Latin9/West Europe + Euro) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8A 0160
+8B 2039
+8C 0152
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 02DC
+99 2122
+9A 0161
+9B 203A
+9C 0153
+9F 0178
+A0 00A0
+A1 00A1
+A2 00A2
+A3 00A3
+A4 20AC
+A5 00A5
+A6 0160
+A7 00A7
+A8 0161
+A9 00A9
+AA 00AA
+AB 00AB
+AC 00AC
+AD 00AD
+AE 00AE
+AF 00AF
+B0 00B0
+B1 00B1
+B2 00B2
+B3 00B3
+B4 017D
+B5 00B5
+B6 00B6
+B7 00B7
+B8 017E
+B9 00B9
+BA 00BA
+BB 00BB
+BC 0152
+BD 0153
+BE 0178
+BF 00BF
+C0 00C0
+C1 00C1
+C2 00C2
+C3 00C3
+C4 00C4
+C5 00C5
+C6 00C6
+C7 00C7
+C8 00C8
+C9 00C9
+CA 00CA
+CB 00CB
+CC 00CC
+CD 00CD
+CE 00CE
+CF 00CF
+D0 00D0
+D1 00D1
+D2 00D2
+D3 00D3
+D4 00D4
+D5 00D5
+D6 00D6
+D7 00D7
+D8 00D8
+D9 00D9
+DA 00DA
+DB 00DB
+DC 00DC
+DD 00DD
+DE 00DE
+DF 00DF
+E0 00E0
+E1 00E1
+E2 00E2
+E3 00E3
+E4 00E4
+E5 00E5
+E6 00E6
+E7 00E7
+E8 00E8
+E9 00E9
+EA 00EA
+EB 00EB
+EC 00EC
+ED 00ED
+EE 00EE
+EF 00EF
+F0 00F0
+F1 00F1
+F2 00F2
+F3 00F3
+F4 00F4
+F5 00F5
+F6 00F6
+F7 00F7
+F8 00F8
+F9 00F9
+FA 00FA
+FB 00FB
+FC 00FC
+FD 00FD
+FE 00FE
+FF 00FF
diff --git a/data/iso-8859-2 b/data/iso-8859-2
new file mode 100644
index 000000000..19b77878d
--- /dev/null
+++ b/data/iso-8859-2
@@ -0,0 +1,253 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for ISO-8859-2
+# (Latin2/East European) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+80 20AC
+82 201A
+84 201E
+85 2026
+86 2020
+87 2021
+89 2030
+8A 0160
+8B 2039
+8C 015A
+8D 0164
+8E 017D
+8F 0179
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+99 2122
+9A 0161
+9B 203A
+8C 015B
+8D 0165
+8E 017E
+8F 017A
+A0 00A0
+A1 0104
+A2 02D8
+A3 0141
+A4 00A4
+A5 013D
+A6 015A
+A7 00A7
+A8 00A8
+A9 0160
+AA 015E
+AB 0164
+AC 0179
+AD 00AD
+AE 017D
+AF 017B
+B0 00B0
+B1 0105
+B2 02DB
+B3 0142
+B4 00B4
+B5 013E
+B6 015B
+B7 02C7
+B8 00B8
+B9 0161
+BA 015F
+BB 0165
+BC 017A
+BD 02DD
+BE 017E
+BF 017C
+C0 0154
+C1 00C1
+C2 00C2
+C3 0102
+C4 00C4
+C5 0139
+C6 0106
+C7 00C7
+C8 010C
+C9 00C9
+CA 0118
+CB 00CB
+CC 011A
+CD 00CD
+CE 00CE
+CF 010E
+D0 0110
+D1 0143
+D2 0147
+D3 00D3
+D4 00D4
+D5 0150
+D6 00D6
+D7 00D7
+D8 0158
+D9 016E
+DA 00DA
+DB 0170
+DC 00DC
+DD 00DD
+DE 0162
+DF 00DF
+E0 0155
+E1 00E1
+E2 00E2
+E3 0103
+E4 00E4
+E5 013A
+E6 0107
+E7 00E7
+E8 010D
+E9 00E9
+EA 0119
+EB 00EB
+EC 011B
+ED 00ED
+EE 00EE
+EF 010F
+F0 0111
+F1 0144
+F2 0148
+F3 00F3
+F4 00F4
+F5 0151
+F6 00F6
+F7 00F7
+F8 0159
+F9 016F
+FA 00FA
+FB 0171
+FC 00FC
+FD 00FD
+FE 0163
+FF 02D9
diff --git a/data/iso-8859-3 b/data/iso-8859-3
new file mode 100644
index 000000000..efc4529ed
--- /dev/null
+++ b/data/iso-8859-3
@@ -0,0 +1,244 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for ISO-8859-3
+# (Latin3/South European) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8A 0160
+8B 2039
+8C 0152
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 02DC
+99 2122
+9A 0161
+9B 203A
+9C 0153
+9F 0178
+A0 00A0
+A1 0126
+A2 02D8
+A3 00A3
+A4 00A4
+A6 0124
+A7 00A7
+A8 00A8
+A9 0130
+AA 015E
+AB 011E
+AC 0134
+AD 00AD
+AF 017B
+B0 00B0
+B1 0127
+B2 00B2
+B3 00B3
+B4 00B4
+B5 00B5
+B6 0125
+B7 00B7
+B8 00B8
+B9 0131
+BA 015F
+BB 011F
+BC 0135
+BD 00BD
+BF 017C
+C0 00C0
+C1 00C1
+C2 00C2
+C4 00C4
+C5 010A
+C6 0108
+C7 00C7
+C8 00C8
+C9 00C9
+CA 00CA
+CB 00CB
+CC 00CC
+CD 00CD
+CE 00CE
+CF 00CF
+D1 00D1
+D2 00D2
+D3 00D3
+D4 00D4
+D5 0120
+D6 00D6
+D7 00D7
+D8 011C
+D9 00D9
+DA 00DA
+DB 00DB
+DC 00DC
+DD 016C
+DE 015C
+DF 00DF
+E0 00E0
+E1 00E1
+E2 00E2
+E4 00E4
+E5 010B
+E6 0109
+E7 00E7
+E8 00E8
+E9 00E9
+EA 00EA
+EB 00EB
+EC 00EC
+ED 00ED
+EE 00EE
+EF 00EF
+F1 00F1
+F2 00F2
+F3 00F3
+F4 00F4
+F5 0121
+F6 00F6
+F7 00F7
+F8 011D
+F9 00F9
+FA 00FA
+FB 00FB
+FC 00FC
+FD 016D
+FE 015D
+FF 02D9
diff --git a/data/iso-8859-4 b/data/iso-8859-4
new file mode 100644
index 000000000..5c93156eb
--- /dev/null
+++ b/data/iso-8859-4
@@ -0,0 +1,251 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for ISO-8859-4
+# (Latin4/North European) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8A 0160
+8B 2039
+8C 0152
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 02DC
+99 2122
+9A 0161
+9B 203A
+9C 0153
+9F 0178
+A0 00A0
+A1 0104
+A2 0138
+A3 0156
+A4 00A4
+A5 0128
+A6 013B
+A7 00A7
+A8 00A8
+A9 0160
+AA 0112
+AB 0122
+AC 0166
+AD 00AD
+AE 017D
+AF 00AF
+B0 00B0
+B1 0105
+B2 02DB
+B3 0157
+B4 00B4
+B5 0129
+B6 013C
+B7 02C7
+B8 00B8
+B9 0161
+BA 0113
+BB 0123
+BC 0167
+BD 014A
+BE 017E
+BF 014B
+C0 0100
+C1 00C1
+C2 00C2
+C3 00C3
+C4 00C4
+C5 00C5
+C6 00C6
+C7 012E
+C8 010C
+C9 00C9
+CA 0118
+CB 00CB
+CC 0116
+CD 00CD
+CE 00CE
+CF 012A
+D0 0110
+D1 0145
+D2 014C
+D3 0136
+D4 00D4
+D5 00D5
+D6 00D6
+D7 00D7
+D8 00D8
+D9 0172
+DA 00DA
+DB 00DB
+DC 00DC
+DD 0168
+DE 016A
+DF 00DF
+E0 0101
+E1 00E1
+E2 00E2
+E3 00E3
+E4 00E4
+E5 00E5
+E6 00E6
+E7 012F
+E8 010D
+E9 00E9
+EA 0119
+EB 00EB
+EC 0117
+ED 00ED
+EE 00EE
+EF 012B
+F0 0111
+F1 0146
+F2 014D
+F3 0137
+F4 00F4
+F5 00F5
+F6 00F6
+F7 00F7
+F8 00F8
+F9 0173
+FA 00FA
+FB 00FB
+FC 00FC
+FD 0169
+FE 016B
+FF 02D9
diff --git a/data/iso-8859-5 b/data/iso-8859-5
new file mode 100644
index 000000000..59ee84d57
--- /dev/null
+++ b/data/iso-8859-5
@@ -0,0 +1,251 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for ISO-8859-5
+# (Cyrillic) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8A 0160
+8B 2039
+8C 0152
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 02DC
+99 2122
+9A 0161
+9B 203A
+9C 0153
+9F 0178
+A0 00A0
+A1 0401
+A2 0402
+A3 0403
+A4 0404
+A5 0405
+A6 0406
+A7 0407
+A8 0408
+A9 0409
+AA 040A
+AB 040B
+AC 040C
+AD 00AD
+AE 040E
+AF 040F
+B0 0410
+B1 0411
+B2 0412
+B3 0413
+B4 0414
+B5 0415
+B6 0416
+B7 0417
+B8 0418
+B9 0419
+BA 041A
+BB 041B
+BC 041C
+BD 041D
+BE 041E
+BF 041F
+C0 0420
+C1 0421
+C2 0422
+C3 0423
+C4 0424
+C5 0425
+C6 0426
+C7 0427
+C8 0428
+C9 0429
+CA 042A
+CB 042B
+CC 042C
+CD 042D
+CE 042E
+CF 042F
+D0 0430
+D1 0431
+D2 0432
+D3 0433
+D4 0434
+D5 0435
+D6 0436
+D7 0437
+D8 0438
+D9 0439
+DA 043A
+DB 043B
+DC 043C
+DD 043D
+DE 043E
+DF 043F
+E0 0440
+E1 0441
+E2 0442
+E3 0443
+E4 0444
+E5 0445
+E6 0446
+E7 0447
+E8 0448
+E9 0449
+EA 044A
+EB 044B
+EC 044C
+ED 044D
+EE 044E
+EF 044F
+F0 2116
+F1 0451
+F2 0452
+F3 0453
+F4 0454
+F5 0455
+F6 0456
+F7 0457
+F8 0458
+F9 0459
+FA 045A
+FB 045B
+FC 045C
+FD 00A7
+FE 045E
+FF 045F
diff --git a/data/iso-8859-6 b/data/iso-8859-6
new file mode 100644
index 000000000..356fe72e3
--- /dev/null
+++ b/data/iso-8859-6
@@ -0,0 +1,206 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for ISO-8859-6
+# (Arabic) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff rtol single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0660
+31 0661
+32 0662
+33 0663
+34 0664
+35 0665
+36 0666
+37 0667
+38 0668
+39 0669
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8A 0160
+8B 2039
+8C 0152
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 02DC
+99 2122
+9A 0161
+9B 203A
+9C 0153
+9F 0178
+A0 00A0
+A4 00A4
+AC 060C
+AD 00AD
+BB 061B
+BF 061F
+C1 0621
+C2 0622
+C3 0623
+C4 0624
+C5 0625
+C6 0626
+C7 0627
+C8 0628
+C9 0629
+CA 062A
+CB 062B
+CC 062C
+CD 062D
+CE 062E
+CF 062F
+D0 0630
+D1 0631
+D2 0632
+D3 0633
+D4 0634
+D5 0635
+D6 0636
+D7 0637
+D8 0638
+D9 0639
+DA 063A
+E0 0640
+E1 0641
+E2 0642
+E3 0643
+E4 0644
+E5 0645
+E6 0646
+E7 0647
+E8 0648
+E9 0649
+EA 064A
+EB 064B
+EC 064C
+ED 064D
+EE 064E
+EF 064F
+F0 0650
+F1 0651
+F2 0652
diff --git a/data/iso-8859-7 b/data/iso-8859-7
new file mode 100644
index 000000000..57647841c
--- /dev/null
+++ b/data/iso-8859-7
@@ -0,0 +1,246 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for ISO-8859-7
+# (Greek) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 9f ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+a0 ff ltor single Symbol
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8A 0160
+8B 2039
+8C 0152
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 02DC
+99 2122
+9A 0161
+9B 203A
+9C 0153
+9F 0178
+A0 00A0
+A1 02BD
+A2 02BC
+A3 00A3
+A6 00A6
+A7 00A7
+A8 00A8
+A9 00A9
+AB 00AB
+AC 00AC
+AD 00AD
+AF 2015
+B0 00B0
+B1 00B1
+B2 00B2
+B3 00B3
+B4 0384
+B5 0385
+B6 0386
+B7 00B7
+B8 0388
+B9 0389
+BA 038A
+BB 00BB
+BC 038C
+BD 00BD
+BE 038E
+BF 038F
+C0 0390
+C1 0391
+C2 0392
+C3 0393
+C4 0394
+C5 0395
+C6 0396
+C7 0397
+C8 0398
+C9 0399
+CA 039A
+CB 039B
+CC 039C
+CD 039D
+CE 039E
+CF 039F
+D0 03A0
+D1 03A1
+D3 03A3
+D4 03A4
+D5 03A5
+D6 03A6
+D7 03A7
+D8 03A8
+D9 03A9
+DA 03AA
+DB 03AB
+DC 03AC
+DD 03AD
+DE 03AE
+DF 03AF
+E0 03B0
+E1 03B1
+E2 03B2
+E3 03B3
+E4 03B4
+E5 03B5
+E6 03B6
+E7 03B7
+E8 03B8
+E9 03B9
+EA 03BA
+EB 03BB
+EC 03BC
+ED 03BD
+EE 03BE
+EF 03BF
+F0 03C0
+F1 03C1
+F2 03C2
+F3 03C3
+F4 03C4
+F5 03C5
+F6 03C6
+F7 03C7
+F8 03C8
+F9 03C9
+FA 03CA
+FB 03CB
+FC 03CC
+FD 03CD
+FE 03CE
diff --git a/data/iso-8859-8 b/data/iso-8859-8
new file mode 100644
index 000000000..660122d6a
--- /dev/null
+++ b/data/iso-8859-8
@@ -0,0 +1,214 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for ISO-8859-8
+# (Hebrew) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 7f ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+80 ff rtol single Courier
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8A 0160
+8B 2039
+8C 0152
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 02DC
+99 2122
+9A 0161
+9B 203A
+9C 0153
+9F 0178
+A0 00A0
+A2 00A2
+A3 00A3
+A4 00A4
+A5 00A5
+A6 00A6
+A7 00A7
+A8 00A8
+A9 00A9
+AA 00D7
+AB 00AB
+AC 00AC
+AD 00AD
+AE 00AE
+AF 203E
+B0 00B0
+B1 00B1
+B2 00B2
+B3 00B3
+B4 00B4
+B5 00B5
+B6 00B6
+B7 00B7
+B8 00B8
+B9 00B9
+BA 00F7
+BB 00BB
+BC 00BC
+BD 00BD
+BE 00BE
+DF 2017
+E0 05D0
+E1 05D1
+E2 05D2
+E3 05D3
+E4 05D4
+E5 05D5
+E6 05D6
+E7 05D7
+E8 05D8
+E9 05D9
+EA 05DA
+EB 05DB
+EC 05DC
+ED 05DD
+EE 05DE
+EF 05DF
+F0 05E0
+F1 05E1
+F2 05E2
+F3 05E3
+F4 05E4
+F5 05E5
+F6 05E6
+F7 05E7
+F8 05E8
+F9 05E9
+FA 05EA
diff --git a/data/iso-8859-9 b/data/iso-8859-9
new file mode 100644
index 000000000..83a661edc
--- /dev/null
+++ b/data/iso-8859-9
@@ -0,0 +1,251 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for ISO-8859-9
+# (Latin5/Turkish) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8A 0160
+8B 2039
+8C 0152
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 02DC
+99 2122
+9A 0161
+9B 203A
+9C 0153
+9F 0178
+A0 00A0
+A1 00A1
+A2 00A2
+A3 00A3
+A4 00A4
+A5 00A5
+A6 00A6
+A7 00A7
+A8 00A8
+A9 00A9
+AA 00AA
+AB 00AB
+AC 00AC
+AD 00AD
+AE 00AE
+AF 00AF
+B0 00B0
+B1 00B1
+B2 00B2
+B3 00B3
+B4 00B4
+B5 00B5
+B6 00B6
+B7 00B7
+B8 00B8
+B9 00B9
+BA 00BA
+BB 00BB
+BC 00BC
+BD 00BD
+BE 00BE
+BF 00BF
+C0 00C0
+C1 00C1
+C2 00C2
+C3 00C3
+C4 00C4
+C5 00C5
+C6 00C6
+C7 00C7
+C8 00C8
+C9 00C9
+CA 00CA
+CB 00CB
+CC 00CC
+CD 00CD
+CE 00CE
+CF 00CF
+D0 011E
+D1 00D1
+D2 00D2
+D3 00D3
+D4 00D4
+D5 00D5
+D6 00D6
+D7 00D7
+D8 00D8
+D9 00D9
+DA 00DA
+DB 00DB
+DC 00DC
+DD 0130
+DE 015E
+DF 00DF
+E0 00E0
+E1 00E1
+E2 00E2
+E3 00E3
+E4 00E4
+E5 00E5
+E6 00E6
+E7 00E7
+E8 00E8
+E9 00E9
+EA 00EA
+EB 00EB
+EC 00EC
+ED 00ED
+EE 00EE
+EF 00EF
+F0 011F
+F1 00F1
+F2 00F2
+F3 00F3
+F4 00F4
+F5 00F5
+F6 00F6
+F7 00F7
+F8 00F8
+F9 00F9
+FA 00FA
+FB 00FB
+FC 00FC
+FD 0131
+FE 015F
+FF 00FF
diff --git a/data/koi8-r b/data/koi8-r
new file mode 100644
index 000000000..7d6816b07
--- /dev/null
+++ b/data/koi8-r
@@ -0,0 +1,261 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for Russian
+# Code Page KOI8-R text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+7F 007F
+80 2500
+81 2502
+82 250C
+83 2510
+84 2514
+85 2518
+86 251C
+87 2524
+88 252C
+89 2534
+8A 253C
+8B 2580
+8C 2584
+8D 2588
+8E 258C
+8F 2590
+90 2591
+91 2592
+92 2593
+93 2320
+94 25A0
+95 2219
+96 221A
+97 2248
+98 2264
+99 2265
+9A 00A0
+9B 2321
+9C 00B0
+9D 00B2
+9E 00B7
+9F 00F7
+A0 2550
+A1 2551
+A2 2552
+A3 0451
+A4 2553
+A5 2554
+A6 2555
+A7 2556
+A8 2557
+A9 2558
+AA 2559
+AB 255A
+AC 255B
+AD 255C
+AE 255D
+AF 255E
+B0 255F
+B1 2560
+B2 2561
+B3 0401
+B4 2562
+B5 2563
+B6 2564
+B7 2565
+B8 2566
+B9 2567
+BA 2568
+BB 2569
+BC 256A
+BD 256B
+BE 256C
+BF 00A9
+C0 044E
+C1 0430
+C2 0431
+C3 0446
+C4 0434
+C5 0435
+C6 0444
+C7 0433
+C8 0445
+C9 0438
+CA 0439
+CB 043A
+CC 043B
+CD 043C
+CE 043D
+CF 043E
+D0 043F
+D1 044F
+D2 0440
+D3 0441
+D4 0442
+D5 0443
+D6 0436
+D7 0432
+D8 044C
+D9 044B
+DA 0437
+DB 0448
+DC 044D
+DD 0449
+DE 0447
+DF 044A
+E0 042E
+E1 0410
+E2 0411
+E3 0426
+E4 0414
+E5 0415
+E6 0424
+E7 0413
+E8 0425
+E9 0418
+EA 0419
+EB 041A
+EC 041B
+ED 041C
+EE 041D
+EF 041E
+F0 041F
+F1 042F
+F2 0420
+F3 0421
+F4 0422
+F5 0423
+F6 0416
+F7 0412
+F8 042C
+F9 042B
+FA 0417
+FB 0428
+FC 042D
+FD 0429
+FE 0427
+FF 042A
+
+
diff --git a/data/koi8-u b/data/koi8-u
new file mode 100644
index 000000000..c90c543d9
--- /dev/null
+++ b/data/koi8-u
@@ -0,0 +1,259 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for Ukrainian
+# Code Page KOI8-U text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+7F 007F
+80 2500
+81 2502
+82 250C
+83 2510
+84 2514
+85 2518
+86 251C
+87 2524
+88 252C
+89 2534
+8A 253C
+8B 2580
+8C 2584
+8D 2588
+8E 258C
+8F 2590
+90 2591
+91 2592
+92 2593
+93 2320
+94 25A0
+95 2219
+96 221A
+97 2248
+98 2264
+99 2265
+9A 00A0
+9B 2321
+9C 00B0
+9D 00B2
+9E 00B7
+9F 00F7
+A0 2550
+A1 2551
+A2 2552
+A3 0451
+A4 0454
+A5 2554
+A6 0456
+A7 0457
+A8 2557
+A9 2558
+AA 2559
+AB 255A
+AC 255B
+AD 0491
+AE 255D
+AF 255E
+B0 255F
+B1 2560
+B2 2561
+B3 0401
+B4 0404
+B5 2563
+B6 0406
+B7 0407
+B8 2566
+B9 2567
+BA 2568
+BB 2569
+BC 256A
+BD 0490
+BE 256C
+BF 00A9
+C0 044E
+C1 0430
+C2 0431
+C3 0446
+C4 0434
+C5 0435
+C6 0444
+C7 0433
+C8 0445
+C9 0438
+CA 0439
+CB 043A
+CC 043B
+CD 043C
+CE 043D
+CF 043E
+D0 043F
+D1 044F
+D2 0440
+D3 0441
+D4 0442
+D5 0443
+D6 0436
+D7 0432
+D8 044C
+D9 044B
+DA 0437
+DB 0448
+DC 044D
+DD 0449
+DE 0447
+DF 044A
+E0 042E
+E1 0410
+E2 0411
+E3 0426
+E4 0414
+E5 0415
+E6 0424
+E7 0413
+E8 0425
+E9 0418
+EA 0419
+EB 041A
+EC 041B
+ED 041C
+EE 041D
+EF 041E
+F0 041F
+F1 042F
+F2 0420
+F3 0421
+F4 0422
+F5 0423
+F6 0416
+F7 0412
+F8 042C
+F9 042B
+FA 0417
+FB 0428
+FC 042D
+FD 0429
+FE 0427
+FF 042A
diff --git a/data/psglyphs b/data/psglyphs
new file mode 100644
index 000000000..392e782c0
--- /dev/null
+++ b/data/psglyphs
@@ -0,0 +1,1051 @@
+0020 space
+0021 exclam
+0022 quotedbl
+0023 numbersign
+0024 dollar
+0025 percent
+0026 ampersand
+0027 quotesingle
+0028 parenleft
+0029 parenright
+002a asterisk
+002b plus
+002c comma
+002d hyphen
+002e period
+002f slash
+0030 zero
+0031 one
+0032 two
+0033 three
+0034 four
+0035 five
+0036 six
+0037 seven
+0038 eight
+0039 nine
+003a colon
+003b semicolon
+003c less
+003d equal
+003e greater
+003f question
+0040 at
+0041 A
+0042 B
+0043 C
+0044 D
+0045 E
+0046 F
+0047 G
+0048 H
+0049 I
+004a J
+004b K
+004c L
+004d M
+004e N
+004f O
+0050 P
+0051 Q
+0052 R
+0053 S
+0054 T
+0055 U
+0056 V
+0057 W
+0058 X
+0059 Y
+005a Z
+005b bracketleft
+005c backslash
+005d bracketright
+005e asciicircum
+005f underscore
+0060 grave
+0061 a
+0062 b
+0063 c
+0064 d
+0065 e
+0066 f
+0067 g
+0068 h
+0069 i
+006a j
+006b k
+006c l
+006d m
+006e n
+006f o
+0070 p
+0071 q
+0072 r
+0073 s
+0074 t
+0075 u
+0076 v
+0077 w
+0078 x
+0079 y
+007a z
+007b braceleft
+007c bar
+007d braceright
+007e asciitilde
+00a0 space
+00a1 exclamdown
+00a2 cent
+00a3 sterling
+00a4 currency
+00a5 yen
+00a6 brokenbar
+00a7 section
+00a8 dieresis
+00a9 copyright
+00aa ordfeminine
+00ab guillemotleft
+00ac logicalnot
+00ad minus
+00ae registered
+00af macron
+00b0 degree
+00b1 plusminus
+00b2 twosuperior
+00b3 threesuperior
+00b4 acute
+00b5 mu
+00b6 paragraph
+00b7 periodcentered
+00b8 cedilla
+00b9 onesuperior
+00ba ordmasculine
+00bb guillemotright
+00bc onequarter
+00bd onehalf
+00be threequarters
+00bf questiondown
+00c0 Agrave
+00c1 Aacute
+00c2 Acircumflex
+00c3 Atilde
+00c4 Adieresis
+00c5 Aring
+00c6 AE
+00c7 Ccedilla
+00c8 Egrave
+00c9 Eacute
+00ca Ecircumflex
+00cb Edieresis
+00cc Igrave
+00cd Iacute
+00ce Icircumflex
+00cf Idieresis
+00d0 Eth
+00d1 Ntilde
+00d2 Ograve
+00d3 Oacute
+00d4 Ocircumflex
+00d5 Otilde
+00d6 Odieresis
+00d7 multiply
+00d8 Oslash
+00d9 Ugrave
+00da Uacute
+00db Ucircumflex
+00dc Udieresis
+00dd Yacute
+00de Thorn
+00df germandbls
+00e0 agrave
+00e1 aacute
+00e2 acircumflex
+00e3 atilde
+00e4 adieresis
+00e5 aring
+00e6 ae
+00e7 ccedilla
+00e8 egrave
+00e9 eacute
+00ea ecircumflex
+00eb edieresis
+00ec igrave
+00ed iacute
+00ee icircumflex
+00ef idieresis
+00f0 eth
+00f1 ntilde
+00f2 ograve
+00f3 oacute
+00f4 ocircumflex
+00f5 otilde
+00f6 odieresis
+00f7 divide
+00f8 oslash
+00f9 ugrave
+00fa uacute
+00fb ucircumflex
+00fc udieresis
+00fd yacute
+00fe thorn
+00ff ydieresis
+0100 Amacron
+0101 amacron
+0102 Abreve
+0103 abreve
+0104 Aogonek
+0105 aogonek
+0106 Cacute
+0107 cacute
+0108 Ccircumflex
+0109 ccircumflex
+010a Cdotaccent
+010b cdotaccent
+010c Ccaron
+010d ccaron
+010e Dcaron
+010f dcaron
+0110 Dcroat
+0111 dcroat
+0112 Emacron
+0113 emacron
+0114 Ebreve
+0115 ebreve
+0116 Edotaccent
+0117 edotaccent
+0118 Eogonek
+0119 eogonek
+011a Ecaron
+011b ecaron
+011c Gcircumflex
+011d gcircumflex
+011e Gbreve
+011f gbreve
+0120 Gdotaccent
+0121 gdotaccent
+0122 Gcommaaccent
+0123 gcommaaccent
+0124 Hcircumflex
+0125 hcircumflex
+0126 Hbar
+0127 hbar
+0128 Itilde
+0129 itilde
+012a Imacron
+012b imacron
+012c Ibreve
+012d ibreve
+012e Iogonek
+012f iogonek
+0130 Idotaccent
+0131 dotlessi
+0132 IJ
+0133 ij
+0134 Jcircumflex
+0135 jcircumflex
+0136 Kcommaaccent
+0137 kcommaaccent
+0138 kgreenlandic
+0139 Lacute
+013a lacute
+013b Lcommaaccent
+013c lcommaaccent
+013d Lcaron
+013e lcaron
+013f Ldot
+0140 ldot
+0141 Lslash
+0142 lslash
+0143 Nacute
+0144 nacute
+0145 Ncommaaccent
+0146 ncommaaccent
+0147 Ncaron
+0148 ncaron
+0149 napostrophe
+014a Eng
+014b eng
+014c Omacron
+014d omacron
+014e Obreve
+014f obreve
+0150 Ohungarumlaut
+0151 ohungarumlaut
+0152 OE
+0153 oe
+0154 Racute
+0155 racute
+0156 Rcommaaccent
+0157 rcommaaccent
+0158 Rcaron
+0159 rcaron
+015a Sacute
+015b sacute
+015c Scircumflex
+015d scircumflex
+015e Scedilla
+015f scedilla
+0160 Scaron
+0161 scaron
+0162 Tcommaaccent
+0163 tcommaaccent
+0164 Tcaron
+0165 tcaron
+0166 Tbar
+0167 tbar
+0168 Utilde
+0169 utilde
+016a Umacron
+016b umacron
+016c Ubreve
+016d ubreve
+016e Uring
+016f uring
+0170 Uhungarumlaut
+0171 uhungarumlaut
+0172 Uogonek
+0173 uogonek
+0174 Wcircumflex
+0175 wcircumflex
+0176 Ycircumflex
+0177 ycircumflex
+0178 Ydieresis
+0179 Zacute
+017a zacute
+017b Zdotaccent
+017c zdotaccent
+017d Zcaron
+017e zcaron
+017f longs
+0192 florin
+01a0 Ohorn
+01a1 ohorn
+01af Uhorn
+01b0 uhorn
+01e6 Gcaron
+01e7 gcaron
+01fa Aringacute
+01fb aringacute
+01fc AEacute
+01fd aeacute
+01fe Oslashacute
+01ff oslashacute
+0218 Scommaaccent
+0219 scommaaccent
+021a Tcommaaccent
+021b tcommaaccent
+02bc afii57929
+02bd afii64937
+02c6 circumflex
+02c7 caron
+02c9 macron
+02d8 breve
+02d9 dotaccent
+02da ring
+02db ogonek
+02dc tilde
+02dd hungarumlaut
+0300 gravecomb
+0301 acutecomb
+0303 tildecomb
+0309 hookabovecomb
+0323 dotbelowcomb
+0384 tonos
+0385 dieresistonos
+0386 Alphatonos
+0387 anoteleia
+0388 Epsilontonos
+0389 Etatonos
+038a Iotatonos
+038c Omicrontonos
+038e Upsilontonos
+038f Omegatonos
+0390 iotadieresistonos
+0391 Alpha
+0392 Beta
+0393 Gamma
+0394 Delta
+0395 Epsilon
+0396 Zeta
+0397 Eta
+0398 Theta
+0399 Iota
+039a Kappa
+039b Lambda
+039c Mu
+039d Nu
+039e Xi
+039f Omicron
+03a0 Pi
+03a1 Rho
+03a3 Sigma
+03a4 Tau
+03a5 Upsilon
+03a6 Phi
+03a7 Chi
+03a8 Psi
+03a9 Omega
+03aa Iotadieresis
+03ab Upsilondieresis
+03ac alphatonos
+03ad epsilontonos
+03ae etatonos
+03af iotatonos
+03b0 upsilondieresistonos
+03b1 alpha
+03b2 beta
+03b3 gamma
+03b4 delta
+03b5 epsilon
+03b6 zeta
+03b7 eta
+03b8 theta
+03b9 iota
+03ba kappa
+03bb lambda
+03bc mu
+03bd nu
+03be xi
+03bf omicron
+03c0 pi
+03c1 rho
+03c2 sigma1
+03c3 sigma
+03c4 tau
+03c5 upsilon
+03c6 phi
+03c7 chi
+03c8 psi
+03c9 omega
+03ca iotadieresis
+03cb upsilondieresis
+03cc omicrontonos
+03cd upsilontonos
+03ce omegatonos
+03d1 theta1
+03d2 Upsilon1
+03d5 phi1
+03d6 omega1
+0401 afii10023
+0402 afii10051
+0403 afii10052
+0404 afii10053
+0405 afii10054
+0406 afii10055
+0407 afii10056
+0408 afii10057
+0409 afii10058
+040a afii10059
+040b afii10060
+040c afii10061
+040e afii10062
+040f afii10145
+0410 afii10017
+0411 afii10018
+0412 afii10019
+0413 afii10020
+0414 afii10021
+0415 afii10022
+0416 afii10024
+0417 afii10025
+0418 afii10026
+0419 afii10027
+041a afii10028
+041b afii10029
+041c afii10030
+041d afii10031
+041e afii10032
+041f afii10033
+0420 afii10034
+0421 afii10035
+0422 afii10036
+0423 afii10037
+0424 afii10038
+0425 afii10039
+0426 afii10040
+0427 afii10041
+0428 afii10042
+0429 afii10043
+042a afii10044
+042b afii10045
+042c afii10046
+042d afii10047
+042e afii10048
+042f afii10049
+0430 afii10065
+0431 afii10066
+0432 afii10067
+0433 afii10068
+0434 afii10069
+0435 afii10070
+0436 afii10072
+0437 afii10073
+0438 afii10074
+0439 afii10075
+043a afii10076
+043b afii10077
+043c afii10078
+043d afii10079
+043e afii10080
+043f afii10081
+0440 afii10082
+0441 afii10083
+0442 afii10084
+0443 afii10085
+0444 afii10086
+0445 afii10087
+0446 afii10088
+0447 afii10089
+0448 afii10090
+0449 afii10091
+044a afii10092
+044b afii10093
+044c afii10094
+044d afii10095
+044e afii10096
+044f afii10097
+0451 afii10071
+0452 afii10099
+0453 afii10100
+0454 afii10101
+0455 afii10102
+0456 afii10103
+0457 afii10104
+0458 afii10105
+0459 afii10106
+045a afii10107
+045b afii10108
+045c afii10109
+045e afii10110
+045f afii10193
+0462 afii10146
+0463 afii10194
+0472 afii10147
+0473 afii10195
+0474 afii10148
+0475 afii10196
+0490 afii10050
+0491 afii10098
+04d9 afii10846
+05b0 afii57799
+05b1 afii57801
+05b2 afii57800
+05b3 afii57802
+05b4 afii57793
+05b5 afii57794
+05b6 afii57795
+05b7 afii57798
+05b8 afii57797
+05b9 afii57806
+05bb afii57796
+05bc afii57807
+05bd afii57839
+05be afii57645
+05bf afii57841
+05c0 afii57842
+05c1 afii57804
+05c2 afii57803
+05c3 afii57658
+05d0 afii57664
+05d1 afii57665
+05d2 afii57666
+05d3 afii57667
+05d4 afii57668
+05d5 afii57669
+05d6 afii57670
+05d7 afii57671
+05d8 afii57672
+05d9 afii57673
+05da afii57674
+05db afii57675
+05dc afii57676
+05dd afii57677
+05de afii57678
+05df afii57679
+05e0 afii57680
+05e1 afii57681
+05e2 afii57682
+05e3 afii57683
+05e4 afii57684
+05e5 afii57685
+05e6 afii57686
+05e7 afii57687
+05e8 afii57688
+05e9 afii57689
+05ea afii57690
+05f0 afii57716
+05f1 afii57717
+05f2 afii57718
+060c afii57388
+061b afii57403
+061f afii57407
+0621 afii57409
+0622 afii57410
+0623 afii57411
+0624 afii57412
+0625 afii57413
+0626 afii57414
+0627 afii57415
+0628 afii57416
+0629 afii57417
+062a afii57418
+062b afii57419
+062c afii57420
+062d afii57421
+062e afii57422
+062f afii57423
+0630 afii57424
+0631 afii57425
+0632 afii57426
+0633 afii57427
+0634 afii57428
+0635 afii57429
+0636 afii57430
+0637 afii57431
+0638 afii57432
+0639 afii57433
+063a afii57434
+0640 afii57440
+0641 afii57441
+0642 afii57442
+0643 afii57443
+0644 afii57444
+0645 afii57445
+0646 afii57446
+0647 afii57470
+0648 afii57448
+0649 afii57449
+064a afii57450
+064b afii57451
+064c afii57452
+064d afii57453
+064e afii57454
+064f afii57455
+0650 afii57456
+0651 afii57457
+0652 afii57458
+0660 afii57392
+0661 afii57393
+0662 afii57394
+0663 afii57395
+0664 afii57396
+0665 afii57397
+0666 afii57398
+0667 afii57399
+0668 afii57400
+0669 afii57401
+066a afii57381
+066d afii63167
+0679 afii57511
+067e afii57506
+0686 afii57507
+0688 afii57512
+0691 afii57513
+0698 afii57508
+06a4 afii57505
+06af afii57509
+06ba afii57514
+06d2 afii57519
+06d5 afii57534
+1e80 Wgrave
+1e81 wgrave
+1e82 Wacute
+1e83 wacute
+1e84 Wdieresis
+1e85 wdieresis
+1ef2 Ygrave
+1ef3 ygrave
+200c afii61664
+200d afii301
+200e afii299
+200f afii300
+2012 figuredash
+2013 endash
+2014 emdash
+2015 afii00208
+2017 underscoredbl
+2018 quoteleft
+2019 quoteright
+201a quotesinglbase
+201b quotereversed
+201c quotedblleft
+201d quotedblright
+201e quotedblbase
+2020 dagger
+2021 daggerdbl
+2022 bullet
+2024 onedotenleader
+2025 twodotenleader
+2026 ellipsis
+202c afii61573
+202d afii61574
+202e afii61575
+2030 perthousand
+2032 minute
+2033 second
+2039 guilsinglleft
+203a guilsinglright
+203c exclamdbl
+2044 fraction
+2070 zerosuperior
+2074 foursuperior
+2075 fivesuperior
+2076 sixsuperior
+2077 sevensuperior
+2078 eightsuperior
+2079 ninesuperior
+207d parenleftsuperior
+207e parenrightsuperior
+207f nsuperior
+2080 zeroinferior
+2081 oneinferior
+2082 twoinferior
+2083 threeinferior
+2084 fourinferior
+2085 fiveinferior
+2086 sixinferior
+2087 seveninferior
+2088 eightinferior
+2089 nineinferior
+208d parenleftinferior
+208e parenrightinferior
+20a1 colonmonetary
+20a3 franc
+20a4 lira
+20a7 peseta
+20aa afii57636
+20ab dong
+20ac Euro
+2105 afii61248
+2111 Ifraktur
+2113 afii61289
+2116 afii61352
+2118 weierstrass
+211c Rfraktur
+211e prescription
+2122 trademark
+2126 Omega
+212e estimated
+2135 aleph
+2153 onethird
+2154 twothirds
+215b oneeighth
+215c threeeighths
+215d fiveeighths
+215e seveneighths
+2190 arrowleft
+2191 arrowup
+2192 arrowright
+2193 arrowdown
+2194 arrowboth
+2195 arrowupdn
+21a8 arrowupdnbse
+21b5 carriagereturn
+21d0 arrowdblleft
+21d1 arrowdblup
+21d2 arrowdblright
+21d3 arrowdbldown
+21d4 arrowdblboth
+2200 universal
+2202 partialdiff
+2203 existential
+2205 emptyset
+2206 Delta
+2207 gradient
+2208 element
+2209 notelement
+220b suchthat
+220f product
+2211 summation
+2212 minus
+2215 fraction
+2217 asteriskmath
+2219 periodcentered
+221a radical
+221d proportional
+221e infinity
+221f orthogonal
+2220 angle
+2227 logicaland
+2228 logicalor
+2229 intersection
+222a union
+222b integral
+2234 therefore
+223c similar
+2245 congruent
+2248 approxequal
+2260 notequal
+2261 equivalence
+2264 lessequal
+2265 greaterequal
+2282 propersubset
+2283 propersuperset
+2284 notsubset
+2286 reflexsubset
+2287 reflexsuperset
+2295 circleplus
+2297 circlemultiply
+22a5 perpendicular
+22c5 dotmath
+2302 house
+2310 revlogicalnot
+2320 integraltp
+2321 integralbt
+2329 angleleft
+232a angleright
+2500 SF100000
+2502 SF110000
+250c SF010000
+2510 SF030000
+2514 SF020000
+2518 SF040000
+251c SF080000
+2524 SF090000
+252c SF060000
+2534 SF070000
+253c SF050000
+2550 SF430000
+2551 SF240000
+2552 SF510000
+2553 SF520000
+2554 SF390000
+2555 SF220000
+2556 SF210000
+2557 SF250000
+2558 SF500000
+2559 SF490000
+255a SF380000
+255b SF280000
+255c SF270000
+255d SF260000
+255e SF360000
+255f SF370000
+2560 SF420000
+2561 SF190000
+2562 SF200000
+2563 SF230000
+2564 SF470000
+2565 SF480000
+2566 SF410000
+2567 SF450000
+2568 SF460000
+2569 SF400000
+256a SF540000
+256b SF530000
+256c SF440000
+2580 upblock
+2584 dnblock
+2588 block
+258c lfblock
+2590 rtblock
+2591 ltshade
+2592 shade
+2593 dkshade
+25a0 filledbox
+25a1 H22073
+25aa H18543
+25ab H18551
+25ac filledrect
+25b2 triagup
+25ba triagrt
+25bc triagdn
+25c4 triaglf
+25ca lozenge
+25cb circle
+25cf H18533
+25d8 invbullet
+25d9 invcircle
+25e6 openbullet
+263a smileface
+263b invsmileface
+263c sun
+2640 female
+2642 male
+2660 spade
+2663 club
+2665 heart
+2666 diamond
+266a musicalnote
+266b musicalnotedbl
+f6be dotlessj
+f6bf LL
+f6c0 ll
+f6c1 Scedilla
+f6c2 scedilla
+f6c3 commaaccent
+f6c4 afii10063
+f6c5 afii10064
+f6c6 afii10192
+f6c7 afii10831
+f6c8 afii10832
+f6c9 Acute
+f6ca Caron
+f6cb Dieresis
+f6cc DieresisAcute
+f6cd DieresisGrave
+f6ce Grave
+f6cf Hungarumlaut
+f6d0 Macron
+f6d1 cyrBreve
+f6d2 cyrFlex
+f6d3 dblGrave
+f6d4 cyrbreve
+f6d5 cyrflex
+f6d6 dblgrave
+f6d7 dieresisacute
+f6d8 dieresisgrave
+f6d9 copyrightserif
+f6da registerserif
+f6db trademarkserif
+f6dc onefitted
+f6dd rupiah
+f6de threequartersemdash
+f6df centinferior
+f6e0 centsuperior
+f6e1 commainferior
+f6e2 commasuperior
+f6e3 dollarinferior
+f6e4 dollarsuperior
+f6e5 hypheninferior
+f6e6 hyphensuperior
+f6e7 periodinferior
+f6e8 periodsuperior
+f6e9 asuperior
+f6ea bsuperior
+f6eb dsuperior
+f6ec esuperior
+f6ed isuperior
+f6ee lsuperior
+f6ef msuperior
+f6f0 osuperior
+f6f1 rsuperior
+f6f2 ssuperior
+f6f3 tsuperior
+f6f4 Brevesmall
+f6f5 Caronsmall
+f6f6 Circumflexsmall
+f6f7 Dotaccentsmall
+f6f8 Hungarumlautsmall
+f6f9 Lslashsmall
+f6fa OEsmall
+f6fb Ogoneksmall
+f6fc Ringsmall
+f6fd Scaronsmall
+f6fe Tildesmall
+f6ff Zcaronsmall
+f721 exclamsmall
+f724 dollaroldstyle
+f726 ampersandsmall
+f730 zerooldstyle
+f731 oneoldstyle
+f732 twooldstyle
+f733 threeoldstyle
+f734 fouroldstyle
+f735 fiveoldstyle
+f736 sixoldstyle
+f737 sevenoldstyle
+f738 eightoldstyle
+f739 nineoldstyle
+f73f questionsmall
+f760 Gravesmall
+f761 Asmall
+f762 Bsmall
+f763 Csmall
+f764 Dsmall
+f765 Esmall
+f766 Fsmall
+f767 Gsmall
+f768 Hsmall
+f769 Ismall
+f76a Jsmall
+f76b Ksmall
+f76c Lsmall
+f76d Msmall
+f76e Nsmall
+f76f Osmall
+f770 Psmall
+f771 Qsmall
+f772 Rsmall
+f773 Ssmall
+f774 Tsmall
+f775 Usmall
+f776 Vsmall
+f777 Wsmall
+f778 Xsmall
+f779 Ysmall
+f77a Zsmall
+f7a1 exclamdownsmall
+f7a2 centoldstyle
+f7a8 Dieresissmall
+f7af Macronsmall
+f7b4 Acutesmall
+f7b8 Cedillasmall
+f7bf questiondownsmall
+f7e0 Agravesmall
+f7e1 Aacutesmall
+f7e2 Acircumflexsmall
+f7e3 Atildesmall
+f7e4 Adieresissmall
+f7e5 Aringsmall
+f7e6 AEsmall
+f7e7 Ccedillasmall
+f7e8 Egravesmall
+f7e9 Eacutesmall
+f7ea Ecircumflexsmall
+f7eb Edieresissmall
+f7ec Igravesmall
+f7ed Iacutesmall
+f7ee Icircumflexsmall
+f7ef Idieresissmall
+f7f0 Ethsmall
+f7f1 Ntildesmall
+f7f2 Ogravesmall
+f7f3 Oacutesmall
+f7f4 Ocircumflexsmall
+f7f5 Otildesmall
+f7f6 Odieresissmall
+f7f8 Oslashsmall
+f7f9 Ugravesmall
+f7fa Uacutesmall
+f7fb Ucircumflexsmall
+f7fc Udieresissmall
+f7fd Yacutesmall
+f7fe Thornsmall
+f7ff Ydieresissmall
+f8e5 radicalex
+f8e6 arrowvertex
+f8e7 arrowhorizex
+f8e8 registersans
+f8e9 copyrightsans
+f8ea trademarksans
+f8eb parenlefttp
+f8ec parenleftex
+f8ed parenleftbt
+f8ee bracketlefttp
+f8ef bracketleftex
+f8f0 bracketleftbt
+f8f1 bracelefttp
+f8f2 braceleftmid
+f8f3 braceleftbt
+f8f4 braceex
+f8f5 integralex
+f8f6 parenrighttp
+f8f7 parenrightex
+f8f8 parenrightbt
+f8f9 bracketrighttp
+f8fa bracketrightex
+f8fb bracketrightbt
+f8fc bracerighttp
+f8fd bracerightmid
+f8fe bracerightbt
+fb00 ff
+fb01 fi
+fb02 fl
+fb03 ffi
+fb04 ffl
+fb1f afii57705
+fb2a afii57694
+fb2b afii57695
+fb35 afii57723
+fb4b afii57700
diff --git a/data/secret b/data/secret
new file mode 100644
index 000000000..1f8751430
--- /dev/null
+++ b/data/secret
@@ -0,0 +1,277 @@
+%!PS-Adobe-3.0
+%%BoundingBox: 0 0 612 792
+%%Pages: 1
+%%LanguageLevel: 1
+%%DocumentData: Clean7Bit
+%%DocumentSuppliedResources: procset bannerprint/1.0
+%%DocumentNeededResources: font Helvetica Helvetica-Bold Times-Roman
+%%Creator: Michael Sweet, Easy Software Products
+%%CreationDate: May 10, 2000
+%%Title: Test Page
+%%EndComments
+%%BeginProlog
+%%BeginResource procset bannerprint 1.1 0
+%
+% PostScript banner page for the Common UNIX Printing System ("CUPS").
+%
+% Copyright 1993-2002 Easy Software Products
+%
+% These coded instructions, statements, and computer programs are the
+% property of Easy Software Products and are protected by Federal
+% copyright law. Distribution and use rights are outlined in the file
+% "LICENSE.txt" which should have been included with this file. If this
+% file is missing or damaged please contact Easy Software Products
+% at:
+%
+% Attn: CUPS Licensing Information
+% Easy Software Products
+% 44141 Airport View Drive, Suite 204
+% Hollywood, Maryland 20636-3111 USA
+%
+% Voice: (301) 373-9603
+% EMail: cups-info@cups.org
+% WWW: http://www.cups.org
+%
+/CENTER { % Draw centered text
+ % (name) CENTER -
+ dup stringwidth pop % Get the width of the string
+ 0.5 mul neg 0 rmoveto % Shift left 1/2 of the distance
+ show % Show the string
+} bind def
+/RIGHT { % Draw right-justified text
+ % (name) RIGHT -
+ dup stringwidth pop % Get the width of the string
+ neg 0 rmoveto % Shift left the entire distance
+ show % Show the string
+} bind def
+/NUMBER { % Draw a number
+ % power n NUMBER -
+ 1 index 1 eq { % power == 1?
+ round cvi exch pop % Convert "n" to integer
+ } {
+ 1 index mul round exch div % Truncate extra decimal places
+ } ifelse
+ 100 string cvs show % Convert to a string and show it...
+} bind def
+/CUPSLOGO { % Draw the CUPS logo
+ % height CUPSLOGO
+ % Start with a big C...
+ /Helvetica findfont 1 index scalefont setfont
+ 0 setgray
+ 0 0 moveto
+ (C) show
+
+ % Then "UNIX Printing System" much smaller...
+ /Helvetica-Bold findfont 1 index 9 div scalefont setfont
+ 0.25 mul
+ dup dup 2.0 mul moveto
+ (UNIX) show
+ dup dup 1.6 mul moveto
+ (Printing) show
+ dup 1.2 mul moveto
+ (System) show
+} bind def
+/ESPLOGO { % Draw the ESP logo
+ % height ESPLOGO
+ % Compute the size of the logo...
+ 0 0
+ 2 index 1.5 mul 3 index
+
+ % Do the "metallic" fill from 10% black to 40% black...
+ 1 -0.001 0 {
+ dup % loopval
+ -0.15 mul % loopval * -0.15
+ 0.9 add % 0.9 - loopval * 0.15
+ setgray % set gray shade
+
+ 0 % x
+ 1 index neg % loopval
+ 1 add % 1 - loopval
+ 3 index % height
+ mul % height * (1 - loopval)
+ moveto % starting point
+
+ dup % loopval
+ 3 index % width
+ mul % loopval * width
+ 2 index % height
+ lineto % Next point
+
+ 0 % x
+ 2 index % height
+ lineto % Next point
+
+ closepath
+ fill
+
+ dup % loopval
+ 0.15 mul % loopval * 0.15
+ 0.6 add % 0.6 + loopval * 0.15
+ setgray
+
+ dup % loopval
+ neg 1 add % 1 - loopval
+ 3 index % width
+ mul % (1 - loopval) * width
+ 0 % y
+ moveto % Starting point
+
+ 2 index % width
+ exch % loopval
+ 2 index % height
+ mul % loopval * height
+ lineto % Next point
+
+ 1 index % width
+ 0 % y
+ lineto % Next point
+
+ closepath
+ fill
+ } for
+
+ 0 setgray rectstroke
+
+ /Helvetica-BoldOblique findfont 1 index 3 div scalefont setfont
+ dup 40 div
+
+ dup 4 mul 1 index 25 mul moveto (E) show
+ dup 10 mul 1 index 15 mul moveto (S) show
+ dup 16 mul 1 index 5 mul moveto (P) show
+
+ /Helvetica-BoldOblique findfont 2 index 5 div scalefont setfont
+ dup 14 mul 1 index 29 mul moveto (asy) show
+ dup 20 mul 1 index 19 mul moveto (oftware) show
+ dup 26 mul 1 index 9 mul moveto (roducts) show
+
+ pop
+} bind def
+%%EndResource
+%%EndProlog
+%%Page: 1 1
+gsave
+
+ % Determine the imageable area and device resolution...
+ initclip newpath clippath pathbbox % Get bounding rectangle
+ 72 div /pageTop exch def % Get top margin in inches
+ 72 div /pageRight exch def % Get right margin in inches
+ 72 div /pageBottom exch def % Get bottom margin in inches
+ 72 div /pageLeft exch def % Get left margin in inches
+
+ /pageWidth pageRight pageLeft sub def % pageWidth = pageRight - pageLeft
+ /pageHeight pageTop pageBottom sub def% pageHeight = pageTop - pageBottom
+
+ /boxWidth % width of text box
+ pageWidth pageHeight lt
+ { pageWidth 54 mul }
+ { pageHeight 42 mul }
+ ifelse def
+
+ newpath % Clear bounding path
+
+ % Create fonts...
+ /bigFont /Helvetica-Bold findfont % bigFont = Helvetica-Bold
+ pageHeight 3 mul scalefont def % size = pageHeight * 3 (nominally 33)
+
+ /mediumFont /Helvetica findfont % mediumFont = Helvetica
+ pageHeight 1.5 mul scalefont def % size = pageHeight * 1.5 (nominally 16.5)
+
+ % Offset page to account for lower-left margin...
+ pageLeft 72 mul
+ pageBottom 72 mul
+ translate
+
+ % Draw the label at the top and bottom...
+ 0 setgray % Color
+
+ pageWidth 36 mul % Center of page
+ pageHeight 72 mul % Top of page
+ pageWidth -7 mul add % - 2 lines
+ moveto % Position text
+ bigFont setfont % Font
+ (Secret) CENTER % Show text centered
+
+ pageWidth 36 mul % Center of page
+ pageHeight 6 mul % Bottom of page
+ moveto % Position text
+ bigFont setfont % Font
+ (Secret) CENTER % Show text centered
+
+ % Job information box...
+ pageWidth 36 mul 9 add % x = pageWidth * 1/2 * 72 + 9
+ boxWidth 0.5 mul sub % x-= 1/2 box width
+ pageHeight 30 mul 9 sub % y = pageHeight * 1/2 * 72 - 9
+ boxWidth % w = box width
+ pageHeight 14 mul % h = pageHeight * 1/2 * 72
+ 0.5 setgray rectfill % Draw a shadow
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ boxWidth 0.5 mul sub % x-= 1/2 box width
+ pageHeight 30 mul % y = pageHeight * 1/4 * 72
+ boxWidth % w = box width
+ pageHeight 14 mul % h = pageHeight * 1/2 * 72
+
+ 4 copy 1 setgray rectfill % Clear the box to white
+ 0 setgray rectstroke % Draw a black box around it...
+
+ % Job information text...
+ mediumFont setfont % Medium sized font
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight 5 mul add % y += 2 lines
+ 2 copy % Copy X & Y
+ moveto
+ (Job ID: ) RIGHT
+ moveto
+ ({printer-name}-{job-id}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight 2 mul add % y += 1 line
+ 2 copy % Copy X & Y
+ moveto
+ (Title: ) RIGHT
+ moveto
+ ({job-name}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight -1 mul add % y -= 1 line
+ 2 copy % Copy X & Y
+ moveto
+ (Requesting User: ) RIGHT
+ moveto
+ ({job-originating-user-name}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight -4 mul add % y -= 2 lines
+ 2 copy % Copy X & Y
+ moveto
+ (Billing Info: ) RIGHT
+ moveto
+ ({?job-billing}) show
+
+ % Then the CUPS logo....
+ gsave
+ pageWidth 4 mul
+ pageWidth 6 mul
+ translate
+ pageWidth 9 mul CUPSLOGO
+ grestore
+
+ % And the ESP logo....
+ gsave
+ pageWidth 59 mul
+ pageWidth 6 mul
+ translate
+ pageWidth 6 mul ESPLOGO
+ grestore
+% Show the page...
+grestore
+showpage
+%
+% End of "$Id: secret 2122 2002-01-31 14:19:37Z mike $".
+%
+%%EOF
diff --git a/data/standard b/data/standard
new file mode 100644
index 000000000..ca0edb037
--- /dev/null
+++ b/data/standard
@@ -0,0 +1,261 @@
+%!PS-Adobe-3.0
+%%BoundingBox: 0 0 612 792
+%%Pages: 1
+%%LanguageLevel: 1
+%%DocumentData: Clean7Bit
+%%DocumentSuppliedResources: procset bannerprint/1.0
+%%DocumentNeededResources: font Helvetica Helvetica-Bold Times-Roman
+%%Creator: Michael Sweet, Easy Software Products
+%%CreationDate: May 10, 2000
+%%Title: Test Page
+%%EndComments
+%%BeginProlog
+%%BeginResource procset bannerprint 1.1 0
+%
+% PostScript banner page for the Common UNIX Printing System ("CUPS").
+%
+% Copyright 1993-2002 Easy Software Products
+%
+% These coded instructions, statements, and computer programs are the
+% property of Easy Software Products and are protected by Federal
+% copyright law. Distribution and use rights are outlined in the file
+% "LICENSE.txt" which should have been included with this file. If this
+% file is missing or damaged please contact Easy Software Products
+% at:
+%
+% Attn: CUPS Licensing Information
+% Easy Software Products
+% 44141 Airport View Drive, Suite 204
+% Hollywood, Maryland 20636-3111 USA
+%
+% Voice: (301) 373-9603
+% EMail: cups-info@cups.org
+% WWW: http://www.cups.org
+%
+/CENTER { % Draw centered text
+ % (name) CENTER -
+ dup stringwidth pop % Get the width of the string
+ 0.5 mul neg 0 rmoveto % Shift left 1/2 of the distance
+ show % Show the string
+} bind def
+/RIGHT { % Draw right-justified text
+ % (name) RIGHT -
+ dup stringwidth pop % Get the width of the string
+ neg 0 rmoveto % Shift left the entire distance
+ show % Show the string
+} bind def
+/NUMBER { % Draw a number
+ % power n NUMBER -
+ 1 index 1 eq { % power == 1?
+ round cvi exch pop % Convert "n" to integer
+ } {
+ 1 index mul round exch div % Truncate extra decimal places
+ } ifelse
+ 100 string cvs show % Convert to a string and show it...
+} bind def
+/CUPSLOGO { % Draw the CUPS logo
+ % height CUPSLOGO
+ % Start with a big C...
+ /Helvetica findfont 1 index scalefont setfont
+ 0 setgray
+ 0 0 moveto
+ (C) show
+
+ % Then "UNIX Printing System" much smaller...
+ /Helvetica-Bold findfont 1 index 9 div scalefont setfont
+ 0.25 mul
+ dup dup 2.0 mul moveto
+ (UNIX) show
+ dup dup 1.6 mul moveto
+ (Printing) show
+ dup 1.2 mul moveto
+ (System) show
+} bind def
+/ESPLOGO { % Draw the ESP logo
+ % height ESPLOGO
+ % Compute the size of the logo...
+ 0 0
+ 2 index 1.5 mul 3 index
+
+ % Do the "metallic" fill from 10% black to 40% black...
+ 1 -0.001 0 {
+ dup % loopval
+ -0.15 mul % loopval * -0.15
+ 0.9 add % 0.9 - loopval * 0.15
+ setgray % set gray shade
+
+ 0 % x
+ 1 index neg % loopval
+ 1 add % 1 - loopval
+ 3 index % height
+ mul % height * (1 - loopval)
+ moveto % starting point
+
+ dup % loopval
+ 3 index % width
+ mul % loopval * width
+ 2 index % height
+ lineto % Next point
+
+ 0 % x
+ 2 index % height
+ lineto % Next point
+
+ closepath
+ fill
+
+ dup % loopval
+ 0.15 mul % loopval * 0.15
+ 0.6 add % 0.6 + loopval * 0.15
+ setgray
+
+ dup % loopval
+ neg 1 add % 1 - loopval
+ 3 index % width
+ mul % (1 - loopval) * width
+ 0 % y
+ moveto % Starting point
+
+ 2 index % width
+ exch % loopval
+ 2 index % height
+ mul % loopval * height
+ lineto % Next point
+
+ 1 index % width
+ 0 % y
+ lineto % Next point
+
+ closepath
+ fill
+ } for
+
+ 0 setgray rectstroke
+
+ /Helvetica-BoldOblique findfont 1 index 3 div scalefont setfont
+ dup 40 div
+
+ dup 4 mul 1 index 25 mul moveto (E) show
+ dup 10 mul 1 index 15 mul moveto (S) show
+ dup 16 mul 1 index 5 mul moveto (P) show
+
+ /Helvetica-BoldOblique findfont 2 index 5 div scalefont setfont
+ dup 14 mul 1 index 29 mul moveto (asy) show
+ dup 20 mul 1 index 19 mul moveto (oftware) show
+ dup 26 mul 1 index 9 mul moveto (roducts) show
+
+ pop
+} bind def
+%%EndResource
+%%EndProlog
+%%Page: 1 1
+gsave
+
+ % Determine the imageable area and device resolution...
+ initclip newpath clippath pathbbox % Get bounding rectangle
+ 72 div /pageTop exch def % Get top margin in inches
+ 72 div /pageRight exch def % Get right margin in inches
+ 72 div /pageBottom exch def % Get bottom margin in inches
+ 72 div /pageLeft exch def % Get left margin in inches
+
+ /pageWidth pageRight pageLeft sub def % pageWidth = pageRight - pageLeft
+ /pageHeight pageTop pageBottom sub def% pageHeight = pageTop - pageBottom
+
+ /boxWidth % width of text box
+ pageWidth pageHeight lt
+ { pageWidth 54 mul }
+ { pageHeight 42 mul }
+ ifelse def
+
+ newpath % Clear bounding path
+
+ % Create fonts...
+ /bigFont /Helvetica-Bold findfont % bigFont = Helvetica-Bold
+ pageHeight 3 mul scalefont def % size = pageHeight * 3 (nominally 33)
+
+ /mediumFont /Helvetica findfont % mediumFont = Helvetica
+ pageHeight 1.5 mul scalefont def % size = pageHeight * 1.5 (nominally 16.5)
+
+ % Offset page to account for lower-left margin...
+ pageLeft 72 mul
+ pageBottom 72 mul
+ translate
+
+ % Job information box...
+ pageWidth 36 mul 9 add % x = pageWidth * 1/2 * 72 + 9
+ boxWidth 0.5 mul sub % x-= 1/2 box width
+ pageHeight 30 mul 9 sub % y = pageHeight * 1/2 * 72 - 9
+ boxWidth % w = box width
+ pageHeight 14 mul % h = pageHeight * 1/2 * 72
+ 0.5 setgray rectfill % Draw a shadow
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ boxWidth 0.5 mul sub % x-= 1/2 box width
+ pageHeight 30 mul % y = pageHeight * 1/4 * 72
+ boxWidth % w = box width
+ pageHeight 14 mul % h = pageHeight * 1/2 * 72
+
+ 4 copy 1 setgray rectfill % Clear the box to white
+ 0 setgray rectstroke % Draw a black box around it...
+
+ % Job information text...
+ mediumFont setfont % Medium sized font
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight 5 mul add % y += 2 lines
+ 2 copy % Copy X & Y
+ moveto
+ (Job ID: ) RIGHT
+ moveto
+ ({printer-name}-{job-id}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight 2 mul add % y += 1 line
+ 2 copy % Copy X & Y
+ moveto
+ (Title: ) RIGHT
+ moveto
+ ({job-name}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight -1 mul add % y -= 1 line
+ 2 copy % Copy X & Y
+ moveto
+ (Requesting User: ) RIGHT
+ moveto
+ ({job-originating-user-name}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight -4 mul add % y -= 2 lines
+ 2 copy % Copy X & Y
+ moveto
+ (Billing Info: ) RIGHT
+ moveto
+ ({?job-billing}) show
+
+ % Then the CUPS logo....
+ gsave
+ pageWidth 4 mul
+ pageWidth 6 mul
+ translate
+ pageWidth 9 mul CUPSLOGO
+ grestore
+
+ % And the ESP logo....
+ gsave
+ pageWidth 59 mul
+ pageWidth 6 mul
+ translate
+ pageWidth 6 mul ESPLOGO
+ grestore
+% Show the page...
+grestore
+showpage
+%
+% End of "$Id: standard 2122 2002-01-31 14:19:37Z mike $".
+%
+%%EOF
diff --git a/data/testprint.ps b/data/testprint.ps
new file mode 100644
index 000000000..09683e614
--- /dev/null
+++ b/data/testprint.ps
@@ -0,0 +1,522 @@
+%!PS-Adobe-3.0
+%%BoundingBox: 0 0 612 792
+%%Pages: 1
+%%LanguageLevel: 1
+%%DocumentData: Clean7Bit
+%%DocumentSuppliedResources: procset testprint/1.0
+%%DocumentNeededResources: font Helvetica Helvetica-Bold Times-Roman
+%%Creator: Michael Sweet, Easy Software Products
+%%CreationDate: May 11, 1999
+%%Title: Test Page
+%%EndComments
+%%BeginProlog
+%%BeginResource procset testprint 1.1 0
+%
+% PostScript test page for the Common UNIX Printing System ("CUPS").
+%
+% Copyright 1993-2002 Easy Software Products
+%
+% These coded instructions, statements, and computer programs are the
+% property of Easy Software Products and are protected by Federal
+% copyright law. Distribution and use rights are outlined in the file
+% "LICENSE.txt" which should have been included with this file. If this
+% file is missing or damaged please contact Easy Software Products
+% at:
+%
+% Attn: CUPS Licensing Information
+% Easy Software Products
+% 44141 Airport View Drive, Suite 204
+% Hollywood, Maryland 20636-3111 USA
+%
+% Voice: (301) 373-9603
+% EMail: cups-info@cups.org
+% WWW: http://www.cups.org
+%
+/OCTANT { % Draw a color wheel OCTANT...
+ % (name) radius r g b OCTANT -
+ % Loop through 100 shades...
+ 0 0.010101 0.98 {
+ % Set the color...
+ 3 index 1 eq % R == 1?
+ 3 index 1 eq % G == 1?
+ 3 index 1 eq % B == 1?
+ and and {
+ 0 index 4 index mul % R * val
+ 1 index 4 index mul % G * val
+ 2 index 4 index mul % B * val
+ } {
+ 0 index 4 index mul % R * val
+ 1 index neg 1 add add % + (1 - val)
+ 1 index 4 index mul % G * val
+ 2 index neg 1 add add % + (1 - val)
+ 2 index 4 index mul % B * val
+ 3 index neg 1 add add % + (1 - val)
+ } ifelse
+ setrgbcolor
+
+ % Draw a polygon...
+ dup 5 index mul dup 0 % x1, y1
+ moveto
+ 0.707106781 mul dup lineto % x2, y2
+
+ 0.010101 add 4 index mul dup % x3
+ 0.707106781 mul dup lineto % x3, y3
+ 0 lineto % x4, y4
+ closepath
+ fill
+ } for
+
+ % Draw a line around the polygons...
+ pop pop pop dup
+ 0 setgray
+ 0 0 moveto
+ dup 0 lineto
+ 0.707106781 mul dup lineto
+ closepath
+ stroke
+
+ % Draw the label...
+ 0 exch dup -9 div exch % text offset = 0, -radius/9
+ dup 0.923879532 mul % x = radius * cos(22.5)
+ exch 0.382683432 mul % y = radius * cos(22.5)
+ moveto % position label
+ gsave
+ 22.5 rotate % rotate label
+ rmoveto % offset label
+ show % show label
+ grestore
+} bind def
+/CENTER { % Draw centered text
+ % (name) CENTER -
+ dup stringwidth pop % Get the width of the string
+ 0.5 mul neg 0 rmoveto % Shift left 1/2 of the distance
+ show % Show the string
+} bind def
+/RIGHT { % Draw right-justified text
+ % (name) RIGHT -
+ dup stringwidth pop % Get the width of the string
+ neg 0 rmoveto % Shift left the entire distance
+ show % Show the string
+} bind def
+/NUMBER { % Draw a number
+ % power n NUMBER -
+ 1 index 1 eq { % power == 1?
+ round cvi exch pop % Convert "n" to integer
+ } {
+ 1 index mul round exch div % Truncate extra decimal places
+ } ifelse
+ 100 string cvs show % Convert to a string and show it...
+} bind def
+/CUPSLOGO { % Draw the CUPS logo
+ % height CUPSLOGO
+ % Start with a big C...
+ /Helvetica findfont 1 index scalefont setfont
+ 0 setgray
+ 0 0 moveto
+ (C) show
+
+ % Then "UNIX Printing System" much smaller...
+ /Helvetica-Bold findfont 1 index 9 div scalefont setfont
+ 0.25 mul
+ dup dup 2.0 mul moveto
+ (UNIX) show
+ dup dup 1.6 mul moveto
+ (Printing) show
+ dup 1.2 mul moveto
+ (System) show
+} bind def
+/ESPLOGO { % Draw the ESP logo
+ % height ESPLOGO
+ % Compute the size of the logo...
+ 0 0
+ 2 index 1.5 mul 3 index
+
+ % Do the "metallic" fill from 10% black to 40% black...
+ 1 -0.001 0 {
+ dup % loopval
+ -0.15 mul % loopval * -0.15
+ 0.9 add % 0.9 - loopval * 0.15
+ setgray % set gray shade
+
+ 0 % x
+ 1 index neg % loopval
+ 1 add % 1 - loopval
+ 3 index % height
+ mul % height * (1 - loopval)
+ moveto % starting point
+
+ dup % loopval
+ 3 index % width
+ mul % loopval * width
+ 2 index % height
+ lineto % Next point
+
+ 0 % x
+ 2 index % height
+ lineto % Next point
+
+ closepath
+ fill
+
+ dup % loopval
+ 0.15 mul % loopval * 0.15
+ 0.6 add % 0.6 + loopval * 0.15
+ setgray
+
+ dup % loopval
+ neg 1 add % 1 - loopval
+ 3 index % width
+ mul % (1 - loopval) * width
+ 0 % y
+ moveto % Starting point
+
+ 2 index % width
+ exch % loopval
+ 2 index % height
+ mul % loopval * height
+ lineto % Next point
+
+ 1 index % width
+ 0 % y
+ lineto % Next point
+
+ closepath
+ fill
+ } for
+
+ 0 setgray rectstroke
+
+ /Helvetica-BoldOblique findfont 1 index 3 div scalefont setfont
+ dup 40 div
+
+ dup 4 mul 1 index 25 mul moveto (E) show
+ dup 10 mul 1 index 15 mul moveto (S) show
+ dup 16 mul 1 index 5 mul moveto (P) show
+
+ /Helvetica-BoldOblique findfont 2 index 5 div scalefont setfont
+ dup 14 mul 1 index 29 mul moveto (asy) show
+ dup 20 mul 1 index 19 mul moveto (oftware) show
+ dup 26 mul 1 index 9 mul moveto (roducts) show
+
+ pop
+} bind def
+%%EndResource
+%%EndProlog
+%%Page: 1 1
+gsave
+
+ % Determine the imageable area and device resolution...
+ initclip newpath clippath pathbbox % Get bounding rectangle
+ 72 div /pageTop exch def % Get top margin in inches
+ 72 div /pageRight exch def % Get right margin in inches
+ 72 div /pageBottom exch def % Get bottom margin in inches
+ 72 div /pageLeft exch def % Get left margin in inches
+
+ 4 setlinewidth % Draw wide lines
+ 0 setgray closepath stroke % Draw a clipping rectangle
+ 1 setlinewidth % Draw normal lines
+
+ /pageWidth pageRight pageLeft sub def % pageWidth = pageRight - pageLeft
+ /pageHeight pageTop pageBottom sub def% pageHeight = pageTop - pageBottom
+
+ 72 72 dtransform % Get device resolution per inch
+ /yResolution exch abs def % yResolution = abs(yres)
+ /xResolution exch abs def % xResolution = abs(xres)
+
+ % Figure out the sizes of things...
+ /wheelSize % size of wheels
+ pageWidth pageHeight lt
+ { pageWidth 9 mul }
+ { pageHeight 7 mul }
+ ifelse def
+
+ % Create fonts...
+ /bigFont /Helvetica-Bold findfont % bigFont = Helvetica-Bold
+ pageHeight 3 mul scalefont def % size = pageHeight * 3 (nominally 33)
+
+ /mediumFont /Helvetica findfont % mediumFont = Helvetica
+ pageHeight 1.5 mul scalefont def % size = pageHeight * 1.5 (nominally 16.5)
+
+ /smallFont /Times-Roman findfont % smallFont = Times-Roman
+ pageHeight scalefont def % size = pageHeight (nominally 11)
+
+ % Offset page to account for lower-left margin...
+ pageLeft 72 mul
+ pageBottom 72 mul
+ translate
+
+ % Draw the color wheel...
+ mediumFont setfont % Font
+ 0 setgray % Color
+
+ gsave
+ % Position the wheel on the left side...
+ pageWidth 18 mul % x = pageWidth * 1/4 * 72
+ pageHeight 54 mul % y = pageHeight * 3/4 * 72
+ translate
+
+ % Size the wheel...
+ wheelSize
+
+ % Draw the colors...
+ dup (C) exch 0 1 1 OCTANT 45 rotate
+ dup (M) exch 1 0 1 OCTANT 45 rotate
+ dup (Y) exch 1 1 0 OCTANT 45 rotate
+ dup (K) exch 0 0 0 OCTANT 45 rotate
+ dup (R) exch 1 0 0 OCTANT 45 rotate
+ dup (G) exch 0 1 0 OCTANT 45 rotate
+ dup (B) exch 0 0 1 OCTANT 45 rotate
+ (W) exch 1 1 1 OCTANT 45 rotate
+ grestore
+
+ % Label the color wheel...
+ pageWidth 18 mul % x = pageWidth * 1/4 * 72
+ pageHeight 44 mul % y = pageHeight * 19/32 * 72
+ moveto % Position the text
+ (Color Wheel) CENTER % Show the text centered
+
+ % Draw radial lines...
+ gsave
+ 0 setlinewidth % 1 pixel lines
+
+ % Position the lines on the left side...
+ pageWidth 54 mul % x = pageWidth * 3/4 * 72
+ pageHeight 54 mul % y = pageHeight * 3/4 * 72
+ translate
+
+ % Size the wheel...
+ wheelSize
+
+ % Loop at 1 degree increments
+ 0 1 359 {
+ pop % Discard angle - not used
+ 0 0 moveto % Start line at the center
+ dup 0 lineto % Draw to the radius
+ 1 rotate % Rotate 1 degree
+ } for
+
+ pop % Discard radius - not needed anymore
+ stroke % Draw lines...
+
+ grestore
+
+ % Label the lines...
+ pageWidth 54 mul % x = pageWidth * 3/4 * 72
+ pageHeight 44 mul % y = pageHeight * 19/32 * 72
+ moveto % Position the text
+ (1 Degree Radial Lines) CENTER % Show the text centered
+
+ % Imageable area...
+ pageHeight 15 mul % Height of imageable area
+
+ pageWidth 4.5 mul % x = pageWidth * 1/16 * 72
+ pageHeight 35.5 mul % y = pageHeight * 1/2 * 72
+ 2 index sub % y -= height
+ pageWidth 28 mul % width = pageWidth * 1/4 * 72
+ 3 index % height
+ 0.5 setgray rectfill % Draw a shadow
+
+ pageWidth 4 mul % x = pageWidth * 1/16 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ 2 index sub % y -= height
+ pageWidth 28 mul % width = pageWidth * 3/8 * 72
+ 3 index % height
+ 4 copy 1 setgray rectfill % Clear the box to white
+ 0 setgray rectstroke % Draw a black box around it...
+
+ pop % Discard height
+
+ % Label the imageable area...
+ pageWidth 4 mul % x = pageWidth * 1/16 * 72
+ pageHeight 37 mul % y = pageHeight * 1/2 * 72
+ moveto % Position the text
+ mediumFont setfont % Font
+ (Imageable Area) show % Show the text
+
+ smallFont setfont % Font
+ pageWidth 14 mul % x = pageWidth * 3/16 * 72
+ pageHeight 36 mul % y = pageWidth * 1/2 * 72
+ pageHeight -2 mul add % y -= 2 * smallFont height
+
+ % Page Size inches
+ 2 copy moveto % Move to x & y
+ (Page Size: ) RIGHT % Label
+ 100 pageWidth NUMBER % pageWidth
+ (x) show % "x"
+ 100 pageHeight NUMBER % pageHeight
+ (in) show % "in"
+
+ % Page Size millimeters
+ pageHeight sub % Move down...
+
+ 2 copy moveto % Move to x & y
+ 10 pageWidth 25.4 mul NUMBER % pageWidth
+ (x) show % "x"
+ 10 pageHeight 25.4 mul NUMBER % pageHeight
+ (mm) show % "mm"
+
+ % Lower-left inches
+ pageHeight 2 mul sub % Move down...
+
+ 2 copy moveto % Move to x & y
+ (Lower-Left: ) RIGHT % Label
+ 100 pageLeft NUMBER % pageLeft
+ (x) show % "x"
+ 100 pageBottom NUMBER % pageBottom
+ (in) show % "in"
+
+ % Lower-left millimeters
+ pageHeight sub % Move down...
+
+ 2 copy moveto % Move to x & y
+ 10 pageLeft 25.4 mul NUMBER % pageLeft
+ (x) show % "x"
+ 10 pageBottom 25.4 mul NUMBER % pageBottom
+ (mm) show % "mm"
+
+ % Upper-right inches
+ pageHeight 2 mul sub % Move down...
+
+ 2 copy moveto % Move to x & y
+ (Upper-Right: ) RIGHT % Label
+ 100 pageRight NUMBER % pageRight
+ (x) show % "x"
+ 100 pageTop NUMBER % pageTop
+ (in) show % "in"
+
+ % Upper-right millimeters
+ pageHeight sub % Move down...
+
+ 2 copy moveto % Move to x & y
+ 10 pageRight 25.4 mul NUMBER % pageRight
+ (x) show % "x"
+ 10 pageTop 25.4 mul NUMBER % pageTop
+ (mm) show % "mm"
+
+ % Resolution dots-per-inch
+ pageHeight 2 mul sub % Move down...
+
+ 2 copy moveto % Move to x & y
+ (Resolution: ) RIGHT % Label
+ 1 xResolution NUMBER % xResolution
+ (x) show % "x"
+ 1 yResolution NUMBER % yResolution
+ (dpi) show % "dpi"
+
+ % Resolution dots-per-meter
+ pageHeight sub % Move down...
+
+ moveto % Move to x & y
+ 1 xResolution 39.27 mul NUMBER % xResolution
+ (x) show % "x"
+ 1 yResolution 39.27 mul NUMBER % yResolution
+ (dpm) show % "dpm"
+
+ % Interpreter Information...
+ pageHeight 15 mul % Height of interpreter information
+
+ pageWidth 40.5 mul % x = pageWidth * 9/16 * 72
+ pageHeight 35.5 mul % y = pageHeight * 1/2 * 72
+ 2 index sub % y -= height
+ pageWidth 28 mul % width = pageWidth * 1/4 * 72
+ 3 index % height
+ 0.5 setgray rectfill % Draw a shadow
+
+ pageWidth 40 mul % x = pageWidth * 9/16 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ 2 index sub % y -= height
+ pageWidth 28 mul % width = pageWidth * 3/8 * 72
+ 3 index % height
+ 4 copy 1 setgray rectfill % Clear the box to white
+ 0 setgray rectstroke % Draw a black box around it...
+
+ pop % Discard height
+
+ % Label the interpreter info...
+ pageWidth 40 mul % x = pageWidth * 9/16 * 72
+ pageHeight 37 mul % y = pageHeight * 1/2 * 72
+ moveto % Position the text
+ mediumFont setfont % Font
+ (Interpreter Information) show % Show the text
+
+ smallFont setfont % Font
+ pageWidth 49 mul % x = pageWidth * 11/16 * 72
+ pageHeight 36 mul % y = pageWidth * 1/2 * 72
+ pageHeight 2 mul sub % y -= 2 * smallFont height
+
+ % Language level
+ 2 copy moveto % Move to x & y
+ (PostScript: ) RIGHT % Label
+ (Level ) show % "Level "
+ 1 languagelevel NUMBER % Language level
+
+ % Version
+ pageHeight 2 mul sub % Move down...
+ 2 copy moveto % Move to x & y
+ (Version: ) RIGHT % Label
+ version show % Version
+ ( \() show % " ("
+ 1 revision NUMBER % Revision
+ (\)) show % ")"
+
+ % Product
+ pageHeight 2 mul sub % Move down...
+ 2 copy moveto % Move to x & y
+ (Product: ) RIGHT % Label
+ product show % Product name
+
+ % Serial Number
+ pageHeight 2 mul sub % Move down...
+ 2 copy moveto % Move to x & y
+ (Serial #: ) RIGHT % Label
+ 1 serialnumber NUMBER % S/N
+
+ % Draw the label at the top...
+ pageWidth 36 mul % Center of page
+ pageHeight 68 mul % Top of page (15/16ths)
+ 2 copy moveto % Position text
+ bigFont setfont % Font
+ (Printer Test Page) CENTER % Show text centered
+
+ % Draw the copyright notice at the bottom...
+ pageWidth 36 mul % Center of page
+ pageHeight 10 mul % Bottom of page
+ 2 copy moveto % Position text
+ (Printed Using CUPS v1.1.x) CENTER % Show text centered
+
+ pageHeight 2 mul sub % Move down...
+ 2 copy moveto % Position text
+ smallFont setfont % Font
+ (Copyright 1993-2002 Easy Software Products, All Rights Reserved.) CENTER
+ pageHeight sub % Move down...
+ 2 copy moveto % Position text
+ (CUPS, and the CUPS logo are the trademark property of) CENTER
+ pageHeight sub % Move down...
+ 2 copy moveto % Position text
+ (Easy Software Products, 44141 Airport View Drive, Suite 204,) CENTER
+ pageHeight sub % Move down...
+ 2 copy moveto % Position text
+ (Hollywood, Maryland, 20636-3111, USA.) CENTER
+
+ % Then the CUPS logo....
+ gsave
+ pageWidth 4 mul
+ pageHeight 4 mul
+ translate
+ pageWidth 9 mul CUPSLOGO
+ grestore
+
+ % And the ESP logo....
+ gsave
+ pageWidth 59 mul
+ pageHeight 4 mul
+ translate
+ pageWidth 6 mul ESPLOGO
+ grestore
+% Show the page...
+grestore
+showpage
+%
+% End of "$Id: testprint.ps 2010 2002-01-02 17:59:21Z mike $".
+%
+%%EOF
diff --git a/data/topsecret b/data/topsecret
new file mode 100644
index 000000000..c5c77c340
--- /dev/null
+++ b/data/topsecret
@@ -0,0 +1,277 @@
+%!PS-Adobe-3.0
+%%BoundingBox: 0 0 612 792
+%%Pages: 1
+%%LanguageLevel: 1
+%%DocumentData: Clean7Bit
+%%DocumentSuppliedResources: procset bannerprint/1.0
+%%DocumentNeededResources: font Helvetica Helvetica-Bold Times-Roman
+%%Creator: Michael Sweet, Easy Software Products
+%%CreationDate: May 10, 2000
+%%Title: Test Page
+%%EndComments
+%%BeginProlog
+%%BeginResource procset bannerprint 1.1 0
+%
+% PostScript banner page for the Common UNIX Printing System ("CUPS").
+%
+% Copyright 1993-2002 Easy Software Products
+%
+% These coded instructions, statements, and computer programs are the
+% property of Easy Software Products and are protected by Federal
+% copyright law. Distribution and use rights are outlined in the file
+% "LICENSE.txt" which should have been included with this file. If this
+% file is missing or damaged please contact Easy Software Products
+% at:
+%
+% Attn: CUPS Licensing Information
+% Easy Software Products
+% 44141 Airport View Drive, Suite 204
+% Hollywood, Maryland 20636-3111 USA
+%
+% Voice: (301) 373-9603
+% EMail: cups-info@cups.org
+% WWW: http://www.cups.org
+%
+/CENTER { % Draw centered text
+ % (name) CENTER -
+ dup stringwidth pop % Get the width of the string
+ 0.5 mul neg 0 rmoveto % Shift left 1/2 of the distance
+ show % Show the string
+} bind def
+/RIGHT { % Draw right-justified text
+ % (name) RIGHT -
+ dup stringwidth pop % Get the width of the string
+ neg 0 rmoveto % Shift left the entire distance
+ show % Show the string
+} bind def
+/NUMBER { % Draw a number
+ % power n NUMBER -
+ 1 index 1 eq { % power == 1?
+ round cvi exch pop % Convert "n" to integer
+ } {
+ 1 index mul round exch div % Truncate extra decimal places
+ } ifelse
+ 100 string cvs show % Convert to a string and show it...
+} bind def
+/CUPSLOGO { % Draw the CUPS logo
+ % height CUPSLOGO
+ % Start with a big C...
+ /Helvetica findfont 1 index scalefont setfont
+ 0 setgray
+ 0 0 moveto
+ (C) show
+
+ % Then "UNIX Printing System" much smaller...
+ /Helvetica-Bold findfont 1 index 9 div scalefont setfont
+ 0.25 mul
+ dup dup 2.0 mul moveto
+ (UNIX) show
+ dup dup 1.6 mul moveto
+ (Printing) show
+ dup 1.2 mul moveto
+ (System) show
+} bind def
+/ESPLOGO { % Draw the ESP logo
+ % height ESPLOGO
+ % Compute the size of the logo...
+ 0 0
+ 2 index 1.5 mul 3 index
+
+ % Do the "metallic" fill from 10% black to 40% black...
+ 1 -0.001 0 {
+ dup % loopval
+ -0.15 mul % loopval * -0.15
+ 0.9 add % 0.9 - loopval * 0.15
+ setgray % set gray shade
+
+ 0 % x
+ 1 index neg % loopval
+ 1 add % 1 - loopval
+ 3 index % height
+ mul % height * (1 - loopval)
+ moveto % starting point
+
+ dup % loopval
+ 3 index % width
+ mul % loopval * width
+ 2 index % height
+ lineto % Next point
+
+ 0 % x
+ 2 index % height
+ lineto % Next point
+
+ closepath
+ fill
+
+ dup % loopval
+ 0.15 mul % loopval * 0.15
+ 0.6 add % 0.6 + loopval * 0.15
+ setgray
+
+ dup % loopval
+ neg 1 add % 1 - loopval
+ 3 index % width
+ mul % (1 - loopval) * width
+ 0 % y
+ moveto % Starting point
+
+ 2 index % width
+ exch % loopval
+ 2 index % height
+ mul % loopval * height
+ lineto % Next point
+
+ 1 index % width
+ 0 % y
+ lineto % Next point
+
+ closepath
+ fill
+ } for
+
+ 0 setgray rectstroke
+
+ /Helvetica-BoldOblique findfont 1 index 3 div scalefont setfont
+ dup 40 div
+
+ dup 4 mul 1 index 25 mul moveto (E) show
+ dup 10 mul 1 index 15 mul moveto (S) show
+ dup 16 mul 1 index 5 mul moveto (P) show
+
+ /Helvetica-BoldOblique findfont 2 index 5 div scalefont setfont
+ dup 14 mul 1 index 29 mul moveto (asy) show
+ dup 20 mul 1 index 19 mul moveto (oftware) show
+ dup 26 mul 1 index 9 mul moveto (roducts) show
+
+ pop
+} bind def
+%%EndResource
+%%EndProlog
+%%Page: 1 1
+gsave
+
+ % Determine the imageable area and device resolution...
+ initclip newpath clippath pathbbox % Get bounding rectangle
+ 72 div /pageTop exch def % Get top margin in inches
+ 72 div /pageRight exch def % Get right margin in inches
+ 72 div /pageBottom exch def % Get bottom margin in inches
+ 72 div /pageLeft exch def % Get left margin in inches
+
+ /pageWidth pageRight pageLeft sub def % pageWidth = pageRight - pageLeft
+ /pageHeight pageTop pageBottom sub def% pageHeight = pageTop - pageBottom
+
+ /boxWidth % width of text box
+ pageWidth pageHeight lt
+ { pageWidth 54 mul }
+ { pageHeight 42 mul }
+ ifelse def
+
+ newpath % Clear bounding path
+
+ % Create fonts...
+ /bigFont /Helvetica-Bold findfont % bigFont = Helvetica-Bold
+ pageHeight 3 mul scalefont def % size = pageHeight * 3 (nominally 33)
+
+ /mediumFont /Helvetica findfont % mediumFont = Helvetica
+ pageHeight 1.5 mul scalefont def % size = pageHeight * 1.5 (nominally 16.5)
+
+ % Offset page to account for lower-left margin...
+ pageLeft 72 mul
+ pageBottom 72 mul
+ translate
+
+ % Draw the label at the top and bottom...
+ 0 setgray % Color
+
+ pageWidth 36 mul % Center of page
+ pageHeight 72 mul % Top of page
+ pageWidth -7 mul add % - 2 lines
+ moveto % Position text
+ bigFont setfont % Font
+ (Top Secret) CENTER % Show text centered
+
+ pageWidth 36 mul % Center of page
+ pageHeight 6 mul % Bottom of page
+ moveto % Position text
+ bigFont setfont % Font
+ (Top Secret) CENTER % Show text centered
+
+ % Job information box...
+ pageWidth 36 mul 9 add % x = pageWidth * 1/2 * 72 + 9
+ boxWidth 0.5 mul sub % x-= 1/2 box width
+ pageHeight 30 mul 9 sub % y = pageHeight * 1/2 * 72 - 9
+ boxWidth % w = box width
+ pageHeight 14 mul % h = pageHeight * 1/2 * 72
+ 0.5 setgray rectfill % Draw a shadow
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ boxWidth 0.5 mul sub % x-= 1/2 box width
+ pageHeight 30 mul % y = pageHeight * 1/4 * 72
+ boxWidth % w = box width
+ pageHeight 14 mul % h = pageHeight * 1/2 * 72
+
+ 4 copy 1 setgray rectfill % Clear the box to white
+ 0 setgray rectstroke % Draw a black box around it...
+
+ % Job information text...
+ mediumFont setfont % Medium sized font
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight 5 mul add % y += 2 lines
+ 2 copy % Copy X & Y
+ moveto
+ (Job ID: ) RIGHT
+ moveto
+ ({printer-name}-{job-id}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight 2 mul add % y += 1 line
+ 2 copy % Copy X & Y
+ moveto
+ (Title: ) RIGHT
+ moveto
+ ({job-name}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight -1 mul add % y -= 1 line
+ 2 copy % Copy X & Y
+ moveto
+ (Requesting User: ) RIGHT
+ moveto
+ ({job-originating-user-name}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight -4 mul add % y -= 2 lines
+ 2 copy % Copy X & Y
+ moveto
+ (Billing Info: ) RIGHT
+ moveto
+ ({?job-billing}) show
+
+ % Then the CUPS logo....
+ gsave
+ pageWidth 4 mul
+ pageWidth 6 mul
+ translate
+ pageWidth 9 mul CUPSLOGO
+ grestore
+
+ % And the ESP logo....
+ gsave
+ pageWidth 59 mul
+ pageWidth 6 mul
+ translate
+ pageWidth 6 mul ESPLOGO
+ grestore
+% Show the page...
+grestore
+showpage
+%
+% End of "$Id: topsecret 2122 2002-01-31 14:19:37Z mike $".
+%
+%%EOF
diff --git a/data/unclassified b/data/unclassified
new file mode 100644
index 000000000..d53190841
--- /dev/null
+++ b/data/unclassified
@@ -0,0 +1,277 @@
+%!PS-Adobe-3.0
+%%BoundingBox: 0 0 612 792
+%%Pages: 1
+%%LanguageLevel: 1
+%%DocumentData: Clean7Bit
+%%DocumentSuppliedResources: procset bannerprint/1.0
+%%DocumentNeededResources: font Helvetica Helvetica-Bold Times-Roman
+%%Creator: Michael Sweet, Easy Software Products
+%%CreationDate: May 10, 2000
+%%Title: Test Page
+%%EndComments
+%%BeginProlog
+%%BeginResource procset bannerprint 1.1 0
+%
+% PostScript banner page for the Common UNIX Printing System ("CUPS").
+%
+% Copyright 1993-2002 Easy Software Products
+%
+% These coded instructions, statements, and computer programs are the
+% property of Easy Software Products and are protected by Federal
+% copyright law. Distribution and use rights are outlined in the file
+% "LICENSE.txt" which should have been included with this file. If this
+% file is missing or damaged please contact Easy Software Products
+% at:
+%
+% Attn: CUPS Licensing Information
+% Easy Software Products
+% 44141 Airport View Drive, Suite 204
+% Hollywood, Maryland 20636-3111 USA
+%
+% Voice: (301) 373-9603
+% EMail: cups-info@cups.org
+% WWW: http://www.cups.org
+%
+/CENTER { % Draw centered text
+ % (name) CENTER -
+ dup stringwidth pop % Get the width of the string
+ 0.5 mul neg 0 rmoveto % Shift left 1/2 of the distance
+ show % Show the string
+} bind def
+/RIGHT { % Draw right-justified text
+ % (name) RIGHT -
+ dup stringwidth pop % Get the width of the string
+ neg 0 rmoveto % Shift left the entire distance
+ show % Show the string
+} bind def
+/NUMBER { % Draw a number
+ % power n NUMBER -
+ 1 index 1 eq { % power == 1?
+ round cvi exch pop % Convert "n" to integer
+ } {
+ 1 index mul round exch div % Truncate extra decimal places
+ } ifelse
+ 100 string cvs show % Convert to a string and show it...
+} bind def
+/CUPSLOGO { % Draw the CUPS logo
+ % height CUPSLOGO
+ % Start with a big C...
+ /Helvetica findfont 1 index scalefont setfont
+ 0 setgray
+ 0 0 moveto
+ (C) show
+
+ % Then "UNIX Printing System" much smaller...
+ /Helvetica-Bold findfont 1 index 9 div scalefont setfont
+ 0.25 mul
+ dup dup 2.0 mul moveto
+ (UNIX) show
+ dup dup 1.6 mul moveto
+ (Printing) show
+ dup 1.2 mul moveto
+ (System) show
+} bind def
+/ESPLOGO { % Draw the ESP logo
+ % height ESPLOGO
+ % Compute the size of the logo...
+ 0 0
+ 2 index 1.5 mul 3 index
+
+ % Do the "metallic" fill from 10% black to 40% black...
+ 1 -0.001 0 {
+ dup % loopval
+ -0.15 mul % loopval * -0.15
+ 0.9 add % 0.9 - loopval * 0.15
+ setgray % set gray shade
+
+ 0 % x
+ 1 index neg % loopval
+ 1 add % 1 - loopval
+ 3 index % height
+ mul % height * (1 - loopval)
+ moveto % starting point
+
+ dup % loopval
+ 3 index % width
+ mul % loopval * width
+ 2 index % height
+ lineto % Next point
+
+ 0 % x
+ 2 index % height
+ lineto % Next point
+
+ closepath
+ fill
+
+ dup % loopval
+ 0.15 mul % loopval * 0.15
+ 0.6 add % 0.6 + loopval * 0.15
+ setgray
+
+ dup % loopval
+ neg 1 add % 1 - loopval
+ 3 index % width
+ mul % (1 - loopval) * width
+ 0 % y
+ moveto % Starting point
+
+ 2 index % width
+ exch % loopval
+ 2 index % height
+ mul % loopval * height
+ lineto % Next point
+
+ 1 index % width
+ 0 % y
+ lineto % Next point
+
+ closepath
+ fill
+ } for
+
+ 0 setgray rectstroke
+
+ /Helvetica-BoldOblique findfont 1 index 3 div scalefont setfont
+ dup 40 div
+
+ dup 4 mul 1 index 25 mul moveto (E) show
+ dup 10 mul 1 index 15 mul moveto (S) show
+ dup 16 mul 1 index 5 mul moveto (P) show
+
+ /Helvetica-BoldOblique findfont 2 index 5 div scalefont setfont
+ dup 14 mul 1 index 29 mul moveto (asy) show
+ dup 20 mul 1 index 19 mul moveto (oftware) show
+ dup 26 mul 1 index 9 mul moveto (roducts) show
+
+ pop
+} bind def
+%%EndResource
+%%EndProlog
+%%Page: 1 1
+gsave
+
+ % Determine the imageable area and device resolution...
+ initclip newpath clippath pathbbox % Get bounding rectangle
+ 72 div /pageTop exch def % Get top margin in inches
+ 72 div /pageRight exch def % Get right margin in inches
+ 72 div /pageBottom exch def % Get bottom margin in inches
+ 72 div /pageLeft exch def % Get left margin in inches
+
+ /pageWidth pageRight pageLeft sub def % pageWidth = pageRight - pageLeft
+ /pageHeight pageTop pageBottom sub def% pageHeight = pageTop - pageBottom
+
+ /boxWidth % width of text box
+ pageWidth pageHeight lt
+ { pageWidth 54 mul }
+ { pageHeight 42 mul }
+ ifelse def
+
+ newpath % Clear bounding path
+
+ % Create fonts...
+ /bigFont /Helvetica-Bold findfont % bigFont = Helvetica-Bold
+ pageHeight 3 mul scalefont def % size = pageHeight * 3 (nominally 33)
+
+ /mediumFont /Helvetica findfont % mediumFont = Helvetica
+ pageHeight 1.5 mul scalefont def % size = pageHeight * 1.5 (nominally 16.5)
+
+ % Offset page to account for lower-left margin...
+ pageLeft 72 mul
+ pageBottom 72 mul
+ translate
+
+ % Draw the label at the top and bottom...
+ 0 setgray % Color
+
+ pageWidth 36 mul % Center of page
+ pageHeight 72 mul % Top of page
+ pageWidth -7 mul add % - 2 lines
+ moveto % Position text
+ bigFont setfont % Font
+ (Unclassified) CENTER % Show text centered
+
+ pageWidth 36 mul % Center of page
+ pageHeight 6 mul % Bottom of page
+ moveto % Position text
+ bigFont setfont % Font
+ (Unclassified) CENTER % Show text centered
+
+ % Job information box...
+ pageWidth 36 mul 9 add % x = pageWidth * 1/2 * 72 + 9
+ boxWidth 0.5 mul sub % x-= 1/2 box width
+ pageHeight 30 mul 9 sub % y = pageHeight * 1/2 * 72 - 9
+ boxWidth % w = box width
+ pageHeight 14 mul % h = pageHeight * 1/2 * 72
+ 0.5 setgray rectfill % Draw a shadow
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ boxWidth 0.5 mul sub % x-= 1/2 box width
+ pageHeight 30 mul % y = pageHeight * 1/4 * 72
+ boxWidth % w = box width
+ pageHeight 14 mul % h = pageHeight * 1/2 * 72
+
+ 4 copy 1 setgray rectfill % Clear the box to white
+ 0 setgray rectstroke % Draw a black box around it...
+
+ % Job information text...
+ mediumFont setfont % Medium sized font
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight 5 mul add % y += 2 lines
+ 2 copy % Copy X & Y
+ moveto
+ (Job ID: ) RIGHT
+ moveto
+ ({printer-name}-{job-id}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight 2 mul add % y += 1 line
+ 2 copy % Copy X & Y
+ moveto
+ (Title: ) RIGHT
+ moveto
+ ({job-name}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight -1 mul add % y -= 1 line
+ 2 copy % Copy X & Y
+ moveto
+ (Requesting User: ) RIGHT
+ moveto
+ ({job-originating-user-name}) show
+
+ pageWidth 36 mul % x = pageWidth * 1/2 * 72
+ pageHeight 36 mul % y = pageHeight * 1/2 * 72
+ pageHeight -4 mul add % y -= 2 lines
+ 2 copy % Copy X & Y
+ moveto
+ (Billing Info: ) RIGHT
+ moveto
+ ({?job-billing}) show
+
+ % Then the CUPS logo....
+ gsave
+ pageWidth 4 mul
+ pageWidth 6 mul
+ translate
+ pageWidth 9 mul CUPSLOGO
+ grestore
+
+ % And the ESP logo....
+ gsave
+ pageWidth 59 mul
+ pageWidth 6 mul
+ translate
+ pageWidth 6 mul ESPLOGO
+ grestore
+% Show the page...
+grestore
+showpage
+%
+% End of "$Id: unclassified 2122 2002-01-31 14:19:37Z mike $".
+%
+%%EOF
diff --git a/data/utf-8 b/data/utf-8
new file mode 100644
index 000000000..b73eb9667
--- /dev/null
+++ b/data/utf-8
@@ -0,0 +1,39 @@
+charset utf8
+
+#
+# This file defines the font mappings used for Unicode/UTF-8 text printing.
+#
+# Each line consists of:
+#
+# first last direction width normal bold italic bold-italic
+#
+# First and last are the first and last glyphs in the font mapping
+# that correspond to that font; a maximum of 256 characters can be
+# mapped within each group, with a maximum of 256 mappings (this is a
+# PostScript limitation.) The glyph values are hexadecimal.
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+0000 00FF ltor single Courier Courier-Bold Courier-Italic Courier-Bold-Italic
+0100 01FF ltor single Courier Courier-Bold Courier-Italic Courier-Bold-Italic
+0200 02FF ltor single Courier Courier-Bold Courier-Italic Courier-Bold-Italic
+0300 03FF ltor single Symbol
+0400 04FF ltor single Courier Courier-Bold Courier-Italic Courier-Bold-Italic
+0500 05FF rtol single Courier
+1E00 1EFF ltor single Courier Courier-Bold Courier-Italic Courier-Bold-Italic
+2000 20FF ltor single Courier Courier-Bold Courier-Italic Courier-Bold-Italic
+2100 21FF ltor single Courier Courier-Bold Courier-Italic Courier-Bold-Italic
+2200 22FF ltor single Symbol
+2300 23FF ltor single Symbol
diff --git a/data/windows-1250 b/data/windows-1250
new file mode 100644
index 000000000..afcc62ed5
--- /dev/null
+++ b/data/windows-1250
@@ -0,0 +1,254 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for Windows
+# Code Page 1250 (WinLatin2) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+7F 007F
+80 20AC
+82 201A
+84 201E
+85 2026
+86 2020
+87 2021
+89 2030
+8A 0160
+8B 2039
+8C 015A
+8D 0164
+8E 017D
+8F 0179
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+99 2122
+9A 0161
+9B 203A
+9C 015B
+9D 0165
+9E 017E
+9F 017A
+A0 00A0
+A1 02C7
+A2 02D8
+A3 0141
+A4 00A4
+A5 0104
+A6 00A6
+A7 00A7
+A8 00A8
+A9 00A9
+AA 015E
+AB 00AB
+AC 00AC
+AD 00AD
+AE 00AE
+AF 017B
+B0 00B0
+B1 00B1
+B2 02DB
+B3 0142
+B4 00B4
+B5 00B5
+B6 00B6
+B7 00B7
+B8 00B8
+B9 0105
+BA 015F
+BB 00BB
+BC 013D
+BD 02DD
+BE 013E
+BF 017C
+C0 0154
+C1 00C1
+C2 00C2
+C3 0102
+C4 00C4
+C5 0139
+C6 0106
+C7 00C7
+C8 010C
+C9 00C9
+CA 0118
+CB 00CB
+CC 011A
+CD 00CD
+CE 00CE
+CF 010E
+D0 0110
+D1 0143
+D2 0147
+D3 00D3
+D4 00D4
+D5 0150
+D6 00D6
+D7 00D7
+D8 0158
+D9 016E
+DA 00DA
+DB 0170
+DC 00DC
+DD 00DD
+DE 0162
+DF 00DF
+E0 0155
+E1 00E1
+E2 00E2
+E3 0103
+E4 00E4
+E5 013A
+E6 0107
+E7 00E7
+E8 010D
+E9 00E9
+EA 0119
+EB 00EB
+EC 011B
+ED 00ED
+EE 00EE
+EF 010F
+F0 0111
+F1 0144
+F2 0148
+F3 00F3
+F4 00F4
+F5 0151
+F6 00F6
+F7 00F7
+F8 0159
+F9 016F
+FA 00FA
+FB 0171
+FC 00FC
+FD 00FD
+FE 0163
+FF 02D9
diff --git a/data/windows-1251 b/data/windows-1251
new file mode 100644
index 000000000..6d31dee09
--- /dev/null
+++ b/data/windows-1251
@@ -0,0 +1,258 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for Windows
+# Code Page 1251 (WinCyrillic) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+7F 007F
+80 0402
+81 0403
+82 201A
+83 0453
+84 201E
+85 2026
+86 2020
+87 2021
+88 20AC
+89 2030
+8A 0409
+8B 2039
+8C 040A
+8D 040C
+8E 040B
+8F 040F
+90 0452
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+99 2122
+9A 0459
+9B 203A
+9C 045A
+9D 045C
+9E 045B
+9F 045F
+A0 00A0
+A1 040E
+A2 045E
+A3 0408
+A4 00A4
+A5 0490
+A6 00A6
+A7 00A7
+A8 0401
+A9 00A9
+AA 0404
+AB 00AB
+AC 00AC
+AD 00AD
+AE 00AE
+AF 0407
+B0 00B0
+B1 00B1
+B2 0406
+B3 0456
+B4 0491
+B5 00B5
+B6 00B6
+B7 00B7
+B8 0451
+B9 2116
+BA 0454
+BB 00BB
+BC 0458
+BD 0405
+BE 0455
+BF 0457
+C0 0410
+C1 0411
+C2 0412
+C3 0413
+C4 0414
+C5 0415
+C6 0416
+C7 0417
+C8 0418
+C9 0419
+CA 041A
+CB 041B
+CC 041C
+CD 041D
+CE 041E
+CF 041F
+D0 0420
+D1 0421
+D2 0422
+D3 0423
+D4 0424
+D5 0425
+D6 0426
+D7 0427
+D8 0428
+D9 0429
+DA 042A
+DB 042B
+DC 042C
+DD 042D
+DE 042E
+DF 042F
+E0 0430
+E1 0431
+E2 0432
+E3 0433
+E4 0434
+E5 0435
+E6 0436
+E7 0437
+E8 0438
+E9 0439
+EA 043A
+EB 043B
+EC 043C
+ED 043D
+EE 043E
+EF 043F
+F0 0440
+F1 0441
+F2 0442
+F3 0443
+F4 0444
+F5 0445
+F6 0446
+F7 0447
+F8 0448
+F9 0449
+FA 044A
+FB 044B
+FC 044C
+FD 044D
+FE 044E
+FF 044F
diff --git a/data/windows-1252 b/data/windows-1252
new file mode 100644
index 000000000..a98595874
--- /dev/null
+++ b/data/windows-1252
@@ -0,0 +1,254 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for Windows
+# Code Page 1252 (WinLatin1) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+7F 007F
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8A 0160
+8B 2039
+8C 0152
+8E 017D
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 02DC
+99 2122
+9A 0161
+9B 203A
+9C 0153
+9E 017E
+9F 0178
+A0 00A0
+A1 00A1
+A2 00A2
+A3 00A3
+A4 00A4
+A5 00A5
+A6 00A6
+A7 00A7
+A8 00A8
+A9 00A9
+AA 00AA
+AB 00AB
+AC 00AC
+AD 00AD
+AE 00AE
+AF 00AF
+B0 00B0
+B1 00B1
+B2 00B2
+B3 00B3
+B4 00B4
+B5 00B5
+B6 00B6
+B7 00B7
+B8 00B8
+B9 00B9
+BA 00BA
+BB 00BB
+BC 00BC
+BD 00BD
+BE 00BE
+BF 00BF
+C0 00C0
+C1 00C1
+C2 00C2
+C3 00C3
+C4 00C4
+C5 00C5
+C6 00C6
+C7 00C7
+C8 00C8
+C9 00C9
+CA 00CA
+CB 00CB
+CC 00CC
+CD 00CD
+CE 00CE
+CF 00CF
+D0 00D0
+D1 00D1
+D2 00D2
+D3 00D3
+D4 00D4
+D5 00D5
+D6 00D6
+D7 00D7
+D8 00D8
+D9 00D9
+DA 00DA
+DB 00DB
+DC 00DC
+DD 00DD
+DE 00DE
+DF 00DF
+E0 00E0
+E1 00E1
+E2 00E2
+E3 00E3
+E4 00E4
+E5 00E5
+E6 00E6
+E7 00E7
+E8 00E8
+E9 00E9
+EA 00EA
+EB 00EB
+EC 00EC
+ED 00ED
+EE 00EE
+EF 00EF
+F0 00F0
+F1 00F1
+F2 00F2
+F3 00F3
+F4 00F4
+F5 00F5
+F6 00F6
+F7 00F7
+F8 00F8
+F9 00F9
+FA 00FA
+FB 00FB
+FC 00FC
+FD 00FD
+FE 00FE
+FF 00FF
diff --git a/data/windows-1253 b/data/windows-1253
new file mode 100644
index 000000000..c736ecd6c
--- /dev/null
+++ b/data/windows-1253
@@ -0,0 +1,243 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for Windows
+# Code Page 1253 (WinGreek) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 9f ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+a0 ff ltor single Symbol
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+7F 007F
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+89 2030
+8B 2039
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+99 2122
+9B 203A
+A0 00A0
+A1 0385
+A2 0386
+A3 00A3
+A4 00A4
+A5 00A5
+A6 00A6
+A7 00A7
+A8 00A8
+A9 00A9
+AB 00AB
+AC 00AC
+AD 00AD
+AE 00AE
+AF 2015
+B0 00B0
+B1 00B1
+B2 00B2
+B3 00B3
+B4 0384
+B5 00B5
+B6 00B6
+B7 00B7
+B8 0388
+B9 0389
+BA 038A
+BB 00BB
+BC 038C
+BD 00BD
+BE 038E
+BF 038F
+C0 0390
+C1 0391
+C2 0392
+C3 0393
+C4 0394
+C5 0395
+C6 0396
+C7 0397
+C8 0398
+C9 0399
+CA 039A
+CB 039B
+CC 039C
+CD 039D
+CE 039E
+CF 039F
+D0 03A0
+D1 03A1
+D3 03A3
+D4 03A4
+D5 03A5
+D6 03A6
+D7 03A7
+D8 03A8
+D9 03A9
+DA 03AA
+DB 03AB
+DC 03AC
+DD 03AD
+DE 03AE
+DF 03AF
+E0 03B0
+E1 03B1
+E2 03B2
+E3 03B3
+E4 03B4
+E5 03B5
+E6 03B6
+E7 03B7
+E8 03B8
+E9 03B9
+EA 03BA
+EB 03BB
+EC 03BC
+ED 03BD
+EE 03BE
+EF 03BF
+F0 03C0
+F1 03C1
+F2 03C2
+F3 03C3
+F4 03C4
+F5 03C5
+F6 03C6
+F7 03C7
+F8 03C8
+F9 03C9
+FA 03CA
+FB 03CB
+FC 03CC
+FD 03CD
+FE 03CE
diff --git a/data/windows-1254 b/data/windows-1254
new file mode 100644
index 000000000..87fff2db7
--- /dev/null
+++ b/data/windows-1254
@@ -0,0 +1,252 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for Windows
+# Code Page 1254 (WinTurkish) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+7F 007F
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8A 0160
+8B 2039
+8C 0152
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 02DC
+99 2122
+9A 0161
+9B 203A
+9C 0153
+9F 0178
+A0 00A0
+A1 00A1
+A2 00A2
+A3 00A3
+A4 00A4
+A5 00A5
+A6 00A6
+A7 00A7
+A8 00A8
+A9 00A9
+AA 00AA
+AB 00AB
+AC 00AC
+AD 00AD
+AE 00AE
+AF 00AF
+B0 00B0
+B1 00B1
+B2 00B2
+B3 00B3
+B4 00B4
+B5 00B5
+B6 00B6
+B7 00B7
+B8 00B8
+B9 00B9
+BA 00BA
+BB 00BB
+BC 00BC
+BD 00BD
+BE 00BE
+BF 00BF
+C0 00C0
+C1 00C1
+C2 00C2
+C3 00C3
+C4 00C4
+C5 00C5
+C6 00C6
+C7 00C7
+C8 00C8
+C9 00C9
+CA 00CA
+CB 00CB
+CC 00CC
+CD 00CD
+CE 00CE
+CF 00CF
+D0 011E
+D1 00D1
+D2 00D2
+D3 00D3
+D4 00D4
+D5 00D5
+D6 00D6
+D7 00D7
+D8 00D8
+D9 00D9
+DA 00DA
+DB 00DB
+DC 00DC
+DD 0130
+DE 015E
+DF 00DF
+E0 00E0
+E1 00E1
+E2 00E2
+E3 00E3
+E4 00E4
+E5 00E5
+E6 00E6
+E7 00E7
+E8 00E8
+E9 00E9
+EA 00EA
+EB 00EB
+EC 00EC
+ED 00ED
+EE 00EE
+EF 00EF
+F0 011F
+F1 00F1
+F2 00F2
+F3 00F3
+F4 00F4
+F5 00F5
+F6 00F6
+F7 00F7
+F8 00F8
+F9 00F9
+FA 00FA
+FB 00FB
+FC 00FC
+FD 0131
+FE 015F
+FF 00FF
diff --git a/data/windows-1255 b/data/windows-1255
new file mode 100644
index 000000000..a8b26a85d
--- /dev/null
+++ b/data/windows-1255
@@ -0,0 +1,236 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for Windows
+# Code Page 1255 (WinHebrew) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff rtol single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+7F 007F
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8B 2039
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 02DC
+99 2122
+9B 203A
+A0 00A0
+A1 00A1
+A2 00A2
+A3 00A3
+A4 20AA
+A5 00A5
+A6 00A6
+A7 00A7
+A8 00A8
+A9 00A9
+AA 00D7
+AB 00AB
+AC 00AC
+AD 00AD
+AE 00AE
+AF 00AF
+B0 00B0
+B1 00B1
+B2 00B2
+B3 00B3
+B4 00B4
+B5 00B5
+B6 00B6
+B7 00B7
+B8 00B8
+B9 00B9
+BA 00F7
+BB 00BB
+BC 00BC
+BD 00BD
+BE 00BE
+BF 00BF
+C0 05B0
+C1 05B1
+C2 05B2
+C3 05B3
+C4 05B4
+C5 05B5
+C6 05B6
+C7 05B7
+C8 05B8
+C9 05B9
+CB 05BB
+CC 05BC
+CD 05BD
+CE 05BE
+CF 05BF
+D0 05C0
+D1 05C1
+D2 05C2
+D3 05C3
+D4 05F0
+D5 05F1
+D6 05F2
+D7 05F3
+D8 05F4
+E0 05D0
+E1 05D1
+E2 05D2
+E3 05D3
+E4 05D4
+E5 05D5
+E6 05D6
+E7 05D7
+E8 05D8
+E9 05D9
+EA 05DA
+EB 05DB
+EC 05DC
+ED 05DD
+EE 05DE
+EF 05DF
+F0 05E0
+F1 05E1
+F2 05E2
+F3 05E3
+F4 05E4
+F5 05E5
+F6 05E6
+F7 05E7
+F8 05E8
+F9 05E9
+FA 05EA
+FD 200E
+FE 200F
diff --git a/data/windows-1256 b/data/windows-1256
new file mode 100644
index 000000000..6908f1eb5
--- /dev/null
+++ b/data/windows-1256
@@ -0,0 +1,259 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for Windows
+# Code Page 1256 (WinArabic) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff rtol single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+7F 007F
+80 20AC
+81 067E
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8A 0679
+8B 2039
+8C 0152
+8D 0686
+8E 0698
+8F 0688
+90 06AF
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 06A9
+99 2122
+9A 0691
+9B 203A
+9C 0153
+9D 200C
+9E 200D
+9F 06BA
+A0 00A0
+A1 060C
+A2 00A2
+A3 00A3
+A4 00A4
+A5 00A5
+A6 00A6
+A7 00A7
+A8 00A8
+A9 00A9
+AA 06BE
+AB 00AB
+AC 00AC
+AD 00AD
+AE 00AE
+AF 00AF
+B0 00B0
+B1 00B1
+B2 00B2
+B3 00B3
+B4 00B4
+B5 00B5
+B6 00B6
+B7 00B7
+B8 00B8
+B9 00B9
+BA 061B
+BB 00BB
+BC 00BC
+BD 00BD
+BE 00BE
+BF 061F
+C0 06C1
+C1 0621
+C2 0622
+C3 0623
+C4 0624
+C5 0625
+C6 0626
+C7 0627
+C8 0628
+C9 0629
+CA 062A
+CB 062B
+CC 062C
+CD 062D
+CE 062E
+CF 062F
+D0 0630
+D1 0631
+D2 0632
+D3 0633
+D4 0634
+D5 0635
+D6 0636
+D7 00D7
+D8 0637
+D9 0638
+DA 0639
+DB 063A
+DC 0640
+DD 0641
+DE 0642
+DF 0643
+E0 00E0
+E1 0644
+E2 00E2
+E3 0645
+E4 0646
+E5 0647
+E6 0648
+E7 00E7
+E8 00E8
+E9 00E9
+EA 00EA
+EB 00EB
+EC 0649
+ED 064A
+EE 00EE
+EF 00EF
+F0 064B
+F1 064C
+F2 064D
+F3 064E
+F4 00F4
+F5 064F
+F6 0650
+F7 00F7
+F8 0651
+F9 00F9
+FA 0652
+FB 00FB
+FC 00FC
+FD 200E
+FE 200F
+FF 06D2
diff --git a/data/windows-1257 b/data/windows-1257
new file mode 100644
index 000000000..ac5f8e0b7
--- /dev/null
+++ b/data/windows-1257
@@ -0,0 +1,247 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for Windows
+# Code Page 1257 (WinBaltic) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+7F 007F
+80 20AC
+82 201A
+84 201E
+85 2026
+86 2020
+87 2021
+89 2030
+8B 2039
+8D 00A8
+8E 02C7
+8F 00B8
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+99 2122
+9B 203A
+9D 00AF
+9E 02DB
+A0 00A0
+A2 00A2
+A3 00A3
+A4 00A4
+A6 00A6
+A7 00A7
+A8 00D8
+A9 00A9
+AA 0156
+AB 00AB
+AC 00AC
+AD 00AD
+AE 00AE
+AF 00C6
+B0 00B0
+B1 00B1
+B2 00B2
+B3 00B3
+B4 00B4
+B5 00B5
+B6 00B6
+B7 00B7
+B8 00F8
+B9 00B9
+BA 0157
+BB 00BB
+BC 00BC
+BD 00BD
+BE 00BE
+BF 00E6
+C0 0104
+C1 012E
+C2 0100
+C3 0106
+C4 00C4
+C5 00C5
+C6 0118
+C7 0112
+C8 010C
+C9 00C9
+CA 0179
+CB 0116
+CC 0122
+CD 0136
+CE 012A
+CF 013B
+D0 0160
+D1 0143
+D2 0145
+D3 00D3
+D4 014C
+D5 00D5
+D6 00D6
+D7 00D7
+D8 0172
+D9 0141
+DA 015A
+DB 016A
+DC 00DC
+DD 017B
+DE 017D
+DF 00DF
+E0 0105
+E1 012F
+E2 0101
+E3 0107
+E4 00E4
+E5 00E5
+E6 0119
+E7 0113
+E8 010D
+E9 00E9
+EA 017A
+EB 0117
+EC 0123
+ED 0137
+EE 012B
+EF 013C
+F0 0161
+F1 0144
+F2 0146
+F3 00F3
+F4 014D
+F5 00F5
+F6 00F6
+F7 00F7
+F8 0173
+F9 0142
+FA 015B
+FB 016B
+FC 00FC
+FD 017C
+FE 017E
+FF 02D9
diff --git a/data/windows-1258 b/data/windows-1258
new file mode 100644
index 000000000..f7721c51b
--- /dev/null
+++ b/data/windows-1258
@@ -0,0 +1,250 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for Windows
+# Code Page 1258 (WinVietnamese) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+7F 007F
+80 20AC
+82 201A
+83 0192
+84 201E
+85 2026
+86 2020
+87 2021
+88 02C6
+89 2030
+8B 2039
+8C 0152
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+98 02DC
+99 2122
+9B 203A
+9C 0153
+9F 0178
+A0 00A0
+A1 00A1
+A2 00A2
+A3 00A3
+A4 00A4
+A5 00A5
+A6 00A6
+A7 00A7
+A8 00A8
+A9 00A9
+AA 00AA
+AB 00AB
+AC 00AC
+AD 00AD
+AE 00AE
+AF 00AF
+B0 00B0
+B1 00B1
+B2 00B2
+B3 00B3
+B4 00B4
+B5 00B5
+B6 00B6
+B7 00B7
+B8 00B8
+B9 00B9
+BA 00BA
+BB 00BB
+BC 00BC
+BD 00BD
+BE 00BE
+BF 00BF
+C0 00C0
+C1 00C1
+C2 00C2
+C3 0102
+C4 00C4
+C5 00C5
+C6 00C6
+C7 00C7
+C8 00C8
+C9 00C9
+CA 00CA
+CB 00CB
+CC 0300
+CD 00CD
+CE 00CE
+CF 00CF
+D0 0110
+D1 00D1
+D2 0309
+D3 00D3
+D4 00D4
+D5 01A0
+D6 00D6
+D7 00D7
+D8 00D8
+D9 00D9
+DA 00DA
+DB 00DB
+DC 00DC
+DD 01AF
+DE 0303
+DF 00DF
+E0 00E0
+E1 00E1
+E2 00E2
+E3 0103
+E4 00E4
+E5 00E5
+E6 00E6
+E7 00E7
+E8 00E8
+E9 00E9
+EA 00EA
+EB 00EB
+EC 0301
+ED 00ED
+EE 00EE
+EF 00EF
+F0 0111
+F1 00F1
+F2 0323
+F3 00F3
+F4 00F4
+F5 01A1
+F6 00F6
+F7 00F7
+F8 00F8
+F9 00F9
+FA 00FA
+FB 00FB
+FC 00FC
+FD 01B0
+FE 20AB
+FF 00FF
diff --git a/data/windows-874 b/data/windows-874
new file mode 100644
index 000000000..886e46a4b
--- /dev/null
+++ b/data/windows-874
@@ -0,0 +1,228 @@
+charset 8bit
+
+#
+# This file defines the font and character mappings used for Windows
+# Code Page 874 (Thai) text printing.
+#
+# The first line consists of:
+#
+# direction width normal bold italic bold-italic
+#
+# Direction is the string "ltor" or "rtol", indicating left-to-right or
+# right-to-left text.
+#
+# Width is the string "single" or "double"; double means that the glyphs
+# are twice as wide as ASCII characters in the Courier typeface.
+#
+# "Normal", "bold", "italic", and "bold-italic" are the typefaces to use
+# for each presentation. If characters are only available in a single
+# style then only one typeface should be listed (e.g. "Symbol")
+#
+# Each font that is listed will be used (and downloaded if needed) when
+# printing.
+#
+
+00 ff ltor single Courier Courier-Bold Courier-Italic Courier-BoldItalic
+
+#
+# The following lines define the mapping from the 8-bit character set to
+# the Unicode glyphs for each character:
+#
+# char glyph
+#
+# "Char" and "glyph" are hexadecimal values.
+#
+
+20 0020
+21 0021
+22 0022
+23 0023
+24 0024
+25 0025
+26 0026
+27 0027
+28 0028
+29 0029
+2A 002A
+2B 002B
+2C 002C
+2D 002D
+2E 002E
+2F 002F
+30 0030
+31 0031
+32 0032
+33 0033
+34 0034
+35 0035
+36 0036
+37 0037
+38 0038
+39 0039
+3A 003A
+3B 003B
+3C 003C
+3D 003D
+3E 003E
+3F 003F
+40 0040
+41 0041
+42 0042
+43 0043
+44 0044
+45 0045
+46 0046
+47 0047
+48 0048
+49 0049
+4A 004A
+4B 004B
+4C 004C
+4D 004D
+4E 004E
+4F 004F
+50 0050
+51 0051
+52 0052
+53 0053
+54 0054
+55 0055
+56 0056
+57 0057
+58 0058
+59 0059
+5A 005A
+5B 005B
+5C 005C
+5D 005D
+5E 005E
+5F 005F
+60 0060
+61 0061
+62 0062
+63 0063
+64 0064
+65 0065
+66 0066
+67 0067
+68 0068
+69 0069
+6A 006A
+6B 006B
+6C 006C
+6D 006D
+6E 006E
+6F 006F
+70 0070
+71 0071
+72 0072
+73 0073
+74 0074
+75 0075
+76 0076
+77 0077
+78 0078
+79 0079
+7A 007A
+7B 007B
+7C 007C
+7D 007D
+7E 007E
+7F 007F
+80 20AC
+85 2026
+91 2018
+92 2019
+93 201C
+94 201D
+95 2022
+96 2013
+97 2014
+A0 00A0
+A1 0E01
+A2 0E02
+A3 0E03
+A4 0E04
+A5 0E05
+A6 0E06
+A7 0E07
+A8 0E08
+A9 0E09
+AA 0E0A
+AB 0E0B
+AC 0E0C
+AD 0E0D
+AE 0E0E
+AF 0E0F
+B0 0E10
+B1 0E11
+B2 0E12
+B3 0E13
+B4 0E14
+B5 0E15
+B6 0E16
+B7 0E17
+B8 0E18
+B9 0E19
+BA 0E1A
+BB 0E1B
+BC 0E1C
+BD 0E1D
+BE 0E1E
+BF 0E1F
+C0 0E20
+C1 0E21
+C2 0E22
+C3 0E23
+C4 0E24
+C5 0E25
+C6 0E26
+C7 0E27
+C8 0E28
+C9 0E29
+CA 0E2A
+CB 0E2B
+CC 0E2C
+CD 0E2D
+CE 0E2E
+CF 0E2F
+D0 0E30
+D1 0E31
+D2 0E32
+D3 0E33
+D4 0E34
+D5 0E35
+D6 0E36
+D7 0E37
+D8 0E38
+D9 0E39
+DA 0E3A
+DF 0E3F
+E0 0E40
+E1 0E41
+E2 0E42
+E3 0E43
+E4 0E44
+E5 0E45
+E6 0E46
+E7 0E47
+E8 0E48
+E9 0E49
+EA 0E4A
+EB 0E4B
+EC 0E4C
+ED 0E4D
+EE 0E4E
+EF 0E4F
+F0 0E50
+F1 0E51
+F2 0E52
+F3 0E53
+F4 0E54
+F5 0E55
+F6 0E56
+F7 0E57
+F8 0E58
+F9 0E59
+FA 0E5A
+FB 0E5B