From 34f0b7f064072fabdbe47ab1a15d4f1341a0417d Mon Sep 17 00:00:00 2001 From: Ray Johnston Date: Fri, 8 Aug 2008 04:22:38 +0000 Subject: Massive commit discussed before the freeze to move the PostScript initialization files to Resource/Init. This obviates the need for geninit when COMPILE_INITS=1. A followup change will enhance mkromfs to allow it to 'strip' comments and white space from PostScript input files somewhat reducing the compressed storage needed for the files in Resource/Init. All files mentioned in int.mak with 'ADDMOD ... -ps ...' are included as well as those that would have been included via gs_init.ps %% Replace lines. Builds tested on Windows and Cygwin for the various executables (gs, pcl6, pspcl6 and gxps). The default LIBPATH and GenericResourceDir are adjusted accordingly. git-svn-id: http://svn.ghostscript.com/ghostscript/trunk@8954 a1074d23-0009-0410-80fe-cf8c14f379e6 --- gs/Resource/Init/FCOfontmap-PCLPS2 | 107 ++ gs/Resource/Init/Fontmap | 4 + gs/Resource/Init/Fontmap.GS | 402 +++++++ gs/Resource/Init/cidfmap | 28 + gs/Resource/Init/gs_agl.ps | 1069 ++++++++++++++++++ gs/Resource/Init/gs_btokn.ps | 331 ++++++ gs/Resource/Init/gs_cet.ps | 61 + gs/Resource/Init/gs_cff.ps | 848 ++++++++++++++ gs/Resource/Init/gs_cidcm.ps | 446 ++++++++ gs/Resource/Init/gs_ciddc.ps | 214 ++++ gs/Resource/Init/gs_cidfm.ps | 129 +++ gs/Resource/Init/gs_cidfn.ps | 412 +++++++ gs/Resource/Init/gs_cidtt.ps | 141 +++ gs/Resource/Init/gs_ciecs2.ps | 147 +++ gs/Resource/Init/gs_ciecs3.ps | 137 +++ gs/Resource/Init/gs_cmap.ps | 549 +++++++++ gs/Resource/Init/gs_cspace.ps | 1022 +++++++++++++++++ gs/Resource/Init/gs_css_e.ps | 114 ++ gs/Resource/Init/gs_dbt_e.ps | 59 + gs/Resource/Init/gs_devcs.ps | 250 ++++ gs/Resource/Init/gs_devn.ps | 218 ++++ gs/Resource/Init/gs_devpxl.ps | 78 ++ gs/Resource/Init/gs_diskf.ps | 224 ++++ gs/Resource/Init/gs_diskn.ps | 214 ++++ gs/Resource/Init/gs_dpnxt.ps | 134 +++ gs/Resource/Init/gs_dps.ps | 224 ++++ gs/Resource/Init/gs_dps1.ps | 139 +++ gs/Resource/Init/gs_dps2.ps | 247 ++++ gs/Resource/Init/gs_dscp.ps | 118 ++ gs/Resource/Init/gs_epsf.ps | 243 ++++ gs/Resource/Init/gs_fapi.ps | 344 ++++++ gs/Resource/Init/gs_fntem.ps | 432 +++++++ gs/Resource/Init/gs_fonts.ps | 1223 ++++++++++++++++++++ gs/Resource/Init/gs_frsd.ps | 81 ++ gs/Resource/Init/gs_icc.ps | 340 ++++++ gs/Resource/Init/gs_il1_e.ps | 66 ++ gs/Resource/Init/gs_img.ps | 862 ++++++++++++++ gs/Resource/Init/gs_indxd.ps | 205 ++++ gs/Resource/Init/gs_init.ps | 2192 ++++++++++++++++++++++++++++++++++++ gs/Resource/Init/gs_l2img.ps | 184 +++ gs/Resource/Init/gs_lev2.ps | 1014 +++++++++++++++++ gs/Resource/Init/gs_ll3.ps | 379 +++++++ gs/Resource/Init/gs_mex_e.ps | 66 ++ gs/Resource/Init/gs_mgl_e.ps | 64 ++ gs/Resource/Init/gs_mro_e.ps | 61 + gs/Resource/Init/gs_patrn.ps | 309 +++++ gs/Resource/Init/gs_pdf_e.ps | 44 + gs/Resource/Init/gs_pdfwr.ps | 874 ++++++++++++++ gs/Resource/Init/gs_res.ps | 1118 ++++++++++++++++++ gs/Resource/Init/gs_resmp.ps | 531 +++++++++ gs/Resource/Init/gs_sepr.ps | 268 +++++ gs/Resource/Init/gs_setpd.ps | 924 +++++++++++++++ gs/Resource/Init/gs_statd.ps | 374 ++++++ gs/Resource/Init/gs_std_e.ps | 73 ++ gs/Resource/Init/gs_sym_e.ps | 83 ++ gs/Resource/Init/gs_trap.ps | 103 ++ gs/Resource/Init/gs_ttf.ps | 1947 ++++++++++++++++++++++++++++++++ gs/Resource/Init/gs_typ32.ps | 133 +++ gs/Resource/Init/gs_typ42.ps | 62 + gs/Resource/Init/gs_type1.ps | 238 ++++ gs/Resource/Init/gs_wan_e.ps | 46 + gs/Resource/Init/pdf_base.ps | 1066 ++++++++++++++++++ gs/Resource/Init/pdf_cslayer.ps | 121 ++ gs/Resource/Init/pdf_font.ps | 1663 +++++++++++++++++++++++++++ gs/Resource/Init/pdf_main.ps | 1884 +++++++++++++++++++++++++++++++ gs/Resource/Init/pdf_ops.ps | 852 ++++++++++++++ gs/Resource/Init/pdf_rbld.ps | 332 ++++++ gs/Resource/Init/pdf_sec.ps | 469 ++++++++ gs/Resource/Init/xlatmap | 49 + 69 files changed, 29385 insertions(+) create mode 100644 gs/Resource/Init/FCOfontmap-PCLPS2 create mode 100644 gs/Resource/Init/Fontmap create mode 100644 gs/Resource/Init/Fontmap.GS create mode 100644 gs/Resource/Init/cidfmap create mode 100644 gs/Resource/Init/gs_agl.ps create mode 100644 gs/Resource/Init/gs_btokn.ps create mode 100644 gs/Resource/Init/gs_cet.ps create mode 100644 gs/Resource/Init/gs_cff.ps create mode 100644 gs/Resource/Init/gs_cidcm.ps create mode 100644 gs/Resource/Init/gs_ciddc.ps create mode 100644 gs/Resource/Init/gs_cidfm.ps create mode 100644 gs/Resource/Init/gs_cidfn.ps create mode 100644 gs/Resource/Init/gs_cidtt.ps create mode 100644 gs/Resource/Init/gs_ciecs2.ps create mode 100644 gs/Resource/Init/gs_ciecs3.ps create mode 100644 gs/Resource/Init/gs_cmap.ps create mode 100644 gs/Resource/Init/gs_cspace.ps create mode 100644 gs/Resource/Init/gs_css_e.ps create mode 100644 gs/Resource/Init/gs_dbt_e.ps create mode 100644 gs/Resource/Init/gs_devcs.ps create mode 100644 gs/Resource/Init/gs_devn.ps create mode 100644 gs/Resource/Init/gs_devpxl.ps create mode 100644 gs/Resource/Init/gs_diskf.ps create mode 100644 gs/Resource/Init/gs_diskn.ps create mode 100644 gs/Resource/Init/gs_dpnxt.ps create mode 100644 gs/Resource/Init/gs_dps.ps create mode 100644 gs/Resource/Init/gs_dps1.ps create mode 100644 gs/Resource/Init/gs_dps2.ps create mode 100644 gs/Resource/Init/gs_dscp.ps create mode 100644 gs/Resource/Init/gs_epsf.ps create mode 100644 gs/Resource/Init/gs_fapi.ps create mode 100644 gs/Resource/Init/gs_fntem.ps create mode 100644 gs/Resource/Init/gs_fonts.ps create mode 100644 gs/Resource/Init/gs_frsd.ps create mode 100644 gs/Resource/Init/gs_icc.ps create mode 100644 gs/Resource/Init/gs_il1_e.ps create mode 100644 gs/Resource/Init/gs_img.ps create mode 100644 gs/Resource/Init/gs_indxd.ps create mode 100644 gs/Resource/Init/gs_init.ps create mode 100644 gs/Resource/Init/gs_l2img.ps create mode 100644 gs/Resource/Init/gs_lev2.ps create mode 100644 gs/Resource/Init/gs_ll3.ps create mode 100644 gs/Resource/Init/gs_mex_e.ps create mode 100644 gs/Resource/Init/gs_mgl_e.ps create mode 100644 gs/Resource/Init/gs_mro_e.ps create mode 100644 gs/Resource/Init/gs_patrn.ps create mode 100644 gs/Resource/Init/gs_pdf_e.ps create mode 100644 gs/Resource/Init/gs_pdfwr.ps create mode 100644 gs/Resource/Init/gs_res.ps create mode 100644 gs/Resource/Init/gs_resmp.ps create mode 100644 gs/Resource/Init/gs_sepr.ps create mode 100644 gs/Resource/Init/gs_setpd.ps create mode 100644 gs/Resource/Init/gs_statd.ps create mode 100644 gs/Resource/Init/gs_std_e.ps create mode 100644 gs/Resource/Init/gs_sym_e.ps create mode 100644 gs/Resource/Init/gs_trap.ps create mode 100644 gs/Resource/Init/gs_ttf.ps create mode 100644 gs/Resource/Init/gs_typ32.ps create mode 100644 gs/Resource/Init/gs_typ42.ps create mode 100644 gs/Resource/Init/gs_type1.ps create mode 100644 gs/Resource/Init/gs_wan_e.ps create mode 100644 gs/Resource/Init/pdf_base.ps create mode 100644 gs/Resource/Init/pdf_cslayer.ps create mode 100644 gs/Resource/Init/pdf_font.ps create mode 100644 gs/Resource/Init/pdf_main.ps create mode 100644 gs/Resource/Init/pdf_ops.ps create mode 100644 gs/Resource/Init/pdf_rbld.ps create mode 100644 gs/Resource/Init/pdf_sec.ps create mode 100644 gs/Resource/Init/xlatmap (limited to 'gs/Resource') diff --git a/gs/Resource/Init/FCOfontmap-PCLPS2 b/gs/Resource/Init/FCOfontmap-PCLPS2 new file mode 100644 index 000000000..d0e5ce11e --- /dev/null +++ b/gs/Resource/Init/FCOfontmap-PCLPS2 @@ -0,0 +1,107 @@ +% Copyright (C) 2001, 2002 Aladdin Enterprises. All rights reserved. +% +% This software is provided AS-IS with no warranty, either express or +% implied. +% +% This software is distributed under license and may not be copied, +% modified or distributed except as expressly authorized under the terms +% of the license contained in the file LICENSE in this distribution. +% +% For more information about licensing, please refer to +% http://www.ghostscript.com/licensing/. For information on +% commercial licensing, go to http://www.artifex.com/licensing/ or +% contact Artifex Software, Inc., 101 Lucas Valley Road #110, +% San Rafael, CA 94903, U.S.A., +1(415)492-9861. + +% $Id$ + +% May add general FAPIfontmap records here like this : +/Wingdings-Regular << /Path FCOfontfile2 /FontType 1 /FAPI /UFST /SubfontId 0 /Encoding /Wingdings /Decoding /FCO_Wingdings>> ; + +% Mapping Postscript fonts to pclp2_xj.fco FCO members : +FCOfontfile ReadFCOfontmap: +0 Albertus-Medium +1 Albertus-ExtraBold +2 AntiqueOlive +3 AntiqueOlive-Italic +4 AntiqueOlive-Bold +5 Arial +6 Arial-Italic +7 Arial-Bold +8 Arial-BoldItalic +9 Clarendon-Condensed-Bold +10 Coronet +11 CourierHP +12 CourierHP-Italic +13 CourierHP-Bold +14 CourierHP-BoldItalic +15 Garamond-Antiqua +16 Garamond-Kursiv +17 Garamond-Halbfett +18 Garamond-KursivHalbfett +19 LetterGothic +20 LetterGothic-Italic +21 LetterGothic-Bold +22 Marigold +23 CGOmega +24 CGOmega-Italic +25 CGOmega-Bold +26 CGOmega-BoldItalic +27 SymbolMT SymbolEncoding FCO_Symbol +28 CGTimes +29 CGTimes-Italic +30 CGTimes-Bold +31 CGTimes-BoldItalic +32 TimesNewRoman +33 TimesNewRoman-Italic +34 TimesNewRoman-Bold +35 TimesNewRoman-BoldItalic +36 UniversMedium +37 UniversMedium-Italic +38 Univers-Bold +39 Univers-BoldItalic +40 Univers-Condensed-Medium +41 Univers-Condensed-MediumItalic +42 Univers-Condensed-Bold +43 Univers-Condensed-BoldItalic +44 Courier- +45 Courier-Italic +46 Courier-Bold- +47 Courier-BoldItalic +48 AvantGarde-Book +49 AvantGarde-BookOblique +50 AvantGarde-Demi +51 AvantGarde-DemiOblique +52 Bookman-Light +53 Bookman-LightItalic +54 Bookman-Demi +55 Bookman-DemiItalic +56 Courier +57 Courier-Oblique +58 Courier-Bold +59 Courier-BoldOblique +60 Helvetica +61 Helvetica-Oblique +62 Helvetica-Bold +63 Helvetica-BoldOblique +64 Helvetica-Narrow +65 Helvetica-Narrow-Oblique +66 Helvetica-Narrow-Bold +67 Helvetica-Narrow-BoldOblique +68 NewCenturySchlbk-Roman +69 NewCenturySchlbk-Italic +70 NewCenturySchlbk-Bold +71 NewCenturySchlbk-BoldItalic +72 Palatino-Roman +73 Palatino-Italic +74 Palatino-Bold +75 Palatino-BoldItalic +76 Symbol SymbolEncoding FCO_Symbol +77 Times-Roman +78 Times-Italic +79 Times-Bold +80 Times-BoldItalic +81 ZapfChancery-MediumItalic +82 ZapfDingbats DingbatsEncoding FCO_Dingbats +EndFCOfontmap +%EOF diff --git a/gs/Resource/Init/Fontmap b/gs/Resource/Init/Fontmap new file mode 100644 index 000000000..ae5af96e0 --- /dev/null +++ b/gs/Resource/Init/Fontmap @@ -0,0 +1,4 @@ +%! +% See Fontmap.GS for the syntax of real Fontmap files. +%% Replace 1 (Fontmap.GS) +(Fontmap.GS) .runlibfile diff --git a/gs/Resource/Init/Fontmap.GS b/gs/Resource/Init/Fontmap.GS new file mode 100644 index 000000000..f281d19a8 --- /dev/null +++ b/gs/Resource/Init/Fontmap.GS @@ -0,0 +1,402 @@ +% Copyright (C) 1996, 1999 Aladdin Enterprises. All rights reserved. +% +% This software is provided AS-IS with no warranty, either express or +% implied. +% +% This software is distributed under license and may not be copied, +% modified or distributed except as expressly authorized under the terms +% of the license contained in the file LICENSE in this distribution. +% +% For more information about licensing, please refer to +% http://www.ghostscript.com/licensing/. For information on +% commercial licensing, go to http://www.artifex.com/licensing/ or +% contact Artifex Software, Inc., 101 Lucas Valley Road #110, +% San Rafael, CA 94903, U.S.A., +1(415)492-9861. + +% $Id$ +% Fontmap - standard font catalog for Ghostscript. + +% ---------------------------------------------------------------- + +% This file is a catalog of fonts known to Ghostscript. Any font +% that is to be loaded automatically when named must be in this catalog, +% except for fonts that Ghostscript finds automatically in directories +% named in the GS_FONTPATH environment variable. + +% Each font has an entry consisting of three items: +% +% - The name by which the font is known inside Ghostscript +% (a Ghostscript name preceded by a `/', or a string enclosed +% in parentheses). This is used to find the file from which +% a font of a given name should be loaded. +% +% - Information depending on whether this is a real font or a +% font alias: +% +% - For real fonts, the name of the Ghostscript font +% file (a Ghostscript string, enclosed in parentheses). +% The filename should include the extension, which (by +% convention) is `.gsf'. `.pfa' and `.pfb' files are +% also usable as fonts for Ghostscript. +% +% - For font aliases, the name of the font which should +% be used when this one is requested, preceded by a +% `/'. See the entry for Charter below for an example. +% Note that an alias name cannot be enclosed in parentheses. +% +% - At least one space or tab, and a terminating semicolon. + +% The following table is executed as a PostScript file. +% If you add new entries, be sure to copy the punctuation accurately; +% in particular, you must leave at least one space or tab between each +% field in the entry. Also, please read fonts.doc for important information +% about font names. + +% PDF interpreter evaluates hexadecimal escapes in PDF font names before +% looking up the font. When the resulting name cannot be represented using +% PostScript name syntax, the string can be used instead of the name. + +% Note that .pfa and .pfb fonts are compatible with Adobe Type Manager +% and other programs that don't include full PostScript interpreters, +% as well as with PostScript interpreters; .gsf fonts are compatible with +% PostScript interpreters, but not with ATM or similar programs. + +% +% +% Fonts contributed by: +% URW++ Design and Development Incorporated +% Poppenbuetteler Bogen 29A +% D-22399 Hamburg +% Germany +% tel. +49 (40) 60 60 50 +% fax +49 (40) 60 60 51 11 +% http://www.urwpp.de +% for distribution under the GNU License and Aladdin Free Public License. +% See the notice at the head of this Fontmap file for licensing terms. +% Each of these fonts is individually covered by the license: +% for licensing purposes, they are not "part of" any larger entity. +% The following notice applies to these fonts: +% +% Copyright URW Software, Copyright 1994 by URW. +% + +% Actual fonts + +/URWBookmanL-DemiBold (b018015l.pfb) ; +/URWBookmanL-DemiBoldItal (b018035l.pfb) ; +/URWBookmanL-Ligh (b018012l.pfb) ; +/URWBookmanL-LighItal (b018032l.pfb) ; + +/NimbusMonL-Regu (n022003l.pfb) ; +/NimbusMonL-ReguObli (n022023l.pfb) ; +/NimbusMonL-Bold (n022004l.pfb) ; +/NimbusMonL-BoldObli (n022024l.pfb) ; + +/URWGothicL-Book (a010013l.pfb) ; +/URWGothicL-BookObli (a010033l.pfb) ; +/URWGothicL-Demi (a010015l.pfb) ; +/URWGothicL-DemiObli (a010035l.pfb) ; + +/NimbusSanL-Regu (n019003l.pfb) ; +/NimbusSanL-ReguItal (n019023l.pfb) ; +/NimbusSanL-Bold (n019004l.pfb) ; +/NimbusSanL-BoldItal (n019024l.pfb) ; + +/NimbusSanL-ReguCond (n019043l.pfb) ; +/NimbusSanL-ReguCondItal (n019063l.pfb) ; +/NimbusSanL-BoldCond (n019044l.pfb) ; +/NimbusSanL-BoldCondItal (n019064l.pfb) ; + +/URWPalladioL-Roma (p052003l.pfb) ; +/URWPalladioL-Ital (p052023l.pfb) ; +/URWPalladioL-Bold (p052004l.pfb) ; +/URWPalladioL-BoldItal (p052024l.pfb) ; + +/CenturySchL-Roma (c059013l.pfb) ; +/CenturySchL-Ital (c059033l.pfb) ; +/CenturySchL-Bold (c059016l.pfb) ; +/CenturySchL-BoldItal (c059036l.pfb) ; + +/NimbusRomNo9L-Regu (n021003l.pfb) ; +/NimbusRomNo9L-ReguItal (n021023l.pfb) ; +/NimbusRomNo9L-Medi (n021004l.pfb) ; +/NimbusRomNo9L-MediItal (n021024l.pfb) ; + +/StandardSymL (s050000l.pfb) ; + +/URWChanceryL-MediItal (z003034l.pfb) ; + +/Dingbats (d050000l.pfb) ; + +% Aliases + +/Bookman-Demi /URWBookmanL-DemiBold ; +/Bookman-DemiItalic /URWBookmanL-DemiBoldItal ; +/Bookman-Light /URWBookmanL-Ligh ; +/Bookman-LightItalic /URWBookmanL-LighItal ; + +/Courier /NimbusMonL-Regu ; +/Courier-Oblique /NimbusMonL-ReguObli ; +/Courier-Bold /NimbusMonL-Bold ; +/Courier-BoldOblique /NimbusMonL-BoldObli ; + +/AvantGarde-Book /URWGothicL-Book ; +/AvantGarde-BookOblique /URWGothicL-BookObli ; +/AvantGarde-Demi /URWGothicL-Demi ; +/AvantGarde-DemiOblique /URWGothicL-DemiObli ; + +/Helvetica /NimbusSanL-Regu ; +/Helvetica-Oblique /NimbusSanL-ReguItal ; +/Helvetica-Bold /NimbusSanL-Bold ; +/Helvetica-BoldOblique /NimbusSanL-BoldItal ; + +/Helvetica-Narrow /NimbusSanL-ReguCond ; +/Helvetica-Narrow-Oblique /NimbusSanL-ReguCondItal ; +/Helvetica-Narrow-Bold /NimbusSanL-BoldCond ; +/Helvetica-Narrow-BoldOblique /NimbusSanL-BoldCondItal ; + +/Palatino-Roman /URWPalladioL-Roma ; +/Palatino-Italic /URWPalladioL-Ital ; +/Palatino-Bold /URWPalladioL-Bold ; +/Palatino-BoldItalic /URWPalladioL-BoldItal ; + +/NewCenturySchlbk-Roman /CenturySchL-Roma ; +/NewCenturySchlbk-Italic /CenturySchL-Ital ; +/NewCenturySchlbk-Bold /CenturySchL-Bold ; +/NewCenturySchlbk-BoldItalic /CenturySchL-BoldItal ; + +/Times-Roman /NimbusRomNo9L-Regu ; +/Times-Italic /NimbusRomNo9L-ReguItal ; +/Times-Bold /NimbusRomNo9L-Medi ; +/Times-BoldItalic /NimbusRomNo9L-MediItal ; + +/Symbol /StandardSymL ; + +/ZapfChancery-MediumItalic /URWChanceryL-MediItal ; + +/ZapfDingbats /Dingbats ; + +% +% +% Type 1 fonts contributed to the X11R5 distribution. +% + +% The following notice accompanied the Charter fonts. +% +% (c) Copyright 1989-1992, Bitstream Inc., Cambridge, MA. +% +% You are hereby granted permission under all Bitstream propriety rights +% to use, copy, modify, sublicense, sell, and redistribute the 4 Bitstream +% Charter (r) Type 1 outline fonts and the 4 Courier Type 1 outline fonts +% for any purpose and without restriction; provided, that this notice is +% left intact on all copies of such fonts and that Bitstream's trademark +% is acknowledged as shown below on all unmodified copies of the 4 Charter +% Type 1 fonts. +% +% BITSTREAM CHARTER is a registered trademark of Bitstream Inc. + +/CharterBT-Roman (bchr.pfa) ; +/CharterBT-Italic (bchri.pfa) ; +/CharterBT-Bold (bchb.pfa) ; +/CharterBT-BoldItalic (bchbi.pfa) ; + +% Aliases + +/Charter-Roman /CharterBT-Roman ; +/Charter-Italic /CharterBT-Italic ; +/Charter-Bold /CharterBT-Bold ; +/Charter-BoldItalic /CharterBT-BoldItalic ; + +% The following notice accompanied the Utopia font: +% +% Permission to use, reproduce, display and distribute the listed +% typefaces is hereby granted, provided that the Adobe Copyright notice +% appears in all whole and partial copies of the software and that the +% following trademark symbol and attribution appear in all unmodified +% copies of the software: +% +% Copyright (c) 1989 Adobe Systems Incorporated +% Utopia (R) +% Utopia is a registered trademark of Adobe Systems Incorporated +% +% The Adobe typefaces (Type 1 font program, bitmaps and Adobe Font +% Metric files) donated are: +% +% Utopia Regular +% Utopia Italic +% Utopia Bold +% Utopia Bold Italic + +/Utopia-Regular (putr.pfa) ; +/Utopia-Italic (putri.pfa) ; +/Utopia-Bold (putb.pfa) ; +/Utopia-BoldItalic (putbi.pfa) ; + +% +% +% Fonts contributed by URW GmbH for distribution under the GNU License. +% The following notice accompanied these fonts: +% +% U004006T URW Grotesk 2031 Bold PostScript Type 1 Font Program +% U003043T URW Antiqua 2051 Regular Condensed PostScript Type 1 Font Program +% +% Copyright (c) 1992 URW GmbH, Hamburg, Germany +% +% This program is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 2 of the License, or +% (at your option) later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; wihtout even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +% See the GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 U.S.A. +% +% Address: +% URW GmbH +% PC Support +% Harksheider Strasse 102 +% 2000 Hamburg 65 +% Germany +% Phone: +49 40 60 60 50 (Reception) +% Phone: +49 40 60 60 52 30 (PC Support) +% Fax : +49 40 60 60 52 52 +% + +/URWAntiquaT-RegularCondensed (u003043t.gsf) ; +/URWGroteskT-Bold (u004006t.gsf) ; + +% +% +% Calligraphic Kana fonts. These are distributed under the OFL 1.1: +% +% Copyright (c) 1993, Kevin Hartig (kevin.hartig@gmail.com), +% with Reserved Font Name Calligraphic-Hiragana and Calligraphic-Katakana. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is available with an FAQ at: http://scripts.sil.org/OFL + +% Hiragana and Katakana fonts. The character names are inappropriate, +% and the encoding is probably not related to any known standard. + +/Calligraphic-Hiragana (fhirw.gsf) ; +/Calligraphic-Katakana (fkarw.gsf) ; + +% +% +% Public-domain fonts. These have no copyright, and are of unknown quality. + +% Cyrillic fonts. The character names are inappropriate, +% and the encoding is probably not related to any known standard. + +/Shareware-Cyrillic-Regular (fcyr.gsf) ; +/Shareware-Cyrillic-Italic (fcyri.gsf) ; + +% Aliases +/Cyrillic /Cyrillic-Regular ; +/Cyrillic-Regular /Shareware-Cyrillic-Regular ; +/Cyrillic-Italic /Shareware-Cyrillic-Italic ; + +% +% +% Fonts converted from Hershey outlines. These are constructed and +% maintained manually. These are also in the public domain. +% +% The suggested UniqueID's and filenames are constructed differently for +% these than for the ones above, because of the strange way that the Hershey +% fonts were constructed. The scheme for these looks like: +% +% 42TTXY0 +% +% TT = typeface, X = ``class'', Y = variation +% +% The typeface names and numbers are listed in fonts.mak. +% +% class: +% 0 = normal = r +% 1 = simplex = s +% 2 = complex = c +% 3 = triplex = t +% 4 = duplex = d +% +% variation: +% 0 = normal (omitted) +% 1 = oblique = o +% 2 = italic = i +% 3 = bold = b +% 4 = bold oblique = bo +% 5 = bold italic = bi +% + +% Fonts created by Thomas Wolff , by adding +% accents, accented characters, and various other non-alphabetics +% to the original Hershey fonts. These are "freeware", not to be sold. + +/Hershey-Gothic-English (hrger.pfa) ; % 5066533 +/Hershey-Gothic-German (hrgrr.pfa) ; +/Hershey-Gothic-Italian (hritr.pfa) ; + +/Hershey-Plain-Duplex (hrpld.pfa) ; +/Hershey-Plain-Duplex-Italic (hrpldi.pfa) ; +/Hershey-Plain-Triplex (hrplt.pfa) ; +/Hershey-Plain-Triplex-Italic (hrplti.pfa) ; + +/Hershey-Script-Complex (hrscc.pfa) ; +/Hershey-Script-Simplex (hrscs.pfa) ; % 5066541 + +% Fonts created algorithmically from the above. + +/Hershey-Gothic-English-Bold (hrgerb.gsf) ; % 5066542 +/Hershey-Gothic-English-Oblique (hrgero.gsf) ; +/Hershey-Gothic-English-SemiBold (hrgerd.gsf) ; +/Hershey-Gothic-German-Bold (hrgrrb.gsf) ; +/Hershey-Gothic-German-Oblique (hrgrro.gsf) ; +/Hershey-Gothic-Italian-Bold (hritrb.gsf) ; +/Hershey-Gothic-Italian-Oblique (hritro.gsf) ; + +/Hershey-Plain-Duplex-Bold (hrpldb.gsf) ; +/Hershey-Plain-Duplex-Bold-Italic (hrpldbi.gsf) ; +/Hershey-Plain-Triplex-Bold (hrpltb.gsf) ; +/Hershey-Plain-Triplex-Bold-Italic (hrpltbi.gsf) ; + +/Hershey-Script-Complex-Bold (hrsccb.gsf) ; +/Hershey-Script-Complex-Oblique (hrscco.gsf) ; +/Hershey-Script-Simplex-Bold (hrscsb.gsf) ; +/Hershey-Script-Simplex-Oblique (hrscso.gsf) ; % 5066556 + +% Fonts consisting only of characters from the original Hershey +% distribution. These are Type 3 fonts. + +/Hershey-Greek-Complex (hrgkc.gsf) ; % 5066557 +/Hershey-Greek-Simplex (hrgks.gsf) ; + +/Hershey-Plain (hrplr.gsf) ; +/Hershey-Plain-Simplex (hrpls.gsf) ; % 5066560 + +% Fonts created algorithmically from the above. + +/Hershey-Plain-Bold (hrplrb.gsf) ; % 5066561 +/Hershey-Plain-Bold-Oblique (hrplrbo.gsf) ; +/Hershey-Plain-Oblique (hrplro.gsf) ; +/Hershey-Plain-Simplex-Bold (hrplsb.gsf) ; +/Hershey-Plain-Simplex-Bold-Oblique (hrplsbo.gsf) ; +/Hershey-Plain-Simplex-Oblique (hrplso.gsf) ; % 5066566 + +% This font, and only this font among the Hershey fonts, uses +% the SymbolEncoding. + +/Hershey-Symbol (hrsyr.gsf) ; % 5066567 + +/Arial /ArialMT ; +/Arial,Bold /Arial-BoldMT ; +/Arial,Italic /Arial-ItalicMT ; +/Arial,BoldItalic /Arial-BoldItalicMT ; + +/TimesNewRoman /TimesNewRomanPSMT ; +/TimesNewRoman,Bold /TimesNewRomanPS-BoldMT ; +/TimesNewRoman,Italic /TimesNewRomanPS-ItalicMT ; +/TimesNewRoman,BoldItalic /TimesNewRomanPS-BoldItalicMT ; + diff --git a/gs/Resource/Init/cidfmap b/gs/Resource/Init/cidfmap new file mode 100644 index 000000000..491bee8f6 --- /dev/null +++ b/gs/Resource/Init/cidfmap @@ -0,0 +1,28 @@ +%! +% $Id$ +% This is a sample map file for CIDFont category. + +% +% The map is a set of records, which must use one of the two formats : +% +% 1. A substutution of a CIF font with another CID font : +% +% /substituted /original ; +% +% Where 'substituted' is a name being used in a document, +% 'original' is a name of an available resource. +% +% 2. A substutution of a CIF font with a True Type font : +% +% /substituted << /FileType /TrueType /Path (path) /SunfontID 1 /CSI [(ordering) supplement] >> ; +% +% Where 'substituted' is a name being used in a document, +% 'path' is a path to a True Type font file, +% 'ordering' is a value of Ordering required for CIDSystemInfo dictionary, +% 'supplement' is a value of Supplement required for CIDSystemInfo dictionary. +% +% Examples : +% +% /ShinGo-Bold /HeiseiKakuGo-W5 ; +% /Ryumin-Medium << /FileType /TrueType /Path (H:/AuxFiles/Fonts/BATANG.TTC) /SubfontID 3 /CSI [(Japan1) 2] >> ; +% diff --git a/gs/Resource/Init/gs_agl.ps b/gs/Resource/Init/gs_agl.ps new file mode 100644 index 000000000..c2f6268af --- /dev/null +++ b/gs/Resource/Init/gs_agl.ps @@ -0,0 +1,1069 @@ +% Copyright (C) 2000 Aladdin Enterprises. All rights reserved. +% +% This software is provided AS-IS with no warranty, either express or +% implied. +% +% This software is distributed under license and may not be copied, +% modified or distributed except as expressly authorized under the terms +% of the license contained in the file LICENSE in this distribution. +% +% For more information about licensing, please refer to +% http://www.ghostscript.com/licensing/. For information on +% commercial licensing, go to http://www.artifex.com/licensing/ or +% contact Artifex Software, Inc., 101 Lucas Valley Road #110, +% San Rafael, CA 94903, U.S.A., +1(415)492-9861. + +% $Id$ + +% This file was derived from the Adobe Glyph List, version 1.2, dated +% 22 Oct 1998, at +% http://partners.adobe.com/asn/developer/typeforum/glyphlist.txt +% That file does not contain any copyright notice. + +% The AdobeGlyphList dictionary maps glyph names to Unicode values. +% Nearly all names map to a single value; however, a few names map to +% multiple values. See the above file, and also +% http://www.adobe.com/devnet/opentype/archives/glyph.html +% for more details. + +/AdobeGlyphList 1500 dict +dup /A 16#0041 put +dup /AE 16#00C6 put +dup /AEacute 16#01FC put +dup /AEsmall 16#F7E6 put +dup /Aacute 16#00C1 put +dup /Aacutesmall 16#F7E1 put +dup /Abreve 16#0102 put +dup /Acircumflex 16#00C2 put +dup /Acircumflexsmall 16#F7E2 put +dup /Acute 16#F6C9 put +dup /Acutesmall 16#F7B4 put +dup /Adieresis 16#00C4 put +dup /Adieresissmall 16#F7E4 put +dup /Agrave 16#00C0 put +dup /Agravesmall 16#F7E0 put +dup /Alpha 16#0391 put +dup /Alphatonos 16#0386 put +dup /Amacron 16#0100 put +dup /Aogonek 16#0104 put +dup /Aring 16#00C5 put +dup /Aringacute 16#01FA put +dup /Aringsmall 16#F7E5 put +dup /Asmall 16#F761 put +dup /Atilde 16#00C3 put +dup /Atildesmall 16#F7E3 put +dup /B 16#0042 put +dup /Beta 16#0392 put +dup /Brevesmall 16#F6F4 put +dup /Bsmall 16#F762 put +dup /C 16#0043 put +dup /Cacute 16#0106 put +dup /Caron 16#F6CA put +dup /Caronsmall 16#F6F5 put +dup /Ccaron 16#010C put +dup /Ccedilla 16#00C7 put +dup /Ccedillasmall 16#F7E7 put +dup /Ccircumflex 16#0108 put +dup /Cdotaccent 16#010A put +dup /Cedillasmall 16#F7B8 put +dup /Chi 16#03A7 put +dup /Circumflexsmall 16#F6F6 put +dup /Csmall 16#F763 put +dup /D 16#0044 put +dup /Dcaron 16#010E put +dup /Dcroat 16#0110 put +dup /Delta [16#2206 16#0394] put +dup /Dieresis 16#F6CB put +dup /DieresisAcute 16#F6CC put +dup /DieresisGrave 16#F6CD put +dup /Dieresissmall 16#F7A8 put +dup /Dotaccentsmall 16#F6F7 put +dup /Dsmall 16#F764 put +dup /E 16#0045 put +dup /Eacute 16#00C9 put +dup /Eacutesmall 16#F7E9 put +dup /Ebreve 16#0114 put +dup /Ecaron 16#011A put +dup /Ecircumflex 16#00CA put +dup /Ecircumflexsmall 16#F7EA put +dup /Edieresis 16#00CB put +dup /Edieresissmall 16#F7EB put +dup /Edotaccent 16#0116 put +dup /Egrave 16#00C8 put +dup /Egravesmall 16#F7E8 put +dup /Emacron 16#0112 put +dup /Eng 16#014A put +dup /Eogonek 16#0118 put +dup /Epsilon 16#0395 put +dup /Epsilontonos 16#0388 put +dup /Esmall 16#F765 put +dup /Eta 16#0397 put +dup /Etatonos 16#0389 put +dup /Eth 16#00D0 put +dup /Ethsmall 16#F7F0 put +dup /Euro 16#20AC put +dup /F 16#0046 put +dup /Fsmall 16#F766 put +dup /G 16#0047 put +dup /Gamma 16#0393 put +dup /Gbreve 16#011E put +dup /Gcaron 16#01E6 put +dup /Gcircumflex 16#011C put +dup /Gcommaaccent 16#0122 put +dup /Gdotaccent 16#0120 put +dup /Grave 16#F6CE put +dup /Gravesmall 16#F760 put +dup /Gsmall 16#F767 put +dup /H 16#0048 put +dup /H18533 16#25CF put +dup /H18543 16#25AA put +dup /H18551 16#25AB put +dup /H22073 16#25A1 put +dup /Hbar 16#0126 put +dup /Hcircumflex 16#0124 put +dup /Hsmall 16#F768 put +dup /Hungarumlaut 16#F6CF put +dup /Hungarumlautsmall 16#F6F8 put +dup /I 16#0049 put +dup /IJ 16#0132 put +dup /Iacute 16#00CD put +dup /Iacutesmall 16#F7ED put +dup /Ibreve 16#012C put +dup /Icircumflex 16#00CE put +dup /Icircumflexsmall 16#F7EE put +dup /Idieresis 16#00CF put +dup /Idieresissmall 16#F7EF put +dup /Idotaccent 16#0130 put +dup /Ifraktur 16#2111 put +dup /Igrave 16#00CC put +dup /Igravesmall 16#F7EC put +dup /Imacron 16#012A put +dup /Iogonek 16#012E put +dup /Iota 16#0399 put +dup /Iotadieresis 16#03AA put +dup /Iotatonos 16#038A put +dup /Ismall 16#F769 put +dup /Itilde 16#0128 put +dup /J 16#004A put +dup /Jcircumflex 16#0134 put +dup /Jsmall 16#F76A put +dup /K 16#004B put +dup /Kappa 16#039A put +dup /Kcommaaccent 16#0136 put +dup /Ksmall 16#F76B put +dup /L 16#004C put +dup /LL 16#F6BF put +dup /Lacute 16#0139 put +dup /Lambda 16#039B put +dup /Lcaron 16#013D put +dup /Lcommaaccent 16#013B put +dup /Ldot 16#013F put +dup /Lslash 16#0141 put +dup /Lslashsmall 16#F6F9 put +dup /Lsmall 16#F76C put +dup /M 16#004D put +dup /Macron 16#F6D0 put +dup /Macronsmall 16#F7AF put +dup /Msmall 16#F76D put +dup /Mu 16#039C put +dup /N 16#004E put +dup /Nacute 16#0143 put +dup /Ncaron 16#0147 put +dup /Ncommaaccent 16#0145 put +dup /Nsmall 16#F76E put +dup /Ntilde 16#00D1 put +dup /Ntildesmall 16#F7F1 put +dup /Nu 16#039D put +dup /O 16#004F put +dup /OE 16#0152 put +dup /OEsmall 16#F6FA put +dup /Oacute 16#00D3 put +dup /Oacutesmall 16#F7F3 put +dup /Obreve 16#014E put +dup /Ocircumflex 16#00D4 put +dup /Ocircumflexsmall 16#F7F4 put +dup /Odieresis 16#00D6 put +dup /Odieresissmall 16#F7F6 put +dup /Ogoneksmall 16#F6FB put +dup /Ograve 16#00D2 put +dup /Ogravesmall 16#F7F2 put +dup /Ohorn 16#01A0 put +dup /Ohungarumlaut 16#0150 put +dup /Omacron 16#014C put +dup /Omega [16#2126 16#03A9] put +dup /Omegatonos 16#038F put +dup /Omicron 16#039F put +dup /Omicrontonos 16#038C put +dup /Oslash 16#00D8 put +dup /Oslashacute 16#01FE put +dup /Oslashsmall 16#F7F8 put +dup /Osmall 16#F76F put +dup /Otilde 16#00D5 put +dup /Otildesmall 16#F7F5 put +dup /P 16#0050 put +dup /Phi 16#03A6 put +dup /Pi 16#03A0 put +dup /Psi 16#03A8 put +dup /Psmall 16#F770 put +dup /Q 16#0051 put +dup /Qsmall 16#F771 put +dup /R 16#0052 put +dup /Racute 16#0154 put +dup /Rcaron 16#0158 put +dup /Rcommaaccent 16#0156 put +dup /Rfraktur 16#211C put +dup /Rho 16#03A1 put +dup /Ringsmall 16#F6FC put +dup /Rsmall 16#F772 put +dup /S 16#0053 put +dup /SF010000 16#250C put +dup /SF020000 16#2514 put +dup /SF030000 16#2510 put +dup /SF040000 16#2518 put +dup /SF050000 16#253C put +dup /SF060000 16#252C put +dup /SF070000 16#2534 put +dup /SF080000 16#251C put +dup /SF090000 16#2524 put +dup /SF100000 16#2500 put +dup /SF110000 16#2502 put +dup /SF190000 16#2561 put +dup /SF200000 16#2562 put +dup /SF210000 16#2556 put +dup /SF220000 16#2555 put +dup /SF230000 16#2563 put +dup /SF240000 16#2551 put +dup /SF250000 16#2557 put +dup /SF260000 16#255D put +dup /SF270000 16#255C put +dup /SF280000 16#255B put +dup /SF360000 16#255E put +dup /SF370000 16#255F put +dup /SF380000 16#255A put +dup /SF390000 16#2554 put +dup /SF400000 16#2569 put +dup /SF410000 16#2566 put +dup /SF420000 16#2560 put +dup /SF430000 16#2550 put +dup /SF440000 16#256C put +dup /SF450000 16#2567 put +dup /SF460000 16#2568 put +dup /SF470000 16#2564 put +dup /SF480000 16#2565 put +dup /SF490000 16#2559 put +dup /SF500000 16#2558 put +dup /SF510000 16#2552 put +dup /SF520000 16#2553 put +dup /SF530000 16#256B put +dup /SF540000 16#256A put +dup /Sacute 16#015A put +dup /Scaron 16#0160 put +dup /Scaronsmall 16#F6FD put +dup /Scedilla [16#015E 16#F6C1] put +dup /Scircumflex 16#015C put +dup /Scommaaccent 16#0218 put +dup /Sigma 16#03A3 put +dup /Ssmall 16#F773 put +dup /T 16#0054 put +dup /Tau 16#03A4 put +dup /Tbar 16#0166 put +dup /Tcaron 16#0164 put +dup /Tcommaaccent [16#0162 16#021A] put +dup /Theta 16#0398 put +dup /Thorn 16#00DE put +dup /Thornsmall 16#F7FE put +dup /Tildesmall 16#F6FE put +dup /Tsmall 16#F774 put +dup /U 16#0055 put +dup /Uacute 16#00DA put +dup /Uacutesmall 16#F7FA put +dup /Ubreve 16#016C put +dup /Ucircumflex 16#00DB put +dup /Ucircumflexsmall 16#F7FB put +dup /Udieresis 16#00DC put +dup /Udieresissmall 16#F7FC put +dup /Ugrave 16#00D9 put +dup /Ugravesmall 16#F7F9 put +dup /Uhorn 16#01AF put +dup /Uhungarumlaut 16#0170 put +dup /Umacron 16#016A put +dup /Uogonek 16#0172 put +dup /Upsilon 16#03A5 put +dup /Upsilon1 16#03D2 put +dup /Upsilondieresis 16#03AB put +dup /Upsilontonos 16#038E put +dup /Uring 16#016E put +dup /Usmall 16#F775 put +dup /Utilde 16#0168 put +dup /V 16#0056 put +dup /Vsmall 16#F776 put +dup /W 16#0057 put +dup /Wacute 16#1E82 put +dup /Wcircumflex 16#0174 put +dup /Wdieresis 16#1E84 put +dup /Wgrave 16#1E80 put +dup /Wsmall 16#F777 put +dup /X 16#0058 put +dup /Xi 16#039E put +dup /Xsmall 16#F778 put +dup /Y 16#0059 put +dup /Yacute 16#00DD put +dup /Yacutesmall 16#F7FD put +dup /Ycircumflex 16#0176 put +dup /Ydieresis 16#0178 put +dup /Ydieresissmall 16#F7FF put +dup /Ygrave 16#1EF2 put +dup /Ysmall 16#F779 put +dup /Z 16#005A put +dup /Zacute 16#0179 put +dup /Zcaron 16#017D put +dup /Zcaronsmall 16#F6FF put +dup /Zdotaccent 16#017B put +dup /Zeta 16#0396 put +dup /Zsmall 16#F77A put +dup /a 16#0061 put +dup /aacute 16#00E1 put +dup /abreve 16#0103 put +dup /acircumflex 16#00E2 put +dup /acute 16#00B4 put +dup /acutecomb 16#0301 put +dup /adieresis 16#00E4 put +dup /ae 16#00E6 put +dup /aeacute 16#01FD put +dup /afii00208 16#2015 put +dup /afii10017 16#0410 put +dup /afii10018 16#0411 put +dup /afii10019 16#0412 put +dup /afii10020 16#0413 put +dup /afii10021 16#0414 put +dup /afii10022 16#0415 put +dup /afii10023 16#0401 put +dup /afii10024 16#0416 put +dup /afii10025 16#0417 put +dup /afii10026 16#0418 put +dup /afii10027 16#0419 put +dup /afii10028 16#041A put +dup /afii10029 16#041B put +dup /afii10030 16#041C put +dup /afii10031 16#041D put +dup /afii10032 16#041E put +dup /afii10033 16#041F put +dup /afii10034 16#0420 put +dup /afii10035 16#0421 put +dup /afii10036 16#0422 put +dup /afii10037 16#0423 put +dup /afii10038 16#0424 put +dup /afii10039 16#0425 put +dup /afii10040 16#0426 put +dup /afii10041 16#0427 put +dup /afii10042 16#0428 put +dup /afii10043 16#0429 put +dup /afii10044 16#042A put +dup /afii10045 16#042B put +dup /afii10046 16#042C put +dup /afii10047 16#042D put +dup /afii10048 16#042E put +dup /afii10049 16#042F put +dup /afii10050 16#0490 put +dup /afii10051 16#0402 put +dup /afii10052 16#0403 put +dup /afii10053 16#0404 put +dup /afii10054 16#0405 put +dup /afii10055 16#0406 put +dup /afii10056 16#0407 put +dup /afii10057 16#0408 put +dup /afii10058 16#0409 put +dup /afii10059 16#040A put +dup /afii10060 16#040B put +dup /afii10061 16#040C put +dup /afii10062 16#040E put +dup /afii10063 16#F6C4 put +dup /afii10064 16#F6C5 put +dup /afii10065 16#0430 put +dup /afii10066 16#0431 put +dup /afii10067 16#0432 put +dup /afii10068 16#0433 put +dup /afii10069 16#0434 put +dup /afii10070 16#0435 put +dup /afii10071 16#0451 put +dup /afii10072 16#0436 put +dup /afii10073 16#0437 put +dup /afii10074 16#0438 put +dup /afii10075 16#0439 put +dup /afii10076 16#043A put +dup /afii10077 16#043B put +dup /afii10078 16#043C put +dup /afii10079 16#043D put +dup /afii10080 16#043E put +dup /afii10081 16#043F put +dup /afii10082 16#0440 put +dup /afii10083 16#0441 put +dup /afii10084 16#0442 put +dup /afii10085 16#0443 put +dup /afii10086 16#0444 put +dup /afii10087 16#0445 put +dup /afii10088 16#0446 put +dup /afii10089 16#0447 put +dup /afii10090 16#0448 put +dup /afii10091 16#0449 put +dup /afii10092 16#044A put +dup /afii10093 16#044B put +dup /afii10094 16#044C put +dup /afii10095 16#044D put +dup /afii10096 16#044E put +dup /afii10097 16#044F put +dup /afii10098 16#0491 put +dup /afii10099 16#0452 put +dup /afii10100 16#0453 put +dup /afii10101 16#0454 put +dup /afii10102 16#0455 put +dup /afii10103 16#0456 put +dup /afii10104 16#0457 put +dup /afii10105 16#0458 put +dup /afii10106 16#0459 put +dup /afii10107 16#045A put +dup /afii10108 16#045B put +dup /afii10109 16#045C put +dup /afii10110 16#045E put +dup /afii10145 16#040F put +dup /afii10146 16#0462 put +dup /afii10147 16#0472 put +dup /afii10148 16#0474 put +dup /afii10192 16#F6C6 put +dup /afii10193 16#045F put +dup /afii10194 16#0463 put +dup /afii10195 16#0473 put +dup /afii10196 16#0475 put +dup /afii10831 16#F6C7 put +dup /afii10832 16#F6C8 put +dup /afii10846 16#04D9 put +dup /afii299 16#200E put +dup /afii300 16#200F put +dup /afii301 16#200D put +dup /afii57381 16#066A put +dup /afii57388 16#060C put +dup /afii57392 16#0660 put +dup /afii57393 16#0661 put +dup /afii57394 16#0662 put +dup /afii57395 16#0663 put +dup /afii57396 16#0664 put +dup /afii57397 16#0665 put +dup /afii57398 16#0666 put +dup /afii57399 16#0667 put +dup /afii57400 16#0668 put +dup /afii57401 16#0669 put +dup /afii57403 16#061B put +dup /afii57407 16#061F put +dup /afii57409 16#0621 put +dup /afii57410 16#0622 put +dup /afii57411 16#0623 put +dup /afii57412 16#0624 put +dup /afii57413 16#0625 put +dup /afii57414 16#0626 put +dup /afii57415 16#0627 put +dup /afii57416 16#0628 put +dup /afii57417 16#0629 put +dup /afii57418 16#062A put +dup /afii57419 16#062B put +dup /afii57420 16#062C put +dup /afii57421 16#062D put +dup /afii57422 16#062E put +dup /afii57423 16#062F put +dup /afii57424 16#0630 put +dup /afii57425 16#0631 put +dup /afii57426 16#0632 put +dup /afii57427 16#0633 put +dup /afii57428 16#0634 put +dup /afii57429 16#0635 put +dup /afii57430 16#0636 put +dup /afii57431 16#0637 put +dup /afii57432 16#0638 put +dup /afii57433 16#0639 put +dup /afii57434 16#063A put +dup /afii57440 16#0640 put +dup /afii57441 16#0641 put +dup /afii57442 16#0642 put +dup /afii57443 16#0643 put +dup /afii57444 16#0644 put +dup /afii57445 16#0645 put +dup /afii57446 16#0646 put +dup /afii57448 16#0648 put +dup /afii57449 16#0649 put +dup /afii57450 16#064A put +dup /afii57451 16#064B put +dup /afii57452 16#064C put +dup /afii57453 16#064D put +dup /afii57454 16#064E put +dup /afii57455 16#064F put +dup /afii57456 16#0650 put +dup /afii57457 16#0651 put +dup /afii57458 16#0652 put +dup /afii57470 16#0647 put +dup /afii57505 16#06A4 put +dup /afii57506 16#067E put +dup /afii57507 16#0686 put +dup /afii57508 16#0698 put +dup /afii57509 16#06AF put +dup /afii57511 16#0679 put +dup /afii57512 16#0688 put +dup /afii57513 16#0691 put +dup /afii57514 16#06BA put +dup /afii57519 16#06D2 put +dup /afii57534 16#06D5 put +dup /afii57636 16#20AA put +dup /afii57645 16#05BE put +dup /afii57658 16#05C3 put +dup /afii57664 16#05D0 put +dup /afii57665 16#05D1 put +dup /afii57666 16#05D2 put +dup /afii57667 16#05D3 put +dup /afii57668 16#05D4 put +dup /afii57669 16#05D5 put +dup /afii57670 16#05D6 put +dup /afii57671 16#05D7 put +dup /afii57672 16#05D8 put +dup /afii57673 16#05D9 put +dup /afii57674 16#05DA put +dup /afii57675 16#05DB put +dup /afii57676 16#05DC put +dup /afii57677 16#05DD put +dup /afii57678 16#05DE put +dup /afii57679 16#05DF put +dup /afii57680 16#05E0 put +dup /afii57681 16#05E1 put +dup /afii57682 16#05E2 put +dup /afii57683 16#05E3 put +dup /afii57684 16#05E4 put +dup /afii57685 16#05E5 put +dup /afii57686 16#05E6 put +dup /afii57687 16#05E7 put +dup /afii57688 16#05E8 put +dup /afii57689 16#05E9 put +dup /afii57690 16#05EA put +dup /afii57694 16#FB2A put +dup /afii57695 16#FB2B put +dup /afii57700 16#FB4B put +dup /afii57705 16#FB1F put +dup /afii57716 16#05F0 put +dup /afii57717 16#05F1 put +dup /afii57718 16#05F2 put +dup /afii57723 16#FB35 put +dup /afii57793 16#05B4 put +dup /afii57794 16#05B5 put +dup /afii57795 16#05B6 put +dup /afii57796 16#05BB put +dup /afii57797 16#05B8 put +dup /afii57798 16#05B7 put +dup /afii57799 16#05B0 put +dup /afii57800 16#05B2 put +dup /afii57801 16#05B1 put +dup /afii57802 16#05B3 put +dup /afii57803 16#05C2 put +dup /afii57804 16#05C1 put +dup /afii57806 16#05B9 put +dup /afii57807 16#05BC put +dup /afii57839 16#05BD put +dup /afii57841 16#05BF put +dup /afii57842 16#05C0 put +dup /afii57929 16#02BC put +dup /afii61248 16#2105 put +dup /afii61289 16#2113 put +dup /afii61352 16#2116 put +dup /afii61573 16#202C put +dup /afii61574 16#202D put +dup /afii61575 16#202E put +dup /afii61664 16#200C put +dup /afii63167 16#066D put +dup /afii64937 16#02BD put +dup /agrave 16#00E0 put +dup /aleph 16#2135 put +dup /alpha 16#03B1 put +dup /alphatonos 16#03AC put +dup /amacron 16#0101 put +dup /ampersand 16#0026 put +dup /ampersandsmall 16#F726 put +dup /angle 16#2220 put +dup /angleleft 16#2329 put +dup /angleright 16#232A put +dup /anoteleia 16#0387 put +dup /aogonek 16#0105 put +dup /approxequal 16#2248 put +dup /aring 16#00E5 put +dup /aringacute 16#01FB put +dup /arrowboth 16#2194 put +dup /arrowdblboth 16#21D4 put +dup /arrowdbldown 16#21D3 put +dup /arrowdblleft 16#21D0 put +dup /arrowdblright 16#21D2 put +dup /arrowdblup 16#21D1 put +dup /arrowdown 16#2193 put +dup /arrowhorizex 16#F8E7 put +dup /arrowleft 16#2190 put +dup /arrowright 16#2192 put +dup /arrowup 16#2191 put +dup /arrowupdn 16#2195 put +dup /arrowupdnbse 16#21A8 put +dup /arrowvertex 16#F8E6 put +dup /asciicircum 16#005E put +dup /asciitilde 16#007E put +dup /asterisk 16#002A put +dup /asteriskmath 16#2217 put +dup /asuperior 16#F6E9 put +dup /at 16#0040 put +dup /atilde 16#00E3 put +dup /b 16#0062 put +dup /backslash 16#005C put +dup /bar 16#007C put +dup /beta 16#03B2 put +dup /block 16#2588 put +dup /braceex 16#F8F4 put +dup /braceleft 16#007B put +dup /braceleftbt 16#F8F3 put +dup /braceleftmid 16#F8F2 put +dup /bracelefttp 16#F8F1 put +dup /braceright 16#007D put +dup /bracerightbt 16#F8FE put +dup /bracerightmid 16#F8FD put +dup /bracerighttp 16#F8FC put +dup /bracketleft 16#005B put +dup /bracketleftbt 16#F8F0 put +dup /bracketleftex 16#F8EF put +dup /bracketlefttp 16#F8EE put +dup /bracketright 16#005D put +dup /bracketrightbt 16#F8FB put +dup /bracketrightex 16#F8FA put +dup /bracketrighttp 16#F8F9 put +dup /breve 16#02D8 put +dup /brokenbar 16#00A6 put +dup /bsuperior 16#F6EA put +dup /bullet 16#2022 put +dup /c 16#0063 put +dup /cacute 16#0107 put +dup /caron 16#02C7 put +dup /carriagereturn 16#21B5 put +dup /ccaron 16#010D put +dup /ccedilla 16#00E7 put +dup /ccircumflex 16#0109 put +dup /cdotaccent 16#010B put +dup /cedilla 16#00B8 put +dup /cent 16#00A2 put +dup /centinferior 16#F6DF put +dup /centoldstyle 16#F7A2 put +dup /centsuperior 16#F6E0 put +dup /chi 16#03C7 put +dup /circle 16#25CB put +dup /circlemultiply 16#2297 put +dup /circleplus 16#2295 put +dup /circumflex 16#02C6 put +dup /club 16#2663 put +dup /colon 16#003A put +dup /colonmonetary 16#20A1 put +dup /comma 16#002C put +dup /commaaccent 16#F6C3 put +dup /commainferior 16#F6E1 put +dup /commasuperior 16#F6E2 put +dup /congruent 16#2245 put +dup /copyright 16#00A9 put +dup /copyrightsans 16#F8E9 put +dup /copyrightserif 16#F6D9 put +dup /currency 16#00A4 put +dup /cyrBreve 16#F6D1 put +dup /cyrFlex 16#F6D2 put +dup /cyrbreve 16#F6D4 put +dup /cyrflex 16#F6D5 put +dup /d 16#0064 put +dup /dagger 16#2020 put +dup /daggerdbl 16#2021 put +dup /dblGrave 16#F6D3 put +dup /dblgrave 16#F6D6 put +dup /dcaron 16#010F put +dup /dcroat 16#0111 put +dup /degree 16#00B0 put +dup /delta 16#03B4 put +dup /diamond 16#2666 put +dup /dieresis 16#00A8 put +dup /dieresisacute 16#F6D7 put +dup /dieresisgrave 16#F6D8 put +dup /dieresistonos 16#0385 put +dup /divide 16#00F7 put +dup /dkshade 16#2593 put +dup /dnblock 16#2584 put +dup /dollar 16#0024 put +dup /dollarinferior 16#F6E3 put +dup /dollaroldstyle 16#F724 put +dup /dollarsuperior 16#F6E4 put +dup /dong 16#20AB put +dup /dotaccent 16#02D9 put +dup /dotbelowcomb 16#0323 put +dup /dotlessi 16#0131 put +dup /dotlessj 16#F6BE put +dup /dotmath 16#22C5 put +dup /dsuperior 16#F6EB put +dup /e 16#0065 put +dup /eacute 16#00E9 put +dup /ebreve 16#0115 put +dup /ecaron 16#011B put +dup /ecircumflex 16#00EA put +dup /edieresis 16#00EB put +dup /edotaccent 16#0117 put +dup /egrave 16#00E8 put +dup /eight 16#0038 put +dup /eightinferior 16#2088 put +dup /eightoldstyle 16#F738 put +dup /eightsuperior 16#2078 put +dup /element 16#2208 put +dup /ellipsis 16#2026 put +dup /emacron 16#0113 put +dup /emdash 16#2014 put +dup /emptyset 16#2205 put +dup /endash 16#2013 put +dup /eng 16#014B put +dup /eogonek 16#0119 put +dup /epsilon 16#03B5 put +dup /epsilontonos 16#03AD put +dup /equal 16#003D put +dup /equivalence 16#2261 put +dup /estimated 16#212E put +dup /esuperior 16#F6EC put +dup /eta 16#03B7 put +dup /etatonos 16#03AE put +dup /eth 16#00F0 put +dup /exclam 16#0021 put +dup /exclamdbl 16#203C put +dup /exclamdown 16#00A1 put +dup /exclamdownsmall 16#F7A1 put +dup /exclamsmall 16#F721 put +dup /existential 16#2203 put +dup /f 16#0066 put +dup /female 16#2640 put +dup /ff 16#FB00 put +dup /ffi 16#FB03 put +dup /ffl 16#FB04 put +dup /fi 16#FB01 put +dup /figuredash 16#2012 put +dup /filledbox 16#25A0 put +dup /filledrect 16#25AC put +dup /five 16#0035 put +dup /fiveeighths 16#215D put +dup /fiveinferior 16#2085 put +dup /fiveoldstyle 16#F735 put +dup /fivesuperior 16#2075 put +dup /fl 16#FB02 put +dup /florin 16#0192 put +dup /four 16#0034 put +dup /fourinferior 16#2084 put +dup /fouroldstyle 16#F734 put +dup /foursuperior 16#2074 put +dup /fraction [16#2044 16#2215] put +dup /franc 16#20A3 put +dup /g 16#0067 put +dup /gamma 16#03B3 put +dup /gbreve 16#011F put +dup /gcaron 16#01E7 put +dup /gcircumflex 16#011D put +dup /gcommaaccent 16#0123 put +dup /gdotaccent 16#0121 put +dup /germandbls 16#00DF put +dup /gradient 16#2207 put +dup /grave 16#0060 put +dup /gravecomb 16#0300 put +dup /greater 16#003E put +dup /greaterequal 16#2265 put +dup /guillemotleft 16#00AB put +dup /guillemotright 16#00BB put +dup /guilsinglleft 16#2039 put +dup /guilsinglright 16#203A put +dup /h 16#0068 put +dup /hbar 16#0127 put +dup /hcircumflex 16#0125 put +dup /heart 16#2665 put +dup /hookabovecomb 16#0309 put +dup /house 16#2302 put +dup /hungarumlaut 16#02DD put +dup /hyphen [16#002D 16#00AD] put +dup /hypheninferior 16#F6E5 put +dup /hyphensuperior 16#F6E6 put +dup /i 16#0069 put +dup /iacute 16#00ED put +dup /ibreve 16#012D put +dup /icircumflex 16#00EE put +dup /idieresis 16#00EF put +dup /igrave 16#00EC put +dup /ij 16#0133 put +dup /imacron 16#012B put +dup /infinity 16#221E put +dup /integral 16#222B put +dup /integralbt 16#2321 put +dup /integralex 16#F8F5 put +dup /integraltp 16#2320 put +dup /intersection 16#2229 put +dup /invbullet 16#25D8 put +dup /invcircle 16#25D9 put +dup /invsmileface 16#263B put +dup /iogonek 16#012F put +dup /iota 16#03B9 put +dup /iotadieresis 16#03CA put +dup /iotadieresistonos 16#0390 put +dup /iotatonos 16#03AF put +dup /isuperior 16#F6ED put +dup /itilde 16#0129 put +dup /j 16#006A put +dup /jcircumflex 16#0135 put +dup /k 16#006B put +dup /kappa 16#03BA put +dup /kcommaaccent 16#0137 put +dup /kgreenlandic 16#0138 put +dup /l 16#006C put +dup /lacute 16#013A put +dup /lambda 16#03BB put +dup /lcaron 16#013E put +dup /lcommaaccent 16#013C put +dup /ldot 16#0140 put +dup /less 16#003C put +dup /lessequal 16#2264 put +dup /lfblock 16#258C put +dup /lira 16#20A4 put +dup /ll 16#F6C0 put +dup /logicaland 16#2227 put +dup /logicalnot 16#00AC put +dup /logicalor 16#2228 put +dup /longs 16#017F put +dup /lozenge 16#25CA put +dup /lslash 16#0142 put +dup /lsuperior 16#F6EE put +dup /ltshade 16#2591 put +dup /m 16#006D put +dup /macron [16#00AF 16#02C9] put +dup /male 16#2642 put +dup /minus 16#2212 put +dup /minute 16#2032 put +dup /msuperior 16#F6EF put +dup /mu [16#00B5 16#03BC] put +dup /multiply 16#00D7 put +dup /musicalnote 16#266A put +dup /musicalnotedbl 16#266B put +dup /n 16#006E put +dup /nacute 16#0144 put +dup /napostrophe 16#0149 put +dup /ncaron 16#0148 put +dup /ncommaaccent 16#0146 put +dup /nine 16#0039 put +dup /nineinferior 16#2089 put +dup /nineoldstyle 16#F739 put +dup /ninesuperior 16#2079 put +dup /notelement 16#2209 put +dup /notequal 16#2260 put +dup /notsubset 16#2284 put +dup /nsuperior 16#207F put +dup /ntilde 16#00F1 put +dup /nu 16#03BD put +dup /numbersign 16#0023 put +dup /o 16#006F put +dup /oacute 16#00F3 put +dup /obreve 16#014F put +dup /ocircumflex 16#00F4 put +dup /odieresis 16#00F6 put +dup /oe 16#0153 put +dup /ogonek 16#02DB put +dup /ograve 16#00F2 put +dup /ohorn 16#01A1 put +dup /ohungarumlaut 16#0151 put +dup /omacron 16#014D put +dup /omega 16#03C9 put +dup /omega1 16#03D6 put +dup /omegatonos 16#03CE put +dup /omicron 16#03BF put +dup /omicrontonos 16#03CC put +dup /one 16#0031 put +dup /onedotenleader 16#2024 put +dup /oneeighth 16#215B put +dup /onefitted 16#F6DC put +dup /onehalf 16#00BD put +dup /oneinferior 16#2081 put +dup /oneoldstyle 16#F731 put +dup /onequarter 16#00BC put +dup /onesuperior 16#00B9 put +dup /onethird 16#2153 put +dup /openbullet 16#25E6 put +dup /ordfeminine 16#00AA put +dup /ordmasculine 16#00BA put +dup /orthogonal 16#221F put +dup /oslash 16#00F8 put +dup /oslashacute 16#01FF put +dup /osuperior 16#F6F0 put +dup /otilde 16#00F5 put +dup /p 16#0070 put +dup /paragraph 16#00B6 put +dup /parenleft 16#0028 put +dup /parenleftbt 16#F8ED put +dup /parenleftex 16#F8EC put +dup /parenleftinferior 16#208D put +dup /parenleftsuperior 16#207D put +dup /parenlefttp 16#F8EB put +dup /parenright 16#0029 put +dup /parenrightbt 16#F8F8 put +dup /parenrightex 16#F8F7 put +dup /parenrightinferior 16#208E put +dup /parenrightsuperior 16#207E put +dup /parenrighttp 16#F8F6 put +dup /partialdiff 16#2202 put +dup /percent 16#0025 put +dup /period 16#002E put +dup /periodcentered [16#00B7 16#2219] put +dup /periodinferior 16#F6E7 put +dup /periodsuperior 16#F6E8 put +dup /perpendicular 16#22A5 put +dup /perthousand 16#2030 put +dup /peseta 16#20A7 put +dup /phi 16#03C6 put +dup /phi1 16#03D5 put +dup /pi 16#03C0 put +dup /plus 16#002B put +dup /plusminus 16#00B1 put +dup /prescription 16#211E put +dup /product 16#220F put +dup /propersubset 16#2282 put +dup /propersuperset 16#2283 put +dup /proportional 16#221D put +dup /psi 16#03C8 put +dup /q 16#0071 put +dup /question 16#003F put +dup /questiondown 16#00BF put +dup /questiondownsmall 16#F7BF put +dup /questionsmall 16#F73F put +dup /quotedbl 16#0022 put +dup /quotedblbase 16#201E put +dup /quotedblleft 16#201C put +dup /quotedblright 16#201D put +dup /quoteleft 16#2018 put +dup /quotereversed 16#201B put +dup /quoteright 16#2019 put +dup /quotesinglbase 16#201A put +dup /quotesingle 16#0027 put +dup /r 16#0072 put +dup /racute 16#0155 put +dup /radical 16#221A put +dup /radicalex 16#F8E5 put +dup /rcaron 16#0159 put +dup /rcommaaccent 16#0157 put +dup /reflexsubset 16#2286 put +dup /reflexsuperset 16#2287 put +dup /registered 16#00AE put +dup /registersans 16#F8E8 put +dup /registerserif 16#F6DA put +dup /revlogicalnot 16#2310 put +dup /rho 16#03C1 put +dup /ring 16#02DA put +dup /rsuperior 16#F6F1 put +dup /rtblock 16#2590 put +dup /rupiah 16#F6DD put +dup /s 16#0073 put +dup /sacute 16#015B put +dup /scaron 16#0161 put +dup /scedilla [16#015F 16#F6C2] put +dup /scircumflex 16#015D put +dup /scommaaccent 16#0219 put +dup /second 16#2033 put +dup /section 16#00A7 put +dup /semicolon 16#003B put +dup /seven 16#0037 put +dup /seveneighths 16#215E put +dup /seveninferior 16#2087 put +dup /sevenoldstyle 16#F737 put +dup /sevensuperior 16#2077 put +dup /shade 16#2592 put +dup /sigma 16#03C3 put +dup /sigma1 16#03C2 put +dup /similar 16#223C put +dup /six 16#0036 put +dup /sixinferior 16#2086 put +dup /sixoldstyle 16#F736 put +dup /sixsuperior 16#2076 put +dup /slash 16#002F put +dup /smileface 16#263A put +dup /space [16#0020 16#00A0] put +dup /spade 16#2660 put +dup /ssuperior 16#F6F2 put +dup /sterling 16#00A3 put +dup /suchthat 16#220B put +dup /summation 16#2211 put +dup /sun 16#263C put +dup /t 16#0074 put +dup /tau 16#03C4 put +dup /tbar 16#0167 put +dup /tcaron 16#0165 put +dup /tcommaaccent [16#0163 16#021B] put +dup /therefore 16#2234 put +dup /theta 16#03B8 put +dup /theta1 16#03D1 put +dup /thorn 16#00FE put +dup /three 16#0033 put +dup /threeeighths 16#215C put +dup /threeinferior 16#2083 put +dup /threeoldstyle 16#F733 put +dup /threequarters 16#00BE put +dup /threequartersemdash 16#F6DE put +dup /threesuperior 16#00B3 put +dup /tilde 16#02DC put +dup /tildecomb 16#0303 put +dup /tonos 16#0384 put +dup /trademark 16#2122 put +dup /trademarksans 16#F8EA put +dup /trademarkserif 16#F6DB put +dup /triagdn 16#25BC put +dup /triaglf 16#25C4 put +dup /triagrt 16#25BA put +dup /triagup 16#25B2 put +dup /tsuperior 16#F6F3 put +dup /two 16#0032 put +dup /twodotenleader 16#2025 put +dup /twoinferior 16#2082 put +dup /twooldstyle 16#F732 put +dup /twosuperior 16#00B2 put +dup /twothirds 16#2154 put +dup /u 16#0075 put +dup /uacute 16#00FA put +dup /ubreve 16#016D put +dup /ucircumflex 16#00FB put +dup /udieresis 16#00FC put +dup /ugrave 16#00F9 put +dup /uhorn 16#01B0 put +dup /uhungarumlaut 16#0171 put +dup /umacron 16#016B put +dup /underscore 16#005F put +dup /underscoredbl 16#2017 put +dup /union 16#222A put +dup /universal 16#2200 put +dup /uogonek 16#0173 put +dup /upblock 16#2580 put +dup /upsilon 16#03C5 put +dup /upsilondieresis 16#03CB put +dup /upsilondieresistonos 16#03B0 put +dup /upsilontonos 16#03CD put +dup /uring 16#016F put +dup /utilde 16#0169 put +dup /v 16#0076 put +dup /w 16#0077 put +dup /wacute 16#1E83 put +dup /wcircumflex 16#0175 put +dup /wdieresis 16#1E85 put +dup /weierstrass 16#2118 put +dup /wgrave 16#1E81 put +dup /x 16#0078 put +dup /xi 16#03BE put +dup /y 16#0079 put +dup /yacute 16#00FD put +dup /ycircumflex 16#0177 put +dup /ydieresis 16#00FF put +dup /yen 16#00A5 put +dup /ygrave 16#1EF3 put +dup /z 16#007A put +dup /zacute 16#017A put +dup /zcaron 16#017E put +dup /zdotaccent 16#017C put +dup /zero 16#0030 put +dup /zeroinferior 16#2080 put +dup /zerooldstyle 16#F730 put +dup /zerosuperior 16#2070 put +dup /zeta 16#03B6 put +def diff --git a/gs/Resource/Init/gs_btokn.ps b/gs/Resource/Init/gs_btokn.ps new file mode 100644 index 000000000..8ae575081 --- /dev/null +++ b/gs/Resource/Init/gs_btokn.ps @@ -0,0 +1,331 @@ +% Copyright (C) 1994, 2000 Aladdin Enterprises. All rights reserved. +% +% This software is provided AS-IS with no warranty, either express or +% implied. +% +% This software is distributed under license and may not be copied, +% modified or distributed except as expressly authorized under the terms +% of the license contained in the file LICENSE in this distribution. +% +% For more information about licensing, please refer to +% http://www.ghostscript.com/licensing/. For information on +% commercial licensing, go to http://www.artifex.com/licensing/ or +% contact Artifex Software, Inc., 101 Lucas Valley Road #110, +% San Rafael, CA 94903, U.S.A., +1(415)492-9861. + +% $Id$ +% Initialization file for binary tokens. +% When this is run, systemdict is still writable, +% but everything defined here goes into level2dict. + +% Define whether or not to allow writing dictionaries. +% This is a non-standard feature! +/WRITEDICTS false def + +languagelevel 1 .setlanguagelevel +level2dict begin + +% Initialization for the system name table. + +mark +% 0 + /abs /add /aload /anchorsearch /and + /arc /arcn /arct /arcto /array + /ashow /astore /awidthshow /begin /bind + /bitshift /ceiling /charpath /clear /cleartomark +% 20 + /clip /clippath /closepath /concat /concatmatrix + /copy /count /counttomark /currentcmykcolor /currentdash + /currentdict /currentfile /currentfont /currentgray /currentgstate + /currenthsbcolor /currentlinecap /currentlinejoin /currentlinewidth /currentmatrix +% 40 + /currentpoint /currentrgbcolor /currentshared /curveto /cvi + /cvlit /cvn /cvr /cvrs /cvs + /cvx /def /defineusername /dict /div + /dtransform /dup /end /eoclip /eofill +% 60 + /eoviewclip /eq /exch /exec /exit + /file /fill /findfont /flattenpath /floor + /flush /flushfile /for /forall /ge + /get /getinterval /grestore /gsave /gstate +% 80 + /gt /identmatrix /idiv /idtransform /if + /ifelse /image /imagemask /index /ineofill + /infill /initviewclip /inueofill /inufill /invertmatrix + /itransform /known /le /length /lineto +% 100 + /load /loop /lt /makefont /matrix + /maxlength /mod /moveto /mul /ne + /neg /newpath /not /null /or + /pathbbox /pathforall /pop /print /printobject +% 120 + /put /putinterval /rcurveto /read /readhexstring + /readline /readstring /rectclip /rectfill /rectstroke + /rectviewclip /repeat /restore /rlineto /rmoveto + /roll /rotate /round /save /scale +% 140 + /scalefont /search /selectfont /setbbox /setcachedevice + /setcachedevice2 /setcharwidth /setcmykcolor /setdash /setfont + /setgray /setgstate /sethsbcolor /setlinecap /setlinejoin + /setlinewidth /setmatrix /setrgbcolor /setshared /shareddict +% 160 + /show /showpage /stop /stopped /store + /string /stringwidth /stroke /strokepath /sub + /systemdict /token /transform /translate /truncate + /type /uappend /ucache /ueofill /ufill +% 180 + /undef /upath /userdict /ustroke /viewclip + /viewclippath /where /widthshow /write /writehexstring + /writeobject /writestring /wtranslation /xor /xshow + /xyshow /yshow /FontDirectory /SharedFontDirectory /Courier +% 200 + /Courier-Bold /Courier-BoldOblique /Courier-Oblique /Helvetica /Helvetica-Bold + /Helvetica-BoldOblique /Helvetica-Oblique /Symbol /Times-Bold /Times-BoldItalic + /Times-Italic /Times-Roman /execuserobject /currentcolor /currentcolorspace + /currentglobal /execform /filter /findresource /globaldict +% 220 + /makepattern /setcolor /setcolorspace /setglobal /setpagedevice + /setpattern +% pad to 256 + counttomark 256 exch sub { 0 } repeat +% 256 + /= /== /ISOLatin1Encoding /StandardEncoding +% 260 + ([) cvn (]) cvn /atan /banddevice /bytesavailable + /cachestatus /closefile /colorimage /condition /copypage + /cos /countdictstack /countexecstack /cshow /currentblackgeneration + /currentcacheparams /currentcolorscreen /currentcolortransfer /currentcontext /currentflat +% 280 + /currenthalftone /currenthalftonephase /currentmiterlimit /currentobjectformat /currentpacking + /currentscreen /currentstrokeadjust /currenttransfer /currentundercolorremoval /defaultmatrix + /definefont /deletefile /detach /deviceinfo /dictstack + /echo /erasepage /errordict /execstack /executeonly +% 300 + /exp /false /filenameforall /fileposition /fork + /framedevice /grestoreall /handleerror /initclip /initgraphics + /initmatrix /instroke /inustroke /join /kshow + /ln /lock /log /mark /monitor +% 320 + /noaccess /notify /nulldevice /packedarray /quit + /rand /rcheck /readonly /realtime /renamefile + /renderbands /resetfile /reversepath /rootfont /rrand + /run /scheck /setblackgeneration /setcachelimit /setcacheparams +% 340 + /setcolorscreen /setcolortransfer /setfileposition /setflat /sethalftone + /sethalftonephase /setmiterlimit /setobjectformat /setpacking /setscreen + /setstrokeadjust /settransfer /setucacheparams /setundercolorremoval /sin + /sqrt /srand /stack /status /statusdict +% 360 + /true /ucachestatus /undefinefont /usertime /ustrokepath + /version /vmreclaim /vmstatus /wait /wcheck + /xcheck /yield /defineuserobject /undefineuserobject /UserObjects + /cleardictstack +% 376 + /A /B /C /D /E /F /G /H /I /J /K /L /M + /N /O /P /Q /R /S /T /U /V /W /X /Y /Z + /a /b /c /d /e /f /g /h /i /j /k /l /m + /n /o /p /q /r /s /t /u /v /w /x /y /z +% 428 + /setvmthreshold (<<) cvn + (>>) cvn /currentcolorrendering /currentdevparams /currentoverprint /currentpagedevice + /currentsystemparams /currentuserparams /defineresource /findencoding /gcheck +% 440 + /glyphshow /languagelevel /product /pstack /resourceforall + /resourcestatus /revision /serialnumber /setcolorrendering /setdevparams + /setoverprint /setsystemparams /setuserparams /startjob /undefineresource + /GlobalFontDirectory /ASCII85Decode /ASCII85Encode /ASCIIHexDecode /ASCIIHexEncode +% 460 + /CCITTFaxDecode /CCITTFaxEncode /DCTDecode /DCTEncode /LZWDecode + /LZWEncode /NullEncode /RunLengthDecode /RunLengthEncode /SubFileDecode + /CIEBasedA /CIEBasedABC /DeviceCMYK /DeviceGray /DeviceRGB + /Indexed /Pattern /Separation /CIEBasedDEF /CIEBasedDEFG +% 480 + /DeviceN +% 481 -- end +.packtomark .installsystemnames + +% Define printobject and writeobject. +% These are mostly implemented in PostScript, so that we don't have to +% worry about interrupts or callbacks when writing to the output file. + +% Define procedures for accumulating the space required to represent +% an object in binary form. The procedures for composite objects (arrays +% and dictionaries) leave different results on the stack: +% <#refs> <#chars> -proc- <#refs> <#chars> +% <#refs> <#chars> -proc- <#refs> <#chars> +% This is required so that .writeobjects can also accumulate the actual +% list of composite objects to write in the binary object sequence. +/cntdict mark + /integertype /pop load + /realtype 1 index + /marktype 1 index + /nulltype 1 index + /booleantype 1 index + /nametype { length add } bind + /stringtype 1 index + /arraytype null + /dicttype null +.dicttomark def +/.cntobj { % <> + dup type //cntdict exch get exec +} .bind def +cntdict /arraytype { + dup dup length 5 -1 roll add 4 2 roll { .cntobj } forall +} bind put +cntdict /dicttype { + WRITEDICTS { + dup dup length 2 mul 5 -1 roll add 4 2 roll { + % We have to use .execn here, rather than simply rolling the + % value under the top elements, because key might involve arrays + % or dictionaries. + cvlit {.cntobj} exch 2 .execn .cntobj + } forall + } { + /writeobject .systemvar /typecheck signalerror + } ifelse +} bind put + +/w2dict mark + /nametype { 2 copy .writecvs pop } bind + /stringtype 1 index +.dicttomark def + +/.bosheader { % .bosheader + % + dup 0 currentobjectformat 127 add put % object format => BOS tag + 2 index 255 le 2 index 65531 le and { + % Use the short header format: tag toplen(1) totlen(2) + exch 4 add exch + 0 4 getinterval + dup 1 5 -1 roll put + } { + % Use the long header format: tag 0(1) toplen(2) totlen(4) + exch 8 add exch + 0 0 4 2 roll .bosobject exch pop exch pop % store with byte swapping + } ifelse % Stack: shortlen str + exch dup -8 bitshift exch 255 and % str hibyte lobyte + currentobjectformat 1 and 0 eq { % lsb first + exch + } if + 2 index 3 3 -1 roll put + 1 index 2 3 -1 roll put +} .bind def + +/.writeobjects { % .writeobjects - + mark exch + + % Count the space required for refs and strings. + + dup length 0 3 -1 roll + % Stack: file tag -mark- #refs #chars array + dup 4 1 roll { .cntobj } forall + + % Write the header. + + % Stack: file tag -mark- array1 ... (array|dict)N #refs #chars + counttomark 3 add -2 roll 4 1 roll + % Stack: -mark- array1 ... (array|dict)N tag #refs #chars file + dup counttomark 1 sub index length + 4 index 3 bitshift 4 index add + (xxxxxxxx) .bosheader writestring + + % Write the objects per se. + + 3 1 roll pop + counttomark 1 sub index length 3 bitshift exch + 3 bitshift + % Stack: -mark- array1 ... (array|dict)N tag file ref# char# + counttomark 4 sub { + counttomark -1 roll dup 6 1 roll + % Stack: ... objN tag file ref# char# objN + dup type /dicttype eq { % can't be first object + { 5 1 roll (x\000xxxxxx) .bosobject + 3 index exch writestring + 4 -1 roll (x\000xxxxxx) .bosobject + 3 index exch writestring + } forall + } { + { (x\000xxxxxx) .bosobject + dup 1 6 index put + 3 index exch writestring + 4 -1 roll pop 0 4 1 roll % clear tag + } forall + } ifelse + } repeat + + % Write the strings and names. + + pop pop exch pop + % Stack: -mark- array1 ... array|dictN file + counttomark 1 sub { + counttomark -1 roll { + % The counting pass ensured that the keys and values + % of any dictionary must be writable objects. + % Hence, we are processing a dictionary iff + % the next-to-top stack element is not a file. + 1 index type /filetype ne { + exch 2 index exch dup type //w2dict exch .knownget + { exec } { pop } ifelse pop + } if + dup type //w2dict exch .knownget { exec } { pop } ifelse + } forall + } repeat + + % Clean up. + + % Stack: -mark- file + pop pop + +} .bind def + +/printobject { % printobject - + currentobjectformat 0 eq { + /printobject .systemvar /undefined signalerror + } if + (%stdout) (w) file 2 index 2 index .writeobject pop pop +} odef +/writeobject { % writeobject - + currentobjectformat 0 eq { + /writeobject .systemvar /undefined signalerror + } if + 2 .argindex pop % check # of args + .writeobject +} odef +/.writeobject { + 3 copy exch + % We must allocate the array in local VM + % to avoid a possible invalidaccess. + .currentglobal false .setglobal exch 1 array astore exch .setglobal + .writeobjects pop pop pop +} .bind def + +% Implement binary error message output. +/.objectprinttest { % .objectprinttest - + % This is a pseudo-operator so it will restore the stack + % if it gets an error. + mark 0 0 3 .argindex .cntobj cleartomark pop +} bind odef +/.printerror { + $error /binary get .languagelevel 2 ge and { + currentobjectformat 0 ne { + [ /Error $error /errorname get $error /command get + % Convert the object with cvs if it isn't printable. + dup { .objectprinttest } .internalstopped { + pop 100 string cvs + } if + false ] 250 printobject + } + //.printerror % known to be a procedure + ifelse + } + //.printerror % known to be a procedure + ifelse +} bind def + +currentdict /cntdict .undef +currentdict /w2dict .undef + +% End of level2dict + +end +.setlanguagelevel diff --git a/gs/Resource/Init/gs_cet.ps b/gs/Resource/Init/gs_cet.ps new file mode 100644 index 000000000..01225e9f2 --- /dev/null +++ b/gs/Resource/Init/gs_cet.ps @@ -0,0 +1,61 @@ +%!PS +% Set defaults for Ghostscript to match Adobe CPSI behaviour for CET +% $Id$ + +% do this in the server level so it is persistent across jobs +true 0 startjob not { + (*** Warning: CET startup is not in server default) = flush +} if + +300 .sethiresscreen % needed for language switch build since it + % processes gs_init.ps BEFORE setting the resolution + +0 array 0 setdash % CET 09-08 wants local setdash + +currentglobal true setglobal + +{ + systemdict dup dup dup + /version (3017.102) put % match CPSI 3017.102 + /product (PhotoPRINT SE 5.0v2) put % match CPSI 3017.102 + /revision 0 put % match CPSI 3017.103 Tek shows revision 5 + /serialnumber 233640 put % match CPSI 3017.102 Tek shows serialnumber 1401788461 + systemdict /deviceinfo undef % for CET 20-23-1 +} superexec + +{ } bind dup +setblackgeneration +setundercolorremoval +0 array cvx readonly dup dup dup setcolortransfer + +% CPSI doesn't define "Localization" resource. +/Localization /Category undefineresource + +% Some previously compile time options such as USE_ADOBE_CMYK_RGB +% and GS_CHAR_FILL are now dynamic. Force CPSI compatibility. +true .setCPSImode + +setglobal + +% Remove all but 'letter' page size +<< +currentpagedevice /InputAttributes get +1 1 2 index length 1 sub { + 1 index exch undef +} for +/InputAttributes exch +>> +setpagedevice + +% Patch setsmoothness, currentsmoothness for a better view of shadings : +userdict /.smoothness currentsmoothness put +/setsmoothness { + dup type dup /integertype eq exch /realtype eq or { + userdict /.smoothness 3 2 roll cvr put + } { + /setsmoothness .systemvar /typecheck signalerror + } ifelse +} bind odef +/currentsmoothness { userdict /.smoothness get } bind odef % for 09-55.PS, 09-57.PS . + +false 0 startjob pop % re-enter encapsulated mode diff --git a/gs/Resource/Init/gs_cff.ps b/gs/Resource/Init/gs_cff.ps new file mode 100644 index 000000000..89058f3f0 --- /dev/null +++ b/gs/Resource/Init/gs_cff.ps @@ -0,0 +1,848 @@ +% Copyright (C) 1997, 1998, 1999, 2000 Aladdin Enterprises. All rights reserved. +% +% This software is provided AS-IS with no warranty, either express or +% implied. +% +% This software is distributed under license and may not be copied, +% modified or distributed except as expressly authorized under the terms +% of the license contained in the file LICENSE in this distribution. +% +% For more information about licensing, please refer to +% http://www.ghostscript.com/licensing/. For information on +% commercial licensing, go to http://www.artifex.com/licensing/ or +% contact Artifex Software, Inc., 101 Lucas Valley Road #110, +% San Rafael, CA 94903, U.S.A., +1(415)492-9861. + +% $Id$ +% Loader for CFF (compressed) fonts, including OpenType CFFs. +% The following are not implemented yet: +% Deleted entries in the Name Index +% Embedded PostScript +% Multiple Master fonts +% Chameleon fonts +% Synthetic fonts + +% ---------------- Font loading machinery ---------------- % + +% Augment the FONTPATH machinery so it recognizes OpenType CFF font sets. + +/.scanfontheaders where { + pop /.scanfontheaders [ + .scanfontheaders aload pop (OTTO*) + ] def +} if + +% Load a font file that might be an OpenType CFF font set. + +% .loadfontfile - +/.loadnonottofontfile /.loadfontfile load def +/.loadfontfile { + dup 4 string .peekstring pop (OTTO) eq { + % If this is a font at all, it's an OpenType CFF font set. + .init_otto_font_file + % Use a random FontSet resource name. ****** WRONG ****** + realtime rand xor =string cvs exch //false //false + ReadData pop + } { + % Not a TrueType font. + .loadnonottofontfile + } ifelse +} bind def + +% .init_otto_font_file +/.init_otto_font_file { + /FontSetInit /ProcSet findresource begin + 2 dict begin + /f exch def /cff null def + card32 pop card16 6 { next pop } repeat dup { + % Stack: numtables tablesleft + dup 0 eq { + pop pop /.loadottofontfile cvx /invalidfont signalerror + } if + f 4 string readstring pop (CFF ) eq { sub exit } if + f 12 string readstring pop pop 1 sub % skip to next table + } loop + % Stack: tablesread + card32 pop card32 card32 + % Stack: tablesread start length + exch 3 -1 roll 1 add 16 mul 12 add sub + f exch subfilefilter flushfile % skip to start + f exch subfilefilter end +} bind def + +30 dict begin + +% ---------------- Standard strings (actually names) ---------------- % + +/StandardStrings mark + % The initial StandardStrings that that denote characters are + % defined as a pseudo-Encoding. +% 0 + /CFFStandardStrings .findencoding aload pop +% 379 + (001.000) +% 380 + (001.001) (001.002) (001.003) /Black /Bold + /Book /Light /Medium /Regular /Roman + /Semibold +.packtomark def + +% ---------------- Standard encodings ---------------- % + +/StandardEncodings [ + +% StandardEncoding +mark + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 + 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 + 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 + 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 + 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 + 0 111 112 113 114 0 115 116 117 118 119 120 121 122 0 123 + 0 124 125 126 127 128 129 130 131 0 132 133 0 134 135 136 + 137 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 138 0 139 0 0 0 0 140 141 142 143 0 0 0 0 + 0 144 0 0 0 145 0 0 146 147 148 149 0 0 0 0 +.packtomark + +% ExpertEncoding +mark + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 229 230 0 231 232 233 234 235 236 237 238 13 14 15 99 + 239 240 241 242 243 244 245 246 247 248 27 28 249 250 251 252 + 0 253 254 255 256 257 0 0 0 258 0 0 259 260 261 262 + 0 0 263 264 265 0 266 109 110 267 268 269 0 270 271 272 + 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 + 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 304 305 306 0 0 307 308 309 310 311 0 312 0 0 313 + 0 0 314 315 0 0 316 317 318 0 0 0 158 155 163 319 + 320 321 322 323 324 325 0 0 326 150 164 169 327 328 329 330 + 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 + 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 + 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 +.packtomark + +] readonly def + +% ---------------- Standard Charsets ---------------- % + +% We include an explicit 0 at the beginning of each charset. + +/StandardCharsets [ + +% ISOAdobe +mark + 0 + 1 1 228 { } for +.packtomark + +% Expert +mark + 0 + 1 229 230 231 232 233 234 235 236 237 238 13 14 15 99 239 + 240 241 242 243 244 245 246 247 248 27 28 249 250 251 252 253 + 254 255 256 257 258 259 260 261 262 263 264 265 266 109 110 267 + 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 + 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 + 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 + 316 317 318 158 155 163 319 320 321 322 323 324 325 326 150 164 + 169 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 + 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 + 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 + 374 375 376 377 378 +.packtomark + +% ExpertSubset +mark + 0 + 1 231 232 235 236 237 238 13 14 15 99 239 240 241 242 243 + 244 245 246 247 248 27 28 249 250 251 253 254 255 256 257 258 + 259 260 261 262 263 264 265 266 109 110 267 268 269 270 272 300 + 301 302 305 314 315 158 155 163 320 321 322 323 324 325 326 150 + 164 169 327 328 329 330 331 332 333 334 335 336 337 338 339 340 + 341 342 343 344 345 346 +.packtomark + +] readonly def + +% ---------------- Font loading ---------------- % + +% ------ Utilities ------ % + +/advance { % advance - + f cff eq { pos add /pos exch store } { pop } ifelse +} bind def +/next { % - next + f read { + 1 advance + CFFDEBUG { ( ) print dup = } if + } if +} bind def +/next2 { % - next2 + f read { + f read { + 2 advance + CFFDEBUG { ( ) print 1 index =only (,) print dup = } if + } { + 1 advance + CFFDEBUG { ( ) print dup = } if + } ifelse + } if +} bind def +/nextstring { % nextstring + dup 0 eq { + pop () + } { + string f exch readstring pop dup length advance + CFFDEBUG { ( ) print dup == } if + } ifelse +} bind def +/card8 % - card8 + /next load +def +/card16 { % - card16 + next2 exch 8 bitshift add +} bind def +/card32 { % - card32 + card16 16 bitshift card16 add +} bind def +/offsetprocs [ + /card8 load + /card16 load + { card8 16 bitshift card16 add } bind + /card32 load +] readonly def +/offsetproc { % offsetproc + 1 sub //offsetprocs exch get +} bind def +/offset { % offset + offsetproc exec +} bind def +/sid % - sid + /card16 load +def +/Index { % Index + CFFDEBUG { (% reading Index: ) print dup = } if + mark card16 + dup 0 ne { + 1 exch next + dup 0 eq { + pop % skip incorrect index, bug 689854 + } { + offsetproc dup exec pop exch { + dup exec dup 4 -1 roll sub 3 1 roll exch + } repeat + } ifelse pop + } if pop .packtomark + CFFDEBUG { (% Index lengths = ) print dup === } if + [ exch { nextstring } forall ] readonly +} bind def +/tokens { % - tokens ... (op# = 12 means EOF) + { + f read not { 12 exit } if + CFFDEBUG { (..) print dup = } if + 1 advance + dup 12 eq { pop next 32 add exit } if + dup 28 lt { exit } if + dup 32 lt { + 28 sub { + { card16 32768 xor 32768 sub } + { 4 offset dup 16#7fffffff gt { -1 32 bitshift add } if } + { tokenreal } + { 31 exit } + } exch get exec + } { + dup 247 lt { + 139 sub + } { + 247 sub { + { next 108 add } + { next 364 add } + { next 620 add } + { next 876 add } + { next 108 add neg } + { next 364 add neg } + { next 620 add neg } + { next 876 add neg } + % 255 is deliberately omitted and will cause a rangecheck + } exch get exec + } ifelse + } ifelse + } loop +} bind def +/tokenbuf 100 string def +/tokenput { % tokenput + dup length 3 1 roll + tokenbuf 2 index 3 -1 roll putinterval add +} bind def +/tokenrealarray [ + (0)(1)(2)(3)(4)(5)(6)(7)(8)(9)(.)(E) + (E-) + () % ignore the invalid value + (-) + { exit } bind +] readonly def +/tokenreal { % - tokenreal + 0 { + next exch 1 index -4 bitshift tokenrealarray exch get exec tokenput + % We must leave the byte on the stack temporarily so that + % the exit will see a consistent stack state. + 1 index 15 and tokenrealarray exch get exec tokenput exch pop + } loop + tokenbuf 0 3 -1 roll getinterval cvr exch pop +} bind def +/Dict { % Dict - + /opdict exch store { + mark tokens + CFFDEBUG { (tokens: ) print ] dup === mark exch aload pop } if + opdict exch .knownget { exec } if cleartomark + } loop cleartomark +} bind def +/idstring { % idstring + dup 391 lt { //StandardStrings } { 391 sub strings } ifelse exch get +} bind def +/idname { % idname + idstring dup type /nametype ne { cvn } if +} bind def +/subfilefilter { % subfilefilter + % SubFileDecode interprets a length of 0 as infinite. + dup 0 le { pop pop () 0 } if () /SubFileDecode filter +} bind def + +% ------ Top dictionary ------ % + +/offput { % offput - + 1 index 0 le + CFFDEBUG { dup { (not ) print } if (queued: ) print 2 index =only ( ) print 1 index === } if + { pop pop + } + { currentdict exch aload length 1 add packedarray cvx + offsets 3 1 roll put + } + ifelse +} bind def +/queueput { % queueput - + 16#7fffffff offsets { pop .min } forall + pos sub nextstring + 3 1 roll aload length 2 add packedarray cvx + [ queued aload pop counttomark 2 add -1 roll ] + /queued exch store +} bind def +/printvk { % printvk + CFFDEBUG { (\t% ) print dup =only ( = ) print 1 index === } if +} bind def +/xxput { % xxput - + 3 1 roll exch put +} bind def +/putfi { % putfi - + printvk FontInfo xxput +} bind def +/xdef { % xdef - + exch def +} bind def +/pxdef { % pxdef - + printvk xdef +} bind def +/topdictops mark + 12 { CFFDEBUG { (\t% EOD) = } if exit } + 0 { idstring /version putfi } + 1 { idstring /Notice putfi } + 32 { idstring /Copyright putfi } + 2 { idstring /FullName putfi } + 3 { idstring /FamilyName putfi } + 4 { idstring /Weight putfi } + 33 { 0 ne /isFixedPitch putfi } + 34 { /ItalicAngle putfi } + 35 { /UnderlinePosition putfi } + 36 { /UnderlineThickness putfi } + 37 { /PaintType pxdef } + 38 { /FontType pxdef } % actually CharstringType + 39 { counttomark array astore /FontMatrix pxdef } + 13 { /UniqueID pxdef } + 5 { counttomark array astore /FontBBox pxdef } + 40 { /StrokeWidth pxdef } + 14 { counttomark array astore /XUID pxdef } + 15 { + /charset printvk pop + dup StandardCharsets length lt { + StandardCharsets exch get /charset xdef + } { + { queuecharset } offput + } ifelse + } + 16 { + /Encoding printvk pop + dup StandardEncodings length lt { + /Encoding xdef + } { + { queueEncoding } offput + } ifelse + } + 17 { { readCharStrings } offput } + 18 { exch /readPrivate cvx 2 packedarray offput } + % CIDFont operators + 62 { % ROS, must be first in a CIDFont + currentdict /FontType undef + currentdict /Encoding undef + currentdict /FontMatrix undef + /CIDFontVersion 0 def + /CIDFontRevision 0 def + /CIDFontType 0 def + /CIDCount 8720 def % Default value defined in CFF spec. + 3 dict begin + /Supplement pxdef + idstring dup type /nametype eq { .namestring } if /Ordering pxdef + idstring dup type /nametype eq { .namestring } if /Registry pxdef + /CIDSystemInfo currentdict end def + } + 63 { /CIDFontVersion pxdef } + 64 { /CIDFontRevision pxdef } + 65 { /CIDFontType pxdef } + 66 { /CIDCount pxdef } + 67 { /UIDBase pxdef } + 68 { { readFDArray } offput } + 69 { { readFDSelect } offput } + % This operator only appears in a FDArray element. + % We don't really need it, so ignore an error. + 70 { { idstring } .internalstopped { pop pop } { /FontName pxdef } ifelse } +.dicttomark readonly def + +% readcharset and readFDSelect may require the length of CharStringArray, +% but these structures may occur in the file before the CharStrings. +% If that happens, use a hack: assume that all the data up to the next +% queued read should be read. + +/charstringcount { % charstringcount true + % charstringcount false + /CharStringArray .knownget { + length true + } { + % Hack: look for the next queued read. + 16#7fffffff offsets { pop .min } forall + pos sub false + } ifelse +} bind def + +/readCharStrings { % readCharStrings - + /CharStringArray Index put +} bind def + +% ------ Charsets and encodings ------ % + +% Note: formats 1 and 2 can overflow the operand stack. +% We'll fix this if it ever becomes necessary. +/charsetcount { + charstringcount { 1 sub } { 2 idiv } ifelse +} bind def +/charsetformats [ +{ [ 0 3 -1 roll charsetcount { sid } repeat ] +} bind +{ [ 0 3 -1 roll charsetcount { + dup 0 eq { pop exit } if + sid card8 1 add 2 index .min { exch 1 sub 1 index 1 add } repeat pop + } loop ] +} bind +{ [ 0 3 -1 roll charsetcount { + dup 0 eq { pop exit } if + sid card16 1 add 2 index .min { exch 1 sub 1 index 1 add } repeat pop + } loop ] +} bind +] readonly def +/queuecharset { % queuecharset - + { readcharset } queueput +} bind def +/readcharset { % readcharset - + begin 0 () /SubFileDecode filter /f exch store + charsetformats next get currentdict exch exec /charset exch def end +} bind def + +/encodingformats [ +{ 1 1 next { next exch Encoding 3 1 roll put } for +} bind +{ 1 next { + next next 1 add { + % Stack: gid code + Encoding 1 index 3 index put + exch 1 add exch 1 add + } repeat pop + } repeat pop +} bind +] readonly def +/queueEncoding { % queueEncoding - + { readEncoding } queueput +} bind def +/readEncoding { % readEncoding - + begin 0 () /SubFileDecode filter /f exch store + /Encoding [ 256 { /.notdef } repeat ] def + next encodingformats 1 index 127 and get exec + 128 ge { + % Read supplementary encodings. + next { + Encoding next sid idname put + } repeat + } if end +} bind def + +% ------ FDArray and FDSelect ------ % + +/readFDArray { % readFDArray - + /FDarray Index exch pop exch + 2 dict begin /f null def begin + [ exch { + dup length subfilefilter /f exch store + 10 dict begin + /FontType 2 def + /PaintType 0 def + /FontMatrix [0.001 0 0 0.001 0 0] def + /Private 20 dict def + //topdictops Dict currentdict end + } forall ] /FDArray xdef end end +} bind def + +/fdselectformats [ +% Note: this procedure can overflow the operand stack. +% We'll fix this if it ever becomes necessary. +{ [ exch charstringcount pop { card8 } repeat ] } bind % Format 0 +{ /FDSelect cvx /invalidfont signalerror } bind % Format 1 +dup % Format 2 +% The following procedure does not use excessive op-stack space. +{ pop 65535 array card16 card16 exch % Format 3 + { % Stack: array previndex + card8 card16 + exch 1 index 4 -1 roll + exch 1 exch 1 sub + { 3 index exch 2 index put } for pop + } repeat + % now resize the array to the final index. + 0 exch getinterval +} bind +] readonly def + +/readFDSelect { % readFDSelect - + begin fdselectformats next get currentdict exch exec /FDSelect exch def end +} bind def + + +% ------ Private dictionary ------ % + +/deltarray { % -mark- ... deltarray ... + 0 counttomark 1 sub { counttomark -1 roll add dup } repeat pop + counttomark array astore +} bind def + +/privatedictops mark + 12 { CFFDEBUG { (\t% EOD) = } if exit } + 6 { deltarray /BlueValues pxdef } + 7 { deltarray /OtherBlues pxdef } + 8 { deltarray /FamilyBlues pxdef } + 9 { deltarray /FamilyOtherBlues pxdef } + 41 { /BlueScale pxdef } + 42 { /BlueShift pxdef } + 43 { /BlueFuzz pxdef } + 10 { 1 array astore /StdHW pxdef } + 11 { 1 array astore /StdVW pxdef } + 44 { deltarray /StemSnapH pxdef } + 45 { deltarray /StemSnapV pxdef } + 46 { 0 ne /ForceBold pxdef } + 47 { /ForceBoldThreshold pxdef } + 48 { /lenIV pxdef } + 49 { /LanguageGroup pxdef } + 50 { /ExpansionFactor pxdef } + 51 { /initialRandomSeed pxdef } + 19 { PrivateStart add { readSubrs } offput } + 20 { /defaultWidthX pxdef } + 21 { /nominalWidthX pxdef } + % Multiple Master fonts only + 59 { /NDV pxdef } + 60 { /CDV pxdef } + 61 { /lenBuildCharArray pxdef } +.dicttomark readonly def + +/readPrivate { % readPrivate - + 2 dict begin + f 3 1 roll exch % f + StringCache queued_offset known { + /PrivateStart queued_offset def + } { + /PrivateStart pos def + 1 index 0 gt { + f 2 index string readstring pop + } { + () + } ifelse + StringCache queued_offset 2 index put + 0 () /SubFileDecode filter + /f exch store + } ifelse + dup /FontType .knownget not { 2 } if exch + /Private get begin + % Default lenIV to -1 even for Type 1 CharStrings. + 2 ne { /lenIV -1 def } if + //privatedictops Dict end + exch /f exch store advance + end +} bind def + +/readSubrs { % readSubrs - + /Subrs Index put +} bind def + +% ------ Main program ------ % + +% Clean up after finishing a font. +/cleanupFont { % (currentdict) cleanupFont - + % Remove unwanted entries. + currentdict /charset undef + currentdict /CharStringArray undef +} bind def + +% Update the Encoding and CharStrings for a real font. +/finishFont { % (currentdict) finishFont - + % Construct the real Encoding. + % The value of Encoding is either a number, for predefined + % encodings, or an array of mixed GIDs and names. + /Encoding mark Encoding + CFFDEBUG { (Encoding: ) print dup === flush } if + dup type /integertype eq { + StandardEncodings exch get { idname } forall + } { + { + dup type /integertype eq { charset exch get idname } if + } forall + } ifelse .packtomark def + % Construct the CharStrings. + % Note that they may only correspond to an initial + % subset of the charset. + /CharStrings charset length CharStringArray length .min dict def + CFFDEBUG { + charset length =only ( charset ) print + CharStringArray length =only ( CharStringArray) = + charset == flush + } if + 0 1 CharStrings maxlength 1 sub { + dup CharStringArray exch get + exch charset exch get idstring CharStrings xxput + } for + cleanupFont +} bind def + +% Replace CharStrings with GlyphDirectory for a CIDFont; +% Move GlobalSubrs to descendent fonts. +/finishCIDFont { % (currentdict) finishCIDFont - + % Construct the GlyphDirectory, similar to CharStrings. + /FDBytes FDArray length 1 gt { 1 } { 0 } ifelse def + /GlyphDirectory charset length CharStringArray length .min dict def + CFFDEBUG { + charset length =only ( charset ) print + CharStringArray length =only ( CharStringArray) = + charset == flush + } if + 0 1 GlyphDirectory maxlength 1 sub { + dup CharStringArray exch get + % If there is more than one FDArray entry, add the font + % index to the beginning of each charstring. + FDBytes 1 eq { + FDSelect 2 index get + 1 string dup 0 4 -1 roll put exch concatstrings + } if + exch charset exch get GlyphDirectory xxput + } for + + Private /GlobalSubrs .knownget { + FDArray { + /Private get /GlobalSubrs 2 index put + } forall + pop + Private /GlobalSubrs undef + } if + + % Clean up. + currentdict /FDSelect undef + cleanupFont +} bind def + +% PDF may load OpenType font containing ordinary CFF data as a CIDFont. +% Convert the ordinary font to a CIDFont. +/makeCIDFont { % (currentdict) finishCIDFont - + /CIDFontType 0 def + /FDBytes 0 def + /GDBytes 0 def + /CIDMapOffset 0 def + + /CIDSystemInfo 3 dict begin % bogus + /Registry (Adobe) def + /Ordering (Identity) def + /Supplement 0 def + currentdict end def + + /FDArray 4 dict begin + /FontMatrix dup load { 1000 0 0 1000 0 0 } matrix concatmatrix def + /Private dup load def + /FontType dup load def + /PaintType dup load def + currentdict end 1 array astore def + + /FontType 9 def + + /GlyphDirectory CharStringArray def + /CIDCount GlyphDirectory length def + + Private /GlobalSubrs undef + currentdict /Encoding undef + currentdict /CharStrings undef + currentdict /UniqueID undef + currentdict /XUID undef + cleanupFont +} bind def + +% We need to pass the file as a parameter for the sake of the PDF +% interpreter. Also for the sake of PDF, a flag forces the font +% to be defined as instead of the name embedded in the data. +% This is needed for subsetted fonts; it is valid if the CFF +% contains only a single font. +% Finally, PDF interpreter may request creation of CIDFont out of an +% ordinary CFF font. +/StartData { % StartData - + currentfile exch subfilefilter //false //false ReadData pop +} bind def +/ReadData { % ReadData + % Initialize. + + 30 dict begin + /forcecidfont exch def + /forceresname exch def + /cff exch def + /pos 0 def + /resname exch cvlit def + /DEBUG CFFDEBUG def % bring the binding closer + /StringCache 1 dict def % Private DICT may be reused. + + % Read the header. + + /f cff def + /vmajor next def + /vminor next def + /hdrsize next def + /aoffsize next def + hdrsize 4 gt { + hdrsize 4 sub dup advance + f exch () /SubFileDecode filter flushfile + } if + + % Read the Indexes. + + /names Index def + /topdicts Index def + /strings Index def + /gsubrs Index def + + % Read the top Dicts. + + /offsets 50 dict def + /queued [] def + /opdict null def % reserve a slot + /fonts [ topdicts { + 0 () /SubFileDecode filter /f exch def + 40 dict begin + % Preload defaults that differ from PostScript defaults, + % or that are required. + /FontType 2 def + /PaintType 0 def + /FontMatrix [0.001 0 0 0.001 0 0] def + /charset StandardCharsets 0 get def + /Encoding 0 def + /FontInfo 10 dict + dup /UnderlinePosition -100 put + dup /UnderlineThickness 50 put + def + /Private 20 dict + gsubrs length 0 ne { dup /GlobalSubrs gsubrs put } if + def + //topdictops Dict + currentdict end + } forall ] def + + % Read other tables with queued offsets. + % We process these in order so we can advance if needed. + % The CFF file may not be positionable. + { % outer loop since offsets may be updated when processing + CFFDEBUG { (offsets: ) print [ offsets { pop } forall ] == } if + [ offsets { pop } forall ] { lt } .sort % process in order of appearance + { + CFFDEBUG { (queued offset: ) print dup =print flush (, current pos=) print pos = } if + /queued_offset 1 index def + StringCache 1 index .knownget { + /f exch 0 () /SubFileDecode filter def + } { + /f cff def + dup pos ne { dup pos sub nextstring pop } if % negative advance will cause error + } ifelse + offsets exch 2 copy get 3 1 roll undef + CFFDEBUG { (exec queued: ) print dup == } if + exec + } forall + offsets length 0 eq { exit } if + } loop + + % Process out-of-order tables. + + CFFDEBUG { queued length =only ( queued) = flush } if + queued { exec } forall + + % Update Encoding and CharStrings. + + fonts { + begin + currentdict /CIDFontType known { + finishCIDFont + } { + forcecidfont //makeCIDFont //finishFont ifelse + } ifelse + end + } forall + + % Wrap up. + + resname mark 0 1 fonts length 1 sub { + CFFDEBUG { dup =only ( ) print flush } if + dup names exch get + forceresname { pop resname } if + CFFDEBUG { dup == flush } if + exch fonts exch get + dup /CIDFontType known { + % This is a CIDFont. + dup /CIDFontName 3 index put + 1 index exch /CIDFont defineresource + } { + % This is a font. + dup /FontName 3 index put + 1 index exch definefont + } ifelse + } for .dicttomark + end % temporary dict + end % FontSetInit ProcSet + /FontSet defineresource + +} bind def + +% ---------------- Resource category definition ---------------- % + +currentdict end readonly + +languagelevel exch 2 .setlanguagelevel + +/FontSet /Generic /Category findresource dup length dict .copydict +/Category defineresource pop + +/FontSetInit exch /ProcSet defineresource pop + +.setlanguagelevel diff --git a/gs/Resource/Init/gs_cidcm.ps b/gs/Resource/Init/gs_cidcm.ps new file mode 100644 index 000000000..0f5e5a026 --- /dev/null +++ b/gs/Resource/Init/gs_cidcm.ps @@ -0,0 +1,446 @@ +% Copyright (C) 2000 Artifex Software, Inc. All rights reserved. +% +% This software is provided AS-IS with no warranty, either express or +% implied. +% +% This software is distributed under license and may not be copied, +% modified or distributed except as expressly authorized under the terms +% of the license contained in the file LICENSE in this distribution. +% +% For more information about licensing, please refer to +% http://www.ghostscript.com/licensing/. For information on +% commercial licensing, go to http://www.artifex.com/licensing/ or +% contact Artifex Software, Inc., 101 Lucas Valley Road #110, +% San Rafael, CA 94903, U.S.A., +1(415)492-9861. + +% $Id$ +% Extending Font resource category with CIDFont-CMap fonts. + +languagelevel 2 .setlanguagelevel currentglobal true setglobal + + +% In the comments below, 'CSI' is an abbreviation/acronym for CIDSystemInfo. +% We pre-scan resource files to retrieve the CSI from them. +% First we define a hidden procset .prs_dict containing +% necessary variables and procedures. +% Then we redefine the old /Font category using this procset. + +% We maintain internal caches for the CSI values retrieved from +% resource files. This supposes that document doesn't uninstall +% resource files. To disable caching, set enable_cache to false. + +% We assume that names starting with '.prs' do not appear in resource files. +% If this causes any problem, this prefix should be systematically changed +% in this file. ('prs' is an abbreviation for 'prescan'.) + +25 dict begin + +% Define local variables : + +/.prs_dict currentdict def % self-reference (constant) +/.prs_empty 0 dict readonly def +/path_buffer 8192 string def +/name_buffer 1024 string def +/minus (-) 0 get def % character code constant for '-' +/period (.) 0 get def % character code constant for '.' +/CMap 10 dict def % CSI cache for CMaps +/CIDFont 10 dict def % CSI cache for CIDFonts +/enable_cache true def % set false to disable cache + +% The folloving variables are just placeholders for ones to be set +% dynamically : +/.prsFile 0 def % file to prescan +/.prsResult 0 def % result of prescan +/.prsDictCount 0 def % save the dictionary stack depth + +% Define a dummy CIDInit procset to use while pre-scanning : + +/DummyCIDInit 15 dict +begin + + /begincmap {} def + /usecmap {pop} bind def + + {stop} bind + [ /begincodespacerange /endcodespacerange /beginnotdefchar /endnotdefchar + /beginnotdefrange /endnotdefrange /begincidchar /endcidchar /begincidrange + /endcidrange /endcmap /usefont /StartData + ] { + 1 index def + } bind forall + pop + +currentdict end def + +% Define a local 'findresource' for pre-scanning : +% (it returns the dummy CIDInit instead of the regular CIDInit ProcSet) + +/findresource { % findresource + 2 copy /ProcSet eq exch % /InstName /CatName bool /InstName + /CIDInit eq and { + pop pop //DummyCIDInit + } { + //findresource exec + } ifelse +} bind def + +% Define procedures for pre-scanning : + +/StopIfCSIDefined { % - StopIfCSIDefined - + + % Check if the dictionary stack contains a dictionary containing /CIDSystemInfo. + % The search is limited to the top .prsDictCount dictionaries in the stack. + % If so, retrieve the CSI, and execute stop to terminate the pre-scanning of the file. + % Otherwise, do nothing, so the pre-scanning continues. + + countdictstack //.prs_dict /.prsDictCount get sub dup { + currentdict /CIDSystemInfo .knownget { + //.prs_dict exch /.prsResult exch put + stop + } if + currentdict exch end + } repeat { + begin + } repeat +} bind def + +/PrescanFile { % - PrescanFile - + { //.prs_dict /.prsFile get token { + dup type % token type + dup /nametype eq exch /operatortype eq or { + dup xcheck { + exec + //StopIfCSIDefined exec + } if + } if + } { + stop + } ifelse + } loop +} bind odef + +/GetCIDSystemInfoFromFile { % GetCIDSystemInfoFromFile + + % This procedure reads resource files with 'token', + % executing the tokens untill /CIDSystemInfo appears to be defined. + % Normally the resource file creates a new dictionary on + % dictionary stack and defines /CIDSystemInfo in it. + % + % Returns an empty dictionary if no CIDSystemInfo is found. + + RESMPDEBUG { (cidcm GetCIDSystemInfoFromFile beg) = } if + //.prs_dict begin + /.prsFile exch def + /.prsResult //.prs_empty def + /.prsDictCount countdictstack def + RESMPDEBUG { (cidcm GetCIDSystemInfoFromFile will PrescanFile.) = } if + { //PrescanFile } stopped pop + //.prs_dict /.prsResult get + end + RESMPDEBUG { (cidcm GetCIDSystemInfoFromFile end) = } if +} bind def + +/GetCIDSystemInfo { % GetCIDSystemInfo + + % Retrieve CSI, using caches. + + RESMPDEBUG { (cidcm GetCIDSystemInfo beg) = } if + /Category findresource begin % /InstName + dup ResourceStatus + { + pop 2 lt { + FindResource /CIDSystemInfo .knownget not { + //.prs_empty + } if % CSI + } { % /InstName + currentdict /GetCIDSystemInfoFromMap .knownget { + exec + } if + dup type /nametype eq + { + RESMPDEBUG { (cidcm GetCIDSystemInfo got a name.) = } if + //.prs_dict Category get % /InstName CSIs + dup 2 index known + //enable_cache and { + RESMPDEBUG { (cidcm GetCIDSystemInfo from cache.) = } if + exch get % CSI + } { + RESMPDEBUG { (cidcm GetCIDSystemInfo from file.) = } if + exch % CSIs /InstName + dup //path_buffer ResourceFileName % CSIs /InstName (path) + RESMPDEBUG { (cidcm GetCIDSystemInfo from file ) print dup = } if + currentglobal exch true setglobal % CSIs /InstName g (path) + mark exch % CSIs /InstName g [ (path) + { (r) file } stopped { + cleartomark //.prs_empty + } { + exch 1 index % CSIs /InstName g file [ file + //GetCIDSystemInfoFromFile stopped { + cleartomark closefile //.prs_empty + } { + exch pop exch closefile + } ifelse + } ifelse % CSIs /InstName g CSI + exch setglobal % CSIs /InstName CSI + dup 4 1 roll % CSI CSIs /InstName CSI + put % CSI + RESMPDEBUG { + (cidcm GetCIDSystemInfo got from file : <<) print + dup { exch //=string cvs print ( ) print + //=string cvs print ( ) print + } forall + (>>) = + } if + } ifelse + } if + } ifelse + } { + pop //.prs_empty + } ifelse + end + RESMPDEBUG { (cidcm GetCIDSystemInfo end) = } if +} bind def + +/IsCompatibleCSI { % IsCompatibleCSI + + % The CSI in a CIDFont may be an array, a dict, or null. + % If it is an array, it must be of 1 element, which is a dict. + % In this case the dict is used for testing the compatibility. + % Two dicts are compatible iff they contain same /Ordering and /Registry. + + exch % CSI-F CSI-M + { dup type /arraytype eq { + dup length 1 ne { + pop pop false exit + } if + 0 get + } if % CSI-F CSI-M + dup type /dicttype ne { + pop pop false exit + } if % CSI-F <> + exch % <> CSI-F + dup type /dicttype ne { + pop pop false exit + } if % <> <> + true % <> <> bEQ + [/Registry /Ordering] { + 2 index 1 index .knownget not { + 1234567 + } if % <> <> bEQ /key vF + exch % <> <> bEQ vF /key + 4 index exch .knownget not { + 7654321 + } if % <> <> bEQ vF vM + eq and % <> <> bEQ + } forall + exch pop exch pop % bEQ + exit + } loop +} bind def + +/IsWellComposed { % IsWellComposed + + % Check if the given CIDFont and CMap have compatible CSIs. + exch % /CMapName /CIDFontName + /CIDFont //GetCIDSystemInfo exec % /CMapName CSI-F + dup type /dicttype eq { + dup length 0 ne { + exch % CSI-F /CMapName + /CMap //GetCIDSystemInfo exec % CSI-F CSI-M + //IsCompatibleCSI exec % bool + } { + pop pop false + } ifelse + } { + pop pop false + } ifelse +} bind def + +/IsComposedFont { % IsComposedFont true + % IsComposedFont false + + % Check if the given font name may be decomposed into CIDFont.CMap, CIDFont-CMap + % or into CIDFont--CMap, such that CIDFont and CMap have compatible CSIs. + % FontName + dup type /stringtype ne { + //name_buffer cvs + } if % (FontName) + { dup length 2 sub -1 1 { + % (FontName) i + 2 copy get dup //minus eq exch //period eq or { + 2 copy 2 copy % (FontName) i (FontName) i (FontName) i + 2 copy get //minus eq { + 2 copy 1 sub get //minus eq { + 1 sub + } if + } if % (FontName) i (FontName) i (FontName) i0 + 0 exch getinterval cvn % (FontName) i (FontName) i /CIDFontName + 3 1 roll % (FontName) i /CIDFontName (FontName) i + 1 add dup % (FontName) i /CIDFontName (FontName) i1 i1 + 5 index length % (FontName) i /CIDFontName (FontName) i1 i1 l + exch sub getinterval cvn % (FontName) i /CIDFontName /CMapName + 2 copy //IsWellComposed exec { % (FontName) i /CIDFontName /CMapName + 4 2 roll pop pop % /CIDFontName /CMapName + stop + } if + pop pop pop + } { + pop + } ifelse % (FontName) + } for + pop + } stopped +} bind def + +/ComposeName { % ComposeName + dup dup 5 2 roll % (scr) (scr) /CIDFont /CMap (scr) + 3 2 roll exch cvs length dup % (scr) (scr) /CMap l0 l0 + 4 -1 roll exch //minus put % (scr) /CMap l0 + 1 add dup % (scr) /CMap l1 l1 + 3 index dup length % (scr) /CMap l1 l1 (scr) L + 2 index sub % (scr) /CMap l1 l1 (scr) LT + 3 2 roll % (scr) /CMap l1 (scr) LT l1 + exch getinterval % (scr) /CMap l1 (scrT) + 3 2 roll exch cvs length % (scr) l1 l2 + add 0 exch getinterval % (CIDFont-CMap) +} bind def + +% Redefine the /Font category with CIDFont-CMap construction : + +% The following code supposes that the following names are not +% defined in the old /Font category dictionary : +% /IsComposedFont, /IsWellComposed . + + +/Font /Category findresource dup length dict copy begin + +/FindResource { % FindResource + dup //ResourceStatus exec { + pop pop //FindResource exec + } { + dup //IsComposedFont exec { % /FontName /CIDFontName /CMapName + exch [ exch ] composefont % inst + } { + //FindResource exec + } ifelse + } ifelse +} bind def + +/ResourceStatus { % ResourceStatus true + % ResourceStatus false + dup //ResourceStatus exec { + 3 2 roll pop true % nStatus nSize true + } { + //IsComposedFont exec { % /CIDFontName /CMapName + /CMap resourcestatus { % /CIDFontName nStatusM nSizeM + exch pop exch % nSizeM /CIDFontName + /CIDFont resourcestatus { % nSizeM nStatusF nSizeF + exch pop % nSizeF nSizeM + dup 0 ge { + exch dup 0 ge { + add + } { + exch pop + } ifelse + } { + pop + } ifelse % nSize + 2 exch true % nStatus nSize true + } { + pop pop pop false % work around buggy resource file + } ifelse + } { + pop pop pop false % work around buggy resource file + } ifelse + } { + false + } ifelse + } ifelse +} bind def + +/ResourceForAll { %