summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Build/source/texk/tetex/ChangeLog1
-rw-r--r--Build/source/texk/tetex/updmap.man362
-rwxr-xr-xMaster/texmf/scripts/tetex/updmap.pl1012
3 files changed, 706 insertions, 669 deletions
diff --git a/Build/source/texk/tetex/ChangeLog b/Build/source/texk/tetex/ChangeLog
index 32fb254ee40..eccade77090 100644
--- a/Build/source/texk/tetex/ChangeLog
+++ b/Build/source/texk/tetex/ChangeLog
@@ -1,6 +1,7 @@
2011-06-16 Karl Berry <karl@tug.org>
* updmap.pl (help): add more info and modify to work with help2man.
+ * updmap.man: generate with help2man.
* updmap.pl (progname): eliminate fn in favor of $0
or hardwired "updmap" as appropriate.
diff --git a/Build/source/texk/tetex/updmap.man b/Build/source/texk/tetex/updmap.man
index b9487c9a0c1..a4d08594617 100644
--- a/Build/source/texk/tetex/updmap.man
+++ b/Build/source/texk/tetex/updmap.man
@@ -1,260 +1,238 @@
-.TH "updmap" "1" "August 2009" "TeX Live" "TeX Live"
-.PP
-.SH "NAME"
-updmap \- Update font map files for TeX output drivers\&.
-.PP
-updmap-sys \- Update font map files for TeX output drivers system\-wide\&.
-.PP
-.SH "SYNOPSIS"
-.PP
-\fBupdmap\fP [ \fIOPTION\fP \&.\&.\&. ] [
-\fICOMMAND\fP \&.\&.\&. ]
-.PP
-\fBupdmap-sys\fP [ \fIOPTION\fP \&.\&.\&. ] [
-\fICOMMAND\fP \&.\&.\&. ]
-.PP
-.SH "DESCRIPTION"
-.PP
-\fBupdmap\fP is a utility that creates font configuration files for
-\fBdvips\fP(1), \fBpdftex\fP(1), \fBxdvi\fP(1),
-\fBps2pk\fP(1), \fBgsftopk\fP(1), \fBdvipdfm\fP(1) and (soon) \fBdvipdfmx\fP(1)\&.
-In an ideal world, updmap would be unnecessary -- each of these
-programs would read the same configuration file to learn what fonts
-are available and how they should be treated\&. As things stand,
-however, each of these tools has subtly different requirements and
-thereby needs its own font configuration file\&. \fBupdmap\fP creates
-font configuration files for all of these programs from a single
-source, allowing you to easily keep all the different configuration
-files in sync\&.
-.PP
-\fBupdmap\fP reads a configuration file, \fBupdmap\&.cfg\fP(5) and,
-depending on the options specified in that file and on the command
-line, \fBupdmap\fP will write generated map files to a directory of
-your choosing (via one of the \fB--*outputdir\fP options), or automatically
-determine where to place the files\&. In the latter case, it tries to
-use the tree where the variable TEXMFVAR points to.
-When used with the options \fB--edit\fP, \fB--setoption\fP,
-\fB--enable\fP, \fB--disable\fP, or \fB--syncwithtrees\fP, \fBupdmap\fP will first write
-\fBupdmap\&.cfg\fP(5) and regenerate the map files only if this file
-has been changed\&.
-.PP
-.SH "OPTIONS"
-.PP
-The following command-line options are available:
-.IP
-.IP "\fB--cnffile\fP \fIfile\fP"
-Specify a configuration \fIfile\fP\&.
-.IP
-.IP "\fB--dvipsoutputdir\fP \fIdirectory\fP"
-Specify the output
-\fIdirectory\fP for map files generated with dvips syntax\&.
-.IP
-.IP "\fB--pdftexoutputdir\fP \fIdirectory\fP"
-Specify the output
-\fIdirectory\fP for map files generated with pdftex syntax\&.
-.IP
-.IP "\fB--dvipdfmoutputdir\fP \fIdirectory\fP"
-Specify the output
-\fIdirectory\fP for map files generated with dvipdfm syntax\&.
-.IP
-.IP "\fB--outputdir\fP \fIdirectory\fP"
-Specify the output
-\fIdirectory\fP for all generated map files\&.
-.IP
-.IP "\fB--nohash\fP"
-Do not run \fBtexhash\fP(1)\&.
-.IP
-.IP "\fB--nomkmap\fP"
-Do not recreate existing map files\&.
-.IP
-.IP "\fB--quiet\fP"
-Reduce verbosity\&.
-.IP
-.PP
-The following commands can be substituted for \fICOMMAND\fP:
-.IP
-.IP "\fB--edit\fP"
-Edit the \fIupdmap\&.cfg\fP file\&.
-.IP
-.IP "\fB--help\fP"
-Show a command and option summary\&.
-.IP
-.IP "\fB--showoptions\fP \fIitem\fP"
-Show alternatives for option
-\fIitem\fP\&.
-.IP
-.IP "\fB--setoption\fP \fIoption\fP \fIvalue\fP"
-Set
-\fIoption\fP to \fIvalue\fP, where \fIoption\fP is one of:
-.IP ""
-\fBdvipsPreferOutline\fP
-.IP ""
-\fBLW35\fP
-.IP ""
-\fBdvipsDownloadBase35\fP
-.IP ""
-\fBpdftexDownloadBase14\fP
-.IP ""
-\fBdvipdfmDownloadBase14\fP
-.IP
-.IP "\fB--enable\fP \fImaptype\fP \fImapfile\fP"
-Add or enable a \fBMap\fP or \fBMixedMap\fP for \fImapfile\fP\&.
-.IP
-.IP "\fB--enable Map=\fImapfile\fP"
-Add or enable a Map for \fImapfile\fP\&.
-.IP
-.IP "\fB--enable MixedMap=\fP\fImapfile\fP"
-Add or enable a MixedMap for \fImapfile\fP\&.
-.IP
-.IP "\fB--disable\fP \fImapfile\fP"
-Disable Map or MixedMap for \fImapfile\fP\&.
-.IP
-.IP "\fB--syncwithtrees\fP"
-Disable entries in the config file that refer to map files which are
-unavailable\&.
-.IP
-.IP "\fB--listmaps\fP"
-List all active and inactive maps\&.
-.IP
-.IP "\fB--listavailablemaps\fP"
-List all active and inactive maps, but restrict output to map files
-that are available in one of the texmf trees\&.
-.PP
-.SH "FILES"
-.PP
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.40.3.
+.TH UPDMAP "1" "June 2011" "TeX Live" "User Commands"
+.SH NAME
+updmap \- manage TeX font maps, per-user
+.br
+updmap-sys \- manage TeX font maps, system-wide
+.SH SYNOPSIS
+.B updmap
+[\fIOPTION\fR] ... [\fICOMMAND\fR]
+.br
+.B updmap-sys
+[\fIOPTION\fR] ... [\fICOMMAND\fR]
+.SH DESCRIPTION
+updmap (TeX Live) version $Id: updmap.pl 23018 2011\-06\-16 20:35:36Z karl $
+.PP
+Update the default font map files used by pdftex, dvips, and dvipdfm(x),
+as determined by the configuration file updmap.cfg (the one returned by
+running "kpsewhich updmap.cfg").
+.PP
+Among other things, these map files are used to determine which fonts
+should be used as bitmaps and which as outlines, and to determine which
+fonts are included in the output.
+.PP
+By default, the TeX filename database (ls\-R) is also updated.
+.SH OPTIONS
+.TP
+\fB\-\-cnffile\fR FILE
+read FILE for the updmap configuration
+.TP
+\fB\-\-dvipsoutputdir\fR DIR
+specify output directory (dvips syntax)
+.TP
+\fB\-\-pdftexoutputdir\fR DIR
+specify output directory (pdftex syntax)
+.TP
+\fB\-\-outputdir\fR DIR
+specify output directory (for all files)
+.TP
+\fB\-\-copy\fR
+cp generic files rather than using symlinks
+.TP
+\fB\-\-force\fR
+recreate files even if config hasn't changed
+.TP
+\fB\-\-nomkmap\fR
+do not recreate map files
+.TP
+\fB\-\-nohash\fR
+do not run texhash
+.TP
+\fB\-n\fR, \fB\-\-dry\-run\fR
+only show the configuration, no output
+.TP
+\fB\-\-quiet\fR, \fB\-\-silent\fR
+reduce verbosity
+.SS "Commands:"
+.TP
+\fB\-\-help\fR
+show this message and exit
+.TP
+\fB\-\-version\fR
+show version information and exit
+.TP
+\fB\-\-showoptions\fR ITEM
+show alternatives for options
+.TP
+\fB\-\-setoption\fR OPTION VALUE
+set option, where OPTION is one of:
+LW35, dvipsPreferOutline, dvipsDownloadBase35,
+or pdftexDownloadBase14
+.TP
+\fB\-\-setoption\fR OPTION=VALUE
+as above, just different syntax
+.TP
+\fB\-\-enable\fR MAPTYPE MAPFILE
+add "MAPTYPE MAPFILE" to updmap.cfg,
+where MAPTYPE is either Map or MixedMap
+.TP
+\fB\-\-enable\fR Map=MAPFILE
+add "Map MAPFILE" to updmap.cfg
+.HP
+\fB\-\-enable\fR MixedMap=MAPFILE add "MixedMap MAPFILE" to updmap.cfg
+.TP
+\fB\-\-disable\fR MAPFILE
+disable MAPFILE, whether Map or MixedMap
+.TP
+\fB\-\-listmaps\fR
+list all active and inactive maps
+.TP
+\fB\-\-listavailablemaps\fR
+same as \fB\-\-listmaps\fR, but without
+unavailable map files
+.TP
+\fB\-\-syncwithtrees\fR
+disable unavailable map files in updmap.cfg
+.PP
+Explanation of the map types: the (only) difference between Map and
+MixedMap is that MixedMap entries are not added to psfonts_pk.map.
+The purpose is to help users with printers that render Type 1 outline
+fonts worse than mode\-tuned Type 1 bitmap fonts. So, MixedMap is used
+for fonts that are available as both Type 1 and Metafont.
+.PP
+Explanation of the \fB\-\-setoption\fR possibilities:
+.TP
+dvipsPreferOutline
+true|false (default true)
+.IP
+Whether dvips uses bitmaps or outlines, when both are available.
+.TP
+dvipsDownloadBase35
+true|false (default false)
+.IP
+Whether dvips includes the standard 35 PostScript fonts in its output.
+.TP
+pdftexDownloadBase14
+true|false (default true)
+.IP
+Whether pdftex includes the standard 14 PDF fonts in its output.
+.TP
+LW35
+URWkb|URW|ADOBEkb|ADOBE (default URWkb)
+.IP
+Adapt the font and file names of the standard 35 PostScript fonts.
+URWkb URW fonts with "berry" filenames (e.g. uhvbo8ac.pfb)
+URW URW fonts with "vendor" filenames (e.g. n019064l.pfb)
+ADOBEkb Adobe fonts with "berry" filenames (e.g. phvbo8an.pfb)
+ADOBE Adobe fonts with "vendor" filenames (e.g. hvnbo___.pfb)
+.IP
+These options are only read and acted on by updmap; dvips, pdftex, etc.,
+do not know anything about them. They work by changing the default map
+file which the programs read, so they can be overridden by specifying
+command\-line options or configuration files to the programs, as
+explained at the beginning of updmap.cfg.
+.SH ENVIRONMENT
+.PP
+Explanation of trees and files normally used:
+.IP
+updmap both reads and writes TEXMFCONFIG/web2c/updmap.cfg, according to
+the actions specified.
+.IP
+updmap writes the map files for dvips (psfonts.map) and pdftex
+(pdftex.map) to the TEXMFVAR/fonts/map/updmap/{dvips,pdftex}/
+directories.
+.IP
+The log file is written to TEXMFVAR/web2c/updmap.log.
+.IP
+When updmap\-sys is run, TEXMFSYSCONFIG and TEXMFSYSVAR are used
+instead. This is the only difference between updmap\-sys and updmap.
+.IP
+Other locations can be used if overridden on the command line, or these
+trees don't exist, or you are not using the original TeX Live.
+.IP
+To see the precise locations of the various files that
+will be read and written, give the \fB\-n\fR option (or read the man page).
+.SH EXAMPLES
+.PP
+For step\-by\-step instructions on making new fonts known to TeX, read
+http://tug.org/fonts/fontinstall.html. For even more terse
+instructions, read the beginning of updmap.cfg.
+.SH FILES
Configuration and input files:
.IP "\fIupdmap\&.cfg\fP"
Main configuration file\&. In
\fItexmf/web2c\fP by default, but may be located elsewhere
depending on your distribution\&.
-.IP
.IP "\fIdvips35\&.map\fP"
Map file for standard 35 PostScript fonts for
use with \fBdvips\fP(1)\&.
-.IP
.IP "\fIpdftex35\&.map\fP"
Map file for standard 35 PostScript fonts for
use with \fBpdftex\fP(1)\&.
-.IP
-.IP "\fIdvipdfm35\&.map\fP"
-Map file for standard 35 PostScript fonts for
-use with \fBdvipdfm\fP(1)\&.
-.IP
.IP "\fIps2pk35\&.map\fP"
Map file for standard 35 PostScript fonts for
use with \fBps2pk\fP(1)\&.
-.IP
.PP
Output files:
-.IP
.IP "\fIpsfonts\&.map\fP"
For \fBdvips\fP(1)\&.
-Soft link
-against \fIpsfonts_t1\&.map\fP if option \fBdvipsPreferOutline\fP active,
-else against \fIpsfonts_pk\&.map\fP.
-.IP
+Same as \fIpsfonts_t1\&.map\fP if option \fBdvipsPreferOutline\fP active,
+else as \fIpsfonts_pk\&.map\fP.
.IP "\fIpsfonts_pk\&.map\fP"
For \fBdvips\fP(1)\&.
Without information from MixedMap files\&.
(Setting of \fBdvipsPreferOutline\fP ignored\&.)
-.IP
.IP "\fIpsfonts_t1\&.map\fP"
For \fBdvips\fP(1)\&.
With information from MixedMap files\&.
(Setting of \fBdvipsPreferOutline\fP ignored\&.)
-.IP
.IP "\fIdownload35\&.map\fP"
For \fBdvips\fP(1)\&.
Always downloads the standard 35 fonts\&.
(Setting of \fBdvipsDownloadBase35\fP ignored\&.)
-.IP
.IP "\fIbuiltin35\&.map\fP"
For \fBdvips\fP(1)\&.
Never downloads the standard 35 fonts\&.
(Setting of \fBdvipsDownloadBase35\fP ignored\&.)
-.IP
.IP "\fIpdftex\&.map\fP"
For \fBpdftex\fP(1)\&.
-Soft link
-against \fIpdftex_dl14\&.map\fP if option \fBpdftexDownloadBase14\fP active,
-else against \fIpdftex_ndl14\&.map\fP.
-.IP
+Same as \fIpdftex_dl14\&.map\fP if option \fBpdftexDownloadBase14\fP active,
+else as \fIpdftex_ndl14\&.map\fP.
.IP "\fIpdftex_dl14\&.map\fP"
For \fBpdftex\fP(1)\&.
Always downloads the standard 14 fonts\&.
-.IP
.IP "\fIpdftex_ndl14\&.map\fP"
For \fBpdftex\fP(1)\&.
Never downloads the standard 14 fonts\&.
-.IP
-.IP "\fIdvipdfm\&.map\fP"
-For \fBdvipdfm\fP(1)\&.
-Soft link
-against \fIdvipdfm_dl14\&.map\fP if option \fBdvipdfmDownloadBase14\fP active,
-else against \fIdvipdfm_ndl14\&.map\fP.
-.IP "\fIdvipdfm_dl14\&.map\fP"
-For \fBdvipdfm\fP(1)\&.
-Always downloads the standard 14 fonts\&.
-.IP
-.IP "\fIdvipdfm_ndl14\&.map\fP"
-For \fBdvipdfm\fP(1)\&.
-Never downloads the standard 14 fonts\&.
-.IP
.IP "\fIps2pk\&.map\fP"
Similar to \fIpsfonts.map\fP file, but
forces all fonts to be downloaded, so this map file can be used with
\fBxdvi\fP(1) and \fBps2pk\fP(1)\&.
-.IP
.PP
-teTeX configuration files for \fBdvips\fP(1) tuned for use with \fBupdmap\fP:
-.IP
+Configuration files for \fBdvips\fP(1):
.IP "\fIconfig\&.builtin35\fP"
Loads \fIbuiltin35\&.map\fP instead
of \fIpsfonts\&.map\fP\&.
-.IP
.IP "\fIconfig\&.download35\fP"
Loads \fIdownload35\&.map\fP instead
of \fIpsfonts\&.map\fP\&.
-.IP
.IP "\fIconfig\&.outline\fP"
Loads \fIpsfonts_t1\&.map\fP instead
of \fIpsfonts\&.map\fP\&.
-.IP
.IP "\fIconfig\&.pdf\fP"
Loads \fIpsfonts_t1\&.map\fP instead
of \fIpsfonts\&.map\fP and has additional optimizations for PDF generation\&.
-.IP
.IP "\fIconfig\&.pk\fP"
Loads \fIpsfonts_pk\&.map\fP instead
of \fIpsfonts\&.map\fP\&.
-.IP
.IP "\fIconfig\&.www\fP"
Loads \fIpsfonts_t1\&.map\fP instead
of \fIpsfonts\&.map\fP\&.
-(For compatibility with previous versions of teTeX\&.)
-.IP
+(For compatibility with old versions\&.)
.IP "\fIconfig\&.gstopk\fP"
Loads \fIpsfonts_t1\&.map\fP instead
of \fIpsfonts\&.map\fP\&.
-.IP
-.PP
-.SH "SEE ALSO"
-.PP
-\fBupdmap\&.cfg\fP(5), \fBdvipdfm\fP(1), \fBdvips\fP(1),
-\fBgsftopk\fP(1), \fBpdftex\fP(1), \fBps2pk\fP(1),
-\fBtexhash\fP(1), \fBxdvi\fP(1)\&.
-.PP
-Web page: \fI<http://tug\&.org/teTeX/>\fP
-.PP
-.SH "BUGS"
-.PP
-None known, but report any bugs found to <tetex@dbs\&.uni-hannover\&.de> (mailing list)\&.
-.PP
-.SH "AUTHOR"
-.PP
-\fBupdmap\fP was written by Thomas Esser
-<te@dbs\&.uni-hannover\&.de> and is in the public domain\&.
-.PP
-This manual page was written by C\&.M\&. Connelly
-<cmc@debian\&.org>, for
-the Debian GNU/Linux system and later slightly adapted for teTeX 3\&.
+.SH "REPORTING BUGS"
+Report bugs to: tex\-k@tug.org
+.br
+TeX Live home page: <http://tug.org/texlive/>
diff --git a/Master/texmf/scripts/tetex/updmap.pl b/Master/texmf/scripts/tetex/updmap.pl
index b5c6c7a21c8..ae22fb2e83a 100755
--- a/Master/texmf/scripts/tetex/updmap.pl
+++ b/Master/texmf/scripts/tetex/updmap.pl
@@ -1,5 +1,4 @@
#! /usr/bin/env perl
-###############################################################################
# updmap: utility to maintain map files for outline fonts.
#
# Thomas Esser, (C) 2002.
@@ -13,15 +12,16 @@ BEGIN {
unshift (@INC, "$TEXMFROOT/tlpkg");
}
-my $version = '$Id: updmap.pl 22985 2011-06-14 23:42:39Z karl $';
+my $version = '$Id: updmap.pl 23018 2011-06-16 20:35:36Z karl $';
use strict;
use TeXLive::TLUtils qw(mkdirhier mktexupd win32);
use Getopt::Long;
$Getopt::Long::autoabbrev=0;
-Getopt::Long::Configure (qw(bundling ignore_case_always));
+Getopt::Long::Configure (qw(ignore_case_always));
+
+my $short_progname = "updmap";
-my $progname='updmap';
my $cnfFile;
my $cnfFileShort;
my $outputdir;
@@ -30,16 +30,16 @@ my $pdftexoutputdir;
my $quiet;
my $nohash;
my $nomkmap;
+my (@psADOBE, @fileADOBE, @fileADOBEkb, @fileURW);
my $enableItem;
-my %setOption = ();
+my @setoptions = ();
my @showoptions = ();
my @disableItem = ();
my $listmaps;
my $listavailablemaps;
my $syncwithtrees;
-my $verbose;
my $opt_edit;
my $opt_force;
my $opt_help;
@@ -57,13 +57,13 @@ my $pdftex35;
my $ps2pk35;
my $newcnf;
+my $copy;
my %link;
my %maps;
my @missing;
my $writelog = 0;
my $cache = 0; # don't change!
-my $copy;
-my $pdftexStripEnc=1;
+my $pdftexStripEnc = 0;
# initialize mktexupd
my $updLSR=&mktexupd();
@@ -71,194 +71,185 @@ $updLSR->{mustexist}(0);
my @cfg = ();
-my @psADOBE = ( # this list is in reverse order by PostScript name
- # so that the Times-BoldItalic substitution (for
- # example) happens before Times-Bold. Otherwise the
- # result is the bogus "Times-Bold Ital".
- 's/ Dingbats / ZapfDingbats /x',
- 's/ URWChanceryL-MediItal / ZapfChancery-MediumItalic /x',
- 's/ NimbusRomNo9L-ReguItal / Times-Italic /x',
- 's/ NimbusRomNo9L-Regu / Times-Roman /x',
- 's/ NimbusRomNo9L-MediItal / Times-BoldItalic /x',
- 's/ NimbusRomNo9L-Medi / Times-Bold /x',
- 's/ StandardSymL / Symbol /x',
- 's/ URWPalladioL-Ital / Palatino-Italic /x',
- 's/ URWPalladioL-Roma / Palatino-Roman /x',
- 's/ URWPalladioL-BoldItal / Palatino-BoldItalic /x',
- 's/ URWPalladioL-Bold / Palatino-Bold /x',
- 's/ CenturySchL-Ital / NewCenturySchlbk-Italic /x',
- 's/ CenturySchL-Roma / NewCenturySchlbk-Roman /x',
- 's/ CenturySchL-BoldItal / NewCenturySchlbk-BoldItalic /x',
- 's/ CenturySchL-Bold / NewCenturySchlbk-Bold /x',
- 's/ NimbusSanL-ReguCondItal / Helvetica-Narrow-Oblique /x',
- 's/ NimbusSanL-ReguItal / Helvetica-Oblique /x',
- 's/ NimbusSanL-ReguCond / Helvetica-Narrow /x',
- 's/ NimbusSanL-Regu / Helvetica /x',
- 's/ NimbusSanL-BoldCondItal / Helvetica-Narrow-BoldOblique /x',
- 's/ NimbusSanL-BoldItal / Helvetica-BoldOblique /x',
- 's/ NimbusSanL-BoldCond / Helvetica-Narrow-Bold /x',
- 's/ NimbusSanL-Bold / Helvetica-Bold /x',
- 's/ NimbusMonL-ReguObli / Courier-Oblique /x',
- 's/ NimbusMonL-Regu / Courier /x',
- 's/ NimbusMonL-BoldObli / Courier-BoldOblique /x',
- 's/ NimbusMonL-Bold / Courier-Bold /x',
- 's/ URWBookmanL-LighItal / Bookman-LightItalic /x',
- 's/ URWBookmanL-Ligh / Bookman-Light /x',
- 's/ URWBookmanL-DemiBoldItal / Bookman-DemiItalic /x',
- 's/ URWBookmanL-DemiBold / Bookman-Demi /x',
- 's/ URWGothicL-BookObli / AvantGarde-BookOblique /x',
- 's/ URWGothicL-Book / AvantGarde-Book /x',
- 's/ URWGothicL-DemiObli / AvantGarde-DemiOblique /x',
- 's/ URWGothicL-Demi / AvantGarde-Demi /x',
- );
-
-my @fileADOBEkb = (
- 's/\buagd8a.pfb\b/pagd8a.pfb/x',
- 's/\buagdo8a.pfb\b/pagdo8a.pfb/x',
- 's/\buagk8a.pfb\b/pagk8a.pfb/x',
- 's/\buagko8a.pfb\b/pagko8a.pfb/x',
- 's/\bubkd8a.pfb\b/pbkd8a.pfb/x',
- 's/\bubkdi8a.pfb\b/pbkdi8a.pfb/x',
- 's/\bubkl8a.pfb\b/pbkl8a.pfb/x',
- 's/\bubkli8a.pfb\b/pbkli8a.pfb/x',
- 's/\bucrb8a.pfb\b/pcrb8a.pfb/x',
- 's/\bucrbo8a.pfb\b/pcrbo8a.pfb/x',
- 's/\bucrr8a.pfb\b/pcrr8a.pfb/x',
- 's/\bucrro8a.pfb\b/pcrro8a.pfb/x',
- 's/\buhvb8a.pfb\b/phvb8a.pfb/x',
- 's/\buhvb8ac.pfb\b/phvb8an.pfb/x',
- 's/\buhvbo8a.pfb\b/phvbo8a.pfb/x',
- 's/\buhvbo8ac.pfb\b/phvbo8an.pfb/x',
- 's/\buhvr8a.pfb\b/phvr8a.pfb/x',
- 's/\buhvr8ac.pfb\b/phvr8an.pfb/x',
- 's/\buhvro8a.pfb\b/phvro8a.pfb/x',
- 's/\buhvro8ac.pfb\b/phvro8an.pfb/x',
- 's/\buncb8a.pfb\b/pncb8a.pfb/x',
- 's/\buncbi8a.pfb\b/pncbi8a.pfb/x',
- 's/\buncr8a.pfb\b/pncr8a.pfb/x',
- 's/\buncri8a.pfb\b/pncri8a.pfb/x',
- 's/\buplb8a.pfb\b/pplb8a.pfb/x',
- 's/\buplbi8a.pfb\b/pplbi8a.pfb/x',
- 's/\buplr8a.pfb\b/pplr8a.pfb/x',
- 's/\buplri8a.pfb\b/pplri8a.pfb/x',
- 's/\busyr.pfb\b/psyr.pfb/x',
- 's/\butmb8a.pfb\b/ptmb8a.pfb/x',
- 's/\butmbi8a.pfb\b/ptmbi8a.pfb/x',
- 's/\butmr8a.pfb\b/ptmr8a.pfb/x',
- 's/\butmri8a.pfb\b/ptmri8a.pfb/x',
- 's/\buzcmi8a.pfb\b/pzcmi8a.pfb/x',
- 's/\buzdr.pfb\b/pzdr.pfb/x'
- );
-
-my @fileURW = (
- 's/\buagd8a.pfb\b/a010015l.pfb/x',
- 's/\buagdo8a.pfb\b/a010035l.pfb/x',
- 's/\buagk8a.pfb\b/a010013l.pfb/x',
- 's/\buagko8a.pfb\b/a010033l.pfb/x',
- 's/\bubkd8a.pfb\b/b018015l.pfb/x',
- 's/\bubkdi8a.pfb\b/b018035l.pfb/x',
- 's/\bubkl8a.pfb\b/b018012l.pfb/x',
- 's/\bubkli8a.pfb\b/b018032l.pfb/x',
- 's/\bucrb8a.pfb\b/n022004l.pfb/x',
- 's/\bucrbo8a.pfb\b/n022024l.pfb/x',
- 's/\bucrr8a.pfb\b/n022003l.pfb/x',
- 's/\bucrro8a.pfb\b/n022023l.pfb/x',
- 's/\buhvb8a.pfb\b/n019004l.pfb/x',
- 's/\buhvb8ac.pfb\b/n019044l.pfb/x',
- 's/\buhvbo8a.pfb\b/n019024l.pfb/x',
- 's/\buhvbo8ac.pfb\b/n019064l.pfb/x',
- 's/\buhvr8a.pfb\b/n019003l.pfb/x',
- 's/\buhvr8ac.pfb\b/n019043l.pfb/x',
- 's/\buhvro8a.pfb\b/n019023l.pfb/x',
- 's/\buhvro8ac.pfb\b/n019063l.pfb/x',
- 's/\buncb8a.pfb\b/c059016l.pfb/x',
- 's/\buncbi8a.pfb\b/c059036l.pfb/x',
- 's/\buncr8a.pfb\b/c059013l.pfb/x',
- 's/\buncri8a.pfb\b/c059033l.pfb/x',
- 's/\buplb8a.pfb\b/p052004l.pfb/x',
- 's/\buplbi8a.pfb\b/p052024l.pfb/x',
- 's/\buplr8a.pfb\b/p052003l.pfb/x',
- 's/\buplri8a.pfb\b/p052023l.pfb/x',
- 's/\busyr.pfb\b/s050000l.pfb/x',
- 's/\butmb8a.pfb\b/n021004l.pfb/x',
- 's/\butmbi8a.pfb\b/n021024l.pfb/x',
- 's/\butmr8a.pfb\b/n021003l.pfb/x',
- 's/\butmri8a.pfb\b/n021023l.pfb/x',
- 's/\buzcmi8a.pfb\b/z003034l.pfb/x',
- 's/\buzdr.pfb\b/d050000l.pfb/x'
- );
-
-my @fileADOBE = (
- 's/\buagd8a.pfb\b/agd_____.pfb/x',
- 's/\buagdo8a.pfb\b/agdo____.pfb/x',
- 's/\buagk8a.pfb\b/agw_____.pfb/x',
- 's/\buagko8a.pfb\b/agwo____.pfb/x',
- 's/\bubkd8a.pfb\b/bkd_____.pfb/x',
- 's/\bubkdi8a.pfb\b/bkdi____.pfb/x',
- 's/\bubkl8a.pfb\b/bkl_____.pfb/x',
- 's/\bubkli8a.pfb\b/bkli____.pfb/x',
- 's/\bucrb8a.pfb\b/cob_____.pfb/x',
- 's/\bucrbo8a.pfb\b/cobo____.pfb/x',
- 's/\bucrr8a.pfb\b/com_____.pfb/x',
- 's/\bucrro8a.pfb\b/coo_____.pfb/x',
- 's/\buhvb8a.pfb\b/hvb_____.pfb/x',
- 's/\buhvb8ac.pfb\b/hvnb____.pfb/x',
- 's/\buhvbo8a.pfb\b/hvbo____.pfb/x',
- 's/\buhvbo8ac.pfb\b/hvnbo___.pfb/x',
- 's/\buhvr8a.pfb\b/hv______.pfb/x',
- 's/\buhvr8ac.pfb\b/hvn_____.pfb/x',
- 's/\buhvro8a.pfb\b/hvo_____.pfb/x',
- 's/\buhvro8ac.pfb\b/hvno____.pfb/x',
- 's/\buncb8a.pfb\b/ncb_____.pfb/x',
- 's/\buncbi8a.pfb\b/ncbi____.pfb/x',
- 's/\buncr8a.pfb\b/ncr_____.pfb/x',
- 's/\buncri8a.pfb\b/nci_____.pfb/x',
- 's/\buplb8a.pfb\b/pob_____.pfb/x',
- 's/\buplbi8a.pfb\b/pobi____.pfb/x',
- 's/\buplr8a.pfb\b/por_____.pfb/x',
- 's/\buplri8a.pfb\b/poi_____.pfb/x',
- 's/\busyr.pfb\b/sy______.pfb/x',
- 's/\butmb8a.pfb\b/tib_____.pfb/x',
- 's/\butmbi8a.pfb\b/tibi____.pfb/x',
- 's/\butmr8a.pfb\b/tir_____.pfb/x',
- 's/\butmri8a.pfb\b/tii_____.pfb/x',
- 's/\buzcmi8a.pfb\b/zcmi____.pfb/x',
- 's/\buzdr.pfb\b/zd______.pfb/x'
- );
-
&main;
exit 0;
+
+# return program name + version string.
+sub version {
+ my $ret = sprintf "%s (TeX Live) version %s\n", $short_progname, $version;
+ return $ret;
+}
+
###############################################################################
-# progname()
-# return the name of the program. Needed if invoked by a wrapper.
+# help()
+# display help message and exit
+#
+sub help {
+ my $usage= <<"EOF";
+Usage: $short_progname [OPTION] ... [COMMAND]
+ or: $short_progname-sys [OPTION] ... [COMMAND]
+
+Update the default font map files used by pdftex, dvips, and dvipdfm(x),
+as determined by the configuration file updmap.cfg (the one returned by
+running "kpsewhich updmap.cfg").
+
+Among other things, these map files are used to determine which fonts
+should be used as bitmaps and which as outlines, and to determine which
+fonts are included in the output.
+
+By default, the TeX filename database (ls-R) is also updated.
+
+Options:
+ --cnffile FILE read FILE for the updmap configuration
+ --dvipsoutputdir DIR specify output directory (dvips syntax)
+ --pdftexoutputdir DIR specify output directory (pdftex syntax)
+ --outputdir DIR specify output directory (for all files)
+ --copy cp generic files rather than using symlinks
+ --force recreate files even if config hasn't changed
+ --nomkmap do not recreate map files
+ --nohash do not run texhash
+ -n, --dry-run only show the configuration, no output
+ --quiet, --silent reduce verbosity
+
+Commands:
+ --help show this message and exit
+ --version show version information and exit
+ --showoptions ITEM show alternatives for options
+ --setoption OPTION VALUE set option, where OPTION is one of:
+ LW35, dvipsPreferOutline, dvipsDownloadBase35,
+ or pdftexDownloadBase14
+ --setoption OPTION=VALUE as above, just different syntax
+ --enable MAPTYPE MAPFILE add "MAPTYPE MAPFILE" to updmap.cfg,
+ where MAPTYPE is either Map or MixedMap
+ --enable Map=MAPFILE add \"Map MAPFILE\" to updmap.cfg
+ --enable MixedMap=MAPFILE add \"MixedMap MAPFILE\" to updmap.cfg
+ --disable MAPFILE disable MAPFILE, whether Map or MixedMap
+ --listmaps list all active and inactive maps
+ --listavailablemaps same as --listmaps, but without
+ unavailable map files
+ --syncwithtrees disable unavailable map files in updmap.cfg
+
+Explanation of the map types: the (only) difference between Map and
+MixedMap is that MixedMap entries are not added to psfonts_pk.map.
+The purpose is to help users with printers that render Type 1 outline
+fonts worse than mode-tuned Type 1 bitmap fonts. So, MixedMap is used
+for fonts that are available as both Type 1 and Metafont.
+
+Explanation of the --setoption possibilities:
+
+ dvipsPreferOutline true|false (default true)
+ Whether dvips uses bitmaps or outlines, when both are available.
+ dvipsDownloadBase35 true|false (default false)
+ Whether dvips includes the standard 35 PostScript fonts in its output.
+ pdftexDownloadBase14 true|false (default true)
+ Whether pdftex includes the standard 14 PDF fonts in its output.
+ LW35 URWkb|URW|ADOBEkb|ADOBE (default URWkb)
+ Adapt the font and file names of the standard 35 PostScript fonts.
+ URWkb URW fonts with "berry" filenames (e.g. uhvbo8ac.pfb)
+ URW URW fonts with "vendor" filenames (e.g. n019064l.pfb)
+ ADOBEkb Adobe fonts with "berry" filenames (e.g. phvbo8an.pfb)
+ ADOBE Adobe fonts with "vendor" filenames (e.g. hvnbo___.pfb)
+
+ These options are only read and acted on by updmap; dvips, pdftex, etc.,
+ do not know anything about them. They work by changing the default map
+ file which the programs read, so they can be overridden by specifying
+ command-line options or configuration files to the programs, as
+ explained at the beginning of updmap.cfg.
+
+Explanation of trees and files normally used:
+
+ updmap both reads and writes TEXMFCONFIG/web2c/updmap.cfg, according to
+ the actions specified.
+
+ updmap writes the map files for dvips (psfonts.map) and pdftex
+ (pdftex.map) to the TEXMFVAR/fonts/map/updmap/{dvips,pdftex}/
+ directories.
+
+ The log file is written to TEXMFVAR/web2c/updmap.log.
+
+ When updmap-sys is run, TEXMFSYSCONFIG and TEXMFSYSVAR are used
+ instead. This is the only difference between updmap-sys and updmap.
+
+ Other locations can be used if overridden on the command line, or these
+ trees don't exist, or you are not using the original TeX Live.
+
+ To see the precise locations of the various files that
+ will be read and written, give the -n option (or read the man page).
+
+For step-by-step instructions on making new fonts known to TeX, read
+http://tug.org/fonts/fontinstall.html. For even more terse
+instructions, read the beginning of updmap.cfg.
+
+Report bugs to: tex-k\@tug.org
+TeX Live home page: <http://tug.org/texlive/>
+EOF
+;
+ print &version();
+ print $usage;
+ exit 0;
+}
+
+
+
###############################################################################
-sub progname {
- if (`kpsewhich --var-value=TEXMFVAR` eq `kpsewhich --var-value=TEXMFSYSVAR`) {
- return 'updmap-sys';
- } else {
- return 'updmap';
+# processOptions()
+# process cmd line options
+#
+sub processOptions {
+ unless (&GetOptions (
+ "cnffile=s" => \$cnfFile,
+ "copy" => \$copy,
+ "disable=s" => \@disableItem,
+ "dvipdfmoutputdir=s" => sub {print "$0: ignoring --dvipdfmoutputdir\n"},
+ "dvipsoutputdir=s" => \$dvipsoutputdir,
+ "enable=s" => \$enableItem,
+ "edit" => \$opt_edit,
+ "force" => \$opt_force,
+ "listavailablemaps" => \$listavailablemaps,
+ "l|listmaps" => \$listmaps,
+ "nohash" => \$nohash,
+ "nomkmap" => \$nomkmap,
+ "n|dry-run" => \$dry_run,
+ "outputdir=s" => \$outputdir,
+ "pdftexoutputdir=s" => \$pdftexoutputdir,
+ "q|quiet|silent" => \$quiet,
+ "setoption=s{1,2}" => \@setoptions,
+ "showoptions=s" => \@showoptions,
+ "syncwithtrees" => \$syncwithtrees,
+ "version" => sub { print &version(); exit(0); },
+ "h|help" => \$opt_help)) {
+ die "Try \"$0 --help\" for more information.\n";
}
-}
-# return program name + version string.
-sub version {
- my $ret = sprintf "%s version %s", &progname(), $version;
- return $ret;
+ if ($outputdir) {
+ $dvipsoutputdir = $outputdir if (! $dvipsoutputdir);
+ $pdftexoutputdir = $outputdir if (! $pdftexoutputdir);
+ }
+ if ($cnfFile && ! -f $cnfFile) {
+ die "$0: Config file \"$cnfFile\" not found.\n";
+ }
+ if ($dvipsoutputdir && ! $dry_run && ! -d $dvipsoutputdir) {
+ &mkdirhier ($dvipsoutputdir);
+ }
+ if ($pdftexoutputdir && ! $dry_run && ! -d $pdftexoutputdir) {
+ &mkdirhier ($pdftexoutputdir);
+ }
}
+
###############################################################################
# equalize_file(filename[, comment_char])
# read a file and return its processed content as a string.
# look into the source code for more details.
-###############################################################################
+#
sub equalize_file {
my $file=shift;
my $comment=shift;
my @temp;
open IN, "$file";
- my @lines=(<IN>);
+ my @lines = (<IN>);
close IN;
chomp(@lines);
@@ -274,7 +265,7 @@ sub equalize_file {
###############################################################################
# files_are_different(file_A, file_B[, comment_char])
# compare two equalized files.
-###############################################################################
+#
sub files_are_different {
my $file_A=shift;
my $file_B=shift;
@@ -291,7 +282,7 @@ sub files_are_different {
# files_are_equal(file_A, file_B[, comment_char])
# compare two equalized files. Same as files_are_different() with
# return value inverted.
-###############################################################################
+#
sub files_are_equal {
return (&files_are_different (@_))? 0:1;
}
@@ -299,7 +290,7 @@ sub files_are_equal {
###############################################################################
# files_are_identical(file_A, file_B)
# compare two files. Same as cmp(1).
-###############################################################################
+#
sub files_are_identical {
my $file_A=shift;
my $file_B=shift;
@@ -318,14 +309,14 @@ sub files_are_identical {
###############################################################################
# getLines()
-# return the lines in $filename
+#
###############################################################################
sub getLines {
my @lines = ();
foreach my $fname (@_) {
next if (! $fname);
if (! exists $maps{"$fname"}) {
- open FILE, "<$fname" or die "can't get lines from $fname: $!";
+ open FILE, "<$fname" or die "$0: can't get lines from $fname: $!";
my @file=<FILE>;
close FILE;
if ($writelog) {
@@ -352,11 +343,11 @@ sub getLines {
###############################################################################
# writeLines()
# write the lines in $filename
-###############################################################################
+#
sub writeLines {
my ($fname, @lines) = @_;
map { ($_ !~ m/\n$/ ? s/$/\n/ : $_ ) } @lines;
- open FILE, ">$fname" or die "can't write lines to $fname: $!";
+ open FILE, ">$fname" or die "$0: can't write lines to $fname: $!";
print FILE @lines;
close FILE;
}
@@ -364,7 +355,7 @@ sub writeLines {
###############################################################################
# copyFile()
# copy file $src to $dst, sets $dst creation and mod time
-###############################################################################
+#
sub copyFile {
my ($src, $dst) = @_;
my $dir;
@@ -373,7 +364,7 @@ sub copyFile {
$src eq $dst && return "can't copy $src to itself!\n";
- open IN, "<$src" or die "can't open source file $src for copying: $!";
+ open IN, "<$src" or die "$0: can't open source file $src for copying: $!";
open OUT, ">$dst";
binmode(IN);
@@ -386,113 +377,9 @@ sub copyFile {
}
###############################################################################
-# help()
-# display help message and exit
-###############################################################################
-sub help {
- my $progname=&progname();
- my $usage= <<"EOF";
-Usage: $progname [OPTION] ... [COMMAND]
-
-Update the default font map files used by pdftex, dvips, and dvipdfm, as
-determined by updmap.cfg (the one returned by running
-"kpsewhich updmap.cfg").
-
-Among other things, these font map files are used to determine which
-fonts should be used as bitmaps and which as outlines, and to determine
-which fonts are included in the output.
-
-By default, the TeX filename database is also rebuilt (with mktexlsr).
-
-Valid options:
- --cnffile FILE read FILE for the updmap configuration
- --dvipsoutputdir DIR specify output directory (dvips syntax)
- --pdftexoutputdir DIR specify output directory (pdftex syntax)
- --outputdir DIR specify output directory (for all files)
- --copy cp generic files rather than using symlinks
- --force recreate files even if config hasn't changed
- --nomkmap do not recreate map files
- --nohash do not run texhash
- -n, --dry-run only show the configuration, no output
- --quiet reduce verbosity
-
-Valid commands:
- --help show this message and exit
- --version show version information and exit
- --edit edit updmap.cfg file
- --showoptions ITEM show alternatives for options
- --setoption OPTION VALUE set option, where OPTION is one of:
- dvipsPreferOutline, LW35, dvipsDownloadBase35,
- or pdftexDownloadBase14
- --setoption OPTION=VALUE as above, just different syntax
- --enable MAPTYPE MAPFILE add "MAPTYPE MAPFILE" to updmap.cfg,
- where MAPTYPE is either Map or MixedMap
- --enable Map=MAPFILE add \"Map MAPFILE\" to updmap.cfg
- --enable MixedMap=MAPFILE add \"MixedMap MAPFILE\" to updmap.cfg
- --disable MAPFILE disable MAPFILE, whether Map or MixedMap
- --syncwithtrees entries with unavailable map files will be
- disabled in the config file
- --listmaps list all active and inactive maps
- --listavailablemaps same as --listmaps, but without
- unavailable map files
-
-Explanation of the map types: the (only) difference between Map and
-MixedMap is that MixedMap entries are not added to psfonts_pk.map. The
-purpose is to help users with printers that render Type 1 outline fonts
-worse than mode-tuned Type 1 bitmap fonts. So MixedMap is used for
-fonts that are available as both Type 1 and Metafont.
-
-To see the precise locations of the various files that will be read and
-written, run updmap -n.
-
-For step-by-step instructions on making new fonts known to TeX, see
-http://tug.org/fonts/fontinstall.html.
-
-Report bugs to: tex-k\@tug.org
-TeX Live home page: <http://tug.org/texlive/>
-EOF
-;
- print $usage;
- exit 0;
-}
-
-
-###############################################################################
-# cfgval(variable)
-# read variable ($1) from config file
-###############################################################################
-sub cfgval {
- my ($variable) = @_;
- my $value;
-
- if ($#cfg < 0) {
- open FILE, "<$cnfFile" or die "can't open configuration file $cnfFile: $!";
- while (<FILE>) {
- s/\s*$//; # strip trailing spaces
- push @cfg, $_;
- }
- close FILE;
- chomp (@cfg);
- }
- for my $line (@cfg) {
- if ($line =~ m/^\s*${variable}[\s=]+(.*)\s*$/) {
- $value = $1;
- if ($value =~ m/^(true|yes|t|y|1)$/) {
- $value = 1;
- }
- elsif ($value =~ m/^(false|no|f|n|0)$/) {
- $value = 0;
- }
- last;
- }
- }
- return $value;
-}
-
-###############################################################################
# SymlinkOrCopy(dir, src, dest)
# create symlinks if possible, otherwise copy files
-###############################################################################
+#
sub SymlinkOrCopy {
my ($dir, $src, $dest) = @_;
if (&win32 || $copy) { # always copy
@@ -508,7 +395,7 @@ sub SymlinkOrCopy {
###############################################################################
# setupSymlinks()
# set symlink for psfonts.map according to dvipsPreferOutline variable
-###############################################################################
+#
sub setupSymlinks {
my $src;
@@ -529,12 +416,13 @@ sub setupSymlinks {
&SymlinkOrCopy("$pdftexoutputdir", "$src", "pdftex.map");
}
+
###############################################################################
# transLW35(args ...)
# transform fontname and filenames according to transformation specified
# by mode. Possible values:
# URW|URWkb|ADOBE|ADOBEkb
-###############################################################################
+#
sub transLW35 {
my ($name) = @_;
my @lines = &getLines($name);
@@ -549,7 +437,7 @@ sub transLW35 {
for my $r (@psADOBE) {
map { eval($r); } @lines;
}
- my @filemode = eval ("\@file" .$mode);
+ my @filemode = eval ("\@file" . $mode);
for my $r (@filemode) {
map { eval($r); } @lines;
}
@@ -560,7 +448,7 @@ sub transLW35 {
###############################################################################
# locateWeb2c (file ...)
# apply kpsewhich with format 'web2c files'
-###############################################################################
+#
sub locateWeb2c {
my @files = @_;
return @files if ($#files < 0);
@@ -577,7 +465,7 @@ sub locateWeb2c {
###############################################################################
# locateMap (file ...)
# apply kpsewhich with format 'dvips config'
-###############################################################################
+#
sub locateMap {
my @maps = @_;
my @files;
@@ -598,32 +486,44 @@ sub locateMap {
}
}
+
###############################################################################
-# catMaps(regex)
-# filter config file by regex for map lines and extract the map filenames.
-# These are then looked up (by kpsewhich in locateMap) and the content of
-# all map files is send to stdout.
-###############################################################################
-sub catMaps {
- my ($map) = @_;
- my %count = ( );
- my @maps = grep { $_ =~ m/$map/ } @cfg;
- map{
- $_ =~ s/\#.*//;
- $_ =~ s/\s*([^\s]*)\s*([^\s]*)/$2/;
- } @maps;
- @maps = sort(@maps);
- @maps = grep { ++$count{$_} < 2; } @maps;
+# cfgval(variable)
+# read variable ($1) from config file
+#
+sub cfgval {
+ my ($variable) = @_;
+ my $value;
- @maps = &locateMap(@maps);
- return @maps;
+ if ($#cfg < 0) {
+ open FILE, "<$cnfFile" or die "$0: can't open configuration file $cnfFile: $!";
+ while (<FILE>) {
+ s/\s*$//; # strip trailing spaces
+ push @cfg, $_;
+ }
+ close FILE;
+ chomp (@cfg);
+ }
+ for my $line (@cfg) {
+ if ($line =~ m/^\s*${variable}[\s=]+(.*)\s*$/) {
+ $value = $1;
+ if ($value =~ m/^(true|yes|t|y|1)$/) {
+ $value = 1;
+ }
+ elsif ($value =~ m/^(false|no|f|n|0)$/) {
+ $value = 0;
+ }
+ last;
+ }
+ }
+ return $value;
}
###############################################################################
# configReplace(file, pattern, line)
# The first line in file that matches pattern gets replaced by line.
# line will be added at the end of the file if pattern does not match.
-###############################################################################
+#
sub configReplace {
my ($file, $pat, $line) = @_;
my @lines = &getLines($file);
@@ -640,39 +540,92 @@ sub configReplace {
}
###############################################################################
+# setOption (@options)
+# parse @options for "key=value" (one element of @options)
+# or "key", "value" (two elements of @options) pairs.
+# (These were the values provided to --setoption.)
+#
+sub setOptions {
+ my (@options) = @_;
+ for (my $i = 0; $i < @options; $i++) {
+ my $o = $options[$i];
+
+ my ($key,$val);
+ if ($o =~ /=/) {
+ ($key,$val) = split (/=/, $o, 2);
+ } else {
+ $key = $o;
+ die "$0: no value for --setoption $key, goodbye.\n"
+ if $i + 1 >= @options;
+ $val = $options[$i + 1];
+ $i++;
+ }
+
+ die "$0: unexpected empty key or val for options (@options), goodbye.\n"
+ if !$key || !$val;
+ &setOption ($key, $val);
+ }
+}
+
+###############################################################################
# setOption (option, value)
# sets option to value in the config file (replacing the existing setting
# or by adding a new line to the config file).
-###############################################################################
+#
sub setOption {
my ($opt, $val) = @_;
if ($opt eq "LW35") {
if ($val !~ m/^(URWkb|URW|ADOBE|ADOBEkb)$/) {
- die "Invalid value $val for option $opt.\n";
+ die "$0: Invalid value $val for option $opt.\n";
}
+ } elsif ($opt =~
+m/^(dvipsPreferOutline|dvipsDownloadBase35|(pdftex|dvipdfm)DownloadBase14)$/) {
+ if ($val !~ m/^(true|false)$/) {
+ die "$0: Invalid value $val for option $opt; should be \"true\" or \"false\".\n";
+ }
+ } else {
+ die "$0: Unsupported option $opt.\n";
}
- elsif ($opt =~
- m/^(dvipsPreferOutline|dvipsDownloadBase35|pdftexDownloadBase14)$/) {
- if ($val !~ m/^(true|false)$/) {
- die "invalid value $val for option $opt.\n";
+
+ # silently accept this old option name, just in case.
+ return if $opt eq "dvipdfmDownloadBase14";
+
+ #print "Setting option $opt to $val...\n" if !$quiet;
+ &configReplace("$cnfFile", "^" . "$opt" . "\\s", "$opt $val");
+}
+
+###############################################################################
+# showOptions(item)
+# show Options for an item
+#
+sub showOptions {
+ foreach my $item (@_) {
+ if ($item eq "LW35") {
+ print "URWkb URW ADOBE ADOBEkb\n";
+ }
+ elsif ($item =~
+m/(dvipsPreferOutline|(dvipdfm|pdftex)DownloadBase14|dvipsDownloadBase35)/) {
+ print "true false\n";
+ }
+ else {
+ print "Unknown item \"$item\"; should be one of LW35, dvipsPreferOutline,\n"
+ . " dvipsDownloadBase35, or pdftexDownloadBase14\n";
}
}
- else {
- die "Unsupported option $opt.\n";
- }
- &configReplace("$cnfFile", "^" . "$opt" . "\\s", "$opt $val");
+ exit 0
}
+
###############################################################################
# enableMap (type, map)
# enables an entry in the config file for map with a given type.
-###############################################################################
+#
sub enableMap {
my ($type, $map) = @_;
if ($type !~ m/^(Map|MixedMap)$/) {
- die "updmap: Invalid mapType $type\n";
+ die "$0: Invalid mapType $type\n";
}
# a map can only have one type, so we carefully disable everything
# about map here:
@@ -685,7 +638,7 @@ sub enableMap {
###############################################################################
# disableMap (map)
# disables map in config file (any type)
-###############################################################################
+#
sub disableMap {
my ($map) = @_;
my %count = ();
@@ -708,48 +661,11 @@ sub disableMap {
}
###############################################################################
-# initVars()
-# initialize global variables
-###############################################################################
-sub initVars {
- $progname="updmap";
- $quiet = 0;
- $nohash = 0;
- $nomkmap = 0;
- $verbose = 1;
- $cnfFile = "";
- $cnfFileShort = "updmap.cfg";
- $outputdir = "";
- chomp($TEXMFMAIN =`kpsewhich --var-value=TEXMFMAIN`);
-}
-
-###############################################################################
-# showOptions(item)
-# show Options for an item
-###############################################################################
-sub showOptions {
- foreach my $item (@_) {
- if ($item eq "LW35") {
- print "URWkb URW ADOBE ADOBEkb\n";
- }
- elsif ($item =~
- m/(dvipsPreferOutline|pdftexDownloadBase14|dvipsDownloadBase35)/) {
- print "true false\n";
- }
- else {
- print "Unknown item \"$item\". Choose one of LW35, dvipsPreferOutline,\n"
- . " dvipsDownloadBase35, or pdftexDownloadBase14\n";
- }
- }
- exit 0
-}
-
-###############################################################################
# setupDestDir()
# find an output directory if none specified on cmd line. First choice is
# $TEXMFVAR/fonts/map/updmap (if TEXMFVAR is set), next is relative to
# config file location. Fallback is $TEXMFMAIN/fonts/map/updmap.
-###############################################################################
+#
sub setupOutputDir {
my($od, $driver) = @_;
@@ -762,13 +678,13 @@ sub setupOutputDir {
if ($tf) {
&mkdirhier("$tf/$rel");
if (! -w "$tf/$rel") {
- die "Directory \"$tf/$rel\" isn't writable.\n";
+ die "$0: Directory \"$tf/$rel\" isn't writable.\n";
}
}
$od = "$tf/$rel";
}
&mkdirhier($od);
- print "$driver output dir: \"$od\"\n" if (! $quiet);
+ print "$driver output dir: \"$od\"\n" if !$quiet;
return $od;
}
@@ -780,7 +696,7 @@ sub setupDestDir {
###############################################################################
# setupCfgFile()
# find config file if none specified on cmd line.
-###############################################################################
+#
sub setupCfgFile {
if (! $cnfFile) {
my $tf = `kpsewhich --var-value=TEXMFCONFIG`;
@@ -791,71 +707,46 @@ sub setupCfgFile {
unlink "$tf/web2c/$cnfFileShort";
my $original_cfg=`kpsewhich updmap.cfg`;
chomp($original_cfg);
- print("copy $original_cfg => $tf/web2c/$cnfFileShort\n") if (! $quiet);
+ print("copy $original_cfg => $tf/web2c/$cnfFileShort\n") if !$quiet;
$newcnf="$tf/web2c/$cnfFileShort";
&copyFile("$original_cfg", "$tf/web2c/$cnfFileShort");
$updLSR->{add}("$tf/web2c/$cnfFileShort");
}
}
$cnfFile = "$tf/web2c/updmap.cfg";
- if ($cnfFile) {
- print "Config file: \"$cnfFile\"\n" if (! $quiet);
- }
- else {
- die "Config file updmap.cfg not found.\n";
+ if (-s $cnfFile) {
+ print "Config file: \"$cnfFile\"\n" if !$quiet;
+ } else {
+ die "$0: Config file updmap.cfg not found.\n";
}
}
}
###############################################################################
-# processOptions()
-# process cmd line options
-###############################################################################
-sub processOptions {
- unless (&GetOptions (
- "cnffile=s" => \$cnfFile,
- "copy" => \$copy,
- "disable=s" => \@disableItem,
- "dvipsoutputdir=s" => \$dvipsoutputdir,
- "enable=s" => \$enableItem,
- "e|edit" => \$opt_edit,
- "force" => \$opt_force,
- "listavailablemaps" => \$listavailablemaps,
- "l|listmaps" => \$listmaps,
- "nohash" => \$nohash,
- "nomkmap" => \$nomkmap,
- "n|dry-run" => \$dry_run,
- "outputdir=s" => \$outputdir,
- "pdftexoutputdir=s" => \$pdftexoutputdir,
- "q|quiet" => \$quiet,
- "setoption=s" => \%setOption,
- "showoptions=s" => \@showoptions,
- "syncwithtrees" => \$syncwithtrees,
- "version" => sub { print &version() . "\n"; exit(0) },
- "h|help" => \$opt_help)) {
- my $progname = &progname();
- die "Try \"$progname --help\".\n";
- }
+# catMaps(regex)
+# filter config file by regex for map lines and extract the map filenames.
+# These are then looked up (by kpsewhich in locateMap) and the content of
+# all map files is send to stdout.
+#
+sub catMaps {
+ my ($map) = @_;
+ my %count = ( );
+ my @maps = grep { $_ =~ m/$map/ } @cfg;
+ map{
+ $_ =~ s/\#.*//;
+ $_ =~ s/\s*([^\s]*)\s*([^\s]*)/$2/;
+ } @maps;
+ @maps = sort(@maps);
+ @maps = grep { ++$count{$_} < 2; } @maps;
- if ($outputdir) {
- $dvipsoutputdir = $outputdir if (! $dvipsoutputdir);
- $pdftexoutputdir = $outputdir if (! $pdftexoutputdir);
- }
- if ($cnfFile && ! -f $cnfFile) {
- die "Config file \"$cnfFile\" not found.\n";
- }
- if ($dvipsoutputdir && ! -d $dvipsoutputdir) {
- &mkdirhier ($dvipsoutputdir);
- }
- if ($pdftexoutputdir && ! -d $pdftexoutputdir) {
- &mkdirhier ($pdftexoutputdir);
- }
+ @maps = &locateMap(@maps);
+ return @maps;
}
###############################################################################
# listMaps()
# list all maps mentioned in the config file
-###############################################################################
+#
sub listMaps {
my $what=shift;
my @mapfiles;
@@ -888,7 +779,7 @@ sub listMaps {
my $entry="$_";
unless (grep { $_ =~ m/$entry/ } @paths) {
&disableMap($entry);
- print " $entry disabled\n" if (! $quiet);
+ print " $entry disabled\n" if !$quiet;
}
} @lines;
}
@@ -899,7 +790,7 @@ sub listMaps {
# normalizeLines()
# remove comments, whitespace is exactly one space, no empty lines,
# no whitespace at end of line, one space before and after "
-###############################################################################
+#
sub normalizeLines {
my @lines = @_;
my %count = ();
@@ -919,11 +810,13 @@ sub normalizeLines {
###############################################################################
# to_pdftex()
-# strip "PS_Encoding_Name ReEncodeFont" from map entries because
-# they are ignored by pdftex anyway.
-###############################################################################
+# if $pdftexStripEnc is set, strip "PS_Encoding_Name ReEncodeFont"
+# from map entries; they are ignored by pdftex. But since the sh
+# incarnation of updmap included them, and we want to minimize
+# differences, this is not done by default.
+#
sub to_pdftex {
- return unless $pdftexStripEnc;
+ return @_ unless $pdftexStripEnc;
my @in = @_;
my @out;
foreach my $line (@in) {
@@ -936,10 +829,11 @@ sub to_pdftex {
return @out;
}
+
###############################################################################
# mkMaps()
# the main task of this script: create the output files
-###############################################################################
+#
sub mkMaps {
my @lines;
my $logfile;
@@ -947,14 +841,14 @@ sub mkMaps {
$cache=1;
if (! $dry_run) {
- my $TEXMFVAR=`kpsewhich --var-value=TEXMFVAR`;
+ my $TEXMFVAR = `kpsewhich --var-value=TEXMFVAR`;
chomp($TEXMFVAR);
- $logfile="$TEXMFVAR/web2c/updmap.log";
+ $logfile = "$TEXMFVAR/web2c/updmap.log";
mkdirhier "$TEXMFVAR/web2c";
open LOG, ">$logfile"
- or die "Can't open \"$logfile\"";
+ or die "$0: Can't open log file \"$logfile\": $!";
$writelog=1;
- print LOG &version() . "\n";
+ print LOG &version();
printf LOG "%s\n\n", scalar localtime();
print LOG "Using config file \"$cnfFile\".\n";
}
@@ -963,7 +857,7 @@ sub mkMaps {
if ($dry_run) {
print $str;
} else {
- print $str if (! $quiet);
+ print $str if !$quiet;
print LOG $str;
}
}
@@ -987,26 +881,26 @@ sub mkMaps {
$pdftexDownloadBase14 = &cfgval("pdftexDownloadBase14");
$pdftexDownloadBase14 = 1 unless (defined $pdftexDownloadBase14);
- &wlog ("\nupdmap " .
- ($dry_run ? "would create" : "is creating") .
- " new map files using the following configuration:" .
- "\n LW35 font names : " .
- $mode .
- "\n prefer outlines : " .
- ($dvipsPreferOutline ? "true" : "false") .
- "\n texhash enabled : " .
- ($nohash ? "false" : "true") .
- "\n download standard fonts (dvips) : " .
- ($dvipsDownloadBase35 ? "true" : "false") .
- "\n download standard fonts (pdftex) : " .
- ($pdftexDownloadBase14 ? "true" : "false") .
- "\n\n");
+ &wlog ("\n$0 "
+ . ($dry_run ? "would create" : "is creating") . " new map files"
+ . "\nusing the following configuration:"
+ . "\n LW35 font names : "
+ . $mode
+ . "\n prefer outlines : "
+ . ($dvipsPreferOutline ? "true" : "false")
+ . "\n texhash enabled : "
+ . ($nohash ? "false" : "true")
+ . "\n download standard fonts (dvips) : "
+ . ($dvipsDownloadBase35 ? "true" : "false")
+ . "\n download standard fonts (pdftex) : "
+ . ($pdftexDownloadBase14 ? "true" : "false")
+ . "\n\n");
&wlog ("Scanning for LW35 support files");
$dvips35 = &locateMap("dvips35.map");
$pdftex35 = &locateMap("pdftex35.map");
$ps2pk35 = &locateMap("ps2pk35.map");
- my $LW35="\n$dvips35\n$pdftex35\n$ps2pk35\n\n";
+ my $LW35 = "\n$dvips35\n$pdftex35\n$ps2pk35\n\n";
if ($dry_run) {
print $LW35;
} else {
@@ -1045,10 +939,9 @@ sub mkMaps {
if (@missing > 0) {
print STDERR "\nERROR: The following map file(s) couldn't be found:\n\t";
print STDERR join(' ', @missing);
- my $progname=&progname();
print STDERR "\n\n\tDid you run mktexlsr?\n\n" .
- "\tYou can delete non-existent map entries using the command\n".
- "\n\t $progname --syncwithtrees\n\n";
+ "\tYou can delete non-existent map entries using the option\n".
+ "\t --syncwithtrees.\n\n";
exit (1);
}
exit(0) if $dry_run;
@@ -1072,14 +965,14 @@ sub mkMaps {
close FILE;
}
- print "Generating output for ps2pk...\n" if (! $quiet);
+ print "Generating output for ps2pk...\n" if !$quiet;
my @ps2pk_map = &transLW35($ps2pk35);
push @ps2pk_map, &getLines(@tmp1);
push @ps2pk_map, &getLines(@tmp2);
&writeLines(">$dvipsoutputdir/ps2pk.map",
&normalizeLines(@ps2pk_map));
- print "Generating output for dvips...\n" if (! $quiet);
+ print "Generating output for dvips...\n" if !$quiet;
my @download35_map = &transLW35($ps2pk35);
&writeLines(">$dvipsoutputdir/download35.map",
&normalizeLines(@download35_map));
@@ -1101,7 +994,7 @@ sub mkMaps {
&writeLines(">$dvipsoutputdir/psfonts_pk.map",
&normalizeLines(@psfonts_pk_map));
- print "Generating output for pdftex...\n" if (! $quiet);
+ print "Generating output for pdftex...\n" if !$quiet;
# remove PaintType due to Sebastian's request
my @tmp3 = &transLW35($pdftex35);
push @tmp3, &getLines(@tmp1);
@@ -1166,24 +1059,191 @@ sub mkMaps {
$updLSR->{add}("$d/$f");
}
close LOG;
- print "\nTranscript written on \"$logfile\".\n" if (! $quiet);
+ print "\nTranscript written on \"$logfile\".\n" if !$quiet;
}
+
###############################################################################
-# main()
-# execution starts here
+# initVars()
+# initialize global variables
+#
+sub initVars {
+ $quiet = 0;
+ $nohash = 0;
+ $nomkmap = 0;
+ $cnfFile = "";
+ $cnfFileShort = "updmap.cfg";
+ $outputdir = "";
+ chomp($TEXMFMAIN =`kpsewhich --var-value=TEXMFMAIN`);
+
+ @psADOBE = (
+ 's/ URWGothicL-Demi / AvantGarde-Demi /',
+ 's/ URWGothicL-DemiObli / AvantGarde-DemiOblique /',
+ 's/ URWGothicL-Book / AvantGarde-Book /',
+ 's/ URWGothicL-BookObli / AvantGarde-BookOblique /',
+ 's/ URWBookmanL-DemiBold / Bookman-Demi /',
+ 's/ URWBookmanL-DemiBoldItal / Bookman-DemiItalic /',
+ 's/ URWBookmanL-Ligh / Bookman-Light /',
+ 's/ URWBookmanL-LighItal / Bookman-LightItalic /',
+ 's/ NimbusMonL-Bold / Courier-Bold /',
+ 's/ NimbusMonL-BoldObli / Courier-BoldOblique /',
+ 's/ NimbusMonL-Regu / Courier /',
+ 's/ NimbusMonL-ReguObli / Courier-Oblique /',
+ 's/ NimbusSanL-Bold / Helvetica-Bold /',
+ 's/ NimbusSanL-BoldCond / Helvetica-Narrow-Bold /',
+ 's/ NimbusSanL-BoldItal / Helvetica-BoldOblique /',
+ 's/ NimbusSanL-BoldCondItal / Helvetica-Narrow-BoldOblique /',
+ 's/ NimbusSanL-Regu / Helvetica /',
+ 's/ NimbusSanL-ReguCond / Helvetica-Narrow /',
+ 's/ NimbusSanL-ReguItal / Helvetica-Oblique /',
+ 's/ NimbusSanL-ReguCondItal / Helvetica-Narrow-Oblique /',
+ 's/ CenturySchL-Bold / NewCenturySchlbk-Bold /',
+ 's/ CenturySchL-BoldItal / NewCenturySchlbk-BoldItalic /',
+ 's/ CenturySchL-Roma / NewCenturySchlbk-Roman /',
+ 's/ CenturySchL-Ital / NewCenturySchlbk-Italic /',
+ 's/ URWPalladioL-Bold / Palatino-Bold /',
+ 's/ URWPalladioL-BoldItal / Palatino-BoldItalic /',
+ 's/ URWPalladioL-Roma / Palatino-Roman /',
+ 's/ URWPalladioL-Ital / Palatino-Italic /',
+ 's/ StandardSymL / Symbol /',
+ 's/ NimbusRomNo9L-Medi / Times-Bold /',
+ 's/ NimbusRomNo9L-MediItal / Times-BoldItalic /',
+ 's/ NimbusRomNo9L-Regu / Times-Roman /',
+ 's/ NimbusRomNo9L-ReguItal / Times-Italic /',
+ 's/ URWChanceryL-MediItal / ZapfChancery-MediumItalic /',
+ 's/ Dingbats / ZapfDingbats /',
+ );
+
+ @fileADOBEkb = (
+ 's/\buagd8a.pfb\b/pagd8a.pfb/',
+ 's/\buagdo8a.pfb\b/pagdo8a.pfb/',
+ 's/\buagk8a.pfb\b/pagk8a.pfb/',
+ 's/\buagko8a.pfb\b/pagko8a.pfb/',
+ 's/\bubkd8a.pfb\b/pbkd8a.pfb/',
+ 's/\bubkdi8a.pfb\b/pbkdi8a.pfb/',
+ 's/\bubkl8a.pfb\b/pbkl8a.pfb/',
+ 's/\bubkli8a.pfb\b/pbkli8a.pfb/',
+ 's/\bucrb8a.pfb\b/pcrb8a.pfb/',
+ 's/\bucrbo8a.pfb\b/pcrbo8a.pfb/',
+ 's/\bucrr8a.pfb\b/pcrr8a.pfb/',
+ 's/\bucrro8a.pfb\b/pcrro8a.pfb/',
+ 's/\buhvb8a.pfb\b/phvb8a.pfb/',
+ 's/\buhvb8ac.pfb\b/phvb8an.pfb/',
+ 's/\buhvbo8a.pfb\b/phvbo8a.pfb/',
+ 's/\buhvbo8ac.pfb\b/phvbo8an.pfb/',
+ 's/\buhvr8a.pfb\b/phvr8a.pfb/',
+ 's/\buhvr8ac.pfb\b/phvr8an.pfb/',
+ 's/\buhvro8a.pfb\b/phvro8a.pfb/',
+ 's/\buhvro8ac.pfb\b/phvro8an.pfb/',
+ 's/\buncb8a.pfb\b/pncb8a.pfb/',
+ 's/\buncbi8a.pfb\b/pncbi8a.pfb/',
+ 's/\buncr8a.pfb\b/pncr8a.pfb/',
+ 's/\buncri8a.pfb\b/pncri8a.pfb/',
+ 's/\buplb8a.pfb\b/pplb8a.pfb/',
+ 's/\buplbi8a.pfb\b/pplbi8a.pfb/',
+ 's/\buplr8a.pfb\b/pplr8a.pfb/',
+ 's/\buplri8a.pfb\b/pplri8a.pfb/',
+ 's/\busyr.pfb\b/psyr.pfb/',
+ 's/\butmb8a.pfb\b/ptmb8a.pfb/',
+ 's/\butmbi8a.pfb\b/ptmbi8a.pfb/',
+ 's/\butmr8a.pfb\b/ptmr8a.pfb/',
+ 's/\butmri8a.pfb\b/ptmri8a.pfb/',
+ 's/\buzcmi8a.pfb\b/pzcmi8a.pfb/',
+ 's/\buzdr.pfb\b/pzdr.pfb/',
+ );
+
+ @fileURW = (
+ 's/\buagd8a.pfb\b/a010015l.pfb/',
+ 's/\buagdo8a.pfb\b/a010035l.pfb/',
+ 's/\buagk8a.pfb\b/a010013l.pfb/',
+ 's/\buagko8a.pfb\b/a010033l.pfb/',
+ 's/\bubkd8a.pfb\b/b018015l.pfb/',
+ 's/\bubkdi8a.pfb\b/b018035l.pfb/',
+ 's/\bubkl8a.pfb\b/b018012l.pfb/',
+ 's/\bubkli8a.pfb\b/b018032l.pfb/',
+ 's/\bucrb8a.pfb\b/n022004l.pfb/',
+ 's/\bucrbo8a.pfb\b/n022024l.pfb/',
+ 's/\bucrr8a.pfb\b/n022003l.pfb/',
+ 's/\bucrro8a.pfb\b/n022023l.pfb/',
+ 's/\buhvb8a.pfb\b/n019004l.pfb/',
+ 's/\buhvb8ac.pfb\b/n019044l.pfb/',
+ 's/\buhvbo8a.pfb\b/n019024l.pfb/',
+ 's/\buhvbo8ac.pfb\b/n019064l.pfb/',
+ 's/\buhvr8a.pfb\b/n019003l.pfb/',
+ 's/\buhvr8ac.pfb\b/n019043l.pfb/',
+ 's/\buhvro8a.pfb\b/n019023l.pfb/',
+ 's/\buhvro8ac.pfb\b/n019063l.pfb/',
+ 's/\buncb8a.pfb\b/c059016l.pfb/',
+ 's/\buncbi8a.pfb\b/c059036l.pfb/',
+ 's/\buncr8a.pfb\b/c059013l.pfb/',
+ 's/\buncri8a.pfb\b/c059033l.pfb/',
+ 's/\buplb8a.pfb\b/p052004l.pfb/',
+ 's/\buplbi8a.pfb\b/p052024l.pfb/',
+ 's/\buplr8a.pfb\b/p052003l.pfb/',
+ 's/\buplri8a.pfb\b/p052023l.pfb/',
+ 's/\busyr.pfb\b/s050000l.pfb/',
+ 's/\butmb8a.pfb\b/n021004l.pfb/',
+ 's/\butmbi8a.pfb\b/n021024l.pfb/',
+ 's/\butmr8a.pfb\b/n021003l.pfb/',
+ 's/\butmri8a.pfb\b/n021023l.pfb/',
+ 's/\buzcmi8a.pfb\b/z003034l.pfb/',
+ 's/\buzdr.pfb\b/d050000l.pfb/',
+ );
+
+ @fileADOBE = (
+ 's/\buagd8a.pfb\b/agd_____.pfb/',
+ 's/\buagdo8a.pfb\b/agdo____.pfb/',
+ 's/\buagk8a.pfb\b/agw_____.pfb/',
+ 's/\buagko8a.pfb\b/agwo____.pfb/',
+ 's/\bubkd8a.pfb\b/bkd_____.pfb/',
+ 's/\bubkdi8a.pfb\b/bkdi____.pfb/',
+ 's/\bubkl8a.pfb\b/bkl_____.pfb/',
+ 's/\bubkli8a.pfb\b/bkli____.pfb/',
+ 's/\bucrb8a.pfb\b/cob_____.pfb/',
+ 's/\bucrbo8a.pfb\b/cobo____.pfb/',
+ 's/\bucrr8a.pfb\b/com_____.pfb/',
+ 's/\bucrro8a.pfb\b/coo_____.pfb/',
+ 's/\buhvb8a.pfb\b/hvb_____.pfb/',
+ 's/\buhvb8ac.pfb\b/hvnb____.pfb/',
+ 's/\buhvbo8a.pfb\b/hvbo____.pfb/',
+ 's/\buhvbo8ac.pfb\b/hvnbo___.pfb/',
+ 's/\buhvr8a.pfb\b/hv______.pfb/',
+ 's/\buhvr8ac.pfb\b/hvn_____.pfb/',
+ 's/\buhvro8a.pfb\b/hvo_____.pfb/',
+ 's/\buhvro8ac.pfb\b/hvno____.pfb/',
+ 's/\buncb8a.pfb\b/ncb_____.pfb/',
+ 's/\buncbi8a.pfb\b/ncbi____.pfb/',
+ 's/\buncr8a.pfb\b/ncr_____.pfb/',
+ 's/\buncri8a.pfb\b/nci_____.pfb/',
+ 's/\buplb8a.pfb\b/pob_____.pfb/',
+ 's/\buplbi8a.pfb\b/pobi____.pfb/',
+ 's/\buplr8a.pfb\b/por_____.pfb/',
+ 's/\buplri8a.pfb\b/poi_____.pfb/',
+ 's/\busyr.pfb\b/sy______.pfb/',
+ 's/\butmb8a.pfb\b/tib_____.pfb/',
+ 's/\butmbi8a.pfb\b/tibi____.pfb/',
+ 's/\butmr8a.pfb\b/tir_____.pfb/',
+ 's/\butmri8a.pfb\b/tii_____.pfb/',
+ 's/\buzcmi8a.pfb\b/zcmi____.pfb/',
+ 's/\buzdr.pfb\b/zd______.pfb/',
+ );
+}
+
+
###############################################################################
+# main()
+#
sub main {
&initVars;
&processOptions;
+ &help if ($opt_help);
+
if (@showoptions) {
&showOptions(@showoptions);
exit 0;
}
- &help if ($opt_help);
-
&setupCfgFile;
if ($listmaps) {
@@ -1206,48 +1266,46 @@ sub main {
my $cmd = '';
if ($opt_edit) {
- my $editor = undef;
- $editor ||= $ENV{'EDITOR'};
- $editor ||= $ENV{'VISUAL'};
- if (&win32) {
- $editor ||= "notepad";
- } else {
- $editor ||= "vi";
- }
+ # it's not a good idea to edit updmap.cfg manually these days,
+ # but for compatibility we'll silently keep the option.
$cmd = 'edit';
- system("$editor $cnfFile");
- }
- elsif (keys %setOption) {
+ my $editor = $ENV{'VISUAL'} || $ENV{'EDITOR'};
+ $editor ||= (&win32 ? "notepad" : "vi");
+ system($editor, $cnfFile);
+
+ } elsif (@setoptions) {
$cmd = 'setOption';
- foreach my $m (keys %setOption) {
- &setOption ($m, $setOption{$m});
- }
- }
- elsif ($enableItem) {
+ &setOptions (@setoptions);
+
+ } elsif ($enableItem) {
$cmd = 'enableMap';
- if ($enableItem=~/=/) {
+ if ($enableItem =~ /=/) {
&enableMap(split('=', $enableItem));
} else {
&enableMap($enableItem, shift @ARGV);
}
- }
- elsif (@disableItem) {
+
+ } elsif (@disableItem) {
$cmd = 'disableMap';
foreach my $m (@disableItem) {
&disableMap($m);
}
}
+
if ($cmd && !$opt_force && &files_are_equal($bakFile, $cnfFile)) {
- print "$cnfFile unchanged. Map files not recreated.\n" unless ($quiet);
- }
- else {
+ print "$cnfFile unchanged. Map files not recreated.\n" if !$quiet;
+ } else {
if (! $nomkmap) {
&setupDestDir;
&mkMaps;
}
unlink ($bakFile);
}
- $updLSR->{exec}() unless $nohash;
+
+ unless ($nohash) {
+ print "$0: Updating ls-R files.\n" if !$quiet;
+ $updLSR->{exec}()
+ }
}
__END__