summaryrefslogtreecommitdiff
path: root/Build/source/texk/tetex
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/tetex')
-rw-r--r--Build/source/texk/tetex/ChangeLog10
-rw-r--r--Build/source/texk/tetex/Makefile.am33
-rw-r--r--Build/source/texk/tetex/Makefile.in160
-rw-r--r--Build/source/texk/tetex/e2pall.man55
-rwxr-xr-xBuild/source/texk/tetex/tests/updmap-cmdline-test.pl20
-rw-r--r--Build/source/texk/tetex/texdoctk.man217
-rw-r--r--Build/source/texk/tetex/thumbpdf.man100
-rwxr-xr-xBuild/source/texk/tetex/updmap-sys.sh30
-rw-r--r--Build/source/texk/tetex/updmap.cfg.5135
-rw-r--r--Build/source/texk/tetex/updmap.help2man100
-rw-r--r--Build/source/texk/tetex/updmap.man330
-rwxr-xr-xBuild/source/texk/tetex/updmap.pl2163
12 files changed, 38 insertions, 3315 deletions
diff --git a/Build/source/texk/tetex/ChangeLog b/Build/source/texk/tetex/ChangeLog
index abdc49b7cb4..2c6d0aed2ad 100644
--- a/Build/source/texk/tetex/ChangeLog
+++ b/Build/source/texk/tetex/ChangeLog
@@ -1,3 +1,13 @@
+2012-08-07 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * tests/, updmap* (removed): Moved from here to ../texlive/.
+ * Makefile.am: Adapted.
+
+2012-08-06 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * e2pall.man, texdoctk.man, texdoctk.man: Moved to ../texlive/.
+ * Makefile.am: Adapted.
+
2012-08-04 Karl Berry <karl@tug.org>
* tl-sys-wrapper: not needed. The Windows wrapper, runscript.tlu,
diff --git a/Build/source/texk/tetex/Makefile.am b/Build/source/texk/tetex/Makefile.am
index 2f82752bf0a..a969da396ee 100644
--- a/Build/source/texk/tetex/Makefile.am
+++ b/Build/source/texk/tetex/Makefile.am
@@ -7,11 +7,9 @@ ACLOCAL_AMFLAGS = -I ../../m4
EXTRA_DIST =
-perl_scripts = \
- updmap
+perl_scripts =
-shell_scripts = \
- updmap-sys
+shell_scripts =
sh_scripts = \
allcm \
@@ -52,7 +50,6 @@ dist_man1_MANS = \
allneeded.man \
dvi2fax.man \
dvired.man \
- e2pall.man \
fmtutil.man \
fontinst.man \
kpsetool.man \
@@ -62,14 +59,10 @@ dist_man1_MANS = \
rubibtex.man \
rumakeindex.man \
texconfig.man \
- texdoctk.man \
- texlinks.man \
- thumbpdf.man \
- updmap.man
+ texlinks.man
dist_man5_MANS = \
- fmtutil.cnf.5 \
- updmap.cfg.5
+ fmtutil.cnf.5
texconfigdir = $(datarootdir)/texmf/texconfig
dist_texconfig_SCRIPTS = tcfmgr
@@ -88,8 +81,7 @@ include $(top_srcdir)/../am/bin_links.am
man1_links = $(bin_links) \
fmtutil:fmtutil-sys \
- texconfig:texconfig-sys \
- updmap:updmap-sys
+ texconfig:texconfig-sys
include $(top_srcdir)/../am/man1_links.am
@@ -125,18 +117,3 @@ if !WIN32
PATH="$(DESTDIR)$(bindir):$(PATH)"; export PATH; $(run_texlinks)
endif !WIN32
-## Generate the updmap man page using help2man plus a bit of
-## handwritten material. But don't actually update updmap.man,
-## we don't want to require help2man for an install. Leave that to be
-## done by hand.
-.PHONY: xupdmap.man
-xupdmap.man: updmap.help2man updmap.pl
- help2man --include=$< --source="TeX Live" --no-info \
- $(srcdir)/updmap.pl >/tmp/$@
-EXTRA_DIST += updmap.help2man
-
-## Tests
-##
-TESTS = tests/updmap-cmdline-test.pl
-EXTRA_DIST += $(TESTS)
-
diff --git a/Build/source/texk/tetex/Makefile.in b/Build/source/texk/tetex/Makefile.in
index 1ac3a78edeb..11f70358443 100644
--- a/Build/source/texk/tetex/Makefile.in
+++ b/Build/source/texk/tetex/Makefile.in
@@ -123,10 +123,6 @@ man5dir = $(mandir)/man5
NROFF = nroff
MANS = $(dist_man1_MANS) $(dist_man5_MANS)
DATA = $(dist_texconfig_DATA) $(dist_web2c_DATA)
-am__tty_colors_dummy = \
- mgn= red= grn= lgn= blu= brg= std=; \
- am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
@@ -231,13 +227,9 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
ACLOCAL_AMFLAGS = -I ../../m4
EXTRA_DIST = ../../build-aux/relpath README.texdoctk old-fontinst.bat \
- old-updmap updmap-single.pl updmap.help2man $(TESTS)
-perl_scripts = \
- updmap
-
-shell_scripts = \
- updmap-sys
-
+ old-updmap updmap-single.pl
+perl_scripts =
+shell_scripts =
sh_scripts = \
allcm \
allneeded \
@@ -272,7 +264,6 @@ dist_man1_MANS = \
allneeded.man \
dvi2fax.man \
dvired.man \
- e2pall.man \
fmtutil.man \
fontinst.man \
kpsetool.man \
@@ -282,14 +273,10 @@ dist_man1_MANS = \
rubibtex.man \
rumakeindex.man \
texconfig.man \
- texdoctk.man \
- texlinks.man \
- thumbpdf.man \
- updmap.man
+ texlinks.man
dist_man5_MANS = \
- fmtutil.cnf.5 \
- updmap.cfg.5
+ fmtutil.cnf.5
texconfigdir = $(datarootdir)/texmf/texconfig
dist_texconfig_SCRIPTS = tcfmgr
@@ -304,14 +291,12 @@ bin_links = \
man1_links = $(bin_links) \
fmtutil:fmtutil-sys \
- texconfig:texconfig-sys \
- updmap:updmap-sys
+ texconfig:texconfig-sys
run_texlinks = $(DESTDIR)$(bindir)/texlinks -v \
-f $(DESTDIR)$(web2cdir)/fmtutil.cnf \
-e "$(EXEEXT)" $(DESTDIR)$(bindir)
-TESTS = tests/updmap-cmdline-test.pl
all: all-am
.SUFFIXES:
@@ -623,99 +608,6 @@ CTAGS:
cscope cscopelist:
-check-TESTS: $(TESTS)
- @failed=0; all=0; xfail=0; xpass=0; skip=0; \
- srcdir=$(srcdir); export srcdir; \
- list=' $(TESTS) '; \
- $(am__tty_colors); \
- if test -n "$$list"; then \
- for tst in $$list; do \
- if test -f ./$$tst; then dir=./; \
- elif test -f $$tst; then dir=; \
- else dir="$(srcdir)/"; fi; \
- if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \
- all=`expr $$all + 1`; \
- case " $(XFAIL_TESTS) " in \
- *[\ \ ]$$tst[\ \ ]*) \
- xpass=`expr $$xpass + 1`; \
- failed=`expr $$failed + 1`; \
- col=$$red; res=XPASS; \
- ;; \
- *) \
- col=$$grn; res=PASS; \
- ;; \
- esac; \
- elif test $$? -ne 77; then \
- all=`expr $$all + 1`; \
- case " $(XFAIL_TESTS) " in \
- *[\ \ ]$$tst[\ \ ]*) \
- xfail=`expr $$xfail + 1`; \
- col=$$lgn; res=XFAIL; \
- ;; \
- *) \
- failed=`expr $$failed + 1`; \
- col=$$red; res=FAIL; \
- ;; \
- esac; \
- else \
- skip=`expr $$skip + 1`; \
- col=$$blu; res=SKIP; \
- fi; \
- echo "$${col}$$res$${std}: $$tst"; \
- done; \
- if test "$$all" -eq 1; then \
- tests="test"; \
- All=""; \
- else \
- tests="tests"; \
- All="All "; \
- fi; \
- if test "$$failed" -eq 0; then \
- if test "$$xfail" -eq 0; then \
- banner="$$All$$all $$tests passed"; \
- else \
- if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
- banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
- fi; \
- else \
- if test "$$xpass" -eq 0; then \
- banner="$$failed of $$all $$tests failed"; \
- else \
- if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
- banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
- fi; \
- fi; \
- dashes="$$banner"; \
- skipped=""; \
- if test "$$skip" -ne 0; then \
- if test "$$skip" -eq 1; then \
- skipped="($$skip test was not run)"; \
- else \
- skipped="($$skip tests were not run)"; \
- fi; \
- test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
- dashes="$$skipped"; \
- fi; \
- report=""; \
- if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
- report="Please report to $(PACKAGE_BUGREPORT)"; \
- test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
- dashes="$$report"; \
- fi; \
- dashes=`echo "$$dashes" | sed s/./=/g`; \
- if test "$$failed" -eq 0; then \
- col="$$grn"; \
- else \
- col="$$red"; \
- fi; \
- echo "$${col}$$dashes$${std}"; \
- echo "$${col}$$banner$${std}"; \
- test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
- test -z "$$report" || echo "$${col}$$report$${std}"; \
- echo "$${col}$$dashes$${std}"; \
- test "$$failed" -eq 0; \
- else :; fi
-
distdir: $(DISTFILES)
@list='$(MANS)'; if test -n "$$list"; then \
list=`for p in $$list; do \
@@ -886,7 +778,6 @@ distcleancheck: distclean
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) check-TESTS
check: check-am
all-am: Makefile $(SCRIPTS) $(MANS) $(DATA)
installdirs:
@@ -1003,23 +894,23 @@ uninstall-am: uninstall-dist_binSCRIPTS uninstall-dist_texconfigDATA \
$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
uninstall-man: uninstall-man1 uninstall-man5
-.MAKE: check-am install-am install-data-am install-exec-am \
- install-strip uninstall-am
-
-.PHONY: all all-am am--refresh check check-TESTS check-am clean \
- clean-generic dist dist-all dist-bzip2 dist-gzip dist-lzip \
- dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
- distclean-generic distcleancheck distdir distuninstallcheck \
- dvi dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-data-hook \
- install-dist_binSCRIPTS install-dist_texconfigDATA \
- install-dist_texconfigSCRIPTS install-dist_texmfSCRIPTS \
- install-dist_web2cDATA install-dvi install-dvi-am install-exec \
- install-exec-am install-exec-hook install-html install-html-am \
- install-info install-info-am install-man install-man1 \
- install-man5 install-nodist_binSCRIPTS install-pdf \
- install-pdf-am install-ps install-ps-am install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
+.MAKE: install-am install-data-am install-exec-am install-strip \
+ uninstall-am
+
+.PHONY: all all-am am--refresh check check-am clean clean-generic dist \
+ dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
+ dist-xz dist-zip distcheck distclean distclean-generic \
+ distcleancheck distdir distuninstallcheck dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-data-hook install-dist_binSCRIPTS \
+ install-dist_texconfigDATA install-dist_texconfigSCRIPTS \
+ install-dist_texmfSCRIPTS install-dist_web2cDATA install-dvi \
+ install-dvi-am install-exec install-exec-am install-exec-hook \
+ install-html install-html-am install-info install-info-am \
+ install-man install-man1 install-man5 \
+ install-nodist_binSCRIPTS install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
pdf-am ps ps-am uninstall uninstall-am \
uninstall-dist_binSCRIPTS uninstall-dist_texconfigDATA \
@@ -1105,11 +996,6 @@ uninstall-hook: uninstall-bin-links uninstall-links uninstall-man1-links
run-texlinks:
@WIN32_FALSE@ PATH="$(DESTDIR)$(bindir):$(PATH)"; export PATH; $(run_texlinks)
-.PHONY: xupdmap.man
-xupdmap.man: updmap.help2man updmap.pl
- help2man --include=$< --source="TeX Live" --no-info \
- $(srcdir)/updmap.pl >/tmp/$@
-
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/Build/source/texk/tetex/e2pall.man b/Build/source/texk/tetex/e2pall.man
deleted file mode 100644
index b102568b53a..00000000000
--- a/Build/source/texk/tetex/e2pall.man
+++ /dev/null
@@ -1,55 +0,0 @@
-.TH "e2pall" "1" "August 2000" "teTeX" "teTeX"
-.PP
-.SH "NAME"
-e2pall \- convert all EPS files in a LaTeX document to PDF
-.PP
-.SH "SYNOPSIS"
-.PP
-\fBe2pall\fP \fITEXFILE\fP
-.PP
-.SH "DESCRIPTION"
-.PP
-\fBe2pall\fP searches through \fITEXFILE\fP for \eincludegraphics
-commands to find the base names of image files\&. When it finds one,
-\fBe2pall\fP runs \fBepstopdf\fP(1) to create a PDF file from the EPS
-file\&.
-.PP
-\fBe2pall\fP will check to be sure that an existing PDF file is
-up-to-date with the EPS file, and will not run \fBepstopdf\fP(1) if
-the PDF file is newer than the EPS file\&.
-.PP
-.SH "BUGS"
-.PP
-.IP ""
-Seems to be broken
-.IP ""
-Cannot handle \einput{\fIfilename\fP} or
-\eincludegraphics{\fIfilename\fP} split over more than one
-line
-.IP ""
-Must be run from same directory as the LaTeX file
-.IP ""
-Does not look down $TEXINPUTS
-.IP ""
-Cannot handle documents that use \einclude commands
-.IP ""
-Assumes \fIall\fP files included with \eincludegraphics are EPS
-files
-.IP
-.PP
-.SH "SEE ALSO"
-.PP
-\fBepstopdf\fP(1)
-.PP
-.SH "AUTHOR"
-.PP
-\fBe2pall\fP was written by Jody Klymak <jklymak@apl\&.washington\&.edu> and published in a posting to
-the <pdftex@tug\&.org> (mailing list)\&.
-.PP
-This manual page was written by C\&.M\&. Connelly
-<c@eskimo\&.com>, for
-the Debian GNU/Linux system\&. It may be used by other distributions
-without contacting the author\&. Any mistakes or omissions in the
-manual page are my fault; inquiries about or corrections to this
-manual page should be directed to me (and not to the primary author)\&.
-.PP
diff --git a/Build/source/texk/tetex/tests/updmap-cmdline-test.pl b/Build/source/texk/tetex/tests/updmap-cmdline-test.pl
deleted file mode 100755
index 3875fb760e6..00000000000
--- a/Build/source/texk/tetex/tests/updmap-cmdline-test.pl
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env perl
-# $Id$
-# Public domain. Originally written 2011, Karl Berry.
-# Check that updmap can parse various cmdline invocations.
-
-# srcdir = tetex (in the source tree)
-BEGIN { chomp ($srcdir = $ENV{"srcdir"} || `cd \`dirname $0\`/.. && pwd`); }
-require "$srcdir/../tests/common-test.pl";
-
-exit (&main ());
-
-sub main {
- my $ret = &test_run ("$srcdir/updmap.pl", "--version");
-
- # we aren't going to fix this in the current updmap.pl.
- # "foo", "--enable Map"
- # "-n", "--quiet",
- my $bad = $ret != 0;
- return $bad;
-}
diff --git a/Build/source/texk/tetex/texdoctk.man b/Build/source/texk/tetex/texdoctk.man
deleted file mode 100644
index e7aebb7098a..00000000000
--- a/Build/source/texk/tetex/texdoctk.man
+++ /dev/null
@@ -1,217 +0,0 @@
-.TH TEXDOCTK 1
-.SH NAME
-texdoctk \- GUI for easier access of TeX package and program documentations
-.SH SYNOPSIS
-.B texdoctk
--[aq]
-.SH "DESCRIPTION"
-.B texdoctk
-is a GUI for easier access to a large part of the vast amount
-of package and program documentations and tutorials for TeX and its
-different derivatives (mainly LaTeX). It is optimized and included in
-the teTeX and fpTeX distributions and also available with TeXLive.
-.PP
-The documentation is grouped into 17 categories; the 18th button of the main
-panel is inactive by default and intended for use with local additions (see
-section
-.B CONFIGURATION
-below).
-.PP
-In the settings window you see a checkbox in the html->ps and text->ps
-converter menus for switching on/off output redirect. This is due to the fact
-that some converters do not write their output into a file but to stdout by
-default, so a redirect is needed, e.g.
-.PP
-a2ps myfile.txt >myfile.ps
-.SH "OPTIONS"
-.TP
-.I "\-v"
-verbose: enable some viewer messages which are otherwise sent to stderr,
-as well as some warning popup windows. This can also be set in a
-configuration file.
-.TP
-.I "\-a"
-autoview: autostart viewer if a listbox contains only one item (this will
-frequently happen in search results). This can also be set in a configuration
-file.
-.SH "CONFIGURATION"
-.PP
-The configuration is controlled by the system default configuration file
-($TEXMFMAIN)/texdoctk/texdocrc.defaults, most of whose entries can though be
-overridden by the users' own optional ~/.texdocrc files and/or command line
-options.
-.SS The Settings menu and configuration files
-.PP
-The Settings menu is used to change the user-definable settings of \fBtexdoctk\fP
-for the duration of the program call or as new defaults. The latter case is
-the purpose of the Save button, which generates or rewrites the user's own
-~/.texdocrc file. The system defaults cannot be edited with the Settings
-menu.
-.TP
-Paths
-The TEXMF-type paths on the system are reported, and the user can specify the
-name of the subdirectory of $HOMETEXMF, where the personal documentation is
-stored.
-.TP
-General viewer behaviour
-
-.I Suppress error messages
-toggle verbose mode (see option -v); default is off.
-
-.I Autostart viewer for one-item listboxes
-if a listbox contains only one item (see option -a)
-
-.I Use text viewer for unknown file format
-i.e. treat the file as plain text. \fBtexdoctk\fP should recognize the usual file
-formats and also relate names like README to plain text, but some docs may have
-freely invented names. Default is on; if switched off, trying to view such
-files will raise an error. The switch does not influence printing: unrecognized
-formats cannot be printed.
-
-.I Change viewer colours
-using either RGB triplets in the format #rrggbb or the standardized names.
-.TP
-DVI/PostScript/PDF/HTML/Plain text
-For text files, \fBtexdoctk\fP provides an own viewer. If this viewer is disabled,
-but no alternative viewer is specified, \fBtexdoctk\fP tries to read the content
-of the environment variable $PAGER.
-
-If you want to print the documentations, you will need converters to turn
-non-PS files into PostScript. Here are some suggestions:
-
-\& dvi->ps:
-dvips (is part of teTeX) (http://www.radicaleye.com/dvips.html)
-
-\& pdf->ps:
-pdf2ps (http://www.cs.wisc.edu/~ghost) or
-Acrobat Reader (http://www.adobe.com)
-
-\& html->ps: html2ps (http://user.it.uu.se/~jan/html2ps.html)
-
-\& plain text->ps: a2ps (http://www-inf.enst.fr/~demaille/a2ps/)
-
-The html->ps and text->ps converter menus for switching on/off output redirect.
-This is due to the fact that some converters do not write their output into a
-file but to stdout by default, so a redirect is needed, e.g.
-.B a2ps myfile.txt >myfile.ps
-.PP
-The system-wide configuration file is ($TEXMFMAIN)/texdoctk/texdocrc.defaults
-and should only be writable by the administrator of the installation using any
-text editor. The optional user configuration file is ~/.texdocrc and can
-override all but those system settings which affect the installation as a
-whole. The preferred way of changing it is through the Settings menu.
-.SS The databases
-\fBtexdoctk\fP comes with a default database file ($TEXMFMAIN)/texdoctk/texdoctk.dat
-with a special format. It is divided into 17 sections corresponding to the
-17 buttons that are active by default. Each section begins with a line
-
-@\fIsection_name\fP
-
-where
-.I section_name
-is the text as it appears in the button. This title is
-followed by the descriptive entries for each documentation, which have this
-format:
-
-\fIpackage-label\fP;Short description for listbox (opt. \fIpackage-name\fP);path in doc directory;optional keywords
-
-(without breaking the line!). Comments (initiated with a #) and empty lines
-are ignored by the program. The second field is the text displayed in the
-selection listboxes of \fBtexdoctk\fP, and you will usually want to mention the name
-of the package in parens along with it; the first field is a \fBunique\fP label
-for the package for internal use of the program which will usually be chosen
-identical to the package name, but can be different if there is more than one
-documentation file coming with a package.
-.PP
-The administrator will probably install additional packages in the local texmf
-tree. The corresponding documentation can be made accessible by an additional
-database $TEXMFLOCAL/texdoctk/texdoctk-local.dat. Furthermore, individual
-users possibly install additional packages in an texmf subdirectory of their
-$HOME, for which they can make an individual database themselves as
-$TEXMFHOME/texdoctk/texdoctk-pers.dat. After creating such files, texhash
-must be executed.
-.PP
-Both types of databases must have the same structure as the system database,
-although they need (and should) not include all its sections if there are no
-additional entries. For example, if the the package
-.I foo
-is added to the local tree such that its documentation file is
-($TEXMFLOCAL)/doc/latex/foo/foo.dvi and it is decided that it fits best into
-the existing category Graphics, texdoctk-local.dat would look like this:
-
-@Graphics
-.br
-foo;Create bells and whistles (foo);latex/foo/foo.dvi;decoration
-
-The entry for
-.I foo
-will then be appended to the list of entries in the Graphics category. The 18th
-button can be activated in the same way, but using a new category name;
-possible entries at the beginning of the database which have not been assigned
-to a category will be assigned to the default Miscellaneous, making the 18th
-button active with that label. Note that you cannot have more than 18
-categories; if there are more, only the one defined last will appear and be
-used.
-.PP
-If the documentation is included in the .sty file instead of a proper
-documentation file, the optional keywords should start with
--?- directly after the semicolon, where ? is 0, 1, 2 or 3; these are flags
-which indicate in which part of the .sty the instructions are placed and
-should help \fBtexdoctk\fP to extract the documentation from the style and present
-it without the code, which would normally be of little use.
-.TP
-0
-no specific place, scattered between the code
-.TP
-1
-at end, behind \\endinput; some .sty files have well-organized documentation
-behind the end of the actual code, where TeX doesn't see it upon compilation
-.TP
-2
-at beginning, terminated by %%%%%%; in some other cases, some usage information
-is at the beginning of the .sty as a comment terminated by a line full of %
-.TP
-3
-as 2, but with a blank line as termination
-.PP
-See the system database for plenty of examples.
-
-.SH "FILES"
-.PP
-\& $TEXMFMAIN/texdoctk/texdocrc.defaults
-system-wide configuration file
-.PP
-\& ~/.texdocrc
-(optional) personal configuration file; can also be created with the Settings menu
-.PP
-\& $TEXMFMAIN/texdoctk/texdoctk.dat
-default database file for documentation files of the distribution
-.PP
-\& $TEXMFLOCAL/texdoctk/texdoctk-local.dat
-(optional) local database file for documentation files
-.PP
-\& $TEXMFHOME/texdoctk/texdoctk-pers.dat
-(optional) personal database file of individual users for documentation files
-.SH BUGS
-Widget placement in topic toplevels becomes ugly when the toplevel is stretched
-or shrunk.
-.PP
-The font in the frame labels of the Settings menu are not forced to the default
-font; this will become visible e.g. at hi-res screens, where the label font is
-not scaled up.
-.PP
-Netscape and Mozilla error output will be written to stderr even if the quiet
-mode was set.
-.SH AUTHOR
-.B texdoctk
-was written by Thomas Ruedas <tr@geol.ku.dk>.
-.PP
-This manual page was originally written by Adrian Bunk <bunk@fs.tum.de> for
-the Debian GNU/Linux system (but may be used by others). It is now maintained
-by Thomas Ruedas.
-
-.SH COPYRIGHT
-Copyright (C) 2000-2004 Thomas Ruedas
-.br
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
diff --git a/Build/source/texk/tetex/thumbpdf.man b/Build/source/texk/tetex/thumbpdf.man
deleted file mode 100644
index d1d7e358f9a..00000000000
--- a/Build/source/texk/tetex/thumbpdf.man
+++ /dev/null
@@ -1,100 +0,0 @@
-.TH "thumbpdf" "1" "September 2000" "teTeX" "teTeX"
-.PP
-.SH "NAME"
-thumbpdf \- generate thumbnail images for a PDF file
-created with \fBpdftex\fP
-.PP
-.SH "SYNOPSIS"
-.PP
-\fBthumbpdf\fP [ \fIOPTION\fP\&.\&.\&. ] \fIPDF_FILE\fP
-.PP
-.SH "DESCRIPTION"
-.PP
-\fBthumbpdf\fP is used to create thumbnail images of individual pages
-within a PDF (Portable Document Format) document\&.
-.PP
-.SH "USAGE"
-.PP
-First run \fBpdftex\fP(1) on your document to create a PDF file\&.
-Then run \fBthumbpdf\fP to generate the thumbnails, a PDF file
-containing the thumbnails, and a pdfTeX file to include the thumbnails
-in the PDF file\&. Finally, run \fBpdftex\fP(1) on your file again to
-create the final PDF file\&.
-.PP
-\fBthumbpdf\fP calls \fBgs\fP(1) to generate PNG images of the pages
-within \fIPDF_FILE\fP, and \fBpdftex\fP(1) to create a PDF file
-containing the thumbnail images\&.
-.PP
-.SH "OPTIONS"
-.PP
-.IP "\fB--help\fP"
-print usage
-.IP "\fB--(no)makepng\fP"
-make PNG thumbnail images (default: true)
-.IP "\fB--(no)makepdf\fP"
-generate new PDF file containing the
-thumbnails (default: true)
-.IP "\fB--(no)makedef\fP"
-create a TeX file for \fBpdftex\fP(1) to
-read in (default: true)
-.IP "\fB--(no)quiet\fP"
-suppress messages (default: false)
-.IP "\fB--(no)verbose\fP"
-verbose messages (default: false)
-.IP "\fB--(no)debug\fP"
-print debugging information while parsing
-(default: false)
-.IP "\fB--resolution\fP \fIres\fP"
-resolution for GhostScript step
-(default: 9)
-.IP "\fB--compress\fP \fIn\fP"
-\epdfcompresslevel for \fBthumbpdf\&.pdf\fP
-(0-9; default: 9)
-.IP "\fB--device\fP | \fBpng\fP\fIdev\fP"
-GhostScript PNG device;
-\fIdev\fP = `mono\', `gray\',
-`16\', `256\', `16m\' (default:
-`png16m\')
-.PP
-.SH "FILES"
-.PP
-.IP "\fIthumb\fPnn\fI\&.png\fP"
-PNG thumbnail images
-.IP "\fIthumbpdf\&.pdf\fP"
-PDF file containing thumbnail images
-.IP "\fIthumbpdf\&.tex\fP"
-A pdfTeX program to include the thumbnails
-file
-.IP "\fIthumbpdf\&.log\fP"
-pdfTeX log file
-.IP "\fIthumbpdf\&.sty\fP"
-a LaTeX package to be included in files
-for which a user wants to generate thumbnails
-.PP
-.SH "SEE ALSO"
-.PP
-\fBgs\fP(1), \fBpdftex\fP(1)\&.
-.PP
-Web page: <http://tug\&.org/teTeX/>
-.PP
-.SH "BUGS"
-.PP
-None known, but report any bugs found to the author\&.
-.PP
-.SH "COPYRIGHT"
-.PP
-Copyright © 1999\&. \fBthumbpdf\fP is distributed under
-version 1, or (at your option) a later version of the LaTeX Project
-Public License\&.
-.PP
-.SH "AUTHOR"
-.PP
-\fBthumbpdf\fP was written by Heiko Oberdiek
-<oberdiek@ruf\&.uni-freiburg\&.de>\&.
-.PP
-This manual page was written by C\&.M\&. Connelly
-<c@eskimo\&.com>, for
-the Debian GNU/Linux system\&. It may be used by other distributions
-without contacting the author\&. Any mistakes or omissions in the
-manual page are my fault; inquiries about or corrections to this
-manual page should be directed to me (and not to the primary author)\&.
diff --git a/Build/source/texk/tetex/updmap-sys.sh b/Build/source/texk/tetex/updmap-sys.sh
deleted file mode 100755
index 6f3c8365658..00000000000
--- a/Build/source/texk/tetex/updmap-sys.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-
-# updmap-sys: Thomas Esser, public domain.
-
-# wrapper script for updmap with TEXMFVAR and TEXMFCONFIG set to
-# TEXMFSYSVAR / TEXMFSYSCONFIG
-
-test -f /bin/ksh && test -z "$RUNNING_KSH" \
- && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \
- && { RUNNING_KSH=true; export RUNNING_KSH; exec /bin/ksh $0 ${1+"$@"}; }
-unset RUNNING_KSH
-
-test -f /bin/bsh && test -z "$RUNNING_BSH" \
- && { UNAMES=`uname -s`; test "x$UNAMES" = xAIX; } 2>/dev/null \
- && { RUNNING_BSH=true; export RUNNING_BSH; exec /bin/bsh $0 ${1+"$@"}; }
-unset RUNNING_BSH
-
-export PATH
-
-# hack around a bug in zsh:
-test -n "${ZSH_VERSION+set}" && alias -g '${1+"$@"}'='"$@"'
-
-v=`kpsewhich -var-value TEXMFSYSVAR`
-c=`kpsewhich -var-value TEXMFSYSCONFIG`
-
-TEXMFVAR="$v"
-TEXMFCONFIG="$c"
-export TEXMFVAR TEXMFCONFIG
-
-exec updmap ${1+"$@"}
diff --git a/Build/source/texk/tetex/updmap.cfg.5 b/Build/source/texk/tetex/updmap.cfg.5
deleted file mode 100644
index 0d8c90b5412..00000000000
--- a/Build/source/texk/tetex/updmap.cfg.5
+++ /dev/null
@@ -1,135 +0,0 @@
-.\" Hey, Emacs! This is an -*- nroff -*- source file.
-.\"
-.\" Copyright (C) 2004, 2012 Hilmar Preusse <hille42@web.de>
-.\"
-.\" This is free software; you can redistribute it and/or modify it under
-.\" the terms of the GNU General Public License as published by the Free
-.\" Software Foundation; either version 2, or (at your option) any later
-.\" version.
-.\"
-.\" This is distributed in the hope that it will be useful, but WITHOUT
-.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-.\" for more details.
-.\"
-.\" You should have received a copy of the GNU General Public License
-.\" along with this program. if not, see <http://www.gnu.org/licenses/>.
-.\"
-.TH "UPDMAP.CFG" "12" "March 2012" "TeX Live" "TeX Live"
-.SH "NAME"
-\fBupdmap.cfg\fR \- configuration of font mapping/inclusion for dvips and
-friends.
-.SH "DESCRIPTION"
-The file \fBupdmap.cfg\fR is the central font configuration file of a
-teTeX system and is read by \fBupdmap\fP(1). It describes if and how
-fonts should be included (or not included) into PS-/PDF-files. This
-works for Outline (Postscript Type1) and Bitmap Fonts (Postscript
-Type3) mostly coming from MetaFont.
-.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,
-\fBupdmap.cfg\fR, allowing you to easily keep all the different
-configuration files in sync\&.
-.P
-\fBdvipsPreferOutline\fR
-.br
-Configures if \fBdvips\fR (by default) should prefer bitmap fonts or outline fonts
-if both are available? Independent of this setting, outlines can be forced
-by putting "p psfonts_t1.map" into a config file that dvips reads. Bitmaps
-can be forced by putting "p psfonts_pk.map" into a config file. We provide
-such config files which can be enabled via
-\fBdvips\fR \fI-Poutline\fR (resp. \fBdvips\fR \fI-Ppk\fR).
-.br
-Valid settings for dvipsPreferOutline are \fItrue\fR / \fIfalse\fR.
-.P
-\fBLW35\fR
-.br
-Which fonts of the "Basic 35 Laserwriter Fonts" do you want to use and
-how are the filenames chosen? Valid settings:
-.br
-URW: URW fonts with "vendor" filenames (e.g. n019064l.pfb)
-.br
-URWkb: URW fonts with "berry" filenames (e.g. uhvbo8ac.pfb)
-.br
-ADOBE: Adobe fonts with "vendor" filenames (e.g. hvnbo___.pfb)
-.br
-ADOBEkb: Adobe fonts with "berry" filenames (e.g. phvbo8an.pfb)
-.P
-\fBdvipsDownloadBase\fR
-.br
-Configures if \fBdvips\fR (by default) should download the standard 35 LaserWriter
-fonts into the document (set \fItrue\fR) or should these fonts be used from the ps
-interpreter / printer (set \fIfalse\fR).
-.br
-The user can override the default by specifying \fBdvips\fR \fI-Pdownload35\fR
-(resp. \fBdvips\fR \fI-Pbuiltin35\fR) to download the LW35 fonts
-(resp. use the built-in fonts).
-.br
-Valid settings are \fItrue\fR / \fIfalse\fR.
-.P
-\fBpdftexDownloadBase14\fR
-.br
-Should \fBpdftex\fR download the base 14 pdf fonts? Since some configurations
-(ps / pdf tools / printers) use bad default fonts, it is safer to download
-the fonts. The pdf files will get bigger, though.
-.br
-Valid settings are \fItrue\fR (download the fonts) or \fIfalse\fR (don't
-download the fonts). Adobe recommends to embed all fonts.
-.P
-\fBdvipdfmDownloadBase14\fR
-.br
-Should \fBdvipdfm\fR download the base 14 pdf fonts? Since some configurations
-(ps / pdf tools / printers) use bad default fonts, it is safer to download
-the fonts. The pdf files will get bigger, though.
-.br
-Valid settings are \fItrue\fR (download the fonts) or \fIfalse\fR (don't
-download the fonts).
-.P
-\fBMap\fR
-.br
-Points to a map file, which describes a mapping from a font (called in the TeX
-document) to the pfb file containing the Postscript code.
-.br
-Usage: \fBMap\fR filename.map
-.P
-The syntax of map files is the same as \fBdvips\fP(1) uses, see
-section 6.4, "'psfonts.map': PostScript font catalog" in the manual of
-\fBdvips\fP(1), available as info and pdf file.
-.P
-\fBMixedMap\fR
-.br
-Similar to \fBMap\fR. It should be used when there is Type1 and a bitmap
-implementation of the font (the latter mostly coming from MetaFont). These
-entries will not be used in the default map of \fBdvips\fR if
-\fBdvipsPreferOutline\fR is set to \fIfalse\fR.
-.br
-Usage: \fBMixedMap\fR filename.map
-.P
-The sign \fB#\fR precedes a comment.
-.P
-Not used Map files should be commented out using the string \fB#!\fR at the
-beginning of the line. These entries can be (de-)activated using \fBupdmap\fR
-with the options \fI--enable\fR and \fI--disable\fR.
-.SH "SPECIAL TO DEBIAN"
-In Debian the file \fBupdmap.cfg\fR is a generated file sitting in /var. It is
-generated by concatenating the *.cfg files from /etc/texmf/updmap.d/. These
-files follow the syntax of updmap.cfg, but contain only parts of it.
-.SH "AUTHOR"
-This manual page was written by Hilmar Preusse <hille42@web.de>, for
-the Debian GNU/Linux system by simply copying the comments from
-\fBupdmap.cfg\fR and rewriting some of them. It may be used by other
-distributions without contacting the author. Any mistakes or omissions in
-the manual page are my fault; inquiries about or corrections to this manual
-page should be directed to me (and not to the primary author).
-.SH "SEE ALSO"
-updmap(1), info page of dvips(1)
-.SH "THANKS TO"
-Frank Kuester,
-Thomas Esser.
diff --git a/Build/source/texk/tetex/updmap.help2man b/Build/source/texk/tetex/updmap.help2man
deleted file mode 100644
index 4864c2d74f4..00000000000
--- a/Build/source/texk/tetex/updmap.help2man
+++ /dev/null
@@ -1,100 +0,0 @@
-# $Id$
-# This help2man auxiliary file is in the public domain.
-# Originally created by Karl Berry.
-# The FILES text from Claire Connelly.
-# See the Makefile for the help2man invocation.
-# do not fill the long TEXMF* tables.
-
-[NAME]
-updmap \- manage TeX font maps, per-user
-.br
-updmap-sys \- manage TeX font maps, system-wide
-
-/in the final output/
-.SH ENVIRONMENT
-
-/in the given order/
-.nf
-
-/where YYYY is/
-.fi
-
-/give the -n option/
-.SH EXAMPLES
-
-[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\&. Each texmf tree read should have its
-own \fIupdmap.cfg\fP.
-.IP "\fIdvips35\&.map\fP"
-Map file for standard 35 PostScript fonts for
-use with \fBdvips\fP(1)\&.
-.IP "\fIpdftex35\&.map\fP"
-Map file for standard 35 PostScript fonts for
-use with \fBpdftex\fP(1)\&.
-.IP "\fIps2pk35\&.map\fP"
-Map file for standard 35 PostScript fonts for
-use with \fBps2pk\fP(1)\&.
-.PP
-Output files:
-.IP "\fIpsfonts\&.map\fP"
-For \fBdvips\fP(1)\&.
-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 "\fIpsfonts_t1\&.map\fP"
-For \fBdvips\fP(1)\&.
-With information from MixedMap files\&.
-(Setting of \fBdvipsPreferOutline\fP ignored\&.)
-.IP "\fIdownload35\&.map\fP"
-For \fBdvips\fP(1)\&.
-Always downloads the standard 35 fonts\&.
-(Setting of \fBdvipsDownloadBase35\fP ignored\&.)
-.IP "\fIbuiltin35\&.map\fP"
-For \fBdvips\fP(1)\&.
-Never downloads the standard 35 fonts\&.
-(Setting of \fBdvipsDownloadBase35\fP ignored\&.)
-.IP "\fIpdftex\&.map\fP"
-For \fBpdftex\fP(1)\&.
-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 "\fIpdftex_ndl14\&.map\fP"
-For \fBpdftex\fP(1)\&.
-Never downloads the standard 14 fonts\&.
-.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)\&.
-.PP
-Configuration files for \fBdvips\fP(1):
-.IP "\fIconfig\&.builtin35\fP"
-Loads \fIbuiltin35\&.map\fP instead
-of \fIpsfonts\&.map\fP\&.
-.IP "\fIconfig\&.download35\fP"
-Loads \fIdownload35\&.map\fP instead
-of \fIpsfonts\&.map\fP\&.
-.IP "\fIconfig\&.outline\fP"
-Loads \fIpsfonts_t1\&.map\fP instead
-of \fIpsfonts\&.map\fP\&.
-.IP "\fIconfig\&.pdf\fP"
-Loads \fIpsfonts_t1\&.map\fP instead
-of \fIpsfonts\&.map\fP and has additional optimizations for PDF generation\&.
-.IP "\fIconfig\&.pk\fP"
-Loads \fIpsfonts_pk\&.map\fP instead
-of \fIpsfonts\&.map\fP\&.
-.IP "\fIconfig\&.www\fP"
-Loads \fIpsfonts_t1\&.map\fP instead
-of \fIpsfonts\&.map\fP\&.
-(For compatibility with old versions\&.)
-.IP "\fIconfig\&.gstopk\fP"
-Loads \fIpsfonts_t1\&.map\fP instead
-of \fIpsfonts\&.map\fP\&.
diff --git a/Build/source/texk/tetex/updmap.man b/Build/source/texk/tetex/updmap.man
deleted file mode 100644
index e4a89cdefef..00000000000
--- a/Build/source/texk/tetex/updmap.man
+++ /dev/null
@@ -1,330 +0,0 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.40.9.
-.TH UPDMAP "1" "June 2012" "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, multi) version $Id: updmap.pl 26778 2012\-06\-01 17:36:30Z karl $
-.PP
-Update the default font map files used by pdftex, dvips, and dvipdfm(x),
-and optionally pxdvi, as determined by all configuration files updmap.cfg
-(the ones returned by running "kpsewhich \fB\-\-all\fR updmap.cfg", but see below).
-.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
-font files are included in the PDF or PostScript 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
-(can be given multiple times, in which case
-all the files are used)
-.TP
-\fB\-\-dvipdfmxoutputdir\fR DIR
-specify output directory (dvipdfm(x) syntax)
-.TP
-\fB\-\-dvipsoutputdir\fR DIR
-specify output directory (dvips syntax)
-.TP
-\fB\-\-pdftexoutputdir\fR DIR
-specify output directory (pdftex syntax)
-.TP
-\fB\-\-pxdvioutputdir\fR DIR
-specify output directory (pxdvi 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\-\-showoption\fR OPTION
-show the current setting of OPTION
-.TP
-\fB\-\-showoptions\fR OPTION
-show possible settings for OPTION
-.TP
-\fB\-\-setoption\fR OPTION VALUE
-set OPTION to value; option names below
-.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 Map, MixedMap, or KanjiMap
-.TP
-\fB\-\-enable\fR Map=MAPFILE
-add "Map MAPFILE" to updmap.cfg
-.HP
-\fB\-\-enable\fR MixedMap=MAPFILE add "MixedMap MAPFILE" to updmap.cfg
-.HP
-\fB\-\-enable\fR KanjiMap=MAPFILE add "KanjiMap MAPFILE" to updmap.cfg
-.TP
-\fB\-\-disable\fR MAPFILE
-disable MAPFILE, of whatever type
-.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 devices 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.
-KanjiMap entries are added to psfonts_t1.map and kanjix.map.
-.PP
-Explanation of the OPTION names for \fB\-\-showoptions\fR, \fB\-\-showoptions\fR, \fB\-\-setoption\fR:
-.TP
-dvipsPreferOutline
-true|false (default true)
-.IP
-Whether dvips uses bitmaps or outlines, when both are available.
-.TP
-dvipsDownloadBase35
-true|false (default true)
-.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
-pxdviUse
-true|false (default false)
-.IP
-Whether maps for pxdvi (Japanese\-patched xdvi) are under updmap's control.
-.TP
-kanjiEmbed
-(any string)
-.TP
-kanjiVariant
-(any string)
-.IP
-See below.
-.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.
-.IP
-The options kanjiEmbed and kanjiVariant specify special replacements
-in the map lines. If a map contains the string @kanjiEmbed@, then
-this will be replaced by the value of that option; similarly for
-kanjiVariant. In this way, users of Japanese TeX can select different
-fonts to be included in the final output.
-.SH ENVIRONMENT
-.PP
-Explanation of trees and files normally used:
-.IP
-If \fB\-\-cnffile\fR is specified on the command line (possibly multiple
-times), its value(s) are used. Otherwise, updmap reads all the
-updmap.cfg files found by running `kpsewhich \fB\-all\fR updmap.cfg',
-in the order returned by kpsewhich. If multiple updmap.cfg files are
-found, all the maps mentioned in all the updmap.cfg files are merged.
-.IP
-There is one exception to keep upgradability from earlier versions of
-TeX Live: if a file TEXMFLOCAL/web2c/updmap\-local.cfg exists (formerly
-used by tlmgr to merge local fonts), then the file
-TEXMFLOCAL/web2c/updmap.cfg is ignored (if it exists) and the
-updmap\-local.cfg is used instead. In this case, updmap recognizes the
-previous syntax for disabling map files in updmap\-local.cfg (this
-syntax is different from what is used now).
-.IP
-According to the actions, updmap might write to one of the given files
-or create a new updmap.cfg, described further below.
-.IP
-Where changes are saved: if config files are given on the command
-line, then the first one given will be used to save any changes from
-\fB\-\-setoption\fR, \fB\-\-enable\fR or \fB\-\-disable\fR. If the config files are taken
-from kpsewhich output, then the algorithm is more complex:
-.IP
-1) If $TEXMFHOME/web2c/updmap.cfg or $TEXMFCONFIG/web2c/updmap.cfg
-appears in the list of used files, then the one listed first by
-kpsewhich \fB\-\-all\fR (equivalently, the one returned by kpsewhich
-updmap.cfg), is used.
-.IP
-2) If neither of the above two are present and changes are made, a
-new config file is created in $TEXMFCONFIG/web2c/updmap.cfg.
-.IP
-Multiple definitions of a font:
-.IP
-If a font is defined in more than one map file, then the definition
-coming from the first\-listed updmap.cfg is used. If a font is
-defined multiple times in the same map file, one is chosen
-arbitrarily. In both cases a warning is issued.
-.IP
-Disabling maps:
-.IP
-updmap.cfg files with higher priority (listed earlier) can disable
-maps mentioned in lower priority (listed later) updmap.cfg files by
-writing, e.g.,
-.IP
-#! Map mapname.map
-.IP
-or
-.IP
-#! MixedMap mapname.map
-.IP
-in the higher\-priority updmap.cfg file.
-.IP
-As an example, suppose you have a copy of MathTime Pro fonts
-and want to disable the Belleek version of the fonts; that is,
-disable the map belleek.map. You can create the file
-$TEXMFCONFIG/web2c/updmap.cfg with the content
-.IP
-#! Map belleek.map
-Map mt\-plus.map
-Map mt\-yy.map
-.IP
-and call updmap.
-.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 of TEXMFCONFIG and TEXMFVAR, respectively. This is the only
-difference between updmap\-sys and updmap.
-.IP
-Other locations may be used if you give them 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 source).
-.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\&. Each texmf tree read should have its
-own \fIupdmap.cfg\fP.
-.IP "\fIdvips35\&.map\fP"
-Map file for standard 35 PostScript fonts for
-use with \fBdvips\fP(1)\&.
-.IP "\fIpdftex35\&.map\fP"
-Map file for standard 35 PostScript fonts for
-use with \fBpdftex\fP(1)\&.
-.IP "\fIps2pk35\&.map\fP"
-Map file for standard 35 PostScript fonts for
-use with \fBps2pk\fP(1)\&.
-.PP
-Output files:
-.IP "\fIpsfonts\&.map\fP"
-For \fBdvips\fP(1)\&.
-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 "\fIpsfonts_t1\&.map\fP"
-For \fBdvips\fP(1)\&.
-With information from MixedMap files\&.
-(Setting of \fBdvipsPreferOutline\fP ignored\&.)
-.IP "\fIdownload35\&.map\fP"
-For \fBdvips\fP(1)\&.
-Always downloads the standard 35 fonts\&.
-(Setting of \fBdvipsDownloadBase35\fP ignored\&.)
-.IP "\fIbuiltin35\&.map\fP"
-For \fBdvips\fP(1)\&.
-Never downloads the standard 35 fonts\&.
-(Setting of \fBdvipsDownloadBase35\fP ignored\&.)
-.IP "\fIpdftex\&.map\fP"
-For \fBpdftex\fP(1)\&.
-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 "\fIpdftex_ndl14\&.map\fP"
-For \fBpdftex\fP(1)\&.
-Never downloads the standard 14 fonts\&.
-.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)\&.
-.PP
-Configuration files for \fBdvips\fP(1):
-.IP "\fIconfig\&.builtin35\fP"
-Loads \fIbuiltin35\&.map\fP instead
-of \fIpsfonts\&.map\fP\&.
-.IP "\fIconfig\&.download35\fP"
-Loads \fIdownload35\&.map\fP instead
-of \fIpsfonts\&.map\fP\&.
-.IP "\fIconfig\&.outline\fP"
-Loads \fIpsfonts_t1\&.map\fP instead
-of \fIpsfonts\&.map\fP\&.
-.IP "\fIconfig\&.pdf\fP"
-Loads \fIpsfonts_t1\&.map\fP instead
-of \fIpsfonts\&.map\fP and has additional optimizations for PDF generation\&.
-.IP "\fIconfig\&.pk\fP"
-Loads \fIpsfonts_pk\&.map\fP instead
-of \fIpsfonts\&.map\fP\&.
-.IP "\fIconfig\&.www\fP"
-Loads \fIpsfonts_t1\&.map\fP instead
-of \fIpsfonts\&.map\fP\&.
-(For compatibility with old versions\&.)
-.IP "\fIconfig\&.gstopk\fP"
-Loads \fIpsfonts_t1\&.map\fP instead
-of \fIpsfonts\&.map\fP\&.
-.SH "REPORTING BUGS"
-Report bugs to: tex\-k@tug.org
-.br
-TeX Live home page: <http://tug.org/texlive/>
diff --git a/Build/source/texk/tetex/updmap.pl b/Build/source/texk/tetex/updmap.pl
deleted file mode 100755
index 710c61cd9c4..00000000000
--- a/Build/source/texk/tetex/updmap.pl
+++ /dev/null
@@ -1,2163 +0,0 @@
-#!/usr/bin/env perl
-# mupdmap: utility to maintain map files for outline fonts.
-# $Id$
-#
-# Copyright 2011, 2012 Norbert Preining
-# This file is licensed under the GNU General Public License version 2
-# or any later version.
-#
-# History:
-# Original shell script (C) 2002 Thomas Esser
-# first perl variant (C) Fabrice Popineau
-# later adaptions by Reinhard Kotucha and Karl Berry
-# the original versions were licensed under the following agreement:
-# Anyone may freely use, modify, and/or distribute this file, without
-# limitation.
-#
-# TODO
-# - check all other invocations
-# - after TL2012? Maybe remove support for reading updmap-local.cfg
-#
-
-my $TEXMFROOT;
-
-BEGIN {
- $^W=1;
- $TEXMFROOT = `kpsewhich -var-value=TEXMFROOT`;
- if ($?) {
- print STDERR "updmap: Cannot find TEXMFROOT, aborting!\n";
- exit 1;
- }
- chomp($TEXMFROOT);
- unshift (@INC, "$TEXMFROOT/tlpkg");
-}
-
-
-my $version = '$Id$';
-
-use Getopt::Long qw(:config no_autoabbrev ignore_case_always);
-use strict;
-use TeXLive::TLUtils qw(mkdirhier mktexupd win32 basename dirname
- sort_uniq member);
-
-#use Data::Dumper;
-#$Data::Dumper::Indent = 1;
-
-(my $prg = basename($0)) =~ s/\.pl$//;
-
-# sudo sometimes does not reset the home dir of root, check on that
-# see more comments at the definition of the function itself
-# this function checks by itself whether it is running on windows or not
-reset_root_home();
-
-chomp(my $TEXMFMAIN = `kpsewhich --var-value=TEXMFMAIN`);
-chomp(my $TEXMFVAR = `kpsewhich -var-value=TEXMFVAR`);
-chomp(my $TEXMFCONFIG = `kpsewhich -var-value=TEXMFCONFIG`);
-chomp(my $TEXMFHOME = `kpsewhich -var-value=TEXMFHOME`);
-
-# make sure that on windows *everything* is in lower case for comparison
-if (win32()) {
- $TEXMFMAIN = lc($TEXMFMAIN);
- $TEXMFVAR = lc($TEXMFVAR);
- $TEXMFCONFIG = lc($TEXMFCONFIG);
- $TEXMFROOT = lc($TEXMFROOT);
- $TEXMFHOME = lc($TEXMFHOME);
-}
-
-
-my %opts = ( quiet => 0, nohash => 0, nomkmap => 0 );
-my $alldata;
-my $updLSR;
-
-my @cmdline_options = (
- "listfiles",
- "cnffile=s@",
- "copy",
- "disable=s@",
- "dvipdfmoutputdir=s",
- "dvipdfmxoutputdir=s",
- "dvipsoutputdir=s",
- # the following does not work, Getopt::Long looses the first
- # entry in a multi setting, treat it separately in processOptions
- # furthermore, it is not supported by older perls, so do it differently
- #"enable=s{1,2}",
- "edit",
- "force",
- "listavailablemaps",
- "listmaps|l",
- "nohash",
- "nomkmap",
- "dry-run|n",
- "outputdir=s",
- "pdftexoutputdir=s",
- "pxdvioutputdir=s",
- "quiet|silent|q",
- # the following is a correct specification of an option according
- # to the manual, but it does not work!
- # we will treat that option by itself in processOptions
- # furthermore, it is not supported by older perls, so do it differently
- #"setoption=s@{1,2}",
- "showoptions=s@",
- "showoption=s@",
- "syncwithtrees",
- "version",
- "help|h",
- # some debugging invocations
- "_readsave=s",
- );
-
-my %settings = (
- dvipsPreferOutline => {
- type => "binary",
- default => "true",
- },
- LW35 => {
- type => "string",
- possible => [ qw/URW URWkb ADOBE ADOBEkb/ ],
- default => "URWkb",
- },
- dvipsDownloadBase35 => {
- type => "binary",
- default => "true",
- },
- pdftexDownloadBase14 => {
- type => "binary",
- default => "true",
- },
- dvipdfmDownloadBase14 => {
- type => "binary",
- default => "true",
- },
- pxdviUse => {
- type => "binary",
- default => "false",
- },
- kanjiEmbed => {
- type => "any",
- default => "noEmbed",
- },
- kanjiVariant => {
- type => "any",
- default => "",
- },
-);
-
-&main();
-
-###############
-
-sub main {
- processOptions();
-
- help() if $opts{'help'};
-
- if ($opts{'version'}) {
- print version();
- exit (0);
- }
-
- if ($opts{'dvipdfmoutputdir'} && !defined($opts{'dvipdfmxoutputdir'})) {
- $opts{'dvipdfmxoutputdir'} = $opts{'dvipdfmoutputdir'};
- printf STDERR "Using --dvipdfmoutputdir options for dvipdfmx, but please use --dvipdfmxoutputdir\n";
- }
-
- if ($opts{'dvipdfmoutputdir'} && $opts{'dvipdfmxoutputdir'} &&
- $opts{'dvipdfmoutputdir'} ne $opts{'dvipdfmxoutputdir'}) {
- printf STDERR "Options for --dvipdfmoutputdir and --dvipdfmxoutputdir do not agree\nplease use only --dvipdfmxoutputdir. Exiting.\n";
- exit(1);
- }
-
- if ($opts{'_readsave'}) {
- read_updmap_files($opts{'_readsave'});
- print "READING DONE ============================\n";
- #print Dumper($alldata);
- $alldata->{'updmap'}{$opts{'_readsave'}}{'changed'} = 1;
- save_updmap($opts{'_readsave'});
- exit 0;
- }
-
- if ($opts{'showoptions'}) {
- for my $o (@{$opts{'showoptions'}}) {
- if (defined($settings{$o})) {
- if ($settings{$o}{'type'} eq "binary") {
- print "true false\n";
- } elsif ($settings{$o}{'type'} eq "string") {
- print "@{$settings{$o}{'possible'}}\n";
- } elsif ($settings{$o}{'type'} eq "any") {
- print "(any string)\n";
- } else {
- print "strange: unknown type of option $o\nplease report\n";
- }
- } else {
- print "$prg: unknown option: $o\n";
- }
- }
- exit 0;
- }
-
- # config file for changes
- my $changes_config_file;
-
- # determine which config files should be used
- # replaces the former "setupCfgFile"
- #
- # we also determine here where changes will be saved to
- if ($opts{'cnffile'}) {
- my @tmp;
- for my $f (@{$opts{'cnffile'}}) {
- if (! -f $f) {
- die "$prg: Config file \"$f\" not found.";
- }
- push @tmp, (win32() ? lc($f) : $f);
- }
- @{$opts{'cnffile'}} = @tmp;
- # in case that config files are given on the command line, the first
- # in the list is the one where changes will be written to.
- ($changes_config_file) = @{$opts{'cnffile'}};
- } else {
- my @all_files = `kpsewhich -all updmap.cfg`;
- chomp(@all_files);
- my @used_files;
- for my $f (@all_files) {
- push @used_files, (win32() ? lc($f) : $f);
- }
- #
- my $TEXMFLOCALVAR;
- my @TEXMFLOCAL;
- if (win32()) {
- chomp($TEXMFLOCALVAR =`kpsewhich --expand-path=\$TEXMFLOCAL`);
- @TEXMFLOCAL = map { lc } split(/;/ , $TEXMFLOCALVAR);
- } else {
- chomp($TEXMFLOCALVAR =`kpsewhich --expand-path='\$TEXMFLOCAL'`);
- @TEXMFLOCAL = split /:/ , $TEXMFLOCALVAR;
- }
- #
- # search for TEXMFLOCAL/web2c/updmap.cfg
- # check for compatibility with old updmap-local.cfg
- my @tmlused;
- for my $tml (@TEXMFLOCAL) {
- my $TMLabs = Cwd::abs_path($tml);
- next if (!$TMLabs);
- my $oldfound = 0;
- if (-r "$TMLabs/web2c/updmap-local.cfg") {
- push @tmlused, "$TMLabs/web2c/updmap-local.cfg";
- warning("Old configuration file\n $TMLabs/web2c/updmap-local.cfg\nfound! ");
- $oldfound = 1;
- }
- if (-r "$TMLabs/web2c/updmap.cfg") {
- if ($oldfound) {
- warning("Will read it *instead* of\n $TMLabs/web2c/updmap.cfg\n");
- } else {
- push @tmlused, "$TMLabs/web2c/updmap.cfg";
- }
- }
- warning("Please consider moving the information from updmap-local.cfg to\n $TMLabs/web2c/updmap.cfg\n")
- if ($oldfound);
- }
- #
- # reorder used files: we move TEXMFLOCAL (if used) just above TEXMFMAIN
- # as sysadmins will probably adjust values there
- #
- # updmap (user):
- # ==============
- # as found:
- # TEXMFCONFIG $HOME/.texliveYYYY/texmf-config/web2c/updmap.cfg
- # TEXMFVAR $HOME/.texliveYYYY/texmf-var/web2c/updmap.cfg
- # TEXMFHOME $HOME/texmf/web2c/updmap.cfg
- # TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/updmap.cfg
- # TEXMFSYSVAR $TEXLIVE/YYYY/texmf-var/web2c/updmap.cfg
- # TEXMFMAIN $TEXLIVE/YYYY/texmf/web2c/updmap.cfg
- # TEXMFLOCAL $TEXLIVE/texmf-local/web2c/updmap.cfg
- # TEXMFDIST $TEXLIVE/YYYY/texmf-dist/web2c/updmap.cfg
- #
- # as used:
- # TEXMFCONFIG $HOME/.texliveYYYY/texmf-config/web2c/updmap.cfg
- # TEXMFVAR $HOME/.texliveYYYY/texmf-var/web2c/updmap.cfg
- # TEXMFHOME $HOME/texmf/web2c/updmap.cfg
- # TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/updmap.cfg
- # TEXMFSYSVAR $TEXLIVE/YYYY/texmf-var/web2c/updmap.cfg
- # TEXMFLOCAL $TEXLIVE/texmf-local/web2c/updmap.cfg
- # TEXMFMAIN $TEXLIVE/YYYY/texmf/web2c/updmap.cfg
- # TEXMFDIST $TEXLIVE/YYYY/texmf-dist/web2c/updmap.cfg
- #
- # updmap-sys (root):
- # ==================
- # as found:
- # TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/updmap.cfg
- # TEXMFSYSVAR $TEXLIVE/YYYY/texmf-var/web2c/updmap.cfg
- # TEXMFMAIN $TEXLIVE/YYYY/texmf/web2c/updmap.cfg
- # TEXMFLOCAL $TEXLIVE/texmf-local/web2c/updmap.cfg
- # TEXMFDIST $TEXLIVE/YYYY/texmf-dist/web2c/updmap.cfg
- #
- # as used:
- # TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/updmap.cfg
- # TEXMFSYSVAR $TEXLIVE/YYYY/texmf-var/web2c/updmap.cfg
- # TEXMFLOCAL $TEXLIVE/texmf-local/web2c/updmap.cfg
- # TEXMFMAIN $TEXLIVE/YYYY/texmf/web2c/updmap.cfg
- # TEXMFDIST $TEXLIVE/YYYY/texmf-dist/web2c/updmap.cfg
- #
- if (@tmlused) {
- my @tmp;
- for my $f (@used_files) {
- if ($f =~ m!\Q$TEXMFMAIN/\E!) {
- push @tmp, @tmlused;
- push @tmp, $f;
- } else {
- my $pushit = 1;
- for my $tml (@TEXMFLOCAL) {
- if ($f =~ m!\Q$tml\E!) {
- $pushit = 0;
- last;
- }
- }
- push @tmp, $f if ($pushit);
- }
- }
- @used_files = @tmp;
- }
- @{$opts{'cnffile'}} = @used_files;
- #
- # determine the config file that we will use for changes
- # if in the list of used files contains either one from
- # TEXMFHOME or TEXMFCONFIG (which is TEXMFSYSCONFIG in the -sys case)
- # then use the *top* file (which will be either one of the two),
- # if none of the two exists, create a file in TEXMFCONFIG and use it
- my $use_top = 0;
- for my $f (@used_files) {
- if ($f =~ m!(\Q$TEXMFHOME\E|\Q$TEXMFCONFIG\E)/web2c/updmap.cfg!) {
- $use_top = 1;
- last;
- }
- }
- if ($use_top) {
- ($changes_config_file) = @used_files;
- } else {
- # add the empty config file
- my $dn = "$TEXMFCONFIG/web2c";
- $changes_config_file = "$dn/updmap.cfg";
- }
- }
- if (!$opts{'quiet'}) {
- print "$prg is using the following updmap.cfg files (in precedence order):\n";
- for my $f (@{$opts{'cnffile'}}) {
- print " $f\n";
- }
- print "$prg is using the following updmap.cfg file for writing changes:\n";
- print " $changes_config_file\n";
- }
- if ($opts{'listfiles'}) {
- # we listed it above, so be done
- exit 0;
- }
-
- $alldata->{'changes_config'} = $changes_config_file;
-
- read_updmap_files(@{$opts{'cnffile'}});
-
- if ($opts{'showoption'}) {
- for my $o (@{$opts{'showoption'}}) {
- if (defined($settings{$o})) {
- my ($v, $vo) = get_cfg($o);
- $v = "\"$v\"" if ($v =~ m/\s/);
- print "$o=$v ($vo)\n";
- } else {
- printf STDERR "$prg: unknown option: $o\n";
- }
- }
- exit 0;
- }
-
- if ($opts{'listmaps'}) {
- for my $m (keys %{$alldata->{'maps'}}) {
- my $origin = $alldata->{'maps'}{$m}{'origin'};
- print $alldata->{'updmap'}{$origin}{'maps'}{$m}{'type'}, " $m ",
- $alldata->{'updmap'}{$origin}{'maps'}{$m}{'status'}, " in $origin\n";
- }
- exit 0;
- }
-
- # we do changes always in the used config file with the highest
- # priority
- my $bakFile = $changes_config_file;
- $bakFile =~ s/\.cfg$/.bak/;
- my $changed = 0;
-
- if ($opts{'syncwithtrees'}) {
- my @missing = read_map_files();
- if (@missing) {
- print "Missing map files found, disabling\n";
- for my $m (@missing) {
- my $orig = $alldata->{'maps'}{$m}{'origin'};
- print "\t$m (in $orig)\n";
- }
- print "in $changes_config_file\n";
- print "Do you really want to continue (y/N)? ";
- my $answer = <STDIN>;
- $answer = "n" if !defined($answer);
- chomp($answer);
- print "answer =$answer=\n";
- if ($answer ne "y" && $answer ne "Y") {
- print "Please fix manually before running updmap(-sys) again!\n";
- exit 0;
- }
- $changed ||= enable_disable_maps(@missing);
- print "finished.\n";
- # the original script did not run any update of the map files here,
- # should we do that?
- }
- exit 0;
- }
-
- $updLSR = &mktexupd();
- $updLSR->{mustexist}(0);
-
- my $cmd;
- if ($opts{'edit'}) {
- if ($opts{"dry-run"}) {
- printf STDERR "No, are you joking, you want to edit with --dry-run?\n";
- exit 1;
- }
- # it's not a good idea to edit updmap.cfg manually these days,
- # but for compatibility we'll silently keep the option.
- $cmd = 'edit';
- my $editor = $ENV{'VISUAL'} || $ENV{'EDITOR'};
- $editor ||= (&win32 ? "notepad" : "vi");
- if (-r $changes_config_file) {
- &copyFile($changes_config_file, $bakFile);
- } else {
- touch($bakFile);
- touch($changes_config_file);
- }
- system($editor, $changes_config_file);
- $changed = files_are_different($bakFile, $changes_config_file);
- } elsif ($opts{'setoption'}) {
- $cmd = 'setOption';
- $changed = setOptions (@{$opts{'setoption'}});
- } elsif ($opts{'enable'} || $opts{'disable'}) {
- $cmd = 'enableMap';
- $changed ||= enable_disable_maps(@{$opts{'enable'}}, @{$opts{'disable'}});
- }
-
-
- if ($cmd && !$opts{'force'} && !$changed) {
- print "$changes_config_file unchanged. Map files not recreated.\n"
- if !$opts{'quiet'};
- } else {
- if (!$opts{'nomkmap'}) {
- # before we continue we have to make sure that a newly created config
- # file is acually used. So we have to push the $changes_config_file
- # onto the list of available files. Since it is already properly
- # initialized and the merging is done later, all settings should be
- # honored
- my @aaa = @{$alldata->{'order'}};
- unshift @aaa, $changes_config_file;
- $alldata->{'order'} = [ @aaa ];
- #
- setupOutputDir("dvips");
- setupOutputDir("pdftex");
- setupOutputDir("dvipdfmx");
- setupOutputDir("pxdvi");
- my @missing = read_map_files();
- if (@missing) {
- print STDERR "\nERROR: The following map file(s) couldn't be found:\n";
- for my $m (@missing) {
- my $orig = $alldata->{'maps'}{$m}{'origin'};
- print STDERR "\t$m (in $orig)\n";
- }
- print STDERR "\n\tDid you run mktexlsr?\n\n" .
- "\tYou can disable non-existent map entries using the option\n".
- "\t --syncwithtrees.\n\n";
- exit 1;
- }
- merge_data();
- # for inspecting the output
- #print STDERR Data::Dumper->Dump([$alldata], [qw(mapdata)]);
- #print Dumper($alldata);
- mkMaps();
- }
- unlink ($bakFile) if (-r $bakFile);
- }
-
- if (!$opts{'nohash'}) {
- print "$prg: Updating ls-R files.\n" if !$opts{'quiet'};
- $updLSR->{exec}() unless $opts{"dry-run"};
- }
-
- return 0;
-}
-
-##################################################################
-#
-#
-
-sub getFonts {
- my ($first, @rest) = @_;
- my $getall = 0;
- my @maps = ();
- return if !defined($first);
- if ($first eq "-all") {
- $getall = 1;
- @maps = @rest;
- } else {
- @maps = ($first, @rest);
- }
- my @lines = ();
- for my $m (@maps) {
- if (defined($alldata->{'maps'}{$m})) {
- print LOG "\n" . $alldata->{'maps'}{$m}{'fullpath'} . ":\n" unless $opts{'dry-run'};
- push @lines, "% $m";
- for my $k (sort keys %{$alldata->{'maps'}{$m}{'fonts'}}) {
- if ($getall || $alldata->{'fonts'}{$k}{'origin'} eq $m) {
- if (defined($alldata->{'maps'}{$m}{'fonts'}{$k})) {
- push @lines, "$k " . $alldata->{'maps'}{$m}{'fonts'}{$k};
- } else {
- print "undefined fonts for $k in $m ?!?!?\n";
- }
- print LOG "$k\n" unless $opts{'dry-run'};
- }
- }
- }
- }
- chomp @lines;
- return @lines;
-}
-
-###############################################################################
-# writeLines()
-# write the lines in $filename
-#
-sub writeLines {
- my ($fname, @lines) = @_;
- return if $opts{"dry-run"};
- map { ($_ !~ m/\n$/ ? s/$/\n/ : $_ ) } @lines;
- open FILE, ">$fname" or die "$prg: can't write lines to $fname: $!";
- print FILE @lines;
- close FILE;
-}
-
-###############################################################################
-# to_pdftex()
-# 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 {
- my $pdftexStripEnc = 0;
- return @_ unless $pdftexStripEnc;
- my @in = @_;
- my @out;
- foreach my $line (@in) {
- if ($line =~ /^(.*\s+)(\S+\s+ReEncodeFont\s)(.*)/) {
- $line = "$1$3";
- $line =~ s/\s+\"\s+\"\s+/ /;
- }
- push @out, $line;
- }
- return @out;
-}
-
-###############################################################################
-# setupSymlinks()
-# set symlink for psfonts.map according to dvipsPreferOutline variable
-#
-sub setupSymlinks {
- my ($dvipsPreferOutline, $dvipsoutputdir, $pdftexDownloadBase14, $pdftexoutputdir) = @_;
- my $src;
- my %link;
- my @link;
-
- if ($dvipsPreferOutline eq "true") {
- $src = "psfonts_t1.map";
- } else {
- $src = "psfonts_pk.map";
- }
- unlink "$dvipsoutputdir/psfonts.map" unless $opts{"dry-run"};
- push @link, &SymlinkOrCopy("$dvipsoutputdir", "$src", "psfonts.map");
-
- if ($pdftexDownloadBase14 eq "true") {
- $src = "pdftex_dl14.map";
- } else {
- $src = "pdftex_ndl14.map";
- }
- unlink "$pdftexoutputdir/pdftex.map" unless $opts{"dry-run"};
- push @link, &SymlinkOrCopy("$pdftexoutputdir", "$src", "pdftex.map");
- %link = @link;
- return \%link;
-}
-
-###############################################################################
-# SymlinkOrCopy(dir, src, dest)
-# create symlinks if possible, otherwise copy files
-#
-sub SymlinkOrCopy {
- my ($dir, $src, $dest) = @_;
- return ($src, $dest) if $opts{"dry-run"};
- if (&win32 || $opts{'copy'}) { # always copy
- &copyFile("$dir/$src", "$dir/$dest");
- } else { # symlink if supported by fs, copy otherwise
- system("cd \"$dir\" && ln -s $src $dest 2>/dev/null || "
- . "cp -p \"$dir/$src\" \"$dir/$dest\"");
- }
- # remember for "Files generated" in &mkMaps.
- return ($dest, $src);
-}
-
-
-###############################################################################
-# transLW35(mode args ...)
-# transform fontname and filenames according to transformation specified
-# by mode. Possible values:
-# URW|URWkb|ADOBE|ADOBEkb
-#
-sub transLW35 {
- my ($mode, @lines) = @_;
-
- my @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 /',
- );
-
- my @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/',
- );
-
- my @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/',
- );
-
- my @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/',
- );
-
- if ($mode eq "" || $mode eq "URWkb") {
- # do nothing
- } elsif ($mode eq "URW") {
- for my $r (@fileURW) {
- map { eval($r); } @lines;
- }
- } elsif ($mode eq "ADOBE" || $mode eq "ADOBEkb") {
- for my $r (@psADOBE) {
- map { eval($r); } @lines;
- }
- my @filemode = eval ("\@file" . $mode);
- for my $r (@filemode) {
- map { eval($r); } @lines;
- }
- }
- return @lines;
-}
-
-###############################################################################
-# cidx2dvips()
-# reads from stdin, writes to stdout. It transforms "cid-x"-like syntax into
-# "dvips"-like syntax.
-###############################################################################
-sub cidx2dvips {
- my ($s) = @_;
- my @d;
- foreach (@$s) {
- if (m/^%/) {
- push(@d, $_);
- next;
- }
- s/,BoldItalic/ -s .3/;
- s/,Bold//;
- s/,Italic/ -s .3/;
- s/\s\s*/ /g;
- if ($_ =~ /.*[@\:\/,]/) {next;}
- elsif ($_ =~ /^[^ ][^ ]* unicode /) {next;}
- s/^([^ ][^ ]* [^ ][^ ]* [^ ][^ ]*)\.[Oo][Tt][Ff]/$1/;
- s/^([^ ][^ ]* [^ ][^ ]* [^ ][^ ]*)\.[Tt][Tt][FfCc]/$1/;
- s/$/ %/;
- s/^(([^ ]*).*)/$1$2/;
- s/^([^ ][^ ]* ([^ ][^ ]*) !*([^ ][^ ]*).*)/$1 $3-$2/;
- s/^(.* -e ([.0-9-][.0-9-]*).*)/$1 "$2 ExtendFont"/;
- s/^(.* -s ([.0-9-][.0-9-]*).*)/$1 "$2 SlantFont"/;
- s/.*%//;
- push(@d, $_);
- }
- return @d
-}
-
-sub get_cfg {
- my ($v) = @_;
- if (defined($alldata->{'merged'}{'setting'}{$v})) {
- return ( $alldata->{'merged'}{'setting'}{$v}{'val'},
- $alldata->{'merged'}{'setting'}{$v}{'origin'} );
- } else {
- return ($settings{$v}{'default'}, "default");
- }
-}
-
-sub mkMaps {
- my $logfile;
-
- $logfile = "$TEXMFVAR/web2c/updmap.log";
-
- if (! $opts{'dry-run'}) {
- mkdirhier("$TEXMFVAR/web2c");
- open LOG, ">$logfile"
- or die "$prg: Can't open log file \"$logfile\": $!";
- print LOG &version();
- printf LOG "%s\n\n", scalar localtime();
- print LOG "Using the following config files:\n";
- for (@{$opts{'cnffile'}}) {
- print LOG " $_\n";
- }
- }
- sub print_and_log {
- my $str=shift;
- print $str if !$opts{'quiet'};
- print LOG $str unless $opts{'dry-run'};
- }
- sub only_log {
- print LOG shift unless $opts{'dry-run'};
- }
-
- my ($mode, $mode_origin) = get_cfg('LW35');
- my ($dvipsPreferOutline, $dvipsPreferOutline_origin) =
- get_cfg('dvipsPreferOutline');
- my ($dvipsDownloadBase35, $dvipsDownloadBase35_origin) =
- get_cfg('dvipsDownloadBase35');
- my ($pdftexDownloadBase14, $pdftexDownloadBase14_origin) =
- get_cfg('pdftexDownloadBase14');
- my ($pxdviUse, $pxdviUse_origin) = get_cfg('pxdviUse');
- my ($kanjiEmbed, $kanjiEmbed_origin) = get_cfg('kanjiEmbed');
- my ($kanjiVariant, $kanjiVariant_origin) = get_cfg('kanjiVariant');
-
- print_and_log ("\n$prg is creating new map files"
- . "\nusing the following configuration:"
- . "\n LW35 font names : "
- . "$mode ($mode_origin)"
- . "\n prefer outlines : "
- . "$dvipsPreferOutline ($dvipsPreferOutline_origin)"
- . "\n texhash enabled : "
- . ($opts{'nohash'} ? "false" : "true")
- . "\n download standard fonts (dvips) : "
- . "$dvipsDownloadBase35 ($dvipsDownloadBase35_origin)"
- . "\n download standard fonts (pdftex) : "
- . "$pdftexDownloadBase14 ($pdftexDownloadBase14_origin)"
- . "\n kanjiEmbed replacement string : "
- . "$kanjiEmbed ($kanjiEmbed_origin)"
- . "\n kanjiVariant replacement string : "
- . "$kanjiVariant ($kanjiVariant_origin)"
- . "\n create a mapfile for pxdvi : "
- . "$pxdviUse ($pxdviUse_origin)"
- . "\n\n");
-
- print_and_log ("Scanning for LW35 support files");
- my $dvips35 = $alldata->{'maps'}{"dvips35.map"}{'fullpath'};
- my $pdftex35 = $alldata->{'maps'}{"pdftex35.map"}{'fullpath'};
- my $ps2pk35 = $alldata->{'maps'}{"ps2pk35.map"}{'fullpath'};
- my $LW35 = "\n$dvips35\n$pdftex35\n$ps2pk35\n\n";
- only_log ("\n");
- only_log ($LW35);
- print_and_log (" [ 3 files]\n");
- only_log ("\n");
-
- print_and_log ("Scanning for MixedMap entries");
- my @mixedmaps;
- my @notmixedmaps;
- my @kanjimaps;
- for my $m (keys %{$alldata->{'maps'}}) {
- my $origin = $alldata->{'maps'}{$m}{'origin'};
- next if !defined($origin);
- next if ($alldata->{'updmap'}{$origin}{'maps'}{$m}{'status'} eq "disabled");
- push @mixedmaps, $m
- if ($alldata->{'updmap'}{$origin}{'maps'}{$m}{'type'} eq "MixedMap");
- push @notmixedmaps, $m
- if ($alldata->{'updmap'}{$origin}{'maps'}{$m}{'type'} eq "Map");
- push @kanjimaps, $m
- if ($alldata->{'updmap'}{$origin}{'maps'}{$m}{'type'} eq "KanjiMap");
- }
-
- @mixedmaps = sort @mixedmaps;
- @notmixedmaps = sort @notmixedmaps;
- @kanjimaps = sort @kanjimaps;
- only_log("\n");
- foreach my $m (sort @mixedmaps) {
- if (defined($alldata->{'maps'}{$m}{'fullpath'})) {
- only_log($alldata->{'maps'}{$m}{'fullpath'} . "\n");
- } else {
- only_log("$m (full path not set?)\n");
- }
- }
- only_log("\n");
- print_and_log (sprintf(" [%3d files]\n", scalar @mixedmaps));
- only_log("\n");
-
- print_and_log ("Scanning for KanjiMap entries");
- only_log("\n");
- foreach my $m (@kanjimaps) {
- if (defined($alldata->{'maps'}{$m}{'fullpath'})) {
- only_log($alldata->{'maps'}{$m}{'fullpath'} . "\n");
- } else {
- only_log("$m (full path not set?)\n");
- }
- }
- only_log("\n");
- print_and_log (sprintf(" [%3d files]\n", scalar @kanjimaps));
- only_log("\n");
-
- print_and_log ("Scanning for Map entries");
- only_log("\n");
- foreach my $m (@notmixedmaps) {
- if (defined($alldata->{'maps'}{$m}{'fullpath'})) {
- only_log($alldata->{'maps'}{$m}{'fullpath'} . "\n");
- } else {
- only_log("$m (full path not set?)\n");
- }
- }
- only_log("\n");
- print_and_log (sprintf(" [%3d files]\n\n", scalar @notmixedmaps));
- only_log("\n");
-
- # Create psfonts_t1.map, psfonts_pk.map, ps2pk.map and pdftex.map:
- my $dvipsoutputdir = $opts{'dvipsoutputdir'};
- my $pdftexoutputdir = $opts{'pdftexoutputdir'};
- my $dvipdfmxoutputdir = $opts{'dvipdfmxoutputdir'};
- my $pxdvioutputdir = $opts{'pxdvioutputdir'};
- if (!$opts{'dry-run'}) {
- my @managed_files = ("$dvipsoutputdir/download35.map",
- "$dvipsoutputdir/builtin35.map",
- "$dvipsoutputdir/psfonts_t1.map",
- "$dvipsoutputdir/psfonts_pk.map",
- "$pdftexoutputdir/pdftex_dl14.map",
- "$pdftexoutputdir/pdftex_ndl14.map",
- "$dvipdfmxoutputdir/kanjix.map",
- "$dvipsoutputdir/ps2pk.map");
- push @managed_files, "$pxdvioutputdir/xdvi-ptex.map"
- if ($pxdviUse eq "true");
- for my $file (@managed_files) {
- open FILE, ">$file";
- print FILE "% $file:\
-% maintained by updmap[-sys] (multi).\
-% Don't change this file directly. Use updmap[-sys] instead.\
-% See the updmap documentation.\
-% A log of the run that created this file is available here:\
-% $logfile\
-";
- close FILE;
- }
- }
-
- my @kanjimaps_fonts = getFonts(@kanjimaps);
- @kanjimaps_fonts = &normalizeLines(@kanjimaps_fonts);
- my @ps2pk_fonts = getFonts('-all', "ps2pk35.map");
- my @dvips35_fonts = getFonts('-all', "dvips35.map");
- my @pdftex35_fonts = getFonts('-all', "pdftex35.map");
- my @mixedmaps_fonts = getFonts(@mixedmaps);
- my @notmixedmaps_fonts = getFonts(@notmixedmaps);
-
- print "Generating output for dvipdfmx...\n" if !$opts{'quiet'};
- &writeLines(">$dvipdfmxoutputdir/kanjix.map", @kanjimaps_fonts);
-
- if ($pxdviUse eq "true") {
- # we use the very same data as for kanjix.map, but generate
- # a different file, so that in case a user wants to hand-craft it
- print "Generating output for pxdvi...\n" if !$opts{'quiet'};
- &writeLines(">$pxdvioutputdir/xdvi-ptex.map", @kanjimaps_fonts);
- }
-
-
- print "Generating output for ps2pk...\n" if !$opts{'quiet'};
- my @ps2pk_map;
- push @ps2pk_map, "% ps2pk35.map";
- push @ps2pk_map, transLW35($mode, @ps2pk_fonts);
- push @ps2pk_map, @mixedmaps_fonts;
- push @ps2pk_map, @notmixedmaps_fonts;
- &writeLines(">$dvipsoutputdir/ps2pk.map",
- normalizeLines(@ps2pk_map));
-
- print "Generating output for dvips...\n" if !$opts{'quiet'};
- my @download35_map;
- push @download35_map, "% ps2pk35.map";
- push @download35_map, transLW35($mode, @ps2pk_fonts);
- &writeLines(">$dvipsoutputdir/download35.map",
- normalizeLines(@download35_map));
-
- my @builtin35_map;
- push @builtin35_map, "% dvips35.map";
- push @builtin35_map, transLW35($mode, @dvips35_fonts);
- &writeLines(">$dvipsoutputdir/builtin35.map",
- normalizeLines(@builtin35_map));
-
- my @dftdvips_fonts = ($dvipsDownloadBase35 ? @ps2pk_fonts : @dvips35_fonts);
-
- my @psfonts_t1_map;
- if ($dvipsDownloadBase35) {
- push @psfonts_t1_map, "% ps2pk35.map",
- @dftdvips_fonts = @ps2pk_fonts;
- } else {
- push @psfonts_t1_map, "% dvips35.map";
- @dftdvips_fonts = @dvips35_fonts;
- }
- push @psfonts_t1_map, transLW35($mode, @dftdvips_fonts);
- my @tmpkanji2 = cidx2dvips(\@kanjimaps_fonts);
- push @psfonts_t1_map, @mixedmaps_fonts;
- push @psfonts_t1_map, @notmixedmaps_fonts;
- push @psfonts_t1_map, @tmpkanji2;
- &writeLines(">$dvipsoutputdir/psfonts_t1.map",
- normalizeLines(@psfonts_t1_map));
-
- my @psfonts_pk_map;
- push @psfonts_pk_map, transLW35($mode, @dftdvips_fonts);
- push @psfonts_pk_map, @notmixedmaps_fonts;
- push @psfonts_pk_map, @tmpkanji2;
- &writeLines(">$dvipsoutputdir/psfonts_pk.map",
- normalizeLines(@psfonts_pk_map));
-
- print "Generating output for pdftex...\n" if !$opts{'quiet'};
- # remove PaintType due to Sebastian's request
- my @pdftexmaps_ndl;
- push @pdftexmaps_ndl, "% pdftex35.map";
- push @pdftexmaps_ndl, transLW35($mode, @pdftex35_fonts);
- push @pdftexmaps_ndl, @mixedmaps_fonts;
- push @pdftexmaps_ndl, @notmixedmaps_fonts;
- @pdftexmaps_ndl = grep { $_ !~ m/(^%\|PaintType)/ } @pdftexmaps_ndl;
-
- my @pdftexmaps_dl;
- push @pdftexmaps_dl, "% ps2pk35.map";
- push @pdftexmaps_dl, transLW35($mode, @ps2pk_fonts);
- push @pdftexmaps_dl, @mixedmaps_fonts;
- push @pdftexmaps_dl, @notmixedmaps_fonts;
- @pdftexmaps_dl = grep { $_ !~ m/(^%\|PaintType)/ } @pdftexmaps_dl;
-
- my @pdftex_ndl14_map = @pdftexmaps_ndl;
- @pdftex_ndl14_map = &normalizeLines(@pdftex_ndl14_map);
- @pdftex_ndl14_map = &to_pdftex(@pdftex_ndl14_map);
- &writeLines(">$pdftexoutputdir/pdftex_ndl14.map", @pdftex_ndl14_map);
-
- my @pdftex_dl14_map = @pdftexmaps_dl;
- @pdftex_dl14_map = &normalizeLines(@pdftex_dl14_map);
- @pdftex_dl14_map = &to_pdftex(@pdftex_dl14_map);
- &writeLines(">$pdftexoutputdir/pdftex_dl14.map", @pdftex_dl14_map);
-
- our $link = &setupSymlinks($dvipsPreferOutline, $dvipsoutputdir, $pdftexDownloadBase14, $pdftexoutputdir);
-
- print_and_log ("\nFiles generated:\n");
- sub dir {
- my ($d, $f, $target)=@_;
- our $link;
- if (-e "$d/$f") {
- my @stat=lstat("$d/$f");
- my ($s,$m,$h,$D,$M,$Y)=localtime($stat[9]);
- my $timestamp=sprintf ("%04d-%02d-%02d %02d:%02d:%02d",
- $Y+1900, $M+1, $D, $h, $m, $s);
- my $date=sprintf "%12d %s %s", $stat[7], $timestamp, $f;
- print_and_log ($date);
-
- if (-l "$d/$f") {
- my $lnk=sprintf " -> %s\n", readlink ("$d/$f");
- print_and_log ($lnk);
- } elsif ($f eq $target) {
- if (&files_are_identical("$d/$f", "$d/" . $link->{$target})) {
- print_and_log (" = $link->{$target}\n");
- } else {
- print_and_log (" = ?????\n"); # This shouldn't happen.
- }
- } else {
- print_and_log ("\n");
- }
- } else {
- print STDERR "Warning: File $d/$f doesn't exist.\n";
- print LOG "Warning: File $d/$f doesn't exist.\n"
- unless $opts{'dry-run'};
- }
- }
-
- my $d;
- $d = "$dvipsoutputdir";
- print_and_log(" $d:\n");
- foreach my $f ('builtin35.map', 'download35.map', 'psfonts_pk.map',
- 'psfonts_t1.map', 'ps2pk.map', 'psfonts.map') {
- dir ($d, $f, 'psfonts.map');
- $updLSR->{add}("$d/$f") unless $opts{'dry-run'};
- }
- $d = "$pdftexoutputdir";
- print_and_log(" $d:\n");
- foreach my $f ('pdftex_dl14.map', 'pdftex_ndl14.map', 'pdftex.map') {
- dir ($d, $f, 'pdftex.map');
- $updLSR->{add}("$d/$f") unless $opts{'dry-run'};
- }
- $d="$dvipdfmxoutputdir";
- print_and_log(" $d:\n");
- foreach my $f ('kanjix.map') {
- dir ($d, $f, '');
- $updLSR->{add}("$d/$f") unless $opts{'dry-run'};
- }
- if ($pxdviUse eq "true") {
- $d="$pxdvioutputdir";
- print_and_log(" $d:\n");
- foreach my $f ('xdvi-ptex.map') {
- dir ($d, $f, '');
- $updLSR->{add}("$d/$f") unless $opts{'dry-run'};
- }
- }
- close LOG unless $opts{'dry-run'};
- print "\nTranscript written on \"$logfile\".\n" if !$opts{'quiet'};
-
-}
-
-
-sub locateMap {
- my $map = shift;
- my $ret = `kpsewhich --format=map $map`;
- chomp($ret);
- return $ret;
-}
-
-sub processOptions {
- # first process the stupid setoption= s@{1,2} which is not accepted
- # furthermore, try to work around missing s{1,2} support in older perls
- my $oldconfig = Getopt::Long::Configure(qw(pass_through));
- our @setoptions;
- our @enable;
- sub read_one_or_two {
- my ($opt, $val) = @_;
- our @setoptions;
- our @enable;
- # check if = occirs in $val, if not, get the next argument
- if ($val =~ m/=/) {
- if ($opt eq "setoption") {
- push @setoptions, $val;
- } else {
- push @enable, $val;
- }
- } else {
- my $vv = shift @ARGV;
- die "Try \"$prg --help\" for more information.\n"
- if !defined($vv);
- if ($opt eq "setoption") {
- push @setoptions, "$val=$vv";
- } else {
- push @enable, "$val=$vv";
- }
- }
- }
- GetOptions("setoption=s@" => \&read_one_or_two,
- "enable=s@" => \&read_one_or_two) or
- die "Try \"$prg --help\" for more information.\n";
-
- @{$opts{'setoption'}} = @setoptions if (@setoptions);
- @{$opts{'enable'}} = @enable if (@enable);
-
- Getopt::Long::Configure($oldconfig);
-
- # now continue with normal option handling
-
- GetOptions(\%opts, @cmdline_options) or
- die "Try \"$prg --help\" for more information.\n";
-}
-
-# determines the output dir for driver from cmd line, or if not given
-# from TEXMFVAR
-sub setupOutputDir {
- my $driver = shift;
- if (!$opts{$driver . "outputdir"}) {
- if ($opts{'outputdir'}) {
- $opts{$driver . "outputdir"} = $opts{'outputdir'};
- } else {
- $opts{$driver . "outputdir"} = "$TEXMFVAR/fonts/map/$driver/updmap";
- }
- }
- my $od = $opts{$driver . "outputdir"};
- if (!$opts{"dry-run"}) {
- &mkdirhier($od);
- if (! -w $od) {
- die "$prg: Directory \"$od\" isn't writable: $!";
- }
- }
- print "$driver output dir: \"$od\"\n" if !$opts{'quiet'};
- return $od;
-}
-
-###############################################################################
-# setOption (@options)
-# parse @options for "key=value" (one element of @options)
-# we can only have "key=value" since that is the way it was prepared
-# in process_options
-# (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) = split (/=/, $o, 2);
-
- die "$prg: unexpected empty key or val for options (@options), goodbye.\n"
- if !$key || !defined($val);
-
- &setOption ($key, $val);
- }
- return save_updmap($alldata->{'changes_config'});
-}
-
-sub enable_disable_maps {
- my (@what) = @_;
- my $tc = $alldata->{'changes_config'};
- die "$prg: top config file $tc has not been read."
- if (!defined($alldata->{'updmap'}{$tc}));
- my $changed = 0;
-
- for my $w (@what) {
- if ($w =~ m/=/) {
- # this is --enable MapType=MapName
- my ($type, $map) = split ('=', $w);
- enable_map($tc, $type, $map);
- } else {
- # this is --disable MapName
- disable_map($tc, $w);
- }
- }
- merge_settings();
- return save_updmap($tc);
-}
-
-sub enable_map {
- my ($tc, $type, $map) = @_;
-
- die "$prg: invalid mapType $type" if ($type !~ m/^(Map|MixedMap|KanjiMap)$/);
-
- if (defined($alldata->{'updmap'}{$tc}{'maps'}{$map})) {
- # the map data has already been read in, no special precautions necessary
- if (($alldata->{'updmap'}{$tc}{'maps'}{$map}{'status'} eq "enabled") &&
- ($alldata->{'updmap'}{$tc}{'maps'}{$map}{'type'} eq $type)) {
- # nothing to do here ... be happy!
- return;
- } else {
- $alldata->{'updmap'}{$tc}{'maps'}{$map}{'status'} = "enabled";
- $alldata->{'updmap'}{$tc}{'maps'}{$map}{'type'} = $type;
- $alldata->{'maps'}{$map}{'origin'} = $tc;
- $alldata->{'maps'}{$map}{'status'} = "enabled";
- $alldata->{'updmap'}{$tc}{'changed'} = 1;
- }
- } else {
- # add a new map file!
- $alldata->{'updmap'}{$tc}{'maps'}{$map}{'type'} = $type;
- $alldata->{'updmap'}{$tc}{'maps'}{$map}{'status'} = "enabled";
- $alldata->{'updmap'}{$tc}{'maps'}{$map}{'line'} = -1;
- $alldata->{'updmap'}{$tc}{'changed'} = 1;
- $alldata->{'maps'}{$map}{'origin'} = $tc;
- $alldata->{'maps'}{$map}{'status'} = "enabled";
- }
-}
-
-sub disable_map {
- my ($tc, $map) = @_;
-
- if (defined($alldata->{'updmap'}{$tc}{'maps'}{$map})) {
- # the map data has already been read in, no special precautions necessary
- if ($alldata->{'updmap'}{$tc}{'maps'}{$map}{'status'} eq "disabled") {
- # nothing to do here ... be happy!
- } else {
- $alldata->{'updmap'}{$tc}{'maps'}{$map}{'status'} = "disabled";
- $alldata->{'maps'}{$map}{'origin'} = $tc;
- $alldata->{'maps'}{$map}{'status'} = "disabled";
- $alldata->{'updmap'}{$tc}{'changed'} = 1;
- }
- } else {
- # disable a Map type that might be activated in a lower ranked updmap.cfg
- if (!defined($alldata->{'maps'}{$map})) {
- warning("Map is not present anywhere, why should I disable it?\n");
- return;
- }
- my $orig = $alldata->{'maps'}{$map}{'origin'};
- # add a new entry to the top level where we disable it
- # copy over the type from the last entry
- $alldata->{'updmap'}{$tc}{'maps'}{$map}{'type'} =
- $alldata->{'updmap'}{$orig}{'maps'}{$map}{'type'};
- $alldata->{'updmap'}{$tc}{'maps'}{$map}{'status'} = "disabled";
- $alldata->{'updmap'}{$tc}{'maps'}{$map}{'line'} = -1;
- # rewrite the origin
- $alldata->{'maps'}{$map}{'origin'} = $tc;
- $alldata->{'maps'}{$map}{'status'} = "disabled";
- # go on for writing
- $alldata->{'updmap'}{$tc}{'changed'} = 1;
- }
-}
-
-
-# returns 1 if actually saved due to changes
-sub save_updmap {
- my $fn = shift;
- return if $opts{'dry-run'};
- my %upd = %{$alldata->{'updmap'}{$fn}};
- if ($upd{'changed'}) {
- mkdirhier(dirname($fn));
- open (FN, ">$fn") || die "$prg: can't write to $fn: $!";
- my @lines = @{$upd{'lines'}};
- if (!@lines) {
- print "Creating new config file $fn\n";
- # update lsR database
- $updLSR->{add}($fn);
- $updLSR->{exec}();
- # reset the LSR stuff, otherwise we add files several times
- $updLSR->{reset}();
- }
- # collect the lines with data
- my %line_to_setting;
- my %line_to_map;
- my @add_setting;
- my @add_map;
- if (defined($upd{'setting'})) {
- for my $k (keys %{$upd{'setting'}}) {
- if ($upd{'setting'}{$k}{'line'} == -1) {
- push @add_setting, $k;
- } else {
- $line_to_setting{$upd{'setting'}{$k}{'line'}} = $k;
- }
- }
- }
- if (defined($upd{'maps'})) {
- for my $k (keys %{$upd{'maps'}}) {
- if ($upd{'maps'}{$k}{'line'} == -1) {
- push @add_map, $k;
- } else {
- $line_to_map{$upd{'maps'}{$k}{'line'}} = $k;
- }
- }
- }
- for my $i (0..$#lines) {
- if (defined($line_to_setting{$i})) {
- my $k = $line_to_setting{$i};
- my $v = $upd{'setting'}{$k}{'val'};
- print FN "$k $v\n";
- } elsif (defined($line_to_map{$i})) {
- my $m = $line_to_map{$i};
- my $rm;
- if (defined($upd{'maps'}{$m}{'original'})) {
- # we have the case that @noEmbed@ was replaced by the respective
- # setting. Before writing out we have to replace this back with
- # the original line!A
- $rm = $upd{'maps'}{$m}{'original'};
- } else {
- $rm = $m;
- }
- my $t = $upd{'maps'}{$m}{'type'};
- my $p = ($upd{'maps'}{$m}{'status'} eq "disabled" ? "#! " : "");
- print FN "$p$t $rm\n";
- } else {
- print FN "$lines[$i]\n";
- }
- }
- # add the new settings and maps
- for my $k (@add_setting) {
- my $v = $upd{'setting'}{$k}{'val'};
- print FN "$k $v\n";
- }
- for my $m (@add_map) {
- my $t = $upd{'maps'}{$m}{'type'};
- my $p = ($upd{'maps'}{$m}{'status'} eq "disabled" ? "#! " : "");
- print FN "$p$t $m\n";
- }
- close(FN) || warn("Cannot close file handle for $fn: $!");
- delete $alldata->{'updmap'}{$fn}{'changed'};
- return 1;
- }
- return 0;
-}
-
-######################
-# check for correct option value
-#
-sub check_option {
- my ($opt, $val) = @_;
- if ((($settings{$opt}{'type'} eq "binary") &&
- $val ne "true" && $val ne "false") ||
- (($settings{$opt}{'type'} eq "string") &&
- !member($val, @{$settings{$opt}{'possible'}}))) {
- return 0;
- }
- return 1;
-}
-
-###############################################################################
-# setOption (conf_file, 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) = @_;
-
- die "$prg: Unsupported option $opt." if (!defined($settings{$opt}));
- die "$0: Invalid value $val for option $opt."
- if (!check_option($opt, $val));
-
- # silently accept this old option name, just in case.
- return if $opt eq "dvipdfmDownloadBase14";
-
- #print "Setting option $opt to $val...\n" if !$opts{'quiet'};
- my $tc = $alldata->{'changes_config'};
-
- die "$prg: top config file $tc has not been read."
- if (!defined($alldata->{'updmap'}{$tc}));
-
- if (defined($alldata->{'updmap'}{$tc}{'setting'}{$opt}{'val'})) {
- # the value is already set, do nothing
- if ($alldata->{'updmap'}{$tc}{'setting'}{$opt}{'val'} eq $val) {
- return;
- }
- $alldata->{'updmap'}{$tc}{'setting'}{$opt}{'val'} = $val;
- $alldata->{'updmap'}{$tc}{'changed'} = 1;
- } else {
- $alldata->{'updmap'}{$tc}{'setting'}{$opt}{'val'} = $val;
- $alldata->{'updmap'}{$tc}{'setting'}{$opt}{'line'} = -1;
- $alldata->{'updmap'}{$tc}{'changed'} = 1;
- }
-}
-
-
-###############################################################################
-# copyFile()
-# copy file $src to $dst, sets $dst creation and mod time
-#
-sub copyFile {
- my ($src, $dst) = @_;
- my $dir;
- ($dir=$dst)=~s/(.*)\/.*/$1/;
- mkdirhier($dir);
-
- $src eq $dst && return "can't copy $src to itself!\n";
-
- open IN, "<$src" or die "$0: can't open source file $src for copying: $!";
- open OUT, ">$dst";
-
- binmode(IN);
- binmode(OUT);
- print OUT <IN>;
- close(OUT);
- close(IN);
- my @t = stat($src);
- utime($t[8], $t[9], $dst);
-}
-
-###############################################################################
-# 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;
- my $retval=0;
-
- open IN, "$file_A";
- my $A=(<IN>);
- close IN;
- open IN, "$file_B";
- my $B=(<IN>);
- close IN;
-
- $retval=1 if ($A eq $B);
- return $retval;
-}
-
-###############################################################################
-# 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;
- my $comment=shift;
- my $retval=0;
-
- my $A=equalize_file("$file_A", $comment);
- my $B=equalize_file("$file_B", $comment);
- $retval=1 unless ($A eq $B);
- return $retval;
-}
-
-###############################################################################
-# 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>);
- close IN;
- chomp(@lines);
-
- for (@lines) {
- s/\s*${comment}.*// if (defined $comment); # remove comments
- next if /^\s*$/; # remove empty lines
- s/\s+/ /g; # replace multiple whitespace chars by a single one
- push @temp, $_;
- }
- return join('X', sort(@temp));
-}
-
-###############################################################################
-# normalizeLines()
-# not the original function, we want it to keep comments, that are
-# anyway only the file names we are adding!
-# 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 = ();
-
- # @lines = grep { $_ !~ m/^[*#;%]/ } @lines;
- map {$_ =~ s/\s+/ /gx } @lines;
- @lines = grep { $_ !~ m/^\s*$/x } @lines;
- map { $_ =~ s/\s$//x ;
- $_ =~ s/\s*\"\s*/ \" /gx;
- $_ =~ s/\" ([^\"]*) \"/\"$1\"/gx;
- } @lines;
-
- # @lines = grep {++$count{$_} < 2 } (sort @lines);
- @lines = grep {++$count{$_} < 2 } (@lines);
-
- return @lines;
-}
-
-
-#################################################################
-#
-# reading updmap-cfg files and the actual map files
-#
-# the following hash saves *all* the information and is passed around
-# we do not fill everything from the very beginning to make sure that
-# we only read what is necessary (speed!)
-#
-# initialized by main
-# $alldata->{'changes_config'} = the config file where changes are saved
-#
-# initialized by read_updmap_files
-# $alldata->{'order'} = [ list of updmap in decreasing priority ]
-# $alldata->{'updmap'}{$full_path_name_of_updmap}{'lines'} = \@lines
-# $alldata->{'updmap'}{$full_path_name_of_updmap}{'setting'}{$key}{'val'} = $val
-# $alldata->{'updmap'}{$full_path_name_of_updmap}{'setting'}{$key}{'line'} = $i
-# $alldata->{'updmap'}{$full_path_name_of_updmap}{'maps'}{$mapname}{'type'}
-# = 'Map'|'MixedMap'|'KanjiMap'|'disabled'
-# $alldata->{'updmap'}{$full_path_name_of_updmap}{'maps'}{$mapname}{'status'}
-# = 'enabled'|'disabled'
-# $alldata->{'updmap'}{$full_path_name_of_updmap}{'maps'}{$mapname}{'line'} = $i
-# $alldata->{'maps'}{$m}{'origin'} = $updmap_path_name
-# $alldata->{'maps'}{$m}{'status'} = enabled | disabled
-#
-# initialized by read_map_files
-# $alldata->{'maps'}{$m}{'fonts'}{$font} = $definition
-# $alldata->{'fonts'}{$f}{'origin'} = $map
-#
-# initialized by merge_data
-# $alldata->{'merged'}{'setting'}{$key}{'val'} = $val
-# $alldata->{'merged'}{'setting'}{$key}{'origin'} = $origin_updmap_cfg
-# $alldata->{'merged'}{'allMaps'}{'fonts'}{$fontdef} = $rest
-# $alldata->{'merged'}{'noMixedMaps'}{'fonts'}{$fontdef} = $rest
-# $alldata->{'merged'}{'KanjiMaps'}{'fonts'}{$fontdef} = $rest
-#
-
-sub read_updmap_files {
- my (@l) = @_;
- for my $l (@l) {
- my $updmap = read_updmap_file($l);
- $alldata->{'updmap'}{$l}{'lines'} = $updmap->{'lines'};
- if (defined($updmap->{'setting'})) {
- for my $k (keys %{$updmap->{'setting'}}) {
- $alldata->{'updmap'}{$l}{'setting'}{$k}{'val'} = $updmap->{'setting'}{$k}{'val'};
- $alldata->{'updmap'}{$l}{'setting'}{$k}{'line'} = $updmap->{'setting'}{$k}{'line'};
- }
- }
- if (defined($updmap->{'maps'})) {
- for my $k (keys %{$updmap->{'maps'}}) {
- $alldata->{'updmap'}{$l}{'maps'}{$k}{'type'} = $updmap->{'maps'}{$k}{'type'};
- $alldata->{'updmap'}{$l}{'maps'}{$k}{'status'} = $updmap->{'maps'}{$k}{'status'};
- $alldata->{'updmap'}{$l}{'maps'}{$k}{'line'} = $updmap->{'maps'}{$k}{'line'};
- }
- }
- }
- # in case the changes_config is a new one read it in and initialize it here
- my $cc = $alldata->{'changes_config'};
- if (! -r $cc) {
- $alldata->{'updmap'}{$cc}{'lines'} = [ ];
- }
- #
- $alldata->{'order'} = \@l;
-
- # merge data and check for kanji embed
- merge_settings();
-}
-
-sub merge_settings {
- #
- my @l = @{$alldata->{'order'}};
- #
- # for security clean out everything that was there
- %{$alldata->{'merged'}} = ();
- #
- # first read in the settings
- # we read it in *reverse* order and simple fill up the combined data
- # thus if there are multiple definitions/settings, the one coming from
- # the first in the original list will win!
- for my $l (reverse @l) {
- # merge settings
- if (defined($alldata->{'updmap'}{$l}{'setting'})) {
- for my $k (keys %{$alldata->{'updmap'}{$l}{'setting'}}) {
- $alldata->{'merged'}{'setting'}{$k}{'val'} = $alldata->{'updmap'}{$l}{'setting'}{$k}{'val'};
- $alldata->{'merged'}{'setting'}{$k}{'origin'} = $l;
- }
- }
- }
- #
- my ($kanjiEmbed, $kanjiEmbed_origin) = get_cfg('kanjiEmbed');
- my ($kanjiVariant, $kanjiVariant_origin) = get_cfg('kanjiVariant');
- #
- # go through all map files and check that the text is properly replaced
- # after the replacement check that the generated map file actually
- # exists, we do NOT want to break in this case!
- #
- for my $l (@l) {
- for my $m (keys %{$alldata->{'updmap'}{$l}{'maps'}}) {
- if ($m =~ m/\@kanjiEmbed@/ || $m =~ m/\@kanjiVariant@/) {
- my $newm = $m;
- $newm =~ s/\@kanjiEmbed@/$kanjiEmbed/;
- $newm =~ s/\@kanjiVariant@/$kanjiVariant/;
- if (locateMap($newm)) {
- # now we have to update various linked items
- $alldata->{'updmap'}{$l}{'maps'}{$newm}{'type'} =
- $alldata->{'updmap'}{$l}{'maps'}{$m}{'type'};
- $alldata->{'updmap'}{$l}{'maps'}{$newm}{'status'} =
- $alldata->{'updmap'}{$l}{'maps'}{$m}{'status'};
- $alldata->{'updmap'}{$l}{'maps'}{$newm}{'line'} =
- $alldata->{'updmap'}{$l}{'maps'}{$m}{'line'};
- $alldata->{'updmap'}{$l}{'maps'}{$newm}{'original'} = $m;
- } else {
- print "$prg: generated map $newm (from $m) does not exists, not activating it!\n";
- }
- # in any case delete the @kanji...@ entry line, such a map will
- # never exist
- delete $alldata->{'updmap'}{$l}{'maps'}{$m};
- }
- }
- }
- #
- # first round determine which maps should be used and which type, as
- # different updmap.cfg files might specify different types of maps
- # (MixedMap or Map or KanjiMap).
- # Again, we have to do that in reverse order
- for my $l (reverse @l) {
- if (defined($alldata->{'updmap'}{$l}{'maps'})) {
- for my $m (keys %{$alldata->{'updmap'}{$l}{'maps'}}) {
- $alldata->{'maps'}{$m}{'origin'} = $l;
- $alldata->{'maps'}{$m}{'status'} = $alldata->{'updmap'}{$l}{'maps'}{$m}{'status'};
- }
- }
- }
-}
-
-sub read_updmap_file {
- my $fn = shift;
- my $is_old_local = ($fn =~ m/updmap-local.cfg/ ? 1 : 0);
- my %data;
- if (!open(FN,"<$fn")) {
- die ("Cannot read $fn: $!");
- }
- # we count lines from 0 ..!!!!
- my $i = -1;
- my @lines = <FN>;
- chomp(@lines);
- $data{'lines'} = [ @lines ];
- close(FN) || warn("Cannot close $fn: $!");
- for (@lines) {
- $i++;
- chomp;
- if ($is_old_local) {
- # in case we read an old updmap-local.cfg we have to make sure
- # that the disable lines
- # ^#!foo.map
- # are rewritten to proper disable lines
- # ^#! Map foo.map
- # we are guessing here the type of the map (namely Map)
- $_ =~ s/^#!([^ ])/#! Map $1/;
- }
- next if /^\s*$/;
- next if /^\s*#$/;
- next if /^\s*#[^!]/;
- next if /^\s*##/;
- next if /^#![^ ]/;
- # allow for commands on the line itself
- s/([^#].*)#.*$/$1/;
- my ($a, $b, @rest) = split ' ';
- # make sure we get empty strings as arguments
- $b = "" if (!defined($b));
- if ($a eq "#!") {
- if ($b eq "Map" || $b eq "MixedMap" || $b eq "KanjiMap") {
- my $c = shift @rest;
- if (!defined($c)) {
- warning("$prg: apparently not a real disable line, ignored: $_\n");
- } else {
- if (defined($data{'maps'}{$c})) {
- warning("$prg: double mention of $c in $fn\n");
- }
- $data{'maps'}{$c}{'status'} = 'disabled';
- $data{'maps'}{$c}{'type'} = $b;
- $data{'maps'}{$c}{'line'} = $i;
- }
- }
- next;
- }
- if (@rest) {
- warning("$prg: line $i in $fn contains a syntax error, more than two words!\n");
- }
- if (defined($settings{$a})) {
- if (check_option($a, $b)) {
- $data{'setting'}{$a}{'val'} = $b;
- $data{'setting'}{$a}{'line'} = $i;
- } else {
- warning("$prg: unknown setting for $a: $b, ignored!\n");
- }
- } elsif ($a eq "Map" || $a eq "MixedMap" || $a eq "KanjiMap") {
- if (defined($data{'maps'}{$b}) && $data{'maps'}{$b}{'type'} ne $a) {
- warning("$prg: double mention of $b with conflicting types in $fn\n");
- } else {
- $data{'maps'}{$b}{'type'} = $a;
- $data{'maps'}{$b}{'status'} = 'enabled';
- $data{'maps'}{$b}{'line'} = $i;
- }
- } else {
- warning("$prg: unrecognized line $i in $fn: $_\n");
- }
- }
- return \%data;
-}
-
-sub read_map_files {
- if (!defined($alldata->{'updmap'})) {
- return;
- }
- my @missing;
- my @l = @{$alldata->{'order'}};
- # first collect all the map files we are interested in
- # and determine whether they exist, and get their full path
- my @maps;
- for my $f (@l) {
- next if !defined($alldata->{'updmap'}{$f}{'maps'});
- for my $m (keys %{$alldata->{'updmap'}{$f}{'maps'}}) {
- # only read a map file if its final status is enabled!
- push @maps, $m if ($alldata->{'maps'}{$m}{'status'} eq 'enabled');
- }
- }
- for my $m (qw/dvips35.map pdftex35.map ps2pk35.map/) {
- push @maps, $m;
- $alldata->{'maps'}{$m}{'status'} = 'enabled';
- }
- @maps = sort_uniq(@maps);
- my @fullpath = `kpsewhich --format=map @maps`;
- chomp @fullpath;
- foreach my $map (@maps) {
- my ($ff) = grep /\/$map(\.map)?$/, @fullpath;
- if ($ff) {
- $alldata->{'maps'}{$map}{'fullpath'} = $ff;
- } else {
- # if the map file is not found, then push it onto the list of
- # missing map files, since we know that it is enabled
- push @missing, $map;
- }
- }
-
- #
- # read in the three basic fonts definition maps
- for my $m (qw/dvips35.map pdftex35.map ps2pk35.map/) {
- my $ret = read_map_file($alldata->{'maps'}{$m}{'fullpath'});
- my @ff = ();
- for my $font (keys %$ret) {
- $alldata->{'fonts'}{$font}{'origin'} = $m;
- $alldata->{'maps'}{$m}{'fonts'}{$font} = $ret->{$font};
- }
- }
- # we read the updmap in reverse directions, since we
- # replace the origin field of font definition always with the
- # top one
- for my $f (reverse @l) {
- my @maps = keys %{$alldata->{'updmap'}{$f}{'maps'}};
- for my $m (@maps) {
- # we do not read a map file multiple times, if $alldata{'maps'}{$m} is
- # defined we expect that it was read and do skip it
- next if defined($alldata->{'maps'}{$m}{'fonts'});
- # we do not read a map files content if it is disabled
- next if ($alldata->{'maps'}{$m}{'status'} eq 'disabled');
- if (!defined($alldata->{'maps'}{$m}{'fullpath'})) {
- # we have already pushed these map files onto the list of missing
- # map files, so do nothing here
- next;
- }
- my $ret = read_map_file($alldata->{'maps'}{$m}{'fullpath'});
- if (defined($ret)) {
- for my $font (keys %$ret) {
- if (defined($alldata->{'fonts'}{$font})) {
- # we got another definition, warn on that
- # if the origin is not defined by now, the font is defined
- # multiple times in the same map file, otherwise it is
- # defined in another map file already
- if (defined($alldata->{'fonts'}{$font}{'origin'})) {
- my $fontorig = $alldata->{'fonts'}{$font}{'origin'};
- my $maporig = $alldata->{'maps'}{$fontorig}{'origin'};
- warning("$prg: font $font is defined multiple times:\n");
- warning("$prg: $fontorig (from $maporig)\n");
- warning("$prg: $m (from $f) (used)\n");
- } else {
- warning("$prg: font $font is multiply defined in $m, using an arbitrary instance!\n");
- }
- }
- $alldata->{'fonts'}{$font}{'origin'} = $m;
- $alldata->{'maps'}{$m}{'fonts'}{$font} = $ret->{$font};
- }
- }
- }
- }
- return (@missing);
-}
-
-sub read_map_file {
- my $fn = shift;
- my @lines;
- if (!open(MF,"<$fn")) {
- warn("cannot open $fn: $!");
- return;
- }
- @lines = <MF>;
- close(MF);
- chomp(@lines);
- my %data;
- for (@lines) {
- next if /^\s*#/;
- next if /^\s*%/;
- next if /^\s*$/;
- my ($a, $b) = split(' ', $_, 2);
- $data{$a} = $b;
- }
- return \%data;
-}
-
-#
-# merging the various font definitions
-#
-sub merge_data {
- my @l = @{$alldata->{'order'}};
- #
- # now merge the data
- #
- for my $m (keys %{$alldata->{'maps'}}) {
- my $origin = $alldata->{'maps'}{$m}{'origin'};
- next if !defined($origin);
- next if ($alldata->{'updmap'}{$origin}{'maps'}{$m}{'status'} eq "disabled");
- for my $f (keys %{$alldata->{'maps'}{$m}{'fonts'}}) {
- # use the font definition only for those fonts where the origin matches
- if ($alldata->{'fonts'}{$f}{'origin'} eq $m) {
- $alldata->{'merged'}{'allMaps'}{'fonts'}{$f} =
- $alldata->{'maps'}{$m}{'fonts'}{$f}
- if ($alldata->{'updmap'}{$origin}{'maps'}{$m}{'type'} ne "KanjiMap");
- $alldata->{'merged'}{'noMixedMaps'}{'fonts'}{$f} =
- $alldata->{'maps'}{$m}{'fonts'}{$f}
- if ($alldata->{'updmap'}{$origin}{'maps'}{$m}{'type'} eq "Map");
- $alldata->{'merged'}{'KanjiMap'}{'fonts'}{$f} =
- $alldata->{'maps'}{$m}{'fonts'}{$f}
- if ($alldata->{'updmap'}{$origin}{'maps'}{$m}{'type'} eq "KanjiMap");
- }
- }
- }
-}
-
-
-#
-# $HOME and sudo and updmap-sys horror
-# some instances of sudo do not reset $HOME to the home of root
-# as an effect of "sudo updmap" creates root owned files in the home
-# of a normal user, and "sudo updmap-sys" uses map files and updmap.cfg
-# files from the directory of a normal user, but creating files
-# in TEXMFSYSCONFIG. This is *all* wrong.
-# we check: if we are running as UID 0 (root) on Unix and the
-# ENV{HOME} is NOT the same as the one of root, then give a warning
-# and reset it to the real home dir of root.
-
-sub reset_root_home {
- if (!win32() && ($> == 0)) { # $> is effective uid
- my $envhome = $ENV{'HOME'};
- # if $HOME isn't an existing directory, we don't care.
- if (defined($envhome) && (-d $envhome)) {
- # we want to avoid calling getpwuid as far as possible, so if
- # $envhome is one of some usual values we accept it without worrying.
- if ($envhome =~ m,^(/|/root|/var/root)/*$,) {
- return;
- }
- # $HOME is defined, check what is the home of root in reality
- my (undef,undef,undef,undef,undef,undef,undef,$roothome) = getpwuid(0);
- if (defined($roothome)) {
- if ($envhome ne $roothome) {
- warning("$prg: resetting \$HOME value (was $envhome) to root's "
- . "actual home ($roothome).\n");
- $ENV{'HOME'} = $roothome;
- } else {
- # envhome and roothome do agree, nothing to do, that is the good case
- }
- } else {
- warning("$prg: home of root not defined, strange!\n");
- }
- }
- }
-}
-
-sub warning {
- print STDERR @_;
-}
-
-#
-# help, version etc etc
-#
-
-sub version {
- my $ret = sprintf "%s (TeX Live, multi) version %s\n", $prg, $version;
- return $ret;
-}
-
-sub help {
- my $usage = <<"EOF";
-Usage: $prg [OPTION] ... [COMMAND]
- or: $prg-sys [OPTION] ... [COMMAND]
-
-Update the default font map files used by pdftex, dvips, and dvipdfm(x),
-and optionally pxdvi, as determined by all configuration files updmap.cfg
-(the ones returned by running "kpsewhich --all updmap.cfg", but see below).
-
-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
-font files are included in the PDF or PostScript output.
-
-By default, the TeX filename database (ls-R) is also updated.
-
-Options:
- --cnffile FILE read FILE for the updmap configuration
- (can be given multiple times, in which case
- all the files are used)
- --dvipdfmxoutputdir DIR specify output directory (dvipdfm(x) syntax)
- --dvipsoutputdir DIR specify output directory (dvips syntax)
- --pdftexoutputdir DIR specify output directory (pdftex syntax)
- --pxdvioutputdir DIR specify output directory (pxdvi 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
- --showoption OPTION show the current setting of OPTION
- --showoptions OPTION show possible settings for OPTION
- --setoption OPTION VALUE set OPTION to value; option names below
- --setoption OPTION=VALUE as above, just different syntax
- --enable MAPTYPE MAPFILE add "MAPTYPE MAPFILE" to updmap.cfg,
- where MAPTYPE is Map, MixedMap, or KanjiMap
- --enable Map=MAPFILE add \"Map MAPFILE\" to updmap.cfg
- --enable MixedMap=MAPFILE add \"MixedMap MAPFILE\" to updmap.cfg
- --enable KanjiMap=MAPFILE add \"KanjiMap MAPFILE\" to updmap.cfg
- --disable MAPFILE disable MAPFILE, of whatever type
- --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 devices 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.
-KanjiMap entries are added to psfonts_t1.map and kanjix.map.
-
-Explanation of the OPTION names for --showoptions, --showoption, --setoption:
-
- dvipsPreferOutline true|false (default true)
- Whether dvips uses bitmaps or outlines, when both are available.
- dvipsDownloadBase35 true|false (default true)
- 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.
- pxdviUse true|false (default false)
- Whether maps for pxdvi (Japanese-patched xdvi) are under updmap's control.
- kanjiEmbed (any string)
- kanjiVariant (any string)
- See below.
- 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.
-
- The options kanjiEmbed and kanjiVariant specify special replacements
- in the map lines. If a map contains the string \@kanjiEmbed\@, then
- this will be replaced by the value of that option; similarly for
- kanjiVariant. In this way, users of Japanese TeX can select different
- fonts to be included in the final output.
-
-Explanation of trees and files normally used:
-
- If --cnffile is specified on the command line (possibly multiple
- times), its value(s) are used. Otherwise, updmap reads all the
- updmap.cfg files found by running \`kpsewhich -all updmap.cfg', in the
- order returned by kpsewhich, with one exception: an updmap.cfg found
- in TEXMFLOCAL is given higher priority than the updmap.cfg in
- TEXMFMAIN, to ensure that local adjustments by administrators take
- precedence over what is shipped in TeX Live.
-
- In any case, if multiple updmap.cfg files are found, all the maps
- mentioned in all the updmap.cfg files are merged.
-
- Thus, if updmap.cfg files are present in all trees, and the default
- layout is used as shipped with TeX Live, the following files are
- read, in the given order.
-
- For updmap-sys:
- TEXMFSYSCONFIG \$TEXLIVE/YYYY/texmf-config/web2c/updmap.cfg
- TEXMFSYSVAR \$TEXLIVE/YYYY/texmf-var/web2c/updmap.cfg
- TEXMFLOCAL \$TEXLIVE/texmf-local/web2c/updmap.cfg
- TEXMFMAIN \$TEXLIVE/YYYY/texmf/web2c/updmap.cfg
- TEXMFDIST \$TEXLIVE/YYYY/texmf-dist/web2c/updmap.cfg
-
- For updmap:
- TEXMFCONFIG \$HOME/.texliveYYYY/texmf-config/web2c/updmap.cfg
- TEXMFVAR \$HOME/.texliveYYYY/texmf-var/web2c/updmap.cfg
- TEXMFHOME \$HOME/texmf/web2c/updmap.cfg
- TEXMFSYSCONFIG \$TEXLIVE/YYYY/texmf-config/web2c/updmap.cfg
- TEXMFSYSVAR \$TEXLIVE/YYYY/texmf-var/web2c/updmap.cfg
- TEXMFLOCAL \$TEXLIVE/texmf-local/web2c/updmap.cfg
- TEXMFMAIN \$TEXLIVE/YYYY/texmf/web2c/updmap.cfg
- TEXMFDIST \$TEXLIVE/YYYY/texmf-dist/web2c/updmap.cfg
-
- (where YYYY is the TeX Live release version).
-
- There is another exception to keep upgradability from earlier versions
- of TeX Live: if a file TEXMFLOCAL/web2c/updmap-local.cfg exists
- (formerly used by tlmgr to merge local fonts), then the file
- TEXMFLOCAL/web2c/updmap.cfg is ignored (if it exists) and that
- updmap-local.cfg is used instead. In this case, updmap recognizes the
- previous syntax for disabling map files in updmap-local.cfg (this
- syntax is different from what is used now).
-
- According to the actions, updmap might write to one of the given files
- or create a new updmap.cfg, described further below.
-
- Where changes are saved: if config files are given on the command
- line, then the first one given will be used to save any changes from
- --setoption, --enable or --disable. If the config files are taken
- from kpsewhich output, then the algorithm is more complex:
-
- 1) If \$TEXMFCONFIG/web2c/updmap.cfg or \$TEXMFHOME/web2c/updmap.cfg
- appears in the list of used files, then the one listed first by
- kpsewhich --all (equivalently, the one returned by kpsewhich
- updmap.cfg), is used.
-
- 2) If neither of the above two are present and changes are made, a
- new config file is created in \$TEXMFCONFIG/web2c/updmap.cfg.
-
- Resolving multiple definitions of a font:
- If a font is defined in more than one map file, then the definition
- coming from the first-listed updmap.cfg is used. If a font is
- defined multiple times within the same map file, one is chosen
- arbitrarily. In both cases a warning is issued.
-
- Disabling maps:
- updmap.cfg files with higher priority (listed earlier) can disable
- maps mentioned in lower priority (listed later) updmap.cfg files by
- writing, e.g.,
- \#! Map mapname.map
- or
- \#! MixedMap mapname.map
- in the higher-priority updmap.cfg file.
-
- As an example, suppose you have a copy of MathTime Pro fonts
- and want to disable the Belleek version of the fonts; that is,
- disable the map belleek.map. You can create the file
- \$TEXMFCONFIG/web2c/updmap.cfg with the content
- #! Map belleek.map
- Map mt-plus.map
- Map mt-yy.map
- and call $prg.
-
- 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 of TEXMFCONFIG and TEXMFVAR, respectively. This is the only
- difference between updmap-sys and updmap.
-
- Other locations may be used if you give them 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 source).
-
-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;
-}
-
-### Local Variables:
-### perl-indent-level: 2
-### tab-width: 2
-### indent-tabs-mode: nil
-### End:
-# vim:set tabstop=2 expandtab: #