-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Package: ghostscript
Version: 8.71~dfsg2-1
Severity: wishlist
Tags: l10n patch

Hi,

Thank you for keeping ghostscript maintainance.

I saw newest changelog had:
  * Strip CMap files (shipped separately, registered with DeFoMa).

But "dropping defoma" is one of goals on Squeeze, at least of
pkg-fonts-devel team.
Actually because most fonts have already dropped defoma, CJK support
of ghostscript is dead at this time.

I tried to solve this situation since some monthes ago,
http://wiki.debian.org/gs-undefoma
and I believe the patch is completed now.
This patch is passed a test by some Japanese users.

Could you see the attached patch?
It adds:
  update-gsfontmap which makes cidfmap and Fontmap.
  /var/lib/ghostscript/CMap and /var/lib/ghostscript/fonts directory.
It removes:
  defoma dependency.
  old defoma files.

This migration needs a modification of gsfonts, cmap-adobe-*, and
gs-cjk-resource also. I'll send a patch to gsfonts later.
I can upload cmap-adobe-* and gs-cjk-resource by myself  as soon
as you apply my patch.

Thanks,
- -- 
Kenshi Muto
km...@debian.org
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Processed by Mailcrypt 3.5.9 <http://mailcrypt.sourceforge.net/>

iQIcBAEBCgAGBQJL8pN4AAoJEB0hyD3EUuD8QCEP/3J2QMxZihblgSvSknjjgOAw
mzlXB1jYBYz9vNUkKIrX3CbxTm/yUBRf6bJk9Ov8pK/ptKUXcOZ/dS6Qi6rlPEHw
157cBjaUaEu18YA0SiFHGLPy6417JuqToOAWj+xlAjq0B0caIbmHVx/9e5cO7vi1
2put6F00JQzlhnShQYw3Dph0yadLMe7ddc72TYbRb9049oPOypMJMy+25Zy0JFsZ
cQxYRbpYVms1A8RvcRLJJJyLSgNplg4clnyhvono+97UVc1KoMjwt3GXa8Nt0EWr
3/oYVHheHUjKqvfOUFHLa8H9Iy70YHts4XjybYC1zQBS0GGqFUsw9Lio70kU5Vxw
xV/ggj6JP1ndrueTUjQ9zbN2yu9M94B+zCqeHNp1ntdPM9CdxYycy825idecwPM8
r19kKkl+kgvE95YzmxgjQUWFBtacciTXfm+nTUhf42iv8wXsPv7kfFa8qzQ+qkaA
qYnIQAJ7b4OD7A7hYeS5ItftRTWKdM/0yeSKekvh9caHdON2XaOhAXwIOT/HtLDl
j0MCSWOcJYwpwPgm6C+kWDGY3aBY8cKJSa1dJQ8AR5yDtDhqMcF3PD1DKJ7CSEDj
kghdJOnOsZ2HhH5No78b/SONu0e8LpCCdRMFdcGnQW8ypdKwVTYEBXAlzldm8VLO
RdtJritNKP9/agj/I/IZ
=lw3B
-----END PGP SIGNATURE-----
diff -Nru ghostscript-8.71~dfsg2/debian/changelog 
ghostscript-8.71~dfsg2/debian/changelog
--- ghostscript-8.71~dfsg2/debian/changelog     2010-05-18 02:04:31.000000000 
+0900
+++ ghostscript-8.71~dfsg2/debian/changelog     2010-05-18 21:12:05.000000000 
+0900
@@ -1,3 +1,11 @@
+ghostscript (8.71~dfsg2-1.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Drop defoma.
+  * Add update-gsfontmap to provide cidfmap and Fontmap.
+
+ -- Kenshi Muto <km...@debian.org>  Tue, 18 May 2010 21:11:45 +0900
+
 ghostscript (8.71~dfsg2-1) unstable; urgency=low
 
   * Use system jbig2dec:
diff -Nru ghostscript-8.71~dfsg2/debian/ghostscript.dirs 
ghostscript-8.71~dfsg2/debian/ghostscript.dirs
--- ghostscript-8.71~dfsg2/debian/ghostscript.dirs      2010-02-14 
20:02:47.000000000 +0900
+++ ghostscript-8.71~dfsg2/debian/ghostscript.dirs      2010-05-18 
21:07:43.000000000 +0900
@@ -1,3 +1,4 @@
-etc/defoma/config
-var/lib/defoma/gs.d/dirs/fonts
-var/lib/defoma/gs.d/dirs/CMap
+etc/ghostscript/cidfmap.d
+etc/ghostscript/fontmap.d
+var/lib/ghostscript/CMap
+var/lib/ghostscript/fonts
diff -Nru ghostscript-8.71~dfsg2/debian/ghostscript.install.in 
ghostscript-8.71~dfsg2/debian/ghostscript.install.in
--- ghostscript-8.71~dfsg2/debian/ghostscript.install.in        2010-02-14 
20:02:47.000000000 +0900
+++ ghostscript-8.71~dfsg2/debian/ghostscript.install.in        2010-05-18 
21:07:09.000000000 +0900
@@ -1,5 +1,5 @@
 usr/bin/
-usr/share/defoma/scripts/
+usr/sbin/
 # install subdir explicitly, to fail if wrong (same var used for symlink too)
 usr/share/ghostscript/__ABI__/
 usr/share/man/
diff -Nru ghostscript-8.71~dfsg2/debian/ghostscript.links.in 
ghostscript-8.71~dfsg2/debian/ghostscript.links.in
--- ghostscript-8.71~dfsg2/debian/ghostscript.links.in  2010-02-14 
20:02:47.000000000 +0900
+++ ghostscript-8.71~dfsg2/debian/ghostscript.links.in  2010-05-18 
21:06:57.000000000 +0900
@@ -1,4 +1,4 @@
-var/lib/defoma/gs.d/dirs/CMap          
usr/share/ghostscript/__ABI__/Resource/CMap
+var/lib/ghostscript/CMap               
usr/share/ghostscript/__ABI__/Resource/CMap
 usr/bin/gs                             usr/bin/ghostscript
 usr/bin/ps2ascii                       usr/bin/ps2txt
 usr/share/man/de/man1/ps2ps.1.gz       usr/share/man/de/man1/eps2eps.1.gz
diff -Nru ghostscript-8.71~dfsg2/debian/ghostscript.postinst 
ghostscript-8.71~dfsg2/debian/ghostscript.postinst
--- ghostscript-8.71~dfsg2/debian/ghostscript.postinst  2010-02-14 
20:02:47.000000000 +0900
+++ ghostscript-8.71~dfsg2/debian/ghostscript.postinst  2010-05-18 
21:11:39.000000000 +0900
@@ -4,12 +4,7 @@
 
 case "$1" in
     configure)
