From 79449bff2dbde6e5fe76324addfa83dab422201d Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower III" Date: Sat, 24 Apr 2004 07:38:43 +0000 Subject: [PATCH] Fix typo in error message --- .../C/print/models/CANONBJ10E-GS/model-config | 23 + .../C/print/models/GSdefault/model-config | 137 ++++++ .../C/print/models/HPLJ4050-PS/model-config | 36 ++ .../models/PS2PDFspooldir-GS/model-config | 72 +++ .../PS2PDFspooldir-GS/ps2pdf_spooltodir.sh | 130 +++++ .../PSdefault/fonts/AvantGarde-Book.pmf | Bin 0 -> 6716 bytes .../fonts/AvantGarde-BookOblique.pmf | Bin 0 -> 6728 bytes .../PSdefault/fonts/AvantGarde-Demi.pmf | Bin 0 -> 6712 bytes .../fonts/AvantGarde-DemiOblique.pmf | Bin 0 -> 6724 bytes .../models/PSdefault/fonts/Courier-Bold.pmf | Bin 0 -> 6612 bytes .../PSdefault/fonts/Courier-BoldOblique.pmf | Bin 0 -> 6636 bytes .../PSdefault/fonts/Courier-Oblique.pmf | Bin 0 -> 6608 bytes .../print/models/PSdefault/fonts/Courier.pmf | Bin 0 -> 6592 bytes .../models/PSdefault/fonts/Helvetica-Bold.pmf | Bin 0 -> 6680 bytes .../PSdefault/fonts/Helvetica-BoldOblique.pmf | Bin 0 -> 6692 bytes .../PSdefault/fonts/Helvetica-Oblique.pmf | Bin 0 -> 6688 bytes .../models/PSdefault/fonts/Helvetica.pmf | Bin 0 -> 6672 bytes .../PSdefault/fonts/LubalinGraph-Book.pmf | Bin 0 -> 6628 bytes .../fonts/LubalinGraph-BookOblique.pmf | Bin 0 -> 6640 bytes .../PSdefault/fonts/LubalinGraph-Demi.pmf | Bin 0 -> 6624 bytes .../fonts/LubalinGraph-DemiOblique.pmf | Bin 0 -> 6636 bytes .../PSdefault/fonts/NewCenturySchlbk-Bold.pmf | Bin 0 -> 6644 bytes .../fonts/NewCenturySchlbk-BoldItalic.pmf | Bin 0 -> 6656 bytes .../fonts/NewCenturySchlbk-Italic.pmf | Bin 0 -> 6652 bytes .../fonts/NewCenturySchlbk-Roman.pmf | Bin 0 -> 6648 bytes .../models/PSdefault/fonts/Souvenir-Demi.pmf | Bin 0 -> 6680 bytes .../PSdefault/fonts/Souvenir-DemiItalic.pmf | Bin 0 -> 6692 bytes .../models/PSdefault/fonts/Souvenir-Light.pmf | Bin 0 -> 6684 bytes .../PSdefault/fonts/Souvenir-LightItalic.pmf | Bin 0 -> 6696 bytes .../C/print/models/PSdefault/fonts/Symbol.pmf | Bin 0 -> 6556 bytes .../models/PSdefault/fonts/Times-Bold.pmf | Bin 0 -> 6660 bytes .../PSdefault/fonts/Times-BoldItalic.pmf | Bin 0 -> 6672 bytes .../models/PSdefault/fonts/Times-Italic.pmf | Bin 0 -> 6668 bytes .../models/PSdefault/fonts/Times-Roman.pmf | Bin 0 -> 6664 bytes .../models/PSdefault/fonts/ZapfDingbats.pmf | Bin 0 -> 6676 bytes .../C/print/models/PSdefault/model-config | 136 +++++ .../C/print/models/PSspooldir/model-config | 71 +++ .../C/print/models/PSspooldir/spooltodir.sh | 127 +++++ XpConfig/en_US/print/attributes/document | 13 + Xprint/etc/Xsession.d/cde_xsessiond_xprint.sh | 30 ++ Xprint/etc/profile.d/xprint.csh | 16 + Xprint/etc/profile.d/xprint.sh | 16 + Xprint/ps/PsFTFonts.c | 80 +++ Xprint/ps/psout_ft.c | 330 +++++++++++++ Xprint/ps/psout_ftpstype1.c | 180 +++++++ Xprint/ps/psout_ftpstype3.c | 463 ++++++++++++++++++ Xprint/spooler.h | 72 +++ hw/xwin/winmultiwindowwm.c | 2 +- 48 files changed, 1933 insertions(+), 1 deletion(-) create mode 100644 XpConfig/C/print/models/CANONBJ10E-GS/model-config create mode 100644 XpConfig/C/print/models/GSdefault/model-config create mode 100644 XpConfig/C/print/models/HPLJ4050-PS/model-config create mode 100644 XpConfig/C/print/models/PS2PDFspooldir-GS/model-config create mode 100755 XpConfig/C/print/models/PS2PDFspooldir-GS/ps2pdf_spooltodir.sh create mode 100644 XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Book.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/AvantGarde-BookOblique.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Demi.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/AvantGarde-DemiOblique.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Courier-Bold.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Courier-BoldOblique.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Courier-Oblique.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Courier.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Helvetica-Bold.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Helvetica-BoldOblique.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Helvetica-Oblique.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Helvetica.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Book.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-BookOblique.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Demi.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-DemiOblique.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Bold.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-BoldItalic.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Italic.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Roman.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Souvenir-Demi.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Souvenir-DemiItalic.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Souvenir-Light.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Souvenir-LightItalic.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Symbol.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Times-Bold.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Times-BoldItalic.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Times-Italic.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/Times-Roman.pmf create mode 100644 XpConfig/C/print/models/PSdefault/fonts/ZapfDingbats.pmf create mode 100644 XpConfig/C/print/models/PSdefault/model-config create mode 100644 XpConfig/C/print/models/PSspooldir/model-config create mode 100755 XpConfig/C/print/models/PSspooldir/spooltodir.sh create mode 100644 XpConfig/en_US/print/attributes/document create mode 100644 Xprint/etc/Xsession.d/cde_xsessiond_xprint.sh create mode 100644 Xprint/etc/profile.d/xprint.csh create mode 100644 Xprint/etc/profile.d/xprint.sh create mode 100644 Xprint/ps/PsFTFonts.c create mode 100644 Xprint/ps/psout_ft.c create mode 100644 Xprint/ps/psout_ftpstype1.c create mode 100644 Xprint/ps/psout_ftpstype3.c create mode 100644 Xprint/spooler.h diff --git a/XpConfig/C/print/models/CANONBJ10E-GS/model-config b/XpConfig/C/print/models/CANONBJ10E-GS/model-config new file mode 100644 index 000000000..97bfd8196 --- /dev/null +++ b/XpConfig/C/print/models/CANONBJ10E-GS/model-config @@ -0,0 +1,23 @@ +# $Xprint.org: CANONBJ10E-GS model-config,v 1.4 2003/02/10 14:48:04 gisburn Exp $ + +*content-orientations-supported: portrait landscape +*descriptor: Canon BJ-10e (GhostScript) +*document-formats-supported: {POSTSCRIPT 2} +*input-trays-supported: +*medium-source-sizes-supported: \ +{ '' \ + {iso-b5 FALSE {6.35 169.65 6.35 243.65}}\ + {iso-a4 FALSE {6.35 203.65 6.35 290.65}}\ + {na-letter FALSE {6.35 209.55 6.35 273.05}}\ + {na-legal FALSE {6.35 209.55 6.35 349.25}}\ +} + +*plexes-supported: simplex +*printer-model: "Canon BJ-10e (GhostScript)" +*printer-resolutions-supported: 360 +*xp-ddx-identifier: XP-POSTSCRIPT +*xp-listfonts-modes-supported: xp-list-internal-printer-fonts xp-list-glyph-fonts +*xp-embedded-formats-supported: {POSTSCRIPT 2} +*xp-raw-formats-supported: {POSTSCRIPT 2} +*xp-setup-proviso: setup-optional +# EOF. diff --git a/XpConfig/C/print/models/GSdefault/model-config b/XpConfig/C/print/models/GSdefault/model-config new file mode 100644 index 000000000..61dac18b8 --- /dev/null +++ b/XpConfig/C/print/models/GSdefault/model-config @@ -0,0 +1,137 @@ +# $Xprint.org: GSdefault model-config,v 1.1 2003/02/10 14:48:04 gisburn Exp $ +# Generic default model-config for the PostScript DDX when using GhostScript +# as printer driver +# +# DO NOT MODIFY THIS FILE!! +# +# If you want to make customisations for your printer create a copy +# of this printer model. +# Example (for creating a model config "MYCOMPANYlaserxx"): +# 1. Create model config dir: +# % mkdir MYCOMPANYlaserxx +# 2. Link (or copy) the PMF (printer font metrics) for the +# printer buildin fonts: +# % ln -s GSdefault/fonts MYCOMPANYlaserxx/. +# 3. Copy the model config file: +# % cp GSdefault/model-config MYCOMPANYlaserxx/. +# 4. Customize MYCOMPANYlaserxx/model-config to match your needs. +# + +# Attributes supported for this printer model +# You may want to cut the lists here down to the attributes supported +# by your printer. +*content-orientations-supported: portrait landscape reverse-portrait reverse-landscape +*descriptor: GhostScript default model +*document-formats-supported: {POSTSCRIPT 2} +*input-trays-supported: +*medium-source-sizes-supported: \ +{ '' \ + {na-letter FALSE {6.35 209.55 6.35 273.05}}\ + {na-legal FALSE {6.35 209.55 6.35 349.25}}\ + {executive FALSE {6.35 177.80 6.35 260.35}}\ + {folio FALSE {6.35 204.47 6.35 323.85}}\ + {invoice FALSE {6.35 133.35 6.35 209.55}}\ + {ledger FALSE {6.35 273.05 6.35 425.45}}\ + {quarto FALSE {6.35 209.55 6.35 268.732}}\ + {a FALSE {6.35 209.55 6.35 273.05}}\ + {b FALSE {6.35 273.05 6.35 425.45}}\ + {c FALSE {6.35 425.45 6.35 552.45}}\ + {d FALSE {6.35 552.45 6.35 857.25}}\ + {e FALSE {6.35 857.25 6.35 1111.25}}\ + {na-6x9-envelope FALSE {6.35 146.05 6.35 222.25}}\ + {na-10x15-envelope FALSE {6.35 247.65 6.35 374.65}}\ + {monarch-envelope FALSE {6.35 91.948 6.35 184.15}}\ + {na-10x13-envelope FALSE {6.35 247.65 6.35 323.85}}\ + {na-9x12-envelope FALSE {6.35 222.25 6.35 298.45}}\ + {na-number-10-envelope FALSE {6.35 98.425 6.35 234.95}}\ + {na-7x9-envelope FALSE {6.35 171.45 6.35 222.25}}\ + {na-9x11-envelope FALSE {6.35 222.25 6.35 273.05}}\ + {na-10x14-envelope FALSE {6.35 247.65 6.35 349.25}}\ + {na-number-9-envelope FALSE {6.35 92.075 6.35 219.075}}\ + {iso-a0 FALSE {6.35 834.65 6.35 1182.65}}\ + {iso-a1 FALSE {6.35 587.65 6.35 834.65}}\ + {iso-a2 FALSE {6.35 413.65 6.35 587.65}}\ + {iso-a3 FALSE {6.35 290.65 6.35 413.65}}\ + {iso-a4 FALSE {6.35 203.65 6.35 290.65}}\ + {iso-a5 FALSE {6.35 141.65 6.35 203.65}}\ + {iso-a6 FALSE {6.35 98.65 6.35 141.65}}\ + {iso-a7 FALSE {6.35 67.65 6.35 98.65}}\ + {iso-a8 FALSE {6.35 45.65 6.35 67.65}}\ + {iso-a9 FALSE {6.35 30.65 6.35 45.65}}\ + {iso-a10 FALSE {6.35 19.65 6.35 30.65}}\ + {iso-b1 FALSE {6.35 700.65 6.35 993.65}}\ + {iso-b2 FALSE {6.35 493.65 6.35 700.65}}\ + {iso-b3 FALSE {6.35 346.65 6.35 493.65}}\ + {iso-b4 FALSE {6.35 243.65 6.35 346.65}}\ + {iso-b5 FALSE {6.35 169.65 6.35 243.65}}\ + {iso-b6 FALSE {6.35 118.65 6.35 169.65}}\ + {iso-b7 FALSE {6.35 81.65 6.35 118.65}}\ + {iso-b8 FALSE {6.35 55.65 6.35 81.65}}\ + {iso-b9 FALSE {6.35 37.65 6.35 55.65}}\ + {iso-b10 FALSE {6.35 24.65 6.35 37.65}}\ + {jis-b1 FALSE {6.35 721.65 6.35 1023.65}}\ + {jis-b2 FALSE {6.35 508.65 6.35 721.65}}\ + {jis-b3 FALSE {6.35 357.65 6.35 508.65}}\ + {jis-b4 FALSE {6.35 250.65 6.35 357.65}}\ + {jis-b5 FALSE {6.35 175.65 6.35 250.65}}\ + {jis-b6 FALSE {6.35 121.65 6.35 175.65}}\ + {jis-b7 FALSE {6.35 84.65 6.35 121.65}}\ + {jis-b8 FALSE {6.35 57.65 6.35 84.65}}\ + {jis-b9 FALSE {6.35 38.65 6.35 57.65}}\ + {jis-b10 FALSE {6.35 25.65 6.35 38.65}}\ + {iso-c3 FALSE {6.35 317.65 6.35 451.65}}\ + {iso-c4 FALSE {6.35 222.65 6.35 317.65}}\ + {iso-c5 FALSE {6.35 155.65 6.35 222.65}}\ + {iso-c6 FALSE {6.35 107.65 6.35 155.65}}\ + {iso-designated-long FALSE {6.35 103.65 6.35 213.65}}\ + {hp-2x-postcard FALSE {6.35 141.65 6.35 193.65}}\ + {hp-european-edp FALSE {6.35 298.45 6.35 349.25}}\ + {hp-mini FALSE {6.35 133.35 6.35 209.55}}\ + {hp-postcard FALSE {6.35 93.65 6.35 141.65}}\ + {hp-tabloid FALSE {6.35 273.05 6.35 425.45}}\ + {hp-us-edp FALSE {6.35 273.05 6.35 349.25}}\ + {hp-us-government-legal FALSE {6.35 196.85 6.35 323.85}}\ + {hp-us-government-letter FALSE {6.35 196.85 6.35 247.65}}\ +} +# If you have more than one tray use the following example: +# 1. List the supported trays +#*input-trays-supported: main manual +# 2. Define each tray and it's paper sizes +#*medium-source-sizes-supported: \ +#{ main \ +# {na-letter FALSE {6.35 209.55 6.35 273.05}} \ +# {na-legal FALSE {6.35 209.55 6.35 349.25}} \ +# {iso-a4 FALSE {6.35 203.65 6.35 290.65}} \ +#} \ +#{ manual \ +# {iso-a5 FALSE {6.35 141.65 6.35 203.65}} \ +# {iso-c5 FALSE {6.35 155.65 6.35 222.65}} \ +# {iso-designated-long FALSE {6.35 103.65 6.35 213.65}} \ +# {jis-b5 FALSE {6.35 175.65 6.35 250.65}} \ +# {monarch-envelope FALSE {6.35 91.948 6.35 184.15}} \ +# {na-legal FALSE {6.35 209.55 6.35 349.25}} \ +# {na-number-10-envelope FALSE {6.35 98.425 6.35 234.95}} \ +# {executive FALSE {6.35 177.8 6.35 260.35}} \ +# {iso-a3 FALSE {6.35 290.65 6.35 413.65}} \ +# {iso-a0 FALSE {6.35 834.65 6.35 1182.65}} \ +#} +*plexes-supported: simplex duplex tumble +*printer-model: "GhostScript default model" +# 75, 100, 120, 150, 180, 200, 240, 300, 360, 400, 600, 720, +# 940, 1200 and 2440 are supported DPI values, we limit it here +# to some common values: +*printer-resolutions-supported: 300 360 400 600 +*xp-ddx-identifier: XP-POSTSCRIPT +*xp-listfonts-modes-supported: xp-list-internal-printer-fonts xp-list-glyph-fonts +*xp-embedded-formats-supported: {POSTSCRIPT 2} +*xp-raw-formats-supported: {POSTSCRIPT 2} +*xp-setup-proviso: setup-optional + +# NOTE: xp-psddx-* attributes are EXPERIMENTAL for now. +# xp-psddx-download-fonts defines which fonts should be downloaded as outlines +# (valid types are "pfa", "pfb", "ttf", "ttc", "otf", "otc") +*xp-psddx-download-fonts: pfa pfb ttf ttc otf otc +# xp-psddx-download-font-type defines which font type is used to download outlines +# (valid values are "bitmap", "pstype1" and "pstype3") +*xp-psddx-download-font-type: pstype1 +# EOF. diff --git a/XpConfig/C/print/models/HPLJ4050-PS/model-config b/XpConfig/C/print/models/HPLJ4050-PS/model-config new file mode 100644 index 000000000..159206de2 --- /dev/null +++ b/XpConfig/C/print/models/HPLJ4050-PS/model-config @@ -0,0 +1,36 @@ +# $Xprint.org: HPLJ4050-PS model-config,v 1.1 2003/12/16 00:48:04 gisburn Exp $ +# model-config for the HP LaserJet 4050 PostScript printer series +# +*content-orientations-supported: portrait landscape reverse-portrait reverse-landscape +*descriptor: Hewlett-Packard LaserJet 4050 PostScript printer +*document-formats-supported: {POSTSCRIPT 2} +*input-trays-supported: +*medium-source-sizes-supported: \ +{ '' \ + {na-letter FALSE {6.35 209.55 6.35 273.05}}\ + {na-legal FALSE {6.35 209.55 6.35 349.25}}\ + {executive FALSE {6.35 177.80 6.35 260.35}}\ + {iso-a4 FALSE {6.35 203.65 6.35 290.65}}\ + {iso-a5 FALSE {6.35 141.65 6.35 203.65}}\ + {iso-b5 FALSE {6.35 169.65 6.35 243.65}}\ + {jis-b5 FALSE {6.35 175.65 6.35 250.65}}\ +} + +# Duplex unit is optional for HPLJ4050 series +*plexes-supported: simplex +*printer-model: "Hewlett-Packard LaserJet 4050 PostScript printer" +*printer-resolutions-supported: 600 1200 +*xp-ddx-identifier: XP-POSTSCRIPT +*xp-listfonts-modes-supported: xp-list-internal-printer-fonts xp-list-glyph-fonts +*xp-embedded-formats-supported: {POSTSCRIPT 2} +*xp-raw-formats-supported: {POSTSCRIPT 2} +*xp-setup-proviso: setup-optional + +# NOTE: xp-psddx-* attributes are EXPERIMENTAL for now. +# xp-psddx-download-fonts defines which fonts should be downloaded as outlines +# (valid types are "pfa", "pfb", "ttf", "ttc", "otf", "otc") +*xp-psddx-download-fonts: pfa pfb ttf ttc otf otc +# xp-psddx-download-font-type defines which font type is used to download outlines +# (valid values are "bitmap", "pstype1" and "pstype3") +*xp-psddx-download-font-type: pstype1 +# EOF. diff --git a/XpConfig/C/print/models/PS2PDFspooldir-GS/model-config b/XpConfig/C/print/models/PS2PDFspooldir-GS/model-config new file mode 100644 index 000000000..1d74b8676 --- /dev/null +++ b/XpConfig/C/print/models/PS2PDFspooldir-GS/model-config @@ -0,0 +1,72 @@ +# $Xprint.org: PS2PDFspooldir-GS model-config,v 1.1 2003/11/20 03:48:04 gisburn Exp $ +# PostScript DDX model-config which converts jobs to PDF via GhostScript's "ps2pdf" +# and then sends them to a spool dir instead to a print queue +# +# This model is basically a cut-down GSdefault model with a custom *xp-spooler-command +# +# DO NOT MODIFY THIS FILE!! +# +# If you want to make customisations for your printer create a copy +# of this printer model. +# Example (for creating a model config "MYCOMPANYlaserxx"): +# 1. Create model config dir: +# % mkdir MYCOMPANYlaserxx +# 2. Link (or copy) the PMF (printer font metrics) for the +# printer buildin fonts: +# % ln -s PS2PDFspooldir-GS/fonts MYCOMPANYlaserxx/. +# 3. Copy the model config file: +# % cp PS2PDFspooldir-GS/model-config MYCOMPANYlaserxx/. +# 4. Customize MYCOMPANYlaserxx/model-config to match your needs. +# +# Attributes supported for this printer model +*content-orientations-supported: portrait landscape reverse-portrait reverse-landscape +*descriptor: PDF job spool dir /tmp/Xprintjobs +*document-formats-supported: {POSTSCRIPT 2} +*input-trays-supported: +*medium-source-sizes-supported: \ +{ '' \ + {na-letter FALSE {6.35 209.55 6.35 273.05}}\ + {na-legal FALSE {6.35 209.55 6.35 349.25}}\ + {executive FALSE {6.35 177.80 6.35 260.35}}\ + {ledger FALSE {6.35 273.05 6.35 425.45}}\ + {quarto FALSE {6.35 209.55 6.35 268.732}}\ + {iso-a3 FALSE {6.35 290.65 6.35 413.65}}\ + {iso-a4 FALSE {6.35 203.65 6.35 290.65}}\ + {iso-a5 FALSE {6.35 141.65 6.35 203.65}}\ + {iso-b3 FALSE {6.35 346.65 6.35 493.65}}\ + {iso-b4 FALSE {6.35 243.65 6.35 346.65}}\ + {iso-b5 FALSE {6.35 169.65 6.35 243.65}}\ + {jis-b3 FALSE {6.35 357.65 6.35 508.65}}\ + {jis-b4 FALSE {6.35 250.65 6.35 357.65}}\ + {jis-b5 FALSE {6.35 175.65 6.35 250.65}}\ + {iso-c3 FALSE {6.35 317.65 6.35 451.65}}\ + {iso-c4 FALSE {6.35 222.65 6.35 317.65}}\ + {iso-c5 FALSE {6.35 155.65 6.35 222.65}}\ +} + +*plexes-supported: simplex duplex tumble +*printer-model: "PDF job spool dir /tmp/Xprintjobs" +# 75, 100, 120, 150, 180, 200, 240, 300, 360, 400, 600, 720, +# 940, 1200 and 2440 are supported DPI values, we limit it here +# to some common values: +*printer-resolutions-supported: 300 360 400 600 +*xp-ddx-identifier: XP-POSTSCRIPT +*xp-listfonts-modes-supported: xp-list-internal-printer-fonts xp-list-glyph-fonts +*xp-embedded-formats-supported: {POSTSCRIPT 2} +*xp-raw-formats-supported: {POSTSCRIPT 2} +*xp-setup-proviso: setup-optional + +# Use custom spooler script which sends the output to a dir instead to a printer queue +# Note that "%xpconfigdir%" is currently only supported in Xprt servers build +# from xprint.mozdev.org sources, other platforms have replace it with the +# absolute path name to the script +*xp-spooler-command: %xpconfigdir%/C/print/models/PS2PDFspooldir-GS/ps2pdf_spooltodir.sh -d /tmp/Xprintjobs -s .pdf -u 077 -p %printer-name% -c %copy-count% -t %job-name% -o "%options%" + +# NOTE: xp-psddx-* attributes are EXPERIMENTAL for now. +# xp-psddx-download-fonts defines which fonts should be downloaded as outlines +# (valid types are "pfa", "pfb", "ttf", "ttc", "otf", "otc") +*xp-psddx-download-fonts: pfa pfb ttf ttc otf otc +# xp-psddx-download-font-type defines which font type is used to download outlines +# (valid values are "bitmap", "pstype1" and "pstype3") +*xp-psddx-download-font-type: pstype1 +# EOF. diff --git a/XpConfig/C/print/models/PS2PDFspooldir-GS/ps2pdf_spooltodir.sh b/XpConfig/C/print/models/PS2PDFspooldir-GS/ps2pdf_spooltodir.sh new file mode 100755 index 000000000..5739807d8 --- /dev/null +++ b/XpConfig/C/print/models/PS2PDFspooldir-GS/ps2pdf_spooltodir.sh @@ -0,0 +1,130 @@ +#!/bin/sh +PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin +export PATH + +verbose_msgs="false" +DEFAULT_SPOOLDIR=/tmp/Xprintjobs + +usage() +{ + printf "Usage: ${0}: [options]\n" + printf "-v\tbe verbose\n" + printf "-d dirname\tdefine spool dir\n" + printf "-p string\tname of printer selected by user\n" + printf "-c integer\tnumber of copies\n" + printf "-t string\tjob title\n" + printf "-s string\tfile name suffix\n" + printf "-o string\tspooler options\n" + printf "-u mask\tpermission mask for new files (see umask)\n" + exit 2 +} + +verbose() +{ + if ${verbose_msgs} ; then + echo "$1" + fi +} + +spooldir="${DEFAULT_SPOOLDIR}" +printername= +num_job_copies= +job_title= +filename_suffix= +spooler_options= +permmask= +while getopts va:b:d:p:c:t:s:o:u: i +do + case $i in + v) + verbose_msgs="true" + ;; + d) + spooldir="$OPTARG" + ;; + p) + printername="$OPTARG" + ;; + c) + num_job_copies="$OPTARG" + ;; + t) + job_title="$OPTARG" + ;; + s) + filename_suffix="$OPTARG" + ;; + o) + spooler_options="$OPTARG" + ;; + u) + permmask="$OPTARG" + ;; + ?) usage + ;; + esac +done + +verbose "# spooldir=\"$spooldir\"" +verbose "# printername=\"$printername\"" +verbose "# num_job_copies=\"$num_job_copies\"" +verbose "# job_title=\"$job_title\"" +verbose "# spooler_options=\"$spooler_options\"" +verbose "# umask=\"$permmask\"" + +if [ ! -d "${DEFAULT_SPOOLDIR}" ] ; then + mkdir "${DEFAULT_SPOOLDIR}" + chmod a+rwxt "${DEFAULT_SPOOLDIR}" +fi + +if [ "${permmask}" != "" ] ; then + umask ${permmask} +fi + +if [ ! -d "$spooldir" ] ; then + echo "$0: spooldir \"$spooldir\" does not exits." >&2 + exit 1 +fi +if [ ! -w "$spooldir" ] ; then + echo "$0: Cannot write to spooldir \"$spooldir\"." >&2 + exit 1 +fi + +# Create first part of the output file name (prefix and an "unique" +# id(=date and time))... +filename="Xpjob_`date +%Y%m%d%H%M%S`" + +# ... then add options ... +if [ "${printername}" != "" ] ; then + filename="${filename}_${printername}" +fi +if [ "${num_job_copies}" != "" -a "${num_job_copies}" != "1" ] ; then + filename="${filename}_copies_${num_job_copies}" +fi +if [ "${job_title}" != "" ] ; then + filename="${filename}_title_${job_title}" +fi + +# ... mangle output file name and filter chars (like whitespaces) +# which may screw-up further processing by other shell scripts ... +filename="`echo \"${filename}\" | tr '[:blank:]' '_' | tr -c -d '[:alnum:]_.-'`" + +# ... add path and suffix ... +filename="${spooldir}/${filename}${filename_suffix}" + +verbose "# File name is \"$filename\"." + +# ... and finally capture stdin to the file (we are using "gs" directly to +# avoid the problem that "ps2pdf" is not available in all Linux +# distributions by default). +#ps2pdf - - | cat >"${filename}" +gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite "-sOutputFile=-" -dCompatibilityLevel=1.2 -c .setpdfwrite -f - | cat >"${filename}" + +if ${verbose_msgs} ; then + printf "# File is " ; ls -l "${filename}" +fi + +verbose "# Done." + +exit 0 +# EOF. diff --git a/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Book.pmf b/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Book.pmf new file mode 100644 index 0000000000000000000000000000000000000000..331178985b79d55487cd9c0c1c3172c5023157a1 GIT binary patch literal 6716 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 literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-BookOblique.pmf b/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-BookOblique.pmf new file mode 100644 index 0000000000000000000000000000000000000000..61bcb22b9f98b12c3453dc01d077702d55ff5277 GIT binary patch literal 6728 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 literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-DemiOblique.pmf b/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-DemiOblique.pmf new file mode 100644 index 0000000000000000000000000000000000000000..45cc8857bb72604b00a693866baf9364e8a889c7 GIT binary patch literal 6724 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∈D#+>dExPk4~W7t~!?K#OB$B9OkF`dpi0CVC3u}6Z7LoC%Xp*m0DJ- zVPPWK*_F|{)Z_4-!4?sSas5oqb|_G1a4(-;0=xJm$o7l(E>%wzk;xw$@nNteO5#nS4fT z%y%1`j`mdVK%eY76ILE^tR?wMbZYj%==3?W=S<`8oL2QaeOfdwa~DmIxD~VLMw6wi z?UZfDsF=A!qVYl@s%+h;W4flZoI<|KQY?2dfUk!bMG zW@mo9-B0*uimOW(NH7)+cByh=L4Ul%Ppz6a95ftY@)CXgIf+>6eahcaZ;N*j|64>J zqkJZxe2GiWO`B;Vw{qqsw!#5e2mbG%y=Urc$I@-H~kN5wcqmHh5N z4D`cz^tJZCxbD}6fcya&gCFy~0Y9{*TwnJEc_1{$5U@jZ{W%8}yTFmRMfc(V(-xA>O2K3(u$kzq9_M?5iACSwo zYB6{LzD;qp+~IZdT0GCzbUY8QD*0h5&VSbAynCAb1B_R4X^~2azHO$yV2y!RomQ9`Kz1J1r zN?sc?(*HgNd0Ct$0vyy0nT-m{^c4q zN#%K*;yVA$DrB91&G(Y=Q(s3yskkZal>24-Rw4#l@H8*^|N z4(H1GZLWIX#azVs!qbipBrqSHJl7<-q8-IG;Ar$9gie!|KP$PPUNmRge+gtOblZQ^02sSFGT@GlwkA7zl?7cE-I*EIZo!Q)(B3)sW=U% z;|zR{YyO!y3uogToQogu)odls#}BazKf(q0F)qYKxEMd-TiPYK6qn(0T!Aa`GhBtM z@pJBd*Wx<-0@vf0SdANSBYuUOa5LAdTk&h$hTHKQ+=1WXPM)yt#yz+f_hAiJ(EIT_ ztmBGSJ0m~9cdP!d@Kp}}-^Rda-rt~hgC;I*@@&~cOeN%(6?qa*5GmqVB1`0n5>X*e zCC((yCe9_~2bS}RRm26vg~Y{#{MK?QaTRd`A>YXEAl48M5)To7Bpx9)5q~1&ThC_V z3F6Ph)5NpH^TZ3pUx_V*JdM3Vyh^-A{DXLdc#Dv4gzpjW6Y{jh4=(ckPO$repOC~9 zqK%kMu&?rLA$Y3f*?`}5hz?>t(M23dbQ3*9FTwK+&o$uQ4Y7z|e#CLa3B-xS5RoH> z3Fb_kL==eS#3=;xB`zYE6LB5E&qv};;$C6{!CZ(Z2=-O5UxM+AZ5*d#h#d*;x1q_z zRAMHIo?Sy!e4l(DU$B5^MEyU}@y9DzU;%PD* zA-H3Q*;aU8;y|L6V4lLA1ltNT58(mgM1t*wUE&PlJc9iTUrt;@+(O(#tRprOj}n`S zXNZ>x)-Al1_!q%`M#d7XQ)E|yV=^+0;ORWVIz?EM$O59DIF8`Bj4;0u<~DLVv65ha zBUcbSSx0Up*yjjW{>VebCgLf#Y-CNCE3yTnh-FoqA9#ieC{>F?rsG;mO32xTg5jWS zI$5(+fl(xLjZzLq*>)?AUCx^*8;)5jn8Ov#)VCoR{B-14?oyNsRTo*iSTsQ|FQ?$$qh4yC9A}!t5%_4 z7H!?*l3h{7&5y8rB{=31OEzTYP&Bd*vzjxRXcm^G(>1G{Y`axeI0uzHpVjY-Y_(#d zSe3Omn4EInFR+YX`OKO*Hg3Q!HLQw;o2{~Afyi_&sKi1$vc{x&qcE)7^M!7`@+wDh zU5&U7BCe}7TrgK4uJajhBqr|2JjVI4xE4@CTPL)2B4C|pm?gDRQY$3`O38*&BGZK) z-C|1Xr?h@5pr7&;8fL|6p<PJSv(9q2q4SPdn!Z4AoWrF3F)~2>L1J>i@7-J* Jzxey_zX6G0lF9%8 literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/Courier-BoldOblique.pmf b/XpConfig/C/print/models/PSdefault/fonts/Courier-BoldOblique.pmf new file mode 100644 index 0000000000000000000000000000000000000000..8db974018eb4769e3b86d98f0bd9120117f7a8b7 GIT binary patch literal 6636 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 literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/Courier-Oblique.pmf b/XpConfig/C/print/models/PSdefault/fonts/Courier-Oblique.pmf new file mode 100644 index 0000000000000000000000000000000000000000..87aee16cce34df1dc92957cadd6a5ecd31893099 GIT binary patch literal 6608 zcmeHLeV9~L8ULM~0bCVwmE9EuTp(o;24PtUOp#%C*d2wPWp|dZ%;oOPg&mohJKUK; zRR7xXLDkJkN^OMlT$3ndQ-gEAJ=wpB6(|>uN=Qr~^ z?|sjE-t(Sw-gE9zYZAE;02DEbXbu1y`CsFgll;GqvY=nywGTN9O@4VBE55luu)r^a zx|?a}^L}{;jc=}FfqG(J+Z$szi-!`rZ6Q;|iCM%vArWGUkd?%0A!~?1AsdL(g?x#) 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 DTFZjv literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/Helvetica-Bold.pmf b/XpConfig/C/print/models/PSdefault/fonts/Helvetica-Bold.pmf new file mode 100644 index 0000000000000000000000000000000000000000..30d462d9557c088ccf1b2b97199aa6908745efaf GIT binary patch literal 6680 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 TxeWUH>*3vP$>i_bzyJOZ0>4$+ literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/Helvetica-Oblique.pmf b/XpConfig/C/print/models/PSdefault/fonts/Helvetica-Oblique.pmf new file mode 100644 index 0000000000000000000000000000000000000000..2a0de8afc048917610bdbe10f50df24285645692 GIT binary patch literal 6688 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 OpMLM|CHdCxzyAUHXlJJY literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/Helvetica.pmf b/XpConfig/C/print/models/PSdefault/fonts/Helvetica.pmf new file mode 100644 index 0000000000000000000000000000000000000000..b1fd475bba133f24cd5c0b65f60625f9f2cdefed GIT binary patch literal 6672 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 Va8-`VyDgbK)OU9u$!Grm{SRgFGYkL# literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Book.pmf b/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Book.pmf new file mode 100644 index 0000000000000000000000000000000000000000..aff4b494946697f5d1e21f580382898bfeefbd1a GIT binary patch literal 6628 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 literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-BookOblique.pmf b/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-BookOblique.pmf new file mode 100644 index 0000000000000000000000000000000000000000..b5b77f353374d2e4de6f476992d60668b18de509 GIT binary patch literal 6640 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 literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Demi.pmf b/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Demi.pmf new file mode 100644 index 0000000000000000000000000000000000000000..100339854962d18d2fc7f9db79477970a0dd47e7 GIT binary patch literal 6624 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 VRgTKDEt&k(TK;ig{O{j?{|)0|C}02p literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-DemiOblique.pmf b/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-DemiOblique.pmf new file mode 100644 index 0000000000000000000000000000000000000000..a8550e70d0c1bed34d67fcbf8f7baeeda1279d43 GIT binary patch literal 6636 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 literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Bold.pmf b/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Bold.pmf new file mode 100644 index 0000000000000000000000000000000000000000..ab22aabf5ba537eb6ba21e711af104927415cda4 GIT binary patch literal 6644 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 literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-BoldItalic.pmf b/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-BoldItalic.pmf new file mode 100644 index 0000000000000000000000000000000000000000..e68811eb72786d818a63d0e0ae05849a24160868 GIT binary patch literal 6656 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 V{;C|6XInD)>Gy8-#?Sx$`yUjV8&CiM literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/Souvenir-Demi.pmf b/XpConfig/C/print/models/PSdefault/fonts/Souvenir-Demi.pmf new file mode 100644 index 0000000000000000000000000000000000000000..5e786ec4208042ce71f6ae59604209a6d7bc2623 GIT binary patch literal 6680 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 E0WU%+%m4rY literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/Souvenir-Light.pmf b/XpConfig/C/print/models/PSdefault/fonts/Souvenir-Light.pmf new file mode 100644 index 0000000000000000000000000000000000000000..0bb62bde6dc6f4d13b8b774e3c7aa7716b945332 GIT binary patch literal 6684 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 literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/Times-Bold.pmf b/XpConfig/C/print/models/PSdefault/fonts/Times-Bold.pmf new file mode 100644 index 0000000000000000000000000000000000000000..cf46ca03fcfc117be4d0cce279ec6f9ca0b83222 GIT binary patch literal 6660 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 literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/fonts/ZapfDingbats.pmf b/XpConfig/C/print/models/PSdefault/fonts/ZapfDingbats.pmf new file mode 100644 index 0000000000000000000000000000000000000000..1ae9a7688e64e62b3e65be398c18a96eb3d3e286 GIT binary patch literal 6676 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 literal 0 HcmV?d00001 diff --git a/XpConfig/C/print/models/PSdefault/model-config b/XpConfig/C/print/models/PSdefault/model-config new file mode 100644 index 000000000..05a19d859 --- /dev/null +++ b/XpConfig/C/print/models/PSdefault/model-config @@ -0,0 +1,136 @@ +# $Xprint.org: PSdefault model-config,v 1.2 2002/11/07 19:48:04 gisburn Exp $ +# Generic default model-config for the PostScript DDX +# +# DO NOT MODIFY THIS FILE!! +# +# If you want to make customisations for your printer create a copy +# of this printer model. +# Example (for creating a model config "MYCOMPANYlaserxx"): +# 1. Create model config dir: +# % mkdir MYCOMPANYlaserxx +# 2. Link (or copy) the PMF (printer font metrics) for the +# printer buildin fonts: +# % ln -s PSdefault/fonts MYCOMPANYlaserxx/. +# 3. Copy the model config file: +# % cp PSdefault/model-config MYCOMPANYlaserxx/. +# 4. Customize MYCOMPANYlaserxx/model-config to match your needs. +# + +# Attributes supported for this printer model +# You may want to cut the lists here down to the attributes supported +# by your printer. +*content-orientations-supported: portrait landscape reverse-portrait reverse-landscape +*descriptor: PostScript default model +*document-formats-supported: {POSTSCRIPT 2} +*input-trays-supported: +*medium-source-sizes-supported: \ +{ '' \ + {na-letter FALSE {6.35 209.55 6.35 273.05}}\ + {na-legal FALSE {6.35 209.55 6.35 349.25}}\ + {executive FALSE {6.35 177.80 6.35 260.35}}\ + {folio FALSE {6.35 204.47 6.35 323.85}}\ + {invoice FALSE {6.35 133.35 6.35 209.55}}\ + {ledger FALSE {6.35 273.05 6.35 425.45}}\ + {quarto FALSE {6.35 209.55 6.35 268.732}}\ + {a FALSE {6.35 209.55 6.35 273.05}}\ + {b FALSE {6.35 273.05 6.35 425.45}}\ + {c FALSE {6.35 425.45 6.35 552.45}}\ + {d FALSE {6.35 552.45 6.35 857.25}}\ + {e FALSE {6.35 857.25 6.35 1111.25}}\ + {na-6x9-envelope FALSE {6.35 146.05 6.35 222.25}}\ + {na-10x15-envelope FALSE {6.35 247.65 6.35 374.65}}\ + {monarch-envelope FALSE {6.35 91.948 6.35 184.15}}\ + {na-10x13-envelope FALSE {6.35 247.65 6.35 323.85}}\ + {na-9x12-envelope FALSE {6.35 222.25 6.35 298.45}}\ + {na-number-10-envelope FALSE {6.35 98.425 6.35 234.95}}\ + {na-7x9-envelope FALSE {6.35 171.45 6.35 222.25}}\ + {na-9x11-envelope FALSE {6.35 222.25 6.35 273.05}}\ + {na-10x14-envelope FALSE {6.35 247.65 6.35 349.25}}\ + {na-number-9-envelope FALSE {6.35 92.075 6.35 219.075}}\ + {iso-a0 FALSE {6.35 834.65 6.35 1182.65}}\ + {iso-a1 FALSE {6.35 587.65 6.35 834.65}}\ + {iso-a2 FALSE {6.35 413.65 6.35 587.65}}\ + {iso-a3 FALSE {6.35 290.65 6.35 413.65}}\ + {iso-a4 FALSE {6.35 203.65 6.35 290.65}}\ + {iso-a5 FALSE {6.35 141.65 6.35 203.65}}\ + {iso-a6 FALSE {6.35 98.65 6.35 141.65}}\ + {iso-a7 FALSE {6.35 67.65 6.35 98.65}}\ + {iso-a8 FALSE {6.35 45.65 6.35 67.65}}\ + {iso-a9 FALSE {6.35 30.65 6.35 45.65}}\ + {iso-a10 FALSE {6.35 19.65 6.35 30.65}}\ + {iso-b1 FALSE {6.35 700.65 6.35 993.65}}\ + {iso-b2 FALSE {6.35 493.65 6.35 700.65}}\ + {iso-b3 FALSE {6.35 346.65 6.35 493.65}}\ + {iso-b4 FALSE {6.35 243.65 6.35 346.65}}\ + {iso-b5 FALSE {6.35 169.65 6.35 243.65}}\ + {iso-b6 FALSE {6.35 118.65 6.35 169.65}}\ + {iso-b7 FALSE {6.35 81.65 6.35 118.65}}\ + {iso-b8 FALSE {6.35 55.65 6.35 81.65}}\ + {iso-b9 FALSE {6.35 37.65 6.35 55.65}}\ + {iso-b10 FALSE {6.35 24.65 6.35 37.65}}\ + {jis-b1 FALSE {6.35 721.65 6.35 1023.65}}\ + {jis-b2 FALSE {6.35 508.65 6.35 721.65}}\ + {jis-b3 FALSE {6.35 357.65 6.35 508.65}}\ + {jis-b4 FALSE {6.35 250.65 6.35 357.65}}\ + {jis-b5 FALSE {6.35 175.65 6.35 250.65}}\ + {jis-b6 FALSE {6.35 121.65 6.35 175.65}}\ + {jis-b7 FALSE {6.35 84.65 6.35 121.65}}\ + {jis-b8 FALSE {6.35 57.65 6.35 84.65}}\ + {jis-b9 FALSE {6.35 38.65 6.35 57.65}}\ + {jis-b10 FALSE {6.35 25.65 6.35 38.65}}\ + {iso-c3 FALSE {6.35 317.65 6.35 451.65}}\ + {iso-c4 FALSE {6.35 222.65 6.35 317.65}}\ + {iso-c5 FALSE {6.35 155.65 6.35 222.65}}\ + {iso-c6 FALSE {6.35 107.65 6.35 155.65}}\ + {iso-designated-long FALSE {6.35 103.65 6.35 213.65}}\ + {hp-2x-postcard FALSE {6.35 141.65 6.35 193.65}}\ + {hp-european-edp FALSE {6.35 298.45 6.35 349.25}}\ + {hp-mini FALSE {6.35 133.35 6.35 209.55}}\ + {hp-postcard FALSE {6.35 93.65 6.35 141.65}}\ + {hp-tabloid FALSE {6.35 273.05 6.35 425.45}}\ + {hp-us-edp FALSE {6.35 273.05 6.35 349.25}}\ + {hp-us-government-legal FALSE {6.35 196.85 6.35 323.85}}\ + {hp-us-government-letter FALSE {6.35 196.85 6.35 247.65}}\ +} +# If you have more than one tray use the following example: +# 1. List the supported trays +#*input-trays-supported: main manual +# 2. Define each tray and it's paper sizes +#*medium-source-sizes-supported: \ +#{ main \ +# {na-letter FALSE {6.35 209.55 6.35 273.05}} \ +# {na-legal FALSE {6.35 209.55 6.35 349.25}} \ +# {iso-a4 FALSE {6.35 203.65 6.35 290.65}} \ +#} \ +#{ manual \ +# {iso-a5 FALSE {6.35 141.65 6.35 203.65}} \ +# {iso-c5 FALSE {6.35 155.65 6.35 222.65}} \ +# {iso-designated-long FALSE {6.35 103.65 6.35 213.65}} \ +# {jis-b5 FALSE {6.35 175.65 6.35 250.65}} \ +# {monarch-envelope FALSE {6.35 91.948 6.35 184.15}} \ +# {na-legal FALSE {6.35 209.55 6.35 349.25}} \ +# {na-number-10-envelope FALSE {6.35 98.425 6.35 234.95}} \ +# {executive FALSE {6.35 177.8 6.35 260.35}} \ +# {iso-a3 FALSE {6.35 290.65 6.35 413.65}} \ +# {iso-a0 FALSE {6.35 834.65 6.35 1182.65}} \ +#} +*plexes-supported: simplex duplex tumble +*printer-model: "PostScript default model" +# 75, 100, 120, 150, 180, 200, 240, 300, 360, 400, 600, 720, +# 940, 1200 and 2440 are supported DPI values, we limit it here +# to some common values: +*printer-resolutions-supported: 300 360 400 600 +*xp-ddx-identifier: XP-POSTSCRIPT +*xp-listfonts-modes-supported: xp-list-internal-printer-fonts xp-list-glyph-fonts +*xp-embedded-formats-supported: {POSTSCRIPT 2} +*xp-raw-formats-supported: {POSTSCRIPT 2} +*xp-setup-proviso: setup-optional + +# NOTE: xp-psddx-* attributes are EXPERIMENTAL for now. +# xp-psddx-download-fonts defines which fonts should be downloaded as outlines +# (valid types are "pfa", "pfb", "ttf", "ttc", "otf", "otc") +*xp-psddx-download-fonts: pfa pfb ttf ttc otf otc +# xp-psddx-download-font-type defines which font type is used to download outlines +# (valid values are "bitmap", "pstype1" and "pstype3") +*xp-psddx-download-font-type: pstype1 +# EOF. diff --git a/XpConfig/C/print/models/PSspooldir/model-config b/XpConfig/C/print/models/PSspooldir/model-config new file mode 100644 index 000000000..6bb477767 --- /dev/null +++ b/XpConfig/C/print/models/PSspooldir/model-config @@ -0,0 +1,71 @@ +# $Xprint.org: PSspooldir model-config,v 1.1 2002/11/25 19:48:04 gisburn Exp $ +# PostScript DDX model-config which sends jobs to a spool dir instead to a print queue +# +# This model is basically a cut-down PSdefault model with a custom *xp-spooler-command +# +# DO NOT MODIFY THIS FILE!! +# +# If you want to make customisations for your printer create a copy +# of this printer model. +# Example (for creating a model config "MYCOMPANYlaserxx"): +# 1. Create model config dir: +# % mkdir MYCOMPANYlaserxx +# 2. Link (or copy) the PMF (printer font metrics) for the +# printer buildin fonts: +# % ln -s PSspooldir/fonts MYCOMPANYlaserxx/. +# 3. Copy the model config file: +# % cp PSspooldir/model-config MYCOMPANYlaserxx/. +# 4. Customize MYCOMPANYlaserxx/model-config to match your needs. +# +# Attributes supported for this printer model +*content-orientations-supported: portrait landscape reverse-portrait reverse-landscape +*descriptor: PostScript job spool dir /tmp/Xprintjobs +*document-formats-supported: {POSTSCRIPT 2} +*input-trays-supported: +*medium-source-sizes-supported: \ +{ '' \ + {na-letter FALSE {6.35 209.55 6.35 273.05}}\ + {na-legal FALSE {6.35 209.55 6.35 349.25}}\ + {executive FALSE {6.35 177.80 6.35 260.35}}\ + {ledger FALSE {6.35 273.05 6.35 425.45}}\ + {quarto FALSE {6.35 209.55 6.35 268.732}}\ + {iso-a3 FALSE {6.35 290.65 6.35 413.65}}\ + {iso-a4 FALSE {6.35 203.65 6.35 290.65}}\ + {iso-a5 FALSE {6.35 141.65 6.35 203.65}}\ + {iso-b3 FALSE {6.35 346.65 6.35 493.65}}\ + {iso-b4 FALSE {6.35 243.65 6.35 346.65}}\ + {iso-b5 FALSE {6.35 169.65 6.35 243.65}}\ + {jis-b3 FALSE {6.35 357.65 6.35 508.65}}\ + {jis-b4 FALSE {6.35 250.65 6.35 357.65}}\ + {jis-b5 FALSE {6.35 175.65 6.35 250.65}}\ + {iso-c3 FALSE {6.35 317.65 6.35 451.65}}\ + {iso-c4 FALSE {6.35 222.65 6.35 317.65}}\ + {iso-c5 FALSE {6.35 155.65 6.35 222.65}}\ +} + +*plexes-supported: simplex duplex tumble +*printer-model: "PostScript job spool dir /tmp/Xprintjobs" +# 75, 100, 120, 150, 180, 200, 240, 300, 360, 400, 600, 720, +# 940, 1200 and 2440 are supported DPI values, we limit it here +# to some common values: +*printer-resolutions-supported: 300 360 400 600 +*xp-ddx-identifier: XP-POSTSCRIPT +*xp-listfonts-modes-supported: xp-list-internal-printer-fonts xp-list-glyph-fonts +*xp-embedded-formats-supported: {POSTSCRIPT 2} +*xp-raw-formats-supported: {POSTSCRIPT 2} +*xp-setup-proviso: setup-optional + +# Use custom spooler script which sends the output to a dir instead to a printer queue +# Note that "%xpconfigdir%" is currently only supported in Xprt servers build +# from xprint.mozdev.org sources, other platforms have replace it with the +# absolute path name to the script +*xp-spooler-command: %xpconfigdir%/C/print/models/PSspooldir/spooltodir.sh -d /tmp/Xprintjobs -s .ps -u 077 -p %printer-name% -c %copy-count% -t %job-name% -o "%options%" + +# NOTE: xp-psddx-* attributes are EXPERIMENTAL for now. +# xp-psddx-download-fonts defines which fonts should be downloaded as outlines +# (valid types are "pfa", "pfb", "ttf", "ttc", "otf", "otc") +*xp-psddx-download-fonts: pfa pfb ttf ttc otf otc +# xp-psddx-download-font-type defines which font type is used to download outlines +# (valid values are "bitmap", "pstype1" and "pstype3") +*xp-psddx-download-font-type: pstype1 +# EOF. diff --git a/XpConfig/C/print/models/PSspooldir/spooltodir.sh b/XpConfig/C/print/models/PSspooldir/spooltodir.sh new file mode 100755 index 000000000..aba14e1b3 --- /dev/null +++ b/XpConfig/C/print/models/PSspooldir/spooltodir.sh @@ -0,0 +1,127 @@ +#!/bin/sh +PATH=/usr/bin:/usr/sbin:/bin:/sbin +export PATH + +verbose_msgs="false" +DEFAULT_SPOOLDIR=/tmp/Xprintjobs + +usage() +{ + printf "Usage: ${0}: [options]\n" + printf "-v\tbe verbose\n" + printf "-d dirname\tdefine spool dir\n" + printf "-p string\tname of printer selected by user\n" + printf "-c integer\tnumber of copies\n" + printf "-t string\tjob title\n" + printf "-s string\tfile name suffix\n" + printf "-o string\tspooler options\n" + printf "-u mask\tpermission mask for new files (see umask)\n" + exit 2 +} + +verbose() +{ + if ${verbose_msgs} ; then + echo "$1" + fi +} + +spooldir="${DEFAULT_SPOOLDIR}" +printername= +num_job_copies= +job_title= +filename_suffix= +spooler_options= +permmask= +while getopts va:b:d:p:c:t:s:o:u: i +do + case $i in + v) + verbose_msgs="true" + ;; + d) + spooldir="$OPTARG" + ;; + p) + printername="$OPTARG" + ;; + c) + num_job_copies="$OPTARG" + ;; + t) + job_title="$OPTARG" + ;; + s) + filename_suffix="$OPTARG" + ;; + o) + spooler_options="$OPTARG" + ;; + u) + permmask="$OPTARG" + ;; + ?) usage + ;; + esac +done + +verbose "# spooldir=\"$spooldir\"" +verbose "# printername=\"$printername\"" +verbose "# num_job_copies=\"$num_job_copies\"" +verbose "# job_title=\"$job_title\"" +verbose "# spooler_options=\"$spooler_options\"" +verbose "# umask=\"$permmask\"" + +if [ ! -d "${DEFAULT_SPOOLDIR}" ] ; then + mkdir "${DEFAULT_SPOOLDIR}" + chmod a+rwxt "${DEFAULT_SPOOLDIR}" +fi + +if [ "${permmask}" != "" ] ; then + umask ${permmask} +fi + +if [ ! -d "$spooldir" ] ; then + echo "$0: spooldir \"$spooldir\" does not exits." >&2 + exit 1 +fi +if [ ! -w "$spooldir" ] ; then + echo "$0: Cannot write to spooldir \"$spooldir\"." >&2 + exit 1 +fi + +# Create first part of the output file name (prefix and an "unique" +# id(=date and time))... +filename="Xpjob_`date +%Y%m%d%H%M%S`" + +# ... then add options ... +if [ "${printername}" != "" ] ; then + filename="${filename}_${printername}" +fi +if [ "${num_job_copies}" != "" -a "${num_job_copies}" != "1" ] ; then + filename="${filename}_copies_${num_job_copies}" +fi +if [ "${job_title}" != "" ] ; then + filename="${filename}_title_${job_title}" +fi + +# ... mangle output file name and filter chars (like whitespaces) +# which may screw-up further processing by other shell scripts ... +filename="`echo \"${filename}\" | tr '[:blank:]' '_' | tr -c -d '[:alnum:]_.-'`" + +# ... add path and suffix ... +filename="${spooldir}/${filename}${filename_suffix}" + +verbose "# File name is \"$filename\"." + +# ... and finally capture stdin to the file. +cat >"${filename}" + +if ${verbose_msgs} ; then + printf "# File is " ; ls -l "${filename}" +fi + +verbose "# Done." + +exit 0 +# EOF. diff --git a/XpConfig/en_US/print/attributes/document b/XpConfig/en_US/print/attributes/document new file mode 100644 index 000000000..253c46bce --- /dev/null +++ b/XpConfig/en_US/print/attributes/document @@ -0,0 +1,13 @@ +# $Xorg: document,v 1.2 2002/11/30 22:10:03 gisburn Exp $ +# Document DPA-Object initial attribute values for en_US(-like) locales +# +# Note that the defaults (for all locales) are set in +# ${XPCONFIGDIR}/C/print/attributes/document +# Values in ${XPCONFIGDIR}/${LANG}/print/attributes/document are used to +# set/override these defaults for a specific locale on demand + +# US and some other countries use US-Letter as default paper size +# ("C"-locale default is "ISO-A4") +*default-medium: na-letter + +# EOF. diff --git a/Xprint/etc/Xsession.d/cde_xsessiond_xprint.sh b/Xprint/etc/Xsession.d/cde_xsessiond_xprint.sh new file mode 100644 index 000000000..3fb6bba7c --- /dev/null +++ b/Xprint/etc/Xsession.d/cde_xsessiond_xprint.sh @@ -0,0 +1,30 @@ +#!/bin/sh +##################################################################### +### File: 0018.xprint +### +### Default Location: /usr/dt/config/Xsession.d/ +### +### Purpose: Setup Xprint env vars +### +### Description: This script is invoked by means of the Xsession file +### at user login. +### +### Invoked by: /usr/dt/bin/Xsession +### +### (c) Copyright 2003-2004 Roland Mainz +### +### please send bugfixes or comments to http://xprint.mozdev.org/ +### +##################################################################### + + +# +# Obtain list of Xprint servers +# + +if [ -f "/etc/init.d/xprint" ] ; then + XPSERVERLIST="`/bin/sh /etc/init.d/xprint get_xpserverlist`" + export XPSERVERLIST +fi + +########################## eof ##################### diff --git a/Xprint/etc/profile.d/xprint.csh b/Xprint/etc/profile.d/xprint.csh new file mode 100644 index 000000000..7cc675840 --- /dev/null +++ b/Xprint/etc/profile.d/xprint.csh @@ -0,0 +1,16 @@ +# +# /etc/profile.d/xprint.csh +# +# Copyright (c) 2002-2004 by Roland Mainz +# please send bugfixes or comments to http://xprint.mozdev.org/ + + +# +# Obtain list of Xprint servers +# + +if ( -f /etc/init.d/xprint ) then + setenv XPSERVERLIST "`/bin/sh /etc/init.d/xprint get_xpserverlist`" +endif + +# /etc/profile.d/xprint.csh ends here. diff --git a/Xprint/etc/profile.d/xprint.sh b/Xprint/etc/profile.d/xprint.sh new file mode 100644 index 000000000..b5b46c1e7 --- /dev/null +++ b/Xprint/etc/profile.d/xprint.sh @@ -0,0 +1,16 @@ +# +# /etc/profile.d/xprint.sh +# +# Copyright (c) 2002-2004 by Roland Mainz +# please send bugfixes or comments to http://xprint.mozdev.org/ + +# +# Obtain list of Xprint servers +# + +if [ -f "/etc/init.d/xprint" ] ; then + XPSERVERLIST="`/bin/sh /etc/init.d/xprint get_xpserverlist`" + export XPSERVERLIST +fi + +# /etc/profile.d/xprint.sh ends here. diff --git a/Xprint/ps/PsFTFonts.c b/Xprint/ps/PsFTFonts.c new file mode 100644 index 000000000..cfdee93d1 --- /dev/null +++ b/Xprint/ps/PsFTFonts.c @@ -0,0 +1,80 @@ + +/* +Copyright (c) 2003-2004 Roland Mainz + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#include +#include +#include + +#include "regionstr.h" +#include "fontstruct.h" +#include "dixfontstr.h" +#include "scrnintstr.h" +#include "fontxlfd.h" +#include "fntfil.h" +#include "fntfilst.h" + +#include "Ps.h" + +#include +#include FT_FREETYPE_H + +#include "ft.h" +#include "ftfuncs.h" + +char * +PsGetFTFontFileName(FontPtr pFont) +{ + FTFontPtr tf = (FTFontPtr)pFont->fontPrivate; + return tf->instance->face->filename; +} + +Bool +PsIsFreeTypeFont(FontPtr pFont) +{ + int i; + int nprops = pFont->info.nprops; + FontPropPtr props = pFont->info.props; + /* "RASTERIZER_NAME" must match the rasterizer name set in + * xc/lib/font/FreeType/ftfuncs.c */ + Atom name = MakeAtom("RASTERIZER_NAME", 15, True); + Atom value = (Atom)0; + char *rv; + + for( i=0 ; i + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#include +#include +#include "os.h" +#define USE_PSOUT_PRIVATE 1 +#include "psout.h" + +#include +#include FT_FREETYPE_H +#include FT_TYPE1_TABLES_H + +#include "Xproto.h" +#include "font.h" +#include "fontstruct.h" +#include "fntfilst.h" +#include "fontutil.h" +#include "fontenc.h" +#include "ft.h" +#include "ftfuncs.h" +#include "servermd.h" /* needed for endian test (IMAGE_BYTE_ORDER) */ + +#define USE_FT_PS_NAMES 1 + +#ifdef USE_FT_PS_NAMES +void PsOut_Get_FreeType_Glyph_Name( char *destbuf, FontPtr pFont, unsigned long x11fontindex) +{ + FTFontPtr tf = (FTFontPtr)pFont->fontPrivate; + FT_Face ttface = tf->instance->face->face; + FT_Error error; + char buf[256]; + unsigned long ftindex; + + /* Remap X11 font index to FreeType font index */ + ftindex = FTRemap(ttface, &tf->mapping, x11fontindex); + + if( FT_Has_PS_Glyph_Names(ttface) ) + { + error = FT_Get_Glyph_Name(ttface, ftindex, buf, 64); + } + else + { + error = 1; + } + + if( error ) + { + /* Check for unicode mapping + * See Adobe document "Unicode and Glyph Names" + * (http://partners.adobe.com/asn/tech/type/unicodegn.jsp) + */ + if( (tf->mapping.mapping->type == FONT_ENCODING_UNICODE) && + (ftindex < 0xFFFE) ) + { + sprintf(buf, "uni%04lx", ftindex); + } + else + { + sprintf(buf, "ch%02lx", ftindex); + } + } + + strcpy(destbuf, buf); +} +#endif /* USE_FT_PS_NAMES */ + +int PsOut_DownloadFreeType(PsOutPtr self, PsFTDownloadFontType downloadfonttype, const char *psfontname, FontPtr pFont, long block_offset) +{ + switch(downloadfonttype) + { + case PsFontType3: + return PsOut_DownloadFreeType3(self, psfontname, pFont, block_offset); + case PsFontType1: + return PsOut_DownloadFreeType1(self, psfontname, pFont, block_offset); + default: + FatalError("PS DDX: PsOut_DownloadFreeType(downloadfonttype='%d' not implemented\n", + (int)downloadfonttype); + return 0; /* NO-OP, FatalError() will call |exit()| */ + } +} + +/* cloned from |PsOut_TextAttrs16| */ +void +PsOut_FreeType_TextAttrs16(PsOutPtr self, char *fnam, int siz, int iso) +{ + int i; + if( self->FontName && strcmp(fnam, self->FontName)==0 && + siz==self->FontSize ) return; + if( self->FontName ) xfree(self->FontName); + self->FontName = (char *)xalloc(strlen(fnam)+1); + strcpy(self->FontName, fnam); + self->FontSize = siz; + for( i=0 ; i<4 ; i++ ) self->FontMtx[i] = -1.; +} + +/* cloned from |PsOut_TextAttrsMtx16| */ +void +PsOut_FreeType_TextAttrsMtx16(PsOutPtr self, char *fnam, float *mtx, int iso) +{ + int i; + if( self->FontName && strcmp(fnam, self->FontName)==0 && + mtx[0]==self->FontMtx[0] && mtx[1]==self->FontMtx[1] && + mtx[2]==self->FontMtx[2] && mtx[3]==self->FontMtx[3] ) return; + if( self->FontName ) xfree(self->FontName); + self->FontName = (char *)xalloc(strlen(fnam)+1); + strcpy(self->FontName, fnam); + for( i=0 ; i<4 ; i++ ) self->FontMtx[i] = mtx[i]; + self->FontSize = -1; +} + +static +int FT_Get_CharcellMetricsCharacterHeight(FontPtr pFont) +{ + FTFontPtr ftfont = (FTFontPtr)pFont->fontPrivate; + + return ftfont->instance->charcellMetrics->ascent + + ftfont->instance->charcellMetrics->descent; +} + +static +int FT_Get_CharcellMetricsCharacterWidth(FontPtr pFont) +{ + FTFontPtr ftfont = (FTFontPtr)pFont->fontPrivate; + + if( ftfont->instance->spacing != FT_PROPORTIONAL ) + { + int width = ftfont->instance->charcellMetrics->characterWidth; + + /* If the font uses a matrix make sure we transform the |characterWidth| + * back to it's original value since we download the untransformed font + * and use a PostScript transformation matrix to transform the font when + * rendering the text + */ + if( ftfont->instance->transformation.nonIdentity ) + { + FT_Vector v; + + FT_Matrix m = ftfont->instance->transformation.matrix; + (void)FT_Matrix_Invert(&m); /* FixMe: We should check the return code */ + v.x = width; + v.y = FT_Get_CharcellMetricsCharacterHeight(pFont); + FT_Vector_Transform(&v, &m); + width = v.x; + } + + return width; + } + + return 0; +} + +void +PsOut_FreeType_Text(FontPtr pFont, PsOutPtr self, int x, int y, char *text, int textl) +{ + int i; + int xo = self->XOff, + yo = self->YOff; + char buf[256]; + int cwidth = FT_Get_CharcellMetricsCharacterWidth(pFont); + + if( self->InFrame || self->InTile ) xo = yo = 0; + x += xo; y += yo; + + S_OutNum(self, (float)x); + S_OutNum(self, (float)y); + S_OutTok(self, "moveto", 1); + + S_OutTok(self, "[ ", 0); + + for( i = 0 ; i < textl ; i++ ) + { +#ifdef USE_FT_PS_NAMES + char namebuf[256]; + unsigned int ch = text[i]&0xFF; + unsigned long block_offset = 0; + PsOut_Get_FreeType_Glyph_Name(namebuf, pFont, ch+block_offset); + + sprintf(buf, "/%s ", namebuf); +#else + sprintf(buf, "/ch%02x ", text[i]&0xFF); +#endif /* USE_FT_PS_NAMES */ + S_OutTok(self, buf, 0); + } + + /* Check whether we have any special spacing requirements (e.g. non-proportional fonts) ... */ + if( cwidth != 0 ) + { + /* If the we use a matrix to render the font (instead of using |self->FontSize|) + * we must apply the matrix to the "rmoveto" which is used to force the exact + * character width. The "trmoveto" macro will do that for us... + */ + if( self->FontSize == -1 ) + { + sprintf(buf, "]{gs glyphshow gr %d 0 trmoveto}fa", cwidth); + } + else + { + sprintf(buf, "]{gs glyphshow gr %d 0 rm}fa", cwidth); + } + } + else + { + sprintf(buf, "]{glyphshow}fa"); + } + S_OutTok(self, buf, 0); +} + +/* XXX: |PsOut_FreeType_Text16| should be rewritten - currently it uses lame, + * slow hacks and makes some risky assumtions about how |PsOut_Text16| + * allocates memory */ +void +PsOut_FreeType_Text16(FontPtr pFont, PsOutPtr self, int x, int y, unsigned short *text, int textl) +{ + int i; + int xo = self->XOff, + yo = self->YOff; + unsigned short c, + c_hiByte, + c_lowByte, + fontPage; + long lastFontPage = -1; + char baseFontName[256]; + char buf[256]; + + if( self->InFrame || self->InTile ) xo = yo = 0; + x += xo; y += yo; + + strcpy(baseFontName, self->FontName); + + S_OutNum(self, (float)x); + S_OutNum(self, (float)y); + S_OutTok(self, "moveto", 1); + + for( i = 0 ; i < textl ; i++ ) + { + c = text[i]; +#if IMAGE_BYTE_ORDER == LSBFirst + c_hiByte = c & 0x00FF; + c_lowByte = (c >> 8) & 0x00FF; +#elif IMAGE_BYTE_ORDER == MSBFirst + c_hiByte = (c >> 8) & 0x00FF; + c_lowByte = c & 0x00FF; +#else +#error Unsupported byte order +#endif + fontPage = c_hiByte; + + if( fontPage != lastFontPage ) + { + if( fontPage > 0 ) + { + sprintf(buf, "%s_%x", baseFontName, fontPage); + } + else + { + sprintf(buf, "%s", baseFontName); + } + + if( self->FontSize == -1 ) + { + PsOut_TextAttrsMtx(self, buf, self->FontMtx, FALSE); + } + else + { + PsOut_TextAttrs(self, buf, self->FontSize, FALSE); + } + lastFontPage = fontPage; + } + +#ifdef USE_FT_PS_NAMES + { + char namebuf[256]; + unsigned int ch = c_lowByte; + unsigned long block_offset = c_hiByte * 0x100 /* same as c_hiByte << 8 */; + int cwidth = FT_Get_CharcellMetricsCharacterWidth(pFont); + PsOut_Get_FreeType_Glyph_Name(namebuf, pFont, ch+block_offset); + + /* Check whether we have any special spacing requirements (e.g. non-proportional fonts) ... */ + if( cwidth != 0 ) + { + /* If the we use a matrix to render the font (instead of using |self->FontSize|) + * we must apply the matrix to the "rmoveto" which is used to force the exact + * character width. The "trmoveto" macro will do that for us... + */ + if( self->FontSize == -1 ) + { + sprintf(buf, "gs /%s glyphshow gr %d 0 trmoveto", namebuf, cwidth); + } + else + { + sprintf(buf, "gs /%s glyphshow gr %d 0 rm", namebuf, cwidth); + } + } + else + { + sprintf(buf, "/%s glyphshow", namebuf); + } + } +#else + sprintf(buf, "/ch%02x glyphshow", c_lowByte); +#endif /* USE_FT_PS_NAMES */ + S_OutTok(self, buf, 1); + } + + if( self->FontName ) xfree(self->FontName); + self->FontName = (char *)xalloc(strlen(baseFontName)+1); + strcpy(self->FontName, baseFontName); +} + diff --git a/Xprint/ps/psout_ftpstype1.c b/Xprint/ps/psout_ftpstype1.c new file mode 100644 index 000000000..a9b0cfe86 --- /dev/null +++ b/Xprint/ps/psout_ftpstype1.c @@ -0,0 +1,180 @@ + +/* +Copyright (c) 2003-2004 Roland Mainz + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + + +#include +#include +#include +#include + +#include "os.h" +#define USE_PSOUT_PRIVATE 1 +#include "psout.h" + +#include +#include FT_FREETYPE_H + +#include "Xproto.h" +#include "font.h" +#include "fontstruct.h" +#include "fntfilst.h" +#include "fontutil.h" +#include "fontenc.h" +#include "ft.h" +#include "ftfuncs.h" + +int do_debug_ft2pt1 = FALSE; +int do_enable_ft2pt1_optimizer = FALSE; + +/* Defined in ttf2pt1.c */ +int ft2pt1_main(int argc, char **argv, + FTFontPtr tf, const char *download_psfontname, unsigned long download_font_block_offset); + +/* Download FreeType outlines as PS Type1 font */ +int PsOut_DownloadFreeType1(PsOutPtr self, const char *psfontname, FontPtr pFont, long block_offset) +{ + FTFontPtr tf; + FT_Face face; + int ft2pt1_numargs = 0; + char *ft2pt1_args[40]; + char *pstype1filename_prefix; + char pstype1filename[PATH_MAX+1]; + int ft2pt1_main_retval; + pid_t childpid; + + tf = (FTFontPtr)pFont->fontPrivate; + face = tf->instance->face->face; + + /* Set debugging flags */ + do_debug_ft2pt1 = (getenv("XPRT_PSDDX_DO_DEBUG_FT2PT1") != NULL); + do_enable_ft2pt1_optimizer = (getenv("XPRT_PSDDX_DO_ENABLE_FT2PT1_OPTIMIZER") != NULL); + + if( do_debug_ft2pt1 ) + { + fprintf(stderr, "# Converting FT2 font to PS Type1 filename='%s', ttface=%lx\n", tf->instance->face->filename, (long)face); + } + + pstype1filename_prefix = tempnam(NULL, "Xprt_"); + + ft2pt1_args[ft2pt1_numargs] = "ft2pt1"; ft2pt1_numargs++; + ft2pt1_args[ft2pt1_numargs] = "-Ob"; ft2pt1_numargs++; + ft2pt1_args[ft2pt1_numargs] = "-e"; ft2pt1_numargs++; + ft2pt1_args[ft2pt1_numargs] = "-a"; ft2pt1_numargs++; + ft2pt1_args[ft2pt1_numargs] = "-Ga"; ft2pt1_numargs++; + if( do_enable_ft2pt1_optimizer ) + { + /* Scale fonts to a 1000x1000 matrix */ + ft2pt1_args[ft2pt1_numargs] = "-Ot"; ft2pt1_numargs++; + } + else + { + /* Disable the ttf2pt1 optimisations */ + ft2pt1_args[ft2pt1_numargs] = "-Ou"; ft2pt1_numargs++; + ft2pt1_args[ft2pt1_numargs] = "-Oo"; ft2pt1_numargs++; + ft2pt1_args[ft2pt1_numargs] = "-Os"; ft2pt1_numargs++; + ft2pt1_args[ft2pt1_numargs] = "-Oh"; ft2pt1_numargs++; + } + + if( !do_debug_ft2pt1 ) + { + ft2pt1_args[ft2pt1_numargs] = "-W 0"; ft2pt1_numargs++; + } + ft2pt1_args[ft2pt1_numargs] = tf->instance->face->filename; ft2pt1_numargs++; + ft2pt1_args[ft2pt1_numargs] = pstype1filename_prefix; ft2pt1_numargs++; + ft2pt1_args[ft2pt1_numargs] = NULL; + +/* XXX: ttf2pt1 has lots of leaks and global vars which are not cleaned-up + * As long this problem exists we will simply fork() and call the converter + * from the child process (all resources are free'ed when the child process + * exists) as a workaround. + */ +#define FT2PT1_NEEDS_SEPERATE_PROCESS 1 + +#ifdef FT2PT1_NEEDS_SEPERATE_PROCESS + /* Flush internal buffer and then the stdio stream before fork()! */ + S_Flush(self); + fflush(self->Fp); + + childpid = fork(); + switch(childpid) + { + case -1: + FatalError("PS DDX internal error: Cannot fork() converter child process, errno=%d\n", (int)errno); + break; + case 0: /* child */ + fclose(self->Fp); + self->Fp = NULL; + + ft2pt1_main_retval = ft2pt1_main(ft2pt1_numargs, ft2pt1_args, tf, psfontname, block_offset); + if( do_debug_ft2pt1 ) + { + fprintf(stderr, "## ft2pt1_main returned %d (child)\n", ft2pt1_main_retval); + } + exit(ft2pt1_main_retval); + break; + default: /* parent */ + waitpid(childpid, &ft2pt1_main_retval, 0); + break; + } + + if( do_debug_ft2pt1 ) + { + fprintf(stderr, "## ft2pt1_main returned %d (parent)\n", ft2pt1_main_retval); + } +#else + S_Flush(self); + + ft2pt1_main_retval = ft2pt1_main(ft2pt1_numargs, ft2pt1_args, tf, psfontname, block_offset); + if( do_debug_ft2pt1 ) + { + fprintf(stderr, "## ft2pt1_main returned %d (child)\n", ft2pt1_main_retval); + } +#endif /* FT2PT1_NEEDS_SEPERATE_PROCESS */ + + if( ft2pt1_main_retval != EXIT_SUCCESS ) + { + FatalError("PS DDX internal error while converting FreeType font '%s' to PS Type1, error=%d\n", + tf->instance->face->filename, ft2pt1_main_retval); + } + + sprintf(pstype1filename, "%s.pfa", pstype1filename_prefix); + if( do_debug_ft2pt1 ) + { + fprintf(stderr, "# Downloading converted FT2/PS Type1 filename='%s'\n", pstype1filename); + } + + PsOut_DownloadType1(self, "PsOut_DownloadFreeType1", psfontname, pstype1filename); + + if( !do_debug_ft2pt1 ) + { + unlink(pstype1filename); + } + + free(pstype1filename_prefix); + + S_Flush(self); + + return 0; +} + + diff --git a/Xprint/ps/psout_ftpstype3.c b/Xprint/ps/psout_ftpstype3.c new file mode 100644 index 000000000..bceb1d479 --- /dev/null +++ b/Xprint/ps/psout_ftpstype3.c @@ -0,0 +1,463 @@ + +/* +Copyright (c) 2003-2004 Roland Mainz + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#include +#include +#include "os.h" +#define USE_PSOUT_PRIVATE 1 +#include "psout.h" + +#include +#include FT_FREETYPE_H +#include FT_TRUETYPE_TABLES_H +#include FT_BBOX_H +#include FT_GLYPH_H + +#include FT_CONFIG_CONFIG_H +#include FT_CONFIG_OPTIONS_H +#include FT_ERRORS_H +#include FT_SYSTEM_H +#include FT_IMAGE_H +#include FT_TYPES_H +#include FT_OUTLINE_H +#include FT_MODULE_H +#include FT_RENDER_H +#include FT_TYPE1_TABLES_H +#include FT_TRUETYPE_IDS_H +#include FT_TRUETYPE_TAGS_H +#include FT_CACHE_H +#include FT_CACHE_IMAGE_H +#include FT_CACHE_SMALL_BITMAPS_H +#include FT_MULTIPLE_MASTERS_H +#include FT_SFNT_NAMES_H + +#define USE_FT_INTERNALS 1 +#ifdef USE_FT_INTERNALS +#include FT_INTERNAL_TYPE1_TYPES_H +#include "t42types.h" +#include FT_INTERNAL_OBJECTS_H +#endif /* USE_FT_INTERNALS */ + +#include "Xproto.h" +#include "font.h" +#include "fontstruct.h" +#include "fntfilst.h" +#include "fontutil.h" +#include "fontenc.h" +#include "ft.h" +#include "ftfuncs.h" + +struct ft2info +{ + FontPtr pFont; + FTFontPtr tf; + FT_Face ttface; + struct + { + char *full_name; + char *copyright; + char *family; + char *subfamily; + char *version; + } nameid; + TT_Postscript *ttpostscript; + TT_Header *ttheader; +}; + +/* Local prototypes */ +static FT_Error PSType3_createOutlineGlyphs(FILE *out, struct ft2info *ti, unsigned long unicode, const char *psglyphname); +static int PSType3_generateOutlineFont(FILE *out, const char *psfontname, struct ft2info *ti, long block_offset); + +extern FT_Library ftypeLibrary; /* defined in xc/lib/font/FreeType/ftfuncs.c */ + +#define USE_FT_PS_NAMES 1 + +static +FT_Error PSType3_createOutlineGlyphs( FILE *out, struct ft2info *ti, unsigned long x11fontindex, const char *psglyphname ) +{ + unsigned long ftindex; + FT_BBox bbox; + FT_Error error; + FT_Outline outline; + + /* Remap X11 font index to FreeType font index */ + ftindex = FTRemap(ti->ttface, &ti->tf->mapping, x11fontindex); + + error = FT_Load_Glyph(ti->ttface, ftindex, (FT_LOAD_NO_BITMAP | FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING)); + if( error ) + { + fprintf(stderr, "PSType3_createOutlineGlyphs: FT_Load_Glyph() failure, error=%d\n", (int)error); + return error; + } + + outline = ti->ttface->glyph->outline; + + FT_Outline_Get_CBox(&outline, &bbox); + + fprintf(out, "/%s {\n", psglyphname); + fprintf(out, "%ld 0 %ld %ld %ld %ld setcachedevice\n", + (signed long)ti->ttface->glyph->metrics.horiAdvance, + (long)bbox.xMin, + (long)bbox.yMin, + (long)bbox.xMax, + (long)bbox.yMax); + + if( outline.n_contours > 0 ) + { + long i, + j, + k, k1, + cs, ce, + nguide, + contour_start, + contour_end, + last_point; + Bool first; + FT_Vector *vec; + + contour_start = ce = 0; + + vec = outline.points; + last_point = outline.n_points; + + i = j = k = 0; + first = TRUE; + + while( i <= outline.contours[outline.n_contours - 1] ) + { + contour_end = outline.contours[j]; + + if( first ) + { + fprintf(out, "%ld %ld moveto\n", vec[i].x, vec[i].y); + contour_start = i; + first = FALSE; + } + else if( outline.tags[i] & FT_CURVE_TAG_ON ) + { + fprintf(out, "%ld %ld lineto\n", vec[i].x, vec[i].y); + } + else + { + Bool finished = FALSE; + + cs = i-1; + nguide = 0; + while( !finished ) + { + if( i == contour_end+1 ) + { + ce = contour_start; + finished = TRUE; + } + else if( outline.tags[i] & FT_CURVE_TAG_ON ) + { + ce = i; + finished = TRUE; + } + else + { + i++; + nguide++; + } + } + + switch( nguide ) + { + case 0: + fprintf(out, "%ld %ld lineto\n", vec[ce].x, vec[ce].y); + break; + + case 1: + fprintf(out, "%ld %ld %ld %ld %ld %ld curveto\n", + (vec[cs].x+2*vec[cs+1].x)/3, + (vec[cs].y+2*vec[cs+1].y)/3, + (2*vec[cs+1].x+vec[ce].x)/3, + (2*vec[cs+1].y+vec[ce].y)/3, + vec[ce].x, vec[ce].y); + break; + + case 2: + fprintf(out, "%ld %ld %ld %ld %ld %ld curveto\n", + (-vec[cs].x+4*vec[cs+1].x)/3, + (-vec[cs].y+4*vec[cs+1].y)/3, + (4*vec[cs+2].x-vec[ce].x)/3, + (4*vec[cs+2].y-vec[ce].y)/3, + vec[ce].x, vec[ce].y); + break; + + case 3: + fprintf(out, "%ld %ld %ld %ld %ld %ld curveto\n", + (vec[cs].x+2*vec[cs+1].x)/3, + (vec[cs].y+2*vec[cs+1].y)/3, + (5*vec[cs+1].x+vec[cs+2].x)/6, + (5*vec[cs+1].y+vec[cs+2].y)/6, + (vec[cs+1].x+vec[cs+2].x)/2, + (vec[cs+1].y+vec[cs+2].y)/2); + + fprintf(out, "%ld %ld %ld %ld %ld %ld curveto\n", + (vec[cs+1].x+5*vec[cs+2].x)/6, + (vec[cs+1].y+5*vec[cs+2].y)/6, + (5*vec[cs+2].x+vec[cs+3].x)/6, + (5*vec[cs+2].y+vec[cs+3].y)/6, + (vec[cs+3].x+vec[cs+2].x)/2, + (vec[cs+3].y+vec[cs+2].y)/2); + + fprintf(out, "%ld %ld %ld %ld %ld %ld curveto\n", + (vec[cs+2].x+5*vec[cs+3].x)/6, + (vec[cs+2].y+5*vec[cs+3].y)/6, + (2*vec[cs+3].x+vec[ce].x)/3, + (2*vec[cs+3].y+vec[ce].y)/3, + vec[ce].x, vec[ce].y); + break; + + default: /* anything |nguide > 3| */ + k1 = cs + nguide; + + fprintf(out, "%ld %ld %ld %ld %ld %ld curveto\n", + (vec[cs].x+2*vec[cs+1].x)/3, + (vec[cs].y+2*vec[cs+1].y)/3, + (5*vec[cs+1].x+vec[cs+2].x)/6, + (5*vec[cs+1].y+vec[cs+2].y)/6, + (vec[cs+1].x+vec[cs+2].x)/2, + (vec[cs+1].y+vec[cs+2].y)/2); + + for( k = cs+2 ; k <= k1-1 ; k++ ) + { + fprintf(out, "%ld %ld %ld %ld %ld %ld curveto\n", + (vec[k-1].x+5*vec[k].x)/6, + (vec[k-1].y+5*vec[k].y)/6, + (5*vec[k].x+vec[k+1].x)/6, + (5*vec[k].y+vec[k+1].y)/6, + (vec[k].x+vec[k+1].x)/2, + (vec[k].y+vec[k+1].y)/2); + } + + fprintf(out, "%ld %ld %ld %ld %ld %ld curveto\n", + (vec[k1-1].x+5*vec[k1].x)/6, + (vec[k1-1].y+5*vec[k1].y)/6, + (2*vec[k1].x+vec[ce].x)/3, + (2*vec[k1].y+vec[ce].y)/3, + vec[ce].x, vec[ce].y); + break; + } + } + + if( i >= contour_end ) + { + fprintf(out, "closepath\n"); + first = TRUE; + i = contour_end + 1; + j++; + } + else + { + i++; + } + } + } + + fprintf(out, "fill } bind def\n"); + + return 0; +} + +#ifdef USE_FT_INTERNALS +static FT_BBox * +FT_Get_PS_Font_BBox( FT_Face face ) +{ + const char *driver_name; + FT_BBox *font_bbox = NULL; + + if ( face && face->driver && face->driver->root.clazz ) + { + driver_name = face->driver->root.clazz->module_name; + if ( ft_strcmp( driver_name, "type1" ) == 0 ) + font_bbox = &(((T1_Face)face)->type1.font_bbox); + else if ( ft_strcmp( driver_name, "t1cid" ) == 0 ) + font_bbox = &(((CID_Face)face)->cid.font_bbox); + else if ( ft_strcmp( driver_name, "type42" ) == 0 ) + font_bbox = &(((T42_Face)face)->type1.font_bbox); + } + + return font_bbox; +} +#endif /* USE_FT_INTERNALS */ + +static +int PSType3_generateOutlineFont(FILE *out, const char *psfontname, struct ft2info *ti, long block_offset) +{ + long i; + double scaler; + const int numchars = 256; +#ifdef USE_FT_PS_NAMES + int linewidth = 0; +#endif /* USE_FT_PS_NAMES */ + + fprintf(out, "%%%%BeginFont: %s\n", psfontname); + fprintf(out, "22 dict begin\n"); + fprintf(out, "/FontType 3 def\n"); + fprintf(out, "/StrokeWidth 0 def\n"); + fprintf(out, "/PaintType 0 def\n"); + fprintf(out, "/FontName (%s) def\n", psfontname); + fprintf(out, "/FontInfo 9 dict dup begin\n"); + fprintf(out, " /FullName (%s) def\n", ti->nameid.full_name?ti->nameid.full_name:psfontname); + fprintf(out, " /Notice (%s) def\n", ti->nameid.copyright?ti->nameid.copyright:"nothing here"); + fprintf(out, " /FamilyName (%s) def\n", ti->nameid.family?ti->nameid.family:psfontname); + fprintf(out, " /Weight (%s) def\n", ti->nameid.subfamily?ti->nameid.subfamily:"Regular"); + fprintf(out, " /version (%s) def\n", ti->nameid.version?ti->nameid.version:"0.1"); + + if( ti->ttpostscript ) + { + fprintf(out, " /italicAngle %.9g def\n", (double)ti->ttpostscript->italicAngle); + fprintf(out, " /underlineThickness %d def\n", (int)ti->ttpostscript->underlineThickness); + fprintf(out, " /underlinePosition %d def\n", (int)ti->ttpostscript->underlinePosition); + fprintf(out, " /isFixedPitch %s def\n", ((ti->ttpostscript->isFixedPitch)?("true"):("false"))); + } + else + { + fprintf(out, " /italicAngle %.9g def\n", 0.0); + fprintf(out, " /underlineThickness %d def\n", 100); + fprintf(out, " /underlinePosition %d def\n", 0); + fprintf(out, " /isFixedPitch false def\n"); + } + + fprintf(out, "end def\n"); + + scaler = (1000.0 / (double)ti->ttface->units_per_EM) / 1000.0; + fprintf(out, "/FontMatrix [%.9g 0 0 %.9g 0 0] def\n", scaler, scaler); + + if( ti->ttheader ) + { + fprintf(out, "/FontBBox [%d %d %d %d] def\n", + (int)ti->ttheader->xMin, + (int)ti->ttheader->yMin, + (int)ti->ttheader->xMax, + (int)ti->ttheader->yMax); + } + else + { + FT_BBox *font_bbox = FT_Get_PS_Font_BBox(ti->ttface); + fprintf(out, "/FontBBox [%d %d %d %d] def\n", + (int)font_bbox->xMin, + (int)font_bbox->yMin, + (int)font_bbox->xMax, + (int)font_bbox->yMax); + } + + fprintf(out, "/Encoding [\n"); + for( i = 0 ; i < 256 ; i++ ) + { +#ifdef USE_FT_PS_NAMES + char namebuf[256]; + PsOut_Get_FreeType_Glyph_Name(namebuf, ti->pFont, i+block_offset); + linewidth += strlen(namebuf) + 2; + fprintf(out, "/%s%s", namebuf, (linewidth > 70)?(linewidth = 0, "\n"):(" ")); +#else + fprintf(out, "/ch%02x%s", i, (((i % 10) == 9)?("\n"):(" "))); +#endif /* USE_FT_PS_NAMES */ + } + fprintf(out, "] def\n"); + + fprintf(out, "/CharProcs %d dict def CharProcs begin\n", (int)(numchars + 1)); + fprintf(out, "/.notdef {\n" + "1000 0 0 0 0 0 setcachedevice\n" + "fill } bind def\n"); + for( i = 0 ; i < numchars ; i++ ) + { + char buf[32]; +#ifdef USE_FT_PS_NAMES + char namebuf[256]; + PsOut_Get_FreeType_Glyph_Name(namebuf, ti->pFont, i+block_offset); + sprintf(buf, "%s ", namebuf); +#else + sprintf(buf, "ch%02lx ", i); +#endif /* USE_FT_PS_NAMES */ + PSType3_createOutlineGlyphs(out, ti, i+block_offset, buf); + } + fprintf(out, "end\n" + "/BuildGlyph {\n" + " exch /CharProcs get exch\n" + " 2 copy known not {pop /.notdef} if get exec } bind def\n" + "/BuildChar { 1 index /Encoding get exch get\n" + " 1 index /Encoding get exec } bind def\n"); + fprintf(out, "currentdict end /%s exch definefont pop\n", psfontname); + fprintf(out, "%%EndFont\n"); + + return 0; +} + +static +char *FT_Get_TT_NAME_ID(FT_Face ttface, int index) +{ + FT_SfntName name; + char *s; + + if( index >= FT_Get_Sfnt_Name_Count(ttface) ) + return NULL; + + FT_Get_Sfnt_Name(ttface, index, &name); + s = (char *)malloc(name.string_len+2); + if( !s ) + return NULL; + memcpy(s, (char *)name.string, name.string_len); + s[name.string_len] = '\0'; + return s; +} + +int PsOut_DownloadFreeType3(PsOutPtr self, const char *psfontname, FontPtr pFont, long block_offset) +{ + struct ft2info cft2info = { 0 }; + struct ft2info *ti = &cft2info; + + S_Flush(self); + + ti->tf = (FTFontPtr)pFont->fontPrivate; + ti->ttface = ti->tf->instance->face->face; + ti->pFont = pFont; +#ifdef DEBUG_gisburn + fprintf(stderr, "# Downloading FT2 font filename='%s', ttface=%lx\n", ti->tf->instance->face->filename, (long)ti->ttface); +#endif /* DEBUG_gisburn */ + + ti->nameid.full_name = FT_Get_TT_NAME_ID(ti->ttface, TT_NAME_ID_FULL_NAME); + ti->nameid.copyright = FT_Get_TT_NAME_ID(ti->ttface, TT_NAME_ID_COPYRIGHT); + ti->nameid.family = FT_Get_TT_NAME_ID(ti->ttface, TT_NAME_ID_FONT_FAMILY); + ti->nameid.subfamily = FT_Get_TT_NAME_ID(ti->ttface, TT_NAME_ID_FONT_SUBFAMILY); + ti->nameid.version = FT_Get_TT_NAME_ID(ti->ttface, TT_NAME_ID_VERSION_STRING); + + ti->ttheader = (TT_Header *)FT_Get_Sfnt_Table(ti->ttface, ft_sfnt_head); + ti->ttpostscript = (TT_Postscript *)FT_Get_Sfnt_Table(ti->ttface, ft_sfnt_post); + + PSType3_generateOutlineFont(self->Fp, psfontname, ti, block_offset); + + free(ti->nameid.full_name); + free(ti->nameid.copyright); + free(ti->nameid.family); + free(ti->nameid.subfamily); + free(ti->nameid.version); + + S_Flush(self); + + return 0; +} + diff --git a/Xprint/spooler.h b/Xprint/spooler.h new file mode 100644 index 000000000..ac1257c55 --- /dev/null +++ b/Xprint/spooler.h @@ -0,0 +1,72 @@ + +#ifndef SPOOLER_H +#define SPOOLER_H 1 + +/* $Xorg: spooler.h,v 1.1 2003/09/14 1:19:56 gisburn Exp $ */ +/* +Copyright (c) 2003-2004 Roland Mainz + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the names of the copyright holders shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from said +copyright holders. +*/ + +/* + * Define platform-specific default spooler type + */ +#if defined(sun) +#define XPDEFAULTSPOOLERNAMELIST "solaris" +#elif defined(AIXV4) +#define XPDEFAULTSPOOLERNAMELIST "aix4" +#elif defined(hpux) +#define XPDEFAULTSPOOLERNAMELIST "hpux" +#elif defined(__osf__) +#define XPDEFAULTSPOOLERNAMELIST "osf" +#elif defined(__uxp__) +#define XPDEFAULTSPOOLERNAMELIST "uxp" +#elif defined(CSRG_BASED) || defined(linux) +/* ToDo: This should be "cups:bsd" in the future, but for now + * the search order first-bsd-then-cups is better for backwards + * compatibility. + */ +#define XPDEFAULTSPOOLERNAMELIST "bsd:cups" +#else +#define XPDEFAULTSPOOLERNAMELIST "other" +#endif + +typedef struct +{ + const char *name; + const char *list_queues_command; + const char *spool_command; +} XpSpoolerType, *XpSpoolerTypePtr; + +/* prototypes */ +extern XpSpoolerTypePtr XpSpoolerNameToXpSpoolerType(char *name); +extern void XpSetSpoolerTypeNameList(char *namelist); +extern char *XpGetSpoolerTypeNameList(void); + +/* global vars */ +extern XpSpoolerTypePtr spooler_type; +extern XpSpoolerType xpstm[]; + +#endif /* !SPOOLER_H */ + diff --git a/hw/xwin/winmultiwindowwm.c b/hw/xwin/winmultiwindowwm.c index c5eaaee03..d98defc29 100644 --- a/hw/xwin/winmultiwindowwm.c +++ b/hw/xwin/winmultiwindowwm.c @@ -1124,7 +1124,7 @@ winInitMultiWindowWM (WMInfoPtr pWMInfo, WMProcArgPtr pProcArg) } else if (iReturn == WIN_JMP_ERROR_IO) { - ErrorF ("winInitMultiWindowWM - Caught IO Erro. Exiting.\n"); + ErrorF ("winInitMultiWindowWM - Caught IO Error. Exiting.\n"); pthread_exit (NULL); }