--- ghostscript-8.62.dfsg.1.orig/debian/copyright
+++ ghostscript-8.62.dfsg.1/debian/copyright
@@ -0,0 +1,430 @@
+This package was debianized by Masayuki Hatta (mhatta) <mhatta@debian.org> on
+Tue, 23 Mar 2004 19:46:37 +0900.
+
+It was downloaded from ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/GPL/
+
+Note: The directory Resource/CMap is stripped from the source tarball,
+as its content is not GPL-licensed (only verbatim copying is allowed).
+Also, jasper/doc/*.pdf have been removed since their corresponding
+sources are not available.
+
+Upstream Author: artofcode LLC. <http://artofcode.com/>
+
+Copyright:
+
+From LICENSE:
+
+  Copyright (c) Artifex Software Inc., All Rights Reserved.
+
+  The files in the src, lib, toolbin, examples, ijs, doc and man
+  directories (folders) and any subdirectories (sub-folders) thereof
+  are part of GPL Ghostscript.
+
+  The files in the Resource directory and any subdirectories thereof
+  are also part of GPL Ghostscript, with the explicit exception of the
+  files in the CMap subdirectory. The CMap files are copyright Adobe
+  Systems Incorporated and covered by a separate license which permits
+  only verbatim distribution.
+
+  (Non-free CMap files have been removed from the Debian package. -
+  ed.)
+
+  GPL Ghostscript is free software; you can redistribute it and/or
+  modify it under the terms of version 2 of the GNU General Public
+  License as published by the Free Software Foundation.
+
+  GPL Ghostscript is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without 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 so you can know your rights and
+  responsibilities.  It should be in a file named doc/COPYING. If not,
+  write to the Free Software Foundation, Inc., 51 Franklin Street,
+  Fifth Floor, Boston, MA 02110-1301, USA.
+
+ ---
+
+  GPL Ghostscript contains an implementation of techniques covered by
+  US Patents 5,055,942 and 5,917,614, and corresponding international
+  patents. These patents are licensed for use with GPL Ghostscript
+  under the following grant:
+
+  Whereas, Raph Levien (hereinafter "Inventor") has obtained patent
+  protection for related technology (hereinafter "Patented
+  Technology"), Inventor wishes to aid the the GNU free software
+  project in achieving its goals, and Inventor also wishes to increase
+  public awareness of Patented Technology, Inventor hereby grants a
+  fully paid up, nonexclusive, royalty free license to practice the
+  patents listed below ("the Patents") if and only if practiced in
+  conjunction with software distributed under the terms of any version
+  of the GNU General Public License as published by the Free Software
+  Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+  USA. Inventor reserves all other rights, including without
+  limitation, licensing for software not distributed under the GNU
+  General Public License. 
+
+   5055942 Photographic image reproduction device using digital
+           halftoning to screen images allowing adjustable coarseness
+
+   5917614 Method and apparatus for error diffusion screening of
+           images with improved smoothness in highlight and shadow
+           regions
+
+On Debian systems, the complete text of the GNU General Public License
+Version 2 can be found in `/usr/share/common-licenses/GPL-2'.
+
+The GPL Ghostscript distribution contains several third party
+software, and some of them are governed by different licenses instead
+of GNU GPL2.
+
+For files in the icclib directory:
+
+  *************************************************************************
+  Copyright (c) 1997-2002 Graeme W. Gill
+
+  Permission is hereby granted, to use, copy, modify, distribute, and
+  sell this software and its associated documentation files (the
+  "Software") for any purpose without fee, provided that:
+
+	1) The above copyright notices and this permission notice
+	   accompany all source code copies of the Software and
+	   related documentation.  and
+
+	2) If executable code based on the Software only is
+	   distributed, then the accompanying documentation must
+	   aknowledge that "this software is based in part on the work
+	   of Graeme W. Gill".  and
+
+	3) It is accepted that Graeme W. Gill (the "Author") accepts
+	   NO LIABILITY for damages of any kind.  The Software is
+	   provided without fee by the Author "AS-IS" and without
+	   warranty of any kind, express, implied or otherwise,
+	   including without limitation, any warranty of
+	   merchantability or fitness for a particular purpose.  and
+
+	4) These conditions apply to any software derived from or
+	   based on the Software, not just to the unmodified library.
+	   and
+
+	5) Except as contained in this notice, or in the required
+	   acknowledgment, the name of the Author, or the name of any
+	   organization or company affiliated with the Author may not
+	   be used in any advertising or publicity relating to the
+	   Software, without the specific, prior written permission of
+	   the Author.
+
+  *************************************************************************
+
+For files in the jasper directory:
+
+    JasPer License Version 2.0
+
+  Copyright (c) 1999-2000 Image Power, Inc.
+  Copyright (c) 1999-2000 The University of British Columbia
+  Copyright (c) 2001-2003 Michael David Adams
+
+  All rights reserved.
+
+  Permission is hereby granted, free of charge, to any person (the
+  "User") obtaining a copy of this software and associated
+  documentation files (the "Software"), to deal in the Software
+  without restriction, including without limitation the rights to use,
+  copy, modify, merge, publish, distribute, and/or sell copies of the
+  Software, and to permit persons to whom the Software is furnished to
+  do so, subject to the following conditions:
+
+  1.  The above copyright notices and this permission notice (which
+  includes the disclaimer below) shall be included in all copies or
+  substantial portions of the Software.
+
+  2.  The name of a copyright holder shall not be used to endorse or
+  promote products derived from the Software without specific prior
+  written permission.
+
+  THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
+  LICENSE.  NO USE OF THE SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT
+  UNDER THIS DISCLAIMER.  THE SOFTWARE IS PROVIDED BY THE COPYRIGHT
+  HOLDERS "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
+  RIGHTS.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+  CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY
+  DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+  ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+  OF THIS SOFTWARE.  NO ASSURANCES ARE PROVIDED BY THE COPYRIGHT
+  HOLDERS THAT THE SOFTWARE DOES NOT INFRINGE THE PATENT OR OTHER
+  INTELLECTUAL PROPERTY RIGHTS OF ANY OTHER ENTITY.  EACH COPYRIGHT
+  HOLDER DISCLAIMS ANY LIABILITY TO THE USER FOR CLAIMS BROUGHT BY ANY
+  OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS
+  OR OTHERWISE.  AS A CONDITION TO EXERCISING THE RIGHTS GRANTED
+  HEREUNDER, EACH USER HEREBY ASSUMES SOLE RESPONSIBILITY TO SECURE
+  ANY OTHER INTELLECTUAL PROPERTY RIGHTS NEEDED, IF ANY.  THE SOFTWARE
+  IS NOT FAULT-TOLERANT AND IS NOT INTENDED FOR USE IN
+  MISSION-CRITICAL SYSTEMS, SUCH AS THOSE USED IN THE OPERATION OF
+  NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS,
+  AIR TRAFFIC CONTROL SYSTEMS, DIRECT LIFE SUPPORT MACHINES, OR
+  WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE SOFTWARE OR SYSTEM
+  COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE PHYSICAL OR
+  ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES").  THE COPYRIGHT
+  HOLDERS SPECIFICALLY DISCLAIM ANY EXPRESS OR IMPLIED WARRANTY OF
+  FITNESS FOR HIGH RISK ACTIVITIES.
+
+  (jasper/doc/*.pdf have been removed since their corresponding
+  sources are not available - ed.)
+
+For files in the jbig2dec directory:
+
+    The files in this directory (folder) and any subdirectories
+  (sub-folders) thereof are part of jbig2dec, with the exception of
+  certain source files included to support portability which are
+  marked otherwise in their copyright headers.
+
+  jbig2dec is free software; you can redistribute it and/or modify it
+  under the terms of version 2 of the GNU General Public License as
+  published by the Free Software Foundation.
+
+  This software is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without 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 in the file named COPYING. If not, write to
+  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  Boston, MA 02110-1301, USA. 
+
+  In addition, specific permission is given to link jbig2dec to or
+  compile jbig2dec into AFPL Ghostscript and to distribute same under
+  the AFPL license.
+
+For files in the jpeg directory:
+
+  (Quoted from jpeg/README)
+
+  LEGAL ISSUES
+  ============
+
+  The authors make NO WARRANTY or representation, either express or
+  implied, with respect to this software, its quality, accuracy,
+  merchantability, or fitness for a particular purpose.  This software
+  is provided "AS IS", and you, its user, assume the entire risk as to
+  its quality and accuracy.
+
+  This software is copyright (C) 1991-1998, Thomas G. Lane.  All
+  Rights Reserved except as specified below.
+
+  Permission is hereby granted to use, copy, modify, and distribute
+  this software (or portions thereof) for any purpose, without fee,
+  subject to these conditions: (1) If any part of the source code for
+  this software is distributed, then this README file must be
+  included, with this copyright and no-warranty notice unaltered; and
+  any additions, deletions, or changes to the original files must be
+  clearly indicated in accompanying documentation.  (2) If only
+  executable code is distributed, then the accompanying documentation
+  must state that "this software is based in part on the work of the
+  Independent JPEG Group".  (3) Permission for use of this software is
+  granted only if the user accepts full responsibility for any
+  undesirable consequences; the authors accept NO LIABILITY for
+  damages of any kind.
+
+  These conditions apply to any software derived from or based on the
+  IJG code, not just to the unmodified library.  If you use our work,
+  you ought to acknowledge us.
+
+  Permission is NOT granted for the use of any IJG author's name or
+  company name in advertising or publicity relating to this software
+  or products derived from it.  This software may be referred to only
+  as "the Independent JPEG Group's software".
+
+  We specifically permit and encourage the use of this software as the
+  basis of commercial products, provided that all warranty or
+  liability claims are assumed by the product vendor.
+
+  ansi2knr.c is included in this distribution by permission of
+  L. Peter Deutsch, sole proprietor of its copyright holder, Aladdin
+  Enterprises of Menlo Park, CA.  ansi2knr.c is NOT covered by the
+  above copyright and conditions, but instead by the usual
+  distribution terms of the Free Software Foundation; principally,
+  that you must include source code if you redistribute it.  (See the
+  file ansi2knr.c for full details.)  However, since ansi2knr.c is not
+  needed as part of any program generated from the IJG code, this does
+  not limit you more than the foregoing paragraphs do.
+
+  The Unix configuration script "configure" was produced with GNU
+  Autoconf.  It is copyright by the Free Software Foundation but is
+  freely distributable.  The same holds for its supporting scripts
+  (config.guess, config.sub, ltconfig, ltmain.sh).  Another support
+  script, install-sh, is copyright by M.I.T. but is also freely
+  distributable.
+
+  It appears that the arithmetic coding option of the JPEG spec is
+  covered by patents owned by IBM, AT&T, and Mitsubishi.  Hence
+  arithmetic coding cannot legally be used without obtaining one or
+  more licenses.  For this reason, support for arithmetic coding has
+  been removed from the free JPEG software.  (Since arithmetic coding
+  provides only a marginal gain over the unpatented Huffman mode, it
+  is unlikely that very many implementations will support it.)  So far
+  as we are aware, there are no patent restrictions on the remaining
+  code.
+
+  The IJG distribution formerly included code to read and write GIF
+  files.  To avoid entanglement with the Unisys LZW patent, GIF
+  reading support has been removed altogether, and the GIF writer has
+  been simplified to produce "uncompressed GIFs".  This technique does
+  not use the LZW algorithm; the resulting GIF files are larger than
+  usual, but are readable by all standard GIF decoders.
+
+  We are required to state that
+      "The Graphics Interchange Format(c) is the Copyright property of
+      CompuServe Incorporated.  GIF(sm) is a Service Mark property of
+      CompuServe Incorporated."
+
+  (The LZW Patent is now void - ed.)
+
+For files in the libpng directory:
+  
+  This copy of the libpng notices is provided for your convenience.
+  In case of any discrepancy between this copy and the notices in the
+  file png.h that is included in the libpng distribution, the latter
+  shall prevail.
+
+  COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
+
+  If you modify libpng you may insert additional notices immediately
+  following this sentence.
+
+  libpng versions 1.2.6, August 15, 2004, through 1.2.18, May 15,
+  2007, are Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and
+  are distributed according to the same disclaimer and license as
+  libpng-1.2.5 with the following individual added to the list of
+  Contributing Authors
+
+     Cosmin Truta
+
+  libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3,
+  2002, are Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
+  distributed according to the same disclaimer and license as
+  libpng-1.0.6 with the following individuals added to the list of
+  Contributing Authors
+
+     Simon-Pierre Cadieux
+     Eric S. Raymond
+     Gilles Vollant
+
+  and with the following additions to the disclaimer:
+
+     There is no warranty against interference with your enjoyment of
+     the library or against infringement.  There is no warranty that
+     our efforts or the library will fulfill any of your particular
+     purposes or needs.  This library is provided with all faults, and
+     the entire risk of satisfactory quality, performance, accuracy,
+     and effort is with the user.
+
+  libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000,
+  are Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are
+  distributed according to the same disclaimer and license as
+  libpng-0.96, with the following individuals added to the list of
+  Contributing Authors:
+
+     Tom Lane
+     Glenn Randers-Pehrson
+     Willem van Schaik
+
+  libpng versions 0.89, June 1996, through 0.96, May 1997, are
+  Copyright (c) 1996, 1997 Andreas Dilger Distributed according to the
+  same disclaimer and license as libpng-0.88, with the following
+  individuals added to the list of Contributing Authors:
+
+     John Bowler
+     Kevin Bracey
+     Sam Bushell
+     Magnus Holmgren
+     Greg Roelofs
+     Tom Tanner
+
+  libpng versions 0.5, May 1995, through 0.88, January 1996, are
+  Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
+
+  For the purposes of this copyright and license, "Contributing
+  Authors" is defined as the following set of individuals:
+
+     Andreas Dilger
+     Dave Martindale
+     Guy Eric Schalnat
+     Paul Schmidt
+     Tim Wegner
+
+  The PNG Reference Library is supplied "AS IS".  The Contributing
+  Authors and Group 42, Inc. disclaim all warranties, expressed or
+  implied, including, without limitation, the warranties of
+  merchantability and of fitness for any purpose.  The Contributing
+  Authors and Group 42, Inc.  assume no liability for direct,
+  indirect, incidental, special, exemplary, or consequential damages,
+  which may result from the use of the PNG Reference Library, even if
+  advised of the possibility of such damage.
+
+  Permission is hereby granted to use, copy, modify, and distribute
+  this source code, or portions hereof, for any purpose, without fee,
+  subject to the following restrictions:
+
+  1. The origin of this source code must not be misrepresented.
+
+  2. Altered versions must be plainly marked as such and must not be
+  misrepresented as being the original source.
+
+  3. This Copyright notice may not be removed or altered from any
+   source or altered source distribution.
+
+  The Contributing Authors and Group 42, Inc. specifically permit,
+  without fee, and encourage the use of this source code as a
+  component to supporting the PNG file format in commercial products.
+  If you use this source code in a product, acknowledgment is not
+  required but would be appreciated.
+
+
+  A "png_get_copyright" function is available, for convenient use in
+  "about" boxes and the like:
+
+     printf("%s",png_get_copyright(NULL));
+
+  Also, the PNG logo (in PNG format, of course) is supplied in the
+  files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
+
+  Libpng is OSI Certified Open Source Software.  OSI Certified Open
+  Source is a certification mark of the Open Source Initiative.
+
+  Glenn Randers-Pehrson
+  glennrp at users.sourceforge.net
+  May 15, 2007
+
+For files in the zlib directory:
+
+  Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jean-loup Gailly        Mark Adler
+  jloup@gzip.org          madler@alumni.caltech.edu
+
+
+  The data format used by the zlib library is described by RFCs
+  (Request for Comments) 1950 to 1952 in the files
+  http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt
+  (deflate format) and rfc1952.txt (gzip format).
--- ghostscript-8.62.dfsg.1.orig/debian/gs-common.preinst
+++ ghostscript-8.62.dfsg.1/debian/gs-common.preinst
@@ -0,0 +1,45 @@
+#!/bin/sh
+# preinst script for gs-common
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <new-preinst> `install'
+#        * <new-preinst> `install' <old-version>
+#        * <new-preinst> `upgrade' <old-version>
+#        * <old-preinst> `abort-upgrade' <new-version>
+#
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    install|upgrade)
+	# Do away with update-alternative for /usr/bin/gs, we have one
+	# grand unified Ghostscript now!
+        if dpkg --compare-versions "$2" lt-nl "8.62.dfsg.1-3"; then
+            update-alternatives --remove-all gs || true
+            update-alternatives --remove-all gs.1 || true
+        fi
+
+    ;;
+
+    abort-upgrade)
+    ;;
+
+    *)
+        echo "preinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
--- ghostscript-8.62.dfsg.1.orig/debian/ghostscript.postinst
+++ ghostscript-8.62.dfsg.1/debian/ghostscript.postinst
@@ -0,0 +1,54 @@
+#! /bin/sh
+# postinst script for ghostscript
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+#
+
+case "$1" in
+    configure)
+	# /usr/bin/ps2pdf is now controlled by update-alternatives
+	update-alternatives --install /usr/bin/ps2pdf \
+	  ps2pdf /usr/bin/ps2pdf14 50
+	update-alternatives --install /usr/bin/ps2pdf \
+	  ps2pdf /usr/bin/ps2pdf12 30
+	update-alternatives --install /usr/bin/ps2pdf \
+	  ps2pdf /usr/bin/ps2pdf13 40
+
+	# Make sure the substitution file for Ghostscript exists
+	if ! defoma-subst check-rule ghostscript; then
+	  defoma-subst new-rule ghostscript
+	fi
+
+	defoma-app -t update gs
+
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
--- ghostscript-8.62.dfsg.1.orig/debian/rules
+++ ghostscript-8.62.dfsg.1/debian/rules
@@ -0,0 +1,142 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+
+DEB_AUTO_UPDATE_AUTOCONF=yes
+
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/class/autotools.mk
+include /usr/share/cdbs/1/rules/dpatch.mk
+
+# for building w/ FAPI
+#FT_CPPFLAGS = $(shell pkg-config --cflags freetype2)
+#FT_LDFLAGS=$(shell pkg-config --libs freetype2)
+#FT_OPTS := FT_BRIDGE=1 FT_CFLAGS=$(FT_CPPFLAGS) FT_LIB=$(FT_LDFLAGS)
+
+#ifeq ($(DEB_HOST_ARCH),s390)
+#	CC=gcc-3.4
+#else
+#	CC=gcc
+#endif
+
+# Handling DEB_BUILD_OPTIONS
+#export DEB_BUILD_OPTIONS=noopt,nostrip
+CFLAGS:=$(CFLAGS) -g $(if $(findstring noopt,$(DEB_BUILD_OPTIONS)),-O0,-O2) 
+
+DEB_CONFIGURE_SCRIPT_ENV := CFLAGS="$(CFLAGS) -fPIC" CPPFLAGS="$(FT_CPPFLAGS)" LDFLAGS="-lpaper $(FT_LDFLAGS)"
+DEB_CONFIGURE_EXTRA_FLAGS := --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info \
+	--with-ijs --with-jbig2dec --with-jasper --with-x --disable-gtk \
+	--enable-dynamic --with-omni --enable-cups --disable-compile-inits \
+	--with-drivers=ALL \
+	--with-fontpath=/var/lib/defoma/gs.d/dirs/fonts:/usr/share/cups/fonts:/usr/share/ghostscript/fonts:/usr/local/lib/ghostscript/fonts:/usr/share/fonts:/usr/share/fonts/type1/gsfonts
+DEB_MAKE_BUILD_TARGET := STDDIRS $(FT_OPTS)
+DEB_MAKE_INSTALL_TARGET := soinstall install-shared install-cups install-contrib-extras \
+		DESTDIR=$(CURDIR)/debian/ghostscript \
+		prefix=/usr \
+		datadir=/usr/share \
+		gsdir=/usr/share/ghostscript \
+		docdir=/usr/share/doc/ghostscript \
+		exdir=/usr/share/doc/ghostscript/examples \
+		CUPSSERVERBIN=/usr/lib/cups \
+		CUPSSERVER=/usr/lib/cups \
+		CUPSSERVERROOT=/etc/cups \
+		CUPSDATA=/usr/share/ppd/ghostscript
+
+fail-if-cmaps-exist:
+	@test ! -d Resource/CMap || ( \
+		echo; \
+		echo 'ERROR: Source contains CMaps that are declared non-free.'; \
+		echo '       Please strip Resource/CMap from source!'; \
+		exit 1)
+
+fail-if-jasper-pdfs-exist:
+	@test ! -f jasper/doc/*.pdf || ( \
+		echo; \
+		echo 'ERROR: Source contains JasPer PDFs that are declared non-free.'; \
+		echo '       Please remove PDFs from source!'; \
+		exit 1)
+
+clean::
+	-cd jasper && $(MAKE) distclean
+	[ ! -f Makefile ] || $(MAKE) soclean
+	[ ! -f Makefile ] || $(MAKE) distclean
+        # These are somehow left...
+	-rm -rf sobin soobj cups/pstopxl cups/pstoraster
+
+build/ghostscript::
+	#/usr/bin/docbook-to-man debian/ghostscript.sgml > ghostscript.1
+
+build/ghostscript-x::
+	$(MAKE) obj/X11.so
+
+build/libgs8::
+	$(MAKE) so
+
+install/ghostscript::
+	# Move *.types and *.convs files from /etc/cups to
+	# /usr/share/cups/mime, so that they are not considered conffiles
+	mkdir -p $(CURDIR)/debian/ghostscript/usr/share/cups/mime/
+	mv $(CURDIR)/debian/ghostscript/etc/cups/*.types \
+	   $(CURDIR)/debian/ghostscript/usr/share/cups/mime/ 2> /dev/null || :
+	mv $(CURDIR)/debian/ghostscript/etc/cups/*.convs \
+	   $(CURDIR)/debian/ghostscript/usr/share/cups/mime/ 2> /dev/null || :
+	rmdir --ignore-fail-on-non-empty $(CURDIR)/debian/ghostscript/etc/cups
+	rmdir --ignore-fail-on-non-empty $(CURDIR)/debian/ghostscript/etc
+
+	# Install DeFoMa script
+	install -m 644 $(CURDIR)/debian/gs.defoma $(CURDIR)/debian/ghostscript/usr/share/defoma/scripts
+
+	# Remove some of the scripts
+	rm $(CURDIR)/debian/ghostscript/usr/bin/unix-lpr.sh $(CURDIR)/debian/ghostscript/usr/bin/lprsetup.sh $(CURDIR)/debian/ghostscript/usr/bin/pv.sh $(CURDIR)/debian/ghostscript/usr/bin/fixmswrd.pl
+
+	# Do not include the Ghostscript loader executable with GTK support
+	rm -f $(CURDIR)/debian/ghostscript/usr/bin/gsx
+
+	# Rename /usr/bin/gsc, to not conflict with gambc (bug LP #118785).
+	mv $(CURDIR)/debian/ghostscript/usr/bin/gsc $(CURDIR)/debian/ghostscript/usr/bin/gs
+
+	# Some convenience links
+	ln -s /usr/bin/gs $(CURDIR)/debian/ghostscript/usr/bin/ghostscript
+	ln -s /usr/share/man/man1/gs.1 $(CURDIR)/debian/ghostscript/usr/share/man/man1/ghostscript.1
+
+	# Remove C headers, they go into the libgs-dev package
+	rm -rf $(CURDIR)/debian/ghostscript/usr/include
+
+install/ghostscript-x::
+	# Separate the dynamic library for X support into the ghostscript-x
+	# package
+	mkdir -p $(CURDIR)/debian/ghostscript-x/usr/lib/
+	mv $(CURDIR)/debian/ghostscript/usr/lib/ghostscript $(CURDIR)/debian/ghostscript-x/usr/lib/
+
+install/ghostscript-doc::
+	# Move documentation into the ghostscript-doc package
+	mkdir -p $(CURDIR)/debian/ghostscript-doc/usr/share/
+	mv $(CURDIR)/debian/ghostscript/usr/share/doc $(CURDIR)/debian/ghostscript-doc/usr/share/
+	# Install cjk examples too
+	install -d  $(CURDIR)/debian/ghostscript-doc/usr/share/doc/ghostscript/examples/cjk
+	install -m 644 $(CURDIR)/examples/cjk/* $(CURDIR)/debian/ghostscript-doc/usr/share/doc/ghostscript/examples/cjk
+
+binary-post-install/ghostscript::
+	# for non-arch-all builds, we need to remove the
+	# documentation manually, since install/ghostscript-doc is not called
+	# for them
+	rm -f $(CURDIR)/debian/ghostscript/usr/share/doc/ghostscript/*.htm
+	rm -f $(CURDIR)/debian/ghostscript/usr/share/doc/ghostscript/*.html
+	rm -f $(CURDIR)/debian/ghostscript/usr/share/doc/ghostscript/*.css
+	rm -f $(CURDIR)/debian/ghostscript/usr/share/doc/ghostscript/README
+	rm -rf $(CURDIR)/debian/ghostscript/usr/share/doc/ghostscript/examples
+
+install/libgs8::
+	# Move libgs into the libgs8 package
+	mkdir -p $(CURDIR)/debian/libgs8/usr/lib/
+	rm -f $(CURDIR)/debian/ghostscript/usr/lib/libgs*
+	cp sobin/libgs.so.8.* $(CURDIR)/debian/libgs8/usr/lib/
+	cp -P sobin/libgs.so.8 $(CURDIR)/debian/libgs8/usr/lib/
+
+	# Move libgs.so link into the libgs-dev package
+	# and install also the C headers there
+	mkdir -p $(CURDIR)/debian/libgs-dev/usr/lib/
+	cp -P sobin/libgs.so $(CURDIR)/debian/libgs-dev/usr/lib/
+	mkdir -p $(CURDIR)/debian/libgs-dev/usr/include/ghostscript
+	install -m 644 $(CURDIR)/src/iapi.h $(CURDIR)/debian/libgs-dev/usr/include/ghostscript
+	install -m 644 $(CURDIR)/src/ierrors.h $(CURDIR)/debian/libgs-dev/usr/include/ghostscript
+	install -m 644 $(CURDIR)/src/gdevdsp.h $(CURDIR)/debian/libgs-dev/usr/include/ghostscript
--- ghostscript-8.62.dfsg.1.orig/debian/gs-common.prerm
+++ ghostscript-8.62.dfsg.1/debian/gs-common.prerm
@@ -0,0 +1,43 @@
+#! /bin/sh
+# prerm script for ghostscript
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <prerm> `remove'
+#        * <old-prerm> `upgrade' <new-version>
+#        * <new-prerm> `failed-upgrade' <old-version>
+#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+#        * <deconfigured's-prerm> `deconfigure' `in-favour'
+#          <package-being-installed> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    remove)
+	;;
+    upgrade)
+        ;;
+    deconfigure)
+        ;;
+    failed-upgrade)
+        ### This script does nothing, but it's presence
+	### is needed for etch->lenny upgrades
+	### see bug #495703
+        ;;
+    *)
+        echo "prerm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
--- ghostscript-8.62.dfsg.1.orig/debian/libgs8.shlibs
+++ ghostscript-8.62.dfsg.1/debian/libgs8.shlibs
@@ -0,0 +1 @@
+libgs 8 libgs8 (>= 8.62.dfsg.1), libgs8 (<= 8.63.dfsg.1)
--- ghostscript-8.62.dfsg.1.orig/debian/control
+++ ghostscript-8.62.dfsg.1/debian/control
@@ -0,0 +1,137 @@
+Source: ghostscript
+Section: text
+Priority: optional
+Maintainer: Masayuki Hatta (mhatta) <mhatta@debian.org>
+Build-Depends: autoconf, automake1.9 | automaken, debhelper (>= 4.1.0), dpatch, freeglut3-dev | libglut-dev, libjpeg-dev, libpaper-dev, libpng-dev, libz-dev, libxt-dev, libxext-dev, libx11-dev, libcups2-dev (>= 1.3.8-1lenny4~bpo40+1), libcupsimage2-dev (>= 1.1.20final+rc1-4), libice-dev, libsm-dev, pkg-config, libfontconfig1-dev, cdbs
+Standards-Version: 3.8.0
+Uploaders: Torsten Landschoff <torsten@debian.org>, Jonas Smedegaard <dr@jones.dk>
+
+Package: ghostscript
+Architecture: any
+Conflicts: gs (<< 8.62), gs-esp (<< 8.62), gs-gpl (<< 8.62), gs-afpl (<< 8.62), gs-aladdin (<< 8.62), gs-cjk-resource (<< 1.20010910-1), gs-pdfencrypt (<< 7.00), gs-common (<< 8.62)
+Replaces: gs (<< 8.62), gs-esp (<< 8.62), gs-gpl (<< 8.62), gs-afpl (<< 8.62), gs-aladdin (<< 8.62), gs-pdfencrypt (<< 7.00), gs-common (<< 8.62)
+Provides: gs-pdfencrypt, postscript-viewer, gs-common
+Recommends: psfontmgr
+Suggests: ghostscript-x, hpijs
+Depends: ${shlibs:Depends}, gsfonts (>= 6.0-1), defoma, debconf | debconf-2.0, debianutils (>= 1.6), libgs8 (= ${binary:Version})
+Description: The GPL Ghostscript PostScript/PDF interpreter
+ Ghostscript is used for PostScript/PDF preview and printing.  Usually as
+ a back-end to a program such as ghostview, it can display PostScript and PDF
+ documents in an X11 environment.
+ .
+ Furthermore, it can render PostScript and PDF files as graphics to be printed
+ on non-PostScript printers. Supported printers include common
+ dot-matrix, inkjet and laser models.
+ .
+ Package gsfonts contains a set of standard fonts for Ghostscript.
+ .
+ The Ghostscript home page is at http://www.ghostscript.com/
+
+Package: gs
+Architecture: all
+Priority: extra
+Depends:  ghostscript, ghostscript-x
+Description: Transitional package
+ This dummy package is provided for a smooth transition from the
+ previous gs package (the package name has been changed to ghostscript).
+ It may safely be removed after installation.
+
+Package: gs-esp
+Architecture: all
+Priority: extra
+Depends:  ghostscript, ghostscript-x
+Description: Transitional package
+ This dummy package is provided for a smooth transition from the
+ previous gs-esp package (the package is replaced by ghostscript).
+ It may safely be removed after installation.
+
+Package: gs-gpl
+Architecture: all
+Priority: extra
+Depends:  ghostscript, ghostscript-x
+Description: Transitional package
+ This dummy package is provided for a smooth transition from the
+ previous gs-gpl package (the package is replaced by ghostscript).
+ It may safely be removed after installation.
+
+Package: gs-aladdin
+Architecture: all
+Priority: extra
+Depends:  ghostscript, ghostscript-x
+Description: Transitional package
+ This dummy package is provided for a smooth transition from the
+ previous  gs-aladdin package (the package is replaced by ghostscript).
+ It may safely be removed after installation.
+
+Package: gs-common
+Architecture: all
+Priority: extra
+Depends:  ghostscript, ghostscript-x
+Description: Transitional package
+ This dummy package is provided for a smooth transition from the
+ previous gs-.../gs-common combo (the packages are replaced by ghostscript).
+ It may safely be removed after installation.
+
+Package: ghostscript-x
+Architecture: any
+Depends: ${shlibs:Depends}, ghostscript (>= 8.62)
+Conflicts: ghostscript (<< 8.62)
+Provides: gs, gs-esp, gs-gpl, gs-afpl, gs-aladdin
+Description: The GPL Ghostscript PostScript/PDF interpreter - X Display support
+ Ghostscript is used for PostScript/PDF preview and printing.  Usually as
+ a back-end to a program such as ghostview, it can display PostScript and PDF
+ documents in an X11 environment.
+ .
+ The Ghostscript home page is at http://www.ghostscript.com/
+ .
+ This package contains the Ghostscript output device for X11. It is in
+ a separate package to allow the main package (ghostscript) to be installed
+ on X-less servers.
+
+Package: ghostscript-doc
+Section: doc
+Architecture: all
+Depends: ${shlibs:Depends}, ghostscript (>= 8.62)
+Conflicts: ghostscript (<< 8.62)
+Description: The GPL Ghostscript PostScript/PDF interpreter - Documentation
+ Ghostscript is used for PostScript/PDF preview and printing.  Usually as
+ a back-end to a program such as ghostview, it can display PostScript and PDF
+ documents in an X11 environment.
+ .
+ The Ghostscript home page is at http://www.ghostscript.com/
+ .
+ This package contains the documentation of Ghostscript. As this documentation
+ is only interesting for printer driver developers or advanced users, it is
+ in this separate package which can be left out in space-restricted
+ installations, like for example live CDs.
+
+Package: libgs8
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: The Ghostscript PostScript/PDF interpreter Library
+ Ghostscript is used for PostScript/PDF preview and printing.  Usually as
+ a back-end to a program such as ghostview, it can display PostScript and PDF
+ documents in an X11 environment.
+ .
+ The Ghostscript home page is at http://www.ghostscript.com/
+ .
+ This package provides the Ghostscript library which makes the 
+ facilities of Ghostscript available to applications.
+
+Package: libgs-dev
+Section: libdevel
+Architecture: any
+Depends: ${shlibs:Depends}, libgs8
+Conflicts: libgs-esp-dev (<< 8.62)
+Replaces: libgs-esp-dev (<< 8.62)
+Provides: libgs-esp-dev
+Description: The Ghostscript PostScript Library - Development Files
+ Ghostscript is used for PostScript/PDF preview and printing.  Usually as
+ a back-end to a program such as ghostview, it can display PostScript and PDF
+ documents in an X11 environment.
+ .
+ The Ghostscript home page is at http://www.ghostscript.com/
+ .
+ This package provides the development files for the Ghostscript library 
+ which makes the facilities of Ghostscript available to applications.
--- ghostscript-8.62.dfsg.1.orig/debian/gs.preinst
+++ ghostscript-8.62.dfsg.1/debian/gs.preinst
@@ -0,0 +1,45 @@
+#!/bin/sh
+# preinst script for gs
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <new-preinst> `install'
+#        * <new-preinst> `install' <old-version>
+#        * <new-preinst> `upgrade' <old-version>
+#        * <old-preinst> `abort-upgrade' <new-version>
+#
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    install|upgrade)
+	# Do away with update-alternative for /usr/bin/gs, we have one
+	# grand unified Ghostscript now!
+        if dpkg --compare-versions "$2" lt-nl "8.62.dfsg.1-2"; then
+            update-alternatives --remove-all gs || true
+            update-alternatives --remove-all gs.1 || true
+        fi
+
+    ;;
+
+    abort-upgrade)
+    ;;
+
+    *)
+        echo "preinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
--- ghostscript-8.62.dfsg.1.orig/debian/ghostscript.preinst
+++ ghostscript-8.62.dfsg.1/debian/ghostscript.preinst
@@ -0,0 +1,45 @@
+#!/bin/sh
+# preinst script for ghostscript
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <new-preinst> `install'
+#        * <new-preinst> `install' <old-version>
+#        * <new-preinst> `upgrade' <old-version>
+#        * <old-preinst> `abort-upgrade' <new-version>
+#
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    install|upgrade)
+	# Do away with update-alternative for /usr/bin/gs, we have one
+	# grand unified Ghostscript now!
+        if dpkg --compare-versions "$2" lt-nl "8.62.dfsg.1-3"; then
+            update-alternatives --remove-all gs || true
+            update-alternatives --remove-all gs.1 || true
+        fi
+
+    ;;
+
+    abort-upgrade)
+    ;;
+
+    *)
+        echo "preinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
--- ghostscript-8.62.dfsg.1.orig/debian/README.Debian
+++ ghostscript-8.62.dfsg.1/debian/README.Debian
@@ -0,0 +1,124 @@
+ghostscript for Debian
+======================
+
+Reconstruction
+--------------
+
+This package is merged from the former gs-gpl, gs-esp, and gs-common
+packages, see debian/NEWS file.
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>, Sun, 13 Jan 2008 07:58:25 +0900
+
+Removal of non-free files
+-------------------------
+
+I removed the directory Resource/Cmap and its contents from the
+upstream source tarball since their licensing policy does not conform
+to the DFSG.  Also, jaspter/doc/*.pdf have been removed since their
+corresponding sources are not available.
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>, Wed Apr 28 06:31:45 2004
+
+Font handling with Defoma
+-------------------------
+
+The font configuration for Ghostscript is now controlled by Defoma.
+
+If you want to update the font configuration, run:
+
+  defoma-app update gs
+
+Then the Defoma-configuration script for gs is called.
+
+Following describes what the Defoma-configuration script for gs does.
+
+Ghostscript accepts "type1", "type3", "gsfontderivative", "truetype",
+"cid", "cmap" and "psprint" categories.  gs registers all PostScript
+fonts available to gs in the postscript category with <gs>/ added to
+the front of their names.
+
+Ghostscript creates files under /var/lib/defoma/gs.d/dirs.  This
+directory contains CMap and fonts subdirectories, and the CMap
+subdirectory is symlinked under /usr/share/ghostscript.
+
+If you want to have a certain PostScript font name which is not
+provided by registered fonts as RealName or Alias, you can have such a
+font name substituted. Run
+
+  defoma-subst edit-rule ghostscript
+
+to edit the subst-rule. 
+
+For example, if you want to have Charter-Bold available whose charset
+is ISO8859-1 and which has serifed, proportionally-spaced bold face,
+you should add the following line:
+
+Charter-Bold --Charset,* ISO8859-1 --GeneralFamily Roman --Weight Bold
+--Width Variable --Shape Upright Serif
+
+Then Charter-Bold will be substituted by the most similar font and
+become available.
+
+The way to have CJK font substituted changes compared to the old
+gs-aladdin (6.50-x).  If you want to have Korean PostScript font,
+Dotum-Medium-KSC-EUC-H available whose actual font name is
+Dotum-Medium and KSC-EUC-H is a name of CMap, you should add the
+following line:
+
+Dotum-Medium --CIDRegistry,* Adobe --CIDOrdering,* Korea1 --Weight Medium --Shape Upright
+
+Then Dotum-Medium-* (* is a name of Korean CMap) are substituted and
+become available.
+
+Following is a list of hinttypes specific to gs.
+
+* GS-OriginFont, GS-OriginID: These hinttypes are used in
+  gsfontderivative category. The content of a font within this
+  category is a small PostScript program that generates a 
+  derivative font from a certain substantial type1 or type3 font.
+  Generally a derivative font has bold or oblique shape, while
+  the original font has normal upright shape.
+  A font within this category must specify the original font and
+  its RealName with GS-OriginFont and GS-OriginID hinttypes.
+
+1. type1 and type3
+
+Fonts within this category are handled in the same way. Symlink to the
+fontfile is created under /var/lib/defoma/gs.d/dirs/fonts, and its
+font name, font file and alises are listed in Fontmap.
+
+2. gsfontderivative
+
+Fonts within this category are handled in the similar way. Only one
+difference is that dependency on the origin of the font is registered
+when fonts are registered to Id cache.
+
+3. truetype
+
+Fonts within this category are handled in the same way as type1 and
+type3 if the font doesn't include CJK glyphs. CJK truetype fonts goes
+different. It is treated as a cid font.
+
+4. cid
+
+Symlink to the font file is created under
+/var/lib/defoma/gs.d/dirs/fonts, and its font name, font file and
+aliases are listed in CIDFnmap.  Using registered CMaps which belong
+to the same CIDRegistry and CIDOrdering, <CID-FontName>-<CMapName> are
+registered in postscript category.
+
+5. cmap
+
+Symlink to the CMap file is created under
+/var/lib/defoma/gs.d/dirs/CMap.  Using registered CID fonts which
+belong to the same CIDRegistry and CIDOrdering,
+<CID-FontName>-<CMapName> are registered in postscript category.
+
+6. psprint
+
+Fonts installed in a PostSciprt printer should be previewable by
+ghostscript.  They are registered to psprint category, so the script
+accepts this category and add the fonts and their hints to a
+subst-rule.
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>, Sat, 21 Oct 2006 05:21:11 +0900
--- ghostscript-8.62.dfsg.1.orig/debian/changelog
+++ ghostscript-8.62.dfsg.1/debian/changelog
@@ -0,0 +1,1247 @@
+ghostscript (8.62.dfsg.1-3.1~bpo40+1) etch-backports; urgency=low
+
+  * Backport testing version for backports.org
+  * Explicitly specify backports.org version of libcups2-dev in Build-Dep
+
+ -- Micah Anderson <micah@debian.org>  Sat,  3 Jan 2009 18:29:19 -0700
+
+ghostscript (8.62.dfsg.1-3.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Add (empty) gs-common.prerm to enable upgrades
+    etch->lenny to succeed when the old gs-common.prerm
+    fails. Closes: #495703.
+    Thanks to Niko Tyni for the bug report and analysis.
+
+ -- Thomas Viehmann <tv@beamnet.de>  Sun, 31 Aug 2008 22:26:34 +0200
+
+ghostscript (8.62.dfsg.1-3) unstable; urgency=low
+
+  * Acknowledged NMU, thanks madcoder - closes: #453903
+  * Bumped to Standards-Version: 3.8.0.
+  * Fixed fakeroot build error, thanks Bob Lindell - closes: #484712
+  * ghostscript-doc.doc-base: Made file mask *.htm* instead of *.html.
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Sun, 20 Jul 2008 08:59:17 +0900
+
+ghostscript (8.62.dfsg.1-2.1) unstable; urgency=high
+
+  * Non-maintainer upload.
+  * Add patches/31_fix-gc-sigbus.dpatch to avoid sigbus/segfaults on sparc and
+    hppa (and probably errors on other architectures as well).
+    Closes: #453903.
+
+ -- Pierre Habouzit <madcoder@debian.org>  Wed, 14 May 2008 15:25:03 +0200
+
+ghostscript (8.62.dfsg.1-2) unstable; urgency=low
+
+  * ghostscript: Tighten up versioned dependency on libgs8 
+    - closes: #470253
+  * preinsts for each dummy packages now call update-alternatives
+    to make sure gs symlinks are removed before the new ghostscript 
+    package is installed - closes: #449173
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Thu, 13 Mar 2008 02:30:51 +0900
+
+ghostscript (8.62.dfsg.1-1) unstable; urgency=low
+
+  * New upstream release.
+  * Removed Resource/Font for a minor licensing problem.  
+    I'm now contacting the upstream, so they might be back soon.
+  * Fixed in the upstream - closes: #418706
+    See also http://bugs.ghostscript.com/show_bug.cgi?id=689600
+  * Now it can handle DEB_BUILD_OPTS as expected - closes: #446819
+  * 10_ijs_krgb_support.dpatch: incorporated into the upstream, removed.
+  * 27_cups_filters_with_buffered_input.dpatch: incorporated into 
+    the upstream, removed. 
+  * 28_print_encrypted_PDFs_from_adobe_reader_8.dpatch: incorporated into
+    the upstream, removed.
+  * 31_CVE-2008-0411.dpatch: incorporated into the upstream, removed. 
+    thanks Nico Golde for NMU.
+  * shlibs: loosen the libgs8 shlibs version specification, 
+    thanks Sune Vuorela for pointing it out - closes: #469218
+  * control: ghostscript doesn't provide gs, gs-esp, gs-gpl, gs-afpl 
+    and gs-aladdin anymore - ghostscript-x does - closes: #448702, #462678
+  * control: tighten up versioned Conflicts on dummy packages.
+  * rules: removes /usr/share/doc/ghostscript/README.gz explicitly 
+    - closes: #460692
+  * postinst: removes old /etc/alternative symlinks explicitly 
+    - closes: #447495, #449061
+ 
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Sun, 09 Mar 2008 10:39:31 +0800
+
+ghostscript (8.61.dfsg.1-1.1) unstable; urgency=high
+
+  * Non-maintainer upload by security team.
+  * Fix stack based buffer overflow in the zseticcspace() function possibly
+    leading to arbitrary code exeuction via a crafted ps file.
+    (31_CVE-2008-0411.dpatch; Closes: #468190).
+  * Adjusting libgs shlibs file to match the new version number.
+
+ -- Nico Golde <nion@debian.org>  Sat, 01 Mar 2008 11:18:27 +0100
+
+ghostscript (8.61.dfsg.1-1) unstable; urgency=low
+
+  [Masayuki Hatta]
+
+  * New upstream release.
+  * Now pdf2dsc can handle PageLabels properly - closes: #266166
+  * Bumped up Standards-Version to 3.7.3 (no physical changes).
+  * NEWS, README.Debian, copyright: Revised.
+  * NEWS: Fixed wrong version number - closes: #454514, #454515
+  * Sorted out dpatches:
+    01-09: Debian-specific patches
+    10-19: Bigger 3rd party patches (KRGB & CJKV)
+    20-: Temporary bug fixes (should be incorporated into the upstream)
+  * debian/patches/29_gs_css_fix.dpatch: Fixes a syntax error in gs.css
+    - closes: #457118
+  * debian/patches/30_ps2pdf_man_improvement.dpatch: Improved manpages for 
+    ps2pdf - closes: #193461
+
+  [Till Kamppeter]
+
+  * debian/patches/09_ijs_krgb_support.dpatch: Adapted to upstream changes.
+  * debian/rules: Updated CUPS-related variables for "make install" calls.
+  * debian/rules: Remove /usr/include/ghostscript from the ghostscript
+    package, they go into libgs-dev.
+  * debian/patches/40_cups_filters_with_buffered_input.dpatch: Modified
+    cups/psto* filters to let Ghostscript always use buffered input. This
+    works around a Ghostscript bug which prevents printing encrypted PDF
+    files with Adobe Reader 8.1.1 and Ghostscript built as shared library
+    (Ghostscript bug #689577, Ubuntu bug LP: #172264)
+  * debian/patches/42_print_encrypted_PDFs_from_adobe_reader_8.dpatch:
+    Fixed printing of encrypted PDF files from Adobe Reader 8.1.1.  This
+    is the real fix now and not only a workaround. (Ghostscript bug
+    #689577, Ubuntu bug LP: #172264).
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Sun, 13 Jan 2008 02:13:25 +0900
+
+
+ghostscript (8.61.dfsg.1~svn8187-3) unstable; urgency=low
+
+  * Maintainer upload.
+  * Acknowledged NMU, thanks Cyril - closes: #422723, #430337
+  * 06_libpaper_support.dpatch: fixed to cope with being called repeatedly.  Thanks Carlos Garcia Campos - closes: #453048
+  * debian/watch: Now it works.  Thanks Raphael Geissert - closes: #449310
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Wed, 05 Dec 2007 06:06:23 +0900
+
+ghostscript (8.61.dfsg.1~svn8187-2.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Fix long-standing implicit pointer conversions by backporting a fix from
+    SVN revision 8232, as pointed by Dann Frazier (Closes: #422723):
+     - 40_implicit_pointer_conversion_fix.dpatch added for this purpose. It
+       also contains an additional tweak for src/gpmisc.c so that no attempt
+       to use fdopen64() is made, fdopen() is the way to go. That tweak also
+       solves the FTBFS on GNU/kFreeBSD (Closes: #430337).
+     - DEB_AUTO_UPDATE_AUTOCONF set to “yes” in debian/rules so that the
+       configure script gets updated at build time (the needed build
+       dependencies are already there).
+
+ -- Cyril Brulebois <cyril.brulebois@enst-bretagne.fr>  Sat, 24 Nov 2007 06:35:17 +0100
+
+ghostscript (8.61.dfsg.1~svn8187-2) unstable; urgency=low
+
+  * Maintainer upload, acknowledged NMU - closes: #447188
+  * Made all dummy packages depend on ghostscript AND ghostscript-x, so
+    their nominal "functionality" should virtually be the equivalent to
+    the former gs|gs-gpl|gs-esp|gs-afpl packages - closes: #446825
+  * Revised debian/copyright - closes: #444468, #444467
+  * debian/rules: Clean files from package ghostscript which are moved to
+    ghostscript-doc on i386 (where arch-all packages are built). On all
+    non-i386 platforms the files remained in the main package, which
+    causes file conflicts and unnecessary package growth - closes: #446927
+    (fix from Ubuntu)
+  * debian/patches/06_libpaper_support.dpatch: Added missing "#include
+    <paper.h>", this made Ghostscript not working at all on IA64 - closes:
+    #428055 (fix from Ubuntu)
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Wed, 31 Oct 2007 02:27:38 +0900
+
+ghostscript (8.61.dfsg.1~svn8187-1.1) unstable; urgency=high
+
+  * Non-maintainer upload by testing security team.
+  * Included 31-CVE-2007-2721.dpatch to fix remote
+    user-assisted denial of service via malformed image
+    files in embedded copy of jasper (Closes: #447188)
+
+ -- Nico Golde <nion@debian.org>  Sat, 20 Oct 2007 12:46:44 +0200
+
+ghostscript (8.61.dfsg.1~svn8187-1) unstable; urgency=low
+
+  * New upstream release - closes: #437848, #291452
+  * Important CJK handling fixes are absent from the current 8.60 or SVN, so I
+    decided to use this SVN snapshots until the issue is fixed (Ubuntu does the same).  
+  * Can be built with the modern GCC now - closes: #440427
+  * Complete re-organization: gs-gpl, gs-esp and gs-afpl are discontinued and
+    gone altogether, and now there's only one ghostscript package - closes: #52603, #159516, #434791, #394628, #394350, #295377, #246983, #416253, #323867
+  * Imported Ubuntu's various improvements on packaging.
+    Thanks for Ubuntu people, especially Till Kamppeter.
+  * Sorted out dummy packages - closes: #321989, #401137
+  * Separated -doc package - closes: #138549, #391082, #389872
+  * Separated -x package, the main ghostscrpt doesn't depend X anymore - cloese: #76814, #393980, #240215
+  * Separated libgs* packages - closes: #344351
+  * Enabled cdj880 driver - closes: #157067
+  * Enabled Lexmark 3200 driver - closes: #157067
+  * Enabled pcl3 driver - closes: #259075
+  * Added /usr/share/fonts/type1/gsfonts to fontpath - closes: #434310
+  * Sorted out licensing information.
+  * Removed jasper/doc/*.pdf since those are shipped without
+    "transparent" copies a la GFDL. 
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Sun, 14 Oct 2007 22:24:34 +0900
+
+ghostscript (8.61.dfsg.1~svn8187-0ubuntu4) hardy; urgency=low
+
+  * debian/rules: Clean /usr/share/doc/*.html files from package
+    'ghostscript', too (incomplete fix in previous versions), since they are
+    already shipped in ghostscript-doc and thus have a file conflict.
+    (LP: #153218)
+
+ -- Martin Pitt <martin.pitt@ubuntu.com>  Mon, 22 Oct 2007 17:21:21 +0200
+
+ghostscript (8.61.dfsg.1~svn8187-0ubuntu3) gutsy; urgency=low
+
+  [ Till Kamppeter ]
+  * debian/rules: Install missing *.upp files (usptream bug, LP: #150985).
+
+  [ Martin Pitt ]
+  * debian/rules: Clean files from package ghostscript which are moved to
+    ghostscript-doc on i386 (where arch-all packages are built). On all
+    non-i386 platforms the files remained in the main package, which causes
+    file conflicts and unnecessary package growth. This is a quick hack for
+    Gutsy. In Hardy, this horribly broken build system should be fixed
+    properly.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com>  Tue, 09 Oct 2007 23:00:28 +0200
+
+ghostscript (8.61.dfsg.1~svn8187-0ubuntu2) gutsy; urgency=low
+
+  * debian/patches/06_libpaper_support.dpatch: Added missing 
+    "#include <paper.h>", this made Ghostscript not working at all
+    on IA64 (Fixes LP: #130842, thanks to Ralph Giles from ghostscript.com
+    for the fix and to Matthias Klose for the IA64 test machine).
+  * debian/ghostscript.links: Bumped version number in link for CJK fonts
+    (Fixes LP: #139911).
+
+ -- Till Kamppeter <till.kamppeter@gmail.com>  Tue, 18 Sep 2007 10:00:58 +0100
+
+ghostscript (8.61.dfsg.1~svn8187-0ubuntu1) gutsy; urgency=low
+
+  * New upstream release
+    o SVN snapshot rev 8187
+    o CJK patches from Koji Otani to fix several issues with CJK text
+      (should fix http://bugs.ghostscript.com/show_bug.cgi?id=689304).
+      These patches were also applied to ESP Ghostscript and having them
+      in Gutsy's GPL GS will avoide regressions against Feisty's ESP GS.
+    o Minor bug fixes from upstream.
+
+ -- Till Kamppeter <till.kamppeter@gmail.com>  Mon, 13 Aug 2007 21:49:58 +0100
+
+ghostscript (8.60.dfsg.6-0ubuntu2) gutsy; urgency=low
+
+  * debian/patches/30_assorted_script_fixes.dpatch: Back out the update
+    to pdf2eps, causing build failures on the buildds.
+  * debian/control: Build-depend on freeglut3-dev | libglut-dev.
+
+ -- Matthias Klose <doko@ubuntu.com>  Fri, 10 Aug 2007 10:50:08 +0200
+
+ghostscript (8.60.dfsg.6-0ubuntu1) gutsy; urgency=low
+
+  * Final release of Ghostscript 8.60
+    o First official release of GPL Ghostscript with merged functionality
+      of ESP Ghostscript.
+    o Closes: LP: #128801
+  * debian/patches/50_gv_kghostview_compatibility.dpatch: Removed workaround,
+    real fix done upstream
+
+ -- Till Kamppeter <till.kamppeter@gmail.com>  Thu, 02 Aug 2007 02:13:11 +0100
+
+ghostscript (8.60.dfsg.5-0ubuntu1) gutsy; urgency=low
+
+  * New upstream release
+    o SVN snapshot rev 8127
+    o Carried over some bug fixes from ESP Ghostscript (see
+      http://bugs.ghostscript.com/show_bug.cgi?id=689315)
+    o Minor bug fixes from upstream.
+  * debian/patches/30_assorted_script_fixes.dpatch: Updated.
+
+ -- Till Kamppeter <till.kamppeter@gmail.com>  Mon, 16 Jul 2007 17:43:58 +0100
+
+ghostscript (8.60.dfsg.4-0ubuntu1) gutsy; urgency=low
+
+  * New upstream release
+    o SVN snapshot rev 8050
+    o From now on we take snapshots from the trunk, as the merger of ESP and
+      GPL Ghostscript is completed and moved into the trunk. The branch
+      "gs-esp-gpl-merger" has been removed.
+    o Minor bug fixes from upstream.
+  * debian/patches/50_gv_kghostview_compatibility.dpatch: Updated.
+
+ -- Till Kamppeter <till.kamppeter@gmail.com>  Thu, 14 Jun 2007 2:53:50 -0700
+
+ghostscript (8.60.dfsg.3-0ubuntu2) gutsy; urgency=low
+
+  * debian/control:
+    + Make gsfonts a Depends instead of Recommends as it was before on the
+      gs-common package. This fixes the GStreamer build failure.
+
+ -- Sebastian Dröge <slomo@ubuntu.com>  Tue, 12 Jun 2007 21:15:25 +0200
+
+ghostscript (8.60.dfsg.3-0ubuntu1) gutsy; urgency=low
+
+  * New upstream release
+    o SVN snapshot rev 8025, branch "gs-esp-gpl-merger"
+    o Minor bug fixes from upstream.
+  * debian/rules: Renamed executable /usr/bin/gsc to /usr/bin/gs to not
+    conflict with the gambc package (Fixes LP: #118785).
+
+ -- Till Kamppeter <till.kamppeter@gmail.com>  Wed, 06 Jun 2007 17:22:27 +0100
+
+ghostscript (8.60.dfsg.2-0ubuntu2) gutsy; urgency=low
+
+  * debian/ghostscript.preinst:
+    - Only remove the gs alternatives on upgrades from before
+      8.60.dfsg.2-0ubuntu1, and don't let the lack of alternatives fail
+      installation.
+    - Remove "rm -rf /etc/ghostscript /etc/gs-gpl" insanity.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com>  Fri, 01 Jun 2007 14:18:02 +0200
+
+ghostscript (8.60.dfsg.2-0ubuntu1) gutsy; urgency=low
+
+  * New upstream release
+    o SVN snapshot rev 7997, branch "gs-esp-gpl-merger"
+    o Added functionality to compile with shared libgs and without GTK
+      via "--disable-gtk" configure option (feature overtaken from ESP
+      Ghostscript).
+    o Minor bug fixes from upstream.
+  * debian/patches/40_fix_imdi_patch.dpatch: Removed, fixed upstream.
+
+ -- Till Kamppeter <till.kamppeter@gmail.com>  Wed, 23 May 2007 11:54:11 +0100
+
+ghostscript (8.60.dfsg.1-0ubuntu2) gutsy; urgency=low
+
+  * debian/rules: Added forgotten option "--disable-gtk" to the "./configure"
+    command line, this prevented ghostscript from building on the build
+    servers.
+  * Added missing version number to "Conflicts: gs-common" in the ghostscript
+    package.
+  * Do away with the update-alternatives, we have one grand unified Ghostscript
+    now!
+
+ -- Till Kamppeter <till.kamppeter@gmail.com>  Tue, 22 May 2007 21:38:21 +0100
+
+ghostscript (8.60.dfsg.1-0ubuntu1) gutsy; urgency=low
+
+  * This is the first Debian/Ubuntu package reflecting Artifex' move to do
+    the head development of Ghostscript under GPL and the merger of ESP
+    Ghostscript into GPL Ghostscript which followed after that.
+  * Renamed from "gs-gpl" to "ghostscript" on agreement with Debian Ghostscript
+    maintainer Masayuki Hatta
+  * New upstream release
+    o SVN snapshot rev 7979, branch "gs-esp-gpl-merger"
+    o This is the head of the Ghostscript development now. There is no separate
+      AFPL Ghostscript any more. See http://www.ghostscript.com/awki/News.
+    o All extra functionality of ESP Ghostscript is merged into GPL
+      Ghostscript now and the development of ESP Ghostscript is discontinued.
+      See http://www.cups.org/espgs/.
+  * debian/control: Added tags and transitional packages to make this package
+    (ghostscript) replacing gs-esp and gs-afpl (Closes: LP#47432, LP#47458,
+    LP#75894, LP#83769, LP#103595, LP#105752, LP#108159, LP#109304).
+  * debian/rules, debian/control, debian/dirs, debian/ghostscript.*,
+    debian/README.Debian, debian/gs.defoma: Merged in gs-common.
+  * debian/control: Set Ubuntu maintainer.
+  * debian/rules: Activated full functionality by appropriate "./configure"
+    command line options. This is now the one and only Ghostscript in Ubuntu
+    Linux.
+  * debian/rules: Do not build static executable, to reduce the build time
+    to one half of the former build time of gs-esp (or to not double the
+    build time of ghostscript).
+  * debian/rules, debian/control: Split package into ghostscript, libgs8,
+    libgs-dev, and ghostscript-x, like we did with gs-esp, also split off
+    documentation into ghostcript-doc.
+  * debian/NEWS: Added info about merger of ESP and GPL Ghostscript
+  * debian/patches/: Removed 01_gsdir_for_gs-gpl.dpatch, 
+    02_fontpath_for_debian, 20_additional_drivers, 21_additional_drivers_mak,
+    22_gdi_support, 23_hl12x0_support: They are not needed any more after
+    merging in the ESP GS functionality and moving to "ghostscript" as 
+    package name.
+  * debian/patches/09_ijs_krgb_support.dpatch: Updated to version 1.3
+    of the KRGB patch (from HPLIP 1.7.3).
+  * debian/patches/04_gdevxini_segv_fix.dpatch: Removed, it makes the X
+    device being reopened on every page size change and breaks output with
+    tools like gv (gv hangs without showing any page).
+  * debian/patches/40_fix_imdi_patch.dpatch: Fixed imdi directory location
+    in src/devs.mak
+  * debian/patches/50_gv_kghostview_compatibility.dpatch: Fixed compatibility
+    with GUIs like gv and kghostview (see upstream bug 689237,
+    http://bugs.ghostscript.com/show_bug.cgi?id=689237, note: reintroduces
+    upstream bug 687125 but that bug is much less a problem).
+  * debian/ghostscript.postinst: update-alternatives configuration does not get
+    correctly updated when the obsolete gs-esp and gs-afpl packages get removed
+    via the transitional packages. Let the post-install script of the
+    ghostscript package reset update-alternatives to auto mode for such a case.
+
+ -- Till Kamppeter <till.kamppeter@gmail.com>  Mon, 21 May 2007 13:00:21 +0100
+
+gs-gpl (8.56.dfsg.1-1) unstable; urgency=low
+
+  * New upstream release.
+  * man/gs.1: Paths are adjusted to Debian - closes: #405049
+  * man/gs.1: Fixed various typos - closes: #323534
+  * Fixed insecure /tmp usage in toolbin scripts (CAN-2005-2352) - closes: #291373
+  * Now opdfread.ps is installed - closes: #401755
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Sat, 05 May 2007 00:58:39 +0900
+
+gs-gpl (8.54.dfsg.1-5) unstable; urgency=high
+
+  * Oops, I forgot to apply dpatch #20, so the large amount of drivers are missing in -4.  Mea Culpa.
+  * Added Brother HL-1240/1250 support - closes: #280693
+  * Make sure /etc/gs-gpl is removed - closes: #333474
+  * Remove Fontmap and Fontmap.GS from the package - closes: #325400
+  * Provides the index.html symlink - closes: #303792
+  * Added binary-indep rules in debian/rules - closes: #267398
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Sat, 21 Oct 2006 10:25:56 +0900
+
+gs-gpl (8.54.dfsg.1-4) unstable; urgency=high
+
+  * Brought back KRGB colorspace support to ijs - closes: #355616
+  * Brought back Samsung GDI support - closes: #365337
+  * gs depends on gs-gpl | gs-esp - closes: #297024
+  * rules, gs-gpl.links: s/8.15/8.54/g.
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Wed, 18 Oct 2006 21:33:33 +0900
+
+gs-gpl (8.54.dfsg.1-3) unstable; urgency=low
+
+  * Supports big post table for CMap - closes: #205055
+  * Fixed a potential segv problem in src/gdevxini.c, thanks Ian Jackson for providing a patch - closes: #254206
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Wed, 18 Oct 2006 03:48:57 +0900
+
+gs-gpl (8.54.dfsg.1-2) unstable; urgency=high
+
+  * Made qsort call in src/gxfcopy.c 64-bit clean, thanks Andreas - closes: #390875
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Thu, 12 Oct 2006 09:28:26 +0900
+
+gs-gpl (8.54.dfsg.1-1) unstable; urgency=low
+
+  * New upstream release - closes: #373805
+  * Acknowledged NMUs, since crash on ppc has been fixed in the upstream  - closes: #357326, #327288, #324796
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Tue, 26 Sep 2006 01:25:04 +0900
+
+gs-gpl (8.50-1.1) unstable; urgency=high
+
+  * Non-maintainer upload.
+  * debian/patches/00list: Re-enable patch 10_powerpc_crash_fix; upstream
+    delayed to fix after the 8.50 release. Cures segfaults on ppc (again).
+    Thanks to Roger Leigh for testing. Closes: #357326
+
+ -- Daniel Kobras <kobras@debian.org>  Wed, 29 Mar 2006 14:22:21 +0200
+
+gs-gpl (8.50-1) unstable; urgency=low
+
+  * Works done at Codefest in Malaysia 2006.
+  * New upstream release - closes: #347637, #348834
+  * Updated debian/watch - closes: #354352
+  * Bumped to Standards-Version: 3.6.2.2 (no physical changes).
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Sun,  5 Mar 2006 10:46:33 +0900
+
+gs-gpl (8.15-4.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Use gcc-3.4 on s390. 
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 29 Dec 2005 10:52:10 +0000
+
+gs-gpl (8.15-4) unstable; urgency=low
+
+  * Apply patch 10 working around a crashing bug on powerpc (details in
+    the patch file itself). This closes: bug#324796, #325570, #327288
+    (thanks to Paul Brossier <piem@debian.org> for first reporting, Ian
+    Jackson <ian@davenant.greenend.org.uk> for providing the patch, and
+    Thomas Bushnell BSG <tb@becket.net> for shouting about the problem).
+
+ -- Jonas Smedegaard <dr@jones.dk>  Mon, 19 Sep 2005 15:15:44 +0200
+
+gs-gpl (8.15-3) unstable; urgency=low
+
+  * Bumped Standards-Version to 3.6.2.1 (no physical changes).
+  * Removed patch 04, since it doesn't affect at all.
+  * Enabled jbig2dec support.
+  * Now uses cidfmap generated by defoma.
+  * gs-gpl.links: make a symlink of CMap directory under /usr/share/gs-gpl/8.15/Resource.
+    NOTE: even if CMap files can be found somewhere in the font path, gs-esp
+    fails to prepare a composed font with CIDFont and CMap. This hack is
+    a workaround for "the CMap files must be put into the first directory of
+    the font path" problem.  Many Thanks Akira TAGOH for suggestion.
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Thu, 18 Aug 2005 03:38:59 +0900
+
+gs-gpl (8.15-2) unstable; urgency=low
+
+  * Drop stp patch:
+    + Remove stp-related parts of additional_drivers patches 20 and 21.
+    + Drop build-dependency on libgimpprint-dev.
+    + Remove stp note from README.Debian.
+    + Closes: bug#313026 (thanks to Roger Leigh <rleigh@debian.org>).
+
+ -- Jonas Smedegaard <dr@jones.dk>  Wed, 20 Jul 2005 14:05:26 +0200
+
+gs-gpl (8.15-1) unstable; urgency=low
+
+  * Repackaged source tarball with non-free CMaps stripped.
+  * Added check in debian/rules to fail if CMaps exist in the source.
+  * Mention in debian/copyright that CMaps are stripped.
+  * Add myself as uploader (acknowledged by Masayuki), and re-upload as
+    regular maintainer upload. This package closes: bug#280352 (thanks
+    to some anonymous(?) lilypond-lover offering virtual beer for
+    pushing this newer release, and Wouter Verhelst <wouter@debian.org>
+    for delivering the message).
+  * Correct UTF8-encoding of debian/changelog.
+
+ -- Jonas Smedegaard <dr@jones.dk>  Fri, 15 Jul 2005 13:27:05 +0200
+
+gs-gpl (8.15-0.1) unstable; urgency=low
+
+  * NMU of newer upstream release.
+  * Update and unfuzz patches (Note: source patched by
+    04_resourcedir_fix_for_debian slightly changed upstream, so may no
+    longer be needed).
+  * Use fine-grained X11 build-dependencies.
+
+ -- Jonas Smedegaard <dr@jones.dk>  Tue, 12 Jul 2005 10:52:11 +0200
+
+gs-gpl (8.01-5) unstable; urgency=high
+
+  * [NEWS] added a note on CJK TTF support.
+  * Revive Samsung GDI support, thanks plum - closes: #250180
+  * Revive Brother 7x0 GDI support - closes: #253479
+  * Added KRGB colorspace support to gs IJS driver - closes: #249166
+  * Fix SEGV on -sDEVICE=bbox - closes: #250290, #254877
+  * Adjust the margins for Epson drivers - closes: #48975
+  * Now Suggests hpijs - closes: #161953
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Sun, 15 Aug 2004 13:03:15 +0900
+
+gs-gpl (8.01-4) unstable; urgency=low
+
+  * Fixed the priority to 20 - closes: #246983
+  * Removed funky character in NEWS, thanks tbm for pointing it out.
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Wed,  5 May 2004 16:09:24 +0900
+
+gs-gpl (8.01-3) unstable; urgency=low
+
+  * Added Build-Dep: libgimpprint1-dev - closes: #244143
+  * Added lj3100sw driver - closes: #243963
+  * Revised description.
+  * Added notes on stp.
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Wed, 28 Apr 2004 05:40:05 +0900
+
+gs-gpl (8.01-2) unstable; urgency=low
+
+  * Added STP support culled from gimp-print 4.2.6.
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Tue, 13 Apr 2004 13:20:31 +0900
+
+gs-gpl (8.01-1) unstable; urgency=low
+
+  * New maintainer with torsten's blessing.  He is still a co-maintainer.
+  * The package name has been changed to gs-gpl.
+  * Now uses dpatch.
+  * Acknowledged NMUs - closes: #63163, #136652, #105179, #128314, #128416
+  * New upstream release - closes: #235686, #226088
+  * Revised copyright - closes: #226020
+  * Moved *map under /etc/gs-gpl - closes: #179244
+  * Do not run "update-alternatives --remove" when upgrade - closes: #163267
+  * Improved libpaper support - closes: #182268
+  * Set the font path appropriately - closes: #122828, #159816, #111874, #195931, #128955
+  * Removed stp driver - closes: #170550
+  * Added cfax driver - closes: #183438
+  * Set the priority to 20.
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Sat, 27 Mar 2004 00:00:05 +0900
+
+gs (7.07-1) unstable; urgency=low
+
+  * New upstream release.
+    + Uses /dev/urandom instead of /dev/random so does not block forever
+      waiting for quality random numbers (closes: #176850).
+  * Fix buffer overflow in gdevhpij.c (sizeof(PK) < PIPE_BUF...) and
+    remove the old patch (closes: #184345).
+  * debian/devices: Add pngalpha device.
+
+ -- Torsten Landschoff <torsten@debian.org>  Wed, 18 Jun 2003 10:51:53 +0200
+
+gs (7.06-1.1) unstable; urgency=low
+
+  * NMU
+  * Fix unconditional PIPE_BUF bug to build on GNU. (Closes: #184345)
+
+ -- Robert Millan <rmh@debian.org>  Sun, 13 Apr 2003 14:01:41 +0200
+
+gs (7.06-1) unstable; urgency=low
+
+  * New upstream release.
+  * debian/rules: 
+    + Include History7.htm into the changelog.
+    + Kill the /usr/share/man/de hierarchy which only documents stuff
+      in gs-common, not even the gs command.
+
+ -- Torsten Landschoff <torsten@debian.org>  Thu,  3 Apr 2003 11:34:02 +0200
+
+gs (7.05-3) unstable; urgency=low
+
+  * Reextract the source without running ntpdate on another console
+    and rebuild to fix the search path (closes: #173493, #173560).
+
+ -- Torsten Landschoff <torsten@debian.org>  Fri, 20 Dec 2002 15:54:29 +0100
+
+gs (7.05-2) unstable; urgency=low
+
+  * debian/control: Conflicts, Provides and Replaces gs-pdfencrypt - that
+    functionality is now included in gs itself and the old stuff breaks
+    with current gs (closes: #173222).
+  * Apply the patch from Florian Zumbiehl (identical to the upstream 
+    solution in newer releases) to fix the scaling of the psmono/psgray
+    driver - the output was scaled twice (closes: #171530).
+
+ -- Torsten Landschoff <torsten@debian.org>  Tue, 17 Dec 2002 11:44:44 +0100
+
+gs (7.05-1) unstable; urgency=low
+
+  * New upstream release. 
+  * debian/control: Use libpng3-dev instead libpng2-dev.
+
+ -- Torsten Landschoff <torsten@debian.org>  Sun,  1 Sep 2002 01:10:37 +0200
+
+gs (6.53-7) unstable; urgency=low
+
+  * debian/rules (binary-arch): Use rm -Rf to kill the man dir as rm -R
+    seems to ask for permission for some users (closes: #152037).
+
+ -- Torsten Landschoff <torsten@debian.org>  Wed, 28 Aug 2002 01:28:36 +0200
+
+gs (6.53-6) unstable; urgency=low
+
+  * debian/devices: Enable the ljet4d driver as suggested by 
+    Isidro Cachadiña Gutiérez.
+
+ -- Torsten Landschoff <torsten@debian.org>  Tue, 27 Aug 2002 11:29:17 +0200
+
+gs (6.53-5) unstable; urgency=low
+
+  * Apply the hpijs margin patch from 
+    http://hpinkjet.sourceforge.net/gdevijs2.patch (closes: #151869).
+
+ -- Torsten Landschoff <torsten@debian.org>  Thu,  4 Jul 2002 09:54:39 +0200
+
+gs (6.53-4) unstable; urgency=low
+
+  * Enable the hl1240 driver (the hl1250 should already be there, but it
+    seems it isn't...).
+  * debian/control: Change build dependency on libgimpprint-dev to 
+    libgimpprint1-dev.
+
+ -- Torsten Landschoff <torsten@debian.org>  Wed,  3 Jul 2002 19:36:58 +0200
+
+gs (6.53-3) unstable; urgency=high
+  
+  * debian/copyright: Include information about add on packages and
+    their licenses.
+
+  * debian/devices: Move x11 in front of x11alpha which has problems with 
+    mono displays at least (closes: #138844).
+  * src/unix-gcc.mak: Reenable the pipe device as it seems harmless after
+    all and many filters will break as they are using this feature to
+    circumvent the old Ghostscript problem with -sOutputFile=- when
+    the PostScript file writes text to stdout which interferes with the
+    printer commands... (closes: #138364).
+  * debian/control: Remove the reference to gs-pdfencrypt which is now 
+    obsolete as it is included in the official Ghostscript now.
+
+  * Lintian cleanup:
+    + Remove the extra license file /usr/share/doc/gs/COPYING.gz
+    + Copying.htm stays as it is since it is linked in the docs
+    + Convert History[56].htm to changes.gz using html2text to have an
+      upstream changelog.
+  * Included a few important patches from the Ghostscript CVS:
+    + Handle the margins from an ijs server correctly. It was my hope that 
+      this would account for #141608, but that does not seem to be the
+      case :(
+    + src/gdevx.c: Patched to use the "right" color depth on X11 for 
+      all cases. It used to take the actual number of bits to store
+      the color info as opposed to the number of bits actually used.
+    + lib/pdf2dsc.ps: This was broken because of the security fix. 
+      Patched to open the files before dropping privileges.
+
+  * lib/stcolor.ps: Compare the product name with "GNU Ghostscript" instead
+    of just "Ghostscript" to detect the interpreter (closes: #108120).
+  * src/gdevbj10.c: Apply the patch to fix the margins for the Canon BJ10e
+    submitted by Jim Hague (closes: #118078).
+  * debian/postinst: Link the manpage to gs.1.gz as well as a slave of 
+    the /usr/bin/gs alternative (closes: #122538).
+  * gimp-print/README.stp: Copy from gimp-print source tree.
+  * debian/docs: Install that file as $(docdir)/README.stp for those
+    using that driver and needing some infos (closes: #122099).
+    + debian/README.Debian: Refer the user to README.stp.
+  * debian/rules: Install the documentation of the pcl3 driver 
+    (closes: #39342).
+  * debian/docs: Add the README.lexmark of the lexmarkgs driver to the 
+    installed documentation.
+
+ -- Torsten Landschoff <torsten@debian.org>  Tue,  9 Apr 2002 02:29:10 +0200
+
+gs (6.53-2) unstable; urgency=high
+
+  * [SECURITY] src/unix-gcc.mak: Disable the pipe device as well since it
+    still allows executing arbitrary commands. I'll turn it back on when I am
+    sure it does not cause any security problems.
+
+ -- Torsten Landschoff <torsten@debian.org>  Thu,  7 Mar 2002 12:24:53 +0100
+
+gs (6.53-1) unstable; urgency=high
+
+  * New upstream release (closes: #130426).
+    + Fixes the security problem allowing reading all files and 
+      executing random commands (closes: #136652).
+  * debian/gen-makefile: Fix the BUILD_OPTIONS check (closes: #121871).
+  * Should fix the cjk stuff I hope (closes: #116516). In case there is 
+    another problem please could somebody provide me with information
+    how to check that it works? I am more than deeply frustrated with
+    getting readmes in japanese, web pages in japanese etc. That's just
+    deeply frustrating.
+
+ -- Torsten Landschoff <torsten@debian.org>  Wed,  6 Mar 2002 01:20:30 +0100
+
+gs (6.51-7) unstable; urgency=medium
+
+  * Urgency medium because it works around a bug breaking the package 
+    on one Debian architecture.
+  * src/gxobj.h [IA64]: Lock the object alignment to 16 bytes, as the
+    initial setjmp segfaults because of a bad alignment. jmp_buf needs
+    to be on 16 byte boundaries for this arch. This is a quick work
+    around until somebody comes up with a better fix - at least it 
+    gets gs to work on ia64 - I am not certain how much memory overhead
+    this causes though. Kudos to John Daily <jdaily@progeny.com> for his 
+    investigative work. I am leaving the bug open for now, since it does
+    not really fix the problem (#128314).
+
+ -- Torsten Landschoff <torsten@debian.org>  Tue,  8 Jan 2002 21:12:22 +0100
+
+gs (6.51-6) unstable; urgency=low
+
+  * ijs/*: Include the ijs driver from the hpijs source.
+  * debian/devices: Add ijs to the device list.
+  * src/contrib.mak: Include ijs/contrib.mak-6.51.add
+
+ -- Torsten Landschoff <torsten@debian.org>  Mon, 31 Dec 2001 15:00:45 +0100
+
+gs (6.51-5) unstable; urgency=low
+
+  * gimp-print/gdevstp.c: Update from gimp-print 4.1.99-rc1 (closes: #120009)
+
+ -- Torsten Landschoff <torsten@debian.org>  Fri, 16 Nov 2001 14:29:11 +0100
+
+gs (6.51-4) unstable; urgency=low
+
+  * src/gdevxini.c: Apply the patch supplied by Chanop Silpa-Anan
+    (closes: #85811). Thanks for your support, Chanop!
+  * debian/gen-makefile: Add /usr/share/ghostscript/common to the 
+    search path to get gs-pdfencrypt working again (closes: #119406).
+  * Download the lex5000 driver and include it in the build system
+    (closes: #58657).
+  * debian/devices: Add lx5000, lex5000.
+
+ -- Torsten Landschoff <torsten@debian.org>  Wed, 14 Nov 2001 16:47:57 +0100
+
+gs (6.51-3) unstable; urgency=low
+
+  * debian/devices: Enabled the cfax driver as requested by a user.
+
+ -- Torsten Landschoff <torsten@debian.org>  Fri,  9 Nov 2001 17:48:23 +0100
+
+gs (6.51-2) unstable; urgency=low
+
+  * Enable the Brother HL 1250 driver (closes: #63027). 
+
+ -- Torsten Landschoff <torsten@debian.org>  Wed, 17 Oct 2001 12:07:23 +0200
+
+gs (6.51-1) unstable; urgency=low
+
+  * New upstream release (closes: #101928).
+  * The new upstream release fixes many problems with the interpreter.
+    These bugs were fixed in Ghostscript 6.0:
+    + the font rendering problem in X11 is fixed (closes: #28579)
+    + ps2pdf does not write rectangles for polygons anymore (closes: #36200)
+    + the PDF which crashed gs does not lead to any problems (closes: #45361)
+    + a PDF which was inverted by pdf2ps stays black on
+      white now (closes: #49659).
+    + Philipp's file crashing gs does not do so anymore (closes: #58468)
+    + the invalid LanguageGroup in fonts does not cause gs to abort
+      anymore (closes: #67462).
+    + another PDF file which caused a crash is working now (closes: #89995)
+  * Rewrote the build system.
+  * The libjpeg sources are now included in the diff which is not nice
+    but working (closes: #87896).
+  * lynx is not used anymore to convert the changelog to plain text
+    (closes: #93722).
+  * The hpijs driver is now included upstream (closes: #106294).
+  * Driver support for the Apple Imagewriter is now included (closes: #110740).
+  * Make the package use update-alternatives so that different gs packages 
+    can cooperate (closes: #98227).
+  * Add in the gdi driver provided by Daniel Burrows (closes: #105885).
+  * debian/devices: Add omni to the list
+    + debian/gen-makefile: Add threading and dynamic linking support.
+  * debian/control: Add libglib1.2-dev to the Build-Depends as it is 
+    needed for the Omni driver.
+  * debian/devices: Go through the list of available drivers and add 
+    what we seem to be able to build. Among the new devices:
+    - cdj970 (closes: #112434)
+    - cljet5, cljet5pr, cljet5c
+    - dl2100, hl7x0
+    - the generic hpijs device (supports hpijs 0.97, closes: #102369, #110657)
+    - imagen, inferno, jetp3852
+    - lex2050, lex3200, lex5700
+    - oki4w
+    - plan9bm
+    - psrgb
+    - x11cmyk2, x11cmyk4, x11cmyk8, x11gray4
+  * src/contrib.mak: Add missing generic hpijs device.
+  * Enable stp driver and link with libgimpprint 
+    (closes: #82454, #87004, #103036)
+  * debian/control: Build-Depend on libgimpprint-dev.
+  * debian/gen-makefile: Add support for the DEB_BUILD_OPTIONS environment
+    variable (more precisely, the debug option leads to a build with 
+    debugging support and exported private variables).
+  * Add in the CJK support using the patch from 
+    Yasuhiro Take <take@debian.org>. A huge "THANK YOU" to him for his 
+    work!!! His changes:
+    + Add debian/patches/gs-cjk-M2-R1+CJKPDF.diff & .info, and apply it
+      to the source.
+    + debian/control: Conflicts: Add gs-cjk-resource (<< 1.20010910-1) because
+      the new gs-cjk patch requires new gs-cjk-resource that i've already
+      prepared and doesn't work with older ones.
+    + debian/control: Depends: Add gs-common (>= 0.2) because font 
+      configuration for the new gs-cjk patch is completely different from 
+      the old one.
+  * debian/control: Removed the conflict with gs_x, gs_svga and gs_both. 
+    I don't even remember when those packages where in Debian, probably
+    before Debian 1.3 so a direct upgrade is going to fail anyway. And 
+    with intermediate upgrades it will not be a problem.
+  * src/imainarg.c: Reapply the papersize diff from debian/patches.
+
+ -- Torsten Landschoff <torsten@debian.org>  Tue, 16 Oct 2001 21:06:14 +0200
+
+gs (5.50-8) unstable; urgency=low
+
+  * debian/rules: Use html2text to convert the html changelog into 
+    plain text instead of lynx (closes: #93722).
+  * debian/control: Update Build-Depends.
+  * debian/prerm: Fix the case to handle both removal and upgrade 
+    instead of handling upgrading in two cases (closes: #98458).
+  * debian/control: Merge multi-line Build-Depends into one line for
+    now until our tools support multi line fields (closes: #98459).
+
+ -- Torsten Landschoff <torsten@debian.org>  Mon,  4 Jun 2001 01:22:36 +0200
+
+gs (5.50-7) unstable; urgency=low
+
+  * debian/postrm: Add missing #DEBHELPER# (arg!).
+  * debian/prerm: Add defoma-app clean on upgrade.
+  * debian/gs.templates: Remove the double negation of the previewer
+    question (closes: #94146).
+  * Merge german translation for debconf templates (closes: #93840).
+  * debian/shlibs.local: Depend on svgalibg1 or svgalib-dummyg1 
+    alternatively (closes: #93811).
+
+ -- Torsten Landschoff <torsten@debian.org>  Tue,  1 May 2001 22:24:55 +0200
+
+gs (5.50-6) unstable; urgency=low
+
+  * debian/README: 
+    + Move copyright info to debian/copyright.
+    + Mention the align.ps file (closes: #67317).
+  * gdevbbox.c: Use default color methods instead of NULL pointers so 
+    that gs -sDEVICE=bbox does not crash anymore (closes: #36883).
+
+ -- Torsten Landschoff <torsten@debian.org>  Sat,  7 Apr 2001 21:09:55 +0200
+
+gs (5.50-5) unstable; urgency=low
+
+  * debian/default_path.sh:
+    + Include defoma dir in search path.
+    + Search local directories before system directories.
+    + Defoma is preferred if available...
+  * debian/postinst: Fix the hopefully last bashism (s/source/g/).
+  * Included support for Hewlett Packard's own printer driver called
+    hpijs (closes: #92010). Note that you will need the hpijs package
+    for using it.
+
+ -- Torsten Landschoff <torsten@debian.org>  Sat,  7 Apr 2001 02:40:15 +0200
+
+gs (5.50-4) unstable; urgency=low
+
+  * Install interesting Postscript files as examples (closes: #79461).
+  * Finally include the missing if-hpdj filter (closes: #63705).
+  * Also add the documentation of hp8xx (closes: #63566).
+
+ -- Torsten Landschoff <torsten@debian.org>  Thu,  5 Apr 2001 03:58:27 +0200
+
+gs (5.50-3) unstable; urgency=low
+
+  * debian/rules: 
+    + Don't remove debian/postinst anymore in clean target.
+    + Read package and version info from changelog.
+    + Convert to debhelper.
+  * debian/postinst: Again rewritten from scratch (guess why!? *arg*)
+
+ -- Torsten Landschoff <torsten@debian.org>  Thu,  5 Apr 2001 02:34:17 +0200
+
+gs (5.50-2) unstable; urgency=low
+
+  * debian/postinst: Completely rewritten.
+    + Fixes the bashism reported by Joey Hess (closes: #92056).
+    + Does not mess with /usr/local anymore (closes: #57276).
+  * unix-gcc.mak: Readd the x11 device (closes: #92586).
+  * debian/config: Change the priority of the defoma questions to
+    low. I don't see how the defaults can cause any problems.
+  * debian/shlibs.local: Removed. Let's see if it works without.
+
+ -- Torsten Landschoff <torsten@debian.org>  Thu,  5 Apr 2001 01:36:09 +0200
+
+gs (5.50-1) unstable; urgency=low
+
+  * Finally upgrade to new upstream version, still based on the old 
+    package (the reimplementation is still under the hood ;)
+    (closes: #65832, #87673).
+  * unix-gcc.mak: Make x11alpha the default device on X11 as already
+    done in gs-aladdin. Modern systems should be able to handle the 
+    anti aliasing fast enough.
+  * debian/control: Update build dependencies for new X11.
+  * debian/control: Removed Conflicts with local defoma packages made
+    by Yasuhiro.
+  * debian/patches/svgalib: Adjust for name change of the main Makefile 
+    and move the targets out of the ifeq so that one can run the file
+    standalone.
+  * debian/patches/hpdj: 
+    - Don't patch zmedia2.c since upstream changed it since 5.10.
+    - Adjust for name change of the main makefile.
+    - Use the right patch from the hpdj distribution for 5.50.
+  * debian/patches/hp8xx:
+    - Update the devs.mak diff for gs 5.50.
+    - Adjust for name change of main makefile.
+  * debian/rules: Disable kanji and jpdrivers support (needs update for 5.50).
+  * debian/patches/lexmarkgs: 
+    - Update the devs.mak diff for 5.50.
+  * debian/control: Add missing build-depends (closes: #82114, #88393).
+  * debian/rules: Make debian/addentry executable before running it
+    (closes: #90278).
+  * time_.h: Include <time.h> as well as sys/time.h (closes: #90433, #88391).
+
+ -- Torsten Landschoff <torsten@debian.org>  Thu, 29 Mar 2001 01:17:54 +0200
+
+gs (5.10-11.5defoma2) unstable; urgency=low
+
+  * Add kanji patches.
+
+ -- Yasuhiro Take <take@debian.org>  Tue, 27 Mar 2001 20:58:55 +0900
+
+gs (5.10-11.5defoma1) unstable; urgency=low
+
+  * Add Defoma support.
+  * Remove kanji patches.
+
+ -- Yasuhiro Take <take@debian.org>  Tue, 20 Mar 2001 18:21:22 +0900
+
+gs (5.10-11) unstable; urgency=low
+
+  * debian/control: Added build time dependency for libfreetype2-dev
+    (closes: #82114).
+  * Included upp files for stc740 printer provided by Gregory P. Smith
+    (closes: #76845).
+ 
+ -- Torsten Landschoff <torsten@debian.org>  Mon, 15 Jan 2001 00:53:32 +0100
+
+gs (5.10-10.1) stable unstable; urgency=high
+
+  * Non-maintainer upload by security team
+  * Patch from Werner Fink:
+    + Create temporary files securely using mkstemp instead of mktemp
+    + Don't set LD_RUN_PATH to empty, that makes the runtime linker look
+      in the current path as well
+
+ -- Wichert Akkerman <wakkerma@debian.org>  Wed, 22 Nov 2000 03:35:35 +0100
+
+gs (5.10-10) unstable; urgency=low
+
+  * contrib/kanji/man/ps2jpdf.1: Changed ".SH PS2JPDF" into ".SH NAME"
+    (closes: #59925, #60002, #60474).
+  * debian/rules: Added -isp to call of dpkg-gencontrol (lintian).
+
+ -- Torsten Landschoff <torsten@debian.org>  Wed, 15 Mar 2000 23:30:41 +0100
+
+gs (5.10-9) frozen unstable; urgency=high
+
+  * Applied patch from Colin Phipps to fix security problem in ps2epsi
+    (closes: #57034)
+
+ -- Torsten Landschoff <torsten@debian.org>  Sun,  6 Feb 2000 02:24:33 +0100
+
+gs (5.10-8) frozen unstable; urgency=low
+
+  * Only a simple change to close a bugreport: The package contained a 
+    directory in /usr/local in violation with policy. Sorry for this, 
+    the directories are now created by the postinst (closes: #56396).
+
+ -- Torsten Landschoff <torsten@debian.org>  Fri, 28 Jan 2000 09:52:17 +0100
+
+gs (5.10-7) frozen unstable; urgency=low
+
+  * This can go into frozen since the changes are absolutely simple.
+  * debian/control: Fixed build dependencies (closes: #55451).
+  * debian/patches/hpdj: Added installation of margin files as requested in 
+    #39342 (for gs-aladdin).
+  * gcc-head.mak: Added path for local fonts as requested in #31898
+    (/usr/local/lib/ghostscript/{common,5.10,fonts})
+  * debian/rules: Make the directories intended for local fonts.
+  * gs.1: Added documentation for local postscript files.
+
+ -- Torsten Landschoff <torsten@debian.org>  Thu, 20 Jan 2000 12:47:48 +0100
+
+gs (5.10-6) unstable; urgency=low
+
+  * Added driver for Lexmark 7000. Thanks to Alex Winbow for pointing 
+    me to the patch.
+  * debian/rules: Completely rewritten and a bit modularized.
+  * hpdj driver updated to version 2.6.
+
+ -- Torsten Landschoff <torsten@debian.org>  Wed, 12 Jan 2000 20:24:44 +0100
+
+gs (5.10-5) unstable; urgency=low
+
+  * New maintainer.
+  * debian/control: Added build dependencies.
+  * Applied patch from Taketoshi Sano to remove copyrighted stuff from 
+    the package (closes: #52575).
+  * This release is based on Wicherts NMU (thanks for the work Wichert!)
+    closes: #53071
+
+ -- Torsten Landschoff <torsten@debian.org>  Wed, 29 Dec 1999 22:22:02 +0100
+
+gs (5.10-4.1) unstable; urgency=low
+
+  * Non-maintainer upload
+  * Apply patch to fix mac ttf rendering, Closes: Bug#52590
+
+ -- Wichert Akkerman <wakkerma@debian.org>  Sun, 19 Dec 1999 17:05:38 +0100
+
+gs (5.10-4) unstable; urgency=low
+
+  * Small patch applied to file gs_init.ps, so that japanese
+    fonts are required only for japanese people (many thaks to 
+    Fumitoshi Ukai) (closes: Bug#49725, #49732, #49867)
+
+ -- Marco Pistore <pistore@debian.org>  Fri, 12 Nov 1999 12:45:37 +0100
+
+gs (5.10-3) unstable; urgency=low
+
+  * Many thanks to Taketoshi Sano for his great job 
+    with the Japanese support (closes Bug#41570)
+
+ -- Marco Pistore <pistore@debian.org>  Sun,  7 Nov 1999 02:56:13 +0100
+
+gs (5.10-2.0.vflib.2) experimental; urgency=low
+
+  * Non Maintainer.
+  * Add support for many drivers included in gs510j49
+  * FHS transition
+  * Lintian free
+
+ -- Taketoshi Sano <sano@debian.org>  Sun, 31 Oct 1999 09:21:06 +0900
+
+gs (5.10-2.0.vflib.1) experimental; urgency=low
+
+  * Non Maintainer.
+  * Experimental revision for Japanese VFlib support enhancement.
+  * Please check and modify this experimental revision to add
+    Japanese support on the Debian package of "gs"
+
+ -- Taketoshi Sano <sano@debian.org>  Sat, 30 Oct 1999 15:03:07 +0900
+
+gs (5.10-2) unstable; urgency=low
+
+  * Added support for hp8xx drivers by Uli Wortmann (closes Bug#40807).
+  * Added support for epsf and ttfont features.
+  * Changed "Aladdin Ghostscript" into "GNU Ghostscript" in 
+    file stcolor.ps e stcinfo.ps (closed Bug#35411, Bug#35525).
+
+ -- Marco Pistore <pistore@di.unipi.it>  Sat, 10 Jul 1999 23:29:57 +0200
+
+gs (5.10-1) unstable frozen; urgency=low
+
+  * Ghostscript 5.10 is GPL! 
+    This package essentially corresponds to package gs-aladdin_5.10-12,
+    but redistributed under GPL. Changes w.r.t. gs-aladdin_5.10-12
+    are:
+      * Corrected "regulamentations" --> "regulations" 
+        in description of package.
+      * Filenames in script pdf2ps are now enclosed in double quotes
+      * Fixed the manpages for bdftops, printafm and wftopfa, 
+        so that they work with apropos.
+    The various patches to ghostscript 5.10 that have been proposed
+    by L.P.Deutsch and that appear in gs-aladdin_5.10-12 also appear
+    in this package.
+    
+ -- Marco Pistore <pistore@di.unipi.it>  Sun,  3 Jan 1999 18:22:57 +0100
+
+gs (4.03-6) unstable; urgency=low
+
+  * Moved to version 2.5 of hpdj driver by Martin Lottermoser (debian/rules 
+    is changed accordingly).
+  * Mentined package gsfonts in description of gs.
+
+ -- Marco Pistore <pistore@di.unipi.it>  Mon,  7 Dec 1998 22:06:21 +0100
+
+gs (4.03-5) frozen unstable; urgency=low
+
+  * Fixed the manpages for bdftops, printafm and wftopfa,
+    so that they work with apropos.
+
+  * Removed *.1.gz files from /usr/doc/gs (they already are in the
+    /usr/man/man1 directory).
+
+ -- Marco Pistore <pistore@di.unipi.it>  Fri,  6 Nov 1998 10:52:31 +0100
+
+gs (4.03-4) frozen unstable; urgency=low
+
+  * Fixed files stcolor.ps and stcinfo.ps so that they recognize that
+    they are called by GNU ghostscript; thanks to Gordon Matzigkeit
+    (closes Bug#28726).
+
+ -- Marco Pistore <pistore@di.unipi.it>  Thu,  5 Nov 1998 21:44:07 +0100
+
+gs (4.03-3) unstable; urgency=low
+
+  * Changed "Recommends: gs-pdfencrypt" to "Suggests: gs-pdfencrypt" in
+    control file (closes Bug#27431)
+  * Removed "Provides: gs_x, gs_svga, gs_both", since "_" cannot appear
+    in package names, and no packages should depend on these quite old 
+    virtual packages.
+  * Changed directory name for the libjpeg source from ../libjpeg-6a
+    to ../libjpeg: so it does not depend on the particular version
+    of libjpeg (changes in files gcc-head.mak, debian/rules and 
+    debian/jpeg).
+  * Linked against libjpeg-6b.
+
+ -- Marco Pistore <pistore@di.unipi.it>  Sat, 10 Oct 1998 00:01:15 +0200
+
+gs (4.03-2) unstable; urgency=low
+
+  * Now /usr/lib/ghostscript/common is searched for library files
+    before /usr/lib/ghostscript/X.YY (where X.YY is the version of 
+    ghostscript). This is useful for installing packages like
+    gs-pdfencrypt, that provide (modified) library files
+    to ghostscript that are independent from the version of gs
+    (also gs.1 is changed accordingly)
+  * Now gs-pdfencrypt (in the nonUS distribution) is suggested by 
+    gs-aladdin. Changed the message in the file pdf_sec.ps so that
+    it suggests to install that package if an encrypted pdf file is
+    being processed.
+  * Linked against libpng2 (closes Bug#26924)
+
+ -- Marco Pistore <pistore@di.unipi.it>  Tue, 29 Sep 1998 21:01:10 +0200
+
+gs (4.03-1) unstable; urgency=low
+
+  * New upstream version (gs 4.03 is finally GPL!!!)
+  * Pristine source
+  * Set options in gcc-head.mak
+  * Added man pages for all the binaries
+  * All example files in /usr/doc/gs/examples start now with %!
+  * Script font2c moved from /usr/bin to /usr/lib/ghostscript
+    (there is really no reason to put this script in /usr/bin)
+  * Patched devs.mak and gdevpng.c so to work with version 0.96 of libpng.
+  * Patched gdevcdj.c so that device cdeskjet works 
+    (and is identical to cdj500)
+  * Patched gdevl256.c imainarg.c so that superuser rights are given away
+    as soon as possible, and re-obtained only to start svgalib (see 
+    /usr/doc/gs/README.Debian and /usr/doc/gs/setuid.Debian)
+  * Patched imainarg.c to set default paper accordig to the system paper
+    as reported by libpaper, also patched imaiarg.c so that the lvga256
+    device is chosen as the default one if gs is not called from X
+  * Patched zlib.mak: here the shared file for zlib is called libz, 
+    not libgz
+
+ -- Marco Pistore <pistore@di.unipi.it>  Thu, 4 Jun 1998 20:29:47 +0100
+
+gs (3.33-7) unstable; urgency=low
+
+  * Corrected address of FSF in copyright file
+  * All the scripts start now with #!
+  * Added man pages for all the binaries
+  * bdftops, font2c and wftopfa moved from /usr/bin to
+    /usr/lib/ghostscript
+    (there is really no reason to put these scripts in /usr/bin)
+  * gs.real moved to /usr/lib/ghostscript (it should not be
+    called by the user)
+
+ -- Marco Pistore <pistore@di.unipi.it>  Thu, 12 Mar 1998 20:29:38 +0100
+
+gs (3.33-6) unstable; urgency=low
+
+  * New maintainer
+  * Libc6 (hamm) release
+  * Minor fixes in debian/rules
+  * Bug 10270 fixed: now manpages are compressed
+  * Bug 9935 fixed: package works with svgalib-dummy
+  * Redundant dependencies removed in debian/control
+    (this also fixes Bug 9157)
+  * Now device cdeskjet works (and is identical to cdj500)
+
+ -- Marco Pistore <pistore@di.unipi.it>  Mon, 29 Sep 1997 20:41:47 +0200
+
+gs (3.33-5) stable; urgency=low
+
+  * Examples used to be in /usr/doc/$(examples)/examples, but $(examples)
+    was empty (should have been $(package), must have been sleeping)
+
+ -- joost witteveen <joost@rulcmc.leidenuniv.nl>  Fri, 7 Feb 1997 15:15:37 +0100
+
+gs (3.33-4) stable; urgency=low
+
+  * debian/rules didn't install some files in ./debian/tmp, but in /!!!
+    Why do I need root to build packages?
+  * Minor fix in wrapper.c (no change in binary)
+
+ -- joost witteveen <joost@rulcmc.leidenuniv.nl>  Tue, 21 Jan 1997 19:15:53 +0100
+
+gs (3.33-3) stable; urgency=low
+
+  * apparently, gs-3.33 never got compiled with all devices (only a
+    pitiful few ones). Fixed this.
+
+ -- joost witteveen <joost@rulcmc.leidenuniv.nl>  Fri, 8 Nov 1996 21:49:49 +0100
+
+gs (3.33-2) unstable; urgency=low
+
+  * Converted to new source format
+  * Removed the "+1" bug in the wrapper that caused coredumps with 
+    libc5.4.7
+  * included x11alpha x11cmyk devices
+  * removed dependancy on gsfonts
+  * Improved argument parsing of wrapper
+  * Stripped the executables
+  * Fixed discription bug "This version is aladdin coright,..."!
+    (Sorry!)
+  
+ -- joost witteveen <joost@rulcmc.leidenuniv.nl>  Thu, 31 Oct 1996 20:56:01 +0100
--- ghostscript-8.62.dfsg.1.orig/debian/NEWS
+++ ghostscript-8.62.dfsg.1/debian/NEWS
@@ -0,0 +1,55 @@
+ghostscript (8.61.dfsg.1~svn8187-1) unstable; urgency=low
+
+  As the ESP Ghostscript development is discontinued now, the extra
+  functionality of ESP Ghostscript is merged into upstream GPL Ghostscript
+  from version 8.60 on. This is the first Debian/Ubuntu package of this
+  merged Ghostscript. It contains the following added functionality from
+  ESP Ghostscript:
+
+    - Enhanced PCL XL driver.
+    - Shared library and driver (X11) support for Linux/UNIX.
+    - The CUPS "driver" that generates a series of raster
+      images for CUPS printer drivers.
+    - Nearly all known free printer drivers which have to
+      be compiled into Ghostscript - drivers listed with
+      "Execution style: Ghostscript" on openprinting.org.
+      Not included are some obsolete drivers such as hpdj
+      which is replaced by the included pcl3 driver.
+    - All known Uniprint configuration files (*.upp) as
+      listed on openprinting.org.
+    - Patches to add the NOMEDIAATTRS option to Ghostscript,
+      which allows CUPS drivers to use media options
+      separate from Ghostscript.
+    - KRGB support for IJS drivers.
+    - OpenPrinting Vector interface
+    - Support files for CUPS.
+    - Enhanced build system (easy driver selection, font
+      search path setting, ...).
+
+  This package has everything activated.
+
+  Due to Ghostscript's head development being under GPL now, and all important
+  functionality being developed at ghostscript.com, forks are not needed any
+  more. This makes gs-esp, gs-afpl, and gs-common obsolete. gs-gpl is also
+  renamed to ghostscript now, so that it can be found in repositories more
+  easily. This new ghostscript package automatically removes all gs-* packages.
+
+ -- Till Kamppeter <till.kamppeter@gmail.com>  Mon, 21 May 2007 13:00:21 +0100
+
+gs-gpl (8.01-5) unstable; urgency=low
+
+  For CJKV users: GPL gs 8.x does not contain CJK TrueType font
+  support (it still has CJK CID font support, though), so you can not
+  use CJK *.ttf/ttc with gs-gpl.  I strongly urge you to use
+  gs-esp for the time being.
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Sun, 15 Aug 2004 13:26:21 +0900
+
+gs-gpl (8.01-3) unstable; urgency=low
+
+  Currently gs-gpl has stp support, but please note that this driver
+  will be removed after sarge's release since stp has been obsoleted
+  by ijs (ijsgimpprint).  Those of you who still use stp are strongly
+  recommended to migrate to ijsgimpprint ASAP.
+
+ -- Masayuki Hatta (mhatta) <mhatta@debian.org>  Wed, 28 Apr 2004 05:40:05 +0900
--- ghostscript-8.62.dfsg.1.orig/debian/ghostscript.postrm
+++ ghostscript-8.62.dfsg.1/debian/ghostscript.postrm
@@ -0,0 +1,44 @@
+#! /bin/sh
+# postrm script for ghostscript
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+       remove)
+	# Remove defoma directory
+	rm -rf /var/lib/defoma/gs.d
+	;;
+       purge)
+	# Remove defoma-related files
+	rm -f /etc/defoma/ghostscript.subst-rule
+	rm -f /etc/defoma/ghostscript.subst-rule~
+        ;;
+       upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+	;;
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
--- ghostscript-8.62.dfsg.1.orig/debian/compat
+++ ghostscript-8.62.dfsg.1/debian/compat
@@ -0,0 +1 @@
+4
--- ghostscript-8.62.dfsg.1.orig/debian/gs-gpl.preinst
+++ ghostscript-8.62.dfsg.1/debian/gs-gpl.preinst
@@ -0,0 +1,45 @@
+#!/bin/sh
+# preinst script for gs-afpl
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <new-preinst> `install'
+#        * <new-preinst> `install' <old-version>
+#        * <new-preinst> `upgrade' <old-version>
+#        * <old-preinst> `abort-upgrade' <new-version>
+#
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    install|upgrade)
+	# Do away with update-alternative for /usr/bin/gs, we have one
+	# grand unified Ghostscript now!
+        if dpkg --compare-versions "$2" lt-nl "8.62.dfsg.1-3"; then
+            update-alternatives --remove-all gs || true
+            update-alternatives --remove-all gs.1 || true
+        fi
+
+    ;;
+
+    abort-upgrade)
+    ;;
+
+    *)
+        echo "preinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
--- ghostscript-8.62.dfsg.1.orig/debian/gs.defoma
+++ ghostscript-8.62.dfsg.1/debian/gs.defoma
@@ -0,0 +1,930 @@
+#
+# gs.defoma: Defoma support for Ghostscripts
+#
+
+@ACCEPT_CATEGORIES = qw(type1 type3 gsfontderivative truetype cid
+			cmap psprint);
+
+package gs;
+use strict;
+use POSIX;
+
+use vars qw($DEFOMA_TEST_DIR $ROOTDIR);
+
+use Debian::Defoma::Common;
+use Debian::Defoma::Font;
+use Debian::Defoma::Id;
+use Debian::Defoma::Subst;
+import Debian::Defoma::Font;
+import Debian::Defoma::Id;
+import Debian::Defoma::Subst;
+import Debian::Defoma::Common;
+
+my $Id;
+my $IdCmap;
+my $Sb1;
+my $Sb2;
+
+my $PkgDir = "$ROOTDIR/gs.d";
+my $CidDir = "$PkgDir/dirs/CIDFont";
+my $CMapDir = "$PkgDir/dirs/CMap";
+my $TTCidDir = "$PkgDir/dirs/TTCIDFont";
+my $FontDir = "$PkgDir/dirs/fonts";
+my $FontMap = "$FontDir/Fontmap";	# F
+my $CIDFontMap = "$FontDir/CIDFnmap";	# FF
+my $Subst4psprint = 0;
+# For Ghostscript 8 or later
+my $FAPIfmap = "$FontDir/FAPIfontmap";	# FFF
+my $Cidfmap = "$FontDir/cidfmap";	# FFFF
+
+sub init {
+  unless ($Id) {
+    $Id = defoma_id_open_cache();
+  }
+  unless ($IdCmap) {
+    $IdCmap = defoma_id_open_cache('cmap');
+  }
+  unless ($Sb1) {
+    $Sb1 = defoma_subst_open(rulename => 'psprint', threshold => 50,
+			     idobject => $Id, private => 1);
+  }
+  unless ($Sb2) {
+    $Sb2 = defoma_subst_open(rulename => 'ghostscript', threshold => 30,
+			     idobject => $Id);
+  }
+  
+  return 0;
+}
+
+sub term {
+  my @list;
+  my $i;
+  
+  if ($Id) {
+    if (open(F, '>' . $FontMap) && open(FF, '>' . $CIDFontMap) &&
+	open(FFF, '>' . $FAPIfmap) && open(FFFF, '>' . $Cidfmap)) {
+	  @list = defoma_id_get_font($Id, 'installed');
+	  
+	  foreach $i (@list) {
+	    next if ($Id->{2}->[$i] ne 'SrI');
+	    my $c = $Id->{4}->[$i];
+	    my $f;
+	    my @h;
+	    my $cmap;
+	    my @cmaplist;
+	    my $j;
+	    my @ch;
+	    my %hh;
+	    
+	    if ($c =~ /^(type1|type3|gsfontderivative)$/) {
+	      $f = $Id->{1}->[$i];
+	      $f =~ s/^.*\///;
+	      #
+	      # Spit out $FontDir/Fontmap
+	      #
+	      print F '/', $Id->{0}->[$i], ' (', $f, ") ;\n";
+	    } elsif ($c =~ /^truetype$/) {
+	      $f = $Id->{1}->[$i];
+	      #
+	      # Spit out $FontDir/FAPIfontmap
+	      #
+	      # FIXME: need to support the sub font id for the collection.
+	      print FFF '/', $Id->{0}->[$i], ' << /Path (', $f, ') /FontType 1 /FAPI /FreeType /SubfontId ', '0' , " >> ;\n"
+	    } elsif ($c =~ /^(truetype-cjk|cid)$/) {
+	      $f = $Id->{1}->[$i];
+	      @h = split(/ +/, $Id->{7}->[$i]);
+	      #
+	      # Spit out $FontDir/CIDFnmap
+	      #
+	      print FF '/', $Id->{0}->[$i], ' (', $f, ') ';
+	      if ($c eq 'truetype-cjk') {
+		print FF '/', $h[0], '-', $h[1], '-', $h[2];
+	      }
+	      print FF " ;\n";
+	      # For Ghostscript 8 or later
+	      if ($c eq 'truetype-cjk') {
+		my @hints = defoma_id_get_hints( $Id, $i );
+		my $cidsupplement;
+		while (@hints) {
+		  my $var = shift @hints;
+		  if ($var eq "--CIDSupplement") {
+		    $cidsupplement = shift @hints;
+		    last;
+		  }
+		}
+		unless (defined $cidsupplement) {
+		  print STDERR "No CIDSupplement specified for $Id->{0}->[$i], defaulting to 0.\n";
+		  $cidsupplement = 0;
+		}
+		#
+		# Spit out $FontDir/cidfmap
+		#
+		# FIXME: need to support the sub font id for the collection.
+		print FFFF '/', $Id->{0}->[$i], ' << /FileType /TrueType /Path (', $f, ') /SubfontID ', '0', ' /CSI [(', $h[6], ') ', $cidsupplement, "] >> ;\n";
+	      }
+	    }
+	  }
+	  
+	  @list = defoma_id_get_font($Id, 'installed');
+	  
+	  foreach $i (@list) {
+	    next if ($Id->{2}->[$i] !~ /^.[aS]/);
+	    
+	    my $c = $Id->{4}->[$i];
+	    #
+	    # Spit out aliases
+	    #	    
+	    if ($c =~ /^(truetype|type1|type3|gsfontderivative)$/) {
+	      print F '/', $Id->{0}->[$i], ' /', $Id->{5}->[$i], " ; \n";
+	      print FFF '/', $Id->{0}->[$i], ' /', $Id->{5}->[$i], " ; \n";
+	    } elsif ($c =~ /^(truetype-cjk|cid)$/) {
+	      print FF '/', $Id->{0}->[$i], ' /', $Id->{5}->[$i], " ;\n";
+	      print FFFF '/', $Id->{0}->[$i], ' /', $Id->{5}->[$i], " ;\n";
+	    }
+	    
+	  }
+	  
+	  close F;
+	  close FF;
+	  close FFF;
+	  close FFFF;
+	  unlink($FontMap) unless(-s $FontMap);
+	  unlink($CIDFontMap) unless(-s $CIDFontMap);
+	  unlink($FAPIfmap) unless(-s $FAPIfmap);
+	  unlink($Cidfmap) unless(-s $Cidfmap);
+	}
+    
+    defoma_id_close_cache($Id);
+    $Id = 0;
+  }
+  if ($IdCmap) {
+    defoma_id_close_cache($IdCmap);
+    $IdCmap = 0;
+  }
+  if ($Sb1) {
+    defoma_subst_close($Sb1);
+    $Sb1 = 0;
+  }
+  if ($Sb2) {
+    defoma_subst_close($Sb2);
+    $Sb2 = 0;
+  }
+  
+  return 0;
+}
+
+sub create_symlink {
+  my $font = shift;
+  my $dir = shift || $FontDir;
+  
+  if ($font =~ /^(.*)\/(.+)$/) {
+    my $fontpath = $1;
+    my $fontfile = $2;
+    my $newfile = $dir . '/' . $fontfile;
+    
+    return 1 if (-e $newfile);
+    
+    symlink($font, $newfile) || return 1;
+  } else {
+    return 1;
+  }
+  
+  return 0;
+}
+
+sub remove_symlink {
+  my $font = shift;
+  my $dir = shift || $FontDir;
+  
+  if ($font =~ /^(.*)\/(.+)$/) {
+    my $fontpath = $1;
+    my $fontfile = $2;
+    my $newfile = $dir . '/' . $fontfile;
+    
+    return 1 unless (-l $newfile);
+    
+    unlink($newfile);
+  } else {
+    return 1;
+  }
+  
+  return 0;
+}
+
+sub register_ps {
+  my $id = shift;
+  
+  defoma_font_register('postscript', '<gs>/' . $id, @_);
+}
+
+sub unregister_ps {
+  my $id = shift;
+  
+  if (defoma_font_if_register('postscript', '<gs>/' . $id)) {
+    defoma_font_unregister('postscript', '<gs>/' . $id);
+  }
+}
+
+sub t1_register {
+  my $type = shift;
+  my $font = shift;
+  my $h = parse_hints_start(@_);
+  
+  my $fontname = $h->{FontName};
+  return 1 unless ($fontname);
+  $fontname =~ s/ .*//;
+  
+  my $priority = $h->{Priority} || 0;
+  
+  my %add;
+  $add{hints} = join(' ', @_);
+  
+  if ($type eq 'gsfontderivative') {
+    my $ofont = $h->{'GSF-OriginFont'};
+    my $oid = $h->{'GSF-OriginID'};
+    
+    if ($ofont && $oid) {
+      $add{depend} = $ofont.' '.$oid;
+    } else {
+      return 2;
+    }
+  }
+  
+  return 3 if (create_symlink($font));
+  
+  defoma_id_register($Id, type => 'real', font => $font, id => $fontname,
+		     priority => $priority, %add);
+  
+  my @alias = ($h->{Alias}) ? split(/ +/, $h->{Alias}) : ();
+  my $i;
+  
+  foreach $i (@alias) {
+    defoma_id_register($Id, type => 'alias', font => $font, id => $i,
+		       priority => $priority, origin => $fontname);
+  }
+  
+  defoma_subst_register($Sb1, $font, $fontname);
+  defoma_subst_register($Sb2, $font, $fontname);
+  
+  return 0;
+}
+
+sub t1_unregister {
+  my $font = shift;
+  
+  defoma_subst_unregister($Sb1, $font);
+  defoma_subst_unregister($Sb2, $font);
+  defoma_id_unregister($Id, type => 'alias', font => $font);
+  defoma_id_unregister($Id, type => 'real', font => $font);
+  
+  remove_symlink($font);
+  
+  return 0;
+}
+
+sub t1_install {
+  my $type = shift;
+  my $font = shift;
+  my $id = shift;
+  my $depfont = shift;
+  my $depid = shift;
+  my @add = ();
+  
+  if ($type eq 'real') {
+    return 0 if (grep($_ eq '--Alias', @_));
+    
+    $add[0] = '--RealName';
+  }
+  
+  register_ps($id, @_, @add);
+  
+  return 0;
+}
+
+sub t1_remove {
+  my $type = shift;
+  my $font = shift;
+  my $id = shift;
+  my $depfont = shift;
+  my $depid = shift;
+  
+  unregister_ps($id);
+  
+  return 0;
+}
+
+sub type1 {
+  my $com = shift;
+  
+  if ($com eq 'register') {
+    return t1_register('type1', @_);
+  } elsif ($com eq 'unregister') {
+    return t1_unregister(@_);
+  } elsif ($com =~ /^do-install-(.*)$/) {
+    return t1_install($1, @_);
+  } elsif ($com =~ /^do-remove-(.*)$/) {
+    return t1_remove($1, @_);
+  } elsif ($com eq 'init') {
+    return init();
+  } elsif ($com eq 'term') {
+    return term();
+  }
+  
+  return 0;
+}
+
+sub type3 {
+  return type1(@_);
+}
+
+sub gsfontderivative {
+  my $com = shift;
+  
+  if ($com eq 'register') {
+    return t1_register('gsfontderivative', @_);
+  } else {
+    return type1($com, @_);
+  }
+}
+
+sub tt_register_cjk {
+  my %addstr = ('Japanese' => '-Ja',
+		'Korean' => '-Ko',
+		'Chinese-China' => '-GB',
+		'Chinese-Taiwan' => '-CNS');
+  my %ordering = ('Japanese' => 'Japan1',
+		  'Korean' => 'Korea1',
+		  'Chinese-China' => 'GB1',
+		  'Chinese-Taiwan' => 'CNS1');
+  my %coding = ('Unicode' => 'Unicode',
+		'BIG5' => 'Big5',
+		'ShiftJIS' => 'ShiftJIS',
+		'WanSung' => 'WanSung',
+		'Johab' => 'Johab');
+  
+  my $cnt = shift;
+  my $loc = shift;
+  my $font = shift;
+  my $fontname = shift;
+  my $alias = shift;
+  my $charset = shift;
+  my $encoding = shift;
+  my $priority = shift;
+  
+  return $cnt unless (exists($addstr{$loc}) && exists($ordering{$loc}) &&
+		      exists($coding{$encoding}));
+  my $ord = $ordering{$loc};
+  my $enc = $coding{$encoding};
+  
+  my $add = '';
+  $add = $addstr{$loc} if ($cnt > 0);
+  
+  my @hints = ('Adobe', $ord, $enc,
+	       '--CIDRegistry', 'Adobe', '--CIDOrdering', $ord);
+  
+  defoma_id_register($Id, type => 'real', font => $font,
+		     id => $fontname . $add, priority => $priority,
+		     category => 'truetype-cjk',
+		     hints => join(' ', @hints, @_));
+  
+  foreach my $i (@{$alias}) {
+    defoma_id_register($Id, type => 'alias', font => $font,
+		       id => $i . $add, priority => $priority,
+		       category => 'truetype-cjk',
+		       origin => $fontname . $add);
+  }
+  
+  defoma_subst_register($Sb1, $font, $fontname . $add);
+  defoma_subst_register($Sb2, $font, $fontname . $add);
+  
+  $cnt++;
+  return $cnt unless ($charset =~ /JISX0212/ && $loc eq 'Japanese' &&
+		      $encoding eq 'Unicode');
+  
+  $add = '-JaH';
+  @hints = ('Adobe', 'Japan2', 'Unicode',
+	    '--CIDRegistry', 'Adobe', '--CIDOrdering', 'Japan2');
+  
+  defoma_id_register($Id, type => 'real', font => $font,
+		     id => $fontname . $add, priority => $priority,
+		     category => 'truetype-cjk',
+		     hints => join(' ', @hints, @_));
+  
+  foreach my $i (@{$alias}) {
+    defoma_id_register($Id, type => 'alias', font => $font,
+		       id => $i . $add, priority => $priority,
+		       category => 'truetype-cjk',
+		       origin => $fontname . $add);
+  }
+  
+  defoma_subst_register($Sb1, $font, $fontname . $add);
+  defoma_subst_register($Sb2, $font, $fontname . $add);
+  
+  $cnt++;
+  return $cnt;
+}
+
+sub tt_register {
+  my $font = shift;
+  my $h = parse_hints_start(@_);
+  my $i;
+  
+  my $fontname = $h->{FontName};
+  my $location = $h->{Location};
+  my $encoding = $h->{Encoding};
+  my $priority = $h->{Priority} || 0;
+  my $charset = $h->{Charset};
+  
+  return 1 unless ($fontname && $location && $encoding);
+  $fontname =~ s/ .*//;
+  my @alias = ($h->{Alias}) ? split(/ +/, $h->{Alias}) : ();
+  
+  return 2 if (create_symlink($font));
+  
+  parse_hints_cut($h, 'Encoding', 'Location', 'FontName');
+  my @hints;
+  
+  if ($location !~ /Japanese|Korean|Chinese/) {
+    @hints = parse_hints_build($h);
+    
+    defoma_id_register($Id, type => 'real', font => $font, id => $fontname,
+		       priority => $priority, hints => join(' ', @hints));
+    
+    foreach $i (@alias) {
+      defoma_id_register($Id, type => 'alias', font => $font, id => $i,
+			 priority => $priority, origin => $fontname);
+    }
+    
+    defoma_subst_register($Sb1, $font, $fontname);
+    defoma_subst_register($Sb2, $font, $fontname);
+  } else {
+    parse_hints_cut($h, 'Charset');
+    @hints = parse_hints_build($h);
+    
+    my $loc;
+    my @locs = split(/ /, $location);
+    my $cnt = 0;
+    
+    foreach $loc (@locs) {
+      $cnt = tt_register_cjk($cnt, $loc, $font, $fontname, \@alias,
+			     $charset, $encoding, $priority, @hints);
+    }
+  }
+  
+  return 0;
+}
+
+sub tt_unregister {
+  my $font = shift;
+  
+  defoma_subst_unregister($Sb1, $font);
+  defoma_subst_unregister($Sb2, $font);
+  defoma_id_unregister($Id, type => 'alias', font => $font);
+  defoma_id_unregister($Id, type => 'real', font => $font);
+  
+  remove_symlink($font);
+  
+  return 0;
+}
+
+sub tt_install {
+  my $type = shift;
+  my $font = shift;
+  my $id = shift;
+  my $depfont = shift;
+  my $depid = shift;
+  
+  my @add = ();
+  
+  $add[0] = '--RealName' if ($type eq 'real');
+  
+  register_ps($id, @_, @add);
+  
+  return 0;
+}
+
+sub tt_remove {
+  my $type = shift;
+  my $font = shift;
+  my $id = shift;
+  my $depfont = shift;
+  my $depid = shift;
+  
+  unregister_ps($id);
+  
+  return 0;
+}
+
+sub truetype {
+  my $com = shift;
+  
+  if ($com eq 'register') {
+    return tt_register(@_);
+  } elsif ($com eq 'unregister') {
+    return tt_unregister(@_);
+  } elsif ($com =~ /^do-install-(.*)$/) {
+    return tt_install($1, @_);
+  } elsif ($com =~ /^do-remove-(.*)$/) {
+    return tt_remove($1, @_);
+  } elsif ($com eq 'init') {
+    return init();
+  } elsif ($com eq 'term') {
+    return term();
+  }
+  
+  return 0;
+}
+
+sub truetype_cjk {
+  my $com = shift;
+  
+  if ($com =~ /^do-install-(.*)$/) {
+    return cid_install($1, @_);
+  } elsif ($com =~ /^do-remove-(.*)$/) {
+    return cid_remove($1, @_);
+  } elsif ($com eq 'init') {
+    return init();
+  } elsif ($com eq 'term') {
+    return term();
+  }
+
+  return 0;
+}
+
+sub cid_register {
+  my $type = shift;
+  my $font = shift;
+  my $h = parse_hints_start(@_);
+
+  my $fontname = $h->{FontName};
+  my $registry = $h->{CIDRegistry};
+  my $ordering = $h->{CIDOrdering};
+  my $priority = $h->{Priority} || 0;
+    
+  return 1 unless($fontname && $registry && $ordering);
+  $fontname =~ s/ .*//;
+  $registry =~ s/ .*//;
+  $ordering =~ s/ .*//;
+  my @alias = ($h->{Alias}) ? split(/ +/, $h->{Alias}) : ();
+
+  return 2 if (create_symlink($font));
+
+  parse_hints_cut($h, 'PSCharset', 'PSEncoding', 'Charset', 'Encoding');
+  my @hints = parse_hints_build($h);
+  @hints = ($registry, $ordering, '.', @hints);
+
+  defoma_id_register($Id, type => 'real', font => $font,
+		     id => $fontname, priority => $priority,
+		     category => $type, hints => join(' ', @hints));
+
+  my $i;
+  foreach $i (@alias) {
+    defoma_id_register($Id, type => 'alias', font => $font, id => $i,
+		       priority => $priority, origin => $fontname,
+		       category => $type);
+  }
+
+  defoma_subst_register($Sb1, $font, $fontname);
+  defoma_subst_register($Sb2, $font, $fontname);
+    
+  return 0;
+}
+	
+sub cid_unregister {
+  my $font = shift;
+
+  defoma_subst_unregister($Sb1, $font);
+  defoma_subst_unregister($Sb2, $font);
+  defoma_id_unregister($Id, type => 'alias', font => $font);
+  defoma_id_unregister($Id, type => 'real', font => $font);
+
+  remove_symlink($font);
+
+  return 0;
+}
+
+sub cid_install_all {
+  my $type = shift;
+  my $id = shift;
+  my $registry = shift;
+  my $ordering = shift;
+    
+  my @cmaps = defoma_id_get_font($IdCmap, 'installed');
+  foreach my $c (@cmaps) {
+    my @chs = split(/ +/, $IdCmap->{7}->[$c]);
+
+    next if ($chs[0] ne $registry);
+    next if ($chs[1] ne $ordering && $chs[1] ne 'Identity');
+
+    shift(@chs);
+    shift(@chs);
+	
+    my $psname = $id . '-' . $IdCmap->{0}->[$c];
+
+    my @add = ();
+    $add[0] = '--RealName' if ($type eq 'real');
+	
+    register_ps($psname, @_, @add, @chs);
+  }
+
+  return 0;
+}
+
+sub cid_remove_all {
+  my $type = shift;
+  my $id = shift;
+  my $registry = shift;
+  my $ordering = shift;
+    
+  my @cmaps = defoma_id_get_font($IdCmap, 'installed');
+  foreach my $c (@cmaps) {
+    my @chs = split(/ +/, $IdCmap->{7}->[$c]);
+
+    next if ($chs[0] ne $registry);
+    next if ($chs[1] ne $ordering && $chs[1] ne 'Identity');
+
+    my $psname = $id . '-' . $IdCmap->{0}->[$c];
+
+    unregister_ps($psname);
+  }
+
+  return 0;
+}
+
+sub cid_install {
+  my $type = shift;
+  my $font = shift;
+  my $id = shift;
+  my $depfont = shift;
+  my $depid = shift;
+  my $registry = shift;
+  my $ordering = shift;
+  my $encoding = shift;
+
+  cid_install_all($type, $id, $registry, $ordering, @_);
+
+  return 0;
+}
+
+sub cid_remove {
+  my $type = shift;
+  my $font = shift;
+  my $id = shift;
+  my $depfont = shift;
+  my $depid = shift;
+  my $registry = shift;
+  my $ordering = shift;
+  my $encoding = shift;
+
+  cid_remove_all($type, $id, $registry, $ordering);
+    
+  return 0;
+}
+
+sub cid {
+  my $com = shift;
+
+  if ($com eq 'register') {
+    return cid_register('cid', @_);
+  } elsif ($com eq 'unregister') {
+    return cid_unregister(@_);
+  } elsif ($com =~ /^do-install-(.*)$/) {
+    return cid_install($1, @_);
+  } elsif ($com =~ /^do-remove-(.*)$/) {
+    return cid_remove($1, @_);
+  } elsif ($com eq 'init') {
+    return init();
+  } elsif ($com eq 'term') {
+    return term();
+  }
+
+  return 0;
+}
+
+sub cmap_register {
+  my $font = shift;
+
+  if ($font =~ /\/gs-cjk-resource\//) {
+    return 2 if (create_symlink($font, $CMapDir));
+    return 0;
+  }
+    
+  my $h = parse_hints_start(@_);
+
+  my $cmap = $h->{CMapName};
+  my $reg = $h->{CIDRegistry};
+  my $ord = $h->{CIDOrdering};
+    
+  return 1 unless ($cmap && $reg && $ord);
+  $reg =~ s/ .*//;
+  $ord =~ s/ .*//;
+  $cmap =~ s/ .*//;
+    
+  my @hints = ($reg, $ord, @_);
+
+  defoma_id_register($IdCmap, type => 'real', font => $font, id => $cmap,
+		     priority => 0, hints => join(' ', @hints));
+
+  return 0;
+}
+
+sub cmap_unregister {
+  my $font = shift;
+
+  if ($font =~ /\/gs-cjk-resource\//) {
+    remove_symlink($font, $CMapDir);
+    return 0;
+  }
+    
+  defoma_id_unregister($IdCmap, type => 'real', font => $font);
+
+  return 0;
+}
+
+sub cmap_install {
+  my $font = shift;
+  my $cmap = shift;
+  my $df = shift;
+  my $di = shift;
+  my $reg = shift;
+  my $ord = shift;
+  my %hash;
+  my @nonreal = ();
+    
+  return 1 if (create_symlink($font, $CMapDir));
+
+  my @list = (defoma_id_get_font($Id, 'installed', f4 => 'cid'),
+	      defoma_id_get_font($Id, 'installed', f4 => 'truetype-cjk'));
+    
+  foreach my $i (@list) {
+    my $type = $Id->{2}->[$i];
+    my $id = $Id->{0}->[$i];
+	
+    if ($type ne 'SrI') {
+      push(@nonreal, $i);
+      next;
+    }
+
+    my @hints = split(/ +/, $Id->{7}->[$i]);
+
+    next if ($hints[0] ne $reg);
+    next if ($hints[1] ne $ord && $ord ne 'Identity');
+
+    $hash{$id} = $i;
+
+    shift(@hints);
+    shift(@hints);
+    shift(@hints);
+
+    my $psname = $id . '-' . $cmap;
+
+    register_ps($psname, @hints, '--RealName', @_);
+  }
+
+  foreach my $i (@nonreal) {
+    my $depid = $Id->{5}->[$i];
+    next unless (exists($hash{$depid}));
+	
+    my @hints = split(/ +/, $Id->{7}->[$hash{$depid}]);
+
+    next if ($hints[0] ne $reg);
+    next if ($hints[1] ne $ord && $ord ne 'Identity');
+
+    shift(@hints);
+    shift(@hints);
+    shift(@hints);
+
+    my $psname = $Id->{0}->[$i] . '-' . $cmap;
+
+    register_ps($psname, @hints, @_);
+  }
+
+  return 0;
+}
+
+sub cmap_remove {
+  my $font = shift;
+  my $cmap = shift;
+  my $df = shift;
+  my $di = shift;
+  my $reg = shift;
+  my $ord = shift;
+  my %hash;
+
+  remove_symlink($font, $CMapDir);
+
+  my @list = (defoma_id_get_font($Id, 'installed', f4 => 'cid'),
+	      defoma_id_get_font($Id, 'installed', f4 => 'truetype-cjk'));
+
+  foreach my $i (@list) {
+    my @hints = split(/ +/, $Id->{7}->[$i]);
+
+    if (@hints > 0) {
+      next if ($hints[0] ne $reg);
+      next if ($hints[1] ne $ord && $ord ne 'Identity');
+    }
+	
+    my $psname = $Id->{0}->[$i] . '-' . $cmap;
+
+    unregister_ps($psname);
+  }
+    
+  return 0;
+}
+
+sub cmap {
+  my $com = shift;
+
+  if ($com eq 'register') {
+    return cmap_register(@_);
+  } elsif ($com eq 'unregister') {
+    return cmap_unregister(@_);
+  } elsif ($com eq 'do-install-real') {
+    return cmap_install(@_);
+  } elsif ($com eq 'do-remove-real') {
+    return cmap_remove(@_);
+  } elsif ($com eq 'init') {
+    return init();
+  } elsif ($com eq 'term') {
+    return term();
+  }
+
+  return 0;
+}
+
+sub psprint_register {
+  my $font = shift;
+  return 0 unless ($Subst4psprint);
+  return 1 if ($font !~ /(.+)\/(.+)/);
+
+  return 0 if ($1 eq '<gs>');
+  my $fontname = $2;
+
+  return 2 if ($Sb1->grep_rule('', $fontname));
+
+  my @hints;
+  my $h = parse_hints_start(@_);
+  my $cset = $h->{PSCharset};
+  my $enc = $h->{PSEncoding};
+    
+  if ($cset && $enc && $cset =~ /^Adobe-([^-]+).*$/) {
+    my $ord = $1;
+    $fontname =~ s/-$enc$//;
+
+    parse_hints_cut($h, 'PSCharset', 'PSEncoding', 'Charset', 'Encoding',
+		    'Direction');
+    @hints = parse_hints_build($h);
+    push(@hints, '--CIDRegistry,*', 'Adobe', '--CIDOrdering,*', $ord);
+  } else {
+    @hints = @_;
+  }
+
+  for my $i (@hints) {
+    $i = '--Charset,*' if ($i eq '--Charset');
+    $i = '--Encoding,*' if ($i eq '--Encoding');
+    $i = '--Direction,*' if ($i eq '--Direction');
+    $i = '--Shape,2' if ($i eq '--Shape');
+  }
+    
+  defoma_subst_add_rule($Sb1, $fontname, @hints);
+
+  return 0;
+}
+
+sub psprint_unregister {
+  my $font = shift;
+  return 0 if ($font !~ /(.+)\/(.+)/);
+
+  return 0 if ($1 eq '<gs>');
+  my $fontname = $2;
+
+  my $h = parse_hints_start(@_);
+  my $cset = $h->{PSCharset};
+  my $enc = $h->{PSEncoding};
+
+  if ($cset && $enc && $cset =~ /^Adobe-.*$/) {
+    $fontname =~ s/-$enc$//;
+  }
+
+  defoma_subst_remove_rule($Sb1, $fontname);
+
+  return 0;
+}
+
+sub psprint {
+  my $com = shift;
+  
+  if ($com eq 'register') {
+    return psprint_register(@_);
+  } elsif ($com eq 'unregister') {
+    return psprint_unregister(@_);
+  } elsif ($com eq 'init') {
+    return init();
+  } elsif ($com eq 'term') {
+    return term();
+  }
+  
+  return 0;
+}
+
+1;
--- ghostscript-8.62.dfsg.1.orig/debian/gs-aladdin.preinst
+++ ghostscript-8.62.dfsg.1/debian/gs-aladdin.preinst
@@ -0,0 +1,45 @@
+#!/bin/sh
+# preinst script for gs-aladdin
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <new-preinst> `install'
+#        * <new-preinst> `install' <old-version>
+#        * <new-preinst> `upgrade' <old-version>
+#        * <old-preinst> `abort-upgrade' <new-version>
+#
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    install|upgrade)
+	# Do away with update-alternative for /usr/bin/gs, we have one
+	# grand unified Ghostscript now!
+        if dpkg --compare-versions "$2" lt-nl "8.62.dfsg.1-3"; then
+            update-alternatives --remove-all gs || true
+            update-alternatives --remove-all gs.1 || true
+        fi
+
+    ;;
+
+    abort-upgrade)
+    ;;
+
+    *)
+        echo "preinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
--- ghostscript-8.62.dfsg.1.orig/debian/ghostscript.prerm
+++ ghostscript-8.62.dfsg.1/debian/ghostscript.prerm
@@ -0,0 +1,50 @@
+#! /bin/sh
+# prerm script for ghostscript
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <prerm> `remove'
+#        * <old-prerm> `upgrade' <new-version>
+#        * <new-prerm> `failed-upgrade' <old-version>
+#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+#        * <deconfigured's-prerm> `deconfigure' `in-favour'
+#          <package-being-installed> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    remove)
+#       install-info --quiet --remove /usr/info/ghostscript.info.gz
+	if type defoma-app >/dev/null 2>&1; then
+	  defoma-app -t purge gs
+	fi
+	update-alternatives --remove-all ps2pdf
+	;;
+    upgrade)
+	if type defoma-app >/dev/null 2>&1; then
+	  defoma-app -t clean gs
+	update-alternatives --remove-all ps2pdf
+	fi
+        ;;
+    deconfigure)
+#       install-info --quiet --remove /usr/info/ghostscript.info.gz
+        ;;
+    failed-upgrade)
+        ;;
+    *)
+        echo "prerm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
--- ghostscript-8.62.dfsg.1.orig/debian/watch
+++ ghostscript-8.62.dfsg.1/debian/watch
@@ -0,0 +1,8 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# Site		Directory		Pattern			Version	Script
+version=3
+opts=uversionmangle=s/-gpl$//,dversionmangle=s/\.dfsg.+// \
+http://mirror.cs.wisc.edu/pub/mirrors/ghost/GPL/current/ghostscript-(\d+.+)\.tar\.gz
+
--- ghostscript-8.62.dfsg.1.orig/debian/gs-afpl.preinst
+++ ghostscript-8.62.dfsg.1/debian/gs-afpl.preinst
@@ -0,0 +1,45 @@
+#!/bin/sh
+# preinst script for gs-esp
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <new-preinst> `install'
+#        * <new-preinst> `install' <old-version>
+#        * <new-preinst> `upgrade' <old-version>
+#        * <old-preinst> `abort-upgrade' <new-version>
+#
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    install|upgrade)
+	# Do away with update-alternative for /usr/bin/gs, we have one
+	# grand unified Ghostscript now!
+        if dpkg --compare-versions "$2" lt-nl "8.62.dfsg.1-3"; then
+            update-alternatives --remove-all gs || true
+            update-alternatives --remove-all gs.1 || true
+        fi
+
+    ;;
+
+    abort-upgrade)
+    ;;
+
+    *)
+        echo "preinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
--- ghostscript-8.62.dfsg.1.orig/debian/gs-esp.preinst
+++ ghostscript-8.62.dfsg.1/debian/gs-esp.preinst
@@ -0,0 +1,45 @@
+#!/bin/sh
+# preinst script for gs-esp
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <new-preinst> `install'
+#        * <new-preinst> `install' <old-version>
+#        * <new-preinst> `upgrade' <old-version>
+#        * <old-preinst> `abort-upgrade' <new-version>
+#
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    install|upgrade)
+	# Do away with update-alternative for /usr/bin/gs, we have one
+	# grand unified Ghostscript now!
+        if dpkg --compare-versions "$2" lt-nl "8.62.dfsg.1-3"; then
+            update-alternatives --remove-all gs || true
+            update-alternatives --remove-all gs.1 || true
+        fi
+
+    ;;
+
+    abort-upgrade)
+    ;;
+
+    *)
+        echo "preinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
--- ghostscript-8.62.dfsg.1.orig/debian/dirs
+++ ghostscript-8.62.dfsg.1/debian/dirs
@@ -0,0 +1,5 @@
+usr/bin
+usr/share/defoma/scripts
+etc/defoma/config
+var/lib/defoma/gs.d/dirs/fonts
+var/lib/defoma/gs.d/dirs/CMap
--- ghostscript-8.62.dfsg.1.orig/debian/ghostscript.links
+++ ghostscript-8.62.dfsg.1/debian/ghostscript.links
@@ -0,0 +1,14 @@
+var/lib/defoma/gs.d/dirs/CMap		usr/share/ghostscript/8.62/Resource/CMap
+var/lib/defoma/gs.d/dirs/CMap		usr/share/ghostscript/CMap
+usr/bin/ps2ascii			usr/bin/ps2txt
+usr/share/man/de/man1/ps2ps.1.gz	usr/share/man/de/man1/eps2eps.1.gz
+usr/share/man/de/man1/ps2pdf.1.gz	usr/share/man/de/man1/ps2pdf12.1.gz
+usr/share/man/de/man1/ps2pdf.1.gz	usr/share/man/de/man1/ps2pdf13.1.gz
+usr/share/man/man1/ps2ps.1.gz		usr/share/man/man1/eps2eps.1.gz
+usr/share/man/man1/gslp.1.gz		usr/share/man/man1/gsbj.1.gz
+usr/share/man/man1/gslp.1.gz		usr/share/man/man1/gsdj.1.gz
+usr/share/man/man1/gslp.1.gz		usr/share/man/man1/gsdj500.1.gz
+usr/share/man/man1/gslp.1.gz		usr/share/man/man1/gslj.1.gz
+usr/share/man/man1/ps2pdf.1.gz		usr/share/man/man1/ps2pdf12.1.gz
+usr/share/man/man1/ps2pdf.1.gz		usr/share/man/man1/ps2pdf13.1.gz
+usr/share/man/man1/ps2pdf.1.gz		usr/share/man/man1/ps2pdf14.1.gz
--- ghostscript-8.62.dfsg.1.orig/debian/ghostscript-doc.doc-base
+++ ghostscript-8.62.dfsg.1/debian/ghostscript-doc.doc-base
@@ -0,0 +1,10 @@
+Document: ghostscript
+Title: GPL Ghostscript Manual
+Author: artofcode LLC.
+Abstract: This manual describes what GPL Ghostscript is
+ and how it can be used
+Section: Text
+
+Format: HTML
+Index: /usr/share/doc/ghostscript/index.html
+Files: /usr/share/doc/ghostscript/*.htm*
--- ghostscript-8.62.dfsg.1.orig/debian/patches/00list
+++ ghostscript-8.62.dfsg.1/debian/patches/00list
@@ -0,0 +1,17 @@
+01_docdir_fix_for_debian
+02_gs_man_fix_debian
+03_libpaper_support
+11_gs-cjk_font_glyph_handling_fix
+12_gs-cjk_vertical_writing_metrics_fix
+13_gs-cjk_cjkps_examples
+#14_gs-cjk_big_cmap_post_table
+20_bbox_segv_fix
+21_brother_7x0_gdi_fix
+22_epsn_margin_workaround
+#23_gdevxini_segv_fix
+24_gs_man_fix
+25_toolbin_insecure_tmp_usage_fix
+26_assorted_script_fixes
+29_gs_css_fix
+30_ps2pdf_man_improvement
+31_fix-gc-sigbus
--- ghostscript-8.62.dfsg.1.orig/debian/patches/23_gdevxini_segv_fix.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/23_gdevxini_segv_fix.dpatch
@@ -0,0 +1,22 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 23_gdevxini_segv_fix.dpatch by Masayuki Hatta (mhatta) <mhatta@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
+diff -urNad ghostscript-8.61.dfsg.1~/src/gdevxini.c ghostscript-8.61.dfsg.1/src/gdevxini.c
+--- ghostscript-8.61.dfsg.1~/src/gdevxini.c	2007-09-25 22:31:24.000000000 +0900
++++ ghostscript-8.61.dfsg.1/src/gdevxini.c	2008-01-13 08:56:13.000000000 +0900
+@@ -902,7 +902,10 @@
+ 	dev->is_open = false;
+     xdev->IsPageDevice = values.IsPageDevice;
+     code = gx_default_put_params(dev, plist);
+-    dev->is_open = values.is_open; /* saved value */
++    /* Prevent us from preventing the device closure if the size changed;
++     * that may require us to rebuild the buffer (see x_set_buffer). */
++    if (xdev->width == values.width && xdev->height == values.height)
++      dev->is_open = values.is_open; /* saved value */
+     if (code < 0) {		/* Undo setting of .IsPageDevice */
+ 	xdev->IsPageDevice = save_is_page;
+ 	return code;
--- ghostscript-8.62.dfsg.1.orig/debian/patches/14_gs-cjk_big_cmap_post_table.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/14_gs-cjk_big_cmap_post_table.dpatch
@@ -0,0 +1,223 @@
+#! /bin/sh -e
+## 14_gs-cjk_big_cmap_post_table.dpatch by Masayuki Hatta <mhatta@debian.org>
+##
+## All lines beginning with \`## DP:' are a description of the patch.
+## DP: Support big post table for CMaps
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+        -patch) patch -f --no-backup-if-mismatch --dry-run -p1 < $0 && patch -f --no-backup-if-mismatch -p1 < $0
+;;
+        -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+                exit 1;;
+esac
+
+exit 0
+
+diff -urN gs-gpl-8.54.dfsg.1.orig/lib/gs_ttf.ps gs-gpl-8.54.dfsg.1/lib/gs_ttf.ps
+--- gs-gpl-8.54.dfsg.1.orig/lib/gs_ttf.ps	2006-10-15 17:58:21.000000000 +0900
++++ gs-gpl-8.54.dfsg.1/lib/gs_ttf.ps	2006-10-15 18:20:47.000000000 +0900
+@@ -273,6 +273,54 @@
+   } for pop exch pop
+ } bind def
+ 
++/.biglength { % <str>|<array of str> .biglength <integer>
++  dup type /arraytype eq { 0 exch { length add } forall } { length } ifelse
++} bind def
++
++/concats { % [str ...] concats str
++  () exch dup length 1 sub -1 0 {
++    1 index exch get dup type /stringtype ne { dup length string cvs } if
++    3 -1 roll exch dup length 2 index length add string
++    dup dup 4 2 roll copy length 4 -1 roll putinterval exch
++  } for pop
++} bind def
++
++% <str>|<array of str> <index> <count> .biggetinterval <str>|<array of str>
++/.biggetinterval {
++  3 dict begin
++  2 index type /arraytype eq {
++    /c exch def
++    /i exch def
++    [ exch {
++      dup length /l exch def
++      i c add l gt {
++        i l lt {
++          i l i sub getinterval
++          /c i c add l sub def
++          /i 0 def
++        } {
++          pop
++          /i i l sub def
++        } ifelse
++      } {
++        i c getinterval exit
++      } ifelse
++    } forall
++    ] dup .biglength 65535 le { concats } if
++  } { getinterval } ifelse
++  end
++} bind def
++
++% <str>|<array of str> <index> getu16 <integer>
++/.biggetu16 {
++  2 .biggetinterval 0 getu16
++} bind def
++
++% <str>|<array of str> <index> getu32 <integer>
++/.biggetu32 {
++  4 .biggetinterval 0 getu32
++} bind def
++
+ % Each procedure in this dictionary is called as follows:
+ %       <encodingtable> proc <glypharray>
+ /cmapformats mark
+@@ -363,14 +411,14 @@
+   } bind
+   4 {		% Microsoft/Adobe segmented mapping.
+     /etab exch def
+-    /nseg2 etab 6 getu16 def
+-    14 /endc etab 2 index nseg2 getinterval def
++    /nseg2 etab 6 .biggetu16 def
++    14 /endc etab 2 index nseg2 .biggetinterval def
+ 		% The Apple TrueType documentation omits the 2-byte
+ 		% 'reserved pad' that follows the endCount vector!
+     2 add
+-    nseg2 add /startc etab 2 index nseg2 getinterval def
+-    nseg2 add /iddelta etab 2 index nseg2 getinterval def
+-    nseg2 add /idroff etab 2 index nseg2 getinterval def
++    nseg2 add /startc etab 2 index nseg2 .biggetinterval def
++    nseg2 add /iddelta etab 2 index nseg2 .biggetinterval def
++    nseg2 add /idroff etab 2 index nseg2 .biggetinterval def
+ 		% The following hack allows us to properly handle
+ 		% idiosyncratic fonts that start at 0xf000:
+     pop
+@@ -382,8 +430,8 @@
+     /numcodes 0 def /glyphs 0 0 2 nseg2 3 sub {
+ 		% Stack: /glyphs numglyphs i2
+       /i2 exch def
+-      /scode startc i2 getu16 def
+-      /ecode endc i2 getu16 def
++      /scode startc i2 .biggetu16 def
++      /ecode endc i2 .biggetu16 def
+       numcodes scode firstcode sub
+ 		% Hack for fonts that have only 0x0000 and 0xf000 ranges
+       %dup 16#e000 ge { 255 and } if
+@@ -404,8 +452,8 @@
+     /numcodes 0 def /code 0 def
+     0 2 nseg2 3 sub {
+       /i2 exch def
+-      /scode startc i2 getu16 def
+-      /ecode endc i2 getu16 def
++      /scode startc i2 .biggetu16 def
++      /ecode endc i2 .biggetu16 def
+       numcodes scode firstcode sub
+ 		% Hack for fonts that have only 0x0000 and 0xf000 ranges
+       %dup 16#e000 ge { 255 and } if
+@@ -417,15 +465,15 @@
+ 	(scode=) print scode =only
+ 	( ecode=) print ecode =only
+ 	( delta=) print delta =only
+-	( droff=) print idroff i2 getu16 =
++	( droff=) print idroff i2 .biggetu16 =
+       } if
+-      idroff i2 getu16 dup 0 eq {
++      idroff i2 .biggetu16 dup 0 eq {
+ 	pop scode delta add 65535 and 1 ecode delta add 65535 and
+ 	{ putglyph } for
+       } {	% The +2 is for the 'reserved pad'.
+         /gloff exch 14 nseg2 3 mul add 2 add i2 add add def
+         0 1 ecode scode sub {
+-	  2 mul gloff add etab exch getu16
++	  2 mul gloff add etab exch .biggetu16
+ 	  dup 0 ne { delta add 65535 and } if putglyph
+ 	} for
+       } ifelse
+@@ -448,12 +496,12 @@
+ 
+ % <cmaptab> cmaparray <glypharray>
+ /cmaparray {
+-  dup 0 getu16 cmapformats exch .knownget {
++  dup 0 .biggetu16 cmapformats exch .knownget {
+     TTFDEBUG {
+-      (cmap: format ) print 1 index 0 getu16 = flush
++      (cmap: format ) print 1 index 0 .biggetu16 = flush
+     } if exec
+   } {
+-    (Can't handle format ) print 0 getu16 = flush
++    (Can't handle format ) print 0 .biggetu16 = flush
+     0 1 255 { } for 256 packedarray
+   } ifelse
+   TTFDEBUG {
+@@ -591,7 +639,7 @@
+ % Adobe requirement that each sfnts entry have even length.
+ /readtables mark
+ 	% Ordinary tables
+-  (cmap) //call.readtable
++  (cmap) //call.readbigtable
+   (head) 1 index
+   (hhea) 1 index
+   (maxp) 1 index
+@@ -964,10 +1012,21 @@
+   } ifelse
+ 		% Stack: ... /FontInfo mark key1 value1 ...
+   post null ne {
+-    /ItalicAngle first_post_string 4 gets32 65536.0 div
+-    /isFixedPitch first_post_string 12 getu32 0 ne
+-    /UnderlinePosition first_post_string 8 gets16 upem div
+-    /UnderlineThickness first_post_string 10 gets16 upem div
++     post type /arraytype eq {
++       % this post table is a big table. /post should be [(...) ...]
++       % data we actually need here should be first one in array.
++       /posttable post 1 get def
++     } {
++       /posttable post def
++     } ifelse
++%    /ItalicAngle first_post_string 4 gets32 65536.0 div
++%    /isFixedPitch first_post_string 12 getu32 0 ne
++%    /UnderlinePosition first_post_string 8 gets16 upem div
++%    /UnderlineThickness first_post_string 10 gets16 upem div
++     /ItalicAngle posttable 4 gets32 65536.0 div
++     /isFixedPitch posttable 12 getu32 0 ne
++     /UnderlinePosition posttable 8 gets16 upem div
++     /UnderlineThickness posttable 10 gets16 upem div
+   } if
+   counttomark 0 ne { .dicttomark } { pop pop } ifelse
+   /XUID [orgXUID 42 curxuid]
+@@ -1026,22 +1085,22 @@
+     } if
+     tabdict /cmap get                                   % bool [] i PlatID SpecID (cmap)
+     dup /cmaptab exch def % temporary
+-    0 1 2 index 2 getu16 1 sub {                         % bool [] i PlatID SpecID (cmap) j
+-      8 mul 4 add 1 index exch 8 getinterval             % bool [] i PlatID SpecID (cmap) (cmapsub)
++    0 1 2 index 2 .biggetu16 1 sub {                         % bool [] i PlatID SpecID (cmap) j
++      8 mul 4 add 1 index exch 8 .biggetinterval             % bool [] i PlatID SpecID (cmap) (cmapsub)
+       TTFDEBUG {
+-        (cmap: platform ) print dup 0 getu16 =only
+-        ( encoding ) print dup 2 getu16 = flush
++        (cmap: platform ) print dup 0 .biggetu16 =only
++        ( encoding ) print dup 2 .biggetu16 = flush
+       } if
+-      dup 0 getu16 4 index eq {
+-        dup 2 getu16 3 index eq {                        % bool [] i PlatID SpecID (cmap) (cmapsub)
++      dup 0 .biggetu16 4 index eq {
++        dup 2 .biggetu16 3 index eq {                        % bool [] i PlatID SpecID (cmap) (cmapsub)
+           TTFDEBUG {
+             (Choosen a cmap for platform=) print 3 index =only
+             ( encoding=) print 2 index =
+           } if
+           /cmapsub 1 index def
+-          dup 4 getu32                                   % bool [] i PlatID SpecID (cmap) (cmapsub) p
+-          cmaptab length 1 index sub                     % bool [] i PlatID SpecID (cmap) (cmapsub) p l
+-          cmaptab 3 1 roll getinterval
++          dup 4 .biggetu32                                   % bool [] i PlatID SpecID (cmap) (cmapsub) p
++          cmaptab .biglength 1 index sub                     % bool [] i PlatID SpecID (cmap) (cmapsub) p l
++          cmaptab 3 1 roll .biggetinterval
+           /cmaptab exch def                              % bool [] i PlatID SpecID (cmap) (cmapsub)
+           5 index 5 index 1 add get                      % bool [] i PlatID SpecID (cmap) (cmapsub) /Decoding
+           /Decoding exch def                             % bool [] i PlatID SpecID (cmap) (cmapsub)
--- ghostscript-8.62.dfsg.1.orig/debian/patches/26_assorted_script_fixes.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/26_assorted_script_fixes.dpatch
@@ -0,0 +1,37 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 26_assorted_script_fixes.dpatch by  <till.kamppeter@gmail.com>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Assorted script fixes
+
+@DPATCH@
+diff -urNad ghostscript-8.61.dfsg.1~/lib/dumphint ghostscript-8.61.dfsg.1/lib/dumphint
+--- ghostscript-8.61.dfsg.1~/lib/dumphint	2007-07-06 04:04:29.000000000 +0900
++++ ghostscript-8.61.dfsg.1/lib/dumphint	2008-01-13 09:55:20.000000000 +0900
+@@ -27,4 +27,4 @@
+ 	exit 1
+ fi
+ 
+-exec "$GS_EXECUTABLE" -q -dNODISPLAY $OPTIONS -- dumphint.ps "$1"
++exec "$GS_EXECUTABLE" -q -dNODISPLAY $OPTIONS -- "`dirname $0`/dumphint.ps" "$1"
+diff -urNad ghostscript-8.61.dfsg.1~/lib/dvipdf ghostscript-8.61.dfsg.1/lib/dvipdf
+--- ghostscript-8.61.dfsg.1~/lib/dvipdf	2007-07-05 19:57:00.000000000 +0900
++++ ghostscript-8.61.dfsg.1/lib/dvipdf	2008-01-13 09:55:20.000000000 +0900
+@@ -44,4 +44,4 @@
+ 
+ # We have to include the options twice because -I only takes effect if it
+ # appears before other options.
+-exec dvips $DVIPSOPTIONS -q -f "$infile" | $GS_EXECUTABLE $OPTIONS -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$outfile" $OPTIONS -c .setpdfwrite -
++exec dvips -Ppdf $DVIPSOPTIONS -q -f "$infile" | $GS_EXECUTABLE $OPTIONS -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$outfile" $OPTIONS -c .setpdfwrite -
+diff -urNad ghostscript-8.61.dfsg.1~/lib/ps2epsi ghostscript-8.61.dfsg.1/lib/ps2epsi
+--- ghostscript-8.61.dfsg.1~/lib/ps2epsi	2007-07-06 04:04:29.000000000 +0900
++++ ghostscript-8.61.dfsg.1/lib/ps2epsi	2008-01-13 09:55:20.000000000 +0900
+@@ -75,7 +75,7 @@
+ 		}
+ 	' U="$USERNAME$LOGNAME"  F=1 - F=2 "${infile}" >"$tmpfile"
+ 
+-"$GS_EXECUTABLE" -q -dNOPAUSE -dSAFER -dDELAYSAFER -r72 -sDEVICE=bit -sOutputFile=/dev/null "$tmpfile" ps2epsi.ps "$tmpfile" <"${infile}" 1>&2
++"$GS_EXECUTABLE" -q -sPAPERSIZE=a0 -dNOPAUSE -dSAFER -dDELAYSAFER -r72 -sDEVICE=bit -sOutputFile=/dev/null "$tmpfile" ps2epsi.ps "$tmpfile" <"${infile}" 1>&2
+ rm -f "$tmpfile"
+ rm -rf "$tmpdir"
+ 
--- ghostscript-8.62.dfsg.1.orig/debian/patches/28_print_encrypted_PDFs_from_adobe_reader_8.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/28_print_encrypted_PDFs_from_adobe_reader_8.dpatch
@@ -0,0 +1,22 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 28_print_encrypted_PDFs_from_adobe_reader_8.dpatch by  <till.kamppeter@gmail.com>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
+diff -urNad ghostscript-8.61.dfsg.1~/src/seexec.c ghostscript-8.61.dfsg.1/src/seexec.c
+--- ghostscript-8.61.dfsg.1~/src/seexec.c	2007-09-25 14:31:24.000000000 +0100
++++ ghostscript-8.61.dfsg.1/src/seexec.c	2007-12-10 12:23:31.000000000 +0000
+@@ -215,8 +215,10 @@
+  * so that it will stay under the limit even after adding min_in_size
+  * for a subsequent filter in a pipeline.  Note that we have to specify
+  * a size of at least 128 so that filter_read won't round it up.
++ * The value of 132 is small enough for the sample file of the bug 689577 but
++ * still sufficient for comparefiles/fonttest.pdf .
+  */
+ const stream_template s_exD_template = {
+-    &st_exD_state, s_exD_init, s_exD_process, 8, 200,
++    &st_exD_state, s_exD_init, s_exD_process, 8, 132,
+     NULL, s_exD_set_defaults
+ };
--- ghostscript-8.62.dfsg.1.orig/debian/patches/25_toolbin_insecure_tmp_usage_fix.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/25_toolbin_insecure_tmp_usage_fix.dpatch
@@ -0,0 +1,29 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 25_toolbin_insecure_tmp_usage_fix.dpatch by Masayuki Hatta (mhatta) <mhatta@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Fixes insecure scripts in toolbin.
+
+@DPATCH@
+diff -urNad ghostscript-8.62.dfsg.1~/toolbin/pre.tcl ghostscript-8.62.dfsg.1/toolbin/pre.tcl
+--- ghostscript-8.62.dfsg.1~/toolbin/pre.tcl	2007-12-21 08:11:54.000000000 +0800
++++ ghostscript-8.62.dfsg.1/toolbin/pre.tcl	2008-03-09 13:25:29.000000000 +0800
+@@ -151,6 +151,18 @@
+     }
+ }
+ 
++switch $tcl_platform(platform) {
++     unix {
++         set tmpdir /tmp   # or even $::env(TMPDIR), at times.
++     } macintosh {
++         set tmpdir $::env(TRASH_FOLDER)  ;# a better place?
++     } default {
++         set tmpdir [pwd]
++         catch {set tmpdir $::env(TMP)}
++         catch {set tmpdir $::env(TEMP)}
++     }
++}
++
+ if {$argv == {update}} {
+     # Update dates in .htm and .1 files.
+     proc updoc {doc before after} {
--- ghostscript-8.62.dfsg.1.orig/debian/patches/31_fix-gc-sigbus.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/31_fix-gc-sigbus.dpatch
@@ -0,0 +1,27 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 31_fix-gc-sigbus.dpatch by Pierre Habouzit <madcoder@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Fixes sigbus/segfaults on sparc, hppa, etc.
+
+@DPATCH@
+diff -urNad ghostscript-8.62.dfsg.1~/src/store.h ghostscript-8.62.dfsg.1/src/store.h
+--- ghostscript-8.62.dfsg.1~/src/store.h	2007-06-06 00:23:38.000000000 +0200
++++ ghostscript-8.62.dfsg.1/src/store.h	2008-05-14 15:24:07.000000000 +0200
+@@ -65,10 +65,14 @@
+  * Assigning the components individually is fastest on Turbo C,
+  * and on Watcom C when one or both of the addresses are
+  * already known or in a register.
++ *
++ * Though, it sends wrong signals to the compiler that believes it's okay-ish
++ * to update the structure in two calls, and risks very wrong reordering. This
++ * _MUST_ be done in one call, and trust the compiler to do the proper thing,
++ * if not too bad. And we're using GCC anyways on Debian.
+  */
+ #define ref_assign_inline(pto,pfrom)\
+-	((pto)->value = (pfrom)->value,\
+-	 (pto)->tas = (pfrom)->tas)
++	(*(pto) = *(pfrom))
+ #ifdef __TURBOC__
+ 	/*
+ 	 * Move the data in two 32-bit chunks, because
--- ghostscript-8.62.dfsg.1.orig/debian/patches/24_gs_man_fix.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/24_gs_man_fix.dpatch
@@ -0,0 +1,42 @@
+#! /bin/sh -e
+## 12_gs-gpl_man_fix.dpatch by Masayuki Hatta <mhatta@debian.org>
+##
+## All lines beginning with \`## DP:' are a description of the patch.
+## DP: Typo fixes for gs-gpl.1
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+        -patch) patch -f --no-backup-if-mismatch --dry-run -p1 < $0 && patch -f --no-backup-if-mismatch -p1 < $0
+;;
+        -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+                exit 1;;
+esac
+
+exit 0
+
+diff -urN gs-gpl-8.56.dfsg.1.orig/man/gs.1 gs-gpl-8.56.dfsg.1/man/gs.1
+--- gs-gpl-8.56.dfsg.1.orig/man/gs.1	2007-05-05 01:02:15.000000000 +0900
++++ gs-gpl-8.56.dfsg.1/man/gs.1	2007-05-05 01:03:55.000000000 +0900
+@@ -27,7 +27,7 @@
+ (such as Control-C at the keyboard).
+ .PP
+ The interpreter recognizes many option switches, some of which are described
+-below. Please see the usage documenation for complete information. Switches
++below. Please see the usage documentation for complete information. Switches
+ may appear anywhere in the command line and apply to all files thereafter.
+ Invoking Ghostscript with the \fB\-h\fR or \fB\-?\fR switch produces a
+ message which shows several useful switches, all the devices known to
+@@ -154,7 +154,7 @@
+ 	-sPAPERSIZE=legal
+ .fi
+ .PP
+-Most ISO and US paper sizes are recognized. See the usage documenatation for
++Most ISO and US paper sizes are recognized. See the usage documentation for
+ a full list, or the definitions in the initialization file "gs_statd.ps".
+ .PP
+ Ghostscript can do many things other than print or view PostScript and
--- ghostscript-8.62.dfsg.1.orig/debian/patches/11_gs-cjk_font_glyph_handling_fix.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/11_gs-cjk_font_glyph_handling_fix.dpatch
@@ -0,0 +1,2979 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 11_gs-cjk_font_glyph_handling_fix.dpatch by Masayuki Hatta (mhatta) <mhatta@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: CJK improvement suppport patches Pt. 1 (Font glyph handling).
+
+@DPATCH@
+diff -urNad ghostscript-8.62.dfsg.1~/lib/cjkv/baseutil.ps ghostscript-8.62.dfsg.1/lib/cjkv/baseutil.ps
+--- ghostscript-8.62.dfsg.1~/lib/cjkv/baseutil.ps	1970-01-01 08:00:00.000000000 +0800
++++ ghostscript-8.62.dfsg.1/lib/cjkv/baseutil.ps	2008-03-09 10:53:53.000000000 +0800
+@@ -0,0 +1,569 @@
++%!
++%
++% Developed by AXE,Inc., BBR Inc. and Turbolinux Inc.
++%   under the technical advice by suzuki toshiya (Hiroshima University)
++% For questions, please send mail to espgs8-cjk@printing-japan.org
++%
++% (C) Copyright 2006 Center of the International Cooperation for
++%     Computerization
++%
++%
++% Based on gs-cjk patches
++% Copyright (C) 2001-2003 gs-cjk project:
++%   Taiji Yamada, Masatake Yamato, Hideyuki Suzuki and suzuki toshiya.
++%   Enhancements by Akira Tagoh and Taiji Yamada, 2005.
++%   All rights reserved.
++%
++%
++% Based on GNU Ghostscript 7.07 and 8.15
++% Copyright (C) 1996-2003 artofcode LLC.  All rights reserved.
++%
++% This software is provided AS-IS with no warranty, either express or
++% implied.
++%
++%
++% 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) any later version.
++%
++% This program is distributed in the hope that it will be useful,
++% but WITHOUT ANY WARRANTY; without 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-1307 USA
++%
++
++[
++   /CJKV_DEBUG_BASE
++] {dup where {pop pop} { currentdict exch false def pop } ifelse} forall
++
++/_cjkv_ttcmap_tmp 10 dict def
++
++/_cjkv_base_util 50 dict dup begin
++
++  /.cjkv_newdicttomark { % <mark> <k1> <v1> ... <kn> <vn> <extra_space> .cjkv_newdicttomark <dict>
++    CJKV_DEBUG_BASE { (--- .cjkv_newdicttomark start\n) print flush  } if
++    counttomark 1 sub 2 idiv add dict   % <mark> <k1> <v1> ... <kn> <vn> <dict>
++    CJKV_DEBUG_BASE { (--- scratch dict making finished\n) print flush  } if
++    counttomark 1 sub 2 idiv {
++      dup                               % <mark> <k1> <v1> ... <kn> <vn> <dict> <dict>
++      4 2 roll                          % <mark> <k1> <v1> ... <dict> <dict> <kn> <vn>
++      dup type /stringtype eq { dup length string copy } if
++      dup type /arraytype  eq {
++        dup length array exch dup length 0 exch 1 exch 1 sub {
++          1 index 1 index get dup type /stringtype eq {
++            dup length string copy
++          } if
++          [ exch ]
++          3 index 3 1 roll putinterval
++        } for
++        pop
++      } if
++      dup type /dicttype   eq {
++        dup length dict exch
++        [ 1 index { pop } forall ] {
++          1 index 1 index get dup type /stringtype eq {
++            dup length string copy
++          } if
++          3 index 3 1 roll put
++        } forall
++        pop
++      } if
++      put                               % <mark> <k1> <v1> ... <dict>
++      CJKV_DEBUG_BASE { (--- copy ok\n) print flush  } if
++    } repeat                            % <mark> <dict>
++    exch pop                            % <dict>
++    CJKV_DEBUG_BASE { (--- .cjkv_newdicttomark ok\n) print flush  } if
++  } bind def
++
++  /orgXUID AladdinEnterprisesXUID def
++  /maxstring 32000 def    % half the maximum length of a PostScript string,
++                          % must be a multiple of 4 (for hmtx / loca / vmtx)
++  
++
++  /.cjkv_xuidstring <80000000> def
++
++  /.cjkv_curxuid {              % - curxuid <int>
++    0 .cjkv_xuidstring { exch 8 bitshift exch add } forall
++  } bind def
++
++  /.cjkv_nextxuid {             % - nextxuid -
++    3 -1 0 {
++      .cjkv_xuidstring 1 index 2 copy get dup 255 ne {
++        1 add put pop exit
++      } if pop 0 put pop
++    } for
++  } bind def
++  
++  % <string> <index> .cjkv_getu16 <integer>
++  /.cjkv_getu16 {
++    2 copy get 8 bitshift 3 1 roll 1 add get add
++  } bind def
++  
++  % <string> <index> .cjkv_gets16 <integer>
++  /.cjkv_gets16 {
++    .cjkv_getu16 16#8000 xor 16#8000 sub
++  } bind def
++  
++  % <string> <index> .cjkv_getu32 <integer>
++  /.cjkv_getu32 {
++    2 copy .cjkv_getu16 16 bitshift 3 1 roll 2 add .cjkv_getu16 add
++  } bind def
++  
++  % <string> <index> .cjkv_gets32 <integer>
++  /.cjkv_gets32 {
++    2 copy .cjkv_gets16 16 bitshift 3 1 roll 2 add .cjkv_getu16 add
++  } bind def
++  
++  % <string> <index> <integer> .cjkv_putu16 -
++  /.cjkv_putu16 {
++    3 copy -8 bitshift put
++    exch 1 add exch 16#ff and put
++  } bind def
++  
++  % <string> <index> <integer> .cjkv_putu32 -
++  /.cjkv_putu32 {
++    3 copy -16 bitshift .cjkv_putu16
++    exch 2 add exch 16#ffff and .cjkv_putu16
++  } bind def
++
++  /.cjkv_biglength { % <str>|<array of str> .biglength <integer>
++    dup type /arraytype eq { 0 exch { length add } forall } { length } ifelse
++  } bind def
++  
++  /.cjkv_concats { % [str ...] concats str
++    () exch dup length 1 sub -1 0 {
++      1 index exch get dup type /stringtype ne { dup length string cvs } if
++      3 -1 roll exch dup length 2 index length add string
++      dup dup 4 2 roll copy length 4 -1 roll putinterval exch
++    } for pop
++  } bind def
++  
++  % <str>|<array of str> <index> <count> .cjkv_biggetinterval <str>|<array of str>
++  /.cjkv_biggetinterval {
++    currentglobal 4 1 roll
++    false setglobal
++    5 dict begin
++    2 index type /arraytype eq {
++      /c exch def
++      /i exch def
++      [ exch {
++        dup length /l exch def
++        i c add l gt {
++          i l lt {
++            i l i sub getinterval
++            /c i c add l sub def
++            /i 0 def
++          } {
++            pop
++            /i i l sub def
++          } ifelse
++        } {
++          i c getinterval exit
++        } ifelse
++      } forall
++      counttomark array dup length 1 sub -1 0 { 1 index exch 3 index put exch pop } for exch pop
++      dup .cjkv_biglength 65535 le { .cjkv_concats } if
++    } { getinterval } ifelse
++    end
++    exch setglobal
++  } bind def
++  
++  % <str>|<array of str> <index> .cjkv_biggetu16 <integer>
++  /.cjkv_biggetu16 {
++    2 .cjkv_biggetinterval 0 .cjkv_getu16
++  } bind def
++  
++  % <str>|<array of str> <index> .cjkv_biggetu32 <integer>
++  /.cjkv_biggetu32 {
++    4 .cjkv_biggetinterval 0 .cjkv_getu32
++  } bind def
++  
++  % <string> .cjkv_strtoint <integer>
++  /.cjkv_strtoint {
++    0 exch { exch 8 bitshift add } forall
++  } bind def
++  
++  % <nametable> <nameid> findname <string> true
++  % <nametable> <nameid> findname false
++  /.cjkv_findname {
++    CJKV_DEBUG_BASE { (findname: ) print dup =only  } if
++    false 3 1 roll 0 1 3 index 2 .cjkv_getu16 1 sub {
++                  % Stack: false table id index
++      12 mul 6 add 2 index exch 12 getinterval
++      dup 6 .cjkv_getu16 2 index eq {
++                  % We found the name we want.
++        exch pop
++                  % Stack: false table record
++        dup 10 .cjkv_getu16 2 index 4 .cjkv_getu16 add
++        1 index 8 .cjkv_getu16 4 -1 roll 3 1 roll getinterval exch
++                  % Stack: false string record
++                  % Check for 8- vs. 16-bit characters.
++        .cjkv_is2byte { .cjkv_string2to1 } if true null 4 -1 roll exit
++      } if pop
++    } for pop pop
++    CJKV_DEBUG_BASE {
++      dup { ( = ) print 1 index == } { ( not found) = } ifelse
++    } if
++  } bind def
++  
++  % <namerecord> .cjkv_is2byte <bool>
++  /.cjkv_is2byte {
++    dup 0 .cjkv_getu16 {
++      { pop true }                % Apple Unicode
++      { pop false }               % Macintosh Script manager
++      { 1 .cjkv_getu16 1 eq }           % ISO
++      { 1 .cjkv_getu16 1 eq }           % Microsoft
++    } exch get exec
++  } bind def
++  
++  % <string2> string2to1 <string>
++  /.cjkv_string2to1 {
++    dup length 2 idiv string dup
++    0 1 3 index length 1 sub {
++      3 index 1 index 2 mul 1 add get put dup
++    } for pop exch pop
++  } bind def
++  
++
++  % <array> <lt-proc> .cjkv_sort <array>
++  /.cjkv_sort {
++    1 index length 1 sub -1 1 {
++      2 index exch 2 copy get 3 copy      % arr proc arr i arr[i] arr i arr[i]
++      0 1 3 index 1 sub {
++        3 index 1 index get       % arr proc arr i arr[i] arr imax amax j arr[j]
++        2 index 1 index 10 index exec {   % ... amax < arr[j]
++          4 2 roll
++        } if pop pop
++      } for                       % arr proc arr i arr[i] arr imax amax
++      4 -1 roll exch 4 1 roll put put
++    } for pop
++  } def
++  
++  
++  % <array|string> <index> <count> .cjkv_safegetinterval <subarray|substring>
++  /.cjkv_safegetinterval {
++    exch 2 index length .min exch
++    2 index length 2 index sub .min
++    getinterval
++  } bind def
++  
++  % <array> <index> <obj> .cjkv_safeput -
++  /.cjkv_safeput {
++    2 index length 2 index gt { put } { pop pop pop } ifelse
++  } bind def
++  
++  % Each procedure in this dictionary is called as follows:
++  %       <encodingtable> proc <glypharray>
++  /_cjkv_cmapformats mark
++    0 {		% Apple standard 1-to-1 mapping.
++      6 256 getinterval { } forall 256 packedarray
++    } bind
++    2 {		% Apple 16bit CJK (ShiftJIS etc)
++  
++      % /sHK_sz		subHeaderKey_size	% 1 * uint16
++      % /sH_sz		subHeader_size		% 4 * uint16
++      % /sH_len		subHeader_length
++      % /cmapf2_tblen	total table length
++      % /cmapf2_lang	language code (not used)
++      % /sHKs		subHeaderKeys
++  
++      /sHK_sz 2 def
++      /sH_sz 8 def
++      dup 2 .cjkv_getu16 /cmapf2_tblen exch def
++  
++      CJKV_DEBUG_BASE {
++         (format2 table length: 0x) print
++         cmapf2_tblen 16 10 string cvrs print
++         (=) print
++         cmapf2_tblen == flush
++      } if
++      dup 4 .cjkv_getu16 /cmapf2_lang exch def
++  
++      CJKV_DEBUG_BASE {
++         (format2 lang code: 0x) print
++         cmapf2_lang 16 10 string cvrs == flush
++      } if
++      dup 6 256 sHK_sz mul getinterval /sHKs exch def
++      CJKV_DEBUG_BASE {
++         (format2 subHeaderKeys: ) print
++         sHKs == flush
++         (scan subHeaderKeys\n) print flush
++      } if
++  
++      0		% initialization value for /sH_len
++      0 1 255 {
++         CJKV_DEBUG_BASE {
++            (hi byte ) =only
++            dup 16 10 string cvrs =only
++            (-> subHeader #) print
++            flush
++         } if
++         sHKs exch
++         2 mul .cjkv_getu16
++         CJKV_DEBUG_BASE {
++            dup 16 10 string cvrs =only
++            ( ) print dup == flush
++         } if
++         1 index	% get current max
++         1 index	% get current subHeaderKey
++         lt {exch} if pop
++      } for
++      /sH_len exch def
++  
++      CJKV_DEBUG_BASE {
++        (format2 subHeader length: ) print
++        sH_len ==
++        flush
++      } if
++      dup 6 256 sHK_sz mul add
++      cmapf2_tblen 1 index sub getinterval
++      /sH_gIA exch def
++      CJKV_DEBUG_BASE {
++         (format2 subHeaders + GID array: ) print
++         sH_gIA ==
++      } if
++  
++      /cmapf2_glyph_array 65535 array def
++  
++      /.cmapf2_putGID {
++          /cmapf2_ch cmapf2_ch_hi 8 bitshift cmapf2_ch_lo add def
++          CJKV_DEBUG_BASE {
++              (code: ) =only cmapf2_ch 16 4 string cvrs =only
++              ( -> ) =only
++          } if
++          firstCode cmapf2_ch_lo le
++          cmapf2_ch_lo firstCode entryCount add lt
++          and { % true: j is inside
++              sH_offset idRangeOffset add		% offset to gI
++              cmapf2_ch_lo firstCode sub 2 mul	% rel. pos. in range
++              add 6 add				% offset in sH_gIA
++              sH_gIA exch .cjkv_getu16
++              dup 0 gt { % 
++                  CJKV_DEBUG_BASE {
++                      dup 16 8 string cvrs =only
++                      (+) =only idDelta 16 8 string cvrs =only
++                  } if
++                  idDelta add
++                  CJKV_DEBUG_BASE {
++                      (=) =only dup 16 8 string cvrs == flush
++                  } if
++                  cmapf2_glyph_array exch cmapf2_ch exch put
++              } {
++                  CJKV_DEBUG_BASE {(specified 0: 0\n) print flush} if
++                  pop
++                  % cmapf2_glyph_array cmapf2_ch 0 put
++              } ifelse
++          } {   % false: j is outside
++              CJKV_DEBUG_BASE {(outside of range: 0\n) print flush} if
++              % cmapf2_glyph_array cmapf2_ch 0 put
++          } ifelse
++      } def
++  
++      16#00 1 16#ff { % hi_byte scan
++          /cmapf2_ch_hi exch def
++          sHKs cmapf2_ch_hi sHK_sz mul .cjkv_getu16
++          CJKV_DEBUG_BASE {
++              (subHeader_offset = idx * 8 = ) print
++              dup ==
++          } if
++          /sH_offset exch def
++          sH_gIA sH_offset sH_sz getinterval
++              dup 0 .cjkv_getu16 /firstCode exch def
++              dup 2 .cjkv_getu16 /entryCount exch def
++              dup 4 .cjkv_gets16 /idDelta exch def
++              dup 6 .cjkv_getu16 /idRangeOffset exch def
++          pop
++          CJKV_DEBUG_BASE {
++             (idRangeOffset: ) print idRangeOffset 16 8 string cvrs ==
++          } if
++          sH_offset 0 eq {
++             /cmapf2_ch_lo cmapf2_ch_hi def
++             /cmapf2_ch_hi 0 def
++             .cmapf2_putGID
++          } {
++             16#00 1 16#ff { % lo_byte scan
++                 /cmapf2_ch_lo exch def
++                 .cmapf2_putGID
++             } for
++          } ifelse
++       } for
++       pop
++       0 1 cmapf2_glyph_array length 1 sub { % rewrite null -> 0.
++          % CJKV_DEBUG_BASE { (rewriting null: ) print dup == flush } if
++          dup cmapf2_glyph_array exch get
++          null eq { cmapf2_glyph_array exch 0 put } {pop} ifelse 
++       } for
++       CJKV_DEBUG_BASE { (rewriting finished\n) print flush } if
++       cmapf2_glyph_array
++       CJKV_DEBUG_BASE {
++         16#0000 16#0010 16#fff0 {
++            16#0000 16#0001 16#000f {
++               1 index add dup 16#ffff lt {
++                 2 index exch get =only
++                 ( ) =only
++               } { pop } ifelse
++            } for
++            pop
++            (\n) print flush
++         } for
++       } if
++    } bind
++    4 {		% Microsoft/Adobe segmented mapping.
++      /etab exch _cjkv_ttcmap_tmp 3 1 roll put
++      /nseg2 _cjkv_ttcmap_tmp /etab get 6 .cjkv_biggetu16 def
++      14 /endc _cjkv_ttcmap_tmp /etab get 2 index nseg2 .cjkv_biggetinterval _cjkv_ttcmap_tmp 3 1 roll put
++  		% The Apple TrueType documentation omits the 2-byte
++  		% 'reserved pad' that follows the endCount vector!
++      2 add
++      nseg2 add /startc _cjkv_ttcmap_tmp /etab get 2 index nseg2 .cjkv_biggetinterval _cjkv_ttcmap_tmp 3 1 roll put
++      nseg2 add /iddelta _cjkv_ttcmap_tmp /etab get 2 index nseg2 .cjkv_biggetinterval _cjkv_ttcmap_tmp 3 1 roll put
++      nseg2 add /idroff _cjkv_ttcmap_tmp /etab get 2 index nseg2 .cjkv_biggetinterval  _cjkv_ttcmap_tmp 3 1 roll put
++  		% The following hack allows us to properly handle
++  		% idiosyncratic fonts that start at 0xf000:
++      pop
++      /firstcode _cjkv_ttcmap_tmp /startc get 0 .cjkv_getu16 16#ff00 and dup 16#f000 ne { pop 0 } if def
++      _cjkv_ttcmap_tmp /putglyph {
++        glyphs code 3 -1 roll put /code code 1 add def
++      } bind put
++  		% Do a first pass to compute the size of the glyphs array.
++      /numcodes 0 def /glyphs 0 0 2 nseg2 3 sub {
++  		% Stack: /glyphs numglyphs i2
++        /i2 exch def
++        /scode _cjkv_ttcmap_tmp /startc get i2 .cjkv_biggetu16 def
++        /ecode _cjkv_ttcmap_tmp /endc get i2 .cjkv_biggetu16 def
++        numcodes scode firstcode sub
++  		% Hack for fonts that have only 0x0000 and 0xf000 ranges
++        %dup 16#e000 ge { 255 and } if
++        % the previous line is obstructive to CJK fonts, so it was removed
++        exch sub 0 .max ecode scode sub 1 add add
++        exch 1 index add exch
++        numcodes add /numcodes exch def
++      } for array def
++  		% Now fill in the array.
++      /numcodes 0 def /code 0 def
++      0 2 nseg2 3 sub {
++        /i2 exch def
++        /scode _cjkv_ttcmap_tmp /startc get i2 .cjkv_getu16 def
++        /ecode _cjkv_ttcmap_tmp /endc get i2 .cjkv_getu16 def
++        numcodes scode firstcode sub
++  		% Hack for fonts that have only 0x0000 and 0xf000 ranges
++        %dup 16#e000 ge { 255 and } if
++        % the previous line is obstructive to CJK fonts, so it was removed
++        exch sub 0 .max dup { 0 _cjkv_ttcmap_tmp /putglyph get exec } repeat
++        ecode scode sub 1 add add numcodes add /numcodes exch def
++        /delta _cjkv_ttcmap_tmp /iddelta get i2 .cjkv_gets16 def
++        CJKV_DEBUG_BASE {
++  	(scode=) print scode =only
++  	( ecode=) print ecode =only
++  	( delta=) print delta =only
++  	( droff=) print _cjkv_ttcmap_tmp /idroff get i2 .cjkv_biggetu16 =
++        } if
++        _cjkv_ttcmap_tmp /idroff get i2 .cjkv_biggetu16 dup 0 eq {
++  	pop scode delta add 65535 and 1 ecode delta add 65535 and
++  	{ _cjkv_ttcmap_tmp /putglyph get exec } for
++        } {	% The +2 is for the 'reserved pad'.
++          /gloff exch 14 nseg2 3 mul add 2 add i2 add add def
++          0 1 ecode scode sub {
++  	  2 mul gloff add _cjkv_ttcmap_tmp /etab get exch .cjkv_biggetu16
++  	  dup 0 ne { delta add 65535 and } if _cjkv_ttcmap_tmp /putglyph get exec
++  	} for
++        } ifelse
++      } for glyphs /glyphs null def	% for GC
++    } bind
++    6 {		% Single interval lookup.
++      dup 6 .cjkv_getu16 /firstcode exch def dup 8 .cjkv_getu16 /ng exch def
++      firstcode ng add array
++  		% Stack: tab array
++  		% Fill elements 0 .. firstcode-1 with 0
++      0 1 firstcode 1 sub { 2 copy 0 put pop } for
++      dup firstcode ng getinterval
++  		% Stack: tab array subarray
++  		% Fill elements firstcode .. firstcode+nvalue-1 with glyph values
++      0 1 ng 1 sub {
++        dup 2 mul 10 add 4 index exch .cjkv_getu16 3 copy put pop pop
++      } for pop exch pop
++    } bind
++  .dicttomark readonly def                % _cjkv_cmapformats
++  
++  % <cmaptab> _cjkv_cmaparray <glypharray>
++  /_cjkv_cmaparray {
++    dup 0 .cjkv_biggetu16
++  
++    _cjkv_cmapformats exch .knownget {
++      CJKV_DEBUG_BASE {
++        (cmap: format ) print 1 index 0 .cjkv_biggetu16 = flush
++      } if exec
++    } {
++      (Can't handle format ) print 0 .cjkv_biggetu16 = flush
++      0 1 255 { } for 256 packedarray
++    } ifelse
++    CJKV_DEBUG_BASE {
++      (cmap: length=) print dup length = dup ==
++    } if
++  } bind def
++  
++  % Each procedure in this dictionary is called as follows:
++  %	<file> <length> -proc- <string|array_of_strings>
++  % Note that each table must have an even length, because of a strange
++  % Adobe requirement that each sfnts entry have even length.
++  /_cjkv_readtables mark
++  	% Ordinary tables
++    (head) { .cjkv_readtable }
++    (hhea) { .cjkv_readtable }
++    (maxp) { .cjkv_readtable }
++    (name) { .cjkv_readtable }
++    (OS/2) { .cjkv_readtable }
++    (vhea) { .cjkv_readtable }
++  	% Big tables
++    (cmap) { .cjkv_readbigtable }
++    (glyf) { .cjkv_readbigtable }
++    (loca) { .cjkv_readbigtable }
++    (hmtx) { .cjkv_readbigtable }
++    (vmtx) { .cjkv_readbigtable }
++    (post) { .cjkv_readbigtable }
++  	% Tables only needed for embedding in PDF files
++    (cvt ) { .cjkv_readtable }
++    (fpgm) { .cjkv_readtable }
++    (prep) { .cjkv_readtable }
++    (GSUB) { .cjkv_readtable }
++  .dicttomark
++  % Normally there would be a 'readonly' here, but the ttf2pf utility wants
++  % to include the 'kern' table as well, so we leave the readtables dictionary
++  % writable.
++  def                % readtables
++
++  % Read a table as a single string.
++  % <file> <length> .readtable <string>
++  /.cjkv_readtable {
++    dup dup 1 and add string
++                  % Stack: f len str
++    dup 0 4 -1 roll getinterval
++                  % Stack: f str str1
++          % Because of the absurd PostScript specification that gives an
++          % error for reading into an empty string, we have to check for
++          % this explicitly here.
++    3 -1 roll exch
++    dup () ne { readstring } if pop pop
++  } bind def
++  
++  % Read a big table (one that may exceed 64K).
++  % <file> <length> .readbigtable <string[s]>
++  /.cjkv_readbigtable {
++    dup 65400 lt {
++      .cjkv_readtable
++    } {
++      currentuserparams /VMReclaim get -2 vmreclaim
++      [ 4 2 roll {
++                  % Stack: mark ... f left
++        dup maxstring le { exit } if
++        1 index maxstring string readstring pop 3 1 roll maxstring sub
++      } loop .cjkv_readtable ]
++      exch vmreclaim
++    } ifelse
++  } bind def
++end readonly def % /_cjkv_base_util
+diff -urNad ghostscript-8.62.dfsg.1~/lib/cjkv/cjkcidcm.ps ghostscript-8.62.dfsg.1/lib/cjkv/cjkcidcm.ps
+--- ghostscript-8.62.dfsg.1~/lib/cjkv/cjkcidcm.ps	1970-01-01 08:00:00.000000000 +0800
++++ ghostscript-8.62.dfsg.1/lib/cjkv/cjkcidcm.ps	2008-03-09 10:53:53.000000000 +0800
+@@ -0,0 +1,455 @@
++%!
++%
++% Developed by AXE,Inc., BBR Inc. and Turbolinux Inc.
++%   under the technical advice by suzuki toshiya (Hiroshima University)
++% For questions, please send mail to espgs8-cjk@printing-japan.org
++%
++% (C) Copyright 2006 Center of the International Cooperation for
++%     Computerization
++%
++%
++% Based on gs-cjk patches
++% Copyright (C) 2001-2003 gs-cjk project:
++%   Taiji Yamada, Masatake Yamato, Hideyuki Suzuki and suzuki toshiya.
++%   All rights reserved.
++%
++%
++% Based on GNU Ghostscript 7.07 and 8.15
++% Copyright (C) 1996-2003 artofcode LLC.  All rights reserved.
++%
++% This software is provided AS-IS with no warranty, either express or
++% implied.
++%
++%
++% 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) any later version.
++%
++% This program is distributed in the hope that it will be useful,
++% but WITHOUT ANY WARRANTY; without 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-1307 USA
++%
++
++true setglobal
++
++[
++   /CJKV_DEBUG_CIDCM
++   /NOCIDFONTMAP
++] {dup where {pop pop} { currentdict exch false def pop } ifelse} forall
++
++% -------------------------------------------------------------------------------
++% taken from gs7.05/lib/gs_cidcm.ps
++
++25 dict begin
++
++  /.prs_dict currentdict def
++  /.prs_empty 0 dict readonly def
++  /enable_cache true 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
++  /.prsFile 0 def                   % file to prescan
++  /.prsResult 0 def                 % result of prescan
++  /.prsDictCount 0 def              % save the dictionary stack depth
++
++
++  /.cjkv_StopIfCSIDefined {   % - StopIfCSIDefined -
++    CJKV_DEBUG_CIDCM { (.cjkv_StopIfCSIDefined\n) print flush } if
++  
++    % 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
++  
++  /.cjkv_PrescanFile {     % - PrescanFile -
++    CJKV_DEBUG_CIDCM { (.cjkv_PrescanFile\n) print flush } if
++    { //.prs_dict /.prsFile get token {
++        dup type                          % token type
++        dup /nametype eq exch /operatortype eq or {
++          dup xcheck {
++            exec
++            //.cjkv_StopIfCSIDefined exec
++          } if
++        } if
++      } {
++        stop
++      } ifelse
++    } loop
++  } bind odef
++  
++  /.cjkv_GetCIDSystemInfoFromFile { % <file> GetCIDSystemInfoFromFile <CSI>
++    CJKV_DEBUG_CIDCM { (.cjkv_GetCIDSystemInfoFromFile\n) print flush } if
++    //.prs_dict begin
++    /.prsFile exch def
++    /.prsResult //.prs_empty def
++    /.prsDictCount countdictstack def
++    { //.cjkv_PrescanFile } stopped pop
++    //.prs_dict /.prsResult get
++    end
++  } bind def
++
++
++  /.cjkv_GetCIDSystemInfo {     % <InstName> <CatName> GetCIDSystemInfo <CSI>
++    CJKV_DEBUG_CIDCM { (*** .cjkv_GetCIDSystemInfo: ) print 1 index =only ( in ) print dup == flush } if
++    2 copy resourcestatus {
++      CJKV_DEBUG_CIDCM { (*** .cjkv_GetCIDSystemInfo: resource status OK\n) print } if
++      pop 2 lt {
++        CJKV_DEBUG_CIDCM { (*** .cjkv_GetCIDSystemInfo: resource status < 2\n) print } if
++        findresource /CIDSystemInfo .knownget not { //.prs_empty } if
++      } {
++        CJKV_DEBUG_CIDCM { (*** .cjkv_GetCIDSystemInfo: resource status >= 2\n) print } if
++        dup //.prs_dict exch get dup 3 index known //enable_cache and {
++          CJKV_DEBUG_CIDCM { (*** .cjkv_GetCIDSystemInfo: resource cached\n) print } if
++          exch pop exch get
++        } {
++          CJKV_DEBUG_CIDCM { (*** .cjkv_GetCIDSystemInfo: resource not-cached\n) print } if
++          3 1 roll /Category findresource begin dup //path_buffer ResourceFileName
++          end currentglobal exch true setglobal mark exch {
++            CJKV_DEBUG_CIDCM { (*** .cjkv_GetCIDSystemInfo->.cjkv_GetCIDSystemInfoFromFile\n) print } if
++            (r) file //.cjkv_GetCIDSystemInfoFromFile exec
++          } stopped
++          {
++            cleartomark 1 index dup
++            CJKV_DEBUG_CIDCM { (*** .cjkv_GetCIDSystemInfo->.CIDFontmapKnownget START\n) print } if
++            /CIDFont /Category findresource /.cjkv_CIDFontmapKnownget get exec
++            CJKV_DEBUG_CIDCM { (*** .cjkv_GetCIDSystemInfo->.CIDFontmapKnownget EXECED\n) print } if
++            {
++              CJKV_DEBUG_CIDCM { (*** .cjkv_GetCIDSystemInfo [knownget OK]\n) print } if
++              true setglobal 1 index 3 1 roll
++              CJKV_DEBUG_CIDCM { (*** .cjkv_GetCIDSystemInfo->.cjkv_CIDFontmapRunHandler\n) print } if
++              /CIDFont /Category findresource /.cjkv_CIDFontmapRunHandler get exec
++              CJKV_DEBUG_CIDCM { (*** .cjkv_GetCIDSystemInfo<-.cjkv_CIDFontmapRunHandler\n) print } if
++              /CIDFont findresource /CIDSystemInfo get
++            } {
++              CJKV_DEBUG_CIDCM { (*** .cjkv_GetCIDSystemInfo [knownget FAILED]\n) print } if
++              pop //.prs_empty
++            } ifelse
++          } {
++            CJKV_DEBUG_CIDCM { (*** .cjkv_GetCIDSystemInfo [not stopped]\n) print } if
++            exch pop
++          } ifelse
++          exch setglobal dup 4 1 roll put
++        } ifelse
++      } ifelse
++    } {
++      CJKV_DEBUG_CIDCM { (*** .cjkv_GetCIDSystemInfo: resource status FAILED\n) print } if
++      pop pop //.prs_empty
++    } ifelse
++    CJKV_DEBUG_CIDCM { (*** .cjkv_GetCIDSystemInfo finished\n) print flush } if
++  } bind def
++
++  /GetCIDSystemInfo {
++    .cjkv_GetCIDSystemInfo
++  } bind def
++
++  % -------------------------------------------------------------------------------
++  /orig_font_resourcestatus /Generic /Category findresource /ResourceStatus get bind def
++  /orig_font_resourceforall /Generic /Category findresource /ResourceForAll get bind def
++  /orig_font_findresource   /Font    /Category findresource /FindResource   get bind def
++
++  /BindAux {   % <proc> BindAux <proc>
++    0 exec
++  } bind def
++  
++  /EnumerateFontNames {
++    end
++    {
++      0 1 2 {
++        en_local_dict exch /status exch put
++        Fonts {
++          en_local_dict /status get eq {
++            scr cvs
++            proc exec
++          } {
++            pop
++          } ifelse
++        } forall
++      } for
++    } stopped
++    Category begin
++    { stop } if
++  } bind def
++  
++  /Bind {
++    dup length array copy
++    dup length 1 sub -1 0 {
++      2 copy get
++      dup dup type /arraytype eq exch xcheck and {
++        //BindAux exec
++        2 index 3 1 roll put
++      } {
++        dup dup type /nametype eq exch xcheck and {
++          currentdict exch .knownget {
++            2 index 3 1 roll put
++          } {
++            pop
++          } ifelse
++        } {
++          pop pop
++        } ifelse
++      } ifelse
++    } for
++    cvx
++  } bind def
++  
++  //BindAux 0 //Bind put
++
++  CJKV_DEBUG_CIDCM { (*** Font Enumurator utility definition OK\n) print flush } if
++
++  % ---------------------------------------------------------------------------------
++
++  /.cjkv_ComposeName {
++    CJKV_DEBUG_CIDCM { (*** .cjkv_ComposeName\n) print flush } if
++    dup dup 5 2 roll 3 2 roll exch cvs length dup 4 -1 roll exch //minus put 1 add dup
++    3 index dup length 2 index sub 3 2 roll exch getinterval 3 2 roll exch cvs length
++    add 0 exch getinterval
++  } bind def
++
++  /.cjkv_IsCompatibleCSI {
++    CJKV_DEBUG_CIDCM { (*** .cjkv_IsCompatibleCSI\n) print flush } if
++    exch
++    { dup type /arraytype eq {
++        dup length 1 ne { pop pop false exit } if
++        0 get
++      } if
++      dup type /dicttype ne { pop pop false exit } if
++      exch
++      dup type /dicttype ne { pop pop false exit } if
++      true
++      [/Registry /Ordering] {
++        2 index 1 index .knownget not { 1234567 } if
++        exch
++        4 index exch .knownget not { 7654321 } if
++        eq and
++      } forall
++      exch pop exch pop
++      exit
++    } loop
++  } bind def
++
++  /.cjkv_IsComposedOK {
++    CJKV_DEBUG_CIDCM { (*** .cjkv_IsComposedOK ENTER with: ) print 1 index =only ( ) print dup == flush } if
++    exch
++    /CIDFont
++    CJKV_DEBUG_CIDCM { (*** .cjkv_IsComposedOK->.cjkv_GetCIDSystemInfo for CIDFont:) print 1 index == flush } if
++    .cjkv_GetCIDSystemInfo
++    CJKV_DEBUG_CIDCM { (*** .cjkv_IsComposedOK<-.cjkv_GetCIDSystemInfo\n) print flush } if
++    dup type /dicttype eq {
++      dup length 0 ne {
++        exch /CMap
++        CJKV_DEBUG_CIDCM { (*** .cjkv_IsComposedOK->.cjkv_GetCIDSystemInfo for CMap:) print 1 index == flush } if
++        .cjkv_GetCIDSystemInfo
++        CJKV_DEBUG_CIDCM { (*** .cjkv_IsComposedOK<-.cjkv_GetCIDSystemInfo\n) print flush } if
++        CJKV_DEBUG_CIDCM { (*** .cjkv_IsComposedOK->.cjkv_IsCompatibleCSI\n) print flush } if
++        .cjkv_IsCompatibleCSI
++        CJKV_DEBUG_CIDCM { (*** .cjkv_IsComposedOK<-.cjkv_IsCompatibleCSI\n) print flush } if
++      } {
++        pop pop false
++      } ifelse
++    } {
++      pop pop false
++    } ifelse
++    CJKV_DEBUG_CIDCM { (*** .cjkv_IsComposedOK EXIT with ) print dup == flush } if
++  } bind def
++  
++  /.cjkv_IsComposedFont {
++    CJKV_DEBUG_CIDCM { (*** .cjkv_IsComposedFont START: ) print 3 index =only ( ) print 2 index =only ( ) print 1 index =only ( ) print dup ==  flush } if
++    dup type /stringtype ne {
++      //name_buffer cvs
++    } if
++    {
++      dup length 2 sub -1 1 {
++        2 copy get dup //minus eq exch //period eq or {
++          2 copy 2 copy
++          2 copy get //minus eq {
++            2 copy 1 sub get //minus eq {
++              1 sub
++            } if
++          } if
++          0 exch getinterval cvn 3 1 roll 1 add dup 5 index length exch sub getinterval cvn
++          2 copy
++          CJKV_DEBUG_CIDCM { (*** .cjkv_IsComposedFont->.cjkv_IsComposedOK\n) print flush } if
++          .cjkv_IsComposedOK {
++            4 2 roll pop pop stop
++          } if
++          pop pop pop
++        } {
++          pop
++        } ifelse
++      } for
++      pop
++    } stopped
++    CJKV_DEBUG_CIDCM { (*** .cjkv_IsComposedFont END:\n) print pstack (--bottom--\n) print flush } if
++  } bind def
++
++  CJKV_DEBUG_CIDCM { (*** CIDFont-CMap font utility definition OK\n) print flush } if
++
++  % -------------------------------------------------------------------------------
++
++  /.cjkv_ResourceStatus {  % <InstName> ResourceStatus <nStatus> <nSize> true
++    	                   % <InstName> ResourceStatus false
++    CJKV_DEBUG_CIDCM { (*** .cjkv_ResourceStatus start\n) print pstack (  ---bottom--\n) print flush } if
++    dup
++    CJKV_DEBUG_CIDCM { (*** .cjkv_ResourceStatus->orig_font_resourcestatus [for precomposed CIDFont-CMap resource]\n) print flush } if
++    orig_font_resourcestatus {
++      CJKV_DEBUG_CIDCM { (*** .cjkv_ResourceStatus->orig_font_resourcestatus OK, exit\n) print flush } if
++      3 2 roll pop true
++    } {
++      CJKV_DEBUG_CIDCM { (*** .cjkv_ResourceStatus->orig_font_resourcestatus FAILED, check uncomposed composite font\n) print flush } if
++      CJKV_DEBUG_CIDCM { (*** .cjkv_ResourceStatus->.cjkv_IsComposedFont\n) print flush } if
++      .cjkv_IsComposedFont {
++        CJKV_DEBUG_CIDCM { (*** looks composite font, check CMap\n) print flush } if
++        /CMap CJKV_DEBUG_CIDCM { (---top---\n) print pstack (---bottom---\n) print flush } if resourcestatus {
++          CJKV_DEBUG_CIDCM { (*** CMap OK, check CIDFont\n) print flush } if
++          exch pop exch /CIDFont resourcestatus {
++            CJKV_DEBUG_CIDCM { (*** exist, finally check status/size\n) print flush } if
++            exch pop dup 0 ge {
++              CJKV_DEBUG_CIDCM { (*** check status/size OK\n) print flush } if
++              exch dup 0 ge {
++                add
++              } {
++                exch pop
++              } ifelse
++            } {
++              CJKV_DEBUG_CIDCM { (*** check status/size FAILED\n) print flush } if
++              pop
++            } ifelse
++            2 exch true
++          } {
++            CJKV_DEBUG_CIDCM { (*** inexist CIDFont\n) print flush } if
++            pop pop pop false
++          } ifelse
++        } {
++          CJKV_DEBUG_CIDCM { (*** inexist CMap\n) print flush } if
++          pop pop pop false
++        } ifelse
++      } {
++        CJKV_DEBUG_CIDCM { (*** not composite font\n) print flush } if
++        false
++      } ifelse
++    } ifelse
++    CJKV_DEBUG_CIDCM { (*** .cjkv_ResourceStatus finished\n) print pstack (  ---bottom--\n) print flush } if
++  } bind def
++
++  /ResourceStatus {
++    CJKV_DEBUG_CIDCM { (*** STUB: ResourceStatus\n) print flush } if
++    .cjkv_ResourceStatus
++  } bind def
++
++  % -------------------------------------------------------------------------------
++  
++  /.cjkv_ResourceForAll { % <template> <proc> <scratch> ResourceForAll -
++    CJKV_DEBUG_CIDCM { (*** .cjkv_ResourceForAll\n) print flush } if
++    currentglobal false setglobal
++    20 dict 20 dict 20 dict
++    4 -1 roll setglobal
++    5 index [ 2 index {exch cvn dup put} aload pop ] cvx 5 index orig_font_resourceforall
++    (*)     [ 3 index {exch cvn dup put} aload pop ] cvx 5 index /CMap resourceforall
++    (*)     [ 4 index {exch cvn dup put} aload pop ] cvx 5 index /CIDFont resourceforall
++    dup {
++      //.cjkv_ResourceStatus exec {
++        pop 2 index 3 1 roll put
++      } {
++        pop
++      } ifelse
++    } forall
++  
++    3 2 roll  {
++      3 index {
++        3 1 roll 6 index .cjkv_ComposeName dup 8 index .stringmatch {
++          cvn dup 4 index exch known {
++            pop pop
++          } {
++            2 index 4 2 roll .cjkv_IsComposedOK {
++              exch 2 index exch 2 put
++            } {
++              exch pop
++            } ifelse
++          } ifelse
++        } {
++          pop pop
++        } ifelse
++        dup
++      } forall
++      pop pop
++    } forall
++    exch pop
++  
++    currentdict
++    6 dict begin % the temporary dictionary
++      /Category exch def
++      /Fonts exch def
++      /scr exch def
++      /proc exch def
++      /en_local_dict currentdict def
++      //EnumerateFontNames //Bind exec
++      /status 0 def
++    end
++    exch pop
++  
++    exec
++    CJKV_DEBUG_CIDCM { (*** .cjkv_ResourceForAll finished\n) print flush } if
++  } bind def
++
++  /ResourceForAll {
++    CJKV_DEBUG_CIDCM { (*** STUB: ResourceStatus\n) print flush } if
++    .cjkv_ResourceForAll
++  } bind def
++
++  CJKV_DEBUG_CIDCM { (*** ResourceForAll definition OK\n) print flush } if
++
++  % -------------------------------------------------------------------------------
++
++  /.cjkv_FindResource {
++    CJKV_DEBUG_CIDCM { (*** .cjkv_FindResource\n) print flush } if
++    dup //.cjkv_ResourceStatus exec {
++      pop pop
++      CJKV_DEBUG_CIDCM { (*** .cjkv_FindResource->orig_font_findresource #1\n) print flush } if
++      orig_font_findresource
++    } {
++      dup
++        CJKV_DEBUG_CIDCM { (*** .cjkv_FindResource->.cjkv_IsComposedFont\n) print flush } if
++        //.cjkv_IsComposedFont exec {
++        exch [ exch ] composefont
++      } {
++        CJKV_DEBUG_CIDCM { (*** .cjkv_FindResource->orig_font_findresource #2\n) print flush } if
++        orig_font_findresource
++      } ifelse
++    } ifelse
++    CJKV_DEBUG_CIDCM { (*** .cjkv_FindResource finished\n) print flush } if
++  } bind def
++ 
++  /FindResource {
++    CJKV_DEBUG_CIDCM { (*** STUB: FindResource\n) print flush } if
++    .cjkv_FindResource
++  } bind def
++
++  % -------------------------------------------------------------------------------
++
++currentdict end
++% /Generic /Category findresource dup length 25 add dict .copydict copy
++/Font /Category findresource dup length 25 add dict .copydict copy
++/Font exch /Category
++defineresource pop
++false setglobal
+diff -urNad ghostscript-8.62.dfsg.1~/lib/cjkv/cjkfnmap.ps ghostscript-8.62.dfsg.1/lib/cjkv/cjkfnmap.ps
+--- ghostscript-8.62.dfsg.1~/lib/cjkv/cjkfnmap.ps	1970-01-01 08:00:00.000000000 +0800
++++ ghostscript-8.62.dfsg.1/lib/cjkv/cjkfnmap.ps	2008-03-09 10:53:53.000000000 +0800
+@@ -0,0 +1,389 @@
++%!
++%
++% Developed by AXE,Inc., BBR Inc. and Turbolinux Inc.
++%   under the technical advice by suzuki toshiya (Hiroshima University)
++% For questions, please send mail to espgs8-cjk@printing-japan.org
++%
++% (C) Copyright 2006 Center of the International Cooperation for
++%     Computerization
++%
++%
++% Based on gs-cjk patches
++% Copyright (C) 2001-2003 gs-cjk project:
++%   Masatake Yamato, suzuki toshiya, Hideyuki Suzuki and Taiji Yamada.
++%   All rights reserved.
++%
++%
++% Based on GNU Ghostscript 7.07 and 8.15
++% Copyright (C) 1996-2003 artofcode LLC.  All rights reserved.
++%
++% This software is provided AS-IS with no warranty, either express or
++% implied.
++%
++%
++% 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) any later version.
++%
++% This program is distributed in the hope that it will be useful,
++% but WITHOUT ANY WARRANTY; without 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-1307 USA
++%
++
++
++true setglobal
++
++[
++   /CJKV_DEBUG_FNMAP
++   /NOCIDFONTMAP
++] {dup where {pop pop} { currentdict exch false def pop } ifelse} forall
++
++
++50 dict begin
++
++/.cjkv_filenamedirseparator (/) def
++/_cjkv_defaultcidfontmap (CIDFnmap) def
++
++% -------------------------------------------------------------------------------
++% taken from gs7.05/lib/gs_cidfn.ps
++
++% Define the name of the CID font map file.
++userdict /_cjkv_CIDFontmap 10 dict put
++
++% <dict> <file> .readCIDFontmap <dict>
++% Code from gs_fonts.ps::.readFontmap
++  /.cjkv_readCIDFontmap {
++    CJKV_DEBUG_FNMAP { (.cjkv_readCIDFontmap\n) print flush } if
++    { dup token not { closefile exit } if
++      dup (\032) eq { pop closefile exit } if
++      1 index token not
++       { (CIDFontmap entry for ) print dup =only
++         ( has no associated file or alias name!  Giving up.) = flush
++         {.cjkv_readCIDFontmap} 0 get 1 .quit
++       } if
++      dup type dup /stringtype eq exch /nametype eq or not
++       { (CIDFontmap entry for ) print 1 index =only
++         ( has an invalid file or alias name!  Giving up.) = flush
++         {.cjkv_readCIDFontmap} 0 get 1 .quit
++       } if
++                % stack: dict file cidfontname filename|aliasname
++      1 index type /stringtype eq
++      1 index type /nametype eq and 1 index xcheck and
++      1 index /run eq 2 index /.runlibfile eq or and {
++                % This is an inclusion entry.
++        pop findlibfile { exch pop } { file } ifelse
++        2 index exch .cjkv_readCIDFontmap pop
++      } {
++        exch dup type /stringtype eq {cvn} if exch
++       { 2 index token not
++          { (CIDFontmap entry for ) print 1 index =only
++            ( ends prematurely!  Giving up.) = flush
++            {.cjkv_readCIDFontmap} 0 get 1 .quit
++          } if
++         dup /; eq { pop 3 index 3 1 roll .growput exit } if
++         1 index type /nametype eq {
++           (CIDFontmap entry for ) print 2 index =only
++           (defines an alias! Giving up.) = flush
++           {.cjkv_readCIDFontmap} 0 get 1 .quit
++         } if
++         exch [ exch 3 -1 roll
++         dup type /integertype eq {
++           4 index token not
++           { (CIDFontmap entry for ) print 3 index =only
++             ( ends prematurely!  Giving up.) = flush
++             {.cjkv_readCIDFontmap} 0 get 1 .quit
++           } if
++         } if
++         dup /; eq not 1 index type /nametype eq and {
++           counttomark 2 eq {4} {5} ifelse index token not
++           { (CIDFontmap entry for ) print
++             counttomark 2 eq {3} {4} ifelse index =only
++             ( ends prematurely!  Giving up.) = flush
++             {.cjkv_readCIDFontmap} 0 get 1 .quit
++           } if
++         } if
++         dup /; eq {
++             pop ]
++             3 index 3 1 roll .growput exit
++         } if
++         pop
++       } loop
++      } ifelse
++    } loop
++  } bind def
++
++% <file> .cjkv_loadCIDFontmap -
++  /.cjkv_loadCIDFontmap {
++    CJKV_DEBUG_FNMAP { (.cjkv_loadCIDFontmap\n) print flush } if
++    userdict /_cjkv_CIDFontmap get exch
++    .cjkv_readCIDFontmap pop
++  } bind def
++
++% Code from .loadinitialfonts
++  /.cjkv_loadinitialcidfonts {
++    CJKV_DEBUG_FNMAP { (.cjkv_loadinitialcidfonts\n) print flush } if
++    NOCIDFONTMAP not {
++      /CIDFONTMAP where {
++        pop [ CIDFONTMAP .pathlist ] {
++          dup VMDEBUG findlibfile {
++            exch pop .cjkv_loadCIDFontmap
++          } {
++            /undefinedfilename signalerror
++          } ifelse
++        } forall
++      } {
++        LIBPATH {
++          _cjkv_defaultcidfontmap 2 copy .cjkv_filenamedirseparator
++          exch concatstrings concatstrings
++          3 1 roll pop pop dup
++          CJKV_DEBUG_FNMAP { (lookup CIDFnmap: ) print flush dup =only } if
++          VMDEBUG (r) { file } .internalstopped {
++            CJKV_DEBUG_FNMAP { ( ... not found\n) print flush } if
++            pop pop
++          } {
++            CJKV_DEBUG_FNMAP { ( ... found\n) print flush } if
++            .cjkv_loadCIDFontmap
++          } ifelse
++        } forall
++      } ifelse
++    } if
++ } bind def
++
++ .cjkv_loadinitialcidfonts
++
++  /_cjkv_CIDFontmapHandler <<
++    /nametype {
++      CJKV_DEBUG_FNMAP { (*** exec _cjkv_CIDFontmapHandler for nametype: ) print dup == flush } if
++      /CIDFont findresource
++      /CIDFont defineresource pop
++    } bind
++    /stringtype {
++      CJKV_DEBUG_FNMAP { (*** exec _cjkv_CIDFontmapHandler for stringtype: \() print dup =only (\)\n) print flush } if
++      findlibfile {
++        CJKV_DEBUG_FNMAP { (*** exec _cjkv_CIDFontmapHandler found file\n) print } if
++        exch pop
++        % Define CIDFont with a name defined in the font file
++        CJKV_DEBUG_FNMAP { (***      _cjkv_CIDFontmapHandler->.cjkv_loadcidfontwithoutpop\n) print } if
++
++
++          CJKV_DEBUG_FNMAP { (.cjkv_loadcidfontwithoutpop start\n) print flush } if
++          dup 4 string .peekstring pop dup (ttcf) eq exch (\000\001\000\000) eq or {
++            .loadcjkvttcidfont
++          } {
++            /CIDFont /Category findresource /.Instances get
++            dup length 2 div cvi dict .copydict exch
++            .loadfont
++            /CIDFont /Category findresource /.Instances get {
++              2 index 2 index known {
++                pop pop
++              } {
++                pop exch pop /CIDFont findresource exit
++              } ifelse
++            } forall
++            dup /CIDFontName known not {
++              {Internal Error in .cjkv_loadcidfontwithoutpop} stop
++            } if
++          } ifelse
++          CJKV_DEBUG_FNMAP { (.cjkv_loadcidfontwithoutpop finished\n) print flush } if
++
++
++        CJKV_DEBUG_FNMAP { (***      _cjkv_CIDFontmapHandler<-.cjkv_loadcidfontwithoutpop\n) print } if
++        % Define CIDFont with a name define in CIDFontmap
++        dup length 0 ne {
++            dup /CIDFontName get 2 index eq {
++                CJKV_DEBUG_FNMAP { (*** define CIDFont resource with self name\n) print } if
++                % Avoid duplicated defineresource for the same CIDFont
++                pop pop
++            } {
++                CJKV_DEBUG_FNMAP { (*** rename CIDFont resource\n) print flush } if
++                % Give a name different from the name defined in the file
++                /CIDFont
++                CJKV_DEBUG_FNMAP { (*** exec defineresource: ) print 2 index == ( ) print 1 index == ( ) print 0 index == (\n) print flush } if
++                defineresource pop
++                CJKV_DEBUG_FNMAP { (*** exec defineresource ok\n) print flush } if
++            } ifelse
++        } {
++            CJKV_DEBUG_FNMAP { (*** 0-sized CIDFont dict\n) print } if
++            pop pop
++        } ifelse
++      } {
++        CJKV_DEBUG_FNMAP { (*** exec _cjkv_CIDFontmapHandler cannot find file\n) print } if
++        /undefinedresource signalerror
++      } ifelse
++      CJKV_DEBUG_FNMAP { (*** _cjkv_CIDFontmapHandler END\n) print } if
++    } bind
++    /arraytype {
++    % Replace filename in the array with file
++        dup 0 get
++        findlibfile {
++            3 1 roll pop
++            copyarray dup 3 1 roll 0
++            3 -1 roll put
++            % Expand array
++            aload pop .loadcjkvttcidfont
++            /CIDFont defineresource pop
++        } {
++            /undefinedresource signalerror
++        } ifelse
++    } bind
++  >> def
++
++
++  /.cjkv_CIDFontmapKnown {
++    CJKV_DEBUG_FNMAP { (*** .cjkv_CIDFontmapKnown: ) print flush dup == } if
++    userdict /_cjkv_CIDFontmap get
++    CJKV_DEBUG_FNMAP { dup { exch (    key: ) print == (        val: ) print == flush } forall } if
++    exch known
++  } bind def
++
++  /.cjkv_CIDFontmapKnownget {
++    CJKV_DEBUG_FNMAP { (*** .cjkv_CIDFontmapKnownget: ) print flush dup == } if
++    userdict /_cjkv_CIDFontmap get exch .knownget
++  } bind def
++
++  /.cjkv_CIDFontmapKnowngetBase {
++    CJKV_DEBUG_FNMAP { (*** .cjkv_CIDFontmapKnowngetBase: ) print flush dup == } if
++    userdict /_cjkv_CIDFontmap get exch { % dict key
++      1 index 1 index known {
++        CJKV_DEBUG_FNMAP { (*** .cjkv_CIDFontmapKnowngetBase: temp: ) print 1 index == flush } if
++        1 index exch get
++      } {
++        CJKV_DEBUG_FNMAP { (*** .cjkv_CIDFontmapKnowngetBase: base: ) print 1 index == flush } if
++        exit
++      } ifelse
++    } loop
++    exch pop
++    CJKV_DEBUG_FNMAP { (*** .cjkv_CIDFontmapKnowngetBase: exit with ) print dup == flush } if
++  } bind def
++
++  /.cjkv_CIDFontmapRunHandler {
++    CJKV_DEBUG_FNMAP { (*** .cjkv_CIDFontmapRunHandler START\n) print flush } if
++    dup
++    /CIDFont /Category findresource /_cjkv_CIDFontmapHandler get
++    exch type get
++    CJKV_DEBUG_FNMAP { (*** .cjkv_CIDFontmapRunHandler EXEC: _cjkv_CIDFontmapHandler:) print dup == flush } if
++    .execasresource
++    CJKV_DEBUG_FNMAP { (*** .cjkv_CIDFontmapRunHandler END\n) print flush } if
++  } bind def
++
++  /.cjkv_CIDFontmapForAll {
++    CJKV_DEBUG_FNMAP { (*** .cjkv_CIDFontmapForAll\n) print flush } if
++    _cjkv_CIDFontmap exch forall
++  } bind def
++
++  /.cjkv_CIDFontmapForAllKey {
++    CJKV_DEBUG_FNMAP { (*** .cjkv_CIDFontmapForAllKey\n) print flush } if
++    [ /pop cvx 3 -1 roll /exec cvx ] cvx ._cjkv_CIDFontmapForAll
++  } bind def
++currentdict
++end
++
++
++%
++% CIDFont resource handler must be modified
++%
++languagelevel exch 2 .setlanguagelevel
++
++/CIDFont /Category findresource dup length dict .copydict
++copy
++  /.originalresourceforall 1 index /ResourceForAll get def
++
++  dup /ResourceForAll {
++    currentglobal false setglobal
++    [
++      4 index {cvn} 4 index .originalresourceforall {
++        dup length string cvs dup counttomark 4 add index
++        .stringmatch {
++          cvn counttomark -1 1 {
++            index 1 index eq {
++              pop exit % Duplicated
++            } if
++          } for
++        } {
++          pop
++        } ifelse
++      } .cjkv_CIDFontmapForAllKey
++    ]
++    exch setglobal
++    4 -1 roll pop 3 1 roll [
++      exch {cvs} aload pop 4 -1 roll aload pop
++    ] cvx
++    forall
++  } put
++
++  /.cjkv_loadcidfontresource {
++    CJKV_DEBUG_FNMAP { (.cjkv_loadcidfontresource\n) print flush } if
++    dup .ResourceFile {
++      {
++          CJKV_DEBUG_FNMAP { (.cjkv_loadcidfontwithoutpop start\n) print flush } if
++          dup 4 string .peekstring pop dup (ttcf) eq exch (\000\001\000\000) eq or {
++            .loadcjkvttcidfont
++          } {
++            /CIDFont /Category findresource /.Instances get
++            dup length 2 div cvi dict .copydict exch
++            .loadfont
++            /CIDFont /Category findresource /.Instances get {
++              2 index 2 index known {
++                pop pop
++              } {
++                pop exch pop /CIDFont findresource exit
++              } ifelse
++            } forall
++            dup /CIDFontName known not {
++              {Internal Error in .cjkv_loadcidfontwithoutpop} stop
++            } if
++          } ifelse
++          CJKV_DEBUG_FNMAP { (.cjkv_loadcidfontwithoutpop finished\n) print flush } if
++          pop
++
++      } .execasresource
++    } {
++      pop dup .cjkv_CIDFontmapKnownget {
++        .cjkv_CIDFontmapRunHandler
++      } {
++        dup /undefinedresource signalerror
++      } ifelse
++    } ifelse
++  } bind def
++
++  dup /.LoadResource {
++    CJKV_DEBUG_FNMAP { (.LoadResource\n) print flush } if
++    currentglobal {
++      .cjkv_loadcidfontresource
++    } {
++      true setglobal {.cjkv_loadcidfontresource} stopped false setglobal {stop} if
++    } ifelse
++  } bind put
++
++  dup /.ResourceFileStatus {
++    CJKV_DEBUG_FNMAP { (*** cjkv_modified .ResourceFileStatus for CIDFont\n) print flush } if
++    dup .cjkv_CIDFontmapKnown {
++      CJKV_DEBUG_FNMAP { (    ResourceFileStatus returns TRUE\n) print flush } if
++      pop 2 -1 true
++    } {
++      .ResourceFile {
++        CJKV_DEBUG_FNMAP { (    ResourceFileStatus returns TRUE\n) print flush } if
++        closefile 2 -1 true
++      } {
++        CJKV_DEBUG_FNMAP { (    ResourceFileStatus returns FALSE\n) print flush } if
++        pop false
++      } ifelse
++    } ifelse
++  } bind put
++
++  dup /.CIDFontmapKnown        { .cjkv_CIDFontmapKnown        } bind put
++  dup /.CIDFontmapKnownget     { .cjkv_CIDFontmapKnownget     } bind put
++  dup /.CIDFontmapKnowngetBase { .cjkv_CIDFontmapKnowngetBase } bind put
++  dup /.CIDFontmapRunHandler   { .cjkv_CIDFontmapRunHandler   } bind put
++  dup /.CIDFontmapForAll       { .cjkv_CIDFontmapForAll       } bind put
++  dup /.CIDFontmapForAllKey    { .cjkv_CIDFontmapForAllKey    } bind put
++
++/CIDFont exch /Category defineresource pop
++
++.setlanguagelevel
+diff -urNad ghostscript-8.62.dfsg.1~/lib/cjkv/cjkvinit.ps ghostscript-8.62.dfsg.1/lib/cjkv/cjkvinit.ps
+--- ghostscript-8.62.dfsg.1~/lib/cjkv/cjkvinit.ps	1970-01-01 08:00:00.000000000 +0800
++++ ghostscript-8.62.dfsg.1/lib/cjkv/cjkvinit.ps	2008-03-09 10:53:53.000000000 +0800
+@@ -0,0 +1,46 @@
++%!
++%
++% Developed by AXE,Inc., BBR Inc. and Turbolinux Inc.
++%   under the technical advice by suzuki toshiya (Hiroshima University)
++% For questions, please send mail to espgs8-cjk@printing-japan.org
++%
++% (C) Copyright 2006 Center of the International Cooperation for
++%     Computerization 
++%
++% 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) any later version.
++%
++% This program is distributed in the hope that it will be useful,
++% but WITHOUT ANY WARRANTY; without 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-1307 USA
++%
++
++/CJKV_DEBUG dup where {
++  pop pop
++  currentdict
++  [
++    /CJKV_DEBUG_BASE
++    /CJKV_DEBUG_CIDCM
++    /CJKV_DEBUG_FNMAP
++    /CJKV_DEBUG_TTCF
++    /CJKV_DEBUG_TT11
++    /CJKV_DEBUG_TT42
++    /CJKV_DEBUG_GSUB
++%   /CJKV_DEBUG_OS2	% fragile
++  ] { true def } forall
++} if
++pop
++
++(cjkv/baseutil.ps) runlibfile
++(cjkv/tt42util.ps) runlibfile
++(cjkv/tt11util.ps) runlibfile
++(cjkv/cjkvttcf.ps) runlibfile
++(cjkv/cjkfnmap.ps) runlibfile
++(cjkv/cjkcidcm.ps) runlibfile
+diff -urNad ghostscript-8.62.dfsg.1~/lib/cjkv/cjkvttcf.ps ghostscript-8.62.dfsg.1/lib/cjkv/cjkvttcf.ps
+--- ghostscript-8.62.dfsg.1~/lib/cjkv/cjkvttcf.ps	1970-01-01 08:00:00.000000000 +0800
++++ ghostscript-8.62.dfsg.1/lib/cjkv/cjkvttcf.ps	2008-03-09 10:53:53.000000000 +0800
+@@ -0,0 +1,154 @@
++%!
++%
++% Developed by AXE,Inc., BBR Inc. and Turbolinux Inc.
++%   under the technical advice by suzuki toshiya (Hiroshima University)
++% For questions, please send mail to espgs8-cjk@printing-japan.org
++%
++% (C) Copyright 2006 Center of the International Cooperation for
++%     Computerization
++%
++%
++% Based on gs-cjk patches
++% Copyright (C) 2001-2003 gs-cjk project:
++%   Taiji Yamada, Hideyuki Suzuki, Masatake Yamato and suzuki toshiya.
++%   All rights reserved.
++%
++%
++% Based on GNU Ghostscript 7.07 and 8.15
++% Copyright (C) 1996-2003 artofcode LLC.  All rights reserved.
++%
++% This software is provided AS-IS with no warranty, either express or
++% implied.
++%
++%
++% 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) any later version.
++%
++% This program is distributed in the hope that it will be useful,
++% but WITHOUT ANY WARRANTY; without 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-1307 USA
++%
++
++
++[
++   /CJKV_DEBUG_TTCF
++] {dup where {pop pop} { currentdict exch false def pop } ifelse} forall
++
++% /Charset /TTEncoding .cjkv_buildcmaptab cmap
++/.cjkv_buildcmaptab {
++  _cjkv_type11_util /.cjkv_buildcmapdict get 3 2 roll get begin
++  cvx exec exch CIDCounts end exch get array
++  dup length 1 sub 0 1 3 -1 roll { 1 index exch cmapglyphs 0 get put } for
++  exch exec
++} bind def
++
++% -mark- <key> <value> ... .cjkv_definettcidfont <font>
++%   rapid version of .definecjkvttcidfont
++% Proposed by Hideyuki Suzuki <hideyuki@sat.t.u-tokyo.ac.jp>
++% Modified by Taiji Yamada <taiji@aihara.co.jp>
++/.cjkv_definettcidfont {
++  CJKV_DEBUG_TTCF { (--- start cjkv_definettcidfontk\n) print flush } if
++  true setglobal
++  CJKV_DEBUG_TTCF { (--- making scratch dict...\n) print flush } if
++  15 _cjkv_base_util /.cjkv_newdicttomark get exec
++  CJKV_DEBUG_TTCF { (---                       ok\n) print flush } if
++  dup /CIDFontName fontname dup length string copy put
++  CJKV_DEBUG_TTCF { (--- CIDFontName put ok\n) print flush } if
++  dup /CIDFontType 2 put
++  CJKV_DEBUG_TTCF { (--- CIDFontType put ok\n) print flush } if
++  dup /CIDSystemInfo
++    mark
++    _cjkv_type11_tmp /.cjkv_ttencmapproc get exec
++    {
++      _cjkv_type11_util /.cjkv_buildcmapdict get 3 2 roll get begin
++      cvx exec pop
++      /Supplement exch
++      /Registry Registry
++      /Ordering Ordering
++      end
++    } {
++      /Registry (Adobe)
++      /Ordering (Identity)	% pursuant to makeIdentityCMap in pdf_font.ps
++      /Supplement 0
++    } ifelse
++    0 _cjkv_base_util /.cjkv_newdicttomark get exec put
++  CJKV_DEBUG_TTCF { (--- CIDSystemInfo define ok\n) print flush } if
++  dup /CharStrings mark /.notdef 0 .dicttomark put
++  CJKV_DEBUG_TTCF { (--- CharStrings define ok\n) print flush } if
++  _cjkv_type11_tmp /.cjkv_ttencmapproc get exec {
++    /cmapglyphs _cjkv_ttcmap_tmp /cmaptab get _cjkv_cmaparray def
++    exec .cjkv_buildcmaptab
++    dup length /CIDCount exch
++    3 -1 roll _cjkv_type11_util /.cjkv_makecidmap get exec	% it has not supported a dictionary yet
++    /CIDMap exch		% it should be a string or an array of strings
++    4 index 3 1 roll put
++    2 index 3 1 roll put
++  } {
++    dup /CIDCount numloca put
++    dup /CIDMap 0 put	% an integer interpreted as an offset from GI (see #5012 p.16)
++  } ifelse
++  dup /GDBytes 2 put
++  CJKV_DEBUG_TTCF { (--- GDBytes define ok\n) print flush pstack } if
++  dup /Encoding [ 256 { /.notdef } repeat ] put
++  CJKV_DEBUG_TTCF { (--- Encoding define ok\n) print flush } if
++  end end dup /CIDFontName get exch /CIDFont defineresource
++  CJKV_DEBUG_TTCF { (--- defineresource ok\n) print flush pstack } if
++} bind def
++
++% Load a TrueType font from a file as a CIDFontType 2 font.
++%   rapid version of .loadcjkvttcidfont
++% Proposed by Hideyuki Suzuki <hideyuki@sat.t.u-tokyo.ac.jp>
++% Modified by Taiji Yamada <taiji@aihara.co.jp>
++%
++% <file>             .cjkv_loadttcidfont <cidtype2font>
++% <file> <fontindex> .cjkv_loadttcidfont <cidtype2font>
++%   detect a kind of CID and encode a TrueType font to a CID-Keyed font.
++%
++% <file>             <ttcidcode> .cjkv_loadttcidfont <cidtype2font>
++% <file> <fontindex> <ttcidcode> .cjkv_loadttcidfont <cidtype2font>
++%   load a TrueType font and encode it with the kind of CID described
++%   in <ttcidcode> which is one of entry in .cjkv_ttencmap.
++/.loadcjkvttcidfont {
++  CJKV_DEBUG_TTCF { (*** START: .loadcjkvttcidfont: dictstack=) print countdictstack == flush } if
++  dup type /nametype ne { /Auto } if
++  1 index type /integertype eq { 3 1 roll } { exch } ifelse
++  CJKV_DEBUG_TTCF { (*** setup finished dictstack=) print countdictstack == flush } if
++  _cjkv_type42_util /.cjkv_loadttfonttables get exec
++  CJKV_DEBUG_TTCF { (*** loadttfonttables finished dictstack=) print countdictstack == flush } if
++  _cjkv_type42_util /.cjkv_makesfnts get exec
++  CJKV_DEBUG_TTCF { (*** makesfnts finished dictstack=) print countdictstack == flush } if
++  _cjkv_type42_util /.cjkv_pickcmap get exec
++  CJKV_DEBUG_TTCF { (*** pickcmap finished dictstack=) print countdictstack == flush } if
++  _cjkv_type11_util /.cjkv_getgsub get exec
++  CJKV_DEBUG_TTCF { (*** getgsub finished dictstack=) print countdictstack == flush } if
++  _cjkv_type11_util /.cjkv_getos2 get exec
++  CJKV_DEBUG_TTCF { (*** getos2 finished dictstack=) print countdictstack == flush } if
++  _cjkv_type11_util /.cjkv_ttencmap get
++  exch get _cjkv_type11_tmp exch /.cjkv_ttencmapproc exch put
++  CJKV_DEBUG_TTCF { (*** ttencmap finished dictstack=) print countdictstack == flush } if
++  mark
++  _cjkv_type42_util /.cjkv_ttkeys get exec
++  CJKV_DEBUG_TTCF { (*** ttkeys finished dictstack=) print countdictstack == flush } if
++  .cjkv_definettcidfont
++  CJKV_DEBUG_TTCF { (*** END: definettcidfont finished dictstack=) print countdictstack == flush } if
++} bind def
++
++% Open and load a TrueType font from a file as a CIDFontType 2 font.
++% <filename>             .openttcidfont <cidtype2font>
++% <filename> <fontindex> .openttcidfont <cidtype2font>
++% <filename>             <ttcidcode> .openttcidfont <cidtype2font>
++% <filename> <fontindex> <ttcidcode> .openttcidfont <cidtype2font>
++/.openttcidfont {
++  1 dup index type /nametype eq { 1 add } if
++  dup index type /integertype eq { 1 add } if
++  dup 1 add -1 roll (r) file exch 1 roll
++  .loadcjkvttcidfont	% rapid version, since 20010316
++  CJKV_DEBUG_TTCF { (*** .openttcidfont ok\n) print flush } if
++} bind def
+diff -urNad ghostscript-8.62.dfsg.1~/lib/cjkv/tt11util.ps ghostscript-8.62.dfsg.1/lib/cjkv/tt11util.ps
+--- ghostscript-8.62.dfsg.1~/lib/cjkv/tt11util.ps	1970-01-01 08:00:00.000000000 +0800
++++ ghostscript-8.62.dfsg.1/lib/cjkv/tt11util.ps	2008-03-09 10:53:53.000000000 +0800
+@@ -0,0 +1,710 @@
++%!
++%
++% Developed by AXE,Inc., BBR Inc. and Turbolinux Inc.
++%   under the technical advice by suzuki toshiya (Hiroshima University)
++% For questions, please send mail to espgs8-cjk@printing-japan.org
++%
++% (C) Copyright 2006 Center of the International Cooperation for
++%     Computerization
++%
++%
++% Based on gs-cjk patches
++% Copyright (C) 2001-2003 gs-cjk project:
++%   Taiji Yamada, Hideyuki Suzuki, Masatake Yamato and suzuki toshiya.
++%   Enhancements by Akira Tagoh and Taiji Yamada, 2005.
++%   All rights reserved.
++%
++%
++% Based on GNU Ghostscript 7.07 and 8.15
++% Copyright (C) 1996-2003 artofcode LLC.  All rights reserved.
++%
++% This software is provided AS-IS with no warranty, either express or
++% implied.
++%
++%
++% 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) any later version.
++%
++% This program is distributed in the hope that it will be useful,
++% but WITHOUT ANY WARRANTY; without 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-1307 USA
++%
++
++
++[
++   /CJKV_DEBUG_TT11
++   /CJKV_DEBUG_OS2
++   /CJKV_DEBUG_GSUB
++] {dup where {pop pop} { currentdict exch false def pop } ifelse} forall
++
++% ---------------- CIDFontType 2 font loading ---------------- %
++
++/_cjkv_type11_tmp 15 dict def
++
++/_cjkv_type11_util 30 dict dup begin
++  
++  % Create a string with array of CIDs
++  % [ <cid1> ... <cidN> ] .cjkv_makecidmapstring <string>
++  /.cjkv_makecidmapstring {
++    CJKV_DEBUG_TT11 { (.cjkv_makecidmapstring\n) print flush } if
++    mark exch cvx exec counttomark                % mark 1..N len
++    dup 2 mul string                              % mark 1..N len s
++    dup 3 -1 roll 1 sub 2 mul -2 0 {              % mark 1..N s s
++      2 copy 5 index -8 bitshift put              % mark 1..N s s j2
++      1 add 4 -1 roll 16#ff and put dup           % mark 1..N-1 s s
++    } for pop                                     % mark s
++    exch pop                                      % s
++  } bind def
++  
++  % Create a string or an array of strings with array of CIDs
++  % [ <cid1> ... <cidN> ] .makecidmap <string>|[<string> ...]
++  %   written by Taiji Yamada <taiji@aihara.co.jp>
++  /.cjkv_makecidmap {
++    CJKV_DEBUG_TT11 { (.cjkv_makecidmap\n) print flush } if
++    dup length maxstring le {
++      _cjkv_type11_util /.cjkv_makecidmapstring get exec
++    } {
++      dup length dup maxstring idiv exch
++      maxstring mod 0 ne { 1 add } if array exch
++      0 1 3 index length 1 sub {
++        dup maxstring mul 1 index 1 add maxstring mul
++        3 index length .min 1 index sub
++        3 index 3 1 roll getinterval
++        _cjkv_type11_util /.cjkv_makecidmapstring get exec
++        3 index 3 1 roll put
++      } for pop
++    } ifelse
++  } bind def
++  
++  % <file> .cjkv_loadttcidfont <cidtype2font>
++  /.cjkv_loadttcidfont {
++    CJKV_DEBUG_TT11 { (+++ .cjkv_loadttcidfont\n) print flush } if
++    _cjkv_type42_util /.cjkv_loadttfonttables get exec
++    .cjkv_makesfnts
++          % CIDFontType2 fonts don't have a cmap: they are indexed by CID.
++    /.cjkv_ttencmapproc false def
++    mark
++    CJKV_DEBUG_TT11 { (+++ mark ok\n) print flush } if
++    .cjkv_ttkeys
++    CJKV_DEBUG_TT11 { (+++ .cjkv_ttkeys finished\n) print flush } if
++    .cjkv_definettcidfont
++    CJKV_DEBUG_TT11 { (+++ .cjkv_definettcidfont finished\n) print flush } if
++  } bind def
++  
++  % - .getgsub -
++  % Defines gsubh, gsubv, gsubh2v and also defines gsubver, gsubfmt
++  %   in the case that GSUB table has 'Single Substitution Format 2'
++  %   which is formally used for vertically oriented glyphs such as CJK fonts.
++  % Written by Hideyuki Suzuki <hideyuki@sat.t.u-tokyo.ac.jp>
++  % Modified by Taiji Yamada <taiji@aihara.co.jp>
++  %
++  % [GSUB - The Glyph Substitution Table]
++  % Index        Size        Type        Name of Entry
++  % -----------------------------------
++  % 0        4        Fixed        Version
++  % 4        2        Offset        ScriptList
++  % 6        2        Offset        FeatureList
++  % 8        2        Offset        LookupList
++  %
++  % [Single Substitution Format 2, Subtable at LookupList]
++  % Index        Size        Type        Name of Entry
++  % -----------------------------------
++  % 0        2        uint16        SubstFormat
++  % 4        2        Offset        Coverage(--)
++  % 6        2        uint16        GlyphCount
++  % 8        2        GlyphID        Substitute(vertically oriented glyphs)
++  % --        2        uint16        SubstFormat
++  % +2        2        uint16        GlyphCount(same as above GlyphCount)
++  % +4        2        GlyphID        GlyphArray(horizontally oriented glyphs)
++  % -----------------------------------
++  % References
++  % 1. http://www.microsoft.com/typography/OTSPEC/gsub.htm
++  %
++  /.cjkv_getgsub {
++    CJKV_DEBUG_TT11 { (***   getgsub start\n) print } if
++    _cjkv_type11_tmp /gsubhog null put
++    _cjkv_type11_tmp /gsubvog null put
++    _cjkv_type11_tmp /gsubh2v null put
++    tabdict /GSUB .knownget { % if
++      CJKV_DEBUG_TT11 { (***      GSUB is known\n) print } if
++      dup /gsubver exch 0 .cjkv_getu32 _cjkv_type11_tmp 3 1 roll put
++      % dup /gsubosl exch 4 .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++      % dup /gsubofl exch 6 .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++      dup /gsuboll exch 8 .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++      CJKV_DEBUG_GSUB {
++        (gsubver: ) print _cjkv_type11_tmp /gsubver get =
++        % (gsubosl: ) print _cjkv_type11_tmp /gsubosl get =
++        % (gsubofl: ) print _cjkv_type11_tmp /gsubofl get =
++        (gsuboll: ) print _cjkv_type11_tmp /gsuboll get =
++      } if
++      % dup /gsubfmt exch _cjkv_type11_tmp /gsuboll get 0 add .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++      dup /gsublc exch _cjkv_type11_tmp /gsuboll get 0 add .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++      CJKV_DEBUG_GSUB {
++        (gsublc: ) print _cjkv_type11_tmp /gsublc get =
++        % (gsubfmt: ) print _cjkv_type11_tmp /gsubfmt get =
++      } if
++      _cjkv_type11_tmp /gsublc get 0 ne {
++        0 1 _cjkv_type11_tmp /gsublc get 1 sub {
++          2 mul /gsubolt exch 2 index exch _cjkv_type11_tmp /gsuboll get 2 add add .cjkv_getu16 _cjkv_type11_tmp /gsuboll get add _cjkv_type11_tmp 3 1 roll put
++          dup /gsubltype exch _cjkv_type11_tmp /gsubolt get 0 add .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++          dup /gsublflag exch _cjkv_type11_tmp /gsubolt get 2 add .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++          dup /gsubsubc exch _cjkv_type11_tmp /gsubolt get 4 add .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++          CJKV_DEBUG_GSUB {
++            (gsubolt: ) print _cjkv_type11_tmp /gsubolt get =
++            (gsubltype: ) print _cjkv_type11_tmp /gsubltype get =
++            (gsublflag: ) print _cjkv_type11_tmp /gsublflag get =
++            (gsubsubc: ) print _cjkv_type11_tmp /gsubsubc get =
++          } if
++          _cjkv_type11_tmp /gsubsubc get 0 ne {
++            0 1 _cjkv_type11_tmp /gsubsubc get 1 sub {
++              2 mul /gsubost exch 2 index exch _cjkv_type11_tmp /gsubolt get 6 add add .cjkv_getu16 _cjkv_type11_tmp /gsubolt get add _cjkv_type11_tmp 3 1 roll put
++              dup /substfmt exch _cjkv_type11_tmp /gsubost get 0 add .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++              CJKV_DEBUG_GSUB {
++                (gsubost: ) print _cjkv_type11_tmp /gsubost get =
++                (substfmt: ) print _cjkv_type11_tmp /substfmt get =
++              } if
++  %           _cjkv_type11_tmp /gsubver get 16#00010000 eq { % ifelse
++              _cjkv_type11_tmp /gsubltype get 1 eq _cjkv_type11_tmp /substfmt get 2 eq and { % ifelse
++                dup /gsubocv exch _cjkv_type11_tmp /gsubost get 2 add .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++                dup /gsubglc exch _cjkv_type11_tmp /gsubost get 4 add .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++                % hacked by suzuki toshiya at 2001/3/6
++                %dup /gsubvog exch _cjkv_type11_tmp /gsubost get 6 add _cjkv_type11_tmp /gsubglc get getinterval _cjkv_type11_tmp 3 1 roll put
++                %dup /gsubhog exch _cjkv_type11_tmp /gsubost get _cjkv_type11_tmp /gsubocv get add 4 add _cjkv_type11_tmp /gsubglc get getinterval _cjkv_type11_tmp 3 1 roll put
++                dup /gsubvog exch _cjkv_type11_tmp /gsubost get 6 add _cjkv_type11_tmp /gsubglc get 2 mul getinterval _cjkv_type11_tmp 3 1 roll put
++                dup /cvfmt exch _cjkv_type11_tmp /gsubost get _cjkv_type11_tmp /gsubocv get add 0 add .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++                _cjkv_type11_tmp /cvfmt get 1 eq {
++                dup /cvglc exch _cjkv_type11_tmp /gsubost get _cjkv_type11_tmp /gsubocv get add 2 add .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++                dup /gsubhog exch _cjkv_type11_tmp /gsubost get _cjkv_type11_tmp /gsubocv get add 4 add _cjkv_type11_tmp /cvglc get 2 mul getinterval _cjkv_type11_tmp 3 1 roll put
++                CJKV_DEBUG_GSUB {
++                  (gsubocv: ) print _cjkv_type11_tmp /gsubocv get =
++                  (gsubglc: ) print _cjkv_type11_tmp /gsubglc get =
++                  (cvfmt: ) print _cjkv_type11_tmp /cvfmt get =
++  
++                  (gsubhog->gsubvog ) =
++                  0 2 _cjkv_type11_tmp /gsubhog get length 2 sub { % for
++                    dup
++                    _cjkv_type11_tmp /gsubhog get exch .cjkv_getu16 =only
++                    (->) =only
++                    _cjkv_type11_tmp /gsubvog get exch .cjkv_getu16 =
++                  } for
++                } if
++                  /gsubh2v << 0 2 _cjkv_type11_tmp /gsubhog get length 2 sub {
++                    dup _cjkv_type11_tmp /gsubhog get exch .cjkv_getu16
++                    exch _cjkv_type11_tmp /gsubvog get exch .cjkv_getu16
++                  } for >> _cjkv_type11_tmp 3 1 roll put
++                } {
++                  _cjkv_type11_tmp /cvfmt get 2 eq {
++                    dup /cvrngc exch _cjkv_type11_tmp /gsubost get _cjkv_type11_tmp /gsubocv get add 2 add .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++                    dup /cvrngs exch _cjkv_type11_tmp /gsubost get _cjkv_type11_tmp /gsubocv get add 4 add _cjkv_type11_tmp /cvrngc get 6 mul getinterval _cjkv_type11_tmp 3 1 roll put
++                    /gsubh2v << 0 6 _cjkv_type11_tmp /cvrngs get length 6 sub {
++                      dup 0 add /fgid exch _cjkv_type11_tmp /cvrngs get exch .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++                      dup 2 add /lgid exch _cjkv_type11_tmp /cvrngs get exch .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++                      4 add /cvidx exch _cjkv_type11_tmp /cvrngs get exch .cjkv_getu16 _cjkv_type11_tmp 3 1 roll put
++                      CJKV_DEBUG_GSUB {
++                        (fgid: ) print _cjkv_type11_tmp /fgid get =
++                        (lgid: ) print _cjkv_type11_tmp /lgid get =
++                        (cvidx: ) print _cjkv_type11_tmp /cvidx get =
++                      } if
++                      _cjkv_type11_tmp /fgid get 1 _cjkv_type11_tmp /lgid get {
++                        dup _cjkv_type11_tmp /cvidx get add _cjkv_type11_tmp /fgid get sub 2 mul
++                        _cjkv_type11_tmp /gsubvog get exch .cjkv_getu16
++                      } for
++                    } for >> _cjkv_type11_tmp 3 1 roll put
++                  } {
++                    %(UNKNWON COVERAGE FORMAT.) = flush
++                  } ifelse
++                } ifelse
++              } {
++                %(UNKNOWN GSUB FORMAT.) = flush
++              } ifelse
++  %           } {
++  %             (ILLEGAL GSUB VERSION.) = flush
++  %           } ifelse
++            } for
++          } if
++        } for
++      } if
++      pop
++    } if
++  } bind def
++  
++  % glyphid .gsublookup glyphid
++  % Lookup substitute table. return the origin if not found.
++  %   modified by Taiji Yamada <taiji@aihara.co.jp> and Hideyuki Suzuki
++  /.gsublookup {
++    CJKV_DEBUG_TT11 { (.gsublookup\n) print flush } if
++    dup _cjkv_type11_tmp /gsubh2v get exch .knownget { exch pop } if
++  } bind def
++  
++  % - .cjkv_getos2 -
++  % Defines os2ver, os2cp1, os2cp2
++  %   to detect the kind of CID with the OS/2 table of a TrueType font.
++  % Written by Taiji Yamada <taiji@aihara.co.jp>
++  %
++  % [OS/2 - OS/2 and Windows Metrics]
++  % Index        Size        Type        Name of Entry
++  % -----------------------------------
++  % 0        2        USHORT        version
++  % 2        2        SHORT        xAvgCharWidth
++  % 4        2        USHORT        usWeightClass
++  % 6        2        USHORT        usWidthClass
++  % 8        2        SHORT        fsType
++  % 10        2        SHORT        ySubscriptXSize
++  % 12        2        SHORT        ySubscriptYSize
++  % 14        2        SHORT        ySubscriptXOffset
++  % 16        2        SHORT        ySubscriptYOffset
++  % 18        2        SHORT        ySuperscriptXSize
++  % 20        2        SHORT        ySuperscriptYSize
++  % 22        2        SHORT   ySuperscriptXOffset
++  % 24        2        SHORT        ySuperscriptYOffset
++  % 26        2        SHORT        yStrikeoutSize
++  % 28        2        SHORT        yStrikeoutPosition
++  % 30        2        SHORT        sFamilyClass
++  % 32        10        BYTE        panose[10]
++  % 42        4        ULONG        ulUnicodeRange1
++  % 46        4        ULONG        ulUnicodeRange2
++  % 50        4        ULONG        ulUnicodeRange3
++  % 54        4        ULONG        ulUnicodeRange4
++  % 58        4        CHAR        achVendID[4]
++  % 62        2        USHORT        fsSelection
++  % 64        2        USHORT        usFirstCharIndex
++  % 66        2        USHORT        usLastCharIndex
++  % 68        2        SHORT        sTypoAscender
++  % 70        2        SHORT        sTypoDescender
++  % 72        2        SHORT        sTypoLineGap
++  % 74        2        USHORT        usWinAscent
++  % 76        2        USHORT        usWinDescent
++  % 78        4        ULONG        ulCodePageRange1
++  % 82        4        ULONG        ulCodePageRange2
++  % 86        2        SHORT        sxHeight
++  % 88        2        SHORT        sCapHeight
++  % 90        2        USHORT        usDefaultChar
++  % 92        2        USHORT        usBreakChar
++  % 94        2        USHORT        usMaxContext
++  % -----------------------------------
++  % References
++  % 1. http://www.microsoft.com/typography/OTSPEC/os2.htm
++  %
++  /.cjkv_getos2 {
++    CJKV_DEBUG_TT11 { (.cjkv_getos2\n) print flush } if
++    /os2ver 0 def
++    tabdict (OS/2) cvn .knownget { % if
++      dup /os2ver exch 0 .cjkv_getu16 def
++      os2ver 0 gt { % if
++        %dup /os2typ exch 8 .cjkv_gets16 def
++        %dup /os2fam exch 30 .cjkv_gets16 def
++        dup /os2ur1 exch 42 .cjkv_getu32 def
++        dup /os2ur2 exch 46 .cjkv_getu32 def
++        dup /os2ur3 exch 50 .cjkv_getu32 def
++        dup /os2ur4 exch 54 .cjkv_getu32 def
++        %dup /os2sel exch 62 .cjkv_getu16 def
++        %dup /os2fci exch 64 .cjkv_getu16 def
++        %dup /os2lci exch 64 .cjkv_getu16 def
++        dup /os2cp1 exch 78 .cjkv_getu32 def 
++        dup /os2cp2 exch 82 .cjkv_getu32 def
++        CJKV_DEBUG_OS2 {
++          /tmp 64 string def
++          (os2ver: ) print os2ver 2 tmp cvrs =
++          %(os2typ: ) print os2typ 2 tmp cvrs =
++          %(os2fam: ) print os2fam 2 tmp cvrs =
++          (os2ur1: ) print os2ur1 2 tmp cvrs =
++          (os2ur2: ) print os2ur2 2 tmp cvrs =
++          (os2ur3: ) print os2ur3 2 tmp cvrs =
++          (os2ur4: ) print os2ur4 2 tmp cvrs =
++          %(os2sel: ) print os2sel 2 tmp cvrs =
++          %(os2fci: ) print os2fci 2 tmp cvrs =
++          %(os2lci: ) print os2lci 2 tmp cvrs =
++          (os2cp1: ) print os2cp1 2 tmp cvrs =
++          (os2cp2: ) print os2cp2 2 tmp cvrs =
++          [
++            [ 1 0 bitshift (Latin 1)        ]
++            [ 1 1 bitshift (Latin 2)        ]
++            [ 1 2 bitshift (Cyrillic)        ]
++            [ 1 3 bitshift (Greek)        ]
++            [ 1 4 bitshift (Turkish)        ]
++            [ 1 5 bitshift (Hebrew)        ]
++            [ 1 6 bitshift (Arabic)        ]
++            [ 1 7 bitshift (Baltic)        ]
++            [ 1 8 bitshift (Vietnamese)        ]
++            [ 1 16 bitshift (Thai)        ]
++            [ 1 17 bitshift (Japanese)        ]
++            [ 1 18 bitshift (Simplified Chinese)        ]
++            [ 1 19 bitshift (Korean Wansung)        ]
++            [ 1 20 bitshift (Traditional Chinese)        ]
++            [ 1 21 bitshift (Korean Johab)        ]
++            [ 1 31 bitshift (Symbol)        ]
++          ] { % forall
++            dup 0 get os2cp1 and 0 gt { % if
++              (CodePage: ) print 1 get =
++            } {
++                pop
++            } ifelse
++          } forall
++        } if
++      } if
++      pop
++    } if
++  } bind def
++  
++  % ---------------- CJK TrueType font loading ---------------- %
++  
++  % Written by the gs-cjk project
++  
++  % .parsecmap
++  % push an array as a result of reading a CMap file.
++  % the array is of the following form.
++  %   [ [ [ dst src num ] [ dst src num ] ... [ dst src num ] ]
++  %     [ [ dst src num ] [ dst src num ] ... [ dst src num ] ]
++  %     ...
++  %     [ [ dst src num ] [ dst src num ] ... [ dst src num ] ] ]
++  % each array [dst src num] corresponds to each line within
++  % /begin{bf,cid}{char,range}/end{bf,cid}{char,range} pairs.
++  
++  /.parsecmapdict mark
++  
++    CJKV_DEBUG_TT11 { (.parsecmapdict\n) print flush } if
++    % override system operators
++    /findresource { pop } bind
++    /defineresource { pop pop } bind
++    /dict {}
++    /def { pop pop } bind
++    /dup null
++    /begin { pop } bind
++    /end {}
++    /currentdict null
++  
++    % override CMap operators
++    /usecmap { pop } bind
++    /CMapName null
++    /begincmap { [ } bind
++    /endcmap { ] } bind
++    /begincodespacerange { pop mark } bind
++    /endcodespacerange { cleartomark } bind
++    /beginnotdefrange { pop mark } bind
++    /endnotdefrange { cleartomark } bind
++    /beginbfchar { /parsecmapcounter exch def } bind        % for FromCID CMaps
++    /endbfchar {
++      parsecmapcounter dup array exch 1 sub -1 0 {
++        [ 5 3 roll exch .cjkv_strtoint 1 ]
++        2 index 3 1 roll put
++      } for
++    } bind
++    /beginbfrange { begincidrange }                       % for FromCID CMaps
++    /endbfrange { endcidrange }
++    /begincidchar { beginbfchar }                                % for ToCID CMaps
++    /endcidchar { endbfchar }
++    /begincidrange { /parsecmapcounter exch def } bind        % for ToCID CMaps
++    /endcidrange {
++      parsecmapcounter dup array exch 1 sub -1 0 {
++        [ 6 3 roll 3 1 roll .cjkv_strtoint exch .cjkv_strtoint exch 1 index sub 1 add ]
++        2 index 3 1 roll put
++      } for
++    } bind
++  
++    % misc
++    /parsecmapcounter 0
++  
++  .dicttomark def         % .parsecmapdict
++  
++  
++  /.parsecmapfname 100 string def
++  
++  % <CMapName> .parsecmap <array>
++  % Return the contents of the CMap.  If the CMap is not found, empty array
++  % is returned.  Note that usecmap is ignored because of efficiency.
++  /.parsecmap {
++    CJKV_DEBUG_TT11 { (.parsecmap\n) print flush } if
++    /CMap /Category findresource begin
++    //.parsecmapfname ResourceFileName end        % filename
++    dup status {
++      pop pop pop pop
++      _cjkv_type11_util /.parsecmapdict get begin run end
++    } {
++      pop []
++    } ifelse
++  } bind def
++  
++  % .cjkv_buildcmaptab
++  % construct a cmap table using information obtained from horizontal/vertical
++  % CMaps, ToUnicode CMap, and substition data.
++  
++  % cmap /CMap proc .applyCMap cmap
++  /.applyCMap {
++    CJKV_DEBUG_TT11 { (.applyCMap\n) print flush } if
++    exch _cjkv_type11_util /.parsecmap get exec                        % {} [[[].].]
++    dup length 1 sub -1 0 {                % {} [[[].].] len-1 -1 0 {} for
++      1 index exch get                        % {} [[[].].] [[].]
++      dup length 1 sub -1 0 {                % {} [[[].].] [[].] len-1 -1 0 for {}
++        1 index exch get                        % {} [[[].].] [[].] [ cid gid num ]
++        cvx exec cmapglyphs                % {} [[[].].] [[].] cid gid num gmap
++        3 1 roll .cjkv_safegetinterval {        % {} [[[].].] [[].] cid [gid'..]
++          4 index exec dup cmapglyphs 0 get eq 1 index 0 eq or {
++            % found no glyph
++            pop
++          } {
++            % found a glyph
++            5 index exch 2 index exch .cjkv_safeput
++          } ifelse
++          1 add                                % {} [[[].].] [[].] cid++
++        } forall pop
++      } for                                % {} [[[].].] [[].]
++      pop                                        % {} [[[].].]
++    } for                                        % {} [[[].].]
++    pop pop                                %
++  } bind def
++  
++  % cmap /CMap-V .applyvCMap cmap
++  /.applyvCMap {
++    CJKV_DEBUG_TT11 { (.applyvCMap\n) print flush } if
++    _cjkv_type11_tmp /gsubh2v get null ne {
++      { _cjkv_type11_util /.gsublookup get exec } _cjkv_type11_util /.applyCMap get exec
++    } {
++      { } _cjkv_type11_util /.applyCMap get exec
++    } ifelse
++  } bind def
++  
++  % cmap /CMap-H .applyhCMap cmap
++  /.applyhCMap {
++    CJKV_DEBUG_TT11 { (.applyhCMap\n) print flush } if
++    { } _cjkv_type11_util /.applyCMap get exec
++  } bind def
++  
++  % cmap /CMap-V .applyvCMapUnicode cmap
++  /.applyvCMapUnicode {
++    CJKV_DEBUG_TT11 { (.applyvCMapUnicode\n) print flush } if
++    _cjkv_type11_tmp /gsubh2v get null ne {
++      {
++        dup 16#f900 ge
++        1 index 16#ff00 ge 2 index 16#ff9f le and not
++        and not {
++          _cjkv_type11_util /.gsublookup get exec
++        } if
++      } bind _cjkv_type11_util /.applyCMap get exec
++    } {
++      { } _cjkv_type11_util /.applyCMap get exec
++    } ifelse
++  } bind def
++  
++  % cmap /Adobe-*-* .applyCIDToCode cmap
++  /.applyCIDToCode {
++    CJKV_DEBUG_TT11 { (.applyCIDToCode\n) print flush } if
++    _cjkv_type11_util /.parsecmap get exec
++    {
++      {                           % cmap [ dist cid num ]
++        dup 0 get length 2 gt {   % multi-byte dist is not supported yet.
++          pop
++        } {
++          cvx exec exch           % cmap dist num cid
++          cmapglyphs 4 2 roll     % cmap cid cmapglyphs dist num
++          exch .cjkv_strtoint exch
++          .cjkv_safegetinterval        % cmap cid subcmapglyphs
++          {                       % cmap cid gid
++            2 index 2 index       % cmap cid gid cmap cid
++            3 2 roll              % cmap cid cmap cid gid
++            .cjkv_safeput              % cmap cid
++            1 add                 % cmap nextcid
++          } forall pop
++        } ifelse
++      } forall
++    } forall
++  } bind def
++  
++  % cmap /Adobe-*-UCS2 .applyCIDToUnicode cmap
++  /.applyCIDToUnicode {
++    CJKV_DEBUG_TT11 { (.applyCIDToUnicode\n) print flush } if
++    _cjkv_type11_util /.parsecmap get exec
++    {
++      {                           % cmap [ distuni cid num ]
++        dup 0 get length 2 gt     % multi-byte dist is not supported yet.
++        1 index 0 get <fffd> eq   % the value <fffd> is regard as undefined code.
++        or {
++          pop
++        } {
++          cvx exec exch           % cmap distuni num cid
++          cmapglyphs 4 2 roll     % cmap cid cmapglyphs distuni num
++          exch .cjkv_strtoint exch     % cmap cid cmapglyphs distuni num
++          .cjkv_safegetinterval        % cmap cid subcmapglyphs
++          {                       % cmap cid gid
++            2 index 2 index       % cmap cid gid cmap cid
++            3 2 roll              % cmap cid cmap cid gid
++            .cjkv_safeput              % cmap cid
++            1 add                 % cmap nextcid
++          } forall pop
++        } ifelse
++      } forall
++    } forall
++  } bind def
++  
++  /.cjkv_buildcmapdict mark
++    /Adobe-CNS1 <<
++      /Registry (Adobe)
++      /Ordering (CNS1)
++      /CIDCounts [ 14099 17408 17601 18846 18962 ]
++      /Big5 { 0 {
++        /Adobe-CNS1-ETen-B5     _cjkv_type11_util /.applyCIDToCode    get exec
++        /ETen-B5-V              _cjkv_type11_util /.applyvCMap        get exec
++        /ETen-B5-H              _cjkv_type11_util /.applyhCMap        get exec
++      } }
++      /Unicode { 3 {
++        /Adobe-CNS1-UCS2        _cjkv_type11_util /.applyCIDToUnicode get exec
++        /UniCNS-UCS2-V          _cjkv_type11_util /.applyvCMapUnicode get exec
++        /UniCNS-UCS2-H          _cjkv_type11_util /.applyhCMap        get exec
++      } }
++    >>
++    /Adobe-GB1 <<
++      /Registry (Adobe)
++      /Ordering (GB1)
++      /CIDCounts [ 7717 9897 22127 22353 29064 ]
++      /PRC { 2 {
++        /Adobe-GB1-GBK-EUC      _cjkv_type11_util /.applyCIDToCode    get exec
++        /GBK-EUC-V              _cjkv_type11_util /.applyvCMap        get exec
++        /GBK-EUC-H              _cjkv_type11_util /.applyhCMap        get exec
++      } }
++      /Unicode { 4 {
++        /Adobe-GB1-UCS2         _cjkv_type11_util /.applyCIDToUnicode get exec
++        /UniGB-UCS2-V           _cjkv_type11_util /.applyvCMapUnicode get exec
++        /UniGB-UCS2-H           _cjkv_type11_util /.applyhCMap        get exec
++      } }
++    >>
++    /Adobe-Japan1 <<
++      /Registry (Adobe)
++      /Ordering (Japan1)
++      /CIDCounts [ 8284 8359 8720 9354 15444 20317 23058 ]
++      /ShiftJIS { 2 {
++        /Adobe-Japan1-90ms-RKSJ _cjkv_type11_util /.applyCIDToCode    get exec
++        /90ms-RKSJ-V            _cjkv_type11_util /.applyvCMap        get exec
++        /90ms-RKSJ-H            _cjkv_type11_util /.applyhCMap        get exec
++      } }
++      /Unicode { 4 {
++        /Adobe-Japan1-UCS2      _cjkv_type11_util /.applyCIDToUnicode get exec
++        /UniJIS-UCS2-V          _cjkv_type11_util /.applyvCMapUnicode get exec
++        /UniJIS-UCS2-H          _cjkv_type11_util /.applyhCMap        get exec
++      } }
++    >>
++    /Adobe-Japan2 <<
++      /Registry (Adobe)
++      /Ordering (Japan2)
++      /CIDCounts [ 6068 ]
++      /Unicode { 0  {
++        /UniHojo-UCS2-V         _cjkv_type11_util /.applyvCMapUnicode get exec
++        /UniHojo-UCS2-H         _cjkv_type11_util /.applyhCMap        get exec
++      } }
++    >>
++    /Adobe-Korea1 <<
++      /Registry (Adobe)
++      /Ordering (Korea1)
++      /CIDCounts [ 9333 18155 18352 ]
++      /Johab { 1 {
++        /KSC-Johab-V            _cjkv_type11_util /.applyvCMap        get exec
++        /KSC-Johab-H            _cjkv_type11_util /.applyhCMap        get exec
++      } }
++      /Unicode { 2 {
++        /Adobe-Korea1-UCS2      _cjkv_type11_util /.applyCIDToUnicode get exec
++        /UniKS-UCS2-V           _cjkv_type11_util /.applyvCMapUnicode get exec
++        /UniKS-UCS2-H           _cjkv_type11_util /.applyhCMap        get exec
++      } }
++      /Wansung { 1 {
++        /Adobe-Korea1-KSCms-UHC _cjkv_type11_util /.applyCIDToCode    get exec
++        /KSCms-UHC-V            _cjkv_type11_util /.applyvCMap        get exec
++        /KSCms-UHC-H            _cjkv_type11_util /.applyhCMap        get exec
++      } }
++    >>
++    /Identity <<        % ttcmap ordering CIDMap only for specific and rare CJK TTF
++      /Registry (Unregistered)        % Thus Registry value is unpredictable. This
++      /Ordering (Identity)        % CIDFont can be used with Identity-H|V CMap
++      /CIDCounts [ 65535 ]
++      /H { 0 {
++        /Identity-H             _cjkv_type11_util /.applyhCMap        get exec % for ttcmap-order CIDMap
++      } }
++      /V { 0 {
++        /Identity-H             _cjkv_type11_util /.applyvCMap        get exec % for ttcmap-order and vertically-used CIDMap
++      } }
++    >>
++  .dicttomark def
++  
++  /.cjkv_ttencmap <<
++    /Identity              false
++    /Auto                  { 
++                             CJKV_DEBUG_TT11 { (+++ ttencmap->Auto exec\n) print flush } if
++                             _cjkv_type11_util /.cjkv_ttencoding get exec {
++                               dup
++                               _cjkv_type11_util /.cjkv_ttcharset get
++                               exch get
++                             CJKV_DEBUG_TT11 { (+++                exec\n) print flush } if
++                               exec
++                             CJKV_DEBUG_TT11 { (+++                      ok\n) print flush } if
++                               exch true
++                             } {
++                               false
++                             } ifelse
++                           } bind
++    /Adobe-CNS1            { /Adobe-CNS1   _cjkv_type11_util /.cjkv_ttencoding get exec }
++    /Adobe-GB1             { /Adobe-GB1    _cjkv_type11_util /.cjkv_ttencoding get exec }
++    /Adobe-Japan1          { /Adobe-Japan1 _cjkv_type11_util /.cjkv_ttencoding get exec }
++    /Adobe-Japan2          { /Adobe-Japan2 _cjkv_type11_util /.cjkv_ttencoding get exec }
++    /Adobe-Korea1          { /Adobe-Korea1 _cjkv_type11_util /.cjkv_ttencoding get exec }
++    /Adobe-CNS1-Big5       { /Adobe-CNS1   /Big5     true }
++    /Adobe-CNS1-Unicode    { /Adobe-CNS1   /Unicode  true }
++    /Adobe-GB1-PRC         { /Adobe-GB1    /PRC      true }
++    /Adobe-GB1-Unicode     { /Adobe-GB1    /Unicode  true }
++    /Adobe-Japan1-ShiftJIS { /Adobe-Japan1 /ShiftJIS true }
++    /Adobe-Japan1-Unicode  { /Adobe-Japan1 /Unicode  true }
++    /Adobe-Japan2-Unicode  { /Adobe-Japan2 /Unicode  true }
++    /Adobe-Korea1-Johab    { /Adobe-Korea1 /Johab    true }
++    /Adobe-Korea1-Unicode  { /Adobe-Korea1 /Unicode  true }
++    /Adobe-Korea1-Wansung  { /Adobe-Korea1 /Wansung  true }
++    /Identity-H            { /Identity     /H        true }
++    /Identity-V            { /Identity     /V        true }
++  >> def
++  
++  /.cjkv_ttcharset <<
++    /Unicode  { _cjkv_type11_util /.cjkv_detectos2 get exec }
++    /ShiftJIS /Adobe-Japan1
++    /Big5     /Adobe-CNS1
++    /PRC      /Adobe-GB1
++    /Wansung  /Adobe-Korea1
++    /Johab    /Adobe-Korea1
++  >> def
++  
++  /.cjkv_ttencdict <<
++    <00030001> /Unicode
++    <00030002> /ShiftJIS
++    <00030003> /Big5
++    <00030004> /PRC
++    <00030005> /Wansung
++    <00030006> /Johab
++  >> def
++  
++  /.cjkv_ttencoding {
++    CJKV_DEBUG_TT11 { (.cjkv_ttencoding\n) print flush } if
++    _cjkv_type11_util /.cjkv_ttencdict get _cjkv_ttcmap_tmp /cmapsub get 0 4 getinterval .knownget
++  } bind def
++  
++  /.cjkv_ttos2tab [
++    [ 1 20 bitshift /Adobe-CNS1   ]
++    [ 1 18 bitshift /Adobe-GB1    ]
++    [ 1 17 bitshift /Adobe-Japan1 ]
++    [ 1 19 bitshift /Adobe-Korea1 ]
++    [ 1 21 bitshift /Adobe-Korea1 ]
++  ] def
++  
++  /.cjkv_detectos2 {
++    CJKV_DEBUG_TT11 { (.cjkv_detectos2\n) print flush } if
++    /Identity        % default linear ordering to GID, Adobe Identity CIDs
++    os2ver 0 gt {
++      _cjkv_type11_util /.cjkv_ttos2tab get {
++        dup 0 get os2cp1 and 0 ne {
++          1 get exch
++        } if pop
++      } forall
++    } if
++  } bind def
++
++end readonly def
+diff -urNad ghostscript-8.62.dfsg.1~/lib/cjkv/tt42util.ps ghostscript-8.62.dfsg.1/lib/cjkv/tt42util.ps
+--- ghostscript-8.62.dfsg.1~/lib/cjkv/tt42util.ps	1970-01-01 08:00:00.000000000 +0800
++++ ghostscript-8.62.dfsg.1/lib/cjkv/tt42util.ps	2008-03-09 10:53:53.000000000 +0800
+@@ -0,0 +1,482 @@
++%!
++%
++% Developed by AXE,Inc., BBR Inc. and Turbolinux Inc.
++%   under the technical advice by suzuki toshiya (Hiroshima University)
++% For questions, please send mail to espgs8-cjk@printing-japan.org
++%
++% (C) Copyright 2006 Center of the International Cooperation for
++%     Computerization
++%
++%
++% Based on gs-cjk patches
++% Copyright (C) 2001-2003 gs-cjk project:
++%   Taiji Yamada, Hideyuki Suzuki, Masatake Yamato and suzuki toshiya.
++%   Enhancements by Akira Tagoh and Taiji Yamada, 2005.
++%   All rights reserved.
++%
++%
++% Based on GNU Ghostscript 7.07 and 8.15
++% Copyright (C) 1996-2003 artofcode LLC.  All rights reserved.
++%
++% This software is provided AS-IS with no warranty, either express or
++% implied.
++%
++%
++% 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) any later version.
++%
++% This program is distributed in the hope that it will be useful,
++% but WITHOUT ANY WARRANTY; without 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-1307 USA
++%
++
++
++[
++   /CJKV_DEBUG_TT42
++] {dup where {pop pop} { currentdict exch false def pop } ifelse} forall
++
++/_cjkv_type42_tmp 10 dict def
++
++/_cjkv_type42_util 15 dict dup begin
++
++  % <tab> .cjkv_printtab -
++  /.cjkv_printtab {
++    CJKV_DEBUG_TT42 { (.cjkv_printtab\n) print flush } if
++    dup 0 4 getinterval print ( ) print
++    dup 8 .cjkv_getu32 =only ( ) print
++    12 .cjkv_getu32 =
++  } bind def
++  
++  % <file> .cjkv_loadttfonttables -
++  % <file> <fontindex> .cjkv_loadttfonttables - % extention by hideyuki
++  % Pushes .cjkv_loadttfontdict & scratch dict on d-stack.
++  % Defines f, offsets, tables, tabdict, tabs.
++  /.cjkv_loadttfonttables {
++    CJKV_DEBUG_TT42 { (*** .cjkv_loadttfonttables start\n) print flush } if
++    _cjkv_base_util begin
++    40 dict begin
++    dup type /integertype eq % extention by hideyuki
++    { 1 sub } { 0 } ifelse /findex exch def
++    /f exch def
++    /offsets f 12 string readstring pop def
++  
++    CJKV_DEBUG_TT42 { (*** .cjkv_loadttfonttables init #1 is ok\n) print flush } if
++    % TrueType Collection File support
++    % Jan 11 2000: Hideyuki Suzuki <hideyuki@sat.t.u-tokyo.ac.jp>
++    % Feb 10 2001: suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
++    offsets 0 4 getinterval (ttcf) eq {
++      [ 1 1 offsets 8 .cjkv_getu32 { pop f 4 string readstring pop 0 .cjkv_getu32} for ]
++      dup findex get dup /ttcheader exch def exch length 4 mul 12 add sub
++      %dup 0 gt { string f exch readstring pop } if pop
++      f fileposition add f exch setfileposition
++      % the previous line is for very large ttcf, hacked by suzuki toshiya
++      /offsets f 12 string readstring pop def
++    } { /ttcheader 0 def } ifelse
++    CJKV_DEBUG_TT42 { (*** .cjkv_loadttfonttables init #2 is ok\n) print flush } if
++  
++    /tables f offsets 4 .cjkv_getu16 16 mul string readstring pop def
++    CJKV_DEBUG_TT42 { (*** .cjkv_loadttfonttables tables def ok\n) print flush } if
++    /tabdict tables length 16 idiv dict def
++    CJKV_DEBUG_TT42 { (*** .cjkv_loadttfonttables tabdict def ok\n) print flush } if
++  	% tabs = tables we want to keep, sorted by file position.
++    /tabs [ 0 16 tables length 1 sub {
++      tables exch 16 getinterval
++      CJKV_DEBUG_TT42 { dup _cjkv_type42_util /.cjkv_printtab get exec } if
++      dup 0 4 getinterval _cjkv_readtables 1 index known {
++        tabdict exch 2 index put
++      } {
++        pop pop
++      } ifelse
++    } for ] {
++      exch 8 .cjkv_getu32 exch 8 .cjkv_getu32 lt
++    } .cjkv_sort def
++  	% In certain malformed TrueType fonts, tables overlap.
++  	% Truncate tables if necessary.
++    0 1 tabs length 2 sub {
++      dup tabs exch get exch 1 add tabs exch get
++      1 index 8 .cjkv_getu32 2 index 12 .cjkv_getu32 add
++      1 index 8 .cjkv_getu32 gt {
++        (**** Warning: ) print 1 index 0 4 getinterval print
++        ( overlaps ) print dup 0 4 getinterval print
++        (, truncating.) = flush
++        dup 8 .cjkv_getu32 2 index 8 .cjkv_getu32 sub
++        2 index 12 3 -1 roll .cjkv_putu32
++      } if pop pop
++    } for
++    CJKV_DEBUG_TT42 { (*** .cjkv_loadttfonttables finished \n) print flush } if
++  } bind def
++  
++  % - .cjkv_readttdata -
++  % Read data.  Updates offsets, tabs; stores data in tabdict.
++  /.cjkv_readttdata {
++    CJKV_DEBUG_TT42 { (.cjkv_readttdata\n) print flush } if
++  
++    % TrueType Collection File support
++    % Jan 11 2000: Hideyuki Suzuki <hideyuki@sat.t.u-tokyo.ac.jp>
++    % /fpos offsets length tables length add def
++    /fpos ttcheader offsets length tables length add add def
++    /sfpos offsets length tabs length 16 mul add def
++    offsets 4 tabs length .cjkv_putu16
++    tabs {
++      dup 0 4 getinterval /tname exch def
++      dup 8 .cjkv_getu32 /tpos exch def
++      dup 12 .cjkv_getu32 /tlen exch def
++      8 sfpos .cjkv_putu32
++  	% Skip data between the end of the previous table and
++  	% the beginning of this one, if any.
++      tpos fpos gt {
++        f tpos fpos sub () /SubFileDecode filter dup flushfile closefile
++        /fpos tpos def
++      } if
++      f tlen _cjkv_readtables tname get exec
++      tabdict tname 3 -1 roll put
++      /fpos fpos tlen add def
++  	% Round up the table length to an even value.
++      /sfpos sfpos tlen dup 1 and add add def
++    } forall
++  } bind def
++  
++  % Find the string in a list of strings that includes a given index.
++  % <strings> <index> .findseg <string> <index'>
++  /.cjkv_findseg {
++    CJKV_DEBUG_TT42 { (.cjkv_findseg\n) print flush } if
++    exch {
++      dup length 2 index gt { exch exit } if
++      length sub
++    } forall
++  } bind def
++  
++  % - .cjkv_makesfnts -
++  % Defines checksum, getloca, head, locatable, numloca, post, sfnts, upem
++  /.cjkv_makesfnts {
++    CJKV_DEBUG_TT42 { (.cjkv_makesfnts\n) print flush } if
++    _cjkv_type42_util /.cjkv_readttdata get exec
++    /head tabdict /head get def
++    /locatable tabdict /loca get def
++    /post tabdict /post .knownget not { null } if def
++    /numloca
++      locatable dup type /stringtype eq
++       { length }
++       { 0 exch { length add } forall }
++      ifelse      % no def yet
++    locatable type /stringtype eq {
++      _cjkv_type42_tmp /.indexloca {} put
++    } {
++      _cjkv_type42_tmp /.indexloca _cjkv_type42_util /.cjkv_findseg get put
++    } ifelse
++    head 50 .cjkv_getu16 0 ne {
++      _cjkv_type42_tmp /getloca {
++        2 bitshift locatable exch _cjkv_type42_tmp /.indexloca get exec .cjkv_getu32
++      } put
++      4 idiv 1 sub
++    } {
++      _cjkv_type42_tmp /getloca {
++        dup add locatable exch _cjkv_type42_tmp /.indexloca get exec .cjkv_getu16 dup add
++      } put
++      2 idiv 1 sub
++    } ifelse def          % numloca
++          % If necessary, re-partition the glyfs.
++    tabdict /glyf get dup type /stringtype ne {
++      _cjkv_type42_util /.cjkv_dividesfnts get exec tabdict /glyf 3 -1 roll put
++    } {
++      pop
++    } ifelse
++    /sfnts [
++      offsets tabs { concatstrings } forall
++      tabs {
++        0 4 getinterval tabdict exch get
++        dup type /stringtype ne { aload pop } if
++      } forall
++    ] def
++  } bind def
++  
++  % <glyfs> .cjkv_dividesfnts <glyfs'>
++  /.cjkv_dividesfnts {
++    CJKV_DEBUG_TT42 { (.cjkv_dividesfnts\n) print flush } if
++    /glyfs exch def
++    /len1 0 glyfs { length add } forall def
++  		% Determine where to split the glyfs by scanning loca.
++  		% The very last entry in loca may be bogus.
++  		% Note that some loca entries may be odd, but we can only
++  		% split at even positions.
++  		%
++  		% Construct splitarray, the array of final lengths of
++  		% the sfnts entries covering the glyfs (i.e., all but
++  		% the first and last sfnts entries).
++      /prevsplit 0 def
++      /prevboundary 0 def
++      /prevoddboundary 0 def % see TYPE42_NO_ODDSIZE_STR in zfont42.c
++      /splitarray [
++        0 1 numloca 1 sub {
++  	_cjkv_type42_tmp /getloca get exec dup prevsplit maxstring add gt {
++            prevboundary prevsplit eq { % see TYPE42_NO_ODDSIZE_STR in zfont42.c
++               /ferr (%stderr) (w) file def
++               ferr (glyf table ) writestring
++               ferr prevsplit 10 string cvs writestring
++               ferr ( - ) writestring
++               dup 10 string cvs ferr exch writestring
++               ferr ( too long segment without suitable boundary.\n)
++               writestring
++               ferr closefile
++               /prevboundary prevoddboundary def
++            } if
++            CJKV_DEBUG_TT42 {
++               dup 10 string cvs print
++               ( segment is longer than maxstring, split now ) print
++               prevboundary 10 string cvs print
++               ( - ) print
++               prevsplit 10 string cvs print
++               (\n) print
++            } if
++  	  prevboundary prevsplit sub exch
++  	  /prevsplit prevboundary def
++            % /prevoddboundary 0 def
++  	} if
++  	dup 1 and 0 eq { % see TYPE42_NO_ODDSIZE_STR in zfont42.c
++            CJKV_DEBUG_TT42 {
++              dup 10 string cvs print
++              ( \() print
++              dup prevsplit sub 10 string cvs print
++              (\) ) print
++              ( even length OK\n) print
++  	} if
++            /prevboundary exch def
++            % /prevoddboundary 0 def
++          } {
++            CJKV_DEBUG_TT42 {
++              dup 10 string cvs print
++              ( \() print
++              dup prevsplit sub 10 string cvs print
++              (\) ) print
++              ( odd length!\n) print
++  	} if
++            % prevoddboundary 0 eq {
++              /prevoddboundary exch def
++            % } { pop } ifelse
++          } ifelse
++          % dup 0 eq { (why ZERO?\n) print } if
++          % dup ==
++        } for
++        len1 prevsplit sub
++      ] def
++      currentuserparams /VMReclaim get -2 vmreclaim
++      [
++  		% Re-split the sfnts glyfs strings according to splitarray.
++  		% We do this by iterating over the final segments defined
++  		% by splitarray, and constructing them from pieces of the
++  		% current glyfs strings.  We recycle the current strings
++  		% when possible, to avoid stressing the allocator.
++        /sfnt_idx 0 def
++        /strpos 0 def
++        _cjkv_type42_tmp /avail () put
++        splitarray {
++  	/seglen exch def
++  	/segpos 0 def
++  	_cjkv_type42_tmp /avail get length seglen ge
++  	  { _cjkv_type42_tmp /avail get 0 seglen getinterval _cjkv_type42_tmp /avail () put } { seglen string }
++  	ifelse
++  	{
++  	  /str glyfs sfnt_idx get def
++  	  /strlen str length def
++  	  /strleft strlen strpos sub def
++  	  seglen segpos sub strleft lt { exit } if
++  		% Copy the (rest of the) string into the new segment.
++  		% We know strleft <= segleft.
++  	  dup segpos str strpos strleft getinterval putinterval
++  	  /segpos segpos strleft add def
++  	  _cjkv_type42_tmp /avail str put
++  	  /sfnt_idx sfnt_idx 1 add def
++  	  /strpos 0 def
++  	  segpos seglen eq { exit } if
++  	} loop
++  		% Fill up the segment with an initial piece of the next
++  		% existing glyfs string.  We know strleft > segleft.
++  	/segleft seglen segpos sub def
++  	dup segpos str strpos segleft getinterval putinterval
++  	/strpos strpos segleft add def
++        } forall
++      ]
++      exch vmreclaim
++  } bind def
++  
++  
++  % - .cjkv_getpost -
++  % Uses post, defines glyphencoding
++  /.getpost {
++    CJKV_DEBUG_TT42 { (.getpost\n) print flush } if
++    /glyphencoding post null eq {
++      CJKV_DEBUG_TT42 { (post missing) = flush } if [ ]
++    } {
++      postformats post 0 .cjkv_getu32 .knownget {
++        CJKV_DEBUG_TT42 {
++          (post: format ) print
++          post 0 .cjkv_getu16 =only (,) print post 2 .cjkv_getu16 = flush
++        } if
++        post exch exec
++      } {
++        CJKV_DEBUG_TT42 { (post: unknown format ) print post 0 .cjkv_getu32 = flush } if [ ]
++      } ifelse
++    } ifelse def
++  } bind def
++  
++  % - .cjkv_ttkeys <key> <value> ...
++  /.cjkv_ttkeys {
++    CJKV_DEBUG_TT42 { (.cjkv_ttkeys\n) print flush } if
++    count /ttkeycount exch def
++    /upem head 18 .cjkv_getu16 def
++    /FontMatrix matrix
++    /FontBBox [ 36 2 42 { head exch .cjkv_gets16 upem div } for ]
++    .cjkv_nextxuid
++    tabdict /name .knownget {
++  		% Find the names from the 'name' table.
++      /names exch def
++      /FontName names 6 .cjkv_findname not { .cjkv_curxuid 16 8 string cvrs } if
++        /fontname 1 index def
++      /FontInfo mark
++        names 0 .cjkv_findname { /Notice exch } if
++        names 1 .cjkv_findname { /FamilyName exch } if
++        names 4 .cjkv_findname { /FullName exch } if
++        names 5 .cjkv_findname { /Version exch } if
++    } {
++  		% No name table, fabricate a FontName.
++      /FontName .cjkv_curxuid 16 8 string cvrs
++        /fontname 1 index def
++      /FontInfo mark
++    } ifelse
++    CJKV_DEBUG_TT42 { (fontname ) print fontname = } if
++  		% Stack: ... /FontInfo mark key1 value1 ...
++    post null ne {
++      post type /arraytype eq {
++        % this post table is a big table. /post should be [(...) ...]
++        % data we actually need here should be first one in array.
++        /posttable post 1 get def
++      } {
++        /posttable post def
++      } ifelse
++      /ItalicAngle        posttable  4 .cjkv_gets32 65536.0 div
++      /isFixedPitch       posttable 12 .cjkv_getu32 0 ne
++      /UnderlinePosition  posttable  8 .cjkv_gets16 upem div
++      /UnderlineThickness posttable 10 .cjkv_gets16 upem div
++    } if
++    counttomark 0 ne { .dicttomark } { pop pop } ifelse
++    /XUID [orgXUID 42 .cjkv_curxuid]
++    CJKV_DEBUG_TT42 {
++      tabs { _cjkv_type42_util /.cjkv_printtab get exec } forall
++      [ sfnts { length } forall ] ==
++      count ttkeycount sub array astore dup { == } forall aload pop
++    } if
++    /sfnts sfnts
++  } bind def
++  
++  % ---------------- Standard TrueType font loading ---------------- %
++  
++  % - .cjkv_pickcmap -
++  % Defines cmapsub, cmaptab
++  /.cjkv_pickcmap {
++    CJKV_DEBUG_TT42 { (.cjkv_pickcmap\n) print flush } if
++    tabdict /cmap get
++  		% The Apple cmap format is no help in determining the encoding.
++  		% Look for a Microsoft table.  If we can't find one,
++  		% just use the first table, whatever it is.
++    dup 4 8 .cjkv_biggetinterval exch             % the default
++    0 1 2 index 2 .cjkv_biggetu16 1 sub {
++      8 mul 4 add 1 index exch 8 .cjkv_biggetinterval
++      dup 0 .cjkv_biggetu16 /cmap_platform exch def
++      dup 2 .cjkv_biggetu16 /cmap_encoding exch def
++      CJKV_DEBUG_TT42 {
++        (cmap: platform ) print cmap_platform =only
++        ( encoding ) print cmap_encoding = flush
++      } if
++      cmap_platform 3 eq { exch 3 -1 roll pop exit } if pop
++    } for
++  		% Stack: subentry table
++    /cmapsub 2 index _cjkv_ttcmap_tmp 3 1 roll put
++    exch 4 .cjkv_biggetu32 1 index .cjkv_biglength 1 index sub .cjkv_biggetinterval
++    /cmaptab exch _cjkv_ttcmap_tmp 3 1 roll put
++  } bind def
++  
++  % <glyph> .cjkv_nname <_name>
++  /.cjkv_nname {
++    CJKV_DEBUG_TT42 { (.cjkv_nname\n) print flush } if
++    =string cvs (_) exch concatstrings cvn
++  } bind def
++  
++  % - .cjkv_charkeys /CharStrings <charstrings> /Encoding <encoding>
++  % Resets glyphencoding
++  /.cjkv_charkeys {
++    CJKV_DEBUG_TT42 { (.cjkv_charkeys\n) print flush } if
++    CJKV_DEBUG_TT42 {
++      (glyphencoding: length=) print glyphencoding dup length = === flush
++    } if
++  		% Hack: if there is no usable post table but the cmap uses
++  		% the Microsoft Unicode encoding, use ISOLatin1Encoding.
++    glyphencoding length 0 eq _cjkv_ttcmap_tmp /cmapsub get 0 4 getinterval <00030001> eq and {
++      /glyphencoding ISOLatin1Encoding dup length array copy def
++    } if
++  		% If necessary, fabricate additional glyphencoding entries
++  		% to cover all of loca, or truncate glyphencoding.
++    glyphencoding length numloca lt {
++      /glyphencoding [ glyphencoding aload pop
++      counttomark 1 numloca 1 sub { .cjkv_nname } for ] def
++    } {
++      /glyphencoding glyphencoding 0 numloca getinterval def
++    } ifelse
++  		% Some badly designed Chinese fonts have a post table
++  		% in which all glyphs other than 0 are named .null.
++  		% Use CharStrings to keep track of the reverse map from
++  		% names to glyphs, and don't let any name be used for
++  		% more than one glyph.
++    /CharStrings glyphencoding dup length 1 add dict	% +1 for .notdef
++      0 1 3 index length 1 sub {
++  		% Stack: glyphencoding dict index
++        2 index 1 index get 2 index 1 index known {
++  		% The same name maps to more than one glyph.
++  		% Change the name.
++  	pop dup .cjkv_nname 3 index 2 index 2 index put
++        } if
++        2 index exch 3 -1 roll put
++      } for exch pop
++  		% If there is no .notdef entry, map it to glyph 0.
++    dup /.notdef known not { dup /.notdef 0 put } if
++    readonly
++    /Encoding
++      [ _cjkv_ttcmap_tmp /cmaptab get _cjkv_cmaparray dup length 256 gt { 0 256 getinterval } if
++      { glyphencoding exch get } forall
++      counttomark 256 exch sub { /.notdef } repeat ]
++    CJKV_DEBUG_TT42 { (Encoding: ) print dup === flush } if
++  } bind def
++  
++  % -mark- <key> <value> ... .cjkv_definettfont <font>
++  /.cjkv_definettfont {
++    CJKV_DEBUG_TT42 { (.cjkv_definettfont\n) print flush } if
++    /FontType 42
++    /PaintType 0
++    CJKV_DEBUG_TT42 {
++      (numloca=) print numloca =
++    } if
++    .dicttomark
++    end end dup /FontName get exch definefont
++  } bind def
++  
++  
++  % <file> .cjkv_loadttfont <type42font>
++  /.cjkv_loadttfont {
++    CJKV_DEBUG_TT42 { (.cjkv_loadttfont\n) print flush } if
++    .cjkv_loadttfonttables
++    .cjkv_makesfnts
++    .cjkv_getpost
++    .cjkv_pickcmap
++    mark
++    .cjkv_charkeys
++    .cjkv_ttkeys
++    .cjkv_definettfont
++  } bind def
++
++end readonly def
+diff -urNad ghostscript-8.62.dfsg.1~/lib/gs_cidtt.ps ghostscript-8.62.dfsg.1/lib/gs_cidtt.ps
+--- ghostscript-8.62.dfsg.1~/lib/gs_cidtt.ps	2007-08-15 04:48:29.000000000 +0800
++++ ghostscript-8.62.dfsg.1/lib/gs_cidtt.ps	2008-03-09 10:53:53.000000000 +0800
+@@ -56,27 +56,36 @@
+ } bind def
+ 
+ /load_sfnts  % <FontDict> load_sfnts <FontDict> 
+-{ % Read the True Type file from the path /Path, and buld /sfnts,
+-  % skipping glyf and loca. 
+-  dup /Path get                                            % <font> (path)
+-  QUIET not {
+-    (Loading a TT font from ) print dup print 
+-    ( to emulate a CID font ) print 1 index /CIDFontName get =only ( ... ) print
+-  } if
+-  (r) file dup                                             % <font> file file
+-  3 1 roll                                                 % file <font> file
+-  1 index /SubfontID .knownget not { 0 } if                % file <font> file SubfontID
+-  .load_tt_font_stripped exch copy                         % file <font>
+-  QUIET not {
+-    (Done.) =
+-  } if
+-  dup 3 1 roll                                             % <font> file <font>
+-  exch /File exch put                                      % <font>
+-  dup dup /CIDSystemInfo get /Ordering get (.)             % <font> () ()
+-  2 index /Decoding get =string cvs                        % <font> () () ()
+-  concatstrings concatstrings cvn /Decoding exch put       % <font>
+-  //ChooseDecoding exec                                    % <font>
+-  //GenerateCIDMap exec                                    % <font>
++{
++  NOCJKV {
++    % Read the True Type file from the path /Path, and buld /sfnts,
++    % skipping glyf and loca. 
++    dup /Path get                                            % <font> (path)
++    QUIET not {
++      (Loading a TT font from ) print dup print 
++      ( to emulate a CID font ) print 1 index /CIDFontName get =only ( ... ) print
++    } if
++    (r) file dup                                             % <font> file file
++    3 1 roll                                                 % file <font> file
++    1 index /SubfontID .knownget not { 0 } if                % file <font> file SubfontID
++    .load_tt_font_stripped exch copy                         % file <font>
++    QUIET not {
++      (Done.) =
++    } if
++    dup 3 1 roll                                             % <font> file <font>
++    exch /File exch put                                      % <font>
++    dup dup /CIDSystemInfo get /Ordering get (.)             % <font> () ()
++    2 index /Decoding get =string cvs                        % <font> () () ()
++    concatstrings concatstrings cvn /Decoding exch put       % <font>
++    //ChooseDecoding exec                                    % <font>
++    //GenerateCIDMap exec                                    % <font>
++  }
++  {
++    dup /Path get % <font> (path)
++    exch /SubfontID .knownget not { 0 } if 1 add    % (path) SubfontID
++    .openttcidfont
++  }
++  ifelse
+ } bind def
+ 
+ %-----------TrueType-specific methods for category redefinition : -----------
+diff -urNad ghostscript-8.62.dfsg.1~/lib/gs_init.ps ghostscript-8.62.dfsg.1/lib/gs_init.ps
+--- ghostscript-8.62.dfsg.1~/lib/gs_init.ps	2008-03-09 10:53:51.000000000 +0800
++++ ghostscript-8.62.dfsg.1/lib/gs_init.ps	2008-03-09 10:53:53.000000000 +0800
+@@ -161,6 +161,7 @@
+ currentdict /NOFONTMAP known   /NOFONTMAP exch def
+ currentdict /NOFONTPATH known   /NOFONTPATH exch def
+ currentdict /NOGC known   /NOGC exch def
++currentdict /NOCJKV known   /NOCJKV exch def
+ currentdict /NOINTERPOLATE .knownget { /INTERPOLATE exch not def } if
+ currentdict /NOMEDIAATTRS known /NOMEDIAATTRS exch def
+ currentdict /NOOUTERSAVE known   /NOOUTERSAVE exch def
+@@ -678,6 +679,14 @@
+ 	   { /undefinedfilename signalerror }
+ 	  ifelse
+ 	} bind def
++/runlibfileifexists
++	{		% We don't want to bind 'run' into this procedure,
++			% since run may get redefined.
++	  findlibfile
++	   { exch pop /run .systemvar exec }
++	   { pop }
++	  ifelse
++	} bind def
+ /selectdevice
+ 	{ finddevice setdevice .setdefaultscreen } bind def
+ /signalerror		% <object> <errorname> signalerror -
+@@ -846,6 +855,7 @@
+ 	} bind def
+ % Temporarily substitute it for the real runlibfile.
+ /.runlibfile /runlibfile load def
++/.runlibfileifexists /runlibfileifexists load def
+ /runlibfile /runlibfile0 load def
+ 
+ % Create the error handling machinery.
+@@ -2195,4 +2205,9 @@
+ % be 'true' in some cases.
+ userdict /AGM_preserve_spots false put
+ 
++%Load CJKV environment.
++NOCJKV not {
++  (cjkv/cjkvinit.ps) runlibfile
++} if
++
+ % The interpreter will run the initial procedure (start).
+diff -urNad ghostscript-8.62.dfsg.1~/src/Makefile.in ghostscript-8.62.dfsg.1/src/Makefile.in
+--- ghostscript-8.62.dfsg.1~/src/Makefile.in	2008-03-09 10:53:51.000000000 +0800
++++ ghostscript-8.62.dfsg.1/src/Makefile.in	2008-03-09 10:59:38.000000000 +0800
+@@ -486,7 +486,7 @@
+ # The following list of files needed by the interpreter is maintained here.
+ # This changes infrequently, but is a potential point of bitrot, but since
+ #		Note: gs_cet.ps is only needed to match Adobe CPSI defaults
+-EXTRA_INIT_FILES= Fontmap cidfmap xlatmap FAPI FCOfontmap-PCLPS2 gs_cet.ps
++EXTRA_INIT_FILES= Fontmap cidfmap xlatmap FAPI FCOfontmap-PCLPS2 gs_cet.ps cjkv/
+ 
+ #	The init files are put in the lib/ directory (gs_init.ps + EXTRA_INIT_FILES)
+ #	Resource files go into Resource/...
+diff -urNad ghostscript-8.62.dfsg.1~/src/unixinst.mak ghostscript-8.62.dfsg.1/src/unixinst.mak
+--- ghostscript-8.62.dfsg.1~/src/unixinst.mak	2007-08-15 04:48:29.000000000 +0800
++++ ghostscript-8.62.dfsg.1/src/unixinst.mak	2008-03-09 10:53:53.000000000 +0800
+@@ -63,6 +63,7 @@
+ 	-mkdir -p $(DESTDIR)$(gsdir)
+ 	-mkdir -p $(DESTDIR)$(gsdatadir)
+ 	-mkdir -p $(DESTDIR)$(gsdatadir)/lib
++	-mkdir -p $(DESTDIR)$(gsdatadir)/lib/cjkv
+ 	$(SH) -c 'for f in \
+ $(EXTRA_INIT_FILES) Fontmap.GS \
+ ht_ccsto.ps \
+@@ -89,6 +90,10 @@
+ 	$(SH) -c 'for f in $(PSLIBDIR)/*.ppd $(PSLIBDIR)/*.rpd $(PSLIBDIR)/*.upp $(PSLIBDIR)/*.xbm $(PSLIBDIR)/*.xpm;\
+ 	do $(INSTALL_DATA) $$f $(DESTDIR)$(gsdatadir)/lib ;\
+ 	done'
++# install cjkv patch
++	$(SH) -c 'for f in $(PSLIBDIR)/cjkv/*.ps ;\
++	do $(INSTALL_DATA) $$f $(DESTDIR)$(gsdatadir)/lib/cjkv/ ;\
++	done'
+ 
+ # install the default resource files
+ # copy in every category (directory) but CVS
--- ghostscript-8.62.dfsg.1.orig/debian/patches/30_ps2pdf_man_improvement.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/30_ps2pdf_man_improvement.dpatch
@@ -0,0 +1,68 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 30_ps2pdf_man_improvement.dpatch by Masayuki Hatta (mhatta) <mhatta@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Manpage improvement for ps2pdf (en & de)
+
+@DPATCH@
+diff -urNad ghostscript-8.61.dfsg.1~/man/de/ps2pdf.1 ghostscript-8.61.dfsg.1/man/de/ps2pdf.1
+--- ghostscript-8.61.dfsg.1~/man/de/ps2pdf.1	2007-06-06 07:23:38.000000000 +0900
++++ ghostscript-8.61.dfsg.1/man/de/ps2pdf.1	2008-01-13 12:34:40.000000000 +0900
+@@ -1,6 +1,7 @@
+ .\" $Id: ps2pdf.1 8022 2007-06-05 22:23:38Z giles $
+ .\" Using encoding of the German (de_DE) translation: ISO-8859-1
+ .\" Translation by Tobias Burnus <burnus@gmx.de> and Thomas Hoffmann
++.\" revised for version 7.06 by Wolfram Quester <wolfi@mittelerde.physik.uni-kostanz.de> 
+ .TH PS2PDF 1 "8.Juli 2002" 7.21 Ghostscript \" -*- nroff -*-
+ .SH NAME
+ ps2pdf \- konvertiert PostScript nach PDF mittels ghostscript
+@@ -15,10 +16,11 @@
+ .br
+ \fBps2pdf13\fR  [Optionen...] {Eingabe.[e]ps|-} [Ausgabe.pdf|-]
+ .SH BESCHREIBUNG
+-Die
++Auer in der Benutzerschnittstelle sind die
+ .B ps2pdf\-Skripte
+-sind nahezu in allen Funktionen (aber nicht in der Benutzerschnittstelle) quivalent zu Adobe Acrobat(TM) 
+-Distiller(TM): Sie konvertieren PostScript-Dateien in das Portable Document Format (PDF).
++nahezu in allen Funktionen quivalent zu Adobe Acrobat Distiller: Sie konvertieren 
++PostScript-Dateien in das Portable Document Format (PDF).
++
+ .PP
+ Die drei Skripte unterscheiden sich wie folgt:
+ .IP -
+@@ -29,8 +31,7 @@
+ produziert immer PDF-1.3-Dateien (kompatibel zu Acrobat 4 und spter).
+ .IP -
+ .B ps2pdf
+-selbst produziert standardgem PDF-1.2-Dateien (kompatibel zu Acrobat 3 und spter); das kann sich jedoch in Zukunft ndern. 
+-Falls Sie eine bestimmte PDF-Version bentigen, sollten Sie
++selbst produziert standardgem PDF-1.2-Dateien (kompatibel zu Acrobat 3 und spter); In spteren Versionen kann sich das jedoch ndern. Falls Sie eine bestimmte PDF-Version bentigen, sollten Sie
+ .B ps2pdf12,
+ .BR ps2pdf13 
+ oder den
+@@ -39,7 +40,9 @@
+ .PP
+ Die Konvertierung mittels
+ .BR ps2pdf
+-unterliegt einigen Beschrnkungen. Siehe HTML-Documentation fr weitere Informationen.
++unterliegt einigen Beschrnkungen. Ausfhrlichere Informationen dazu stehen in der HTML-Dokumentation.
++.SH OPTIONEN
++Fr ps2pdf gelten die gleichen Optionen wie fr gs(1).
+ .SH SIEHE AUCH
+ gs(1), ps2pdfwr(1),
+ .br
+diff -urNad ghostscript-8.61.dfsg.1~/man/ps2pdf.1 ghostscript-8.61.dfsg.1/man/ps2pdf.1
+--- ghostscript-8.61.dfsg.1~/man/ps2pdf.1	2007-11-22 05:07:08.000000000 +0900
++++ ghostscript-8.61.dfsg.1/man/ps2pdf.1	2008-01-13 12:34:40.000000000 +0900
+@@ -41,6 +41,10 @@
+ There are some limitations in
+ .BR ps2pdf 's
+ conversion. See the HTML documentation for more information.
++.SH OPTIONS
++The
++.B ps2pdf
++scripts use the same options as gs(1).
+ .SH SEE ALSO
+ gs(1), ps2pdfwr(1),
+ .br
--- ghostscript-8.62.dfsg.1.orig/debian/patches/22_epsn_margin_workaround.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/22_epsn_margin_workaround.dpatch
@@ -0,0 +1,33 @@
+#! /bin/sh -e
+## 22_epsn_margin_workaround.dpatch by Masayuki Hatta <mhatta@debian.org>
+##
+## All lines beginning with \`## DP:' are a description of the patch.
+## DP: Adjust the margins for Epson drivers
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+        -patch) patch -f --no-backup-if-mismatch --dry-run -p1 < $0 && patch -f --no-backup-if-mismatch -p1 < $0
+;;
+        -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+                exit 1;;
+esac
+
+exit 0
+
+diff -urN gs-gpl-8.01.orig/src/gdevepsn.c gs-gpl-8.01/src/gdevepsn.c
+--- gs-gpl-8.01.orig/src/gdevepsn.c	2004-08-15 15:26:08.000000000 +0900
++++ gs-gpl-8.01/src/gdevepsn.c	2004-08-15 15:26:54.000000000 +0900
+@@ -105,7 +105,7 @@
+   prn_device(prn_std_procs, "epson",
+ 	DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
+ 	X_DPI, Y_DPI,
+-	0.2, 0.0, 0.0, 0.0,			/* margins */
++	0.25, 0.02, 0.25, 0.4,			/* margins */
+ 	1, epson_print_page);
+ 
+ /* Mid-res (interleaved, 1 pass per line) 9-pin device */
--- ghostscript-8.62.dfsg.1.orig/debian/patches/21_brother_7x0_gdi_fix.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/21_brother_7x0_gdi_fix.dpatch
@@ -0,0 +1,32 @@
+#! /bin/sh -e
+## 21_brother_7x0_fix.dpatch by Masayuki Hatta <mhatta@debian.org>
+##
+## All lines beginning with \`## DP:' are a description of the patch.
+## DP: Fix a problem with Brother 7x0 GDI, suggested by B. Janssen.
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+        -patch) patch -f --no-backup-if-mismatch --dry-run -p1 < $0 && patch -f --no-backup-if-mismatch -p1 < $0
+;;
+        -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+                exit 1;;
+esac
+
+exit 0
+
+diff -urN gs-gpl-8.01.orig/src/gdevhl7x.c gs-gpl-8.01/src/gdevhl7x.c
+--- gs-gpl-8.01.orig/src/gdevhl7x.c	2004-08-15 13:18:12.000000000 +0900
++++ gs-gpl-8.01/src/gdevhl7x.c	2004-08-15 13:19:29.000000000 +0900
+@@ -83,6 +83,7 @@
+ 
+  */
+ 
++#define USE_POSSIBLY_FLAWED_COMPRESSION 1
+ 
+ /* Type definitions */
+ typedef struct {
--- ghostscript-8.62.dfsg.1.orig/debian/patches/02_gs_man_fix_debian.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/02_gs_man_fix_debian.dpatch
@@ -0,0 +1,59 @@
+#! /bin/sh -e
+## 02_gs_man_fix_debian.dpatch by Masayuki Hatta <mhatta@debian.org>
+##
+## All lines beginning with \`## DP:' are a description of the patch.
+## DP: Fixes for gs.1 (Debian specific path adjustments)
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+        -patch) patch -f --no-backup-if-mismatch --dry-run -p1 < $0 && patch -f --no-backup-if-mismatch -p1 < $0
+;;
+        -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+                exit 1;;
+esac
+
+exit 0
+
+diff -urN gs-gpl-8.56.dfsg.1.orig/man/gs.1 gs-gpl-8.56.dfsg.1/man/gs.1
+--- gs-gpl-8.56.dfsg.1.orig/man/gs.1	2007-05-05 01:09:16.000000000 +0900
++++ gs-gpl-8.56.dfsg.1/man/gs.1	2007-05-05 01:09:51.000000000 +0900
+@@ -295,18 +295,18 @@
+ are typically based in \fBC:\\GS\fR, but may be elsewhere, especially if
+ you install Ghostscript with \fBGSview\fR.  Run "\fBgs -h\fR" to find the
+ location of Ghostscript documentation on your system, from which you can
+-get more details.
++get more details. On a Debian system they are in \fB/usr\fR.
+ .TP
+-.B /usr/local/share/ghostscript/#.##/*
++.B /usr/share/gs-gpl/#.##/*/*
+ Startup files, utilities, and basic font definitions
+ .TP
+-.B /usr/local/share/ghostscript/fonts/*
+-More font definitions
++.B /usr/share/fonts/type1/gsfonts/*
++More font definitions from the gsfonts package
+ .TP
+-.B /usr/local/share/ghostscript/#.##/examples/*
++.B /usr/share/doc/gs-gpl/examples/*
+ Ghostscript demonstration files
+ .TP
+-.B /usr/local/share/ghostscript/#.##/doc/*
++.B /usr/share/doc/gs-gpl/*
+ Diverse document files
+ .SH "INITIALIZATION FILES"
+ When looking for the initialization files "gs_*.ps", the files related to
+@@ -330,7 +330,8 @@
+ Ghostscript makefile when the executable was built.  When \fBgs\fR is built
+ on Unix, \fBGS_LIB_DEFAULT\fR is usually
+ "/usr/local/share/ghostscript/#.##:/usr/local/share/ghostscript/fonts"
+-where "#.##" represents the Ghostscript version number.
++where "#.##" represents the Ghostscript version number. They are
++"/usr/share/gs-gpl/#.## on a Debian system".
+ .PP
+ Each of these (\fBGS_LIB_DEFAULT\fR, \fBGS_LIB\fR, and \fB\-I\fR parameter)
+ may be either a single directory or a list of directories separated by
--- ghostscript-8.62.dfsg.1.orig/debian/patches/01_docdir_fix_for_debian.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/01_docdir_fix_for_debian.dpatch
@@ -0,0 +1,35 @@
+#! /bin/sh -e
+## 01_docdir_fix_for_debian.dpatch by Masayuki Hatta <mhatta@debian.org>
+##
+## All lines beginning with \`## DP:' are a description of the patch.
+## DP: Set docdir appropriately for Debian
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+        -patch) patch -f --no-backup-if-mismatch --dry-run -p1 < $0 && patch -f --no-backup-if-mismatch -p1 < $0
+;;
+        -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+                exit 1;;
+esac
+
+exit 0
+ 
+diff -urN gs-gpl-8.01.orig/src/Makefile.in gs-gpl-8.01/src/Makefile.in
+--- gs-gpl-8.01.orig/src/Makefile.in	2004-01-07 05:50:17.000000000 +0900
++++ gs-gpl-8.01/src/Makefile.in	2004-03-26 03:43:34.000000000 +0900
+@@ -63,8 +63,8 @@
+ gsdir = $(datadir)/ghostscript
+ gsdatadir = $(gsdir)/$(GS_DOT_VERSION)
+ 
+-docdir=$(gsdatadir)/doc
+-exdir=$(gsdatadir)/examples
++docdir=$(prefix)/share/doc/ghostscript
++exdir=$(prefix)/share/doc/ghostscript/examples
+ GS_DOCDIR=$(docdir)
+ 
+ # Define the default directory/ies for the runtime
--- ghostscript-8.62.dfsg.1.orig/debian/patches/03_libpaper_support.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/03_libpaper_support.dpatch
@@ -0,0 +1,74 @@
+#! /bin/sh -e
+## 03_libpaper_support.dpatch by Masayuki Hatta <mhatta@debian.org>
+##
+## All lines beginning with \`## DP:' are a description of the patch.
+## DP: Adds libpaper support
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+        -patch) patch -f --no-backup-if-mismatch --dry-run -p1 < $0 && patch -f --no-backup-if-mismatch -p1 < $0
+;;
+        -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+                exit 1;;
+esac
+
+exit 0
+
+diff -ur gs/lib/gs_init.ps ghostscript-8.61.dfsg.1~svn8187/lib/gs_init.ps
+--- gs/lib/gs_init.ps	2007-12-03 19:48:52.000000000 +0100
++++ ghostscript-8.61.dfsg.1~svn8187/lib/gs_init.ps	2007-12-03 19:43:05.000000000 +0100
+@@ -76,6 +76,13 @@
+ % devices that default to letter or A4 can be changed by setting
+ % DEFAULTPAPERSIZE.
+ % /DEFAULTPAPERSIZE (a4) def
++% Debian: Libpaper's default is in DEFPAPERSIZE; use that if the
++%         current device is not "cups".
++currentdict /DEFPAPERSIZE known
++currentdict /DEVICE known { DEVICE } { () } ifelse
++(cups) ne and
++  { DEFPAPERSIZE /PAPERSIZE where { pop pop } { /PAPERSIZE exch def } ifelse }
++if
+ 
+ % Turn on array packing for the rest of initialization.
+ true setpacking
+diff -ur gs/src/imainarg.c ghostscript-8.61.dfsg.1~svn8187/src/imainarg.c
+--- gs/src/imainarg.c	2007-12-03 19:48:32.000000000 +0100
++++ ghostscript-8.61.dfsg.1~svn8187/src/imainarg.c	2007-12-03 19:43:05.000000000 +0100
+@@ -194,6 +194,31 @@
+ 		return e_Fatal;
+ 	}
+     }
++
++    /* Change by Torsten Landschoff <torsten@debian.org>:
++     * If no papersize is given on the commandline we want gs to use the
++     * default papersize of the system. This change differs from the old
++     * Debian change in that it does not use arg_push_string and therefore
++     * is not using up the nesting depth.
++     *  -- Thu, 30 Mar 2000 21:28:25 +0200
++     *
++     * Applied to GPL/AFPL GhostScript by Masayuki Hatta
++     *  -- Wed Mar 24 15:00:00 JST 2004 */
++
++    {
++#	include <paper.h>
++      const char *paper = systempapername();
++      static char paperswitch[15+40+1] = "";
++      /* strlen("-sDEFPAPERSIZE") + 40 + space for '\0' */
++      
++      if (paper != NULL && *paperswitch == '\0') {
++       strncat(paperswitch, "-sDEFPAPERSIZE=", 15);
++       strncat(paperswitch, paper, 40);
++       swproc(minst, paperswitch, &args);
++       /* args is not modified since a "-s" argument does not need
++        * such special handling */
++      }
++    }
+     while ((arg = arg_next(&args, &code)) != 0) {
+ 	switch (*arg) {
+ 	    case '-':
+
--- ghostscript-8.62.dfsg.1.orig/debian/patches/20_bbox_segv_fix.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/20_bbox_segv_fix.dpatch
@@ -0,0 +1,33 @@
+#! /bin/sh -e
+## 20_bbox_segv_fix.dpatch by Masayuki Hatta <mhatta@debian.org>
+##
+## All lines beginning with \`## DP:' are a description of the patch.
+## DP: Fix SEGV on -sDEVICE=bbox, suggested by Yaroslav Halchenko.
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+        -patch) patch -f --no-backup-if-mismatch --dry-run -p1 < $0 && patch -f --no-backup-if-mismatch -p1 < $0
+;;
+        -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+                exit 1;;
+esac
+
+exit 0
+
+diff -urN gs-gpl-8.01.orig/src/gdevbbox.c gs-gpl-8.01/src/gdevbbox.c
+--- gs-gpl-8.01.orig/src/gdevbbox.c	2004-08-15 13:36:14.000000000 +0900
++++ gs-gpl-8.01/src/gdevbbox.c	2004-08-15 13:36:51.000000000 +0900
+@@ -222,7 +222,7 @@
+ 
+     if (tdev != 0)
+ 	gx_device_copy_params((gx_device *)bdev, tdev);
+-    if (remap_colors) {
++    if (remap_colors && bdev->is_open) {
+ 	bdev->black = gx_device_black((gx_device *)bdev);
+ 	bdev->white = gx_device_white((gx_device *)bdev);
+ 	bdev->transparent =
--- ghostscript-8.62.dfsg.1.orig/debian/patches/29_gs_css_fix.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/29_gs_css_fix.dpatch
@@ -0,0 +1,19 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 29_gs_css_fix.dpatch by Masayuki Hatta (mhatta) <mhatta@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Fixes a syntax error in doc/gs.css
+
+@DPATCH@
+diff -urNad ghostscript-8.61.dfsg.1~/doc/gs.css ghostscript-8.61.dfsg.1/doc/gs.css
+--- ghostscript-8.61.dfsg.1~/doc/gs.css	2005-12-29 04:56:24.000000000 +0900
++++ ghostscript-8.61.dfsg.1/doc/gs.css	2008-01-13 11:10:49.000000000 +0900
+@@ -73,7 +73,7 @@
+   background: #FFFFAA;
+ }
+ 
+-# table formatting hints
++/* table formatting hints */
+ td
+ {
+   vertical-align: top;
--- ghostscript-8.62.dfsg.1.orig/debian/patches/12_gs-cjk_vertical_writing_metrics_fix.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/12_gs-cjk_vertical_writing_metrics_fix.dpatch
@@ -0,0 +1,312 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 12_gs-cjk_vertical_writing_metrics_fix.dpatch by Masayuki Hatta (mhatta) <mhatta@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: CJK improvement support patches Pt. 2 (Metrics fix for vertical writing).
+
+@DPATCH@
+diff -urNad ghostscript-8.62.dfsg.1~/src/gstype42.c ghostscript-8.62.dfsg.1/src/gstype42.c
+--- ghostscript-8.62.dfsg.1~/src/gstype42.c	2007-09-25 21:31:24.000000000 +0800
++++ ghostscript-8.62.dfsg.1/src/gstype42.c	2008-03-09 12:59:14.000000000 +0800
+@@ -10,6 +10,14 @@
+    or contact Artifex Software, Inc.,  7 Mt. Lassen Drive - Suite A-134,
+    San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
+ */
++/*
++ * Modified by AXE,Inc., BBR Inc. and Turbolinux Inc.
++ *   under the technical advice by suzuki toshiya (Hiroshima University)
++ * For questions, please send mail to espgs8-cjk@printing-japan.org
++ *
++ * (C) Copyright 2006 Center of the International Cooperation for
++ *     Computerization
++ */
+ 
+ /* $Id: gstype42.c 8250 2007-09-25 13:31:24Z giles $ */
+ /* Type 42 (TrueType) font library routines */
+@@ -667,6 +675,49 @@
+ 			     origin.y + float2fixed(info.width[WMode].y));
+ }
+ 
++/* Get glyph bounding box from font file */
++int
++gs_type42_glyph_fbbox(gs_font *font, uint glyph_index, gs_rect *pbbox)
++{
++    gs_font_type42 *const pfont = (gs_font_type42 *)font;
++    gs_glyph_data_t glyph_data;
++    double factor = 1.0 / pfont->data.unitsPerEm;
++    int code = 0;
++    const byte *gdata;
++
++    if ((code = pfont->data.get_outline(pfont, glyph_index, &glyph_data)) < 0) {
++	return code;		/* non-existent glyph */
++    }
++    if (glyph_data.bits.size == 0) {
++	return 1; /* notdef */
++    }
++    if (glyph_data.bits.size != 0 && S16(glyph_data.bits.data) == -1) {
++	/* This is a composite glyph. */
++	uint flags;
++	gs_matrix_fixed mat;
++
++	gdata = glyph_data.bits.data + 10;
++	memset(&mat, 0, sizeof(mat)); /* arbitrary */
++	do {
++	    uint comp_index = U16(gdata + 2);
++
++	    parse_component(&gdata, &flags, &mat, NULL, pfont, &mat);
++	    if (flags & TT_CG_USE_MY_METRICS) {
++		code = gs_type42_glyph_fbbox(pfont, comp_index,pbbox);
++		goto done;
++	    }
++	}
++	while (flags & TT_CG_MORE_COMPONENTS);
++    }
++    gdata = glyph_data.bits.data;
++    pbbox->p.x = S16(gdata+2)*factor;
++    pbbox->p.y = S16(gdata+4)*factor;
++    pbbox->q.x = S16(gdata+6)*factor;
++    pbbox->q.y = S16(gdata+8)*factor;
++done:
++    gs_glyph_data_free(&glyph_data, "gs_type42_enumerate_glyph");
++    return code;
++}
+ /* Get glyph info by glyph index. */
+ int
+ gs_type42_glyph_info_by_gid(gs_font *font, gs_glyph glyph, const gs_matrix *pmat,
+diff -urNad ghostscript-8.62.dfsg.1~/src/gxfont42.h ghostscript-8.62.dfsg.1/src/gxfont42.h
+--- ghostscript-8.62.dfsg.1~/src/gxfont42.h	2007-08-15 04:48:29.000000000 +0800
++++ ghostscript-8.62.dfsg.1/src/gxfont42.h	2008-03-09 12:59:14.000000000 +0800
+@@ -10,6 +10,14 @@
+    or contact Artifex Software, Inc.,  7 Mt. Lassen Drive - Suite A-134,
+    San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
+ */
++/*
++ * Modified by AXE,Inc., BBR Inc. and Turbolinux Inc.
++ *   under the technical advice by suzuki toshiya (Hiroshima University)
++ * For questions, please send mail to espgs8-cjk@printing-japan.org
++ *
++ * (C) Copyright 2006 Center of the International Cooperation for
++ *     Computerization
++ */
+ 
+ /* $Id: gxfont42.h 8190 2007-08-14 20:48:29Z till $ */
+ /* Type 42 font data definition */
+@@ -155,6 +163,9 @@
+ int gs_type42_get_outline_from_TT_file(gs_font_type42 * pfont, stream *s, uint glyph_index,
+ 		gs_glyph_data_t *pgd);
+ 
++/* Export the function get glypf bounding box from font data */
++int gs_type42_glyph_fbbox(gs_font *font, uint glyph_index, gs_rect *pbbox);
++
+ /* Export the font procedures so they can be called from the interpreter. */
+ font_proc_enumerate_glyph(gs_type42_enumerate_glyph);
+ font_proc_glyph_info(gs_type42_glyph_info);
+diff -urNad ghostscript-8.62.dfsg.1~/src/zchar1.c ghostscript-8.62.dfsg.1/src/zchar1.c
+--- ghostscript-8.62.dfsg.1~/src/zchar1.c	2008-01-25 16:17:16.000000000 +0800
++++ ghostscript-8.62.dfsg.1/src/zchar1.c	2008-03-09 13:01:40.000000000 +0800
+@@ -10,6 +10,15 @@
+    or contact Artifex Software, Inc.,  7 Mt. Lassen Drive - Suite A-134,
+    San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
+ */
++/*
++ * Modified by AXE,Inc., BBR Inc. and Turbolinux Inc.
++ *   under the technical advice by suzuki toshiya (Hiroshima University)
++ * Based on bugfix by Hideo Saito, 2001.
++ * For questions, please send mail to espgs8-cjk@printing-japan.org
++ *
++ * (C) Copyright 2006 Center of the International Cooperation for
++ *     Computerization
++ */
+ 
+ /* $Id: zchar1.c 8504 2008-01-25 08:17:16Z leonardo $ */
+ /* Type 1 character display operator */
+@@ -240,7 +249,7 @@
+ 	cxs.sbw[2] = 0;
+ 	cxs.sbw[3] = -penum->FontBBox_as_Metrics2.x; /* Sic! */
+ 	cxs.use_FontBBox_as_Metrics2 = true;
+-	cxs.present = metricsNone;
++	cxs.present = metricsSideBearingAndWidth;
+     }
+     /* Establish a current point. */
+     code = gs_moveto(igs, 0.0, 0.0);
+@@ -289,7 +298,8 @@
+ 	 * create the path twice, since we can't know the
+ 	 * oversampling factor until after setcachedevice.
+ 	 */
+-	if (cxs.present == metricsSideBearingAndWidth) {
++	if (cxs.present == metricsSideBearingAndWidth
++	    && !cxs.use_FontBBox_as_Metrics2) {
+ 	    gs_point sbpt;
+ 
+ 	    sbpt.x = cxs.sbw[0], sbpt.y = cxs.sbw[1];
+@@ -408,11 +418,48 @@
+     } else {
+ 	/* We have the width and bounding box: */
+ 	/* set up the cache device now. */
++        double w[2];
++        w[0] = pcxs->sbw[2], w[1] = pcxs->sbw[3];
++      
++	if (pcxs->use_FontBBox_as_Metrics2) {
++	   /* In this case, we have to calculate width for WMode=0. 
++	      pcxs->sbw[2, 3] is width for WMode=1.
++	      Normally, the width for WMode=0 is not used in WMode=1 
++	      rendering. However, if CDevProc is defined, 
++	      the width for WMode=0 is used. 
++	      Do the same as the case pcxs->present == metricsNone */
++	     double sbw[4];
++	     ref cnref;
++	     ref other_subr;
++	     int code;
++	     
++	    /* Since an OtherSubr callout might change osp, */
++	    /* save the character name now. */
++	    ref_assign(&cnref, op - 1);
++	    code = type1_continue_dispatch(i_ctx_p, pcxs, op, &other_subr, 4);
++	    op = osp;		/* OtherSubrs might change it */
++	    switch (code) {
++ 	     default:		/* code < 0 or done, error */
++		 return ((code < 0 ? code :
++			 gs_note_error(e_invalidfont)));
++	    case type1_result_callothersubr:	/* unknown OtherSubr */
++		return type1_call_OtherSubr(i_ctx_p, pcxs,
++					    bbox_getsbw_continue,
++					    &other_subr);
++	    case type1_result_sbw:	/* [h]sbw, done */
++		break;
++	    }
++	    type1_cis_get_metrics(pcis, sbw);
++	    w[0] = sbw[2], w[1] = sbw[3];
++	    /* Now actual width is available, I can calculate much 
++	       better side bearing for WMode 1 from the width. */
++	    pcxs->sbw[0] = w[0] / 2;
++	}
+  	return zchar_set_cache(i_ctx_p, pbfont, op - 1,
+ 			       (pcxs->present == metricsSideBearingAndWidth
+ 			        && !pcxs->use_FontBBox_as_Metrics2 ?
+ 			        pcxs->sbw : NULL),
+-			       pcxs->sbw + 2,
++			       w,
+ 			       &pcxs->char_bbox,
+ 			       cont, exec_cont, 
+ 			       (pcxs->use_FontBBox_as_Metrics2 ? pcxs->sbw : NULL));
+@@ -640,7 +687,7 @@
+     code = type1_exec_init(&cxs.cis, penum, igs, pfont1);
+     if (code < 0)
+ 	return code;
+-    cxs.char_bbox = pfont1->FontBBox;
++    cxs.char_bbox = bbox;
+     code = type1exec_bbox(i_ctx_p, penum, &cxs, pfont, exec_cont);
+     return code;
+ }
+@@ -845,6 +892,7 @@
+     int code;
+     gs_text_enum_t *penum = op_show_find(i_ctx_p);
+     gs_font *pfont;
++    double w[2];
+ 
+     if ((code = gs_pathbbox(igs, &pcxs->char_bbox)) < 0 ||
+ 	(code = font_param(op - 3, &pfont)) < 0
+@@ -857,13 +905,24 @@
+ 	gs_font_type1 *const pfont1 = (gs_font_type1 *) pfont;
+ 	op_proc_t cont, exec_cont = 0;
+ 
+-	if (pcxs->present == metricsNone) {
++	if (pcxs->present == metricsNone
++	    || pcxs->use_FontBBox_as_Metrics2) {
+ 	    gs_point endpt;
+ 
+ 	    if ((code = gs_currentpoint(igs, &endpt)) < 0)
+ 		return code;
+-	    pcxs->sbw[2] = endpt.x, pcxs->sbw[3] = endpt.y;
++	    /* We will not use sbw[3, 4]. 
++	       If pcxs->use_FontBBox_as_Metrics2 is true,
++	       sbw[3, 4] are used as arguments(W1x, W1y) of setcachedevice2. 
++	       We will use w[0, 1] as W0x and W0y of setcachedevice2.
++	       W0 and W1 is differrent parameters. Don't confuse. */
++	    w[0] = endpt.x, w[1] = endpt.y;
+ 	    pcxs->present = metricsSideBearingAndWidth;
++	    if (pcxs->use_FontBBox_as_Metrics2) {
++	      /* Now actual width is available, I can calculate much 
++		 better side bearing for WMode 1 from the width. */
++	      pcxs->sbw[0] = w[0] / 2;
++	    }
+ 	}
+ 	/*
+ 	 * We only need to rebuild the path from scratch if we might
+@@ -882,7 +941,7 @@
+ 			? nobbox_fill : nobbox_stroke);
+ 	    exec_cont = 0;
+ 	    code = zchar_set_cache(i_ctx_p, pbfont, op - 1, NULL,
+-				   pcxs->sbw + 2,
++				    w,
+ 				   &pcxs->char_bbox,
+ 				   cont, &exec_cont,
+ 				   (pcxs->use_FontBBox_as_Metrics2 ? pcxs->sbw : NULL));
+diff -urNad ghostscript-8.62.dfsg.1~/src/zchar42.c ghostscript-8.62.dfsg.1/src/zchar42.c
+--- ghostscript-8.62.dfsg.1~/src/zchar42.c	2007-09-25 21:31:24.000000000 +0800
++++ ghostscript-8.62.dfsg.1/src/zchar42.c	2008-03-09 12:59:14.000000000 +0800
+@@ -10,6 +10,16 @@
+    or contact Artifex Software, Inc.,  7 Mt. Lassen Drive - Suite A-134,
+    San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
+ */
++/*
++ * Modified by AXE,Inc., BBR Inc. and Turbolinux Inc.
++ *   under the technical advice by suzuki toshiya (Hiroshima University)
++ * Based on bugfix by Masatake Yamato and Hideo Saito, 2001.
++ * For questions, please send mail to espgs8-cjk@printing-japan.org
++ *
++ * (C) Copyright 2006 Center of the International Cooperation for
++ *     Computerization
++ */
++ 
+ 
+ /* $Id: zchar42.c 8250 2007-09-25 13:31:24Z giles $ */
+ /* Type 42 character display operator */
+@@ -42,11 +52,17 @@
+     double w[2];
+     int present;
+     gs_font_type42 *pfont42 = (gs_font_type42 *)pbfont;
+-    int code = zchar_get_metrics(pbfont, cnref, sbw);
+-    gs_rect bbox;
++    gs_rect bbox,*pbbox;
++    int code = gs_type42_glyph_fbbox((gs_font *)pbfont, glyph_index, &bbox);
+     int vertical = gs_rootfont(igs)->WMode;
+     float sbw_bbox[8];
+ 
++    if (code != 0) {
++      pbbox = &pbfont->FontBBox;
++    } else {
++      pbbox = &bbox;
++    }
++    code = zchar_get_metrics(pbfont, cnref, sbw);
+     if (code < 0)
+ 	return code;
+     present = code;
+@@ -75,9 +91,16 @@
+ 		present = metricsSideBearingAndWidth;
+ 	    }
+ 	} else {
++	    float sbw_hbbox[8];
++
++	    code = pfont42->data.get_metrics(pfont42, glyph_index, 
++		    gs_type42_metrics_options_WMODE0_AND_BBOX, sbw_hbbox);
++	    if (code < 0)
++		return code;
++
+ 	    if (present == metricsNone) {
+-		sbw[0] = sbw_bbox[2] / 2;
+-		sbw[1] = (pbfont->FontBBox.q.y + pbfont->FontBBox.p.y - sbw_bbox[3]) / 2;
++		sbw[0] = sbw_hbbox[2] / 2;
++		sbw[1] = pbbox->q.y - sbw_bbox[1];
+ 		sbw[2] = sbw_bbox[2];
+ 		sbw[3] = sbw_bbox[3];
+ 		present = metricsSideBearingAndWidth;
+@@ -113,7 +136,7 @@
+     return zchar_set_cache(i_ctx_p, pbfont, cnref,
+ 			   (put_lsb && present == metricsSideBearingAndWidth ?
+ 			    sbw : NULL),
+-			   w, &bbox,
++			   w, pbbox,
+ 			   cont, exec_cont,
+ 			   gs_rootfont(igs)->WMode ? sbw : NULL);
+ }
--- ghostscript-8.62.dfsg.1.orig/debian/patches/13_gs-cjk_cjkps_examples.dpatch
+++ ghostscript-8.62.dfsg.1/debian/patches/13_gs-cjk_cjkps_examples.dpatch
@@ -0,0 +1,4226 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 13_gs-cjk_cjkps_examples.dpatch by Masayuki Hatta (mhatta) <mhatta@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: CJK support improvement patches Pt. 3 (CJK PostScript examples).
+
+@DPATCH@
+diff -urNad ghostscript-8.61.dfsg.1~/examples/cjk/all_ac1.ps ghostscript-8.61.dfsg.1/examples/cjk/all_ac1.ps
+--- ghostscript-8.61.dfsg.1~/examples/cjk/all_ac1.ps	1970-01-01 09:00:00.000000000 +0900
++++ ghostscript-8.61.dfsg.1/examples/cjk/all_ac1.ps	2008-01-13 14:24:00.000000000 +0900
+@@ -0,0 +1,221 @@
++%!PS-Adobe-3.0
++%%Title: Adobe-CNS1 CID-Keyed Fonts Character List
++%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
++%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
++%%+ This script is part of GNU Ghostscript and is distributed under
++%%+ the terms of the GNU General Public License. See the file COPYING
++%%+ for more information.
++%%Version: 1.0
++%
++% Usage:
++%   gs [-sF=MOESung-Regular] [-daffix [-sAF=MSung-Light]] \
++%      [-dglyphshow- [-sI=Identity-H]] [-ddescent=200] all_ac1.ps
++%
++%%DocumentMedia: A4 595 842 0 white ()
++%%EndComments
++%%BeginProlog
++
++/*gs-cjk (\
++------------------------------------------------------------------------\n\
++This is a script to test CJK fonts such as CID-keyed fonts.\n\
++If you have not done CID-keyed fonts installation and definitions at\n\
++/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
++this script can't work correctly.\n\
++For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
++
++If you throw this script into a printer, it requires PostScript 3\n\
++printer and CID-keyed fonts specified in this script.\n\
++------------------------------------------------------------------------\n) def
++
++/notice*stdout 4 dict begin
++  /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
++  currentdict
++end def
++
++/notice*page 5 dict begin
++  /*y 750 def
++  /*open {
++    gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
++    *y 750 eq {
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++    } if
++  } def
++  /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
++  /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
++  /*close { grestore } def
++  currentdict
++end def
++
++/greeting*gs-cjk {
++  product (Ghostscript) search not { pop } { pop pop pop QUIET not {
++    notice*stdout begin
++      *open
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++      *close
++    end
++  } if } ifelse
++} bind def
++greeting*gs-cjk
++
++/*findfont {
++  dup /Font resourcestatus { pop pop findfont } {
++    notice*page begin
++      *open
++      (Error in findfont: ) *echo-n dup *echo
++      *close
++    end
++    findfont
++  } ifelse
++} bind def
++
++/*CIDFont*findresource {
++  dup /CIDFont resourcestatus { pop pop /CIDFont findresource } {
++    notice*page begin
++      *open
++      (Error in /CIDFont findresource: ) *echo-n dup *echo
++      *close
++    end
++    /CIDFont findresource
++  } ifelse
++} bind def
++
++/orighandleerror errordict /handleerror get def
++errordict begin
++  /handleerror {
++    notice*page begin errordict begin $error begin
++      *open
++      (Error of ) *echo-n errorname dup length string cvs *echo
++      *close
++      showpage
++    end end end
++    orighandleerror
++  } bind def
++end
++
++/title (Adobe-CNS1 CID-Keyed Fonts Character List) def
++/PW 595 def
++/PH 842 def
++/LM 78 def
++/TM 130 def
++/RM 47 def
++/BM 76 def
++/NH 10 def
++/NV 12 def
++/RW PW LM RM add sub NH div def
++/RH PH TM BM add sub NV div def
++/FS RW 3 mul 4 div def
++/AFS RW 1 mul 4 div def
++/unknowndef { exch dup where { pop pop pop } { exch def } ifelse } bind def
++/F (MKai-Medium) unknowndef
++/affix false unknowndef
++%/AF (MOESung-Regular) unknowndef
++%/AF (MOEKai-Regular) unknowndef
++/AF (MSung-Light) unknowndef
++%/AF (MHei-Medium) unknowndef
++/descent 130 unknowndef
++/glyphshow- false unknowndef
++/fss { exch /CIDFont findresource exch scalefont setfont } bind def
++/concats { % [str ...] concats str
++  () exch dup length 1 sub -1 0 {
++    1 index exch get dup type /stringtype ne { dup length string cvs } if
++    3 -1 roll exch dup length 2 index length add string
++    dup dup 4 2 roll copy length 4 -1 roll putinterval exch
++  } for pop
++} bind def
++/composefontname { % font cmap composefontname font--cmap
++  [ 2 index (--) 3 index ] concats dup 3 -1 roll [ 5 -1 roll ] composefont pop
++} bind def
++glyphshow- {
++  /I (Identity-H) unknowndef
++  /F F I composefontname def
++  affix { /AF AF I composefontname def } if
++  /fss { exch findfont exch scalefont setfont } bind def
++  /s 2 string def
++} if
++/glyphframe { % h oldx glyphframe -
++  gsave 0 setlinewidth
++  currentpoint pop sub exch dup 0 exch descent mul 1000 div neg rmoveto
++  currentpoint 4 -2 roll rectstroke grestore
++} bind def
++/box { % llx lly urx ury box -
++  3 index 3 index moveto exch 4 -1 roll sub 3 1 roll exch sub
++  currentpoint 4 -2 roll rectstroke
++} bind def
++/charframe { % h string charframe -
++  gsave 0 setlinewidth
++  stringwidth pop exch dup 0 exch descent mul 1000 div neg rmoveto
++  currentpoint 4 -2 roll rectstroke grestore
++} bind def
++/pathframe { % string pathframe -
++  gsave 0 setlinewidth
++  true charpath flattenpath pathbbox box grestore
++} bind def
++/np {
++  /Helvetica findfont 11 scalefont setfont
++  LM BM 11 2 mul sub moveto title show ( - ) show F show
++  affix {
++    gsave /Helvetica findfont 5 scalefont setfont ( and ) show AF show grestore
++  } if
++  PW RM sub BM 11 2 mul sub moveto p 3 string cvs show
++  /p p 1 add def
++  showpage
++  /x LM def
++  /y PH TM sub def
++} bind def
++/nb {
++  /x x RW add def
++  x PW RM sub ge {
++    /x LM def
++    /y y RH sub def
++    y BM le {
++      np
++      /y PH TM sub def
++    } if
++  } if
++} bind def
++%%EndProlog
++/x LM def
++/y PH TM sub def
++/p 1 def
++[
++  %[0 14098]	% Adobe-CNS1-0
++  %[0 17407]	% Adobe-CNS1-0,1
++  %[0 17600]	% Adobe-CNS1-0,1,2
++  %[0 18845]	% Adobe-CNS1-0,1,2,3
++  [0 18961]	% Adobe-CNS1-0,1,2,3,4
++] {
++  cvx exec 1 exch {
++    /id exch def
++    F FS fss
++    x y FS sub moveto
++    glyphshow- not {
++      id glyphshow
++      FS x glyphframe
++    } {
++      s 0 id 256 idiv put s 1 id 256 mod put
++      FS s charframe
++      s pathframe
++      s show
++    } ifelse
++    affix {
++      AF AFS fss
++      x FS add y FS sub moveto
++      glyphshow- not {
++        id glyphshow
++        AFS x FS add glyphframe
++      } {
++        AFS s charframe
++        s pathframe
++        s show
++      } ifelse
++    } if
++    %
++    /Times-Roman findfont 7 scalefont setfont
++    x y FS sub FS descent mul 1000 div sub 7 sub moveto
++    id 5 string cvs show
++    nb
++  } for
++  np
++} forall
++%%Trailer
++%%EOF
+diff -urNad ghostscript-8.61.dfsg.1~/examples/cjk/all_ag1.ps ghostscript-8.61.dfsg.1/examples/cjk/all_ag1.ps
+--- ghostscript-8.61.dfsg.1~/examples/cjk/all_ag1.ps	1970-01-01 09:00:00.000000000 +0900
++++ ghostscript-8.61.dfsg.1/examples/cjk/all_ag1.ps	2008-01-13 14:24:00.000000000 +0900
+@@ -0,0 +1,218 @@
++%!PS-Adobe-3.0
++%%Title: Adobe-GB1 CID-Keyed Fonts Character List
++%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
++%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
++%%+ This script is part of GNU Ghostscript and is distributed under
++%%+ the terms of the GNU General Public License. See the file COPYING
++%%+ for more information.
++%%Version: 1.0
++%
++% Usage:
++%   gs [-sF=BousungEG-Light-GB] [-daffix [-sAF=STSong-Light]] \
++%      [-dglyphshow- [-sI=Identity-H]] [-ddescent=200] all_ag1.ps
++%
++%%DocumentMedia: A4 595 842 0 white ()
++%%EndComments
++%%BeginProlog
++
++/*gs-cjk (\
++------------------------------------------------------------------------\n\
++This is a script to test CJK fonts such as CID-keyed fonts.\n\
++If you have not done CID-keyed fonts installation and definitions at\n\
++/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
++this script can't work correctly.\n\
++For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
++
++If you throw this script into a printer, it requires PostScript 3\n\
++printer and CID-keyed fonts specified in this script.\n\
++------------------------------------------------------------------------\n) def
++
++/notice*stdout 4 dict begin
++  /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
++  currentdict
++end def
++
++/notice*page 5 dict begin
++  /*y 750 def
++  /*open {
++    gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
++    *y 750 eq {
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++    } if
++  } def
++  /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
++  /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
++  /*close { grestore } def
++  currentdict
++end def
++
++/greeting*gs-cjk {
++  product (Ghostscript) search not { pop } { pop pop pop QUIET not {
++    notice*stdout begin
++      *open
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++      *close
++    end
++  } if } ifelse
++} bind def
++greeting*gs-cjk
++
++/*findfont {
++  dup /Font resourcestatus { pop pop findfont } {
++    notice*page begin
++      *open
++      (Error in findfont: ) *echo-n dup *echo
++      *close
++    end
++    findfont
++  } ifelse
++} bind def
++
++/*CIDFont*findresource {
++  dup /CIDFont resourcestatus { pop pop /CIDFont findresource } {
++    notice*page begin
++      *open
++      (Error in /CIDFont findresource: ) *echo-n dup *echo
++      *close
++    end
++    /CIDFont findresource
++  } ifelse
++} bind def
++
++/orighandleerror errordict /handleerror get def
++errordict begin
++  /handleerror {
++    notice*page begin errordict begin $error begin
++      *open
++      (Error of ) *echo-n errorname dup length string cvs *echo
++      *close
++      showpage
++    end end end
++    orighandleerror
++  } bind def
++end
++
++/title (Adobe-GB1 CID-Keyed Fonts Character List) def
++/PW 595 def
++/PH 842 def
++/LM 78 def
++/TM 130 def
++/RM 47 def
++/BM 76 def
++/NH 10 def
++/NV 12 def
++/RW PW LM RM add sub NH div def
++/RH PH TM BM add sub NV div def
++/FS RW 3 mul 4 div def
++/AFS RW 1 mul 4 div def
++/unknowndef { exch dup where { pop pop pop } { exch def } ifelse } bind def
++/F (STHeiti-Regular) unknowndef
++/affix false unknowndef
++/AF (STSong-Light) unknowndef
++/descent 130 unknowndef
++/glyphshow- false unknowndef
++/fss { exch *CIDFont*findresource exch scalefont setfont } bind def
++/concats { % [str ...] concats str
++  () exch dup length 1 sub -1 0 {
++    1 index exch get dup type /stringtype ne { dup length string cvs } if
++    3 -1 roll exch dup length 2 index length add string
++    dup dup 4 2 roll copy length 4 -1 roll putinterval exch
++  } for pop
++} bind def
++/composefontname { % font cmap composefontname font--cmap
++  [ 2 index (--) 3 index ] concats dup 3 -1 roll [ 5 -1 roll ] composefont pop
++} bind def
++glyphshow- {
++  /I (Identity-H) unknowndef
++  /F F I composefontname def
++  affix { /AF AF I composefontname def } if
++  /fss { exch *findfont exch scalefont setfont } bind def
++  /s 2 string def
++} if
++/glyphframe { % h oldx glyphframe -
++  gsave 0 setlinewidth
++  currentpoint pop sub exch dup 0 exch descent mul 1000 div neg rmoveto
++  currentpoint 4 -2 roll rectstroke grestore
++} bind def
++/box { % llx lly urx ury box -
++  3 index 3 index moveto exch 4 -1 roll sub 3 1 roll exch sub
++  currentpoint 4 -2 roll rectstroke
++} bind def
++/charframe { % h string charframe -
++  gsave 0 setlinewidth
++  stringwidth pop exch dup 0 exch descent mul 1000 div neg rmoveto
++  currentpoint 4 -2 roll rectstroke grestore
++} bind def
++/pathframe { % string pathframe -
++  gsave 0 setlinewidth
++  true charpath flattenpath pathbbox box grestore
++} bind def
++/np {
++  /Helvetica findfont 11 scalefont setfont
++  LM BM 11 2 mul sub moveto title show ( - ) show F show
++  affix {
++    gsave /Helvetica findfont 5 scalefont setfont ( and ) show AF show grestore
++  } if
++  PW RM sub BM 11 2 mul sub moveto p 3 string cvs show
++  /p p 1 add def
++  showpage
++  /x LM def
++  /y PH TM sub def
++} bind def
++/nb {
++  /x x RW add def
++  x PW RM sub ge {
++    /x LM def
++    /y y RH sub def
++    y BM le {
++      np
++      /y PH TM sub def
++    } if
++  } if
++} bind def
++%%EndProlog
++/x LM def
++/y PH TM sub def
++/p 1 def
++[
++  %[0 7716]	% Adobe-GB1-0
++  %[0 9896]	% Adobe-GB1-0,1
++  %[0 22126]	% Adobe-GB1-0,1,2
++  %[0 22352]	% Adobe-GB1-0,1,2,3
++  [0 29063]	% Adobe-GB1-0,1,2,3,4
++] {
++  cvx exec 1 exch {
++    /id exch def
++    F FS fss
++    x y FS sub moveto
++    glyphshow- not {
++      id glyphshow
++      FS x glyphframe
++    } {
++      s 0 id 256 idiv put s 1 id 256 mod put
++      FS s charframe
++      s pathframe
++      s show
++    } ifelse
++    affix {
++      AF AFS fss
++      x FS add y FS sub moveto
++      glyphshow- not {
++        id glyphshow
++        AFS x FS add glyphframe
++      } {
++        AFS s charframe
++        s pathframe
++        s show
++      } ifelse
++    } if
++    %
++    /Times-Roman findfont 7 scalefont setfont
++    x y FS sub FS descent mul 1000 div sub 7 sub moveto
++    id 5 string cvs show
++    nb
++  } for
++  np
++} forall
++%%Trailer
++%%EOF
+diff -urNad ghostscript-8.61.dfsg.1~/examples/cjk/all_aj1.ps ghostscript-8.61.dfsg.1/examples/cjk/all_aj1.ps
+--- ghostscript-8.61.dfsg.1~/examples/cjk/all_aj1.ps	1970-01-01 09:00:00.000000000 +0900
++++ ghostscript-8.61.dfsg.1/examples/cjk/all_aj1.ps	2008-01-13 14:24:00.000000000 +0900
+@@ -0,0 +1,218 @@
++%!PS-Adobe-3.0
++%%Title: Adobe-Japan1 CID-Keyed Fonts Character List
++%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
++%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
++%%+ This script is part of GNU Ghostscript and is distributed under
++%%+ the terms of the GNU General Public License. See the file COPYING
++%%+ for more information.
++%%Version: 1.0
++%
++% Usage:
++%   gs [-sF=WadaMin-Regular] [-daffix [-sAF=HeiseiMin-W3]] \
++%      [-dglyphshow- [-sI=Identity-H]] [-ddescent=200] all_aj1.ps
++%
++%%DocumentMedia: A4 595 842 0 white ()
++%%EndComments
++%%BeginProlog
++
++/*gs-cjk (\
++------------------------------------------------------------------------\n\
++This is a script to test CJK fonts such as CID-keyed fonts.\n\
++If you have not done CID-keyed fonts installation and definitions at\n\
++/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
++this script can't work correctly.\n\
++For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
++
++If you throw this script into a printer, it requires PostScript 3\n\
++printer and CID-keyed fonts specified in this script.\n\
++------------------------------------------------------------------------\n) def
++
++/notice*stdout 4 dict begin
++  /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
++  currentdict
++end def
++
++/notice*page 5 dict begin
++  /*y 750 def
++  /*open {
++    gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
++    *y 750 eq {
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++    } if
++  } def
++  /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
++  /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
++  /*close { grestore } def
++  currentdict
++end def
++
++/greeting*gs-cjk {
++  product (Ghostscript) search not { pop } { pop pop pop QUIET not {
++    notice*stdout begin
++      *open
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++      *close
++    end
++  } if } ifelse
++} bind def
++greeting*gs-cjk
++
++/*findfont {
++  dup /Font resourcestatus { pop pop findfont } {
++    notice*page begin
++      *open
++      (Error in findfont: ) *echo-n dup *echo
++      *close
++    end
++    findfont
++  } ifelse
++} bind def
++
++/*CIDFont*findresource {
++  dup /CIDFont resourcestatus { pop pop /CIDFont findresource } {
++    notice*page begin
++      *open
++      (Error in /CIDFont findresource: ) *echo-n dup *echo
++      *close
++    end
++    /CIDFont findresource
++  } ifelse
++} bind def
++
++/orighandleerror errordict /handleerror get def
++errordict begin
++  /handleerror {
++    notice*page begin errordict begin $error begin
++      *open
++      (Error of ) *echo-n errorname dup length string cvs *echo
++      *close
++      showpage
++    end end end
++    orighandleerror
++  } bind def
++end
++
++/title (Adobe-Japan1 CID-Keyed Fonts Character List) def
++/PW 595 def
++/PH 842 def
++/LM 78 def
++/TM 130 def
++/RM 47 def
++/BM 76 def
++/NH 10 def
++/NV 12 def
++/RW PW LM RM add sub NH div def
++/RH PH TM BM add sub NV div def
++/FS RW 3 mul 4 div def
++/AFS RW 1 mul 4 div def
++/unknowndef { exch dup where { pop pop pop } { exch def } ifelse } bind def
++/F (HeiseiKakuGo-W5) unknowndef
++/affix false unknowndef
++/AF (HeiseiMin-W3) unknowndef
++/descent 130 unknowndef
++/glyphshow- false unknowndef
++/fss { exch *CIDFont*findresource exch scalefont setfont } bind def
++/concats { % [str ...] concats str
++  () exch dup length 1 sub -1 0 {
++    1 index exch get dup type /stringtype ne { dup length string cvs } if
++    3 -1 roll exch dup length 2 index length add string
++    dup dup 4 2 roll copy length 4 -1 roll putinterval exch
++  } for pop
++} bind def
++/composefontname { % font cmap composefontname font--cmap
++  [ 2 index (--) 3 index ] concats dup 3 -1 roll [ 5 -1 roll ] composefont pop
++} bind def
++glyphshow- {
++  /I (Identity-H) unknowndef
++  /F F I composefontname def
++  affix { /AF AF I composefontname def } if
++  /fss { exch *findfont exch scalefont setfont } bind def
++  /s 2 string def
++} if
++/glyphframe { % h oldx glyphframe -
++  gsave 0 setlinewidth
++  currentpoint pop sub exch dup 0 exch descent mul 1000 div neg rmoveto
++  currentpoint 4 -2 roll rectstroke grestore
++} bind def
++/box { % llx lly urx ury box -
++  3 index 3 index moveto exch 4 -1 roll sub 3 1 roll exch sub
++  currentpoint 4 -2 roll rectstroke
++} bind def
++/charframe { % h string charframe -
++  gsave 0 setlinewidth
++  stringwidth pop exch dup 0 exch descent mul 1000 div neg rmoveto
++  currentpoint 4 -2 roll rectstroke grestore
++} bind def
++/pathframe { % string pathframe -
++  gsave 0 setlinewidth
++  true charpath flattenpath pathbbox box grestore
++} bind def
++/np {
++  /Helvetica findfont 11 scalefont setfont
++  LM BM 11 2 mul sub moveto title show ( - ) show F show
++  affix {
++    gsave /Helvetica findfont 5 scalefont setfont ( and ) show AF show grestore
++  } if
++  PW RM sub BM 11 2 mul sub moveto p 3 string cvs show
++  /p p 1 add def
++  showpage
++  /x LM def
++  /y PH TM sub def
++} bind def
++/nb {
++  /x x RW add def
++  x PW RM sub ge {
++    /x LM def
++    /y y RH sub def
++    y BM le {
++      np
++      /y PH TM sub def
++    } if
++  } if
++} bind def
++%%EndProlog
++/x LM def
++/y PH TM sub def
++/p 1 def
++[
++  [0 8283]	% Adobe-Japan1-0
++  [8284 8358]	% Adobe-Japan1-1
++  [8359 8719]	% Adobe-Japan1-2
++  [8720 9353]	% Adobe-Japan1-3
++  [9354 15443]	% Adobe-Japan1-4
++] {
++  cvx exec 1 exch {
++    /id exch def
++    F FS fss
++    x y FS sub moveto
++    glyphshow- not {
++      id glyphshow
++      FS x glyphframe
++    } {
++      s 0 id 256 idiv put s 1 id 256 mod put
++      FS s charframe
++      s pathframe
++      s show
++    } ifelse
++    affix {
++      AF AFS fss
++      x FS add y FS sub moveto
++      glyphshow- not {
++        id glyphshow
++        AFS x FS add glyphframe
++      } {
++        AFS s charframe
++        s pathframe
++        s show
++      } ifelse
++    } if
++    %
++    /Times-Roman findfont 7 scalefont setfont
++    x y FS sub FS descent mul 1000 div sub 7 sub moveto
++    id 5 string cvs show
++    nb
++  } for
++  np
++} forall
++%%Trailer
++%%EOF
+diff -urNad ghostscript-8.61.dfsg.1~/examples/cjk/all_aj2.ps ghostscript-8.61.dfsg.1/examples/cjk/all_aj2.ps
+--- ghostscript-8.61.dfsg.1~/examples/cjk/all_aj2.ps	1970-01-01 09:00:00.000000000 +0900
++++ ghostscript-8.61.dfsg.1/examples/cjk/all_aj2.ps	2008-01-13 14:24:00.000000000 +0900
+@@ -0,0 +1,214 @@
++%!PS-Adobe-3.0
++%%Title: Adobe-Japan2 CID-Keyed Fonts Character List
++%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
++%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
++%%+ This script is part of GNU Ghostscript and is distributed under
++%%+ the terms of the GNU General Public License. See the file COPYING
++%%+ for more information.
++%%Version: 1.0
++%
++% Usage:
++%   gs [-sF=HeiseiMin-W3H] [-daffix [-sAF=WadaMin-RegularH]] \
++%      [-dglyphshow- [-sI=Identity-H]] [-ddescent=200] all_aj2.ps
++%
++%%DocumentMedia: A4 595 842 0 white ()
++%%EndComments
++%%BeginProlog
++
++/*gs-cjk (\
++------------------------------------------------------------------------\n\
++This is a script to test CJK fonts such as CID-keyed fonts.\n\
++If you have not done CID-keyed fonts installation and definitions at\n\
++/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
++this script can't work correctly.\n\
++For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
++
++If you throw this script into a printer, it requires PostScript 3\n\
++printer and CID-keyed fonts specified in this script.\n\
++------------------------------------------------------------------------\n) def
++
++/notice*stdout 4 dict begin
++  /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
++  currentdict
++end def
++
++/notice*page 5 dict begin
++  /*y 750 def
++  /*open {
++    gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
++    *y 750 eq {
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++    } if
++  } def
++  /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
++  /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
++  /*close { grestore } def
++  currentdict
++end def
++
++/greeting*gs-cjk {
++  product (Ghostscript) search not { pop } { pop pop pop QUIET not {
++    notice*stdout begin
++      *open
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++      *close
++    end
++  } if } ifelse
++} bind def
++greeting*gs-cjk
++
++/*findfont {
++  dup /Font resourcestatus { pop pop findfont } {
++    notice*page begin
++      *open
++      (Error in findfont: ) *echo-n dup *echo
++      *close
++    end
++    findfont
++  } ifelse
++} bind def
++
++/*CIDFont*findresource {
++  dup /CIDFont resourcestatus { pop pop /CIDFont findresource } {
++    notice*page begin
++      *open
++      (Error in /CIDFont findresource: ) *echo-n dup *echo
++      *close
++    end
++    /CIDFont findresource
++  } ifelse
++} bind def
++
++/orighandleerror errordict /handleerror get def
++errordict begin
++  /handleerror {
++    notice*page begin errordict begin $error begin
++      *open
++      (Error of ) *echo-n errorname dup length string cvs *echo
++      *close
++      showpage
++    end end end
++    orighandleerror
++  } bind def
++end
++
++/title (Adobe-Japan2 CID-Keyed Fonts Character List) def
++/PW 595 def
++/PH 842 def
++/LM 78 def
++/TM 130 def
++/RM 47 def
++/BM 76 def
++/NH 10 def
++/NV 12 def
++/RW PW LM RM add sub NH div def
++/RH PH TM BM add sub NV div def
++/FS RW 3 mul 4 div def
++/AFS RW 1 mul 4 div def
++/unknowndef { exch dup where { pop pop pop } { exch def } ifelse } bind def
++/F (WadaMin-RegularH) unknowndef
++/affix false unknowndef
++/AF (HeiseiMin-W3H) unknowndef
++/descent 130 unknowndef
++/glyphshow- false unknowndef
++/fss { exch *CIDFont*findresource exch scalefont setfont } bind def
++/concats { % [str ...] concats str
++  () exch dup length 1 sub -1 0 {
++    1 index exch get dup type /stringtype ne { dup length string cvs } if
++    3 -1 roll exch dup length 2 index length add string
++    dup dup 4 2 roll copy length 4 -1 roll putinterval exch
++  } for pop
++} bind def
++/composefontname { % font cmap composefontname font--cmap
++  [ 2 index (--) 3 index ] concats dup 3 -1 roll [ 5 -1 roll ] composefont pop
++} bind def
++glyphshow- {
++  /I (Identity-H) unknowndef
++  /F F I composefontname def
++  affix { /AF AF I composefontname def } if
++  /fss { exch *findfont exch scalefont setfont } bind def
++  /s 2 string def
++} if
++/glyphframe { % h oldx glyphframe -
++  gsave 0 setlinewidth
++  currentpoint pop sub exch dup 0 exch descent mul 1000 div neg rmoveto
++  currentpoint 4 -2 roll rectstroke grestore
++} bind def
++/box { % llx lly urx ury box -
++  3 index 3 index moveto exch 4 -1 roll sub 3 1 roll exch sub
++  currentpoint 4 -2 roll rectstroke
++} bind def
++/charframe { % h string charframe -
++  gsave 0 setlinewidth
++  stringwidth pop exch dup 0 exch descent mul 1000 div neg rmoveto
++  currentpoint 4 -2 roll rectstroke grestore
++} bind def
++/pathframe { % string pathframe -
++  gsave 0 setlinewidth
++  true charpath flattenpath pathbbox box grestore
++} bind def
++/np {
++  /Helvetica findfont 11 scalefont setfont
++  LM BM 11 2 mul sub moveto title show ( - ) show F show
++  affix {
++    gsave /Helvetica findfont 5 scalefont setfont ( and ) show AF show grestore
++  } if
++  PW RM sub BM 11 2 mul sub moveto p 3 string cvs show
++  /p p 1 add def
++  showpage
++  /x LM def
++  /y PH TM sub def
++} bind def
++/nb {
++  /x x RW add def
++  x PW RM sub ge {
++    /x LM def
++    /y y RH sub def
++    y BM le {
++      np
++      /y PH TM sub def
++    } if
++  } if
++} bind def
++%%EndProlog
++/x LM def
++/y PH TM sub def
++/p 1 def
++[
++  [0 6067]	% Adobe-Japan2-0
++] {
++  cvx exec 1 exch {
++    /id exch def
++    F FS fss
++    x y FS sub moveto
++    glyphshow- not {
++      id glyphshow
++      FS x glyphframe
++    } {
++      s 0 id 256 idiv put s 1 id 256 mod put
++      FS s charframe
++      s pathframe
++      s show
++    } ifelse
++    affix {
++      AF AFS fss
++      x FS add y FS sub moveto
++      glyphshow- not {
++        id glyphshow
++        AFS x FS add glyphframe
++      } {
++        AFS s charframe
++        s pathframe
++        s show
++      } ifelse
++    } if
++    %
++    /Times-Roman findfont 7 scalefont setfont
++    x y FS sub FS descent mul 1000 div sub 7 sub moveto
++    id 5 string cvs show
++    nb
++  } for
++  np
++} forall
++%%Trailer
++%%EOF
+diff -urNad ghostscript-8.61.dfsg.1~/examples/cjk/all_ak1.ps ghostscript-8.61.dfsg.1/examples/cjk/all_ak1.ps
+--- ghostscript-8.61.dfsg.1~/examples/cjk/all_ak1.ps	1970-01-01 09:00:00.000000000 +0900
++++ ghostscript-8.61.dfsg.1/examples/cjk/all_ak1.ps	2008-01-13 14:24:00.000000000 +0900
+@@ -0,0 +1,215 @@
++%!PS-Adobe-3.0
++%%Title: Adobe-Korea1 CID-Keyed Fonts Character List
++%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
++%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
++%%+ This script is part of GNU Ghostscript and is distributed under
++%%+ the terms of the GNU General Public License. See the file COPYING
++%%+ for more information.
++%%Version: 1.0
++%
++% Usage:
++%   gs [-sF=MunhwaGothic-Regular] [-daffix [-sAF=HYGoThic-Medium]] \
++%      [-dglyphshow- [-sI=Identity-H]] [-ddescent=200] all_ak1.ps
++%
++%%DocumentMedia: A4 595 842 0 white ()
++%%EndComments
++%%BeginProlog
++
++/*gs-cjk (\
++------------------------------------------------------------------------\n\
++This is a script to test CJK fonts such as CID-keyed fonts.\n\
++If you have not done CID-keyed fonts installation and definitions at\n\
++/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
++this script can't work correctly.\n\
++For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
++
++If you throw this script into a printer, it requires PostScript 3\n\
++printer and CID-keyed fonts specified in this script.\n\
++------------------------------------------------------------------------\n) def
++
++/notice*stdout 4 dict begin
++  /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
++  currentdict
++end def
++
++/notice*page 5 dict begin
++  /*y 750 def
++  /*open {
++    gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
++    *y 750 eq {
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++    } if
++  } def
++  /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
++  /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
++  /*close { grestore } def
++  currentdict
++end def
++
++/greeting*gs-cjk {
++  product (Ghostscript) search not { pop } { pop pop pop QUIET not {
++    notice*stdout begin
++      *open
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++      *close
++    end
++  } if } ifelse
++} bind def
++greeting*gs-cjk
++
++/*findfont {
++  dup /Font resourcestatus { pop pop findfont } {
++    notice*page begin
++      *open
++      (Error in findfont: ) *echo-n dup *echo
++      *close
++    end
++    findfont
++  } ifelse
++} bind def
++
++/*CIDFont*findresource {
++  dup /CIDFont resourcestatus { pop pop /CIDFont findresource } {
++    notice*page begin
++      *open
++      (Error in /CIDFont findresource: ) *echo-n dup *echo
++      *close
++    end
++    /CIDFont findresource
++  } ifelse
++} bind def
++
++/orighandleerror errordict /handleerror get def
++errordict begin
++  /handleerror {
++    notice*page begin errordict begin $error begin
++      *open
++      (Error of ) *echo-n errorname dup length string cvs *echo
++      *close
++      showpage
++    end end end
++    orighandleerror
++  } bind def
++end
++
++/title (Adobe-Korea1 CID-Keyed Fonts Character List) def
++/PW 595 def
++/PH 842 def
++/LM 78 def
++/TM 130 def
++/RM 47 def
++/BM 76 def
++/NH 10 def
++/NV 12 def
++/RW PW LM RM add sub NH div def
++/RH PH TM BM add sub NV div def
++/FS RW 3 mul 4 div def
++/AFS RW 1 mul 4 div def
++/unknowndef { exch dup where { pop pop pop } { exch def } ifelse } bind def
++/F (HYGoThic-Medium) unknowndef
++/affix false unknowndef
++/AF (HYSMyeongJo-Medium) unknowndef
++/descent 130 unknowndef
++/glyphshow- false unknowndef
++/fss { exch *CIDFont*findresource exch scalefont setfont } bind def
++/concats { % [str ...] concats str
++  () exch dup length 1 sub -1 0 {
++    1 index exch get dup type /stringtype ne { dup length string cvs } if
++    3 -1 roll exch dup length 2 index length add string
++    dup dup 4 2 roll copy length 4 -1 roll putinterval exch
++  } for pop
++} bind def
++/composefontname { % font cmap composefontname font--cmap
++  [ 2 index (--) 3 index ] concats dup 3 -1 roll [ 5 -1 roll ] composefont pop
++} bind def
++glyphshow- {
++  /I (Identity-H) unknowndef
++  /F F I composefontname def
++  affix { /AF AF I composefontname def } if
++  /fss { exch *findfont exch scalefont setfont } bind def
++  /s 2 string def
++} if
++/glyphframe { % h oldx glyphframe -
++  gsave 0 setlinewidth
++  currentpoint pop sub exch dup 0 exch descent mul 1000 div neg rmoveto
++  currentpoint 4 -2 roll rectstroke grestore
++} bind def
++/box { % llx lly urx ury box -
++  3 index 3 index moveto exch 4 -1 roll sub 3 1 roll exch sub
++  currentpoint 4 -2 roll rectstroke
++} bind def
++/charframe { % h string charframe -
++  gsave 0 setlinewidth
++  stringwidth pop exch dup 0 exch descent mul 1000 div neg rmoveto
++  currentpoint 4 -2 roll rectstroke grestore
++} bind def
++/pathframe { % string pathframe -
++  gsave 0 setlinewidth
++  true charpath flattenpath pathbbox box grestore
++} bind def
++/np {
++  /Helvetica findfont 11 scalefont setfont
++  LM BM 11 2 mul sub moveto title show ( - ) show F show
++  affix {
++    gsave /Helvetica findfont 5 scalefont setfont ( and ) show AF show grestore
++  } if
++  PW RM sub BM 11 2 mul sub moveto p 3 string cvs show
++  /p p 1 add def
++  showpage
++  /x LM def
++  /y PH TM sub def
++} bind def
++/nb {
++  /x x RW add def
++  x PW RM sub ge {
++    /x LM def
++    /y y RH sub def
++    y BM le {
++      np
++      /y PH TM sub def
++    } if
++  } if
++} bind def
++%%EndProlog
++/x LM def
++/y PH TM sub def
++/p 1 def
++[
++  [0 9332]	% Adobe-Korea1-0
++  [9333 18351]	% Adobe-Korea1-1,2
++] {
++  cvx exec 1 exch {
++    /id exch def
++    F FS fss
++    x y FS sub moveto
++    glyphshow- not {
++      id glyphshow
++      FS x glyphframe
++    } {
++      s 0 id 256 idiv put s 1 id 256 mod put
++      FS s charframe
++      s pathframe
++      s show
++    } ifelse
++    affix {
++      AF AFS fss
++      x FS add y FS sub moveto
++      glyphshow- not {
++        id glyphshow
++        AFS x FS add glyphframe
++      } {
++        AFS s charframe
++        s pathframe
++        s show
++      } ifelse
++    } if
++    %
++    /Times-Roman findfont 7 scalefont setfont
++    x y FS sub FS descent mul 1000 div sub 7 sub moveto
++    id 5 string cvs show
++    nb
++  } for
++  np
++} forall
++%%Trailer
++%%EOF
+diff -urNad ghostscript-8.61.dfsg.1~/examples/cjk/article9.ps ghostscript-8.61.dfsg.1/examples/cjk/article9.ps
+--- ghostscript-8.61.dfsg.1~/examples/cjk/article9.ps	1970-01-01 09:00:00.000000000 +0900
++++ ghostscript-8.61.dfsg.1/examples/cjk/article9.ps	2008-01-13 14:24:00.000000000 +0900
+@@ -0,0 +1,103 @@
++%!PS-Adobe-2.0
++%
++% Article 9 of the Constitution of Japan 
++% written in vertical direction using ...
++%	Fonts:
++%		Ryumin-Light-V, GothicBBB-Medium-V
++%	Operators for characters:
++%		show, widthshow, ashow, stringwidth, charpath, cshow
++
++% (lib/cjkv/cjk_ttf.ps) runlibfile
++% (lib/cjkv/cjkfnmap.ps) runlibfile
++% /Ryumin-Light      (Resource/FreeTT/sazanami-mincho.ttf) .openttcidfont /CIDFont defineresource pop
++% /GothicBBB-Medium  (Resource/FreeTT/sazanami-gothic.ttf) .openttcidfont /CIDFont defineresource pop
++
++
++% constants
++
++/RIGHT	550 def
++/WIDTH	500 def
++/TOP	750 def
++/HEIGHT	700 def
++/SIZE	 20 def
++/MARGIN	 40 def
++
++% utility operators
++
++/GOTHIC { /GothicBBB-Medium-V findfont exch dup
++	  /FONTSIZE exch def scalefont setfont } def
++/RYUMIN { /Ryumin-Light-V findfont exch dup
++	  /FONTSIZE exch def scalefont setfont } def
++/NEXTLINE { currentpoint pop FONTSIZE 1.8 mul sub TOP MARGIN sub moveto } def
++
++/MARU { dup gsave false charpath flattenpath pathbbox grestore
++	/ury exch def /urx exch def /lly exch def /llx exch def
++	gsave llx urx add 2 div lly ury add 2 div translate 
++	urx llx sub ury lly sub 2 copy gt { pop }{ exch pop }ifelse 
++	1.2 mul dup scale 0 setlinewidth
++	0.5 0 moveto 0 0 0.5 0 360 arc stroke grestore show } def
++/STRLEN { 0 exch { pop pop pop 1 add } exch cshow } def
++/JUSTIFY { dup STRLEN 1 sub 1 index stringwidth exch pop 
++	   currentpoint exch pop add TOP HEIGHT MARGIN sub sub sub
++	   exch div neg 0 exch 3 -1 roll ashow } def
++
++% initialize
++
++RIGHT TOP moveto 0 HEIGHT neg rlineto WIDTH neg 0 rlineto 0 HEIGHT rlineto
++closepath stroke
++
++RIGHT MARGIN sub TOP MARGIN sub moveto
++
++% title
++
++SIZE 2 mul GOTHIC
++<2121467C4B5C3971377B4B21> show
++NEXTLINE
++
++% chapter
++
++SIZE 1.5 mul GOTHIC
++<21212121426846733E4F2121> show
++
++SIZE 1.5 mul RYUMIN
++<406F4168244E4A7C347E> show
++NEXTLINE
++
++% abstract
++
++SIZE GOTHIC
++0 SIZE 2 div 16#2122 <2121214C406F4168244E4A7C347E2122406F4E4F244E49544A5D3B7D
++21223872406F3822244E485D4727214D> widthshow
++NEXTLINE
++
++% sentence
++
++SIZE GOTHIC
++<426836653E72> show
++SIZE RYUMIN
++<2331> MARU
++<2121467C4B5C39714C31244F212240353541244843613D7824723470443424482439246B39713A
++5D> JUSTIFY
++NEXTLINE
++
++<4A3F4F422472403F3C42244B347535612437212239713822244E482F4630243F246B406F416824
++48212249704E4F244B2468246B> JUSTIFY
++NEXTLINE
++
++<305233454B74244F49704E4F244E39543B48244F212239713A5D4A364168247232723768243924
++6B3C6A434A244824372446> JUSTIFY
++NEXTLINE
++
++<244F2122314A3557244B2433246C24724A7C347E2439246B2123> show
++NEXTLINE
++
++<2332> MARU
++<212141303960244E4C5C452A247243232439246B243F246121224E26332436753733243D244E42
++3E244E406F4E4F> JUSTIFY
++NEXTLINE
++
++<244F21222433246C24724A5D3B7D2437244A242421233971244E3872406F3822244F2122243324
++6C247247272461244A24242123> show
++NEXTLINE
++
++showpage
+diff -urNad ghostscript-8.61.dfsg.1~/examples/cjk/gscjk_ac.ps ghostscript-8.61.dfsg.1/examples/cjk/gscjk_ac.ps
+--- ghostscript-8.61.dfsg.1~/examples/cjk/gscjk_ac.ps	1970-01-01 09:00:00.000000000 +0900
++++ ghostscript-8.61.dfsg.1/examples/cjk/gscjk_ac.ps	2008-01-13 14:24:00.000000000 +0900
+@@ -0,0 +1,120 @@
++%!PS-Adobe-3.0
++%%Title: chinese-big5 encoding
++%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
++%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
++%%+ This script is part of GNU Ghostscript and is distributed under
++%%+ the terms of the GNU General Public License. See the file COPYING
++%%+ for more information.
++%%BoundingBox: 30 150 530 650
++%%EndComments
++%%BeginProlog
++
++/*gs-cjk (\
++------------------------------------------------------------------------\n\
++This is a script to test CJK fonts such as CID-keyed fonts.\n\
++If you have not done CID-keyed fonts installation and definitions at\n\
++/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
++this script can't work correctly.\n\
++For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
++
++If you throw this script into a printer, it requires PostScript 3\n\
++printer and CID-keyed fonts specified in this script.\n\
++------------------------------------------------------------------------\n) def
++
++/notice*stdout 4 dict begin
++  /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
++  currentdict
++end def
++
++/notice*page 5 dict begin
++  /*y 750 def
++  /*open {
++    gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
++    *y 750 eq {
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++    } if
++  } def
++  /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
++  /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
++  /*close { grestore } def
++  currentdict
++end def
++
++/greeting*gs-cjk {
++  product (Ghostscript) search not { pop } { pop pop pop QUIET not {
++    notice*stdout begin
++      *open
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++      *close
++    end
++  } if } ifelse
++} bind def
++greeting*gs-cjk
++
++/*findfont {
++  dup /Font resourcestatus { pop pop findfont } {
++    notice*page begin
++      *open
++      (Error in findfont: ) *echo-n dup *echo
++      *close
++    end
++    findfont
++  } ifelse
++} bind def
++
++/orighandleerror errordict /handleerror get def
++errordict begin
++  /handleerror {
++    notice*page begin errordict begin $error begin
++      *open
++      (Error of ) *echo-n errorname dup length string cvs *echo
++      *close
++      showpage
++    end end end
++    orighandleerror
++  } bind def
++end
++%%EndProlog
++/MSung-Light--B5-V *findfont 25 scalefont setfont
++500 625 moveto
++(FcrgL) show
++/MSung-Light--B5-H *findfont 25 scalefont setfont
++50 600 moveto
++(F Ghostscript) show
++50 550 moveto
++(cr Traditional Chinese) show
++50 500 moveto
++(g horizontal writing) show
++50 450 moveto
++(L Print) show
++%
++/MSung-Light--B5-V *findfont [ 1 .3 0 1 0 0 ] makefont 20 scalefont setfont
++100 275 moveto 20 2 div 0 rmoveto
++() dup stringwidth neg rmoveto show
++/MSung-Light--B5-H *findfont [ 1 0 .3 1 0 0 ] makefont 20 scalefont setfont
++100 250 moveto
++( Italic transformation) show
++%
++/MSung-Light--B5-H *findfont 20 scalefont setfont
++150 400 moveto
++(Sung Typeface ) show
++/MSung-Medium--B5-H *findfont 20 scalefont setfont
++150 375 moveto
++(Sung Medium Typeface ) show
++/MHei-Medium--B5-H *findfont 20 scalefont setfont
++150 350 moveto
++(Hei Typeface ) show
++/MKai-Medium--B5-H *findfont 20 scalefont setfont
++150 325 moveto
++(Kai Typeface {) show
++%
++/Times-Roman findfont 13 scalefont setfont
++50 200 moveto
++(* Chinese translation of "Ghostscript" is merely associative \
++characters of these meanings.) show
++50 200 13 sub moveto
++(In Traditional Chinese articles, customarily we use just \
++"Ghostscript" as it is.) show
++showpage
++%%Trailer
++%%EOF
+diff -urNad ghostscript-8.61.dfsg.1~/examples/cjk/gscjk_ag.ps ghostscript-8.61.dfsg.1/examples/cjk/gscjk_ag.ps
+--- ghostscript-8.61.dfsg.1~/examples/cjk/gscjk_ag.ps	1970-01-01 09:00:00.000000000 +0900
++++ ghostscript-8.61.dfsg.1/examples/cjk/gscjk_ag.ps	2008-01-13 14:24:15.000000000 +0900
+@@ -0,0 +1,120 @@
++%!PS-Adobe-3.0
++%%Title: euc-china encoding
++%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
++%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
++%%+ This script is part of GNU Ghostscript and is distributed under
++%%+ the terms of the GNU General Public License. See the file COPYING
++%%+ for more information.
++%%BoundingBox: 30 150 530 650
++%%EndComments
++%%BeginProlog
++
++/*gs-cjk (\
++------------------------------------------------------------------------\n\
++This is a script to test CJK fonts such as CID-keyed fonts.\n\
++If you have not done CID-keyed fonts installation and definitions at\n\
++/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
++this script can't work correctly.\n\
++For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
++
++If you throw this script into a printer, it requires PostScript 3\n\
++printer and CID-keyed fonts specified in this script.\n\
++------------------------------------------------------------------------\n) def
++
++/notice*stdout 4 dict begin
++  /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
++  currentdict
++end def
++
++/notice*page 5 dict begin
++  /*y 750 def
++  /*open {
++    gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
++    *y 750 eq {
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++    } if
++  } def
++  /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
++  /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
++  /*close { grestore } def
++  currentdict
++end def
++
++/greeting*gs-cjk {
++  product (Ghostscript) search not { pop } { pop pop pop QUIET not {
++    notice*stdout begin
++      *open
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++      *close
++    end
++  } if } ifelse
++} bind def
++greeting*gs-cjk
++
++/*findfont {
++  dup /Font resourcestatus { pop pop findfont } {
++    notice*page begin
++      *open
++      (Error in findfont: ) *echo-n dup *echo
++      *close
++    end
++    findfont
++  } ifelse
++} bind def
++
++/orighandleerror errordict /handleerror get def
++errordict begin
++  /handleerror {
++    notice*page begin errordict begin $error begin
++      *open
++      (Error of ) *echo-n errorname dup length string cvs *echo
++      *close
++      showpage
++    end end end
++    orighandleerror
++  } bind def
++end
++%%EndProlog
++/STSong-Light--GB-EUC-V *findfont 25 scalefont setfont
++500 625 moveto
++(ļֱдӡˢ) show
++/STSong-Light--GB-EUC-H *findfont 25 scalefont setfont
++50 600 moveto
++( Ghostscript) show	
++50 550 moveto
++(ļ Simplified Chinese) show
++50 500 moveto
++(д horizontal writing) show
++50 450 moveto
++(ӡˢ Print) show
++%
++/STSong-Light--GB-EUC-V *findfont [ 1 .3 0 1 0 0 ] makefont 20 scalefont setfont
++100 275 moveto 20 2 div 0 rmoveto
++(б) dup stringwidth neg rmoveto show
++/STSong-Light--GB-EUC-H *findfont [ 1 0 .3 1 0 0 ] makefont 20 scalefont setfont
++100 250 moveto
++(б Italic transformation) show
++%
++/STSong-Light--GB-EUC-H *findfont 20 scalefont setfont
++150 400 moveto
++(Song Typeface ) show
++/STFangsong-Light--GB-EUC-H *findfont 20 scalefont setfont
++150 375 moveto
++(Fangsong Typeface ) show
++/STHeiti-Regular--GB-EUC-H *findfont 20 scalefont setfont
++150 350 moveto
++(Hei Typeface ) show
++/STKaiti-Regular--GB-EUC-H *findfont 20 scalefont setfont
++150 325 moveto
++(Kai Typeface ) show
++%
++/Times-Roman findfont 13 scalefont setfont
++50 200 moveto
++(* Chinese translation of "Ghostscript" is merely associative \
++characters of these meanings.) show
++50 200 13 sub moveto
++(In Simplified Chinese articles, customarily we use just "Ghostscript" \
++as it is.) show
++showpage
++%%Trailer
++%%EOF
+diff -urNad ghostscript-8.61.dfsg.1~/examples/cjk/gscjk_aj.ps ghostscript-8.61.dfsg.1/examples/cjk/gscjk_aj.ps
+--- ghostscript-8.61.dfsg.1~/examples/cjk/gscjk_aj.ps	1970-01-01 09:00:00.000000000 +0900
++++ ghostscript-8.61.dfsg.1/examples/cjk/gscjk_aj.ps	2008-01-13 14:24:00.000000000 +0900
+@@ -0,0 +1,114 @@
++%!PS-Adobe-3.0
++%%Title: japanese-shift-jis encoding
++%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
++%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
++%%+ This script is part of GNU Ghostscript and is distributed under
++%%+ the terms of the GNU General Public License. See the file COPYING
++%%+ for more information.
++%%BoundingBox: 30 150 530 650
++%%EndComments
++%%BeginProlog
++
++/*gs-cjk (\
++------------------------------------------------------------------------\n\
++This is a script to test CJK fonts such as CID-keyed fonts.\n\
++If you have not done CID-keyed fonts installation and definitions at\n\
++/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
++this script can't work correctly.\n\
++For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
++
++If you throw this script into a printer, it requires PostScript 3\n\
++printer and CID-keyed fonts specified in this script.\n\
++------------------------------------------------------------------------\n) def
++
++/notice*stdout 4 dict begin
++  /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
++  currentdict
++end def
++
++/notice*page 5 dict begin
++  /*y 750 def
++  /*open {
++    gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
++    *y 750 eq {
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++    } if
++  } def
++  /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
++  /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
++  /*close { grestore } def
++  currentdict
++end def
++
++/greeting*gs-cjk {
++  product (Ghostscript) search not { pop } { pop pop pop QUIET not {
++    notice*stdout begin
++      *open
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++      *close
++    end
++  } if } ifelse
++} bind def
++greeting*gs-cjk
++
++/*findfont {
++  dup /Font resourcestatus { pop pop findfont } {
++    notice*page begin
++      *open
++      (Error in findfont: ) *echo-n dup *echo
++      *close
++    end
++    findfont
++  } ifelse
++} bind def
++
++/orighandleerror errordict /handleerror get def
++errordict begin
++  /handleerror {
++    notice*page begin errordict begin $error begin
++      *open
++      (Error of ) *echo-n errorname dup length string cvs *echo
++      *close
++      showpage
++    end end end
++    orighandleerror
++  } bind def
++end
++%%EndProlog
++/Ryumin-Light-RKSJ-V *findfont 25 scalefont setfont
++500 625 moveto
++(M { c ) show
++/Ryumin-Light-RKSJ-H *findfont 25 scalefont setfont
++50 600 moveto
++(M Ghostscript) show
++50 550 moveto
++({ Japanese) show
++50 500 moveto
++( horizontal writing) show
++50 450 moveto
++( Print) show
++%
++/Ryumin-Light-RKSJ-V *findfont [ 1 .3 0 1 0 0 ] makefont 20 scalefont setfont
++100 275 moveto 20 2 div 0 rmoveto
++(Α) dup stringwidth neg rmoveto show
++/Ryumin-Light-RKSJ-H *findfont [ 1 0 .3 1 0 0 ] makefont 20 scalefont setfont
++100 250 moveto
++(Α Italic transformation) show
++%
++/Ryumin-Light-RKSJ-H *findfont 20 scalefont setfont
++150 400 moveto
++(Mincho Typeface ) show
++/GothicBBB-Medium-RKSJ-H *findfont 20 scalefont setfont
++150 375 moveto
++(Gothic Typeface SVbN) show
++%
++/Times-Roman findfont 13 scalefont setfont
++50 200 moveto
++(* Japanese translation of "Ghostscript" is merely associative \
++characters of these meanings.) show
++50 200 13 sub moveto
++(In Japanese articles, customarily we use just "Ghostscript" as it \
++is.) show
++showpage
++%%Trailer
++%%EOF
+diff -urNad ghostscript-8.61.dfsg.1~/examples/cjk/gscjk_ak.ps ghostscript-8.61.dfsg.1/examples/cjk/gscjk_ak.ps
+--- ghostscript-8.61.dfsg.1~/examples/cjk/gscjk_ak.ps	1970-01-01 09:00:00.000000000 +0900
++++ ghostscript-8.61.dfsg.1/examples/cjk/gscjk_ak.ps	2008-01-13 14:24:00.000000000 +0900
+@@ -0,0 +1,116 @@
++%!PS-Adobe-3.0
++%%Title: euc-korea encoding
++%%Creator: Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
++%%Copyright: (C) 2001 Taiji Yamada and gs-cjk project
++%%+ This script is part of GNU Ghostscript and is distributed under
++%%+ the terms of the GNU General Public License. See the file COPYING
++%%+ for more information.
++%%BoundingBox: 30 150 530 650
++%%EndComments
++%%BeginProlog
++
++/*gs-cjk (\
++------------------------------------------------------------------------\n\
++This is a script to test CJK fonts such as CID-keyed fonts.\n\
++If you have not done CID-keyed fonts installation and definitions at\n\
++/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
++this script can't work correctly.\n\
++For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
++
++If you throw this script into a printer, it requires PostScript 3\n\
++printer and CID-keyed fonts specified in this script.\n\
++------------------------------------------------------------------------\n) def
++
++/notice*stdout 4 dict begin
++  /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
++  currentdict
++end def
++
++/notice*page 5 dict begin
++  /*y 750 def
++  /*open {
++    gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
++    *y 750 eq {
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++    } if
++  } def
++  /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
++  /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
++  /*close { grestore } def
++  currentdict
++end def
++
++/greeting*gs-cjk {
++  product (Ghostscript) search not { pop } { pop pop pop QUIET not {
++    notice*stdout begin
++      *open
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++      *close
++    end
++  } if } ifelse
++} bind def
++greeting*gs-cjk
++
++/*findfont {
++  dup /Font resourcestatus { pop pop findfont } {
++    notice*page begin
++      *open
++      (Error in findfont: ) *echo-n dup *echo
++      *close
++    end
++    findfont
++  } ifelse
++} bind def
++
++/orighandleerror errordict /handleerror get def
++errordict begin
++  /handleerror {
++    notice*page begin errordict begin $error begin
++      *open
++      (Error of ) *echo-n errorname dup length string cvs *echo
++      *close
++      showpage
++    end end end
++    orighandleerror
++  } bind def
++end
++%%EndProlog
++/HYSMyeongJo-Medium--KSC-EUC-V *findfont 25 scalefont setfont
++500 625 moveto
++(ѱ ξ μ) show
++/HYSMyeongJo-Medium--KSC-EUC-H *findfont 25 scalefont setfont
++50 600 moveto
++(Ghostscript) show
++50 550 moveto
++(ѱ Korean) show
++50 500 moveto
++(ξ horizontal writing) show
++50 450 moveto
++(μ Print) show
++%
++/HYSMyeongJo-Medium--KSC-EUC-V *findfont [ 1 .3 0 1 0 0 ] makefont 20 scalefont setfont
++100 275 moveto 20 2 div 0 rmoveto
++(Ӳ) dup stringwidth neg rmoveto show
++/HYSMyeongJo-Medium--KSC-EUC-H *findfont [ 1 0 .3 1 0 0 ] makefont 20 scalefont setfont
++100 250 moveto
++(Ӳ Italic transformation) show
++%
++/HYSMyeongJo-Medium--KSC-EUC-H *findfont 20 scalefont setfont
++150 400 moveto
++(MyeongJo Typeface ) show
++/HYGoThic-Medium--KSC-EUC-H *findfont 20 scalefont setfont
++150 375 moveto
++(Gothic Typeface  show
++/HYRGoThic-Medium--KSC-EUC-H *findfont 20 scalefont setfont
++150 350 moveto
++(Rounded Gothic Typeface ձٰ show
++%
++/Times-Roman findfont 13 scalefont setfont
++50 200 moveto
++(* Korean translation of "Ghostscript" is merely associative \
++characters of these meanings.) show
++50 200 13 sub moveto
++(In Korean articles, customarily we use just "Ghostscript" as it is.) show
++showpage
++%%Trailer
++%%EOF
+diff -urNad ghostscript-8.61.dfsg.1~/examples/cjk/iso2022.ps ghostscript-8.61.dfsg.1/examples/cjk/iso2022.ps
+--- ghostscript-8.61.dfsg.1~/examples/cjk/iso2022.ps	1970-01-01 09:00:00.000000000 +0900
++++ ghostscript-8.61.dfsg.1/examples/cjk/iso2022.ps	2008-01-13 14:24:00.000000000 +0900
+@@ -0,0 +1,1256 @@
++%!PS-Adobe-3.0
++%%Creator: tops by Taiji Yamada <taiji@aihara.co.jp>
++%%Copyright: 2001 Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
++%%+ This script is part of GNU Ghostscript and is distributed under
++%%+ the terms of the GNU GPL. See the file COPYING for more information.
++%%+ It is also part of tops, a text filter into PostScript for various
++%%+ languages. To get it, visit http://www.aihara.co.jp/~taiji/tops/#tops
++%%DocumentData: Clean7Bit
++%%DocumentMedia: A4 595 842 0 white ()
++%%Extensions: Composite
++%%Orientation: Portrait
++%%Title: iso-2022-7bit - Emacs/Mule editable PostScript file
++%%Version: 1.0
++%
++% Usage:
++%   gs [-dverttext] iso2022.ps
++%
++%%EndComments
++%%BeginProlog
++
++/*gs-cjk (\
++------------------------------------------------------------------------\n\
++This is a script to test CJK fonts such as CID-keyed fonts.\n\
++If you have not done CID-keyed fonts installation and definitions at\n\
++/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
++this script can't work correctly.\n\
++For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
++
++If you throw this script into a printer, it requires PostScript 3\n\
++printer and CID-keyed fonts specified in this script.\n\
++------------------------------------------------------------------------\n) def
++
++/notice*stdout 4 dict begin
++  /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
++  currentdict
++end def
++
++/notice*page 5 dict begin
++  /*y 750 def
++  /*open {
++    gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
++    *y 750 eq {
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++    } if
++  } def
++  /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
++  /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
++  /*close { grestore } def
++  currentdict
++end def
++
++/greeting*gs-cjk {
++  product (Ghostscript) search not { pop } { pop pop pop QUIET not {
++    notice*stdout begin
++      *open
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++      *close
++    end
++  } if } ifelse
++} bind def
++greeting*gs-cjk
++
++/*findfont {
++  dup /Font resourcestatus { pop pop findfont } {
++    notice*page begin
++      *open
++      (Error in findfont: ) *echo-n dup *echo
++      *close
++    end
++    findfont
++  } ifelse
++} bind def
++
++/orighandleerror errordict /handleerror get def
++errordict begin
++  /handleerror {
++    notice*page begin errordict begin $error begin
++      *open
++      (Error of ) *echo-n errorname dup length string cvs *echo
++      *close
++      showpage
++    end end end
++    orighandleerror
++  } bind def
++end
++
++/unknowndef { exch dup where { pop pop pop } { exch def } ifelse } bind def
++
++/ISOLatin1Encoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOLatin1Encoding)
++%%EndComments
++/ISOLatin1Encoding [ % iso-8859-1
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/exclamdown/cent/sterling/currency/yen/brokenbar/section
++/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron
++/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered
++/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown
++% 0xc0
++/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
++/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
++/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply
++/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
++% 0xe0
++/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
++/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
++/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide
++/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOLatin2Encoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOLatin2Encoding)
++%%EndComments
++/ISOLatin2Encoding [ % iso-8859-2
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/Aogonek/breve/Lslash/currency/Lcaron/Sacute/section
++/dieresis/Scaron/Scedilla/Tcaron/Zacute/hyphen/Zcaron/Zdotaccent
++/degree/aogonek/ogonek/lslash/acute/lcaron/sacute/caron
++/cedilla/scaron/scedilla/tcaron/zacute/hungarumlaut/zcaron/zdotaccent
++% 0xc0
++/Racute/Aacute/Acircumflex/Abreve/Adieresis/Lacute/Cacute/Ccedilla
++/Ccaron/Eacute/Eogonek/Edieresis/Ecaron/Iacute/Icircumflex/Dcaron
++/Dcroat/Nacute/Ncaron/Oacute/Ocircumflex/Ohungarumlaut/Odieresis/multiply
++/Rcaron/Uring/Uacute/Uhungarumlaut/Udieresis/Yacute/Tcommaaccent/germandbls
++% 0xe0
++/racute/aacute/acircumflex/abreve/adieresis/lacute/cacute/ccedilla
++/ccaron/eacute/eogonek/edieresis/ecaron/iacute/icircumflex/dcaron
++/dcroat/nacute/ncaron/oacute/ocircumflex/ohungarumlaut/odieresis/divide
++/rcaron/uring/uacute/uhungarumlaut/udieresis/yacute/tcommaaccent/dotaccent
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOLatin3Encoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOLatin3Encoding)
++%%EndComments
++/ISOLatin3Encoding [ % iso-8859-3
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/Hbar/breve/sterling/currency/.notdef/Hcircumflex/section
++/dieresis/Idotaccent/Scedilla/Gbreve/Jcircumflex/hyphen/.notdef/Zdotaccent
++/degree/hbar/twosuperior/threesuperior/acute/mu/hcircumflex/periodcentered
++/cedilla/dotlessi/scedilla/gbreve/jcircumflex/onehalf/.notdef/zdotaccent
++% 0xc0
++/Agrave/Aacute/Acircumflex/.notdef/Adieresis/Cdotaccent/Ccircumflex/Ccedilla
++/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
++/.notdef/Ntilde/Ograve/Oacute/Ocircumflex/Gdotaccent/Odieresis/multiply
++/Gcircumflex/Ugrave/Uacute/Ucircumflex/Udieresis/Ubreve/Scircumflex/germandbls
++% 0xe0
++/agrave/aacute/acircumflex/.notdef/adieresis/cdotaccent/ccircumflex/ccedilla
++/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
++/.notdef/ntilde/ograve/oacute/ocircumflex/gdotaccent/odieresis/divide
++/gcircumflex/ugrave/uacute/ucircumflex/udieresis/ubreve/scircumflex/dotaccent
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOLatin4Encoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOLatin4Encoding)
++%%EndComments
++/ISOLatin4Encoding [ % iso-8859-4
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/Aogonek/kgreenlandic/Rcommaaccent/currency/Itilde/Lcommaaccent/section
++/dieresis/Scaron/Emacron/Gcommaaccent/Tbar/hyphen/Zcaron/macron
++/degree/aogonek/ogonek/rcommaaccent/acute/itilde/lcommaaccent/caron
++/cedilla/scaron/emacron/gcommaaccent/tbar/Eng/zcaron/eng
++% 0xc0
++/Amacron/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Iogonek
++/Ccaron/Eacute/Eogonek/Edieresis/Edotaccent/Iacute/Icircumflex/Imacron
++/Dcroat/Ncommaaccent/Omacron/Kcommaaccent/Ocircumflex/Otilde/Odieresis/multiply
++/Oslash/Uogonek/Uacute/Ucircumflex/Udieresis/Utilde/Umacron/germandbls
++% 0xe0
++/amacron/aacute/acircumflex/atilde/adieresis/aring/ae/iogonek
++/ccaron/eacute/eogonek/edieresis/edotaccent/iacute/icircumflex/imacron
++/dcroat/ncommaaccent/omacron/kcommaaccent/ocircumflex/otilde/odieresis/divide
++/oslash/uogonek/uacute/ucircumflex/udieresis/utilde/umacron/dotaccent
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOCyrillicEncoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOCyrillicEncoding)
++%%EndComments
++/ISOCyrillicEncoding [ % iso-8859-5
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/afii10023/afii10051/afii10052/afii10053/afii10054/afii10055/afii10056
++/afii10057/afii10058/afii10059/afii10060/afii10061/hyphen/afii10062/afii10145
++/afii10017/afii10018/afii10019/afii10020/afii10021/afii10022/afii10024/afii10025
++/afii10026/afii10027/afii10028/afii10029/afii10030/afii10031/afii10032/afii10033
++% 0xc0
++/afii10034/afii10035/afii10036/afii10037/afii10038/afii10039/afii10040/afii10041
++/afii10042/afii10043/afii10044/afii10045/afii10046/afii10047/afii10048/afii10049
++/afii10065/afii10066/afii10067/afii10068/afii10069/afii10070/afii10072/afii10073
++/afii10074/afii10075/afii10076/afii10077/afii10078/afii10079/afii10080/afii10081
++% 0xe0
++/afii10082/afii10083/afii10084/afii10085/afii10086/afii10087/afii10088/afii10089
++/afii10090/afii10091/afii10092/afii10093/afii10094/afii10095/afii10096/afii10097
++/afii61352/afii10071/afii10099/afii10100/afii10101/afii10102/afii10103/afii10104
++/afii10105/afii10106/afii10107/afii10108/afii10109/section/afii10110/afii10193
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOGreekEncoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOGreekEncoding)
++%%EndComments
++/ISOGreekEncoding [ % iso-8859-7
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/quoteleft/quoteright/sterling/.notdef/.notdef/brokenbar/section
++/dieresis/copyright/.notdef/guillemotleft/logicalnot/hyphen/.notdef/afii00208
++/degree/plusminus/twosuperior/threesuperior/tonos/dieresistonos/Alphatonos/periodcentered
++/Epsilontonos/Etatonos/Iotatonos/guillemotright/Omicrontonos/onehalf/Upsilontonos/Omegatonos
++% 0xc0
++/iotadieresistonos/Alpha/Beta/Gamma/Delta/Epsilon/Zeta/Eta
++/Theta/Iota/Kappa/Lambda/Mu/Nu/Xi/Omicron
++/Pi/Rho/.notdef/Sigma/Tau/Upsilon/Phi/Chi
++/Psi/Omega/Iotadieresis/Upsilondieresis/alphatonos/epsilontonos/etatonos/iotatonos
++% 0xe0
++/upsilondieresistonos/alpha/beta/gamma/delta/epsilon/zeta/eta
++/theta/iota/kappa/lambda/mu/nu/xi/omicron
++/pi/rho/sigma1/sigma/tau/upsilon/phi/chi
++/psi/omega/iotadieresis/upsilondieresis/omicrontonos/upsilontonos/omegatonos/.notdef
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOLatin5Encoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOLatin5Encoding)
++%%EndComments
++/ISOLatin5Encoding [ % iso-8859-9
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/exclamdown/cent/sterling/currency/yen/brokenbar/section
++/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron
++/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered
++/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown
++% 0xc0
++/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
++/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
++/Gbreve/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply
++/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Idotaccent/Scedilla/germandbls
++% 0xe0
++/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
++/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
++/gbreve/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide
++/oslash/ugrave/uacute/ucircumflex/udieresis/dotlessi/scedilla/ydieresis
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOLatin6Encoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOLatin6Encoding)
++%%EndComments
++/ISOLatin6Encoding [ % iso-8859-10
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/Aogonek/Emacron/Gcommaaccent/Imacron/Itilde/Kcommaaccent/section
++/Lcommaaccent/Dcroat/Scaron/Tbar/Zcaron/hyphen/Umacron/Eng
++/degree/aogonek/emacron/gcommaaccent/imacron/itilde/kcommaaccent/periodcentered
++/lcommaaccent/dcroat/scaron/tbar/zcaron/afii00208/umacron/eng
++% 0xc0
++/Amacron/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Iogonek
++/Ccaron/Eacute/Eogonek/Edieresis/Edotaccent/Iacute/Icircumflex/Idieresis
++/Eth/Ncommaaccent/Omacron/Oacute/Ocircumflex/Otilde/Odieresis/Utilde
++/Oslash/Uogonek/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
++% 0xe0
++/amacron/aacute/acircumflex/atilde/adieresis/aring/ae/iogonek
++/ccaron/eacute/eogonek/edieresis/edotaccent/iacute/icircumflex/idieresis
++/eth/ncommaaccent/omacron/oacute/ocircumflex/otilde/odieresis/utilde
++/oslash/uogonek/uacute/ucircumflex/udieresis/yacute/thorn/kgreenlandic
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOLatin7Encoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOLatin7Encoding)
++%%EndComments
++/ISOLatin7Encoding [ % iso-8859-13
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/quotedblright/cent/sterling/currency/quotedblbase/brokenbar/section
++/Oslash/copyright/Rcommaaccent/guillemotleft/logicalnot/hyphen/registered/AE
++/degree/plusminus/twosuperior/threesuperior/quotedblleft/mu/paragraph/periodcentered
++/oslash/onesuperior/rcommaaccent/guillemotright/onequarter/onehalf/threequarters/ae
++% 0xc0
++/Aogonek/Iogonek/Amacron/Cacute/Adieresis/Aring/Eogonek/Emacron
++/Ccaron/Eacute/Zacute/Edotaccent/Gcommaaccent/Kcommaaccent/Imacron/Lcommaaccent
++/Scaron/Nacute/Ncommaaccent/Oacute/Omacron/Otilde/Odieresis/multiply
++/Uogonek/Lslash/Sacute/Umacron/Udieresis/Zdotaccent/Zcaron/germandbls
++% 0xe0
++/aogonek/iogonek/amacron/cacute/adieresis/aring/eogonek/emacron
++/ccaron/eacute/zacute/edotaccent/gcommaaccent/kcommaaccent/imacron/lcommaaccent
++/scaron/nacute/ncommaaccent/oacute/omacron/otilde/odieresis/divide
++/uogonek/lslash/sacute/umacron/udieresis/zdotaccent/zcaron/quoteright
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOLatin9Encoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOLatin9Encoding)
++%%EndComments
++/ISOLatin9Encoding [ % iso-8859-15
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/exclamdown/cent/sterling/Euro/yen/Scaron/section
++/scaron/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron
++/degree/plusminus/twosuperior/threesuperior/Zcaron/mu/paragraph/periodcentered
++/zcaron/onesuperior/ordmasculine/guillemotright/OE/oe/Ydieresis/questiondown
++% 0xc0
++/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
++/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
++/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply
++/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
++% 0xe0
++/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
++/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
++/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide
++/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/reencode-font { % fontname font encoding reencode-font font
++  exch dup type dup /nametype eq exch /stringtype eq or { findfont } if
++  dup length dict begin
++    {
++      1 index /FID ne 2 index /UniqueID ne and { def } { pop pop } ifelse
++    } forall
++    /Encoding exch dup type /nametype eq { /Encoding findresource } if def
++    dup /FontName exch def
++    currentdict
++  end
++  definefont
++} bind def
++
++/vertical-font { % fontname font vertical-font font
++  dup type dup /nametype eq exch /stringtype eq or { *findfont } if
++  dup length 1 add dict begin {
++    1 index /FontName eq { pop 1 index def } {
++      1 index /FID ne 2 index /UniqueID ne and { def } { pop pop } ifelse
++    } ifelse
++  } forall /WMode 1 def currentdict end
++  definefont
++} bind def
++
++%
++% fontname [font ...] compose-fontset font
++%
++% References:
++% [1] kanno@jn1jdz.ymt.prug.or.jp, ``jisfont.ps,''
++% in Japanesized Tgif(Tgif-3.0J-p17 JIS patch version), 7 1997.
++%
++/compose-fontset {
++  12 dict begin
++    /FontType 0 def
++    /FontMatrix matrix def
++    /FontBBox { 0 0 0 0 } def
++    /FMapType 3 def
++    %/EscChar 255 def
++    /FDepVector [
++      2 index {
++        dup type dup /nametype eq exch /stringtype eq or { *findfont } if
++        dup /WMode known {
++          dup /WMode get /WMode exch def
++          WMode 1 eq {
++            [ 0 1 -1 0 0 .3 ] makefont
++          } if
++        } if
++      } forall
++    ] def
++    /Encoding [ 0 1 4 index length 1 sub {} for ] def
++    pop
++    dup /FontName exch def
++    currentdict
++  end
++  definefont
++} bind def
++
++/decode-mule-big5 { % R1 R2 1|2 decode-mule-big5 R1 R2
++  2 dict begin
++    3 1 roll
++    /r2 exch def
++    /r1 exch def
++    /r2 r1 16#21 sub 94 mul r2 add 16#21 sub def
++    2 eq { /r2 r2 6280 add def } if
++    /r1 r2 157 idiv 16#a1 add def
++    /r2 r2 157 mod def
++    /r2 r2 r2 16#3f lt { 16#40 } { 16#62 } ifelse add def
++    r1 r2
++  end
++} bind def
++/decode-mule-big5-l1 { % str idx decode-mule-big5-l1 str idx
++  2 copy get exch 1 add exch 2 index 2 index get
++  1 decode-mule-big5
++  buffer size 4 -1 roll put /size size 1 add store
++  buffer size 3 -1 roll put /size size 1 add store 
++} bind def
++/decode-mule-big5-l2 { % str idx decode-mule-big5-l2 str idx
++  2 copy get exch 1 add exch 2 index 2 index get
++  2 decode-mule-big5
++  buffer size 4 -1 roll put /size size 1 add store
++  buffer size 3 -1 roll put /size size 1 add store 
++} bind def
++/decode-gl { % str idx decode-gl str idx
++  2 copy get buffer size 3 -1 roll put
++  /size size 1 add store
++} bind def
++/decode-gr { % str idx decode-gr str idx
++  2 copy get 16#80 add buffer size 3 -1 roll put
++  /size size 1 add store
++} bind def
++/iso-2022-set [
++  [ (\033\(B)	{decode-gl}		] % iso-2022:ascii
++  [ (\033,A)	{decode-gr}		] % iso-2022:iso-8859-1,iso-latin1
++  [ (\033,B)	{decode-gr}		] % iso-2022:iso-8859-2,iso-latin2
++% [ (\033,C)	{decode-gr}		] % iso-2022:iso-8859-3,iso-latin3
++% [ (\033,D)	{decode-gr}		] % iso-2022:iso-8859-4,iso-latin4
++% [ (\033,F)	{decode-gr}		] % iso-2022:iso-8859-7,iso-greek
++% [ (\033,G)	{decode-gr}		] % iso-2022:iso-8859-6,iso-arabic
++% [ (\033,H)	{decode-gr}		] % iso-2022:iso-8859-8,iso-hebrew
++% [ (\033,L)	{decode-gr}		] % iso-2022:iso-8859-5,iso-cyrillic
++  [ (\033,M)	{decode-gr}		] % iso-2022:iso-8859-9,iso-latin5
++% [ (\033,T)	{decode-gr}		] % iso-2022:iso-8859-11,iso-thai
++% [ (\033,V)	{decode-gr}		] % iso-2022:iso-8859-10,iso-latin6
++  [ (\033\(I)	{decode-gl}		] % iso-2022:jis-x-0201-kana
++  [ (\033\(J)	{decode-gl}		] % iso-2022:jis-x-0201-roman
++% [ (\033\(T)	{decode-gl}		] % iso-2022:gb-1988-roman
++  [ (\033$@)	{decode-gl}		] % iso-2022:jis-x-0208-1978
++  [ [ (\033$A) (\033$\(A) ]			{decode-gl}	] % iso-2022:gb-2312-1980
++  [ [ (\033$B) (\033$\(B) (\033&@\033$B) ]	{decode-gl}	] % iso-2022:jis-x-0208-1983&1990
++  [ (\033$\(C)	{decode-gl}		] % iso-2022:ks-x-1001-1992
++  [ (\033$\(D)	{decode-gl}		] % iso-2022:jis-x-0212-1990
++  [ (\033$\(?)	{decode-gl}		] % iso-2022:gbt-12345-1990,private-iso-gbt
++  [ (\033$\(G)	{decode-gl}		] % iso-2022:cns-11643-1992-p1
++  [ (\033$\(H)	{decode-gl}		] % iso-2022:cns-11643-1992-p2
++  [ (\033$\(0)	{decode-mule-big5-l1}	] % iso-2022:big5,mule-big5
++  [ (\033$\(1)	{decode-mule-big5-l2}	] % iso-2022:big5,mule-big5
++] def
++/iso-2022-translate { % str idx iso-2022-translate str idx
++  2 copy get 16#20 lt {
++    iso-2022-set length 1 sub 0 1 3 -1 roll {	% str idx j
++      iso-2022-set 1 index get 0 get dup	% str idx j ()|[] ()|[]
++      dup type /stringtype eq {			% str idx j () ()
++        dup length 5 index 5 index 3 -1 roll 7 index length 7 index sub
++        2 copy lt { pop } { exch pop } ifelse
++        getinterval eq				% str idx j () true|false
++      } {					% str idx j [] []
++        pop () false 3 -1 roll {
++          dup 4 -1 roll pop 3 1 roll
++          dup length 6 index 6 index 3 -1 roll 8 index length 8 index sub
++          2 copy lt { pop } { exch pop } ifelse
++          getinterval eq or dup { exit } if	% str idx j () true|false
++        } forall
++      } ifelse
++      { exch /iso-2022-state exch store length 1 sub add exit } { pop } ifelse
++      pop
++    } for
++  } if
++} bind def
++/iso-2022-show { % str iso-2022-show -
++  10 dict begin
++    /iso-6429-state null def
++    /iso-2022-state 0 def
++    /iso-2022-current iso-2022-state def
++    /buffer 65535 string def
++    /size 0 def
++    /width 0 def
++    /BoldFont false def /Underscore false def /BackColor 1 def
++    /foldline dup where { pop foldline } { false } ifelse def
++    0 { % idx {} loop
++      dup 2 index length lt {
++        iso-2022-translate
++        iso-2022-state iso-2022-current ne {
++          buffer size 8#377 put
++          /size size 1 add store
++          buffer size iso-2022-state put
++          /size size 1 add store
++        } {
++          iso-6429-translate
++          iso-6429-state null ne {
++            iso-6429-set iso-6429-state get 1 get exec
++          } {
++            iso-2022-set iso-2022-current get 1 get exec
++          } ifelse
++        } ifelse
++      } {
++        exit
++      } ifelse
++      /iso-2022-current iso-2022-state store
++      1 add
++    } loop
++    pop pop
++    iflush
++  end
++} bind def
++/ichop {	% required for some Adobe-official PostScript interpreters
++  dup length dup 2 sub -2 0 {		% str len len-2 -2 0 {} for
++    2 index 1 index get 8#377 eq	% str len idx c(str idx get) 8#377 eq
++    { exch pop } { pop exit } ifelse	% str len|idx
++  } for 0 exch getinterval		% str'(str 0 len|idx getinterval)
++} bind def
++
++/iso-6429-set [
++  [ (\t)
++    { buffer 0 size getinterval ichop	% ``ichop'' is not required for GS
++      stringwidth pop ( ) stringwidth pop div round cvi width add
++      8 dup 3 1 roll mod sub {
++      buffer size ( ) putinterval /size size 1 add store
++    } repeat } bind
++  ]
++  [ (\f)	{ iflush margin 0 get margin 3 get moveto } bind ]
++  [ [ (\033[m) (\033[0m) ]
++    { iflush
++      /BoldFont false	textfont
++      /Underscore false	textfont
++      0			textcolor
++      1			backcolor
++    } bind
++  ] % All Off
++  [ (\033[1m)	{ iflush /BoldFont true		textfont } bind ]
++  [ (\033[4m)	{ iflush /Underscore true	textfont } bind ]
++  [ (\033[22m)	{ iflush /BoldFont false	textfont } bind ]
++  [ (\033[24m)	{ iflush /Underscore false	textfont } bind ]
++  [ (\033[30m)	{ iflush 0		textcolor } bind ]
++  [ (\033[31m)	{ iflush [ 1 0 0 ]	textcolor } bind ]
++  [ (\033[32m)	{ iflush [ 0 1 0 ]	textcolor } bind ]
++  [ (\033[33m)	{ iflush [ 1 1 0 ]	textcolor } bind ]
++  [ (\033[34m)	{ iflush [ 0 0 1 ]	textcolor } bind ]
++  [ (\033[35m)	{ iflush [ 1 0 1 ]	textcolor } bind ]
++  [ (\033[36m)	{ iflush [ 0 1 1 ]	textcolor } bind ]
++  [ (\033[37m)	{ iflush 1		textcolor } bind ]
++  [ (\033[39m)	{ iflush 0		textcolor } bind ]
++  [ (\033[40m)	{ iflush 0		backcolor } bind ]
++  [ (\033[41m)	{ iflush [ 1 0 0 ]	backcolor } bind ]
++  [ (\033[42m)	{ iflush [ 0 1 0 ]	backcolor } bind ]
++  [ (\033[43m)	{ iflush [ 1 1 0 ]	backcolor } bind ]
++  [ (\033[44m)	{ iflush [ 0 0 1 ]	backcolor } bind ]
++  [ (\033[45m)	{ iflush [ 1 0 1 ]	backcolor } bind ]
++  [ (\033[46m)	{ iflush [ 0 1 1 ]	backcolor } bind ]
++  [ (\033[47m)	{ iflush 1		backcolor } bind ]
++  [ (\033[49m)	{ iflush 1		backcolor } bind ]
++] def
++/iso-6429-translate { % str idx iso-6429-translate str idx
++  /iso-6429-state null store
++  2 copy get 16#20 lt {
++    iso-6429-set length 1 sub 0 1 3 -1 roll {	% str idx j
++      iso-6429-set 1 index get 0 get dup	% str idx j ()|[] ()|[]
++      dup type /stringtype eq {			% str idx j () ()
++        dup length 5 index 5 index 3 -1 roll 7 index length 7 index sub
++        2 copy lt { pop } { exch pop } ifelse
++        getinterval eq				% str idx j () true|false
++      } {					% str idx j [] []
++        pop () false 3 -1 roll {
++          dup 4 -1 roll pop 3 1 roll
++          dup length 6 index 6 index 3 -1 roll 8 index length 8 index sub
++          2 copy lt { pop } { exch pop } ifelse
++          getinterval eq or dup { exit } if	% str idx j () true|false
++        } forall
++      } ifelse
++      { exch /iso-6429-state exch store length 1 sub add exit } { pop } ifelse
++      pop
++    } for
++  } if
++} bind def
++/show-attribute {
++  BackColor dup type dup /integertype eq exch /realtype eq or {
++    dup 1 eq { pop } {
++      gsave setgray BoldFont { setboldfont } if textfill grestore
++    } ifelse
++  } {
++    gsave cvx exec setrgbcolor BoldFont { setboldfont } if textfill grestore
++  } ifelse
++  Underscore {
++    gsave .2 setlinewidth currentpoint fontsize .1 mul sub moveto
++    BoldFont { setboldfont } if dup stringwidth pop 0 rlineto stroke grestore
++  } if
++  BoldFont {
++    gsave setboldfont show currentpoint grestore moveto
++  } {
++    show
++  } ifelse
++} bind def
++/cshow-attribute {
++  pop currentpoint pop add pagesize 0 get margin 2 get sub lt {
++    1 string dup 0 4 -1 roll put show-attribute
++  } {
++    currentpoint exch pop fontsize sub round margin 3 get lt {
++      gsave
++      nextpage preparepage
++      currentpoint matrix currentmatrix grestore setmatrix moveto
++    } {
++      origin 0 get currentpoint exch pop fontsize sub moveto
++    } ifelse
++    1 string dup 0 4 -1 roll put show-attribute
++  } ifelse
++} bind def
++/iflush {
++  size 0 gt {
++    buffer 0 size getinterval ichop	% ``ichop'' is not required for GS
++    dup stringwidth pop ( ) stringwidth pop div round cvi /width exch store
++    foldline not {
++      show-attribute
++    } {
++      dup stringwidth
++      pop currentpoint pop add pagesize 0 get margin 2 get sub lt {
++        show-attribute
++      } {
++        BoldFont { /BoldFont false store
++          gsave setboldfont
++	  { cshow-attribute } exch cshow
++	  currentpoint grestore moveto
++        } {
++          { cshow-attribute } exch cshow
++        } ifelse
++      } ifelse      
++    } ifelse
++    /size 0 store
++  } if
++} bind def
++/textfont { % /BoldFont|/Underscore any textfont -
++  store
++} bind def
++/textcolor {
++  dup type dup /integertype eq exch /realtype eq or { setgray }
++  { cvx exec setrgbcolor } ifelse
++} bind def
++/backcolor {
++  /BackColor exch store
++} bind def
++/textfill {
++  currentpoint fontsize .2 mul sub 2 index stringwidth pop fontsize
++  4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto
++  closepath fill
++} bind def
++/setboldfont {
++  currentfont /FontName get dup length string cvs (-Bold)
++  exch dup length 2 index length add string
++  dup dup 4 2 roll copy length 4 -1 roll putinterval cvn
++  findfont [fontwidth 0 0 fontsize 0 0] makefont setfont
++} bind def
++/iso-6429-show { % str iso-6429-show -
++  8 dict begin
++    /iso-6429-state null def
++    /buffer 65535 string def
++    /size 0 def
++    /width 0 def
++    /BoldFont false def /Underscore false def /BackColor 1 def
++    /foldline dup where { pop foldline } { false } ifelse def
++    0 { % idx {} loop
++      dup 2 index length lt {
++        iso-6429-translate
++        iso-6429-state null ne {
++          iso-6429-set iso-6429-state get 1 get exec
++        } {
++          2 copy get buffer size 3 -1 roll put
++          /size size 1 add store
++        } ifelse
++      } {
++        exit
++      } ifelse
++      1 add
++    } loop
++    pop pop
++    iflush
++  end
++} bind def
++/shown-init {
++  /inshow exch def
++  /mediasize [ 595 842 ] def
++  /mediamargin [ 30 30 30 30 ] def
++  /pagesize [
++    mediasize cvx exec mediamargin cvx exec
++    3 -1 roll add 3 1 roll add 3 1 roll sub 3 1 roll sub exch
++  ] def
++  /margin [ 20 28 20 28 ] def
++  /division [ 1 1 ] def
++  /landscape false def
++  /landscale false def
++  /evenscale true def
++  /pagescale false def
++  pagescale not {
++    /pagesize [
++      pagesize 0 get division 0 get div pagesize 1 get division 1 get div
++    ] store
++  } if
++  landscape {
++    /pagesize [ pagesize cvx exec exch ] store
++    /margin [ margin cvx exec 4 1 roll ] store
++  } if
++  /verttext dup where { pop verttext } { false } ifelse def
++  /foldline true def
++  /header true def /footer true def /border true def
++  /origin [ margin 0 get pagesize 1 get margin 1 get sub fontsize sub ] def
++  /position [ 0 0 ] def
++  /preparepage { initmatrix
++    landscape landscale xor not {
++      mediasize cvx exec exch mediamargin 0 get mediamargin 2 get add sub
++      division 0 get div position 0 get mul mediamargin 0 get add
++      exch dup mediamargin 1 get mediamargin 3 get add sub
++      division 1 get div position 1 get 1 add mul sub mediamargin 1 get sub
++      translate
++      pagescale { landscale not { 1 } { pagesize cvx exec div } ifelse
++        division 1 get div evenscale { dup } {
++          landscale not { 1 } { pagesize cvx exec exch div } ifelse
++          division 0 get div exch
++        } ifelse scale
++      } if
++    } {
++      verttext {
++        180 rotate mediasize { neg } forall translate
++      } if
++      mediasize cvx exec exch mediamargin 0 get mediamargin 2 get add sub
++      division 0 get div position 0 get mul mediamargin 0 get add
++      exch mediamargin 1 get mediamargin 3 get add sub
++      division 1 get div position 1 get mul mediamargin 3 get add
++      translate
++      pagescale { landscale not { 1 } { pagesize cvx exec div } ifelse
++        division 0 get div evenscale { dup } {
++          landscale not { 1 } { pagesize cvx exec exch div } ifelse
++          division 1 get div
++        } ifelse scale
++      } if
++      90 rotate 0 pagesize 1 get neg translate
++    } ifelse
++    origin cvx exec moveto
++  } bind def
++  /gssafe false def	% GS-safe but not always perfect at decoratepage
++  /nextpage { gssafe { /decorated false store } { decoratepage } ifelse
++    position landscape landscale or not { 0 } { 1 } ifelse 2 copy get 1 add
++    dup 4 1 roll put
++    division landscape landscale or not { 0 } { 1 } ifelse get eq {
++      position landscape landscale or not { 0 } { 1 } ifelse 0 put
++      position landscape landscale or not { 1 } { 0 } ifelse 2 copy get 1 add
++      dup 4 1 roll put
++      division landscape landscale or not { 1 } { 0 } ifelse get eq {
++        position landscape landscale or not { 1 } { 0 } ifelse 0 put
++        showpage
++      } if
++    } if
++  } bind def
++  /lastpage { gssafe {} { decoratepage } ifelse showpage } bind def
++  /nextline {
++    currentpoint exch pop fontsize sub round margin 3 get lt {
++      nextpage preparepage /empty true store
++    } {
++      origin 0 get currentpoint exch pop fontsize sub moveto
++    } ifelse
++  } bind def
++  %
++  /page 0 def
++  /infofont /Helvetica findfont [fontwidth 0 0 fontsize 0 0] makefont def
++  /head (gs-cjk project: [1miso-2022-7bit - Emacs/Mule editable PostScript file[22m) def
++  /showheader {
++    header {
++      gsave
++      verttext not {
++        margin 0 get pagesize 1 get margin 1 get sub fontsize add moveto
++      } {
++        margin 0 get fontsize sub margin 3 get translate 90 rotate
++        fontsize fontwidth div fontwidth fontsize div scale 0 0 moveto
++      } ifelse
++      1 dict dup /foldline false put begin
++        infofont setfont head inshow
++      end
++      grestore
++    } if
++  } bind def
++  /foot 64 string def
++  /showfooter {
++    /page page 1 add store
++    footer {
++      gsave
++      verttext not {
++        pagesize 0 get margin 2 get sub margin 3 get fontsize 2 mul sub moveto
++      } {
++        pagesize 0 get margin 2 get sub fontsize 2 mul add
++        pagesize 1 get margin 1 get sub translate 90 rotate
++        fontsize fontwidth div fontwidth fontsize div scale 0 0 moveto
++      } ifelse
++      1 dict dup /foldline false put begin
++        infofont setfont page foot cvs dup stringwidth pop neg 0 rmoveto inshow
++      end
++      grestore
++    } if
++  } bind def
++  /bord {
++    pagesize cvx exec margin { fontsize 2 div sub } forall
++    3 1 roll exch 5 -1 roll exch sub exch 5 -1 roll exch sub exch
++    4 copy 3 1 roll exch 8 -2 roll moveto lineto 4 2 roll lineto lineto
++    closepath
++  } bind def
++  /showborder {
++    border {
++      gsave .25 setlinewidth bord stroke grestore
++    } if
++  } bind def
++  /decoratepage { showheader showfooter showborder } bind def
++  %
++  preparepage /empty true def
++  gssafe { /decorated false def } if
++} bind def
++/shown {
++  gssafe { decorated not { decoratepage /decorated true store } if } if
++  inshow /empty false store nextline
++} bind def
++/shown-close { empty not { lastpage } if } bind def
++/shown-readlines {
++  /shown-buffer 65535 string def
++  shown-init
++  {
++    currentfile shown-buffer readline not { pop exit } if
++    shown
++  } loop
++  shown-close
++} bind def
++/shown-readhexstrings {
++  /shown-buffer 65535 string def
++  /shown-size 0 def
++  /previous-char (\000) def
++  shown-init
++  {
++    currentfile 1 string readhexstring not { pop exit } if
++    dup (\n) ne {
++      dup (\r) ne {
++        shown-buffer shown-size 2 index putinterval
++        /shown-size shown-size 1 add store
++      } { % mac
++        shown-buffer 0 shown-size getinterval shown
++        /shown-size 0 store
++      } ifelse
++    } { % unix
++      previous-char (\r) ne {
++        shown-buffer 0 shown-size getinterval shown
++      } { % dos
++      } ifelse
++      /shown-size 0 store
++    } ifelse
++    previous-char 0 3 -1 roll putinterval
++  } loop
++  shown-close
++} bind def
++
++/fitfont { [ .8335276 0 0 .8335276 0 .1 ] makefont } bind def
++
++/verttext false unknowndef
++/iso-2022-fontset [
++  /Courier			findfont fitfont	% iso-2022:ascii
++  /Courier-Latin1		/Courier /ISOLatin1Encoding	reencode-font fitfont	% iso-2022:iso-8859-1,iso-latin1
++  /Courier-Latin2		/Courier /ISOLatin2Encoding	reencode-font fitfont	% iso-2022:iso-8859-2,iso-latin2
++% /CourierNewLatin3		findfont fitfont	% iso-2022:iso-8859-3,iso-latin3
++% /CourierNewLatin4		findfont fitfont	% iso-2022:iso-8859-4,iso-latin4
++% /CourierNewGreek		findfont fitfont	% iso-2022:iso-8859-7,iso-greek
++% /CourierNewArabic		findfont fitfont	% iso-2022:iso-8859-6,iso-arabic
++% /CourierNewHebrew		findfont fitfont	% iso-2022:iso-8859-8,iso-hebrew
++% /Courier-Cyrillic		/CourierNewCyrillic /ISOCyrillicEncoding	reencode-font fitfont	% iso-2022:iso-8859-5,iso-cyrillic
++  /Courier-Latin5		/Courier /ISOLatin5Encoding	reencode-font fitfont	% iso-2022:iso-8859-9,iso-latin5
++% /CourierNewThai		findfont fitfont	% iso-2022:iso-8859-11,iso-thai
++% /CourierNewLatin6		findfont fitfont	% iso-2022:iso-8859-10,iso-latin6
++  verttext not {
++  /Ryumin-Light.Katakana	% iso-2022:jis-x-0201-kana
++  /Ryumin-Light.Roman		% iso-2022:jis-x-0201-roman
++% /STSong-Light-GBK-EUC-H	% iso-2022:gb-1988-roman
++  /Ryumin-Light-78-H		% iso-2022:jis-x-0208-1978
++  /STSong-Light-GB-H		% iso-2022:gb-2312-1980
++  /Ryumin-Light-H		% iso-2022:jis-x-0208-1983&1990
++  /HYSMyeongJo-Medium-KSC-H	% iso-2022:ks-x-1001-1992
++  /HeiseiMin-W3H-Hojo-H		% iso-2022:jis-x-0212-1990
++  /STSong-Light-GBT-H		% iso-2022:gbt-12345-1990,private-iso-gbt
++  /MSung-Light-CNS1-H		% iso-2022:cns-11643-1992-p1
++  /MSung-Light-CNS2-H		% iso-2022:cns-11643-1992-p2
++  /MSung-Light-ETen-B5-H	% iso-2022:big5,mule-big5
++  /MSung-Light-ETen-B5-H	% iso-2022:big5,mule-big5
++  } {
++  /Ryumin-Light.Katakana-V	/Ryumin-Light.Katakana	vertical-font	% iso-2022:jis-x-0201-kana
++  /Ryumin-Light.Roman-V		/Ryumin-Light.Roman	vertical-font	% iso-2022:jis-x-0201-roman
++% /STSong-Light-GBK-EUC-V	% iso-2022:gb-1988-roman
++  /Ryumin-Light-78-V		% iso-2022:jis-x-0208-1978
++  /STSong-Light-GB-V		% iso-2022:gb-2312-1980
++  /Ryumin-Light-V		% iso-2022:jis-x-0208-1983&1990
++  /HYSMyeongJo-Medium-KSC-V	% iso-2022:ks-x-1001-1992
++  /HeiseiMin-W3H-Hojo-V		% iso-2022:jis-x-0212-1990
++  /STSong-Light-GBT-V		% iso-2022:gbt-12345-1990,private-iso-gbt
++  /MSung-Light-CNS1-V		% iso-2022:cns-11643-1992-p1
++  /MSung-Light-CNS2-V		% iso-2022:cns-11643-1992-p2
++  /MSung-Light-ETen-B5-V	% iso-2022:big5,mule-big5
++  /MSung-Light-ETen-B5-V	% iso-2022:big5,mule-big5
++  } ifelse
++] def
++/iso-2022-bold-fontset [
++  /Courier-Bold			findfont fitfont	% iso-2022:ascii
++  /Courier-Bold-Latin1		/Courier-Bold /ISOLatin1Encoding	reencode-font fitfont	% iso-2022:iso-8859-1,iso-latin1
++  /Courier-Bold-Latin2		/Courier-Bold /ISOLatin2Encoding	reencode-font fitfont	% iso-2022:iso-8859-2,iso-latin2
++% /CourierNewLatin3-Bold	findfont fitfont	% iso-2022:iso-8859-3,iso-latin3
++% /CourierNewLatin4-Bold	findfont fitfont	% iso-2022:iso-8859-4,iso-latin4
++% /CourierNewGreek-Bold		findfont fitfont	% iso-2022:iso-8859-7,iso-greek
++% /CourierNewArabic-Bold	findfont fitfont	% iso-2022:iso-8859-6,iso-arabic
++% /CourierNewHebrew-Bold	findfont fitfont	% iso-2022:iso-8859-8,iso-hebrew
++% /Courier-Bold-Cyrillic	/CourierNewCyrillic-Bold /ISOCyrillicEncoding	reencode-font fitfont	% iso-2022:iso-8859-5,iso-cyrillic
++  /Courier-Bold-Latin5		/Courier-Bold /ISOLatin5Encoding	reencode-font fitfont	% iso-2022:iso-8859-9,iso-latin5
++% /CourierNewThai-Bold		findfont fitfont	% iso-2022:iso-8859-11,iso-thai
++% /CourierNewLatin6-Bold	findfont fitfont	% iso-2022:iso-8859-10,iso-latin6
++  verttext not {
++  /GothicBBB-Medium.Katakana	% iso-2022:jis-x-0201-kana
++  /GothicBBB-Medium.Roman	% iso-2022:jis-x-0201-roman
++% /STHeiti-Regular-GBK-EUC-H	% iso-2022:gb-1988-roman
++  /GothicBBB-Medium-78-H	% iso-2022:jis-x-0208-1978
++  /STHeiti-Regular-GB-H		% iso-2022:gb-2312-1980
++  /GothicBBB-Medium-H		% iso-2022:jis-x-0208-1983&1990
++  /HYGoThic-Medium-KSC-H	% iso-2022:ks-x-1001-1992
++  /HeiseiKakuGo-W5H-Hojo-H	% iso-2022:jis-x-0212-1990
++  /STHeiti-Regular-GBT-H	% iso-2022:gbt-12345-1990,private-iso-gbt
++  /MHei-Medium-CNS1-H		% iso-2022:cns-11643-1992-p1
++  /MHei-Medium-CNS2-H		% iso-2022:cns-11643-1992-p2
++  /MHei-Medium-ETen-B5-H	% iso-2022:big5,mule-big5
++  /MHei-Medium-ETen-B5-H	% iso-2022:big5,mule-big5
++  } {
++  /GothicBBB-Medium.Katakana-V	/GothicBBB-Medium.Katakana	vertical-font	% iso-2022:jis-x-0201-kana
++  /GothicBBB-Medium.Roman-V	/GothicBBB-Medium.Roman		vertical-font	% iso-2022:jis-x-0201-roman
++% /STHeiti-Regular-GBK-EUC-V	% iso-2022:gb-1988-roman
++  /GothicBBB-Medium-78-V	% iso-2022:jis-x-0208-1978
++  /STHeiti-Regular-GB-V		% iso-2022:gb-2312-1980
++  /GothicBBB-Medium-V		% iso-2022:jis-x-0208-1983&1990
++  /HYGoThic-Medium-KSC-V	% iso-2022:ks-x-1001-1992
++  /HeiseiKakuGo-W5H-Hojo-V	% iso-2022:jis-x-0212-1990
++  /STHeiti-Regular-GBT-V	% iso-2022:gbt-12345-1990,private-iso-gbt
++  /MHei-Medium-CNS1-V		% iso-2022:cns-11643-1992-p1
++  /MHei-Medium-CNS2-V		% iso-2022:cns-11643-1992-p2
++  /MHei-Medium-ETen-B5-V	% iso-2022:big5,mule-big5
++  /MHei-Medium-ETen-B5-V	% iso-2022:big5,mule-big5
++  } ifelse
++] def
++/fontset-iso-2022 iso-2022-fontset compose-fontset pop
++/fontset-iso-2022-Bold iso-2022-bold-fontset compose-fontset pop
++%%EndProlog
++/fontsize 11 def /fontwidth 11 def
++/fontset-iso-2022 findfont [fontwidth 0 0 fontsize 0 0] makefont setfont
++{ iso-2022-show } shown-readlines
++A list of ways to say hello in various languages.
++
++Czech (,Bh(Besky)		Dobr,B}(B den
++Danish (Dansk)		Hej, Goddag
++English			Hello
++Esperanto		Saluton
++Estonian		Tere, Tervist
++PostScript		(Hello) =
++Finnish (Suomi)		Hei
++French (Fran,Ag(Bais)	Bonjour, Salut
++German (Deutsch Nord)	Guten Tag
++
++Italiano		Ciao, Buon giorno
++
++Maltese			Ciao
++Nederlands, Vlaams	Hallo, Dag
++Norwegian (Norsk)	Hei, God dag
++Polish			Dzie,Bq(B dobry, Hej
++
++Slovak			Dobr,B}(B de,Br(B
++Spanish (Espa,Aq(Bol)	,A!(BHola!
++Swedish (Svenska)	Hej, Goddag
++
++Turkish (T,M|(Brk,Mg(Be)	Merhaba
++
++Chinese  ($(GDcEF$(0!.$(GiGk#$(0!.Vn^V)t(B)		$(0<@)p$(G!$I#Go!$$(0'*)y!$(B
++Chinese  ($AVPND#,::So#,<rLeWV(B)		$ADz:C!#Dc:C!#(B
++Japanese ($BF|K\8l!"4A;z!"J?2>L>!"JR2>L>(B)	$B$3$s$K$A$O!#(I:]FAJ(B.
++Korean   ($(CGQ1[#,ySm.(B)			$(C>H3gGO=J4O1n#.>H3gGO<<?d#.(B
++
++Difference among chinese characters in GB, JIS, KSC, BIG5:
++	GB	-- $AT*Fx(B  $A?*7"(B
++	JIS	-- $B855$(B  $B3+H/(B
++	KSC	-- $(Cj*Q((B  $(CKR[!(B
++	BIG5	-- $(0&x86(B  $(0DeBv(B
++
++Just for a test of JISX0212: $BqV$(DiQ(B (the second character is of JISX0212)
++
++Just for a test of JISX0201: (I123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\&]_^(B
++
++Difference between JISX0208.1978 and 1983:
++
++	\x1b$@	$@032)3B3I3v4C4R6F7[979\<I?YA(D[EWEnEsFvGhI0KjKyLyMZO6(B
++	\x1b$B	$B032)3B3I3v4C4R6F7[979\<I?YA(D[EWEnEsFvGhI0KjKyLyMZO6(B
++
++Difference between GB2312.1980 and GBT12345.1990
++
++	\x1b$A	$AMrLuP4;-8v:s<8;z@oTS@kRuQt4SQyJ&8IO0?*Fx5g9X6T;6<&Gl(B
++		$A1_9};9=xT6Ub;*0.HHME4&RURdRZSJ(B
++		$AJiN*3$J1S&6+35K-8xAeR{CE<dNJM7BrBt(B
++	\x1b$(?	$(?MrLuP4;-8v:s<8;z@oTS@kRuQt4SQyJ&8IO0?*Fx5g9X6T;6<&Gl(B
++		$(?1_9};9=xT6Ub;*0.HHME4&RURdRZSJ(B
++		$(?JiN*3$J1S&6+35K-8xAeR{CE<dNJM7BrBt(B
++
++Color names:
++	[1mBLACK	[30m$(0E**d(B	$A:ZI+(B	$B9u?'(B	$(C0KA$;v(B	[30m[22m
++	[1mRED	[31m$(04y*d(B	$A:lI+(B	$B@V?'(B	$(C;!0-;v(B	[30m[22m
++	[1mGREEN	[32m$(0L;*d(B	$ABLI+(B	$BNP?'(B	$(C3k6{;v(B	[30m[22m
++	[1mYELLOW	[33m$(0E(Yn*d(B	$A;FI+(B	$B2+?'(B	$(CH2;v(B	[30m[22m
++	[1mBLUE	[34m$(0Y1*d(B	$A@6I+(B	$B@D?'(B	$(CFD6{;v(B	[30m[22m
++	[1mMAGENTA	[35m$(0C<*d(B	$AWOI+(B	$B;g?'(B	$(C:86s;v(B	[30m[22m
++	[1mCYAN	[36m$(0LJL;*d(B	$A4dBLI+(B	$B@DNP?'(B	$(CC;7O;v(B	[30m[22m
++	[1mWHITE	[37m[40m$(0(v*d(B	$A0WI+(B	$BGr?'(B	$(CGO>a;v(B	[47m[30m[22m
+diff -urNad ghostscript-8.61.dfsg.1~/examples/cjk/iso2022v.ps ghostscript-8.61.dfsg.1/examples/cjk/iso2022v.ps
+--- ghostscript-8.61.dfsg.1~/examples/cjk/iso2022v.ps	1970-01-01 09:00:00.000000000 +0900
++++ ghostscript-8.61.dfsg.1/examples/cjk/iso2022v.ps	2008-01-13 14:24:00.000000000 +0900
+@@ -0,0 +1,1256 @@
++%!PS-Adobe-3.0
++%%Creator: tops by Taiji Yamada <taiji@aihara.co.jp>
++%%Copyright: 2001 Taiji Yamada <taiji@aihara.co.jp> and gs-cjk project
++%%+ This script is part of GNU Ghostscript and is distributed under
++%%+ the terms of the GNU GPL. See the file COPYING for more information.
++%%+ It is also part of tops, a text filter into PostScript for various
++%%+ languages. To get it, visit http://www.aihara.co.jp/~taiji/tops/#tops
++%%DocumentData: Clean7Bit
++%%DocumentMedia: A4 595 842 0 white ()
++%%Extensions: Composite
++%%Orientation: Portrait
++%%Title: iso-2022-7bit - Emacs/Mule editable PostScript file
++%%Version: 1.0
++%
++% Usage:
++%   gs [-dverttext] iso2022.ps
++%
++%%EndComments
++%%BeginProlog
++
++/*gs-cjk (\
++------------------------------------------------------------------------\n\
++This is a script to test CJK fonts such as CID-keyed fonts.\n\
++If you have not done CID-keyed fonts installation and definitions at\n\
++/Resource/CMap and CIDFnmap or /Resource/CIDFont of ghostscript, then\n\
++this script can't work correctly.\n\
++For details, please see README at http://www.gyve.org/gs-cjk/supplement.\n\
++
++If you throw this script into a printer, it requires PostScript 3\n\
++printer and CID-keyed fonts specified in this script.\n\
++------------------------------------------------------------------------\n) def
++
++/notice*stdout 4 dict begin
++  /*open {} def /*echo-n { =only } def /*echo { = } def /*close { flush } def
++  currentdict
++end def
++
++/notice*page 5 dict begin
++  /*y 750 def
++  /*open {
++    gsave initmatrix /Courier findfont 11 scalefont setfont 50 *y moveto
++    *y 750 eq {
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++    } if
++  } def
++  /*echo-n { dup type /stringtype ne { dup length string cvs } if show } def
++  /*echo { *echo-n /*y *y 11 sub def 50 *y moveto } def
++  /*close { grestore } def
++  currentdict
++end def
++
++/greeting*gs-cjk {
++  product (Ghostscript) search not { pop } { pop pop pop QUIET not {
++    notice*stdout begin
++      *open
++      *gs-cjk { (\n) search { *echo } { *echo-n exit } ifelse pop } loop
++      *close
++    end
++  } if } ifelse
++} bind def
++greeting*gs-cjk
++
++/*findfont {
++  dup /Font resourcestatus { pop pop findfont } {
++    notice*page begin
++      *open
++      (Error in findfont: ) *echo-n dup *echo
++      *close
++    end
++    findfont
++  } ifelse
++} bind def
++
++/orighandleerror errordict /handleerror get def
++errordict begin
++  /handleerror {
++    notice*page begin errordict begin $error begin
++      *open
++      (Error of ) *echo-n errorname dup length string cvs *echo
++      *close
++      showpage
++    end end end
++    orighandleerror
++  } bind def
++end
++
++/unknowndef { exch dup where { pop pop pop } { exch def } ifelse } bind def
++
++/ISOLatin1Encoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOLatin1Encoding)
++%%EndComments
++/ISOLatin1Encoding [ % iso-8859-1
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/exclamdown/cent/sterling/currency/yen/brokenbar/section
++/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron
++/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered
++/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown
++% 0xc0
++/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
++/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
++/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply
++/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
++% 0xe0
++/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
++/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
++/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide
++/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOLatin2Encoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOLatin2Encoding)
++%%EndComments
++/ISOLatin2Encoding [ % iso-8859-2
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/Aogonek/breve/Lslash/currency/Lcaron/Sacute/section
++/dieresis/Scaron/Scedilla/Tcaron/Zacute/hyphen/Zcaron/Zdotaccent
++/degree/aogonek/ogonek/lslash/acute/lcaron/sacute/caron
++/cedilla/scaron/scedilla/tcaron/zacute/hungarumlaut/zcaron/zdotaccent
++% 0xc0
++/Racute/Aacute/Acircumflex/Abreve/Adieresis/Lacute/Cacute/Ccedilla
++/Ccaron/Eacute/Eogonek/Edieresis/Ecaron/Iacute/Icircumflex/Dcaron
++/Dcroat/Nacute/Ncaron/Oacute/Ocircumflex/Ohungarumlaut/Odieresis/multiply
++/Rcaron/Uring/Uacute/Uhungarumlaut/Udieresis/Yacute/Tcommaaccent/germandbls
++% 0xe0
++/racute/aacute/acircumflex/abreve/adieresis/lacute/cacute/ccedilla
++/ccaron/eacute/eogonek/edieresis/ecaron/iacute/icircumflex/dcaron
++/dcroat/nacute/ncaron/oacute/ocircumflex/ohungarumlaut/odieresis/divide
++/rcaron/uring/uacute/uhungarumlaut/udieresis/yacute/tcommaaccent/dotaccent
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOLatin3Encoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOLatin3Encoding)
++%%EndComments
++/ISOLatin3Encoding [ % iso-8859-3
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/Hbar/breve/sterling/currency/.notdef/Hcircumflex/section
++/dieresis/Idotaccent/Scedilla/Gbreve/Jcircumflex/hyphen/.notdef/Zdotaccent
++/degree/hbar/twosuperior/threesuperior/acute/mu/hcircumflex/periodcentered
++/cedilla/dotlessi/scedilla/gbreve/jcircumflex/onehalf/.notdef/zdotaccent
++% 0xc0
++/Agrave/Aacute/Acircumflex/.notdef/Adieresis/Cdotaccent/Ccircumflex/Ccedilla
++/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
++/.notdef/Ntilde/Ograve/Oacute/Ocircumflex/Gdotaccent/Odieresis/multiply
++/Gcircumflex/Ugrave/Uacute/Ucircumflex/Udieresis/Ubreve/Scircumflex/germandbls
++% 0xe0
++/agrave/aacute/acircumflex/.notdef/adieresis/cdotaccent/ccircumflex/ccedilla
++/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
++/.notdef/ntilde/ograve/oacute/ocircumflex/gdotaccent/odieresis/divide
++/gcircumflex/ugrave/uacute/ucircumflex/udieresis/ubreve/scircumflex/dotaccent
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOLatin4Encoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOLatin4Encoding)
++%%EndComments
++/ISOLatin4Encoding [ % iso-8859-4
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/Aogonek/kgreenlandic/Rcommaaccent/currency/Itilde/Lcommaaccent/section
++/dieresis/Scaron/Emacron/Gcommaaccent/Tbar/hyphen/Zcaron/macron
++/degree/aogonek/ogonek/rcommaaccent/acute/itilde/lcommaaccent/caron
++/cedilla/scaron/emacron/gcommaaccent/tbar/Eng/zcaron/eng
++% 0xc0
++/Amacron/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Iogonek
++/Ccaron/Eacute/Eogonek/Edieresis/Edotaccent/Iacute/Icircumflex/Imacron
++/Dcroat/Ncommaaccent/Omacron/Kcommaaccent/Ocircumflex/Otilde/Odieresis/multiply
++/Oslash/Uogonek/Uacute/Ucircumflex/Udieresis/Utilde/Umacron/germandbls
++% 0xe0
++/amacron/aacute/acircumflex/atilde/adieresis/aring/ae/iogonek
++/ccaron/eacute/eogonek/edieresis/edotaccent/iacute/icircumflex/imacron
++/dcroat/ncommaaccent/omacron/kcommaaccent/ocircumflex/otilde/odieresis/divide
++/oslash/uogonek/uacute/ucircumflex/udieresis/utilde/umacron/dotaccent
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOCyrillicEncoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOCyrillicEncoding)
++%%EndComments
++/ISOCyrillicEncoding [ % iso-8859-5
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/afii10023/afii10051/afii10052/afii10053/afii10054/afii10055/afii10056
++/afii10057/afii10058/afii10059/afii10060/afii10061/hyphen/afii10062/afii10145
++/afii10017/afii10018/afii10019/afii10020/afii10021/afii10022/afii10024/afii10025
++/afii10026/afii10027/afii10028/afii10029/afii10030/afii10031/afii10032/afii10033
++% 0xc0
++/afii10034/afii10035/afii10036/afii10037/afii10038/afii10039/afii10040/afii10041
++/afii10042/afii10043/afii10044/afii10045/afii10046/afii10047/afii10048/afii10049
++/afii10065/afii10066/afii10067/afii10068/afii10069/afii10070/afii10072/afii10073
++/afii10074/afii10075/afii10076/afii10077/afii10078/afii10079/afii10080/afii10081
++% 0xe0
++/afii10082/afii10083/afii10084/afii10085/afii10086/afii10087/afii10088/afii10089
++/afii10090/afii10091/afii10092/afii10093/afii10094/afii10095/afii10096/afii10097
++/afii61352/afii10071/afii10099/afii10100/afii10101/afii10102/afii10103/afii10104
++/afii10105/afii10106/afii10107/afii10108/afii10109/section/afii10110/afii10193
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOGreekEncoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOGreekEncoding)
++%%EndComments
++/ISOGreekEncoding [ % iso-8859-7
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/quoteleft/quoteright/sterling/.notdef/.notdef/brokenbar/section
++/dieresis/copyright/.notdef/guillemotleft/logicalnot/hyphen/.notdef/afii00208
++/degree/plusminus/twosuperior/threesuperior/tonos/dieresistonos/Alphatonos/periodcentered
++/Epsilontonos/Etatonos/Iotatonos/guillemotright/Omicrontonos/onehalf/Upsilontonos/Omegatonos
++% 0xc0
++/iotadieresistonos/Alpha/Beta/Gamma/Delta/Epsilon/Zeta/Eta
++/Theta/Iota/Kappa/Lambda/Mu/Nu/Xi/Omicron
++/Pi/Rho/.notdef/Sigma/Tau/Upsilon/Phi/Chi
++/Psi/Omega/Iotadieresis/Upsilondieresis/alphatonos/epsilontonos/etatonos/iotatonos
++% 0xe0
++/upsilondieresistonos/alpha/beta/gamma/delta/epsilon/zeta/eta
++/theta/iota/kappa/lambda/mu/nu/xi/omicron
++/pi/rho/sigma1/sigma/tau/upsilon/phi/chi
++/psi/omega/iotadieresis/upsilondieresis/omicrontonos/upsilontonos/omegatonos/.notdef
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOLatin5Encoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOLatin5Encoding)
++%%EndComments
++/ISOLatin5Encoding [ % iso-8859-9
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/exclamdown/cent/sterling/currency/yen/brokenbar/section
++/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron
++/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered
++/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown
++% 0xc0
++/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
++/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
++/Gbreve/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply
++/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Idotaccent/Scedilla/germandbls
++% 0xe0
++/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
++/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
++/gbreve/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide
++/oslash/ugrave/uacute/ucircumflex/udieresis/dotlessi/scedilla/ydieresis
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOLatin6Encoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOLatin6Encoding)
++%%EndComments
++/ISOLatin6Encoding [ % iso-8859-10
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/Aogonek/Emacron/Gcommaaccent/Imacron/Itilde/Kcommaaccent/section
++/Lcommaaccent/Dcroat/Scaron/Tbar/Zcaron/hyphen/Umacron/Eng
++/degree/aogonek/emacron/gcommaaccent/imacron/itilde/kcommaaccent/periodcentered
++/lcommaaccent/dcroat/scaron/tbar/zcaron/afii00208/umacron/eng
++% 0xc0
++/Amacron/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Iogonek
++/Ccaron/Eacute/Eogonek/Edieresis/Edotaccent/Iacute/Icircumflex/Idieresis
++/Eth/Ncommaaccent/Omacron/Oacute/Ocircumflex/Otilde/Odieresis/Utilde
++/Oslash/Uogonek/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
++% 0xe0
++/amacron/aacute/acircumflex/atilde/adieresis/aring/ae/iogonek
++/ccaron/eacute/eogonek/edieresis/edotaccent/iacute/icircumflex/idieresis
++/eth/ncommaaccent/omacron/oacute/ocircumflex/otilde/odieresis/utilde
++/oslash/uogonek/uacute/ucircumflex/udieresis/yacute/thorn/kgreenlandic
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOLatin7Encoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOLatin7Encoding)
++%%EndComments
++/ISOLatin7Encoding [ % iso-8859-13
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/quotedblright/cent/sterling/currency/quotedblbase/brokenbar/section
++/Oslash/copyright/Rcommaaccent/guillemotleft/logicalnot/hyphen/registered/AE
++/degree/plusminus/twosuperior/threesuperior/quotedblleft/mu/paragraph/periodcentered
++/oslash/onesuperior/rcommaaccent/guillemotright/onequarter/onehalf/threequarters/ae
++% 0xc0
++/Aogonek/Iogonek/Amacron/Cacute/Adieresis/Aring/Eogonek/Emacron
++/Ccaron/Eacute/Zacute/Edotaccent/Gcommaaccent/Kcommaaccent/Imacron/Lcommaaccent
++/Scaron/Nacute/Ncommaaccent/Oacute/Omacron/Otilde/Odieresis/multiply
++/Uogonek/Lslash/Sacute/Umacron/Udieresis/Zdotaccent/Zcaron/germandbls
++% 0xe0
++/aogonek/iogonek/amacron/cacute/adieresis/aring/eogonek/emacron
++/ccaron/eacute/zacute/edotaccent/gcommaaccent/kcommaaccent/imacron/lcommaaccent
++/scaron/nacute/ncommaaccent/oacute/omacron/otilde/odieresis/divide
++/uogonek/lslash/sacute/umacron/udieresis/zdotaccent/zcaron/quoteright
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/ISOLatin9Encoding /Encoding resourcestatus { pop pop } {
++%!PS-Adobe-3.0 Resource-Encoding
++%%BeginResource: Encoding (ISOLatin9Encoding)
++%%EndComments
++/ISOLatin9Encoding [ % iso-8859-15
++% 0x00
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0x20
++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
++/parenleft/parenright/asterisk/plus/comma/minus/period/slash
++/zero/one/two/three/four/five/six/seven
++/eight/nine/colon/semicolon/less/equal/greater/question
++% 0x40
++/at/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/bracketleft/backslash/bracketright/asciicircum/underscore
++% 0x60
++/grave/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/braceleft/bar/braceright/asciitilde/.notdef
++% 0x80
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
++% 0xa0
++/space/exclamdown/cent/sterling/Euro/yen/Scaron/section
++/scaron/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron
++/degree/plusminus/twosuperior/threesuperior/Zcaron/mu/paragraph/periodcentered
++/zcaron/onesuperior/ordmasculine/guillemotright/OE/oe/Ydieresis/questiondown
++% 0xc0
++/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
++/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
++/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply
++/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
++% 0xe0
++/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
++/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
++/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide
++/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis
++] /Encoding defineresource pop
++%%EndResource
++} ifelse
++
++/reencode-font { % fontname font encoding reencode-font font
++  exch dup type dup /nametype eq exch /stringtype eq or { findfont } if
++  dup length dict begin
++    {
++      1 index /FID ne 2 index /UniqueID ne and { def } { pop pop } ifelse
++    } forall
++    /Encoding exch dup type /nametype eq { /Encoding findresource } if def
++    dup /FontName exch def
++    currentdict
++  end
++  definefont
++} bind def
++
++/vertical-font { % fontname font vertical-font font
++  dup type dup /nametype eq exch /stringtype eq or { *findfont } if
++  dup length 1 add dict begin {
++    1 index /FontName eq { pop 1 index def } {
++      1 index /FID ne 2 index /UniqueID ne and { def } { pop pop } ifelse
++    } ifelse
++  } forall /WMode 1 def currentdict end
++  definefont
++} bind def
++
++%
++% fontname [font ...] compose-fontset font
++%
++% References:
++% [1] kanno@jn1jdz.ymt.prug.or.jp, ``jisfont.ps,''
++% in Japanesized Tgif(Tgif-3.0J-p17 JIS patch version), 7 1997.
++%
++/compose-fontset {
++  12 dict begin
++    /FontType 0 def
++    /FontMatrix matrix def
++    /FontBBox { 0 0 0 0 } def
++    /FMapType 3 def
++    %/EscChar 255 def
++    /FDepVector [
++      2 index {
++        dup type dup /nametype eq exch /stringtype eq or { *findfont } if
++        dup /WMode known {
++          dup /WMode get /WMode exch def
++          WMode 1 eq {
++            [ 0 1 -1 0 0 .3 ] makefont
++          } if
++        } if
++      } forall
++    ] def
++    /Encoding [ 0 1 4 index length 1 sub {} for ] def
++    pop
++    dup /FontName exch def
++    currentdict
++  end
++  definefont
++} bind def
++
++/decode-mule-big5 { % R1 R2 1|2 decode-mule-big5 R1 R2
++  2 dict begin
++    3 1 roll
++    /r2 exch def
++    /r1 exch def
++    /r2 r1 16#21 sub 94 mul r2 add 16#21 sub def
++    2 eq { /r2 r2 6280 add def } if
++    /r1 r2 157 idiv 16#a1 add def
++    /r2 r2 157 mod def
++    /r2 r2 r2 16#3f lt { 16#40 } { 16#62 } ifelse add def
++    r1 r2
++  end
++} bind def
++/decode-mule-big5-l1 { % str idx decode-mule-big5-l1 str idx
++  2 copy get exch 1 add exch 2 index 2 index get
++  1 decode-mule-big5
++  buffer size 4 -1 roll put /size size 1 add store
++  buffer size 3 -1 roll put /size size 1 add store 
++} bind def
++/decode-mule-big5-l2 { % str idx decode-mule-big5-l2 str idx
++  2 copy get exch 1 add exch 2 index 2 index get
++  2 decode-mule-big5
++  buffer size 4 -1 roll put /size size 1 add store
++  buffer size 3 -1 roll put /size size 1 add store 
++} bind def
++/decode-gl { % str idx decode-gl str idx
++  2 copy get buffer size 3 -1 roll put
++  /size size 1 add store
++} bind def
++/decode-gr { % str idx decode-gr str idx
++  2 copy get 16#80 add buffer size 3 -1 roll put
++  /size size 1 add store
++} bind def
++/iso-2022-set [
++  [ (\033\(B)	{decode-gl}		] % iso-2022:ascii
++  [ (\033,A)	{decode-gr}		] % iso-2022:iso-8859-1,iso-latin1
++  [ (\033,B)	{decode-gr}		] % iso-2022:iso-8859-2,iso-latin2
++% [ (\033,C)	{decode-gr}		] % iso-2022:iso-8859-3,iso-latin3
++% [ (\033,D)	{decode-gr}		] % iso-2022:iso-8859-4,iso-latin4
++% [ (\033,F)	{decode-gr}		] % iso-2022:iso-8859-7,iso-greek
++% [ (\033,G)	{decode-gr}		] % iso-2022:iso-8859-6,iso-arabic
++% [ (\033,H)	{decode-gr}		] % iso-2022:iso-8859-8,iso-hebrew
++% [ (\033,L)	{decode-gr}		] % iso-2022:iso-8859-5,iso-cyrillic
++  [ (\033,M)	{decode-gr}		] % iso-2022:iso-8859-9,iso-latin5
++% [ (\033,T)	{decode-gr}		] % iso-2022:iso-8859-11,iso-thai
++% [ (\033,V)	{decode-gr}		] % iso-2022:iso-8859-10,iso-latin6
++  [ (\033\(I)	{decode-gl}		] % iso-2022:jis-x-0201-kana
++  [ (\033\(J)	{decode-gl}		] % iso-2022:jis-x-0201-roman
++% [ (\033\(T)	{decode-gl}		] % iso-2022:gb-1988-roman
++  [ (\033$@)	{decode-gl}		] % iso-2022:jis-x-0208-1978
++  [ [ (\033$A) (\033$\(A) ]			{decode-gl}	] % iso-2022:gb-2312-1980
++  [ [ (\033$B) (\033$\(B) (\033&@\033$B) ]	{decode-gl}	] % iso-2022:jis-x-0208-1983&1990
++  [ (\033$\(C)	{decode-gl}		] % iso-2022:ks-x-1001-1992
++  [ (\033$\(D)	{decode-gl}		] % iso-2022:jis-x-0212-1990
++  [ (\033$\(?)	{decode-gl}		] % iso-2022:gbt-12345-1990,private-iso-gbt
++  [ (\033$\(G)	{decode-gl}		] % iso-2022:cns-11643-1992-p1
++  [ (\033$\(H)	{decode-gl}		] % iso-2022:cns-11643-1992-p2
++  [ (\033$\(0)	{decode-mule-big5-l1}	] % iso-2022:big5,mule-big5
++  [ (\033$\(1)	{decode-mule-big5-l2}	] % iso-2022:big5,mule-big5
++] def
++/iso-2022-translate { % str idx iso-2022-translate str idx
++  2 copy get 16#20 lt {
++    iso-2022-set length 1 sub 0 1 3 -1 roll {	% str idx j
++      iso-2022-set 1 index get 0 get dup	% str idx j ()|[] ()|[]
++      dup type /stringtype eq {			% str idx j () ()
++        dup length 5 index 5 index 3 -1 roll 7 index length 7 index sub
++        2 copy lt { pop } { exch pop } ifelse
++        getinterval eq				% str idx j () true|false
++      } {					% str idx j [] []
++        pop () false 3 -1 roll {
++          dup 4 -1 roll pop 3 1 roll
++          dup length 6 index 6 index 3 -1 roll 8 index length 8 index sub
++          2 copy lt { pop } { exch pop } ifelse
++          getinterval eq or dup { exit } if	% str idx j () true|false
++        } forall
++      } ifelse
++      { exch /iso-2022-state exch store length 1 sub add exit } { pop } ifelse
++      pop
++    } for
++  } if
++} bind def
++/iso-2022-show { % str iso-2022-show -
++  10 dict begin
++    /iso-6429-state null def
++    /iso-2022-state 0 def
++    /iso-2022-current iso-2022-state def
++    /buffer 65535 string def
++    /size 0 def
++    /width 0 def
++    /BoldFont false def /Underscore false def /BackColor 1 def
++    /foldline dup where { pop foldline } { false } ifelse def
++    0 { % idx {} loop
++      dup 2 index length lt {
++        iso-2022-translate
++        iso-2022-state iso-2022-current ne {
++          buffer size 8#377 put
++          /size size 1 add store
++          buffer size iso-2022-state put
++          /size size 1 add store
++        } {
++          iso-6429-translate
++          iso-6429-state null ne {
++            iso-6429-set iso-6429-state get 1 get exec
++          } {
++            iso-2022-set iso-2022-current get 1 get exec
++          } ifelse
++        } ifelse
++      } {
++        exit
++      } ifelse
++      /iso-2022-current iso-2022-state store
++      1 add
++    } loop
++    pop pop
++    iflush
++  end
++} bind def
++/ichop {	% required for some Adobe-official PostScript interpreters
++  dup length dup 2 sub -2 0 {		% str len len-2 -2 0 {} for
++    2 index 1 index get 8#377 eq	% str len idx c(str idx get) 8#377 eq
++    { exch pop } { pop exit } ifelse	% str len|idx
++  } for 0 exch getinterval		% str'(str 0 len|idx getinterval)
++} bind def
++
++/iso-6429-set [
++  [ (\t)
++    { buffer 0 size getinterval ichop	% ``ichop'' is not required for GS
++      stringwidth pop ( ) stringwidth pop div round cvi width add
++      8 dup 3 1 roll mod sub {
++      buffer size ( ) putinterval /size size 1 add store
++    } repeat } bind
++  ]
++  [ (\f)	{ iflush margin 0 get margin 3 get moveto } bind ]
++  [ [ (\033[m) (\033[0m) ]
++    { iflush
++      /BoldFont false	textfont
++      /Underscore false	textfont
++      0			textcolor
++      1			backcolor
++    } bind
++  ] % All Off
++  [ (\033[1m)	{ iflush /BoldFont true		textfont } bind ]
++  [ (\033[4m)	{ iflush /Underscore true	textfont } bind ]
++  [ (\033[22m)	{ iflush /BoldFont false	textfont } bind ]
++  [ (\033[24m)	{ iflush /Underscore false	textfont } bind ]
++  [ (\033[30m)	{ iflush 0		textcolor } bind ]
++  [ (\033[31m)	{ iflush [ 1 0 0 ]	textcolor } bind ]
++  [ (\033[32m)	{ iflush [ 0 1 0 ]	textcolor } bind ]
++  [ (\033[33m)	{ iflush [ 1 1 0 ]	textcolor } bind ]
++  [ (\033[34m)	{ iflush [ 0 0 1 ]	textcolor } bind ]
++  [ (\033[35m)	{ iflush [ 1 0 1 ]	textcolor } bind ]
++  [ (\033[36m)	{ iflush [ 0 1 1 ]	textcolor } bind ]
++  [ (\033[37m)	{ iflush 1		textcolor } bind ]
++  [ (\033[39m)	{ iflush 0		textcolor } bind ]
++  [ (\033[40m)	{ iflush 0		backcolor } bind ]
++  [ (\033[41m)	{ iflush [ 1 0 0 ]	backcolor } bind ]
++  [ (\033[42m)	{ iflush [ 0 1 0 ]	backcolor } bind ]
++  [ (\033[43m)	{ iflush [ 1 1 0 ]	backcolor } bind ]
++  [ (\033[44m)	{ iflush [ 0 0 1 ]	backcolor } bind ]
++  [ (\033[45m)	{ iflush [ 1 0 1 ]	backcolor } bind ]
++  [ (\033[46m)	{ iflush [ 0 1 1 ]	backcolor } bind ]
++  [ (\033[47m)	{ iflush 1		backcolor } bind ]
++  [ (\033[49m)	{ iflush 1		backcolor } bind ]
++] def
++/iso-6429-translate { % str idx iso-6429-translate str idx
++  /iso-6429-state null store
++  2 copy get 16#20 lt {
++    iso-6429-set length 1 sub 0 1 3 -1 roll {	% str idx j
++      iso-6429-set 1 index get 0 get dup	% str idx j ()|[] ()|[]
++      dup type /stringtype eq {			% str idx j () ()
++        dup length 5 index 5 index 3 -1 roll 7 index length 7 index sub
++        2 copy lt { pop } { exch pop } ifelse
++        getinterval eq				% str idx j () true|false
++      } {					% str idx j [] []
++        pop () false 3 -1 roll {
++          dup 4 -1 roll pop 3 1 roll
++          dup length 6 index 6 index 3 -1 roll 8 index length 8 index sub
++          2 copy lt { pop } { exch pop } ifelse
++          getinterval eq or dup { exit } if	% str idx j () true|false
++        } forall
++      } ifelse
++      { exch /iso-6429-state exch store length 1 sub add exit } { pop } ifelse
++      pop
++    } for
++  } if
++} bind def
++/show-attribute {
++  BackColor dup type dup /integertype eq exch /realtype eq or {
++    dup 1 eq { pop } {
++      gsave setgray BoldFont { setboldfont } if textfill grestore
++    } ifelse
++  } {
++    gsave cvx exec setrgbcolor BoldFont { setboldfont } if textfill grestore
++  } ifelse
++  Underscore {
++    gsave .2 setlinewidth currentpoint fontsize .1 mul sub moveto
++    BoldFont { setboldfont } if dup stringwidth pop 0 rlineto stroke grestore
++  } if
++  BoldFont {
++    gsave setboldfont show currentpoint grestore moveto
++  } {
++    show
++  } ifelse
++} bind def
++/cshow-attribute {
++  pop currentpoint pop add pagesize 0 get margin 2 get sub lt {
++    1 string dup 0 4 -1 roll put show-attribute
++  } {
++    currentpoint exch pop fontsize sub round margin 3 get lt {
++      gsave
++      nextpage preparepage
++      currentpoint matrix currentmatrix grestore setmatrix moveto
++    } {
++      origin 0 get currentpoint exch pop fontsize sub moveto
++    } ifelse
++    1 string dup 0 4 -1 roll put show-attribute
++  } ifelse
++} bind def
++/iflush {
++  size 0 gt {
++    buffer 0 size getinterval ichop	% ``ichop'' is not required for GS
++    dup stringwidth pop ( ) stringwidth pop div round cvi /width exch store
++    foldline not {
++      show-attribute
++    } {
++      dup stringwidth
++      pop currentpoint pop add pagesize 0 get margin 2 get sub lt {
++        show-attribute
++      } {
++        BoldFont { /BoldFont false store
++          gsave setboldfont
++	  { cshow-attribute } exch cshow
++	  currentpoint grestore moveto
++        } {
++          { cshow-attribute } exch cshow
++        } ifelse
++      } ifelse      
++    } ifelse
++    /size 0 store
++  } if
++} bind def
++/textfont { % /BoldFont|/Underscore any textfont -
++  store
++} bind def
++/textcolor {
++  dup type dup /integertype eq exch /realtype eq or { setgray }
++  { cvx exec setrgbcolor } ifelse
++} bind def
++/backcolor {
++  /BackColor exch store
++} bind def
++/textfill {
++  currentpoint fontsize .2 mul sub 2 index stringwidth pop fontsize
++  4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto
++  closepath fill
++} bind def
++/setboldfont {
++  currentfont /FontName get dup length string cvs (-Bold)
++  exch dup length 2 index length add string
++  dup dup 4 2 roll copy length 4 -1 roll putinterval cvn
++  findfont [fontwidth 0 0 fontsize 0 0] makefont setfont
++} bind def
++/iso-6429-show { % str iso-6429-show -
++  8 dict begin
++    /iso-6429-state null def
++    /buffer 65535 string def
++    /size 0 def
++    /width 0 def
++    /BoldFont false def /Underscore false def /BackColor 1 def
++    /foldline dup where { pop foldline } { false } ifelse def
++    0 { % idx {} loop
++      dup 2 index length lt {
++        iso-6429-translate
++        iso-6429-state null ne {
++          iso-6429-set iso-6429-state get 1 get exec
++        } {
++          2 copy get buffer size 3 -1 roll put
++          /size size 1 add store
++        } ifelse
++      } {
++        exit
++      } ifelse
++      1 add
++    } loop
++    pop pop
++    iflush
++  end
++} bind def
++/shown-init {
++  /inshow exch def
++  /mediasize [ 595 842 ] def
++  /mediamargin [ 30 30 30 30 ] def
++  /pagesize [
++    mediasize cvx exec mediamargin cvx exec
++    3 -1 roll add 3 1 roll add 3 1 roll sub 3 1 roll sub exch
++  ] def
++  /margin [ 20 28 20 28 ] def
++  /division [ 1 1 ] def
++  /landscape false def
++  /landscale false def
++  /evenscale true def
++  /pagescale false def
++  pagescale not {
++    /pagesize [
++      pagesize 0 get division 0 get div pagesize 1 get division 1 get div
++    ] store
++  } if
++  landscape {
++    /pagesize [ pagesize cvx exec exch ] store
++    /margin [ margin cvx exec 4 1 roll ] store
++  } if
++  /verttext dup where { pop verttext } { false } ifelse def
++  /foldline true def
++  /header true def /footer true def /border true def
++  /origin [ margin 0 get pagesize 1 get margin 1 get sub fontsize sub ] def
++  /position [ 0 0 ] def
++  /preparepage { initmatrix
++    landscape landscale xor not {
++      mediasize cvx exec exch mediamargin 0 get mediamargin 2 get add sub
++      division 0 get div position 0 get mul mediamargin 0 get add
++      exch dup mediamargin 1 get mediamargin 3 get add sub
++      division 1 get div position 1 get 1 add mul sub mediamargin 1 get sub
++      translate
++      pagescale { landscale not { 1 } { pagesize cvx exec div } ifelse
++        division 1 get div evenscale { dup } {
++          landscale not { 1 } { pagesize cvx exec exch div } ifelse
++          division 0 get div exch
++        } ifelse scale
++      } if
++    } {
++      verttext {
++        180 rotate mediasize { neg } forall translate
++      } if
++      mediasize cvx exec exch mediamargin 0 get mediamargin 2 get add sub
++      division 0 get div position 0 get mul mediamargin 0 get add
++      exch mediamargin 1 get mediamargin 3 get add sub
++      division 1 get div position 1 get mul mediamargin 3 get add
++      translate
++      pagescale { landscale not { 1 } { pagesize cvx exec div } ifelse
++        division 0 get div evenscale { dup } {
++          landscale not { 1 } { pagesize cvx exec exch div } ifelse
++          division 1 get div
++        } ifelse scale
++      } if
++      90 rotate 0 pagesize 1 get neg translate
++    } ifelse
++    origin cvx exec moveto
++  } bind def
++  /gssafe false def	% GS-safe but not always perfect at decoratepage
++  /nextpage { gssafe { /decorated false store } { decoratepage } ifelse
++    position landscape landscale or not { 0 } { 1 } ifelse 2 copy get 1 add
++    dup 4 1 roll put
++    division landscape landscale or not { 0 } { 1 } ifelse get eq {
++      position landscape landscale or not { 0 } { 1 } ifelse 0 put
++      position landscape landscale or not { 1 } { 0 } ifelse 2 copy get 1 add
++      dup 4 1 roll put
++      division landscape landscale or not { 1 } { 0 } ifelse get eq {
++        position landscape landscale or not { 1 } { 0 } ifelse 0 put
++        showpage
++      } if
++    } if
++  } bind def
++  /lastpage { gssafe {} { decoratepage } ifelse showpage } bind def
++  /nextline {
++    currentpoint exch pop fontsize sub round margin 3 get lt {
++      nextpage preparepage /empty true store
++    } {
++      origin 0 get currentpoint exch pop fontsize sub moveto
++    } ifelse
++  } bind def
++  %
++  /page 0 def
++  /infofont /Helvetica findfont [fontwidth 0 0 fontsize 0 0] makefont def
++  /head (gs-cjk project: [1miso-2022-7bit - Emacs/Mule editable PostScript file[22m) def
++  /showheader {
++    header {
++      gsave
++      verttext not {
++        margin 0 get pagesize 1 get margin 1 get sub fontsize add moveto
++      } {
++        margin 0 get fontsize sub margin 3 get translate 90 rotate
++        fontsize fontwidth div fontwidth fontsize div scale 0 0 moveto
++      } ifelse
++      1 dict dup /foldline false put begin
++        infofont setfont head inshow
++      end
++      grestore
++    } if
++  } bind def
++  /foot 64 string def
++  /showfooter {
++    /page page 1 add store
++    footer {
++      gsave
++      verttext not {
++        pagesize 0 get margin 2 get sub margin 3 get fontsize 2 mul sub moveto
++      } {
++        pagesize 0 get margin 2 get sub fontsize 2 mul add
++        pagesize 1 get margin 1 get sub translate 90 rotate
++        fontsize fontwidth div fontwidth fontsize div scale 0 0 moveto
++      } ifelse
++      1 dict dup /foldline false put begin
++        infofont setfont page foot cvs dup stringwidth pop neg 0 rmoveto inshow
++      end
++      grestore
++    } if
++  } bind def
++  /bord {
++    pagesize cvx exec margin { fontsize 2 div sub } forall
++    3 1 roll exch 5 -1 roll exch sub exch 5 -1 roll exch sub exch
++    4 copy 3 1 roll exch 8 -2 roll moveto lineto 4 2 roll lineto lineto
++    closepath
++  } bind def
++  /showborder {
++    border {
++      gsave .25 setlinewidth bord stroke grestore
++    } if
++  } bind def
++  /decoratepage { showheader showfooter showborder } bind def
++  %
++  preparepage /empty true def
++  gssafe { /decorated false def } if
++} bind def
++/shown {
++  gssafe { decorated not { decoratepage /decorated true store } if } if
++  inshow /empty false store nextline
++} bind def
++/shown-close { empty not { lastpage } if } bind def
++/shown-readlines {
++  /shown-buffer 65535 string def
++  shown-init
++  {
++    currentfile shown-buffer readline not { pop exit } if
++    shown
++  } loop
++  shown-close
++} bind def
++/shown-readhexstrings {
++  /shown-buffer 65535 string def
++  /shown-size 0 def
++  /previous-char (\000) def
++  shown-init
++  {
++    currentfile 1 string readhexstring not { pop exit } if
++    dup (\n) ne {
++      dup (\r) ne {
++        shown-buffer shown-size 2 index putinterval
++        /shown-size shown-size 1 add store
++      } { % mac
++        shown-buffer 0 shown-size getinterval shown
++        /shown-size 0 store
++      } ifelse
++    } { % unix
++      previous-char (\r) ne {
++        shown-buffer 0 shown-size getinterval shown
++      } { % dos
++      } ifelse
++      /shown-size 0 store
++    } ifelse
++    previous-char 0 3 -1 roll putinterval
++  } loop
++  shown-close
++} bind def
++
++/fitfont { [ .8335276 0 0 .8335276 0 .1 ] makefont } bind def
++
++/verttext true unknowndef
++/iso-2022-fontset [
++  /Courier			findfont fitfont	% iso-2022:ascii
++  /Courier-Latin1		/Courier /ISOLatin1Encoding	reencode-font fitfont	% iso-2022:iso-8859-1,iso-latin1
++  /Courier-Latin2		/Courier /ISOLatin2Encoding	reencode-font fitfont	% iso-2022:iso-8859-2,iso-latin2
++% /CourierNewLatin3		findfont fitfont	% iso-2022:iso-8859-3,iso-latin3
++% /CourierNewLatin4		findfont fitfont	% iso-2022:iso-8859-4,iso-latin4
++% /CourierNewGreek		findfont fitfont	% iso-2022:iso-8859-7,iso-greek
++% /CourierNewArabic		findfont fitfont	% iso-2022:iso-8859-6,iso-arabic
++% /CourierNewHebrew		findfont fitfont	% iso-2022:iso-8859-8,iso-hebrew
++% /Courier-Cyrillic		/CourierNewCyrillic /ISOCyrillicEncoding	reencode-font fitfont	% iso-2022:iso-8859-5,iso-cyrillic
++  /Courier-Latin5		/Courier /ISOLatin5Encoding	reencode-font fitfont	% iso-2022:iso-8859-9,iso-latin5
++% /CourierNewThai		findfont fitfont	% iso-2022:iso-8859-11,iso-thai
++% /CourierNewLatin6		findfont fitfont	% iso-2022:iso-8859-10,iso-latin6
++  verttext not {
++  /Ryumin-Light.Katakana	% iso-2022:jis-x-0201-kana
++  /Ryumin-Light.Roman		% iso-2022:jis-x-0201-roman
++% /STSong-Light-GBK-EUC-H	% iso-2022:gb-1988-roman
++  /Ryumin-Light-78-H		% iso-2022:jis-x-0208-1978
++  /STSong-Light-GB-H		% iso-2022:gb-2312-1980
++  /Ryumin-Light-H		% iso-2022:jis-x-0208-1983&1990
++  /HYSMyeongJo-Medium-KSC-H	% iso-2022:ks-x-1001-1992
++  /HeiseiMin-W3H-Hojo-H		% iso-2022:jis-x-0212-1990
++  /STSong-Light-GBT-H		% iso-2022:gbt-12345-1990,private-iso-gbt
++  /MSung-Light-CNS1-H		% iso-2022:cns-11643-1992-p1
++  /MSung-Light-CNS2-H		% iso-2022:cns-11643-1992-p2
++  /MSung-Light-ETen-B5-H	% iso-2022:big5,mule-big5
++  /MSung-Light-ETen-B5-H	% iso-2022:big5,mule-big5
++  } {
++  /Ryumin-Light.Katakana-V	/Ryumin-Light.Katakana	vertical-font	% iso-2022:jis-x-0201-kana
++  /Ryumin-Light.Roman-V		/Ryumin-Light.Roman	vertical-font	% iso-2022:jis-x-0201-roman
++% /STSong-Light-GBK-EUC-V	% iso-2022:gb-1988-roman
++  /Ryumin-Light-78-V		% iso-2022:jis-x-0208-1978
++  /STSong-Light-GB-V		% iso-2022:gb-2312-1980
++  /Ryumin-Light-V		% iso-2022:jis-x-0208-1983&1990
++  /HYSMyeongJo-Medium-KSC-V	% iso-2022:ks-x-1001-1992
++  /HeiseiMin-W3H-Hojo-V		% iso-2022:jis-x-0212-1990
++  /STSong-Light-GBT-V		% iso-2022:gbt-12345-1990,private-iso-gbt
++  /MSung-Light-CNS1-V		% iso-2022:cns-11643-1992-p1
++  /MSung-Light-CNS2-V		% iso-2022:cns-11643-1992-p2
++  /MSung-Light-ETen-B5-V	% iso-2022:big5,mule-big5
++  /MSung-Light-ETen-B5-V	% iso-2022:big5,mule-big5
++  } ifelse
++] def
++/iso-2022-bold-fontset [
++  /Courier-Bold			findfont fitfont	% iso-2022:ascii
++  /Courier-Bold-Latin1		/Courier-Bold /ISOLatin1Encoding	reencode-font fitfont	% iso-2022:iso-8859-1,iso-latin1
++  /Courier-Bold-Latin2		/Courier-Bold /ISOLatin2Encoding	reencode-font fitfont	% iso-2022:iso-8859-2,iso-latin2
++% /CourierNewLatin3-Bold	findfont fitfont	% iso-2022:iso-8859-3,iso-latin3
++% /CourierNewLatin4-Bold	findfont fitfont	% iso-2022:iso-8859-4,iso-latin4
++% /CourierNewGreek-Bold		findfont fitfont	% iso-2022:iso-8859-7,iso-greek
++% /CourierNewArabic-Bold	findfont fitfont	% iso-2022:iso-8859-6,iso-arabic
++% /CourierNewHebrew-Bold	findfont fitfont	% iso-2022:iso-8859-8,iso-hebrew
++% /Courier-Bold-Cyrillic	/CourierNewCyrillic-Bold /ISOCyrillicEncoding	reencode-font fitfont	% iso-2022:iso-8859-5,iso-cyrillic
++  /Courier-Bold-Latin5		/Courier-Bold /ISOLatin5Encoding	reencode-font fitfont	% iso-2022:iso-8859-9,iso-latin5
++% /CourierNewThai-Bold		findfont fitfont	% iso-2022:iso-8859-11,iso-thai
++% /CourierNewLatin6-Bold	findfont fitfont	% iso-2022:iso-8859-10,iso-latin6
++  verttext not {
++  /GothicBBB-Medium.Katakana	% iso-2022:jis-x-0201-kana
++  /GothicBBB-Medium.Roman	% iso-2022:jis-x-0201-roman
++% /STHeiti-Regular-GBK-EUC-H	% iso-2022:gb-1988-roman
++  /GothicBBB-Medium-78-H	% iso-2022:jis-x-0208-1978
++  /STHeiti-Regular-GB-H		% iso-2022:gb-2312-1980
++  /GothicBBB-Medium-H		% iso-2022:jis-x-0208-1983&1990
++  /HYGoThic-Medium-KSC-H	% iso-2022:ks-x-1001-1992
++  /HeiseiKakuGo-W5H-Hojo-H	% iso-2022:jis-x-0212-1990
++  /STHeiti-Regular-GBT-H	% iso-2022:gbt-12345-1990,private-iso-gbt
++  /MHei-Medium-CNS1-H		% iso-2022:cns-11643-1992-p1
++  /MHei-Medium-CNS2-H		% iso-2022:cns-11643-1992-p2
++  /MHei-Medium-ETen-B5-H	% iso-2022:big5,mule-big5
++  /MHei-Medium-ETen-B5-H	% iso-2022:big5,mule-big5
++  } {
++  /GothicBBB-Medium.Katakana-V	/GothicBBB-Medium.Katakana	vertical-font	% iso-2022:jis-x-0201-kana
++  /GothicBBB-Medium.Roman-V	/GothicBBB-Medium.Roman		vertical-font	% iso-2022:jis-x-0201-roman
++% /STHeiti-Regular-GBK-EUC-V	% iso-2022:gb-1988-roman
++  /GothicBBB-Medium-78-V	% iso-2022:jis-x-0208-1978
++  /STHeiti-Regular-GB-V		% iso-2022:gb-2312-1980
++  /GothicBBB-Medium-V		% iso-2022:jis-x-0208-1983&1990
++  /HYGoThic-Medium-KSC-V	% iso-2022:ks-x-1001-1992
++  /HeiseiKakuGo-W5H-Hojo-V	% iso-2022:jis-x-0212-1990
++  /STHeiti-Regular-GBT-V	% iso-2022:gbt-12345-1990,private-iso-gbt
++  /MHei-Medium-CNS1-V		% iso-2022:cns-11643-1992-p1
++  /MHei-Medium-CNS2-V		% iso-2022:cns-11643-1992-p2
++  /MHei-Medium-ETen-B5-V	% iso-2022:big5,mule-big5
++  /MHei-Medium-ETen-B5-V	% iso-2022:big5,mule-big5
++  } ifelse
++] def
++/fontset-iso-2022 iso-2022-fontset compose-fontset pop
++/fontset-iso-2022-Bold iso-2022-bold-fontset compose-fontset pop
++%%EndProlog
++/fontsize 11 def /fontwidth 11 def
++/fontset-iso-2022 findfont [fontwidth 0 0 fontsize 0 0] makefont setfont
++{ iso-2022-show } shown-readlines
++A list of ways to say hello in various languages.
++
++Czech (,Bh(Besky)		Dobr,B}(B den
++Danish (Dansk)		Hej, Goddag
++English			Hello
++Esperanto		Saluton
++Estonian		Tere, Tervist
++PostScript		(Hello) =
++Finnish (Suomi)		Hei
++French (Fran,Ag(Bais)	Bonjour, Salut
++German (Deutsch Nord)	Guten Tag
++
++Italiano		Ciao, Buon giorno
++
++Maltese			Ciao
++Nederlands, Vlaams	Hallo, Dag
++Norwegian (Norsk)	Hei, God dag
++Polish			Dzie,Bq(B dobry, Hej
++
++Slovak			Dobr,B}(B de,Br(B
++Spanish (Espa,Aq(Bol)	,A!(BHola!
++Swedish (Svenska)	Hej, Goddag
++
++Turkish (T,M|(Brk,Mg(Be)	Merhaba
++
++Chinese  ($(GDcEF$(0!.$(GiGk#$(0!.Vn^V)t(B)		$(0<@)p$(G!$I#Go!$$(0'*)y!$(B
++Chinese  ($AVPND#,::So#,<rLeWV(B)		$ADz:C!#Dc:C!#(B
++Japanese ($BF|K\8l!"4A;z!"J?2>L>!"JR2>L>(B)	$B$3$s$K$A$O!#(I:]FAJ(B.
++Korean   ($(CGQ1[#,ySm.(B)			$(C>H3gGO=J4O1n#.>H3gGO<<?d#.(B
++
++Difference among chinese characters in GB, JIS, KSC, BIG5:
++	GB	-- $AT*Fx(B  $A?*7"(B
++	JIS	-- $B855$(B  $B3+H/(B
++	KSC	-- $(Cj*Q((B  $(CKR[!(B
++	BIG5	-- $(0&x86(B  $(0DeBv(B
++
++Just for a test of JISX0212: $BqV$(DiQ(B (the second character is of JISX0212)
++
++Just for a test of JISX0201: (I123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\&]_^(B
++
++Difference between JISX0208.1978 and 1983:
++
++	\x1b$@	$@032)3B3I3v4C4R6F7[979\<I?YA(D[EWEnEsFvGhI0KjKyLyMZO6(B
++	\x1b$B	$B032)3B3I3v4C4R6F7[979\<I?YA(D[EWEnEsFvGhI0KjKyLyMZO6(B
++
++Difference between GB2312.1980 and GBT12345.1990
++
++	\x1b$A	$AMrLuP4;-8v:s<8;z@oTS@kRuQt4SQyJ&8IO0?*Fx5g9X6T;6<&Gl(B
++		$A1_9};9=xT6Ub;*0.HHME4&RURdRZSJ(B
++		$AJiN*3$J1S&6+35K-8xAeR{CE<dNJM7BrBt(B
++	\x1b$(?	$(?MrLuP4;-8v:s<8;z@oTS@kRuQt4SQyJ&8IO0?*Fx5g9X6T;6<&Gl(B
++		$(?1_9};9=xT6Ub;*0.HHME4&RURdRZSJ(B
++		$(?JiN*3$J1S&6+35K-8xAeR{CE<dNJM7BrBt(B
++
++Color names:
++	[1mBLACK	[30m$(0E**d(B	$A:ZI+(B	$B9u?'(B	$(C0KA$;v(B	[30m[22m
++	[1mRED	[31m$(04y*d(B	$A:lI+(B	$B@V?'(B	$(C;!0-;v(B	[30m[22m
++	[1mGREEN	[32m$(0L;*d(B	$ABLI+(B	$BNP?'(B	$(C3k6{;v(B	[30m[22m
++	[1mYELLOW	[33m$(0E(Yn*d(B	$A;FI+(B	$B2+?'(B	$(CH2;v(B	[30m[22m
++	[1mBLUE	[34m$(0Y1*d(B	$A@6I+(B	$B@D?'(B	$(CFD6{;v(B	[30m[22m
++	[1mMAGENTA	[35m$(0C<*d(B	$AWOI+(B	$B;g?'(B	$(C:86s;v(B	[30m[22m
++	[1mCYAN	[36m$(0LJL;*d(B	$A4dBLI+(B	$B@DNP?'(B	$(CC;7O;v(B	[30m[22m
++	[1mWHITE	[37m[40m$(0(v*d(B	$A0WI+(B	$BGr?'(B	$(CGO>a;v(B	[47m[30m[22m
