From e0bf193d67d722a044f7ab3efa98854757d619c4 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 13 Apr 2009 00:08:16 +0000 Subject: lcdf-typetools 2.78 git-svn-id: svn://tug.org/texlive/trunk@12708 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/README | 17 +-- Build/source/texk/lcdf-typetools/NEWS | 27 ++++ Build/source/texk/lcdf-typetools/README | 2 +- .../source/texk/lcdf-typetools/cfftot1/Makefile.in | 10 +- Build/source/texk/lcdf-typetools/cfftot1/cfftot1.1 | 2 +- Build/source/texk/lcdf-typetools/configure | 22 ++-- Build/source/texk/lcdf-typetools/configure.ac | 2 +- .../texk/lcdf-typetools/include/efont/t1csgen.hh | 3 + .../source/texk/lcdf-typetools/lcdf-typetools.spec | 2 +- Build/source/texk/lcdf-typetools/libefont/otf.cc | 59 +++++---- .../source/texk/lcdf-typetools/libefont/otfcmap.cc | 16 +-- .../texk/lcdf-typetools/libefont/otfdescrip.cc | 8 +- .../source/texk/lcdf-typetools/libefont/t1csgen.cc | 114 +++++++++++++---- .../source/texk/lcdf-typetools/libefont/t1font.cc | 13 +- .../texk/lcdf-typetools/libefont/t1interp.cc | 2 +- Build/source/texk/lcdf-typetools/libefont/t1rw.cc | 9 +- Build/source/texk/lcdf-typetools/liblcdf/error.cc | 3 +- Build/source/texk/lcdf-typetools/mmafm/Makefile.in | 10 +- Build/source/texk/lcdf-typetools/mmafm/mmafm.1 | 29 ++--- Build/source/texk/lcdf-typetools/mmpfb/Makefile.in | 10 +- Build/source/texk/lcdf-typetools/mmpfb/mmpfb.1 | 33 +++-- Build/source/texk/lcdf-typetools/mmpfb/t1rewrit.cc | 14 ++- .../source/texk/lcdf-typetools/otfinfo/Makefile.in | 10 +- Build/source/texk/lcdf-typetools/otfinfo/otfinfo.1 | 2 +- .../texk/lcdf-typetools/otftotfm/Makefile.in | 10 +- .../texk/lcdf-typetools/otftotfm/automatic.cc | 12 +- .../source/texk/lcdf-typetools/otftotfm/otftotfm.1 | 12 +- .../texk/lcdf-typetools/otftotfm/otftotfm.cc | 14 ++- Build/source/texk/lcdf-typetools/otftotfm/util.cc | 2 +- Build/source/texk/lcdf-typetools/otftotfm/util.hh | 5 + .../texk/lcdf-typetools/t1dotlessj/Makefile.in | 10 +- .../texk/lcdf-typetools/t1dotlessj/t1dotlessj.1 | 2 +- .../source/texk/lcdf-typetools/t1lint/Makefile.in | 10 +- Build/source/texk/lcdf-typetools/t1lint/cscheck.cc | 140 +++++++++++++++------ Build/source/texk/lcdf-typetools/t1lint/cscheck.hh | 84 ++++++++++++- Build/source/texk/lcdf-typetools/t1lint/t1lint.1 | 2 +- Build/source/texk/lcdf-typetools/t1lint/t1lint.cc | 28 +++-- .../texk/lcdf-typetools/t1rawafm/Makefile.in | 10 +- .../texk/lcdf-typetools/t1reencode/Makefile.in | 10 +- .../texk/lcdf-typetools/t1reencode/t1reencode.1 | 2 +- .../texk/lcdf-typetools/t1testpage/Makefile.in | 10 +- .../texk/lcdf-typetools/t1testpage/t1testpage.1 | 2 +- .../texk/lcdf-typetools/ttftotype42/Makefile.in | 10 +- .../texk/lcdf-typetools/ttftotype42/ttftotype42.1 | 2 +- 44 files changed, 535 insertions(+), 261 deletions(-) (limited to 'Build') 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 @@ -4,6 +4,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 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 . # @@ -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 ." 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 ." _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 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 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 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: "", "", "". 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 +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 % and %"); _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 % and %"); _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 % and %"); _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 % and %"); _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 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 &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 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 #include #include -class ErrorHandler; +#include +#include +#include + +template +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 &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 String +CharstringCheckerErrorHandler::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" .. -- cgit v1.2.3