-       # 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
+       update-gsfontmap
        ;;
     abort-upgrade|abort-remove|abort-deconfigure)
        ;;
diff -Nru ghostscript-8.71~dfsg2/debian/ghostscript.postrm 
ghostscript-8.71~dfsg2/debian/ghostscript.postrm
--- ghostscript-8.71~dfsg2/debian/ghostscript.postrm    2010-02-14 
20:02:47.000000000 +0900
+++ ghostscript-8.71~dfsg2/debian/ghostscript.postrm    1970-01-01 
09:00:00.000000000 +0900
@@ -1,24 +0,0 @@
-#! /bin/sh
-
-set -e
-
-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
-
-#DEBHELPER#
-
-exit 0
diff -Nru ghostscript-8.71~dfsg2/debian/ghostscript.preinst 
ghostscript-8.71~dfsg2/debian/ghostscript.preinst
--- ghostscript-8.71~dfsg2/debian/ghostscript.preinst   2010-02-14 
20:02:47.000000000 +0900
+++ ghostscript-8.71~dfsg2/debian/ghostscript.preinst   2010-05-18 
21:28:08.000000000 +0900
@@ -16,6 +16,14 @@
         if dpkg --compare-versions "$2" lt-nl "8.64~dfsg-1"; then
                update-alternatives --remove-all ps2pdf || true
        fi
+
+       # Remove obsolete defoma files
+       if dpkg --compare-versions "$2" lt-nl "8.71~dfsg2-1"; then
+         rm -rf /var/lib/defoma/gs.d
+         rm -f /etc/defoma/ghostscript.subst-rule
+         rm -f /etc/defoma/ghostscript.subst-rule~
+         rm -f /var/lib/defoma/ghostscript.subst-cache
+       fi
        ;;
     abort-upgrade)
        ;;
diff -Nru ghostscript-8.71~dfsg2/debian/ghostscript.prerm 
ghostscript-8.71~dfsg2/debian/ghostscript.prerm
--- ghostscript-8.71~dfsg2/debian/ghostscript.prerm     2010-02-14 
20:02:47.000000000 +0900
+++ ghostscript-8.71~dfsg2/debian/ghostscript.prerm     2010-05-18 
21:15:25.000000000 +0900
@@ -4,14 +4,10 @@
 
 case "$1" in
     remove)
-       if which defoma-app >/dev/null 2>&1; then
-               defoma-app -t purge gs
-       fi
+       rm -f /var/lib/ghostscript/fonts/cidfmap \
+         /var/lib/ghostscript/fonts/Fontmap
        ;;
     upgrade)
-       if which defoma-app >/dev/null 2>&1; then
-               defoma-app -t clean gs
-       fi
        ;;
     deconfigure)
        ;;
