summaryrefslogtreecommitdiff
path: root/Build/source/texk
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk')
-rw-r--r--Build/source/texk/README17
-rw-r--r--Build/source/texk/lcdf-typetools/NEWS27
-rw-r--r--Build/source/texk/lcdf-typetools/README2
-rw-r--r--Build/source/texk/lcdf-typetools/cfftot1/Makefile.in10
-rw-r--r--Build/source/texk/lcdf-typetools/cfftot1/cfftot1.12
-rwxr-xr-xBuild/source/texk/lcdf-typetools/configure22
-rw-r--r--Build/source/texk/lcdf-typetools/configure.ac2
-rw-r--r--Build/source/texk/lcdf-typetools/include/efont/t1csgen.hh3
-rw-r--r--Build/source/texk/lcdf-typetools/lcdf-typetools.spec2
-rw-r--r--Build/source/texk/lcdf-typetools/libefont/otf.cc59
-rw-r--r--Build/source/texk/lcdf-typetools/libefont/otfcmap.cc16
-rw-r--r--Build/source/texk/lcdf-typetools/libefont/otfdescrip.cc8
-rw-r--r--Build/source/texk/lcdf-typetools/libefont/t1csgen.cc114
-rw-r--r--Build/source/texk/lcdf-typetools/libefont/t1font.cc13
-rw-r--r--Build/source/texk/lcdf-typetools/libefont/t1interp.cc2
-rw-r--r--Build/source/texk/lcdf-typetools/libefont/t1rw.cc9
-rw-r--r--Build/source/texk/lcdf-typetools/liblcdf/error.cc3
-rw-r--r--Build/source/texk/lcdf-typetools/mmafm/Makefile.in10
-rw-r--r--Build/source/texk/lcdf-typetools/mmafm/mmafm.129
-rw-r--r--Build/source/texk/lcdf-typetools/mmpfb/Makefile.in10
-rw-r--r--Build/source/texk/lcdf-typetools/mmpfb/mmpfb.133
-rw-r--r--Build/source/texk/lcdf-typetools/mmpfb/t1rewrit.cc14
-rw-r--r--Build/source/texk/lcdf-typetools/otfinfo/Makefile.in10
-rw-r--r--Build/source/texk/lcdf-typetools/otfinfo/otfinfo.12
-rw-r--r--Build/source/texk/lcdf-typetools/otftotfm/Makefile.in10
-rw-r--r--Build/source/texk/lcdf-typetools/otftotfm/automatic.cc12
-rw-r--r--Build/source/texk/lcdf-typetools/otftotfm/otftotfm.112
-rw-r--r--Build/source/texk/lcdf-typetools/otftotfm/otftotfm.cc14
-rw-r--r--Build/source/texk/lcdf-typetools/otftotfm/util.cc2
-rw-r--r--Build/source/texk/lcdf-typetools/otftotfm/util.hh5
-rw-r--r--Build/source/texk/lcdf-typetools/t1dotlessj/Makefile.in10
-rw-r--r--Build/source/texk/lcdf-typetools/t1dotlessj/t1dotlessj.12
-rw-r--r--Build/source/texk/lcdf-typetools/t1lint/Makefile.in10
-rw-r--r--Build/source/texk/lcdf-typetools/t1lint/cscheck.cc140
-rw-r--r--Build/source/texk/lcdf-typetools/t1lint/cscheck.hh84
-rw-r--r--Build/source/texk/lcdf-typetools/t1lint/t1lint.12
-rw-r--r--Build/source/texk/lcdf-typetools/t1lint/t1lint.cc28
-rw-r--r--Build/source/texk/lcdf-typetools/t1rawafm/Makefile.in10
-rw-r--r--Build/source/texk/lcdf-typetools/t1reencode/Makefile.in10
-rw-r--r--Build/source/texk/lcdf-typetools/t1reencode/t1reencode.12
-rw-r--r--Build/source/texk/lcdf-typetools/t1testpage/Makefile.in10
-rw-r--r--Build/source/texk/lcdf-typetools/t1testpage/t1testpage.12
-rw-r--r--Build/source/texk/lcdf-typetools/ttftotype42/Makefile.in10
-rw-r--r--Build/source/texk/lcdf-typetools/ttftotype42/ttftotype42.12
44 files changed, 535 insertions, 261 deletions
diff --git a/Build/source/texk/README b/Build/source/texk/README
index 4623878de4b..3c0638647f5 100644
--- a/Build/source/texk/README
+++ b/Build/source/texk/README
@@ -46,18 +46,20 @@ dvidvi - ?
dviljk - maintained here, by Joachim Schrod
-dvipdfm 0.13.2d - ok 12apr09
+dvipdfm - ok 12apr09
http://gaspra.kettering.edu/dvipdfm/dvipdfm-0.13.2d.tar.gz
ftp://ftp.kettering.edu/pub/outgoing/mwicks/dvipdfm/dvipdfm-0.13.2d.tar.gz
(until dvipdfmx is a 100% replacement we cannot drop it.)
-dvipdfmx 20080607 - ok 12apr09
+dvipdfmx - ok 12apr09
http://project.ktug.or.kr/dvipdfmx/snapshot/latest/
http://project.ktug.or.kr/dvipdfmx/snapshot/latest/dvipdfmx-20090115.tar.gz
dvipdfmx@project.ktug.or.kr (ChoF, Hirata, Matthias)
-dvipng 1.11 - ok 15may08
- http://www.ctan.org/tex-archive/dviware/dvipng/
+dvipng - ok 12apr09
+ http://www.ctan.org/tex-archive/dviware/dvipng/ (but maybe stale)
+ http://savannah.nongnu.org/files/?group=dvipng
+ http://mirror.cinquix.com/pub/savannah/dvipng/dvipng-1.12.tar.gz
dvipos - ?
@@ -71,8 +73,9 @@ kpathsea - maintained here by Karl Berry, Akira Kakuto, ...
lacheck - ?
-lcdf-typetools - needs update
- http://www.lcdf.org/type/lcdf-typetools-2.75.tar.gz
+lcdf-typetools - ok 13apr09
+ http://www.lcdf.org/type/
+ http://www.lcdf.org/type/lcdf-typetools-2.78.tar.gz
m4 - maintained here, part of our build
@@ -102,7 +105,7 @@ web2c - maintained here by Karl Berry et al. - core web2c, plain tex, omega.
xdv2pdf - Jonathan Kew
-xdvik 22.84.14 - ok 01jul08
+xdvik 22.84.15 - ok 13apr09
ftp://tug.org/tex/
xdvipdfmx - Jonathan Kew
diff --git a/Build/source/texk/lcdf-typetools/NEWS b/Build/source/texk/lcdf-typetools/NEWS
index dc44ed85093..487a38baaa3 100644
--- a/Build/source/texk/lcdf-typetools/NEWS
+++ b/Build/source/texk/lcdf-typetools/NEWS
@@ -5,6 +5,33 @@ Version 2.76-rc1 2.Mar.2009
* Adapt to new TeX Live build scheme.
+Version 2.78 6.Apr.2009
+
+* t1lint: Report warnings when a font charstring command has too many
+ arguments. Requested by Han The Thanh.
+
+
+Version 2.77 6.Apr.2009
+
+* Font library changes: correctly implement binary search in a couple
+ places -- unexpected sizes could lead to overflow and bad behavior.
+ Reported by Mark DeVries for ttftotype42 and CharisSILR.
+
+
+Version 2.76 27.Mar.2009
+
+* mmpfb: Ensure all output subroutines end in the "return" command; some
+ type 1 processors treat a subroutine ending in "endchar" as an error.
+ Reported by Melissa O'Neill.
+
+* mmpfb, cfftot1: Ensure that stem3 hints (hstem3, vstem3) meet the
+ necessary constraints, even despite rounding.
+
+* t1lint: Add checks for some more problems, such as subroutines that do
+ not end in "return." Reported/requested by Melissa O'Neill and Han The
+ Thanh.
+
+
Version 2.75 22.Feb.2009
* Report a helpful warning if automatic mode is specified to a version
diff --git a/Build/source/texk/lcdf-typetools/README b/Build/source/texk/lcdf-typetools/README
index a6b0cddf58c..3a4b457fadb 100644
--- a/Build/source/texk/lcdf-typetools/README
+++ b/Build/source/texk/lcdf-typetools/README
@@ -1,4 +1,4 @@
-LCDF-TYPETOOLS 2.75
+LCDF-TYPETOOLS 2.78
===================
USAGE
diff --git a/Build/source/texk/lcdf-typetools/cfftot1/Makefile.in b/Build/source/texk/lcdf-typetools/cfftot1/Makefile.in
index 884469acc82..1b54226cd10 100644
--- a/Build/source/texk/lcdf-typetools/cfftot1/Makefile.in
+++ b/Build/source/texk/lcdf-typetools/cfftot1/Makefile.in
@@ -317,11 +317,11 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-install-man1: $(man_MANS)
+install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
@@ -343,8 +343,8 @@ install-man1: $(man_MANS)
done
uninstall-man1:
@$(NORMAL_UNINSTALL)
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
diff --git a/Build/source/texk/lcdf-typetools/cfftot1/cfftot1.1 b/Build/source/texk/lcdf-typetools/cfftot1/cfftot1.1
index 0014d867164..376aebf807b 100644
--- a/Build/source/texk/lcdf-typetools/cfftot1/cfftot1.1
+++ b/Build/source/texk/lcdf-typetools/cfftot1/cfftot1.1
@@ -1,4 +1,4 @@
-.ds V 2.75
+.ds V 2.78
.de M
.BR "\\$1" "(\\$2)\\$3"
..
diff --git a/Build/source/texk/lcdf-typetools/configure b/Build/source/texk/lcdf-typetools/configure
index edc1020162d..65b7c526eda 100755
--- a/Build/source/texk/lcdf-typetools/configure
+++ b/Build/source/texk/lcdf-typetools/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for LCDF typetools 2.75.
+# Generated by GNU Autoconf 2.63 for LCDF typetools 2.78.
#
# Report bugs to <tex-k@tug.org>.
#
@@ -745,8 +745,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='LCDF typetools'
PACKAGE_TARNAME='lcdf-typetools'
-PACKAGE_VERSION='2.75'
-PACKAGE_STRING='LCDF typetools 2.75'
+PACKAGE_VERSION='2.78'
+PACKAGE_STRING='LCDF typetools 2.78'
PACKAGE_BUGREPORT='tex-k@tug.org'
ac_unique_file="NEWS"
@@ -1512,7 +1512,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures LCDF typetools 2.75 to adapt to many kinds of systems.
+\`configure' configures LCDF typetools 2.78 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1582,7 +1582,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of LCDF typetools 2.75:";;
+ short | recursive ) echo "Configuration of LCDF typetools 2.78:";;
esac
cat <<\_ACEOF
@@ -1711,7 +1711,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-LCDF typetools configure 2.75
+LCDF typetools configure 2.78
generated by GNU Autoconf 2.63
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1725,7 +1725,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by LCDF typetools $as_me 2.75, which was
+It was created by LCDF typetools $as_me 2.78, which was
generated by GNU Autoconf 2.63. Invocation command line was
$ $0 $@
@@ -6818,7 +6818,7 @@ fi
# Define the identity of the package.
PACKAGE='lcdf-typetools'
- VERSION='2.75'
+ VERSION='2.78'
cat >>confdefs.h <<_ACEOF
@@ -18322,7 +18322,7 @@ Usage: $0 [OPTIONS]
Report bugs to <bug-libtool@gnu.org>."
lt_cl_version="\
-LCDF typetools config.lt 2.75
+LCDF typetools config.lt 2.78
configured by $0, generated by GNU Autoconf 2.63.
Copyright (C) 2008 Free Software Foundation, Inc.
@@ -23447,7 +23447,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by LCDF typetools $as_me 2.75, which was
+This file was extended by LCDF typetools $as_me 2.78, which was
generated by GNU Autoconf 2.63. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -23510,7 +23510,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
-LCDF typetools config.status 2.75
+LCDF typetools config.status 2.78
configured by $0, generated by GNU Autoconf 2.63,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
diff --git a/Build/source/texk/lcdf-typetools/configure.ac b/Build/source/texk/lcdf-typetools/configure.ac
index 39ee636dade..fcd61407b1c 100644
--- a/Build/source/texk/lcdf-typetools/configure.ac
+++ b/Build/source/texk/lcdf-typetools/configure.ac
@@ -1,6 +1,6 @@
dnl Process this file with autoconf to produce a configure script.
dnl Adapted for TeX Live.
-AC_INIT([LCDF typetools], [2.75], [tex-k@tug.org])
+AC_INIT([LCDF typetools], [2.78], [tex-k@tug.org])
AC_PREREQ([2.63])
AC_CONFIG_SRCDIR([NEWS])
AC_CONFIG_AUX_DIR([../../build-aux])
diff --git a/Build/source/texk/lcdf-typetools/include/efont/t1csgen.hh b/Build/source/texk/lcdf-typetools/include/efont/t1csgen.hh
index 07d236f36eb..226497a4a6b 100644
--- a/Build/source/texk/lcdf-typetools/include/efont/t1csgen.hh
+++ b/Build/source/texk/lcdf-typetools/include/efont/t1csgen.hh
@@ -44,6 +44,9 @@ class Type1CharstringGen { public:
enum State { S_INITIAL, S_GEN };
State _state;
+ void gen_rational(int big_val, int divisor);
+ bool gen_stem3_stack(CharstringInterp &interp);
+
};
class Type1CharstringGenInterp : public CharstringInterp { public:
diff --git a/Build/source/texk/lcdf-typetools/lcdf-typetools.spec b/Build/source/texk/lcdf-typetools/lcdf-typetools.spec
index 10362490750..e2342b2451f 100644
--- a/Build/source/texk/lcdf-typetools/lcdf-typetools.spec
+++ b/Build/source/texk/lcdf-typetools/lcdf-typetools.spec
@@ -1,6 +1,6 @@
Summary: Programs to manipulate OpenType and multiple-master fonts
Name: lcdf-typetools
-Version: 2.75
+Version: 2.78
Copyright: GPL
Vendor: Little Cambridgeport Design Factory <http://www.lcdf.org/>
Group: Utilities/Printing
diff --git a/Build/source/texk/lcdf-typetools/libefont/otf.cc b/Build/source/texk/lcdf-typetools/libefont/otf.cc
index c62d7ebf5e4..e7dede80891 100644
--- a/Build/source/texk/lcdf-typetools/libefont/otf.cc
+++ b/Build/source/texk/lcdf-typetools/libefont/otf.cc
@@ -336,14 +336,13 @@ const uint8_t *
Tag::table_entry(const uint8_t *table, int n, int entry_size) const
{
assert(((uintptr_t)table & 1) == 0);
- int l = 0;
- int r = n - 1;
- while (l <= r) {
- int m = (l + r) / 2;
+ int l = 0, r = n;
+ while (l < r) {
+ int m = l + (r - l) / 2;
const uint8_t *entry = table + m * entry_size;
uint32_t m_tag = ULONG_AT2(entry);
if (_tag < m_tag)
- r = m - 1;
+ r = m;
else if (_tag == m_tag)
return entry;
else
@@ -838,13 +837,13 @@ Coverage::coverage_index(Glyph g) const throw ()
const uint8_t *data = _str.udata();
int count = USHORT_AT(data + 2);
if (data[1] == T_LIST) {
- int l = 0, r = count - 1;
+ int l = 0, r = count;
data += HEADERSIZE;
- while (l <= r) {
- int m = (l + r) >> 1;
+ while (l < r) {
+ int m = l + (r - l) / 2;
int mval = USHORT_AT(data + m * LIST_RECSIZE);
if (g < mval)
- r = m - 1;
+ r = m;
else if (g == mval)
return m;
else
@@ -852,13 +851,13 @@ Coverage::coverage_index(Glyph g) const throw ()
}
return -1;
} else if (data[1] == T_RANGES) {
- int l = 0, r = count - 1;
+ int l = 0, r = count;
data += HEADERSIZE;
- while (l <= r) {
- int m = (l + r) >> 1;
+ while (l < r) {
+ int m = l + (r - l) / 2;
const uint8_t *rec = data + m * RANGES_RECSIZE;
if (g < USHORT_AT(rec))
- r = m - 1;
+ r = m;
else if (g <= USHORT_AT(rec + 2))
return USHORT_AT(rec + 4) + g - USHORT_AT(rec);
else
@@ -880,14 +879,14 @@ Coverage::operator[](int cindex) const throw ()
if (data[1] == T_LIST)
return (cindex < count ? USHORT_AT(data + cindex * LIST_RECSIZE) : 0);
else if (data[1] == T_RANGES) {
- int l = 0, r = count - 1;
+ int l = 0, r = count;
data += HEADERSIZE;
- while (l <= r) {
- int m = (l + r) >> 1;
+ while (l < r) {
+ int m = l + (r - l) / 2;
const uint8_t *rec = data + m * RANGES_RECSIZE;
int start_cindex = USHORT_AT(rec + 4);
if (cindex < start_cindex)
- r = m - 1;
+ r = m;
else if (cindex < start_cindex + USHORT_AT(rec + 2) - USHORT_AT(rec))
return USHORT_AT(rec) + cindex - start_cindex;
else
@@ -1045,15 +1044,15 @@ Coverage::iterator::forward_to(Glyph find)
// otherwise, binary search over remaining area
int l = ((_pos - HEADERSIZE) / LIST_RECSIZE) + 1;
- int r = (_str.length() - HEADERSIZE) / LIST_RECSIZE - 1;
+ int r = (_str.length() - HEADERSIZE) / LIST_RECSIZE;
data += HEADERSIZE;
- while (l <= r) {
- int m = (l + r) >> 1;
+ while (l < r) {
+ int m = l + (r - l) / 2;
Glyph g = USHORT_AT(data + m * LIST_RECSIZE);
if (find < g)
- r = m - 1;
+ r = m;
else if (find == g)
- l = m, r = m - 1;
+ l = r = m;
else
l = m + 1;
}
@@ -1076,12 +1075,12 @@ Coverage::iterator::forward_to(Glyph find)
// otherwise, binary search over remaining area
int l = ((_pos - HEADERSIZE) / RANGES_RECSIZE) + 1;
- int r = (_str.length() - HEADERSIZE) / RANGES_RECSIZE - 1;
+ int r = (_str.length() - HEADERSIZE) / RANGES_RECSIZE;
data += HEADERSIZE;
- while (l <= r) {
- int m = (l + r) >> 1;
+ while (l < r) {
+ int m = l + (r - l) / 2;
if (find < USHORT_AT(data + m * RANGES_RECSIZE))
- r = m - 1;
+ r = m;
else if (find <= USHORT_AT(data + m * RANGES_RECSIZE + 2)) {
_pos = HEADERSIZE + m * RANGES_RECSIZE;
_value = find;
@@ -1218,13 +1217,13 @@ ClassDef::lookup(Glyph g) const throw ()
else
return USHORT_AT(data + LIST_HEADERSIZE + (g - start) * LIST_RECSIZE);
} else if (coverageFormat == T_RANGES) {
- int l = 0, r = USHORT_AT(data + 2) - 1;
+ int l = 0, r = USHORT_AT(data + 2);
data += RANGES_HEADERSIZE;
- while (l <= r) {
- int m = (l + r) >> 1;
+ while (l < r) {
+ int m = l + (r - l) / 2;
const uint8_t *rec = data + m * RANGES_RECSIZE;
if (g < USHORT_AT(rec))
- r = m - 1;
+ r = m;
else if (g <= USHORT_AT(rec + 2))
return USHORT_AT(rec + 4);
else
diff --git a/Build/source/texk/lcdf-typetools/libefont/otfcmap.cc b/Build/source/texk/lcdf-typetools/libefont/otfcmap.cc
index f0d03e22923..2bda5c816b5 100644
--- a/Build/source/texk/lcdf-typetools/libefont/otfcmap.cc
+++ b/Build/source/texk/lcdf-typetools/libefont/otfcmap.cc
@@ -294,13 +294,13 @@ Cmap::map_table(int t, uint32_t uni, ErrorHandler *errh) const
const uint8_t *startCounts = endCounts + (segCount << 1) + 2;
const uint8_t *idDeltas = startCounts + (segCount << 1);
const uint8_t *idRangeOffsets = idDeltas + (segCount << 1);
- int l = 0, r = segCount - 1;
- while (l <= r) {
- int m = (l + r) / 2;
+ int l = 0, r = segCount;
+ while (l < r) {
+ int m = l + (r - l) / 2;
uint32_t endCount = USHORT_AT(endCounts + (m << 1));
uint32_t startCount = USHORT_AT(startCounts + (m << 1));
if (uni < startCount)
- r = m - 1;
+ r = m;
else if (uni <= endCount) {
int idDelta = SHORT_AT(idDeltas + (m << 1));
int idRangeOffset = USHORT_AT(idRangeOffsets + (m << 1));
@@ -326,14 +326,14 @@ Cmap::map_table(int t, uint32_t uni, ErrorHandler *errh) const
case F_SEGMENTED32: {
uint32_t nGroups = ULONG_AT(data + 12);
- uint32_t l = 0, r = nGroups - 1;
+ uint32_t l = 0, r = nGroups;
const uint8_t *groups = data + 16;
- while (l <= r) {
- uint32_t m = (l + r) / 2;
+ while (l < r) {
+ uint32_t m = l + (r - l) / 2;
uint32_t startCharCode = ULONG_AT(groups + m * 12);
uint32_t endCharCode = ULONG_AT(groups + m * 12 + 4);
if (uni < startCharCode)
- r = m - 1;
+ r = m;
else if (uni <= endCharCode)
return ULONG_AT(groups + m * 12 + 8) + uni - startCharCode;
else
diff --git a/Build/source/texk/lcdf-typetools/libefont/otfdescrip.cc b/Build/source/texk/lcdf-typetools/libefont/otfdescrip.cc
index f89ca1ab0e9..14719db2d36 100644
--- a/Build/source/texk/lcdf-typetools/libefont/otfdescrip.cc
+++ b/Build/source/texk/lcdf-typetools/libefont/otfdescrip.cc
@@ -577,15 +577,15 @@ static const char *
find_description(uint32_t tag, const Mapping *maps, int n)
{
// should use STL...
- int l = 0, r = n - 1;
- while (l <= r) {
- int m = (l + r) / 2;
+ int l = 0, r = n;
+ while (l < r) {
+ int m = l + (r - l) / 2;
if (maps[m].tag < tag)
l = m + 1;
else if (maps[m].tag == tag)
return maps[m].description;
else
- r = m - 1;
+ r = m;
}
return 0;
}
diff --git a/Build/source/texk/lcdf-typetools/libefont/t1csgen.cc b/Build/source/texk/lcdf-typetools/libefont/t1csgen.cc
index debb587955f..dc75228e4ca 100644
--- a/Build/source/texk/lcdf-typetools/libefont/t1csgen.cc
+++ b/Build/source/texk/lcdf-typetools/libefont/t1csgen.cc
@@ -65,30 +65,10 @@ Type1CharstringGen::clear()
void
-Type1CharstringGen::gen_number(double float_val, int kind)
+Type1CharstringGen::gen_rational(int big_val, int divisor)
{
- switch (kind) {
- case 'x':
- _true.x += float_val;
- float_val = _true.x - _false.x;
- break;
- case 'y':
- _true.y += float_val;
- float_val = _true.y - _false.y;
- break;
- case 'X':
- _true.x = float_val;
- break;
- case 'Y':
- _true.y = float_val;
- break;
- }
-
- // 30.Jul.2003 - Avoid rounding differences between platforms with the
- // extra 0.00001.
- int big_val = (int)floor(float_val * _f_precision + 0.50001);
- int frac = big_val % _precision;
- int val = (frac == 0 ? big_val / _precision : big_val);
+ int frac = big_val % divisor;
+ int val = (frac == 0 ? big_val / divisor : big_val);
if (val >= -107 && val <= 107)
_ncs.append((char)(val + 139));
@@ -112,10 +92,37 @@ Type1CharstringGen::gen_number(double float_val, int kind)
}
if (frac != 0) {
- _ncs.append((char)(_precision + 139));
+ _ncs.append((char)(divisor + 139));
_ncs.append((char)Charstring::cEscape);
_ncs.append((char)(Charstring::cDiv - Charstring::cEscapeDelta));
}
+}
+
+void
+Type1CharstringGen::gen_number(double float_val, int kind)
+{
+ switch (kind) {
+ case 'x':
+ _true.x += float_val;
+ float_val = _true.x - _false.x;
+ break;
+ case 'y':
+ _true.y += float_val;
+ float_val = _true.y - _false.y;
+ break;
+ case 'X':
+ _true.x = float_val;
+ break;
+ case 'Y':
+ _true.y = float_val;
+ break;
+ }
+
+ // 30.Jul.2003 - Avoid rounding differences between platforms with the
+ // extra 0.00001.
+ int big_val = (int)floor(float_val * _f_precision + 0.50001);
+
+ gen_rational(big_val, _precision);
float_val = big_val / _f_precision;
switch (kind) {
@@ -150,10 +157,69 @@ Type1CharstringGen::gen_command(int command)
}
}
+bool
+Type1CharstringGen::gen_stem3_stack(CharstringInterp &interp)
+{
+ // special handling to ensure rounding doesn't generate an invalid stem3
+ // hint
+ if (interp.size() < 6)
+ return false;
+
+ // sort hints
+ int i0, i1, i2;
+ if (interp.at(0) > interp.at(2))
+ i0 = 2, i1 = 0;
+ else
+ i0 = 0, i1 = 2;
+ if (interp.at(4) < interp.at(i0))
+ i2 = i1, i1 = i0, i0 = 4;
+ else if (interp.at(4) < interp.at(i1))
+ i2 = i1, i1 = 4;
+ else
+ i2 = 4;
+
+ // check constraints. count "almost equal" as equal
+ double stemw0 = interp.at(i0+1), stemw2 = interp.at(i2+1);
+ if ((int)(1024*(stemw0 - stemw2) + .5) != 0)
+ return false;
+
+ double c0 = interp.at(i0) + interp.at(i0+1)/2;
+ double c1 = interp.at(i1) + interp.at(i1+1)/2;
+ double c2 = interp.at(i2) + interp.at(i2+1)/2;
+ if ((int)(1024*((c1 - c0) - (c2 - c1)) + .5) != 0)
+ return false;
+
+ // if all constraints are satisfied now, make sure they are also satisfied
+ // after rounding
+ int big_v0 = (int)floor(interp.at(i0) * _f_precision + 0.50001);
+ int big_v2 = (int)floor(interp.at(i2) * _f_precision + 0.50001);
+ int big_stemw0 = (int)floor(stemw0 * _f_precision + 0.50001);
+ int big_stemw1 = (int)floor(interp.at(i1+1) * _f_precision + 0.50001);
+
+ int big_v1_times2 = big_v0 + big_v2 + big_stemw0 - big_stemw1;
+
+ gen_rational(big_v0, _precision);
+ gen_rational(big_stemw0, _precision);
+ if (big_v1_times2 % 2)
+ gen_rational(big_v1_times2, 2 * _precision);
+ else
+ gen_rational(big_v1_times2 / 2, _precision);
+ gen_rational(big_stemw1, _precision);
+ gen_rational(big_v2, _precision);
+ gen_rational(big_stemw0, _precision);
+
+ interp.clear();
+ return true;
+}
+
void
Type1CharstringGen::gen_stack(CharstringInterp &interp, int for_cmd)
{
const char *str = ((unsigned)for_cmd <= Charstring::cLastCommand ? command_desc[for_cmd] : (const char *)0);
+ if ((for_cmd == Charstring::cHstem3 || for_cmd == Charstring::cVstem3)
+ && gen_stem3_stack(interp))
+ return;
+
int i;
for (i = 0; str && *str && i < interp.size(); i++, str++)
gen_number(interp.at(i), *str);
diff --git a/Build/source/texk/lcdf-typetools/libefont/t1font.cc b/Build/source/texk/lcdf-typetools/libefont/t1font.cc
index 573c7823ae5..2607718dddb 100644
--- a/Build/source/texk/lcdf-typetools/libefont/t1font.cc
+++ b/Build/source/texk/lcdf-typetools/libefont/t1font.cc
@@ -2,7 +2,7 @@
/* t1font.{cc,hh} -- Type 1 font
*
- * Copyright (c) 1998-2008 Eddie Kohler
+ * Copyright (c) 1998-2009 Eddie Kohler
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
@@ -109,8 +109,13 @@ Type1Font::add_type1_encoding(Type1Encoding *e)
void
Type1Font::add_glyph(Type1Subr *s)
{
- _glyphs.push_back(s);
- _glyph_map.insert(s->name(), _glyphs.size() - 1);
+ int &g = _glyph_map.find_force(s->name(), _glyphs.size());
+ if (g == _glyphs.size())
+ _glyphs.push_back(s);
+ else {
+ delete _glyphs[g];
+ _glyphs[g] = s;
+ }
}
int
@@ -140,6 +145,8 @@ Type1Font::read(Type1Reader &reader)
if (fcs->is_subr()) {
if (fcs->subrno() >= _subrs.size())
_subrs.resize(fcs->subrno() + 30, (Type1Subr *)0);
+ if (_subrs[fcs->subrno()]) // hybrid font program
+ delete _subrs[fcs->subrno()];
_subrs[fcs->subrno()] = fcs;
if (!have_subrs && _items.size()) {
if (Type1CopyItem *item = _items.back()->cast_copy()) {
diff --git a/Build/source/texk/lcdf-typetools/libefont/t1interp.cc b/Build/source/texk/lcdf-typetools/libefont/t1interp.cc
index 4d42f731d26..c9b6995ae1f 100644
--- a/Build/source/texk/lcdf-typetools/libefont/t1interp.cc
+++ b/Build/source/texk/lcdf-typetools/libefont/t1interp.cc
@@ -2,7 +2,7 @@
/* t1interp.{cc,hh} -- Type 1/2 charstring interpretation
*
- * Copyright (c) 1998-2006 Eddie Kohler
+ * Copyright (c) 1998-2009 Eddie Kohler
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
diff --git a/Build/source/texk/lcdf-typetools/libefont/t1rw.cc b/Build/source/texk/lcdf-typetools/libefont/t1rw.cc
index e39ff1473f4..d0024d66755 100644
--- a/Build/source/texk/lcdf-typetools/libefont/t1rw.cc
+++ b/Build/source/texk/lcdf-typetools/libefont/t1rw.cc
@@ -554,8 +554,10 @@ Type1PFAWriter::print0(const unsigned char *c, int l)
_hex_line = 0;
}
}
- } else
- fwrite(c, 1, l, _f);
+ } else {
+ ssize_t result = fwrite(c, 1, l, _f);
+ (void) result;
+ }
}
@@ -587,7 +589,8 @@ Type1PFBWriter::flush()
fputc((l >> 8) & 0xFF, _f);
fputc((l >> 16) & 0xFF, _f);
fputc((l >> 24) & 0xFF, _f);
- fwrite(_save.data(), 1, _save.length(), _f);
+ ssize_t result = fwrite(_save.data(), 1, _save.length(), _f);
+ (void) result;
_save.clear();
}
}
diff --git a/Build/source/texk/lcdf-typetools/liblcdf/error.cc b/Build/source/texk/lcdf-typetools/liblcdf/error.cc
index dea40b63fd6..236fba4833c 100644
--- a/Build/source/texk/lcdf-typetools/liblcdf/error.cc
+++ b/Build/source/texk/lcdf-typetools/liblcdf/error.cc
@@ -939,7 +939,8 @@ FileErrorHandler::emit(const String &str, void *, bool)
StringAccum sa;
sa << _context << clean_landmark(landmark, true)
<< str.substring(s, str.end()) << '\n';
- (void) fwrite(sa.begin(), 1, sa.length(), _f);
+ ssize_t result = fwrite(sa.begin(), 1, sa.length(), _f);
+ (void) result;
return 0;
}
diff --git a/Build/source/texk/lcdf-typetools/mmafm/Makefile.in b/Build/source/texk/lcdf-typetools/mmafm/Makefile.in
index b880ec5d105..b325971fc9b 100644
--- a/Build/source/texk/lcdf-typetools/mmafm/Makefile.in
+++ b/Build/source/texk/lcdf-typetools/mmafm/Makefile.in
@@ -305,11 +305,11 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-install-man1: $(man_MANS)
+install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
@@ -331,8 +331,8 @@ install-man1: $(man_MANS)
done
uninstall-man1:
@$(NORMAL_UNINSTALL)
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
diff --git a/Build/source/texk/lcdf-typetools/mmafm/mmafm.1 b/Build/source/texk/lcdf-typetools/mmafm/mmafm.1
index 2b0bb91d828..572d8ddad0e 100644
--- a/Build/source/texk/lcdf-typetools/mmafm/mmafm.1
+++ b/Build/source/texk/lcdf-typetools/mmafm/mmafm.1
@@ -1,20 +1,17 @@
.\" -*-nroff-*-
-.ds V 2.75
+.ds V 2.78
.de M
.BR "\\$1" "(\\$2)\\$3"
..
.ds E " \-\-
.if t .ds E \(em
-.de OP
+.de Op
.BR "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
..
-.de OA
-.IR "\fB\\$1\& \|\fI\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
-..
-.de OY
+.de Oy
.BI "\\$1\fR=" "\\$2\fR, " "\\$3\& " "\\$4" "\\$5" "\\$6"
..
-.de OL
+.de Ol
.BI "\\$1\fR=" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
..
.de Sp
@@ -104,28 +101,28 @@ for more information.
Long options may be abbreviated to their unique prefixes.
'
.TP 5
-.OY \-\-output file \-o file
+.Oy \-\-output file \-o file
Send output to
.I file
instead of standard output.
'
.TP
-.OY \-\-weight N \-w N
+.Oy \-\-weight N \-w N
Set the weight axis to
.IR N .
'
.TP
-.OY \-\-width N \-W N
+.Oy \-\-width N \-W N
Set the width axis to
.IR N .
'
.TP
-.OY \-\-optical\-size N \-O N
+.Oy \-\-optical\-size N \-O N
Set the optical size axis to
.IR N .
'
.TP
-.OL \-\-style N
+.Ol \-\-style N
Set the style axis to
.IR N .
.TP
@@ -134,14 +131,14 @@ Set the first (second, third, fourth) axis to
.IR N .
'
.TP
-.OY \-\-precision N \-p N
+.Oy \-\-precision N \-p N
Round output numbers so they have at most
.I N
digits after the decimal point. Smaller numbers are less precise; `\fB\-p
\fR0' rounds all numbers to integers. The default precision is 3.
'
.TP
-.OY \-\-min\-kern N \-k N
+.Oy \-\-min\-kern N \-k N
Only output kerning pairs whose absolute value is
.IR N
or larger. Smaller minimum kerns make kerning more precise and the output
@@ -155,7 +152,7 @@ can choke on AFM files that include fractional numbers. Therefore, if you
have trouble with an AFM file, try rerunning
.B mmafm
with the
-.OP \-\-precision=0
+.Op \-\-precision=0
option.
'
.SH SEE ALSO
@@ -177,5 +174,5 @@ http://www.lcdf.org/type/
AMFM and AFM files for Adobe Type Library fonts are also available at that
URL.
.PP
-Thanks to Melissa O'Neill <oneill@cs.sfu.ca> for suggestions and patient
+Thanks to Melissa O'Neill for suggestions and patient
debugging.
diff --git a/Build/source/texk/lcdf-typetools/mmpfb/Makefile.in b/Build/source/texk/lcdf-typetools/mmpfb/Makefile.in
index 75f627113b5..09566644b98 100644
--- a/Build/source/texk/lcdf-typetools/mmpfb/Makefile.in
+++ b/Build/source/texk/lcdf-typetools/mmpfb/Makefile.in
@@ -322,11 +322,11 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-install-man1: $(man_MANS)
+install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
@@ -348,8 +348,8 @@ install-man1: $(man_MANS)
done
uninstall-man1:
@$(NORMAL_UNINSTALL)
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
diff --git a/Build/source/texk/lcdf-typetools/mmpfb/mmpfb.1 b/Build/source/texk/lcdf-typetools/mmpfb/mmpfb.1
index e75e96160ca..c2cada0bee8 100644
--- a/Build/source/texk/lcdf-typetools/mmpfb/mmpfb.1
+++ b/Build/source/texk/lcdf-typetools/mmpfb/mmpfb.1
@@ -1,20 +1,17 @@
.\" -*-nroff-*-
-.ds V 2.75
+.ds V 2.78
.de M
.BR "\\$1" "(\\$2)\\$3"
..
.ds E " \-\-
.if t .ds E \(em
-.de OP
+.de Op
.BR "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
..
-.de OA
-.IR "\fB\\$1\& \|\fI\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
-..
-.de OY
+.de Oy
.BI "\\$1\fR=" "\\$2\fR, " "\\$3\& " "\\$4" "\\$5" "\\$6"
..
-.de OL
+.de Ol
.BI "\\$1\fR=" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
..
.de Sp
@@ -79,7 +76,7 @@ files must be set up for this to work.
Long options may be abbreviated to their unique prefixes.
'
.TP 5
-.OY \-\-output file \-o file
+.Oy \-\-output file \-o file
'
Send output to
.I file
@@ -96,7 +93,7 @@ Output a PFB font. This is the default.
Output a PFA font.
'
.TP
-.OP \-\-amcp\-info
+.Op \-\-amcp\-info
'
Do not create a font; instead, output an AMCP file for use by
.M mmafm 1 .
@@ -104,25 +101,25 @@ A message is printed if the font doesn't have intermediate masters, in
which case no AMCP file is necessary.
'
.TP
-.OY \-\-weight N \-w N
+.Oy \-\-weight N \-w N
'
Set the weight axis to
.IR N .
'
.TP
-.OY \-\-width N \-W N
+.Oy \-\-width N \-W N
'
Set the width axis to
.IR N .
'
.TP
-.OY \-\-optical\-size N \-O N
+.Oy \-\-optical\-size N \-O N
'
Set the optical size axis to
.IR N .
'
.TP
-.OL \-\-style N
+.Ol \-\-style N
'
Set the style axis to
.IR N .
@@ -133,7 +130,7 @@ Set the first (second, third, fourth) axis to
.IR N .
'
.TP
-.OY \-\-precision N \-p N
+.Oy \-\-precision N \-p N
'
Set the output precision to
.IR N .
@@ -147,7 +144,7 @@ font units of the exact interpolated value. (A font unit is generally
1/7200 inch for a 10-point font.) The default is 5.
'
.TP
-.OL \-\-subrs N
+.Ol \-\-subrs N
'
Limit the output font to at most
.IR N
@@ -182,7 +179,7 @@ accept. (Multiple master fonts, and the single-master fonts generated by
.BR mmpfb ,
tend to have a lot of subroutines.) Try limiting the number of subroutines
in the generated font with the
-.OP \-\-subrs
+.Op \-\-subrs
option.
'
.SH SEE ALSO
@@ -193,7 +190,7 @@ option.
reducing \fIfont\fR to minimum number of subroutines (\fIN\fR)
You tried to reduce the number of subroutines to less than \fIN\fR using
the
-.OP \-\-subrs
+.Op \-\-subrs
option, but the font needs at least \fIN\fR to function. The output font
will have \fIN\fR subroutines.
'
@@ -205,5 +202,5 @@ The latest version is available from:
.br
http://www.lcdf.org/type/
.PP
-Thanks to Melissa O'Neill <oneill@cs.sfu.ca> for suggestions and patient
+Thanks to Melissa O'Neill for suggestions and patient
debugging.
diff --git a/Build/source/texk/lcdf-typetools/mmpfb/t1rewrit.cc b/Build/source/texk/lcdf-typetools/mmpfb/t1rewrit.cc
index a6e96242428..e1216c69c1f 100644
--- a/Build/source/texk/lcdf-typetools/mmpfb/t1rewrit.cc
+++ b/Build/source/texk/lcdf-typetools/mmpfb/t1rewrit.cc
@@ -1,6 +1,6 @@
/* t1rewrit.cc -- routines for multiple- to single-master charstring conversion
*
- * Copyright (c) 1997-2006 Eddie Kohler
+ * Copyright (c) 1997-2009 Eddie Kohler
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
@@ -513,12 +513,13 @@ class Type1BadCallRemover: public CharstringInterp { public:
bool type1_command(int);
- bool run(Type1Charstring &);
+ bool run(Type1Charstring &, bool is_subr);
private:
Type1CharstringGen _gen;
Type1MMRemover *_remover;
+ bool _is_subr;
};
@@ -548,14 +549,15 @@ Type1BadCallRemover::type1_command(int cmd)
default:
_gen.gen_stack(*this, 0);
_gen.gen_command(cmd);
- return (cmd != Cs::cEndchar && cmd != Cs::cReturn);
+ return (cmd != Cs::cEndchar || _is_subr) && cmd != Cs::cReturn;
}
}
bool
-Type1BadCallRemover::run(Type1Charstring &cs)
+Type1BadCallRemover::run(Type1Charstring &cs, bool is_subr)
{
+ _is_subr = is_subr;
_gen.clear();
CharstringInterp::interpret(_remover->program(), &cs);
_gen.output(cs);
@@ -700,10 +702,10 @@ Type1MMRemover::run()
Type1BadCallRemover bcr(this);
for (int i = 0; i < _font->nglyphs(); i++)
if (Type1Subr *g = _font->glyph_x(i))
- bcr.run(g->t1cs());
+ bcr.run(g->t1cs(), false);
for (int subrno = 4; subrno < _nsubrs; subrno++)
if (Type1Charstring *cs = _font->subr(subrno))
- bcr.run(*cs);
+ bcr.run(*cs, true);
// report warnings
if (bad_glyphs.size()) {
diff --git a/Build/source/texk/lcdf-typetools/otfinfo/Makefile.in b/Build/source/texk/lcdf-typetools/otfinfo/Makefile.in
index f8bf60bb995..de9bc392c9e 100644
--- a/Build/source/texk/lcdf-typetools/otfinfo/Makefile.in
+++ b/Build/source/texk/lcdf-typetools/otfinfo/Makefile.in
@@ -307,11 +307,11 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-install-man1: $(man_MANS)
+install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
@@ -333,8 +333,8 @@ install-man1: $(man_MANS)
done
uninstall-man1:
@$(NORMAL_UNINSTALL)
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
diff --git a/Build/source/texk/lcdf-typetools/otfinfo/otfinfo.1 b/Build/source/texk/lcdf-typetools/otfinfo/otfinfo.1
index 5a30b2bb428..2218976d976 100644
--- a/Build/source/texk/lcdf-typetools/otfinfo/otfinfo.1
+++ b/Build/source/texk/lcdf-typetools/otfinfo/otfinfo.1
@@ -1,5 +1,5 @@
'\"t
-.ds V 2.75
+.ds V 2.78
.de M
.BR "\\$1" "(\\$2)\\$3"
..
diff --git a/Build/source/texk/lcdf-typetools/otftotfm/Makefile.in b/Build/source/texk/lcdf-typetools/otftotfm/Makefile.in
index d8a50ff9409..5b49c27bb57 100644
--- a/Build/source/texk/lcdf-typetools/otftotfm/Makefile.in
+++ b/Build/source/texk/lcdf-typetools/otftotfm/Makefile.in
@@ -363,11 +363,11 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-install-man1: $(man_MANS)
+install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
@@ -389,8 +389,8 @@ install-man1: $(man_MANS)
done
uninstall-man1:
@$(NORMAL_UNINSTALL)
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
diff --git a/Build/source/texk/lcdf-typetools/otftotfm/automatic.cc b/Build/source/texk/lcdf-typetools/otftotfm/automatic.cc
index 9e46907eb46..35b3e92a081 100644
--- a/Build/source/texk/lcdf-typetools/otftotfm/automatic.cc
+++ b/Build/source/texk/lcdf-typetools/otftotfm/automatic.cc
@@ -601,14 +601,16 @@ update_autofont_map(const String &fontname, String mapline, ErrorHandler *errh)
// rewind file
#if HAVE_FTRUNCATE
rewind(f);
- ftruncate(fd, 0);
-#else
- fclose(f);
- f = fopen(map_file.c_str(), "w");
+ if (ftruncate(fd, 0) < 0)
#endif
+ {
+ fclose(f);
+ f = fopen(map_file.c_str(), "w");
+ fd = fileno(f);
+ }
// write data
- fwrite(text.data(), 1, text.length(), f);
+ ignore_result(fwrite(text.data(), 1, text.length(), f));
fclose(f);
diff --git a/Build/source/texk/lcdf-typetools/otftotfm/otftotfm.1 b/Build/source/texk/lcdf-typetools/otftotfm/otftotfm.1
index 04016c90393..5915060fb35 100644
--- a/Build/source/texk/lcdf-typetools/otftotfm/otftotfm.1
+++ b/Build/source/texk/lcdf-typetools/otftotfm/otftotfm.1
@@ -1,5 +1,5 @@
'\"t
-.ds V 2.75
+.ds V 2.78
.de M
.BR "\\$1" "(\\$2)\\$3"
..
@@ -7,7 +7,7 @@
.if n .sp
.if t .sp 0.4
..
-.de BUP
+.de Bp
.IP \(bu 3n
..
.TH OTFTOTFM 1 "LCDF Typetools" "Version \*V"
@@ -1186,17 +1186,17 @@ options, and their
and
.B \-\-*\-filter
variants, accept the following types of pattern.
-.BUP
+.Bp
Glyph names. Example: "Aacute". For PostScript-flavored fonts, use
.M otfinfo 1 's
.B \-g
option to see a font's glyph names, and "\fBcfftot1\fR \fIfont\fR.otf |
\fBt1testpage\fR" to generate a PostScript file showing each glyph.
-.BUP
+.Bp
Glyph name patterns using the shell-style glob-matching rules: "*" matches
any number of characters, "?" matches any single character, and "[...]"
matches any character in a set. Example: "*.end".
-.BUP
+.Bp
Unicode category properties in angle brackets. Examples: "<Letter>",
"<UppercaseLetter>", "<Lu>". The complete list of both short and long
names: Letter/L, UppercaseLetter/Lu, LowercaseLetter/Ll,
@@ -1210,7 +1210,7 @@ EnclosingMark/Me, NonspacingMark/Mn; Separator/Z, SpaceSeparator/Zs,
LineSeparator/Zl, ParagraphSeparator/Zp; Other/C, Surrogate/Cs, Format/Cf,
Control/Cc, PrivateUse/Co, Unassigned/Cn. Category values current as of
Unicode 4.0.
-.BUP
+.Bp
Unicode ranges. Example: "U+007f-U+008C".
.PP
The "!" prefix negates a pattern, and you can separate multiple patterns by
diff --git a/Build/source/texk/lcdf-typetools/otftotfm/otftotfm.cc b/Build/source/texk/lcdf-typetools/otftotfm/otftotfm.cc
index a5ae8282313..88d520a948a 100644
--- a/Build/source/texk/lcdf-typetools/otftotfm/otftotfm.cc
+++ b/Build/source/texk/lcdf-typetools/otftotfm/otftotfm.cc
@@ -965,13 +965,15 @@ write_encoding_file(String &filename, const String &encoding_name,
// rewind file
#ifdef HAVE_FTRUNCATE
rewind(f);
- ftruncate(fd, 0);
-#else
- fclose(f);
- f = fopen(filename.c_str(), "w");
+ if (ftruncate(fd, 0) < 0)
#endif
+ {
+ fclose(f);
+ f = fopen(filename.c_str(), "w");
+ fd = fileno(f);
+ }
- fwrite(contents.data(), 1, contents.length(), f);
+ ignore_result(fwrite(contents.data(), 1, contents.length(), f));
fclose(f);
@@ -1066,7 +1068,7 @@ output_encoding(const Metrics &metrics,
// open encoding file
if (out_encoding_file == "-")
- fwrite(contents.data(), 1, contents.length(), stdout);
+ ignore_result(fwrite(contents.data(), 1, contents.length(), stdout));
else if (write_encoding_file(out_encoding_file, out_encoding_name, contents, errh) == 1)
update_odir(O_ENCODING, out_encoding_file, errh);
return true;
diff --git a/Build/source/texk/lcdf-typetools/otftotfm/util.cc b/Build/source/texk/lcdf-typetools/otftotfm/util.cc
index f2edcb2fdbe..2aecdaa5f6a 100644
--- a/Build/source/texk/lcdf-typetools/otftotfm/util.cc
+++ b/Build/source/texk/lcdf-typetools/otftotfm/util.cc
@@ -220,7 +220,7 @@ shell_command_output(String cmdline, const String &input, ErrorHandler *errh, bo
FILE *f = tmpfile();
if (!f)
errh->fatal("cannot create temporary file: %s", strerror(errno));
- fwrite(input.data(), 1, input.length(), f);
+ ignore_result(fwrite(input.data(), 1, input.length(), f));
fflush(f);
rewind(f);
diff --git a/Build/source/texk/lcdf-typetools/otftotfm/util.hh b/Build/source/texk/lcdf-typetools/otftotfm/util.hh
index dd7aa29e3e6..df59f63af14 100644
--- a/Build/source/texk/lcdf-typetools/otftotfm/util.hh
+++ b/Build/source/texk/lcdf-typetools/otftotfm/util.hh
@@ -27,4 +27,9 @@ bool parse_unicode_number(const char*, const char*, int require_prefix, uint32_t
#define WEXITSTATUS(es) (es)
#endif
+template <typename T>
+void ignore_result(T result) {
+ (void) result;
+}
+
#endif
diff --git a/Build/source/texk/lcdf-typetools/t1dotlessj/Makefile.in b/Build/source/texk/lcdf-typetools/t1dotlessj/Makefile.in
index e186dc480c1..a87a9e5e0c7 100644
--- a/Build/source/texk/lcdf-typetools/t1dotlessj/Makefile.in
+++ b/Build/source/texk/lcdf-typetools/t1dotlessj/Makefile.in
@@ -305,11 +305,11 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-install-man1: $(man_MANS)
+install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
@@ -331,8 +331,8 @@ install-man1: $(man_MANS)
done
uninstall-man1:
@$(NORMAL_UNINSTALL)
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
diff --git a/Build/source/texk/lcdf-typetools/t1dotlessj/t1dotlessj.1 b/Build/source/texk/lcdf-typetools/t1dotlessj/t1dotlessj.1
index 1136624ab11..10ffc560bb2 100644
--- a/Build/source/texk/lcdf-typetools/t1dotlessj/t1dotlessj.1
+++ b/Build/source/texk/lcdf-typetools/t1dotlessj/t1dotlessj.1
@@ -1,4 +1,4 @@
-.ds V 2.75
+.ds V 2.78
.de M
.BR "\\$1" "(\\$2)\\$3"
..
diff --git a/Build/source/texk/lcdf-typetools/t1lint/Makefile.in b/Build/source/texk/lcdf-typetools/t1lint/Makefile.in
index cfd04901fab..8e1a1cf297b 100644
--- a/Build/source/texk/lcdf-typetools/t1lint/Makefile.in
+++ b/Build/source/texk/lcdf-typetools/t1lint/Makefile.in
@@ -317,11 +317,11 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-install-man1: $(man_MANS)
+install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
@@ -343,8 +343,8 @@ install-man1: $(man_MANS)
done
uninstall-man1:
@$(NORMAL_UNINSTALL)
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
diff --git a/Build/source/texk/lcdf-typetools/t1lint/cscheck.cc b/Build/source/texk/lcdf-typetools/t1lint/cscheck.cc
index 78183a927a6..6413df5abfa 100644
--- a/Build/source/texk/lcdf-typetools/t1lint/cscheck.cc
+++ b/Build/source/texk/lcdf-typetools/t1lint/cscheck.cc
@@ -1,6 +1,6 @@
/* cscheck.{cc,hh} -- checking Type 1 charstrings for validity
*
- * Copyright (c) 1999-2006 Eddie Kohler
+ * Copyright (c) 1999-2009 Eddie Kohler
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
@@ -21,8 +21,9 @@
using namespace Efont;
-#define CHECK_STACK(numargs) do { if (size() < numargs) return error(errUnderflow, cmd); } while (0)
-#define CHECK_STACK_CP(numargs) do { CHECK_STACK(numargs); if (!_cp_exists) return error(errCurrentPoint, cmd); } while (0)
+#define CHECK_STACK_GE(numargs) do { if (size() < numargs) return error(errUnderflow, cmd); } while (0)
+#define CHECK_STACK_EQ(numargs) do { CHECK_STACK_GE(numargs); if (size() > numargs) _errh->warning("too many arguments to %<%s%> (have %d, expected %d)", Charstring::command_name(cmd).c_str(), size(), numargs); } while (0)
+#define CHECK_STACK_CPEQ(numargs) do { CHECK_STACK_EQ(numargs); if (!_cp_exists) return error(errCurrentPoint, cmd); } while (0)
CharstringChecker::CharstringChecker()
@@ -80,10 +81,10 @@ CharstringChecker::check_stem3(const char *cmd_name)
i2 = 4;
// check constraints. count "almost equal" as equal
- double stemw1 = hints[i0+1] - hints[i0];
+ double stemw0 = hints[i0+1] - hints[i0];
double stemw2 = hints[i2+1] - hints[i2];
- if ((int)(1024*(stemw1 - stemw2) + .5) != 0)
- _errh->error("bad %<%s%>: extreme stem widths unequal (%g, %g)", cmd_name, stemw1, stemw2);
+ if ((int)(1024*(stemw0 - stemw2) + .5) != 0)
+ _errh->error("bad %<%s%>: extreme stem widths unequal (%g, %g)", cmd_name, stemw0, stemw2);
double c0 = (hints[i0] + hints[i0+1])/2;
double c1 = (hints[i1] + hints[i1+1])/2;
@@ -154,9 +155,14 @@ CharstringChecker::callothersubr()
_errh->error("wrong number of arguments to Flex");
goto unknown;
}
- if (!_flex || ps_size() != 16) {
- _errh->error("bad Flex");
- return false;
+ if (!_flex) {
+ _errh->error("no Flex in progress");
+ pop(3);
+ return false;
+ } else if (ps_size() != 16) {
+ _errh->error("Flex needs 16 arguments, have %d", ps_size());
+ pop(3);
+ return false;
}
//_connect = _flex_connect;
#if 0
@@ -240,16 +246,22 @@ CharstringChecker::callothersubr()
bool
CharstringChecker::type1_command(int cmd)
{
- if (cmd == Cs::cCallsubr)
- return callsubr_command();
- else if (cmd == Cs::cCallothersubr) {
- CHECK_STACK(2);
- return callothersubr();
- } else if (cmd == Cs::cReturn) {
- return false;
- } else if (cmd == Cs::cPop || cmd == Cs::cDiv) {
- return arith_command(cmd);
- }
+ if (_subrno < 0)
+ ++_ncommand;
+ if (cmd == Cs::cCallsubr) {
+ int old_subrno = _subrno;
+ _subrno = (size() > 1 ? (int) top(0) : -300);
+ bool result = callsubr_command();
+ _subrno = old_subrno;
+ return result;
+ } else if (cmd == Cs::cCallothersubr) {
+ CHECK_STACK_GE(2);
+ return callothersubr();
+ } else if (cmd == Cs::cReturn) {
+ return false;
+ } else if (cmd == Cs::cPop || cmd == Cs::cDiv) {
+ return arith_command(cmd);
+ }
if (cmd != Cs::cHsbw && cmd != Cs::cSbw) {
if (!_started)
@@ -263,13 +275,13 @@ CharstringChecker::type1_command(int cmd)
switch (cmd) {
case Cs::cHsbw:
- CHECK_STACK(2);
+ CHECK_STACK_EQ(2);
moveto(at(0), 0, false);
clear();
break;
case Cs::cSbw:
- CHECK_STACK(4);
+ CHECK_STACK_EQ(4);
moveto(at(0), at(1), false);
clear();
break;
@@ -280,61 +292,61 @@ CharstringChecker::type1_command(int cmd)
break;
case Cs::cHlineto:
- CHECK_STACK_CP(1);
+ CHECK_STACK_CPEQ(1);
rlineto(at(0), 0);
clear();
break;
case Cs::cHmoveto:
- CHECK_STACK(1);
+ CHECK_STACK_EQ(1);
rmoveto(at(0), 0);
clear();
break;
case Cs::cHvcurveto:
- CHECK_STACK_CP(4);
+ CHECK_STACK_CPEQ(4);
rrcurveto(at(0), 0, at(1), at(2), 0, at(3));
clear();
break;
case Cs::cRlineto:
- CHECK_STACK_CP(2);
+ CHECK_STACK_CPEQ(2);
rlineto(at(0), at(1));
clear();
break;
case Cs::cRmoveto:
- CHECK_STACK(2);
+ CHECK_STACK_EQ(2);
rmoveto(at(0), at(1));
clear();
break;
case Cs::cRrcurveto:
- CHECK_STACK_CP(6);
+ CHECK_STACK_CPEQ(6);
rrcurveto(at(0), at(1), at(2), at(3), at(4), at(5));
clear();
break;
case Cs::cVhcurveto:
- CHECK_STACK_CP(4);
+ CHECK_STACK_CPEQ(4);
rrcurveto(0, at(0), at(1), at(2), at(3), 0);
clear();
break;
case Cs::cVlineto:
- CHECK_STACK_CP(1);
+ CHECK_STACK_CPEQ(1);
rlineto(0, at(0));
clear();
break;
case Cs::cVmoveto:
- CHECK_STACK(1);
+ CHECK_STACK_EQ(1);
rmoveto(0, at(0));
clear();
break;
case Cs::cHstem:
- CHECK_STACK(2);
+ CHECK_STACK_EQ(2);
if (_hstem3 && !_hstem)
_errh->error("charstring has both %<hstem%> and %<hstem3%>");
_hstem = true;
@@ -343,7 +355,7 @@ CharstringChecker::type1_command(int cmd)
break;
case Cs::cVstem:
- CHECK_STACK(2);
+ CHECK_STACK_EQ(2);
if (_vstem3 && !_vstem)
_errh->error("charstring has both %<vstem%> and %<vstem3%>");
_vstem = true;
@@ -359,7 +371,7 @@ CharstringChecker::type1_command(int cmd)
break;
case Cs::cVstem3:
- CHECK_STACK(6);
+ CHECK_STACK_EQ(6);
if (_vstem && !_vstem3)
_errh->error("charstring has both %<vstem%> and %<vstem3%>");
_vstem3 = true;
@@ -372,7 +384,7 @@ CharstringChecker::type1_command(int cmd)
break;
case Cs::cHstem3:
- CHECK_STACK(6);
+ CHECK_STACK_EQ(6);
if (_hstem && !_hstem3)
_errh->error("charstring has both %<hstem%> and %<hstem3%>");
_hstem3 = true;
@@ -385,7 +397,7 @@ CharstringChecker::type1_command(int cmd)
break;
case Cs::cSeac: {
- CHECK_STACK(5);
+ CHECK_STACK_EQ(5);
#if 0
double asb = at(0);
double adx = at(1);
@@ -422,7 +434,7 @@ CharstringChecker::type1_command(int cmd)
}
case Cs::cSetcurrentpoint:
- CHECK_STACK(2);
+ CHECK_STACK_EQ(2);
_cp = Point(at(0), at(1));
_cp_exists = true;
clear();
@@ -445,7 +457,8 @@ CharstringChecker::type1_command(int cmd)
bool
CharstringChecker::check(const CharstringContext &g, ErrorHandler *errh)
{
- _errh = errh;
+ CharstringCheckerErrorHandler<CharstringChecker> merrh(errh, this);
+ _errh = &merrh;
int old_errors = errh->nerrors();
_started = false;
@@ -455,8 +468,61 @@ CharstringChecker::check(const CharstringContext &g, ErrorHandler *errh)
_h_vstem.clear();
_h_hstem3.clear();
_h_vstem3.clear();
+ _ncommand = 0;
+ _subrno = -1;
+
+ CharstringInterp::interpret(g);
+
+ return errh->nerrors() == old_errors;
+}
+
+
+
+CharstringSubrChecker::CharstringSubrChecker()
+ : CharstringInterp(), _errh(0)
+{
+ set_careful(true);
+}
+
+CharstringSubrChecker::CharstringSubrChecker(const Vector<double> &weight)
+ : CharstringInterp(weight), _errh(0)
+{
+ set_careful(true);
+}
+
+bool
+CharstringSubrChecker::error(int error, int data)
+{
+ CharstringInterp::error(error, data);
+ _errh->error("%s", error_string().c_str());
+ return false;
+}
+
+bool
+CharstringSubrChecker::type1_command(int cmd)
+{
+ switch (cmd) {
+ case Cs::cReturn:
+ _returned = true;
+ return false;
+ default:
+ clear();
+ return true;
+ }
+}
+
+bool
+CharstringSubrChecker::check(const CharstringContext &g, ErrorHandler *errh)
+{
+ CharstringCheckerErrorHandler<CharstringSubrChecker> merrh(errh, this);
+ _errh = &merrh;
+ int old_errors = errh->nerrors();
+
+ _returned = false;
CharstringInterp::interpret(g);
+ if (!_returned)
+ _errh->error("subroutine does not return");
return errh->nerrors() == old_errors;
}
diff --git a/Build/source/texk/lcdf-typetools/t1lint/cscheck.hh b/Build/source/texk/lcdf-typetools/t1lint/cscheck.hh
index 9563e27fa62..9ba167b1588 100644
--- a/Build/source/texk/lcdf-typetools/t1lint/cscheck.hh
+++ b/Build/source/texk/lcdf-typetools/t1lint/cscheck.hh
@@ -3,7 +3,24 @@
#include <efont/t1interp.hh>
#include <lcdf/point.hh>
#include <lcdf/vector.hh>
-class ErrorHandler;
+#include <lcdf/error.hh>
+#include <lcdf/straccum.hh>
+#include <ctype.h>
+
+template <typename T>
+class CharstringCheckerErrorHandler : public ErrorVeneer { public:
+
+ CharstringCheckerErrorHandler(ErrorHandler *errh, T *checker)
+ : ErrorVeneer(errh), _checker(checker) {
+ }
+
+ String decorate(const String &str);
+
+ private:
+
+ T *_checker;
+
+};
class CharstringChecker : public Efont::CharstringInterp { public:
@@ -16,9 +33,18 @@ class CharstringChecker : public Efont::CharstringInterp { public:
bool check(const Efont::CharstringContext &, ErrorHandler *);
+ int ncommand() const {
+ return _ncommand;
+ }
+ int subrno() const {
+ return _subrno;
+ }
+
private:
ErrorHandler *_errh;
+ int _ncommand;
+ int _subrno;
Point _cp;
@@ -49,4 +75,60 @@ class CharstringChecker : public Efont::CharstringInterp { public:
};
+class CharstringSubrChecker : public Efont::CharstringInterp { public:
+
+ CharstringSubrChecker();
+ CharstringSubrChecker(const Vector<double> &weight_vec);
+
+ bool error(int, int);
+ bool type1_command(int);
+
+ bool check(const Efont::CharstringContext &, ErrorHandler *);
+
+ int ncommand() const {
+ return -1;
+ }
+ int subrno() const {
+ return -1;
+ }
+
+ private:
+
+ ErrorHandler *_errh;
+
+ bool _returned;
+
+};
+
+
+template <typename T> String
+CharstringCheckerErrorHandler<T>::decorate(const String &str)
+{
+ StringAccum sa;
+ const char *s = skip_anno(str.begin(), str.end());
+ while (s < str.end() && isspace((unsigned char) *s))
+ ++s;
+ sa.append(str.begin(), s);
+ if (_checker->subrno() >= 0)
+ sa << "called from ";
+ if (_checker->ncommand() >= 0)
+ sa << "command " << (_checker->ncommand() - 1) << ':';
+ if (sa)
+ sa << ' ';
+ if (s + 11 < str.end() && memcmp(s, "charstring ", 11) == 0) {
+ bool quote_parity = 0;
+ const char *last = s + 11;
+ for (const char *x = last; x != str.end(); ++x)
+ if (*x == '\'') {
+ sa.append(last, x);
+ sa << format(quote_parity ? "%>" : "%<");
+ quote_parity = !quote_parity;
+ last = x + 1;
+ }
+ sa.append(last, str.end());
+ } else
+ sa.append(s, str.end());
+ return ErrorVeneer::decorate(sa.take_string());
+}
+
#endif
diff --git a/Build/source/texk/lcdf-typetools/t1lint/t1lint.1 b/Build/source/texk/lcdf-typetools/t1lint/t1lint.1
index 36bedc100f7..16aaf20f506 100644
--- a/Build/source/texk/lcdf-typetools/t1lint/t1lint.1
+++ b/Build/source/texk/lcdf-typetools/t1lint/t1lint.1
@@ -1,4 +1,4 @@
-.ds V 2.75
+.ds V 2.78
.de M
.BR "\\$1" "(\\$2)\\$3"
..
diff --git a/Build/source/texk/lcdf-typetools/t1lint/t1lint.cc b/Build/source/texk/lcdf-typetools/t1lint/t1lint.cc
index 336eda27457..a6448608135 100644
--- a/Build/source/texk/lcdf-typetools/t1lint/t1lint.cc
+++ b/Build/source/texk/lcdf-typetools/t1lint/t1lint.cc
@@ -293,7 +293,8 @@ check_stems(Type1Font *font, ErrorHandler *errh)
// MAIN
static void
-do_file(const char *filename, PsresDatabase *psres, ErrorHandler *errh)
+do_file(const char *filename, PsresDatabase *psres, ErrorHandler *errh,
+ ErrorHandler *err_errh)
{
FILE *f;
if (strcmp(filename, "-") == 0) {
@@ -312,13 +313,13 @@ do_file(const char *filename, PsresDatabase *psres, ErrorHandler *errh)
}
if (!f)
- errh->fatal("%s: %s", filename, strerror(errno));
+ err_errh->fatal("%s: %s", filename, strerror(errno));
Type1Reader *reader;
int c = getc(f);
ungetc(c, f);
if (c == EOF)
- errh->fatal("%s: empty file", filename);
+ err_errh->fatal("%s: empty file", filename);
if (c == 128)
reader = new Type1PFBReader(f);
else
@@ -368,6 +369,15 @@ do_file(const char *filename, PsresDatabase *psres, ErrorHandler *errh)
(&cerrh, "While interpreting %<%s%>:", font->glyph_name(i).c_str());
cc.check(font->glyph_context(i), &derrh);
}
+
+ int ns = font->nsubrs();
+ CharstringSubrChecker csc(weight_vector);
+ for (int i = 0; i < ns; ++i)
+ if (Type1Charstring *cs = font->subr(i)) {
+ ContextErrorHandler derrh(&cerrh, "While interpreting subr %d:", i);
+ CharstringContext cctx(font, cs);
+ csc.check(cctx, &derrh);
+ }
}
delete font;
@@ -384,7 +394,9 @@ main(int argc, char *argv[])
Clp_NewParser(argc, (const char * const *)argv, sizeof(options) / sizeof(options[0]), options);
program_name = Clp_ProgramName(clp);
- ErrorHandler *errh = ErrorHandler::static_initialize(new FileErrorHandler(stderr));
+ ErrorHandler *err_errh = ErrorHandler::static_initialize(new FileErrorHandler(stderr));
+ ErrorHandler *out_errh = new FileErrorHandler(stdout);
+ ErrorHandler *errh = out_errh;
int nfiles = 0;
while (1) {
@@ -393,7 +405,7 @@ main(int argc, char *argv[])
case QUIET_OPT:
if (clp->negated)
- errh = ErrorHandler::default_handler();
+ errh = out_errh;
else
errh = new SilentErrorHandler;
break;
@@ -413,7 +425,7 @@ particular purpose.\n");
break;
case Clp_NotOption:
- do_file(clp->vstr, psres, errh);
+ do_file(clp->vstr, psres, errh, err_errh);
nfiles++;
break;
@@ -421,7 +433,7 @@ particular purpose.\n");
goto done;
case Clp_BadOption:
- usage_error(errh, 0);
+ usage_error(err_errh, 0);
break;
default:
@@ -432,7 +444,7 @@ particular purpose.\n");
done:
if (nfiles == 0)
- do_file("-", psres, errh);
+ do_file("-", psres, errh, err_errh);
return (errh->nerrors() == 0 ? 0 : 1);
}
diff --git a/Build/source/texk/lcdf-typetools/t1rawafm/Makefile.in b/Build/source/texk/lcdf-typetools/t1rawafm/Makefile.in
index 4c6174cd123..a9f8714fa6d 100644
--- a/Build/source/texk/lcdf-typetools/t1rawafm/Makefile.in
+++ b/Build/source/texk/lcdf-typetools/t1rawafm/Makefile.in
@@ -305,11 +305,11 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-install-man1: $(man_MANS)
+install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
@@ -331,8 +331,8 @@ install-man1: $(man_MANS)
done
uninstall-man1:
@$(NORMAL_UNINSTALL)
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
diff --git a/Build/source/texk/lcdf-typetools/t1reencode/Makefile.in b/Build/source/texk/lcdf-typetools/t1reencode/Makefile.in
index 86bb78ad739..280a3dd9696 100644
--- a/Build/source/texk/lcdf-typetools/t1reencode/Makefile.in
+++ b/Build/source/texk/lcdf-typetools/t1reencode/Makefile.in
@@ -341,11 +341,11 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-install-man1: $(man_MANS)
+install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
@@ -367,8 +367,8 @@ install-man1: $(man_MANS)
done
uninstall-man1:
@$(NORMAL_UNINSTALL)
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
diff --git a/Build/source/texk/lcdf-typetools/t1reencode/t1reencode.1 b/Build/source/texk/lcdf-typetools/t1reencode/t1reencode.1
index b2736233593..7c4c967e208 100644
--- a/Build/source/texk/lcdf-typetools/t1reencode/t1reencode.1
+++ b/Build/source/texk/lcdf-typetools/t1reencode/t1reencode.1
@@ -1,4 +1,4 @@
-.ds V 2.75
+.ds V 2.78
.de M
.BR "\\$1" "(\\$2)\\$3"
..
diff --git a/Build/source/texk/lcdf-typetools/t1testpage/Makefile.in b/Build/source/texk/lcdf-typetools/t1testpage/Makefile.in
index 5740e64a3ee..4db306246f3 100644
--- a/Build/source/texk/lcdf-typetools/t1testpage/Makefile.in
+++ b/Build/source/texk/lcdf-typetools/t1testpage/Makefile.in
@@ -305,11 +305,11 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-install-man1: $(man_MANS)
+install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
@@ -331,8 +331,8 @@ install-man1: $(man_MANS)
done
uninstall-man1:
@$(NORMAL_UNINSTALL)
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
diff --git a/Build/source/texk/lcdf-typetools/t1testpage/t1testpage.1 b/Build/source/texk/lcdf-typetools/t1testpage/t1testpage.1
index 856d7c3f18b..c038b26eff4 100644
--- a/Build/source/texk/lcdf-typetools/t1testpage/t1testpage.1
+++ b/Build/source/texk/lcdf-typetools/t1testpage/t1testpage.1
@@ -1,4 +1,4 @@
-.ds V 2.75
+.ds V 2.78
.de M
.BR "\\$1" "(\\$2)\\$3"
..
diff --git a/Build/source/texk/lcdf-typetools/ttftotype42/Makefile.in b/Build/source/texk/lcdf-typetools/ttftotype42/Makefile.in
index b620b85a4b1..56e3dac151f 100644
--- a/Build/source/texk/lcdf-typetools/ttftotype42/Makefile.in
+++ b/Build/source/texk/lcdf-typetools/ttftotype42/Makefile.in
@@ -305,11 +305,11 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-install-man1: $(man_MANS)
+install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
@@ -331,8 +331,8 @@ install-man1: $(man_MANS)
done
uninstall-man1:
@$(NORMAL_UNINSTALL)
- @list=''; \
- l2='$(man_MANS)'; \
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
diff --git a/Build/source/texk/lcdf-typetools/ttftotype42/ttftotype42.1 b/Build/source/texk/lcdf-typetools/ttftotype42/ttftotype42.1
index 6df6efc63eb..f2d6326e15a 100644
--- a/Build/source/texk/lcdf-typetools/ttftotype42/ttftotype42.1
+++ b/Build/source/texk/lcdf-typetools/ttftotype42/ttftotype42.1
@@ -1,4 +1,4 @@
-.ds V 2.75
+.ds V 2.78
.de M
.BR "\\$1" "(\\$2)\\$3"
..