diff -Nru ghostscript-8.71~dfsg2/debian/gs.defoma 
ghostscript-8.71~dfsg2/debian/gs.defoma
--- ghostscript-8.71~dfsg2/debian/gs.defoma     2010-02-14 20:02:47.000000000 
+0900
+++ ghostscript-8.71~dfsg2/debian/gs.defoma     1970-01-01 09:00:00.000000000 
+0900
@@ -1,930 +0,0 @@
-#
-# 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;
diff -Nru ghostscript-8.71~dfsg2/debian/rules 
ghostscript-8.71~dfsg2/debian/rules
--- ghostscript-8.71~dfsg2/debian/rules 2010-05-08 00:05:02.000000000 +0900
+++ ghostscript-8.71~dfsg2/debian/rules 2010-05-18 21:42:28.000000000 +0900
@@ -125,7 +125,7 @@
        --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
+       
--with-fontpath=/var/lib/ghostscript/fonts:/usr/share/cups/fonts:/usr/share/ghostscript/fonts:/usr/local/lib/ghostscript/fonts:/usr/share/fonts
 # cairo support still experimental and makes core gs depend on X11 libs.
 DEB_CONFIGURE_EXTRA_FLAGS += --disable-cairo
 
@@ -171,10 +171,6 @@
        rm -rf sobin soobj gs.a
 
 install/ghostscript::
-       mkdir -p $(DEB_DESTDIR)/usr/share/defoma/scripts/
-       install -m 644 debian/gs.defoma \
-               $(DEB_DESTDIR)/usr/share/defoma/scripts/
-
        # Remove some of the scripts
        rm $(DEB_DESTDIR)/usr/bin/unix-lpr.sh 
$(DEB_DESTDIR)/usr/bin/lprsetup.sh $(DEB_DESTDIR)/usr/bin/pv.sh 
$(DEB_DESTDIR)/usr/bin/fixmswrd.pl
 
@@ -183,6 +179,8 @@
 
        # Rename /usr/bin/gsc, to not conflict with gambc
        mv $(DEB_DESTDIR)/usr/bin/gsc $(DEB_DESTDIR)/usr/bin/gs
+       mkdir -p $(DEB_DESTDIR)/usr/sbin/
+       install -m 755 debian/update-gsfontmap $(DEB_DESTDIR)/usr/sbin
 
        # Strip CMap files (shipped separately, registered with DeFoMa)
        rm -rf $(DEB_DESTDIR)/usr/share/ghostscript/$(abi)/Resource/CMap
@@ -224,11 +222,10 @@
 CDBS_BUILD_DEPENDS += , pkg-config
 
 # Needed (always, often, sometimes) at runtime
-CDBS_DEPENDS_ghostscript += , gsfonts (>= 6.0-1), defoma, debconf | 
debconf-2.0, debianutils (>= 1.6), libgs8 (= $(DEB_VERSION))
+CDBS_DEPENDS_ghostscript += , gsfonts (>= 6.0-1), debconf | debconf-2.0, 
debianutils (>= 1.6), libgs8 (= $(DEB_VERSION))
 CDBS_DEPENDS_ghostscript-cups += , ghostscript (>= 8.64~dfsg-8)
 CDBS_DEPENDS_ghostscript-x += , ghostscript (= $(DEB_VERSION))
 CDBS_DEPENDS_libgs-dev += , libgs8 (= $(DEB_VERSION))
-CDBS_RECOMMENDS_ghostscript += , psfontmgr
 CDBS_RECOMMENDS_ghostscript-cups += , cups, cups-client
 CDBS_SUGGESTS_ghostscript += , ghostscript-x, ghostscript-cups, hpijs
 CDBS_SUGGESTS_ghostscript-doc += , ghostscript
diff -Nru ghostscript-8.71~dfsg2/debian/update-gsfontmap 
ghostscript-8.71~dfsg2/debian/update-gsfontmap
--- ghostscript-8.71~dfsg2/debian/update-gsfontmap      1970-01-01 
09:00:00.000000000 +0900
+++ ghostscript-8.71~dfsg2/debian/update-gsfontmap      2010-05-18 
21:30:21.000000000 +0900
@@ -0,0 +1,20 @@
+#!/bin/sh
+# update-gsfontmap
+# Copyright 2010 Kenshi Muto <km...@debian.org>
+# License: GPL
+
+CIDFMAP=/var/lib/ghostscript/fonts/cidfmap
+FONTMAP=/var/lib/ghostscript/fonts/Fontmap
+CIDFDIR=/etc/ghostscript/cidfmap.d/
+FONTMDIR=/etc/ghostscript/fontmap.d/
+
+rm -f $CIDFMAP $FONTMAP
+touch $CIDFMAP $FONTMAP
+
+for i in $CIDFDIR/*.conf; do
+    cat $i >> $CIDFMAP
+done 2>/dev/null
+
+for i in $FONTMDIR/*.conf; do
+    cat $i >> $FONTMAP
+done 2>/dev/null

Reply via email to